[API CHANGE] drop ComplexColorJSON

No need to use it when we can use ComplexColor

Change-Id: I921e229d2dee719b7457f046c1ed1ff0492aa3e8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/205810
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
This commit is contained in:
Xisco Fauli
2026-05-28 20:07:19 +02:00
parent dd769ab47f
commit 0159850b67
17 changed files with 15 additions and 317 deletions
@@ -219,7 +219,6 @@ public:
void testRenderSearchResult_CommonNode();
void testNoDuplicateTableSelection();
void testMultiViewTableSelection();
void testColorPaletteCallback();
void testABI();
CPPUNIT_TEST_SUITE(DesktopLOKTest);
@@ -301,7 +300,6 @@ public:
CPPUNIT_TEST(testRenderSearchResult_CommonNode);
CPPUNIT_TEST(testNoDuplicateTableSelection);
CPPUNIT_TEST(testMultiViewTableSelection);
CPPUNIT_TEST(testColorPaletteCallback);
CPPUNIT_TEST(testABI);
CPPUNIT_TEST_SUITE_END();
@@ -4167,34 +4165,6 @@ void DesktopLOKTest::testMultiViewTableSelection()
CPPUNIT_ASSERT(!aView1.m_bEmptyTableSelection);
}
void DesktopLOKTest::testColorPaletteCallback()
{
LibLODocument_Impl* pDocument = loadDoc("ThemeDocument.docx");
// Create view 1.
pDocument->m_pDocumentClass->initializeForRendering(pDocument, "{}");
ViewCallback aView1(pDocument);
Scheduler::ProcessEventsToIdle();
{
CPPUNIT_ASSERT_EQUAL(1, aView1.m_nColorPaletteCallbackCount);
boost::property_tree::ptree aValues = aView1.m_aColorPaletteCallbackResult.get_child("ThemeColors");
CPPUNIT_ASSERT(!aValues.empty());
CPPUNIT_ASSERT_EQUAL(size_t(6), aValues.size());
}
// Create view 2.
pDocument->m_pDocumentClass->createView(pDocument);
pDocument->m_pDocumentClass->initializeForRendering(pDocument, "{}");
ViewCallback aView2(pDocument);
Scheduler::ProcessEventsToIdle();
{
CPPUNIT_ASSERT_EQUAL(1, aView2.m_nColorPaletteCallbackCount);
boost::property_tree::ptree aValues = aView1.m_aColorPaletteCallbackResult.get_child("ThemeColors");
CPPUNIT_ASSERT(!aValues.empty());
CPPUNIT_ASSERT_EQUAL(size_t(6), aValues.size());
}
}
namespace {
constexpr size_t classOffset(int i)
-1
View File
@@ -17,7 +17,6 @@ $(eval $(call gb_Library_add_exception_objects,docmodel,\
docmodel/source/uno/UnoTheme \
docmodel/source/theme/ColorSet \
docmodel/source/theme/Theme \
docmodel/source/color/ComplexColorJSON \
docmodel/source/color/ComplexColor \
docmodel/source/styles/ChartStyle \
docmodel/source/styles/ChartColorStyle \
-105
View File
@@ -1,105 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*/
#include <docmodel/color/ComplexColorJSON.hxx>
#include <boost/property_tree/json_parser.hpp>
#include <sstream>
#include <utility>
#include <tools/json_writer.hxx>
namespace model::color
{
bool convertFromJSON(OString const& rJsonString, model::ComplexColor& rComplexColor)
{
model::ComplexColor aComplexColor;
try
{
std::stringstream aStream((std::string(rJsonString)));
boost::property_tree::ptree aRootTree;
boost::property_tree::read_json(aStream, aRootTree);
sal_Int32 nThemeType = aRootTree.get<sal_Int32>("ThemeIndex", -1);
aComplexColor.setThemeColor(model::convertToThemeColorType(nThemeType));
boost::property_tree::ptree aTransformTree = aRootTree.get_child("Transformations");
for (const auto& rEachTransformationNode :
boost::make_iterator_range(aTransformTree.equal_range("")))
{
auto const& rTransformationTree = rEachTransformationNode.second;
std::string sType = rTransformationTree.get<std::string>("Type", "");
sal_Int16 nValue = rTransformationTree.get<sal_Int16>("Value", 0);
auto eType = model::TransformationType::Undefined;
if (sType == "LumOff")
eType = model::TransformationType::LumOff;
else if (sType == "LumMod")
eType = model::TransformationType::LumMod;
else if (sType == "Tint")
eType = model::TransformationType::Tint;
else if (sType == "Shade")
eType = model::TransformationType::Shade;
if (eType != model::TransformationType::Undefined)
aComplexColor.addTransformation({ eType, nValue });
}
}
catch (const boost::property_tree::json_parser_error& /*exception*/)
{
return false;
}
rComplexColor = std::move(aComplexColor);
return true;
}
void convertToJSONTree(tools::JsonWriter& rTree, model::ComplexColor const& rComplexColor)
{
rTree.put("ThemeIndex", sal_Int16(rComplexColor.getThemeColorType()));
auto aTransformationsList = rTree.startArray("Transformations");
for (auto const& rTransformation : rComplexColor.getTransformations())
{
std::string aType;
switch (rTransformation.meType)
{
case model::TransformationType::LumMod:
aType = "LumMod";
break;
case model::TransformationType::LumOff:
aType = "LumOff";
break;
case model::TransformationType::Tint:
aType = "Tint";
break;
case model::TransformationType::Shade:
aType = "Shade";
break;
default:
break;
}
if (!aType.empty())
{
auto aChild = rTree.startStruct();
rTree.put("Type", aType);
rTree.put("Value", rTransformation.mnValue);
}
}
}
OString convertToJSON(model::ComplexColor const& rComplexColor)
{
tools::JsonWriter aTree;
convertToJSONTree(aTree, rComplexColor);
return aTree.finishAndGetAsOString();
}
} // end model::theme
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-6
View File
@@ -9,7 +9,6 @@
*/
#include <docmodel/uno/UnoComplexColor.hxx>
#include <docmodel/color/ComplexColorJSON.hxx>
using namespace css;
@@ -17,11 +16,6 @@ sal_Int32 UnoComplexColor::getType() { return sal_Int32(maColor.getType()); }
sal_Int32 UnoComplexColor::getThemeColorType() { return sal_Int32(maColor.getThemeColorType()); }
OUString UnoComplexColor::getRepresentation()
{
return OStringToOUString(model::color::convertToJSON(maColor), RTL_TEXTENCODING_UTF8);
}
util::Color UnoComplexColor::resolveColor(uno::Reference<util::XTheme> const& /*xTheme*/)
{
return util::Color(maColor.getFinalColor());
-20
View File
@@ -84,7 +84,6 @@
#include <editeng/eerdll.hxx>
#include <editeng/fontvariationsitem.hxx>
#include <editeng/opticalsizingitem.hxx>
#include <docmodel/color/ComplexColorJSON.hxx>
#include <docmodel/uno/UnoComplexColor.hxx>
#include <docmodel/color/ComplexColor.hxx>
#include <libxml/xmlwriter.h>
@@ -1640,11 +1639,6 @@ bool SvxColorItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const
rVal <<= nValue;
break;
}
case MID_COMPLEX_COLOR_JSON:
{
rVal <<= OStringToOUString(model::color::convertToJSON(maComplexColor), RTL_TEXTENCODING_UTF8);
break;
}
case MID_COMPLEX_COLOR:
{
auto xComplexColor = model::color::createXComplexColor(maComplexColor);
@@ -1727,20 +1721,6 @@ bool SvxColorItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId )
maComplexColor.addTransformation({model::TransformationType::LumOff, nLumOff});
}
break;
case MID_COMPLEX_COLOR_JSON:
{
OUString sComplexColorJson;
if (!(rVal >>= sComplexColorJson))
return false;
if (sComplexColorJson.isEmpty())
return false;
OString aJSON = OUStringToOString(sComplexColorJson, RTL_TEXTENCODING_ASCII_US);
if (!model::color::convertFromJSON(aJSON, maComplexColor))
return false;
}
break;
case MID_COMPLEX_COLOR:
{
css::uno::Reference<css::util::XComplexColor> xComplexColor;
@@ -1,31 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
*/
#pragma once
#include <docmodel/dllapi.h>
#include <docmodel/color/ComplexColor.hxx>
namespace tools
{
class JsonWriter;
}
namespace model::color
{
DOCMODEL_DLLPUBLIC OString convertToJSON(model::ComplexColor const& rComplexColor);
DOCMODEL_DLLPUBLIC void convertToJSONTree(tools::JsonWriter& rTree,
model::ComplexColor const& rComplexColor);
DOCMODEL_DLLPUBLIC bool convertFromJSON(OString const& rJsonString,
model::ComplexColor& rComplexColor);
} // end of namespace model
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-1
View File
@@ -35,7 +35,6 @@ public:
// XComplexColor
sal_Int32 SAL_CALL getType() override;
sal_Int32 SAL_CALL getThemeColorType() override;
OUString SAL_CALL getRepresentation() override;
css::util::Color SAL_CALL
resolveColor(css::uno::Reference<css::util::XTheme> const& xTheme) override;
};
+1 -2
View File
@@ -218,8 +218,7 @@
#define MID_COLOR_TINT_OR_SHADE 5
#define MID_COLOR_LUM_MOD 6
#define MID_COLOR_LUM_OFF 7
#define MID_COMPLEX_COLOR_JSON 8
#define MID_COMPLEX_COLOR 9
#define MID_COMPLEX_COLOR 8
// SvxRubyItem and SwFormatRuby
#define MID_RUBY_TEXT 0
@@ -65,7 +65,6 @@ class UNLESS_MERGELIBS(SVXCORE_DLLPUBLIC) ThemeColorPaletteManager final
public:
ThemeColorPaletteManager(std::shared_ptr<model::ColorSet> const& pColorSet);
ThemePaletteCollection generate();
void generateJSON(tools::JsonWriter& aTree);
};
} // end svx namespace
@@ -25,12 +25,6 @@ interface XComplexColor
/** resolve the color */
Color resolveColor([in] com::sun::star::util::XTheme xTheme);
/** String representation of the complex color.
@since LibreOffice 26.2
*/
string getRepresentation();
};
}; }; }; };
+6 -10
View File
@@ -57,7 +57,6 @@
#include <comphelper/sequenceashashmap.hxx>
#include <docmodel/uno/UnoTheme.hxx>
#include <docmodel/theme/Theme.hxx>
#include <docmodel/color/ComplexColorJSON.hxx>
#include <drawdoc.hxx>
#include <DrawDocShell.hxx>
@@ -2028,14 +2027,13 @@ CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testCharColorTheme)
aComplexColor.addTransformation({ model::TransformationType::LumMod, 2000 });
aComplexColor.addTransformation({ model::TransformationType::LumOff, 8000 });
OUString aJSON
= OStringToOUString(model::color::convertToJSON(aComplexColor), RTL_TEXTENCODING_UTF8);
// When setting the fill color of that shape, with theme metadata & effects:
uno::Sequence<beans::PropertyValue> aColorArgs = {
comphelper::makePropertyValue(u"Color.Color"_ustr,
sal_Int32(0xdae3f3)), // 80% light blue
comphelper::makePropertyValue(u"Color.ComplexColorJSON"_ustr, uno::Any(aJSON)),
comphelper::makePropertyValue(
u"Color.ComplexColor"_ustr,
uno::Any(model::color::createXComplexColor(aComplexColor))),
};
dispatchCommand(mxComponent, u".uno:Color"_ustr, aColorArgs);
}
@@ -2085,14 +2083,12 @@ CPPUNIT_TEST_FIXTURE(SdUiImpressTest, testFillColorTheme)
aComplexColor.addTransformation({ model::TransformationType::LumMod, 4000 });
aComplexColor.addTransformation({ model::TransformationType::LumOff, 6000 });
OUString aJSON
= OStringToOUString(model::color::convertToJSON(aComplexColor), RTL_TEXTENCODING_UTF8);
// When setting the fill color of that shape, with theme metadata & effects:
uno::Sequence<beans::PropertyValue> aColorArgs = {
comphelper::makePropertyValue(u"FillColor.Color"_ustr, sal_Int32(0xed7d31)), // orange
comphelper::makePropertyValue(u"FillColor.ComplexColorJSON"_ustr,
uno::Any(aJSON)), // accent 1
comphelper::makePropertyValue(
u"FillColor.ComplexColor"_ustr,
uno::Any(model::color::createXComplexColor(aComplexColor))), // accent 1
};
dispatchCommand(mxComponent, u".uno:FillColor"_ustr, aColorArgs);
}
+2 -2
View File
@@ -181,7 +181,7 @@ item BOOL SvxAutoKernItem;
struct SvxColor
{
INT32 Color MID_COLOR_RGB;
String ComplexColorJSON MID_COMPLEX_COLOR_JSON;
String ComplexColor MID_COMPLEX_COLOR;
};
item SvxColor SvxColorItem;
@@ -225,7 +225,7 @@ item String avmedia_MediaItem;
struct XColor
{
INT32 Color MID_COLOR_RGB;
String ComplexColorJSON MID_COMPLEX_COLOR_JSON;
String ComplexColor MID_COMPLEX_COLOR;
};
item XColor XColorItem;
+2 -2
View File
@@ -27,7 +27,7 @@ item XFillBitmap XFillBitmapItem;
struct XFillColor
{
INT32 Color MID_COLOR_RGB;
String ComplexColorJSON MID_COMPLEX_COLOR_JSON;
String ComplexColor MID_COMPLEX_COLOR;
};
item XFillColor XFillColorItem; // XColorItem
@@ -93,7 +93,7 @@ item SvxFillStyle XFillStyleItem;
struct XLineColor
{
INT32 Color MID_COLOR_RGB;
String ComplexColorJSON MID_COMPLEX_COLOR_JSON;
String ComplexColor MID_COMPLEX_COLOR;
};
item XLineColor XLineColorItem;
+3 -3
View File
@@ -41,7 +41,7 @@
#include <com/sun/star/util/XURLTransformer.hpp>
#include <com/sun/star/util/URLTransformer.hpp>
#include <docmodel/color/ComplexColor.hxx>
#include <docmodel/color/ComplexColorJSON.hxx>
#include <docmodel/uno/UnoComplexColor.hxx>
#include <palettes.hxx>
@@ -445,9 +445,9 @@ void PaletteManager::DispatchColorCommand(const OUString& aCommand, const NamedC
aComplexColor.addTransformation({model::TransformationType::LumOff, rColor.m_nLumOff});
uno::Any aAny;
aAny <<= OStringToOUString(model::color::convertToJSON(aComplexColor), RTL_TEXTENCODING_UTF8);
aAny <<= model::color::createXComplexColor(aComplexColor);
aArgs.push_back(comphelper::makePropertyValue(aObj.GetURLPath() + ".ComplexColorJSON", aAny));
aArgs.push_back(comphelper::makePropertyValue(aObj.GetURLPath() + ".ComplexColor", aAny));
}
URL aTargetURL;
+1 -4
View File
@@ -171,16 +171,13 @@ void updateSdrObject(model::ColorSet const& rColorSet, SdrObject* pObject, SdrVi
updateEditEngTextSections(rColorSet, pObject, *pView);
}
void notifyLOK(std::shared_ptr<model::ColorSet> const& pColorSet,
void notifyLOK(std::shared_ptr<model::ColorSet> const& /*pColorSet*/,
const std::set<Color>& rDocumentColors)
{
if (comphelper::LibreOfficeKit::isActive())
{
svx::ThemeColorPaletteManager aManager(pColorSet);
tools::JsonWriter aTree;
if (pColorSet)
aManager.generateJSON(aTree);
if (rDocumentColors.size())
PaletteManager::generateJSON(aTree, rDocumentColors);
@@ -14,7 +14,6 @@
#include <svx/dialmgr.hxx>
#include <svx/strings.hrc>
#include <docmodel/theme/ColorSet.hxx>
#include <docmodel/color/ComplexColorJSON.hxx>
#include <tools/json_writer.hxx>
#include <array>
@@ -92,38 +91,6 @@ svx::ThemePaletteCollection ThemeColorPaletteManager::generate()
}
return aThemePaletteCollection;
}
void ThemeColorPaletteManager::generateJSON(tools::JsonWriter& aTree)
{
svx::ThemePaletteCollection aThemePaletteCollection = generate();
auto aColorListTree = aTree.startArray("ThemeColors");
for (size_t nEffect = 0; nEffect < 6; ++nEffect)
{
auto aColorRowTree = aTree.startAnonArray();
for (size_t nIndex = 0; nIndex < 12; ++nIndex)
{
auto aColorTree = aTree.startStruct();
auto const& rColorData = aThemePaletteCollection.maColors[nIndex];
auto const& rEffectData = rColorData.maEffects[nEffect];
aTree.put("Value", rEffectData.maColor.AsRGBHexString().toUtf8());
aTree.put("Name", rEffectData.maColorName.toUtf8());
model::ComplexColor aComplexColor;
aComplexColor.setThemeColor(rColorData.meThemeColorType);
aComplexColor.addTransformation(
{ model::TransformationType::LumMod, rEffectData.mnLumMod });
aComplexColor.addTransformation(
{ model::TransformationType::LumOff, rEffectData.mnLumOff });
auto aDataTree = aTree.startNode("Data");
model::color::convertToJSONTree(aTree, aComplexColor);
}
}
}
} // end svx namespace
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
-60
View File
@@ -38,7 +38,6 @@
#include <editeng/memberids.h>
#include <docmodel/uno/UnoGradientTools.hxx>
#include <docmodel/uno/UnoComplexColor.hxx>
#include <docmodel/color/ComplexColorJSON.hxx>
#include <tools/mapunit.hxx>
#include <tools/UnitConversion.hxx>
#include <osl/diagnose.h>
@@ -343,11 +342,6 @@ bool XColorItem::QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId) const
rVal <<= xComplexColor;
break;
}
case MID_COMPLEX_COLOR_JSON:
{
rVal <<= OStringToOUString(model::color::convertToJSON(getComplexColor()), RTL_TEXTENCODING_UTF8);
break;
}
default:
{
rVal <<= GetColorValue().GetRGBColor();
@@ -370,21 +364,6 @@ bool XColorItem::PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId)
setComplexColor(model::color::getFromXComplexColor(xComplexColor));
}
break;
case MID_COMPLEX_COLOR_JSON:
{
OUString sComplexColorJson;
if (!(rVal >>= sComplexColorJson))
return false;
if (sComplexColorJson.isEmpty())
return false;
OString aJSON = OUStringToOString(sComplexColorJson, RTL_TEXTENCODING_ASCII_US);
model::ComplexColor aComplexColor;
model::color::convertFromJSON(aJSON, aComplexColor);
setComplexColor(aComplexColor);
}
break;
default:
{
Color nValue;
@@ -1067,11 +1046,6 @@ bool XLineColorItem::QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId) const
rVal <<= xComplexColor;
break;
}
case MID_COMPLEX_COLOR_JSON:
{
rVal <<= OStringToOUString(model::color::convertToJSON(getComplexColor()), RTL_TEXTENCODING_UTF8);
break;
}
default:
{
rVal <<= GetColorValue().GetRGBColor();
@@ -1094,20 +1068,6 @@ bool XLineColorItem::PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId)
setComplexColor(model::color::getFromXComplexColor(xComplexColor));
}
break;
case MID_COMPLEX_COLOR_JSON:
{
OUString sComplexColorJson;
if (!(rVal >>= sComplexColorJson))
return false;
if (sComplexColorJson.isEmpty())
return false;
model::ComplexColor aComplexColor;
OString aJSON = OUStringToOString(sComplexColorJson, RTL_TEXTENCODING_ASCII_US);
model::color::convertFromJSON(aJSON, aComplexColor);
setComplexColor(aComplexColor);
}
break;
default:
{
sal_Int32 nValue;
@@ -1891,11 +1851,6 @@ bool XFillColorItem::QueryValue( css::uno::Any& rVal, sal_uInt8 nMemberId ) cons
rVal <<= xComplexColor;
break;
}
case MID_COMPLEX_COLOR_JSON:
{
rVal <<= OStringToOUString(model::color::convertToJSON(getComplexColor()), RTL_TEXTENCODING_UTF8);
break;
}
default:
{
rVal <<= GetColorValue().GetRGBColor();
@@ -1945,21 +1900,6 @@ bool XFillColorItem::PutValue( const css::uno::Any& rVal, sal_uInt8 nMemberId )
setComplexColor(model::color::getFromXComplexColor(xComplexColor));
}
break;
case MID_COMPLEX_COLOR_JSON:
{
OUString sComplexColorJson;
if (!(rVal >>= sComplexColorJson))
return false;
if (sComplexColorJson.isEmpty())
return false;
OString aJSON = OUStringToOString(sComplexColorJson, RTL_TEXTENCODING_ASCII_US);
model::ComplexColor aComplexColor;
model::color::convertFromJSON(aJSON, aComplexColor);
setComplexColor(aComplexColor);
}
break;
default:
{
Color nValue;