svtools/source/control/valueset.cxx |   35 +++++++++++++++++++++++++++++++++--
 1 file changed, 33 insertions(+), 2 deletions(-)

New commits:
commit b918a7a7f5b0a868cd1c975cd0e6b3346c74ba3b
Author:     Henry Castro <hcas...@collabora.com>
AuthorDate: Fri Nov 22 18:25:00 2019 -0400
Commit:     Henry Castro <hcas...@collabora.com>
CommitDate: Wed Nov 27 03:06:01 2019 +0100

    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 <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Henry Castro <hcas...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/83687
    Tested-by: Jenkins

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);
         }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to