diff options
author | Darshan-upadhyay1110 <darshan.upadhyay@collabora.com> | 2024-03-26 11:36:47 +0530 |
---|---|---|
committer | Caolán McNamara <caolan.mcnamara@collabora.com> | 2024-06-06 13:06:22 +0200 |
commit | dadbad32eefec9a887da0aef2ad0237f89680dfa (patch) | |
tree | 62bd35f8a5e7f8543f3a6cb6bdceb2ba71907026 /vcl | |
parent | d6b9ce4b5bd839868642086dc86262204312ac2d (diff) |
Online: send color preview JSON property to online
- Autofilter has submenus like `filter by font color` and `filter by bg color`
- to display it's color preview in online we some data from core to identify that it's a color base dialog
- this patch will help to add color preview of following
Change-Id: I71c4e276f8c6dd35d6d318ce67cedf9c15a91d29
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165298
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
(cherry picked from commit 5d7910f21e881998f142aef473b27ebfd29eb020)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/168443
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/source/treelist/svtabbx.cxx | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/vcl/source/treelist/svtabbx.cxx b/vcl/source/treelist/svtabbx.cxx index 6f309bb9a85f..feb4f0b2011f 100644 --- a/vcl/source/treelist/svtabbx.cxx +++ b/vcl/source/treelist/svtabbx.cxx @@ -35,6 +35,9 @@ #include <svdata.hxx> #include <memory> #include <tools/json_writer.hxx> +#include <comphelper/propertyvalue.hxx> +#include <vcl/filter/PngImageWriter.hxx> +#include <comphelper/base64.hxx> using namespace ::com::sun::star::uno; using namespace ::com::sun::star::accessibility; @@ -42,6 +45,29 @@ using namespace ::com::sun::star::accessibility; constexpr SvLBoxTabFlags MYTABMASK = SvLBoxTabFlags::ADJUST_RIGHT | SvLBoxTabFlags::ADJUST_LEFT | SvLBoxTabFlags::ADJUST_CENTER | SvLBoxTabFlags::FORCE; +namespace { + OString lcl_extractPngString(const BitmapEx& rImage) + { + SvMemoryStream aOStm(65535, 65535); + // Use fastest compression "1" + css::uno::Sequence<css::beans::PropertyValue> aFilterData{ + comphelper::makePropertyValue("Compression", sal_Int32(1)), + }; + vcl::PngImageWriter aPNGWriter(aOStm); + aPNGWriter.setParameters(aFilterData); + if (aPNGWriter.write(rImage)) + { + css::uno::Sequence<sal_Int8> aSeq(static_cast<sal_Int8 const*>(aOStm.GetData()), + aOStm.Tell()); + OStringBuffer aBuffer("data:image/png;base64,"); + ::comphelper::Base64::encode(aBuffer, aSeq); + return aBuffer.makeStringAndClear(); + } + + return ""_ostr; + } +} + static void lcl_DumpEntryAndSiblings(tools::JsonWriter& rJsonWriter, SvTreeListEntry* pEntry, SvTabListBox* pTabListBox, @@ -51,6 +77,7 @@ static void lcl_DumpEntryAndSiblings(tools::JsonWriter& rJsonWriter, { auto aNode = rJsonWriter.startStruct(); + // DEPRECATED // simple listbox value const SvLBoxItem* pIt = pEntry->GetFirstItem(SvLBoxItemType::String); if (pIt) @@ -79,6 +106,8 @@ static void lcl_DumpEntryAndSiblings(tools::JsonWriter& rJsonWriter, { const OUString& rCollapsed = pBmpItem->GetBitmap1().GetStock(); const OUString& rExpanded = pBmpItem->GetBitmap2().GetStock(); + + // send identifier only, we will use svg icon if (!o3tl::trim(rCollapsed).empty() || !o3tl::trim(rExpanded).empty()) { auto aColumn = rJsonWriter.startStruct(); @@ -87,6 +116,22 @@ static void lcl_DumpEntryAndSiblings(tools::JsonWriter& rJsonWriter, if (!o3tl::trim(rExpanded).empty()) rJsonWriter.put("expanded", rExpanded); } + // custom bitmap - send png + else + { + BitmapEx aCollapsedImage = pBmpItem->GetBitmap1().GetBitmapEx(); + BitmapEx aExpandedImage = pBmpItem->GetBitmap2().GetBitmapEx(); + bool bHasCollapsed = !aCollapsedImage.IsEmpty() && !aCollapsedImage.GetSizePixel().IsEmpty(); + bool bHasExpanded = !aExpandedImage.IsEmpty() && !aExpandedImage.GetSizePixel().IsEmpty(); + if (bHasCollapsed || bHasExpanded) + { + auto aColumn = rJsonWriter.startStruct(); + if (bHasCollapsed) + rJsonWriter.put("collapsedimage", lcl_extractPngString(aCollapsedImage)); + if (bHasExpanded) + rJsonWriter.put("collapsedimage", lcl_extractPngString(aExpandedImage)); + } + } } } } |