loleaflet/src/control/Control.CharacterMap.js | 9 +++++---- loolwsd/ChildSession.cpp | 10 ++++++---- loolwsd/ClientSession.cpp | 6 ++++-- loolwsd/LibreOfficeKit.hpp | 3 ++- loolwsd/PrisonerSession.cpp | 8 +++++--- loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h | 1 + 6 files changed, 23 insertions(+), 14 deletions(-)
New commits: commit c40b79df9e00c0c586dcf75c7abb474d2e506df0 Author: Henry Castro <hcas...@collabora.com> Date: Mon Nov 14 22:49:56 2016 -0400 loleaflet: enable font character preview diff --git a/loleaflet/src/control/Control.CharacterMap.js b/loleaflet/src/control/Control.CharacterMap.js index 77091ab..d204a08 100644 --- a/loleaflet/src/control/Control.CharacterMap.js +++ b/loleaflet/src/control/Control.CharacterMap.js @@ -208,10 +208,11 @@ L.Control.CharacterMap = L.Control.extend({ }, _onFontNamesChange: function (e) { - /* if (this._hexa.data) { + if (this._hexa.data) { + this._map._socket.sendMessage('renderfont font=' + window.encodeURIComponent(this._fontNames.options[this._fontNames.selectedIndex].value) + ' char=' + String.fromCharCode(this._hexa.data)); - }*/ + } }, _onInsertClick: function (e) { @@ -239,9 +240,9 @@ L.Control.CharacterMap = L.Control.extend({ var target = e.target || e.srcElement; this._hexa.data = target.data; this._hexa.innerHTML = 'U+' + target.data.toString(16).toUpperCase(); - /*this._map._socket.sendMessage('renderfont font=' + + this._map._socket.sendMessage('renderfont font=' + window.encodeURIComponent(this._fontNames.options[this._fontNames.selectedIndex].value) + - ' char=' + String.fromCharCode(this._hexa.data));*/ + ' char=' + String.fromCharCode(this._hexa.data)); }, _onUnicodeChartChange: function (e) { commit 4ea95ff3304355a6ac34d8c916296cfb1eb17027 Author: Henry Castro <hcas...@collabora.com> Date: Fri Nov 11 13:24:13 2016 -0400 loolwsd: add parameter char to render font diff --git a/loolwsd/ChildSession.cpp b/loolwsd/ChildSession.cpp index 4a177ac..c28cfbf 100644 --- a/loolwsd/ChildSession.cpp +++ b/loolwsd/ChildSession.cpp @@ -356,15 +356,17 @@ bool ChildSession::loadDocument(const char * /*buffer*/, int /*length*/, StringT bool ChildSession::sendFontRendering(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens) { - std::string font, decodedFont; + std::string font, text, decodedFont; - if (tokens.count() < 2 || + if (tokens.count() < 3 || !getTokenString(tokens[1], "font", font)) { sendTextFrame("error: cmd=renderfont kind=syntax"); return false; } + getTokenString(tokens[2], "char", text); + URI::decode(font, decodedFont); std::string response = "renderfont: " + Poco::cat(std::string(" "), tokens.begin() + 1, tokens.end()) + "\n"; @@ -381,7 +383,7 @@ bool ChildSession::sendFontRendering(const char* /*buffer*/, int /*length*/, Str _loKitDocument->setView(_viewId); - ptrFont = _loKitDocument->renderFont(decodedFont.c_str(), &width, &height); + ptrFont = _loKitDocument->renderFont(decodedFont.c_str(), text.c_str(), &width, &height); } LOG_TRC("renderFont [" << font << "] rendered in " << (timestamp.elapsed()/1000.) << "ms"); @@ -394,7 +396,7 @@ bool ChildSession::sendFontRendering(const char* /*buffer*/, int /*length*/, Str } std::free(ptrFont); - return sendBinaryFrame(output.data(), output.size()); + return sendTextFrame(output.data(), output.size()); } bool ChildSession::getStatus(const char* /*buffer*/, int /*length*/) diff --git a/loolwsd/ClientSession.cpp b/loolwsd/ClientSession.cpp index 93d68df..00a0a3f 100644 --- a/loolwsd/ClientSession.cpp +++ b/loolwsd/ClientSession.cpp @@ -319,20 +319,22 @@ bool ClientSession::getPartPageRectangles(const char *buffer, int length, bool ClientSession::sendFontRendering(const char *buffer, int length, StringTokenizer& tokens, const std::shared_ptr<DocumentBroker>& docBroker) { - std::string font; + std::string font, text, encodedChar; if (tokens.count() < 2 || !getTokenString(tokens[1], "font", font)) { return sendTextFrame("error: cmd=renderfont kind=syntax"); } + getTokenString(tokens[2], "char", text); + Poco::URI::encode(text, "", encodedChar); const std::string response = "renderfont: " + Poco::cat(std::string(" "), tokens.begin() + 1, tokens.end()) + "\n"; std::vector<char> output; output.resize(response.size()); std::memcpy(output.data(), response.data(), response.size()); - std::unique_ptr<std::fstream> cachedRendering = docBroker->tileCache().lookupCachedFile(font, "font"); + std::unique_ptr<std::fstream> cachedRendering = docBroker->tileCache().lookupCachedFile(font+encodedChar, "font"); if (cachedRendering && cachedRendering->is_open()) { cachedRendering->seekg(0, std::ios_base::end); diff --git a/loolwsd/LibreOfficeKit.hpp b/loolwsd/LibreOfficeKit.hpp index cab4cbe..fe54938 100644 --- a/loolwsd/LibreOfficeKit.hpp +++ b/loolwsd/LibreOfficeKit.hpp @@ -461,10 +461,11 @@ public: * @param pFontName the font to be painted */ inline unsigned char* renderFont(const char *pFontName, + const char *pChar, int *pFontWidth, int *pFontHeight) { - return _pDoc->pClass->renderFont(_pDoc, pFontName, pFontWidth, pFontHeight); + return _pDoc->pClass->renderFont(_pDoc, pFontName, pChar, pFontWidth, pFontHeight); } /** diff --git a/loolwsd/PrisonerSession.cpp b/loolwsd/PrisonerSession.cpp index a7cfa3a..bb352cc 100644 --- a/loolwsd/PrisonerSession.cpp +++ b/loolwsd/PrisonerSession.cpp @@ -231,16 +231,18 @@ bool PrisonerSession::_handleInput(const char *buffer, int length) } else if (tokens[0] == "renderfont:") { - std::string font; - if (tokens.count() < 2 || + std::string font, text, encodedChar; + if (tokens.count() < 3 || !getTokenString(tokens[1], "font", font)) { LOG_ERR("Bad syntax for: " << firstLine); return false; } + getTokenString(tokens[2], "char", text); + Poco::URI::encode(text, "", encodedChar); assert(firstLine.size() < static_cast<std::string::size_type>(length)); - _docBroker->tileCache().saveRendering(font, "font", buffer + firstLine.size() + 1, length - firstLine.size() - 1); + _docBroker->tileCache().saveRendering(font+encodedChar, "font", buffer + firstLine.size() + 1, length - firstLine.size() - 1); } } else commit b7d3ea63ffffb9172d5fd6bb1c50b2e4ffca1569 Author: Henry Castro <hcas...@collabora.com> Date: Mon Nov 14 22:57:40 2016 -0400 loolwsd: update bundled headers diff --git a/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h index c97655f..c7a2130 100644 --- a/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h +++ b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKit.h @@ -225,6 +225,7 @@ struct _LibreOfficeKitDocumentClass /// @see lok::Document::renderFont(). unsigned char* (*renderFont) (LibreOfficeKitDocument* pThis, const char* pFontName, + const char* pChar, int* pFontWidth, int* pFontHeight); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits