summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorHenry Castro <hcastro@collabora.com>2019-11-22 18:25:00 -0400
committerMichael Meeks <michael.meeks@collabora.com>2020-05-14 17:40:51 +0100
commitb0281ee157cf0fa6532e8f58be126bdc223a16f9 (patch)
tree0fae0dec3d2567d9b7bb01c27570eff3fdd6c298 /svtools
parent445bf37433cb0522ca5d6e18738ed0ce1b2726d7 (diff)
svtools: encode Base64 the images of the items of the control "ValueSet"
Unfortunately the "Table Design" panel has a "ValueSet" control with images constructed with the function "CreateDesignPreview". I have no other choice to export the images to base64 and send it to client. Perhaps later we can optimize the function "CreateDesignPreview", to accept SVG pattern or something related. Change-Id: I34bc8374ffd2a16fbb8fbc2fcd6a41a96bda57a5 Reviewed-on: https://gerrit.libreoffice.org/83538 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Henry Castro <hcastro@collabora.com> Reviewed-on: https://gerrit.libreoffice.org/83687 Tested-by: Jenkins
Diffstat (limited to 'svtools')
-rw-r--r--svtools/source/control/valueset.cxx35
1 files changed, 33 insertions, 2 deletions
diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx
index 46e1b78b2b05..6b8802ac159a 100644
--- a/svtools/source/control/valueset.cxx
+++ b/svtools/source/control/valueset.cxx
@@ -18,11 +18,15 @@
*/
#include <tools/debug.hxx>
+#include <tools/stream.hxx>
+#include <comphelper/base64.hxx>
#include <vcl/builderfactory.hxx>
#include <vcl/decoview.hxx>
#include <vcl/event.hxx>
+#include <vcl/graph.hxx>
#include <vcl/svapp.hxx>
#include <vcl/scrbar.hxx>
+#include <vcl/cvtgrf.hxx>
#include <vcl/help.hxx>
#include <vcl/settings.hxx>
#include <vcl/commandevent.hxx>
@@ -1440,6 +1444,9 @@ boost::property_tree::ptree ValueSet::DumpAsPropertyTree()
boost::property_tree::ptree aTree(Control::DumpAsPropertyTree());
boost::property_tree::ptree aEntries;
+ ErrCode nErrCode;
+ OUStringBuffer aBuffer;
+ SvMemoryStream aStream;
const size_t nSize = mItemList.size();
for ( size_t nIt = 0; nIt < nSize; ++nIt )
@@ -1447,8 +1454,32 @@ boost::property_tree::ptree ValueSet::DumpAsPropertyTree()
boost::property_tree::ptree aEntry;
ValueSetItem* pItem = mItemList[nIt].get();
aEntry.put("id", pItem->mnId);
- aEntry.put("image", pItem->maImage.GetStock());
- if (mnSelItemId == pItem->mnId) {
+ if ( !pItem->maImage.GetStock().isEmpty() )
+ {
+ aEntry.put("image", pItem->maImage.GetStock());
+ }
+ else
+ {
+ Graphic aGraphic(pItem->maImage);
+
+ nErrCode = GraphicConverter::Export(aStream, aGraphic, ConvertDataFormat::PNG);
+ if ( nErrCode )
+ {
+ SAL_WARN("svtools", "GraphicConverter::Export() invalid Graphic? error: " << nErrCode );
+ }
+ else
+ {
+ css::uno::Sequence<sal_Int8> aSeq(static_cast<sal_Int8 const *>(aStream.GetData()), aStream.TellEnd());
+ aStream.Seek(0);
+
+ aBuffer.append("data:image/png;base64,");
+ ::comphelper::Base64::encode(aBuffer, aSeq);
+ aEntry.put("image64", aBuffer.makeStringAndClear().toUtf8());
+ }
+ }
+
+ if (mnSelItemId == pItem->mnId)
+ {
aEntry.put("selected", true);
}