summaryrefslogtreecommitdiff
path: root/svx
diff options
context:
space:
mode:
Diffstat (limited to 'svx')
-rw-r--r--svx/Library_svx.mk1
-rw-r--r--svx/UIConfig_svx.mk1
-rw-r--r--svx/inc/sdr/attribute/sdreffectstextattribute.hxx6
-rw-r--r--svx/inc/sdr/attribute/sdrlineeffectstextattribute.hxx2
-rw-r--r--svx/inc/sdr/attribute/sdrlinefilleffectstextattribute.hxx1
-rw-r--r--svx/inc/sdr/primitive2d/sdrattributecreator.hxx2
-rw-r--r--svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx5
-rw-r--r--svx/sdi/svx.sdi51
-rw-r--r--svx/source/sdr/attribute/sdreffectstextattribute.cxx8
-rw-r--r--svx/source/sdr/attribute/sdrlineeffectstextattribute.cxx3
-rw-r--r--svx/source/sdr/attribute/sdrlinefilleffectstextattribute.cxx3
-rw-r--r--svx/source/sdr/primitive2d/sdrattributecreator.cxx70
-rw-r--r--svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx23
-rw-r--r--svx/source/sdr/primitive2d/sdrdecompositiontools.cxx15
-rw-r--r--svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx11
-rw-r--r--svx/source/sdr/properties/customshapeproperties.cxx2
-rw-r--r--svx/source/sdr/properties/textproperties.cxx1
-rw-r--r--svx/source/sidebar/PanelFactory.cxx5
-rw-r--r--svx/source/sidebar/effect/TextEffectPropertyPanel.cxx153
-rw-r--r--svx/source/sidebar/effect/TextEffectPropertyPanel.hxx58
-rw-r--r--svx/source/svdraw/svdattr.cxx8
-rw-r--r--svx/source/svdraw/svdedxv.cxx3
-rw-r--r--svx/source/unodraw/unoprov.cxx11
-rw-r--r--svx/uiconfig/ui/sidebartexteffect.ui135
24 files changed, 562 insertions, 16 deletions
diff --git a/svx/Library_svx.mk b/svx/Library_svx.mk
index 75b20d54506d..0160bc2a4a6d 100644
--- a/svx/Library_svx.mk
+++ b/svx/Library_svx.mk
@@ -235,6 +235,7 @@ $(eval $(call gb_Library_add_exception_objects,svx,\
svx/source/sidebar/area/AreaPropertyPanelBase \
svx/source/sidebar/area/AreaTransparencyGradientPopup \
svx/source/sidebar/effect/EffectPropertyPanel \
+ svx/source/sidebar/effect/TextEffectPropertyPanel \
svx/source/sidebar/fontwork/FontworkPropertyPanel \
svx/source/sidebar/shadow/ShadowPropertyPanel \
svx/source/sidebar/graphic/GraphicPropertyPanel \
diff --git a/svx/UIConfig_svx.mk b/svx/UIConfig_svx.mk
index 9a1553005a85..fdbf7027ab35 100644
--- a/svx/UIConfig_svx.mk
+++ b/svx/UIConfig_svx.mk
@@ -123,6 +123,7 @@ $(eval $(call gb_UIConfig_add_uifiles,svx,\
svx/uiconfig/ui/sidebararea \
svx/uiconfig/ui/sidebarempty \
svx/uiconfig/ui/sidebareffect \
+ svx/uiconfig/ui/sidebartexteffect \
svx/uiconfig/ui/sidebarfontwork \
svx/uiconfig/ui/sidebarshadow \
svx/uiconfig/ui/sidebargallery \
diff --git a/svx/inc/sdr/attribute/sdreffectstextattribute.hxx b/svx/inc/sdr/attribute/sdreffectstextattribute.hxx
index 95a7ffa3e356..f539dce750c3 100644
--- a/svx/inc/sdr/attribute/sdreffectstextattribute.hxx
+++ b/svx/inc/sdr/attribute/sdreffectstextattribute.hxx
@@ -22,6 +22,7 @@
#include <drawinglayer/attribute/sdrshadowattribute.hxx>
#include <sdr/attribute/sdrtextattribute.hxx>
#include <drawinglayer/attribute/sdrglowattribute.hxx>
+#include <drawinglayer/attribute/sdrglowtextattribute.hxx>
namespace drawinglayer::attribute
@@ -35,6 +36,9 @@ namespace drawinglayer::attribute
// glow effect
SdrGlowAttribute maGlow;
+ // glow text effect
+ SdrGlowTextAttribute maGlowText;
+
// soft edge
sal_Int32 mnSoftEdgeRadius = 0;
@@ -43,6 +47,7 @@ namespace drawinglayer::attribute
SdrShadowAttribute aShadow,
SdrTextAttribute aTextAttribute,
SdrGlowAttribute aGlow,
+ SdrGlowTextAttribute aGlowText,
sal_Int32 nSoftEdgeRadius);
SdrEffectsTextAttribute();
SdrEffectsTextAttribute(const SdrEffectsTextAttribute& rCandidate);
@@ -58,6 +63,7 @@ namespace drawinglayer::attribute
const SdrShadowAttribute& getShadow() const { return maShadow; }
const SdrTextAttribute& getText() const { return maTextAttribute; }
const SdrGlowAttribute& getGlow() const { return maGlow; }
+ const SdrGlowTextAttribute& getGlowText() const { return maGlowText; }
sal_Int32 getSoftEdgeRadius() const { return mnSoftEdgeRadius; }
};
diff --git a/svx/inc/sdr/attribute/sdrlineeffectstextattribute.hxx b/svx/inc/sdr/attribute/sdrlineeffectstextattribute.hxx
index 3134b0b78b4e..345ceacf67c8 100644
--- a/svx/inc/sdr/attribute/sdrlineeffectstextattribute.hxx
+++ b/svx/inc/sdr/attribute/sdrlineeffectstextattribute.hxx
@@ -21,6 +21,7 @@
#include <sdr/attribute/sdreffectstextattribute.hxx>
#include <drawinglayer/attribute/sdrglowattribute.hxx>
+#include <drawinglayer/attribute/sdrglowtextattribute.hxx>
#include <drawinglayer/attribute/sdrlineattribute.hxx>
#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
@@ -40,6 +41,7 @@ namespace drawinglayer::attribute
const SdrShadowAttribute& rShadow,
const SdrTextAttribute& rTextAttribute,
const SdrGlowAttribute& rGlow,
+ const SdrGlowTextAttribute& rGlowText,
sal_Int32 nSoftEdgeRadius);
SdrLineEffectsTextAttribute();
SdrLineEffectsTextAttribute(const SdrLineEffectsTextAttribute& rCandidate);
diff --git a/svx/inc/sdr/attribute/sdrlinefilleffectstextattribute.hxx b/svx/inc/sdr/attribute/sdrlinefilleffectstextattribute.hxx
index 0adb1e49ffc2..56b22f65fe91 100644
--- a/svx/inc/sdr/attribute/sdrlinefilleffectstextattribute.hxx
+++ b/svx/inc/sdr/attribute/sdrlinefilleffectstextattribute.hxx
@@ -41,6 +41,7 @@ namespace drawinglayer::attribute
FillGradientAttribute aFillFloatTransGradient,
const SdrTextAttribute& rTextAttribute,
const SdrGlowAttribute& rGlow,
+ const SdrGlowTextAttribute& rGlowText,
sal_Int32 nSoftEdgeRadius);
SdrLineFillEffectsTextAttribute();
SdrLineFillEffectsTextAttribute(const SdrLineFillEffectsTextAttribute& rCandidate);
diff --git a/svx/inc/sdr/primitive2d/sdrattributecreator.hxx b/svx/inc/sdr/primitive2d/sdrattributecreator.hxx
index 92a2b102ffdb..1bc3cc2f2f28 100644
--- a/svx/inc/sdr/primitive2d/sdrattributecreator.hxx
+++ b/svx/inc/sdr/primitive2d/sdrattributecreator.hxx
@@ -26,12 +26,14 @@
// predefines
class SfxItemSet;
class SdrText;
+class SvxFontHeightItem;
namespace drawinglayer::attribute {
class SdrLineAttribute;
class SdrLineStartEndAttribute;
class SdrShadowAttribute;
class SdrGlowAttribute;
+ class SdrGlowTextAttribute;
class SdrFillAttribute;
class SdrTextAttribute;
class FillGradientAttribute;
diff --git a/svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx b/svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx
index e504acd41ab6..48df2f1e6f3d 100644
--- a/svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx
+++ b/svx/inc/sdr/primitive2d/sdrdecompositiontools.hxx
@@ -21,6 +21,7 @@
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <drawinglayer/attribute/sdrglowattribute.hxx>
+#include <drawinglayer/attribute/sdrglowtextattribute.hxx>
#include <drawinglayer/primitive2d/Primitive2DContainer.hxx>
#include <svx/svxdllapi.h>
@@ -78,6 +79,10 @@ namespace drawinglayer::primitive2d
Primitive2DContainer&& rContent,
const attribute::SdrGlowAttribute& rGlow);
+ Primitive2DContainer SVXCORE_DLLPUBLIC createEmbeddedTextGlowPrimitive(
+ Primitive2DContainer&& rContent,
+ const attribute::SdrGlowTextAttribute& rGlow);
+
Primitive2DContainer SVXCORE_DLLPUBLIC createEmbeddedSoftEdgePrimitive(
Primitive2DContainer&& aContent,
sal_Int32 nRadius);
diff --git a/svx/sdi/svx.sdi b/svx/sdi/svx.sdi
index 51ab792cf969..ef8c9e32fd98 100644
--- a/svx/sdi/svx.sdi
+++ b/svx/sdi/svx.sdi
@@ -12698,6 +12698,57 @@ SdrPercentItem GlowTransparency SID_ATTR_GLOW_TRANSPARENCY
GroupId = SfxGroupId::Document;
]
+XColorItem GlowTextColor SID_ATTR_GLOW_TEXT_COLOR
+
+[
+ AutoUpdate = TRUE,
+ FastCall = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = SfxGroupId::Document;
+]
+
+SdrMetricItem GlowTextRadius SID_ATTR_GLOW_TEXT_RADIUS
+
+[
+ AutoUpdate = TRUE,
+ FastCall = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = SfxGroupId::Document;
+]
+
+SdrPercentItem GlowTextTransparency SID_ATTR_GLOW_TEXT_TRANSPARENCY
+
+[
+ AutoUpdate = TRUE,
+ FastCall = FALSE,
+ ReadOnlyDoc = FALSE,
+ Toggle = FALSE,
+ Container = FALSE,
+ RecordAbsolute = FALSE,
+ RecordPerSet;
+
+ AccelConfig = FALSE,
+ MenuConfig = FALSE,
+ ToolBoxConfig = FALSE,
+ GroupId = SfxGroupId::Document;
+]
+
SdrMetricItem SoftEdgeRadius SID_ATTR_SOFTEDGE_RADIUS
[
diff --git a/svx/source/sdr/attribute/sdreffectstextattribute.cxx b/svx/source/sdr/attribute/sdreffectstextattribute.cxx
index 30d8a6db1c1e..9275a965c421 100644
--- a/svx/source/sdr/attribute/sdreffectstextattribute.cxx
+++ b/svx/source/sdr/attribute/sdreffectstextattribute.cxx
@@ -28,10 +28,12 @@ namespace drawinglayer::attribute
SdrShadowAttribute aShadow,
SdrTextAttribute aTextAttribute,
SdrGlowAttribute aGlow,
+ SdrGlowTextAttribute aGlowText,
sal_Int32 nSoftEdgeRadius)
: maShadow(std::move(aShadow)),
maTextAttribute(std::move(aTextAttribute)),
maGlow(std::move(aGlow)),
+ maGlowText(std::move(aGlowText)),
mnSoftEdgeRadius(nSoftEdgeRadius)
{
}
@@ -44,6 +46,7 @@ namespace drawinglayer::attribute
: maShadow(rCandidate.getShadow()),
maTextAttribute(rCandidate.getText()),
maGlow(rCandidate.maGlow),
+ maGlowText(rCandidate.maGlowText),
mnSoftEdgeRadius(rCandidate.mnSoftEdgeRadius)
{
}
@@ -53,6 +56,7 @@ namespace drawinglayer::attribute
maShadow = rCandidate.getShadow();
maTextAttribute = rCandidate.getText();
maGlow = rCandidate.maGlow;
+ maGlowText = rCandidate.maGlowText;
mnSoftEdgeRadius = rCandidate.mnSoftEdgeRadius;
return *this;
@@ -61,7 +65,8 @@ namespace drawinglayer::attribute
bool SdrEffectsTextAttribute::isDefault() const
{
return (getShadow().isDefault()
- && getText().isDefault() && maGlow.isDefault() && getSoftEdgeRadius() == 0);
+ && getText().isDefault() && maGlow.isDefault()
+ && maGlowText.isDefault() && getSoftEdgeRadius() == 0);
}
bool SdrEffectsTextAttribute::operator==(const SdrEffectsTextAttribute& rCandidate) const
@@ -69,6 +74,7 @@ namespace drawinglayer::attribute
return (getShadow() == rCandidate.getShadow()
&& getText() == rCandidate.getText()
&& getGlow() == rCandidate.getGlow()
+ && getGlowText() == rCandidate.getGlowText()
&& getSoftEdgeRadius() == rCandidate.getSoftEdgeRadius());
}
diff --git a/svx/source/sdr/attribute/sdrlineeffectstextattribute.cxx b/svx/source/sdr/attribute/sdrlineeffectstextattribute.cxx
index c3f3dbcb18c4..ca9402c707a1 100644
--- a/svx/source/sdr/attribute/sdrlineeffectstextattribute.cxx
+++ b/svx/source/sdr/attribute/sdrlineeffectstextattribute.cxx
@@ -30,8 +30,9 @@ namespace drawinglayer::attribute
const SdrShadowAttribute& rShadow,
const SdrTextAttribute& rTextAttribute,
const SdrGlowAttribute& rGlow,
+ const SdrGlowTextAttribute& rGlowText,
sal_Int32 nSoftEdgeRadius)
- : SdrEffectsTextAttribute(rShadow, rTextAttribute, rGlow, nSoftEdgeRadius),
+ : SdrEffectsTextAttribute(rShadow, rTextAttribute, rGlow, rGlowText, nSoftEdgeRadius),
maLine(std::move(aLine)),
maLineStartEnd(std::move(aLineStartEnd))
{
diff --git a/svx/source/sdr/attribute/sdrlinefilleffectstextattribute.cxx b/svx/source/sdr/attribute/sdrlinefilleffectstextattribute.cxx
index 4d57225b2fb3..a5b7ab9cac2f 100644
--- a/svx/source/sdr/attribute/sdrlinefilleffectstextattribute.cxx
+++ b/svx/source/sdr/attribute/sdrlinefilleffectstextattribute.cxx
@@ -32,8 +32,9 @@ namespace drawinglayer::attribute
FillGradientAttribute aFillFloatTransGradient,
const SdrTextAttribute& rTextAttribute,
const SdrGlowAttribute& rGlow,
+ const SdrGlowTextAttribute& rGlowText,
sal_Int32 nSoftEdgeRadius)
- : SdrLineEffectsTextAttribute(rLine, rLineStartEnd, rShadow, rTextAttribute, rGlow, nSoftEdgeRadius),
+ : SdrLineEffectsTextAttribute(rLine, rLineStartEnd, rShadow, rTextAttribute, rGlow, rGlowText, nSoftEdgeRadius),
maFill(std::move(aFill)),
maFillFloatTransGradient(std::move(aFillFloatTransGradient))
{
diff --git a/svx/source/sdr/primitive2d/sdrattributecreator.cxx b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
index 4a1f2c6560e2..192e6b080acf 100644
--- a/svx/source/sdr/primitive2d/sdrattributecreator.cxx
+++ b/svx/source/sdr/primitive2d/sdrattributecreator.cxx
@@ -72,6 +72,9 @@
#include <svx/svdmodel.hxx>
#include <svx/xflbmsli.hxx>
#include <editeng/editstat.hxx>
+#include <editeng/eeitem.hxx>
+#include <editeng/fhgtitem.hxx>
+#include <editeng/editobj.hxx>
#include <osl/diagnose.h>
#include <drawinglayer/attribute/fillhatchattribute.hxx>
#include <drawinglayer/attribute/fillgradientattribute.hxx>
@@ -80,12 +83,15 @@
#include <sdr/attribute/sdrformtextattribute.hxx>
#include <sdr/attribute/sdrlinefilleffectstextattribute.hxx>
#include <drawinglayer/attribute/sdrglowattribute.hxx>
+#include <drawinglayer/attribute/sdrglowtextattribute.hxx>
#include <drawinglayer/attribute/sdrsceneattribute3d.hxx>
#include <drawinglayer/attribute/sdrlightingattribute3d.hxx>
#include <drawinglayer/attribute/sdrlightattribute3d.hxx>
#include <sdr/attribute/sdrfilltextattribute.hxx>
#include <com/sun/star/drawing/LineCap.hpp>
+#include <math.h>
+
using namespace com::sun::star;
namespace drawinglayer
@@ -187,9 +193,12 @@ namespace drawinglayer
attribute::SdrGlowAttribute createNewSdrGlowAttribute(const SfxItemSet& rSet)
{
sal_Int32 nRadius = rSet.Get(SDRATTR_GLOW_RADIUS).GetValue();
+
if (!nRadius)
return attribute::SdrGlowAttribute();
+
Color aColor(rSet.Get(SDRATTR_GLOW_COLOR).GetColorValue());
+
sal_uInt16 nTransparency(rSet.Get(SDRATTR_GLOW_TRANSPARENCY).GetValue());
if (nTransparency)
aColor.SetAlpha(255 - std::round(nTransparency / 100.0 * 255.0));
@@ -198,6 +207,55 @@ namespace drawinglayer
return glowAttr;
}
+ attribute::SdrGlowTextAttribute createNewSdrGlowTextAttribute(const SfxItemSet& rSet, const SdrTextObj& rTextObj)
+ {
+ sal_Int32 nTextRadius = rSet.Get(SDRATTR_GLOW_TEXT_RADIUS).GetValue();
+
+ if (!nTextRadius)
+ return attribute::SdrGlowTextAttribute();
+
+ Color aTextColor(rSet.Get(SDRATTR_GLOW_TEXT_COLOR).GetColorValue());
+
+ sal_uInt16 nTextTransparency(rSet.Get(SDRATTR_GLOW_TEXT_TRANSPARENCY).GetValue());
+ if (nTextTransparency)
+ aTextColor.SetAlpha(255 - std::round(nTextTransparency / 100.0 * 255.0));
+
+ // calculate rendering text glow radius from biggest Char size for the full text in shape
+ double nRadius = 0.0;
+ const SvxFontHeightItem& rItem = *rSet.GetItemIfSet(EE_CHAR_FONTHEIGHT);
+ sal_uInt32 nFontSize = rItem.GetHeight();
+
+ if (rTextObj.GetOutlinerParaObject())
+ {
+ const EditTextObject& aEdit = rTextObj.GetOutlinerParaObject()->GetTextObject();
+ for (sal_Int32 i = 0; i < aEdit.GetParagraphCount(); i++)
+ {
+ std::vector<EECharAttrib> aAttribs;
+ aEdit.GetCharAttribs(i, aAttribs);
+ for (const auto& attrib : aAttribs)
+ {
+ if (const SvxFontHeightItem* pFontHeight = dynamic_cast<const SvxFontHeightItem*>(attrib.pAttr))
+ {
+ if (nFontSize < pFontHeight->GetHeight())
+ nFontSize = pFontHeight->GetHeight();
+ }
+ }
+ }
+ }
+
+ if (nFontSize)
+ {
+ // Rendering_glow_size = Original_glow_size / (154.39 * FontSize ^ -0,621)
+ // This is an approximate calculation similar to MSO text glow size which is
+ // depending on font size
+ nRadius = nTextRadius / (154.39 * pow(nFontSize, -0.621));
+ nTextRadius = std::round(nRadius);
+ }
+
+ attribute::SdrGlowTextAttribute glowTextAttr{ nTextRadius, aTextColor };
+ return glowTextAttr;
+ }
+
sal_Int32 getSoftEdgeRadius(const SfxItemSet& rSet)
{
return rSet.Get(SDRATTR_SOFTEDGE_RADIUS).GetValue();
@@ -749,10 +807,11 @@ namespace drawinglayer::primitive2d
// try shadow
const attribute::SdrShadowAttribute aShadow(createNewSdrShadowAttribute(rSet));
const attribute::SdrGlowAttribute aGlow(createNewSdrGlowAttribute(rSet));
+ const attribute::SdrGlowTextAttribute aGlowText(createNewSdrGlowTextAttribute(rSet, pText->GetObject()));
const sal_Int32 nSoftEdgeRadius(getSoftEdgeRadius(rSet));
return attribute::SdrEffectsTextAttribute(aShadow, std::move(aText),
- aGlow, nSoftEdgeRadius);
+ aGlow, aGlowText, nSoftEdgeRadius);
}
attribute::SdrLineEffectsTextAttribute createNewSdrLineEffectsTextAttribute(
@@ -796,13 +855,15 @@ namespace drawinglayer::primitive2d
// try shadow
attribute::SdrShadowAttribute aShadow(createNewSdrShadowAttribute(rSet));
attribute::SdrGlowAttribute aGlow = createNewSdrGlowAttribute(rSet);
+ attribute::SdrGlowTextAttribute aGlowText = createNewSdrGlowTextAttribute(rSet, pText->GetObject());
const sal_Int32 nSoftEdgeRadius(getSoftEdgeRadius(rSet));
return attribute::SdrLineEffectsTextAttribute(std::move(aLine),
std::move(aLineStartEnd),
std::move(aShadow),
std::move(aText),
- std::move(aGlow), nSoftEdgeRadius);
+ std::move(aGlow),
+ std::move(aGlowText), nSoftEdgeRadius);
}
return attribute::SdrLineEffectsTextAttribute();
@@ -868,11 +929,14 @@ namespace drawinglayer::primitive2d
// glow
const attribute::SdrGlowAttribute aGlow = createNewSdrGlowAttribute(rSet);
+ // text glow
+ const attribute::SdrGlowTextAttribute aGlowText = createNewSdrGlowTextAttribute(rSet, pText->GetObject());
+
const sal_Int32 nSoftEdgeRadius(getSoftEdgeRadius(rSet));
return attribute::SdrLineFillEffectsTextAttribute(aLine, std::move(aFill), aLineStartEnd,
aShadow, std::move(aFillFloatTransGradient),
- aText, aGlow, nSoftEdgeRadius);
+ aText, aGlow, aGlowText, nSoftEdgeRadius);
}
return attribute::SdrLineFillEffectsTextAttribute();
diff --git a/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
index bfdd4922f1b3..88cc3cf9bc61 100644
--- a/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrcustomshapeprimitive2d.cxx
@@ -44,12 +44,20 @@ namespace drawinglayer::primitive2d
getSdrSTAttribute().getSoftEdgeRadius());
}
+ // tdf#132199: put glow before shadow, to have shadow of the glow, not the opposite
+ if (!aRetval.empty() && !getSdrSTAttribute().getGlow().isDefault())
+ {
+ // glow
+ aRetval = createEmbeddedGlowPrimitive(std::move(aRetval), getSdrSTAttribute().getGlow());
+ }
+
// add text
if(!getSdrSTAttribute().getText().isDefault())
{
const basegfx::B2DPolygon& aUnitOutline(basegfx::utils::createUnitPolygon());
- aRetval.push_back(
+ Primitive2DContainer aTempContentText;
+ aTempContentText.push_back(
createTextPrimitive(
basegfx::B2DPolyPolygon(aUnitOutline),
getTextBox(),
@@ -57,13 +65,14 @@ namespace drawinglayer::primitive2d
attribute::SdrLineAttribute(),
false,
getWordWrap()));
- }
- // tdf#132199: put glow before shadow, to have shadow of the glow, not the opposite
- if (!aRetval.empty() && !getSdrSTAttribute().getGlow().isDefault())
- {
- // glow
- aRetval = createEmbeddedGlowPrimitive(std::move(aRetval), getSdrSTAttribute().getGlow());
+ // put text glow before, shape glow and shadow
+ if (!aTempContentText.empty() && !getSdrSTAttribute().getGlowText().isDefault())
+ {
+ // add text glow
+ aTempContentText = createEmbeddedTextGlowPrimitive(std::move(aTempContentText), getSdrSTAttribute().getGlowText());
+ }
+ aRetval.append(std::move(aTempContentText));
}
// add shadow
diff --git a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
index b6d97a9fa39b..a29d1cbb1900 100644
--- a/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
+++ b/svx/source/sdr/primitive2d/sdrdecompositiontools.cxx
@@ -52,6 +52,7 @@
#include <drawinglayer/attribute/sdrlinestartendattribute.hxx>
#include <drawinglayer/attribute/sdrshadowattribute.hxx>
#include <drawinglayer/attribute/sdrglowattribute.hxx>
+#include <drawinglayer/attribute/sdrglowtextattribute.hxx>
#include <docmodel/theme/FormatScheme.hxx>
#include <osl/diagnose.h>
@@ -931,6 +932,20 @@ sal_uInt32 SlideBackgroundFillPrimitive2D::getPrimitive2DID() const
return aRetval;
}
+ Primitive2DContainer createEmbeddedTextGlowPrimitive(
+ Primitive2DContainer&& rContent,
+ const attribute::SdrGlowTextAttribute& rGlow)
+ {
+ if (rContent.empty())
+ return std::move(rContent);
+
+ Primitive2DContainer aRetval(2);
+ aRetval[0] = new GlowPrimitive2D(rGlow.getTextColor(), rGlow.getTextRadius(), Primitive2DContainer(rContent));
+ aRetval[1] = new GroupPrimitive2D(Primitive2DContainer(std::move(rContent)));
+
+ return aRetval;
+ }
+
Primitive2DContainer createEmbeddedSoftEdgePrimitive(Primitive2DContainer&& aContent,
sal_Int32 nRadius)
{
diff --git a/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx b/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx
index 2b1f10a81aa6..cdfd75a88b98 100644
--- a/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx
+++ b/svx/source/sdr/primitive2d/sdrrectangleprimitive2d.cxx
@@ -92,7 +92,8 @@ namespace drawinglayer::primitive2d
// add text
if(!getSdrLFSTAttribute().getText().isDefault())
{
- aRetval.push_back(
+ Primitive2DContainer aTempContentText;
+ aTempContentText.push_back(
createTextPrimitive(
basegfx::B2DPolyPolygon(aUnitOutline),
getTransform(),
@@ -100,6 +101,14 @@ namespace drawinglayer::primitive2d
getSdrLFSTAttribute().getLine(),
false,
false));
+
+ // put text glow before, shape glow and shadow
+ if (!aTempContentText.empty() && !getSdrLFSTAttribute().getGlowText().isDefault())
+ {
+ // add text glow
+ aTempContentText = createEmbeddedTextGlowPrimitive(std::move(aTempContentText), getSdrLFSTAttribute().getGlowText());
+ }
+ aRetval.append(std::move(aTempContentText));
}
// add shadow
diff --git a/svx/source/sdr/properties/customshapeproperties.cxx b/svx/source/sdr/properties/customshapeproperties.cxx
index 2626d133d1b0..c63d7e4a4b3c 100644
--- a/svx/source/sdr/properties/customshapeproperties.cxx
+++ b/svx/source/sdr/properties/customshapeproperties.cxx
@@ -71,7 +71,7 @@ namespace sdr::properties
// Graphic attributes, 3D properties, CustomShape
// properties:
SDRATTR_GRAF_FIRST, SDRATTR_CUSTOMSHAPE_LAST,
- SDRATTR_GLOW_FIRST, SDRATTR_SOFTEDGE_LAST,
+ SDRATTR_GLOW_FIRST, SDRATTR_GLOW_TEXT_LAST,
SDRATTR_TEXTCOLUMNS_FIRST, SDRATTR_TEXTCOLUMNS_LAST,
SDRATTR_WRITINGMODE2, SDRATTR_WRITINGMODE2,
// Range from SdrTextObj:
diff --git a/svx/source/sdr/properties/textproperties.cxx b/svx/source/sdr/properties/textproperties.cxx
index cefb8895878f..bf19b885db5c 100644
--- a/svx/source/sdr/properties/textproperties.cxx
+++ b/svx/source/sdr/properties/textproperties.cxx
@@ -54,6 +54,7 @@ namespace sdr::properties
svl::Items<SDRATTR_START, SDRATTR_SHADOW_LAST,
SDRATTR_MISC_FIRST, SDRATTR_MISC_LAST,
SDRATTR_TEXTDIRECTION, SDRATTR_TEXTDIRECTION,
+ SDRATTR_GLOW_TEXT_FIRST, SDRATTR_GLOW_TEXT_LAST,
SDRATTR_TEXTCOLUMNS_FIRST, SDRATTR_TEXTCOLUMNS_LAST,
// range from SdrTextObj
diff --git a/svx/source/sidebar/PanelFactory.cxx b/svx/source/sidebar/PanelFactory.cxx
index 6d1bd1cc8c60..20479e8efa65 100644
--- a/svx/source/sidebar/PanelFactory.cxx
+++ b/svx/source/sidebar/PanelFactory.cxx
@@ -27,6 +27,7 @@
#include "fontwork/FontworkPropertyPanel.hxx"
#include "shadow/ShadowPropertyPanel.hxx"
#include "effect/EffectPropertyPanel.hxx"
+#include "effect/TextEffectPropertyPanel.hxx"
#include "graphic/GraphicPropertyPanel.hxx"
#include "line/LinePropertyPanel.hxx"
#include "possize/PosSizePropertyPanel.hxx"
@@ -153,6 +154,10 @@ Reference<ui::XUIElement> SAL_CALL PanelFactory::createUIElement (
{
xControl = EffectPropertyPanel::Create(pParent, pBindings);
}
+ else if (rsResourceURL.endsWith("/TextEffectPropertyPanel"))
+ {
+ xControl = TextEffectPropertyPanel::Create(pParent, pBindings);
+ }
else if (rsResourceURL.endsWith("/GraphicPropertyPanel"))
{
xControl = GraphicPropertyPanel::Create(pParent, pBindings);
diff --git a/svx/source/sidebar/effect/TextEffectPropertyPanel.cxx b/svx/source/sidebar/effect/TextEffectPropertyPanel.cxx
new file mode 100644
index 000000000000..ab8797ee904f
--- /dev/null
+++ b/svx/source/sidebar/effect/TextEffectPropertyPanel.cxx
@@ -0,0 +1,153 @@
+/* -*- 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 <sal/config.h>
+
+#include "TextEffectPropertyPanel.hxx"
+
+#include <sfx2/dispatch.hxx>
+#include <svx/colorbox.hxx>
+#include <svx/sdmetitm.hxx>
+#include <svx/sdprcitm.hxx>
+#include <svx/svddef.hxx>
+#include <svx/svxids.hrc>
+#include <svx/xcolit.hxx>
+#include <svl/itemset.hxx>
+
+namespace svx::sidebar
+{
+TextEffectPropertyPanel::TextEffectPropertyPanel(weld::Widget* pParent, SfxBindings* pBindings)
+ : PanelLayout(pParent, u"TextEffectPropertyPanel"_ustr, u"svx/ui/sidebartexteffect.ui"_ustr)
+ , maTGlowColorController(SID_ATTR_GLOW_TEXT_COLOR, *pBindings, *this)
+ , maTGlowRadiusController(SID_ATTR_GLOW_TEXT_RADIUS, *pBindings, *this)
+ , maTGlowTransparencyController(SID_ATTR_GLOW_TEXT_TRANSPARENCY, *pBindings, *this)
+ , mxFTTTransparency(m_xBuilder->weld_label(u"texttransparency"_ustr))
+ , mpBindings(pBindings)
+ , mxTGlowRadius(
+ m_xBuilder->weld_metric_spin_button(u"LB_GLOW_TEXT_RADIUS"_ustr, FieldUnit::POINT))
+ , mxLBTGlowColor(new ColorListBox(m_xBuilder->weld_menu_button(u"LB_GLOW_TEXT_COLOR"_ustr),
+ [this] { return GetFrameWeld(); }))
+ , mxTGlowTransparency(m_xBuilder->weld_metric_spin_button(u"LB_GLOW_TEXT_TRANSPARENCY"_ustr,
+ FieldUnit::PERCENT))
+ , mxFTTColor(m_xBuilder->weld_label(u"glowtextcolorlabel"_ustr))
+{
+ Initialize();
+}
+
+TextEffectPropertyPanel::~TextEffectPropertyPanel()
+{
+ mxTGlowRadius.reset();
+ mxLBTGlowColor.reset();
+ mxTGlowTransparency.reset();
+ mxFTTColor.reset();
+ mxFTTTransparency.reset();
+
+ maTGlowColorController.dispose();
+ maTGlowRadiusController.dispose();
+ maTGlowTransparencyController.dispose();
+}
+
+void TextEffectPropertyPanel::Initialize()
+{
+ mxTGlowRadius->connect_value_changed(LINK(this, TextEffectPropertyPanel, ModifyTGlowRadiusHdl));
+ mxLBTGlowColor->SetSelectHdl(LINK(this, TextEffectPropertyPanel, ModifyTGlowColorHdl));
+ mxTGlowTransparency->connect_value_changed(
+ LINK(this, TextEffectPropertyPanel, ModifyTGlowTransparencyHdl));
+}
+
+IMPL_LINK_NOARG(TextEffectPropertyPanel, ModifyTGlowRadiusHdl, weld::MetricSpinButton&, void)
+{
+ SdrMetricItem aItem(SDRATTR_GLOW_TEXT_RADIUS, mxTGlowRadius->get_value(FieldUnit::MM_100TH));
+ mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_GLOW_TEXT_RADIUS, SfxCallMode::RECORD,
+ { &aItem });
+}
+
+IMPL_LINK_NOARG(TextEffectPropertyPanel, ModifyTGlowColorHdl, ColorListBox&, void)
+{
+ XColorItem aItem(SDRATTR_GLOW_TEXT_COLOR, mxLBTGlowColor->GetSelectEntryColor());
+ mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_GLOW_TEXT_COLOR, SfxCallMode::RECORD,
+ { &aItem });
+}
+
+IMPL_LINK_NOARG(TextEffectPropertyPanel, ModifyTGlowTransparencyHdl, weld::MetricSpinButton&, void)
+{
+ SdrPercentItem aItem(SDRATTR_GLOW_TEXT_TRANSPARENCY,
+ mxTGlowTransparency->get_value(FieldUnit::PERCENT));
+ mpBindings->GetDispatcher()->ExecuteList(SID_ATTR_GLOW_TEXT_TRANSPARENCY, SfxCallMode::RECORD,
+ { &aItem });
+}
+
+void TextEffectPropertyPanel::UpdateControls()
+{
+ const bool bTEnabled = mxTGlowRadius->get_value(FieldUnit::MM_100TH) != 0;
+ mxLBTGlowColor->set_sensitive(bTEnabled);
+ mxTGlowTransparency->set_sensitive(bTEnabled);
+ mxFTTColor->set_sensitive(bTEnabled);
+ mxFTTTransparency->set_sensitive(bTEnabled);
+}
+
+void TextEffectPropertyPanel::NotifyItemUpdate(sal_uInt16 nSID, SfxItemState eState,
+ const SfxPoolItem* pState)
+{
+ switch (nSID)
+ {
+ case SID_ATTR_GLOW_TEXT_COLOR:
+ {
+ if (eState >= SfxItemState::DEFAULT)
+ {
+ const XColorItem* pColorItem = dynamic_cast<const XColorItem*>(pState);
+ if (pColorItem)
+ {
+ mxLBTGlowColor->SelectEntry(pColorItem->GetColorValue());
+ }
+ }
+ }
+ break;
+ case SID_ATTR_GLOW_TEXT_RADIUS:
+ {
+ if (eState >= SfxItemState::DEFAULT)
+ {
+ const SdrMetricItem* pRadiusItem = dynamic_cast<const SdrMetricItem*>(pState);
+ if (pRadiusItem)
+ {
+ mxTGlowRadius->set_value(pRadiusItem->GetValue(), FieldUnit::MM_100TH);
+ }
+ }
+ }
+ break;
+ case SID_ATTR_GLOW_TEXT_TRANSPARENCY:
+ {
+ if (eState >= SfxItemState::DEFAULT)
+ {
+ if (auto pItem = dynamic_cast<const SdrPercentItem*>(pState))
+ {
+ mxTGlowTransparency->set_value(pItem->GetValue(), FieldUnit::PERCENT);
+ }
+ }
+ }
+ break;
+ }
+ UpdateControls();
+}
+
+std::unique_ptr<PanelLayout> TextEffectPropertyPanel::Create(weld::Widget* pParent,
+ SfxBindings* pBindings)
+{
+ if (pParent == nullptr)
+ throw css::lang::IllegalArgumentException(
+ u"no parent Window given to TextEffectPropertyPanel::Create"_ustr, nullptr, 0);
+ if (pBindings == nullptr)
+ throw css::lang::IllegalArgumentException(
+ u"no SfxBindings given to TextEffectPropertyPanel::Create"_ustr, nullptr, 2);
+
+ return std::make_unique<TextEffectPropertyPanel>(pParent, pBindings);
+}
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/sidebar/effect/TextEffectPropertyPanel.hxx b/svx/source/sidebar/effect/TextEffectPropertyPanel.hxx
new file mode 100644
index 000000000000..5966d407b055
--- /dev/null
+++ b/svx/source/sidebar/effect/TextEffectPropertyPanel.hxx
@@ -0,0 +1,58 @@
+/* -*- 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/.
+ */
+#ifndef INCLUDED_SVX_SOURCE_SIDEBAR_EFFECT_TEXTEFFECTPROPERTYPANEL_HXX
+#define INCLUDED_SVX_SOURCE_SIDEBAR_EFFECT_TEXTEFFECTPROPERTYPANEL_HXX
+
+#include <sfx2/sidebar/ControllerItem.hxx>
+#include <sfx2/sidebar/PanelLayout.hxx>
+
+class ColorListBox;
+
+namespace svx::sidebar
+{
+class TextEffectPropertyPanel : public PanelLayout,
+ public ::sfx2::sidebar::ControllerItem::ItemUpdateReceiverInterface
+{
+public:
+ TextEffectPropertyPanel(weld::Widget* pParent, SfxBindings* pBindings);
+ virtual ~TextEffectPropertyPanel() override;
+
+ static std::unique_ptr<PanelLayout> Create(weld::Widget* pParent, SfxBindings* pBindings);
+
+ virtual void NotifyItemUpdate(const sal_uInt16 nSId, const SfxItemState eState,
+ const SfxPoolItem* pState) override;
+
+ virtual void GetControlState(const sal_uInt16 /*nSId*/,
+ boost::property_tree::ptree& /*rState*/) override{};
+
+private:
+ sfx2::sidebar::ControllerItem maTGlowColorController;
+ sfx2::sidebar::ControllerItem maTGlowRadiusController;
+ sfx2::sidebar::ControllerItem maTGlowTransparencyController;
+ std::unique_ptr<weld::Label> mxFTTTransparency;
+
+ SfxBindings* mpBindings;
+
+ std::unique_ptr<weld::MetricSpinButton> mxTGlowRadius;
+ std::unique_ptr<ColorListBox> mxLBTGlowColor;
+ std::unique_ptr<weld::MetricSpinButton> mxTGlowTransparency;
+ std::unique_ptr<weld::Label> mxFTTColor;
+
+ void Initialize();
+ void UpdateControls();
+
+ DECL_LINK(ModifyTGlowColorHdl, ColorListBox&, void);
+ DECL_LINK(ModifyTGlowRadiusHdl, weld::MetricSpinButton&, void);
+ DECL_LINK(ModifyTGlowTransparencyHdl, weld::MetricSpinButton&, void);
+};
+}
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/svx/source/svdraw/svdattr.cxx b/svx/source/svdraw/svdattr.cxx
index cb6c197dfcd4..ab052e912031 100644
--- a/svx/source/svdraw/svdattr.cxx
+++ b/svx/source/svdraw/svdattr.cxx
@@ -429,6 +429,10 @@ static ItemInfoPackage& getItemInfoPackageSdr()
{ SDRATTR_SOFTEDGE_RADIUS, new SdrMetricItem(SDRATTR_SOFTEDGE_RADIUS, 0), SID_ATTR_SOFTEDGE_RADIUS, SFX_ITEMINFOFLAG_NONE },
+ { SDRATTR_GLOW_TEXT_RADIUS, new SdrMetricItem(SDRATTR_GLOW_TEXT_RADIUS, 0), SID_ATTR_GLOW_TEXT_RADIUS, SFX_ITEMINFOFLAG_NONE },
+ { SDRATTR_GLOW_TEXT_COLOR, new XColorItem(SDRATTR_GLOW_TEXT_COLOR, COL_BLACK), SID_ATTR_GLOW_TEXT_COLOR, SFX_ITEMINFOFLAG_NONE },
+ { SDRATTR_GLOW_TEXT_TRANSPARENCY, new SdrPercentItem(SDRATTR_GLOW_TEXT_TRANSPARENCY, 0), SID_ATTR_GLOW_TEXT_TRANSPARENCY, SFX_ITEMINFOFLAG_NONE },
+
{ SDRATTR_TEXTCOLUMNS_NUMBER, new SfxInt16Item(SDRATTR_TEXTCOLUMNS_NUMBER, 1), 0, SFX_ITEMINFOFLAG_NONE },
{ SDRATTR_TEXTCOLUMNS_SPACING, new SdrMetricItem(SDRATTR_TEXTCOLUMNS_SPACING, 0), 0, SFX_ITEMINFOFLAG_NONE },
@@ -603,6 +607,10 @@ OUString SdrItemPool::GetItemName(sal_uInt16 nWhich)
case SDRATTR_GLOW_COLOR : pResId = SIP_SA_GLOW_COLOR;break;
case SDRATTR_GLOW_TRANSPARENCY : pResId = SIP_SA_GLOW_TRANSPARENCY;break;
+ case SDRATTR_GLOW_TEXT_RADIUS : pResId = SIP_SA_GLOW_TEXT_RADIUS; break;
+ case SDRATTR_GLOW_TEXT_COLOR : pResId = SIP_SA_GLOW_TEXT_COLOR; break;
+ case SDRATTR_GLOW_TEXT_TRANSPARENCY : pResId = SIP_SA_GLOW_TEXT_TRANSPARENCY; break;
+
case SDRATTR_SOFTEDGE_RADIUS : pResId = SIP_SA_SOFTEDGE_RADIUS; break;
case SDRATTR_CAPTIONTYPE : pResId = SIP_SA_CAPTIONTYPE;break;
diff --git a/svx/source/svdraw/svdedxv.cxx b/svx/source/svdraw/svdedxv.cxx
index 6d0d1a57ad76..fd6315976a5e 100644
--- a/svx/source/svdraw/svdedxv.cxx
+++ b/svx/source/svdraw/svdedxv.cxx
@@ -2900,7 +2900,8 @@ static const WhichRangesContainer& GetFormatRangeImpl(bool bTextOnly, bool withP
SDRATTR_MISC_LAST, // table cell formats
SDRATTR_GRAF_FIRST, SDRATTR_GRAF_LAST, SDRATTR_TABLE_FIRST, SDRATTR_TABLE_LAST,
SDRATTR_GLOW_FIRST, SDRATTR_GLOW_LAST, SDRATTR_SOFTEDGE_FIRST,
- SDRATTR_SOFTEDGE_LAST, EE_PARA_START, EE_PARA_END, EE_CHAR_START, EE_CHAR_END>);
+ SDRATTR_SOFTEDGE_LAST, SDRATTR_GLOW_TEXT_FIRST, SDRATTR_GLOW_TEXT_LAST,
+ EE_PARA_START, EE_PARA_END, EE_CHAR_START, EE_CHAR_END>);
static const WhichRangesContainer gTextOnly(
svl::Items<SDRATTR_MISC_FIRST, SDRATTR_MISC_LAST, EE_CHAR_START, EE_CHAR_END>);
diff --git a/svx/source/unodraw/unoprov.cxx b/svx/source/unodraw/unoprov.cxx
index 356894621c0a..6b88355a88b8 100644
--- a/svx/source/unodraw/unoprov.cxx
+++ b/svx/source/unodraw/unoprov.cxx
@@ -65,6 +65,7 @@ static std::span<SfxItemPropertyMapEntry const> ImplGetSvxShapePropertyMap()
LINKTARGET_PROPERTIES
GLOW_PROPERTIES
SOFTEDGE_PROPERTIES
+ GLOW_TEXT_PROPERTIES
SHADOW_PROPERTIES
TEXT_PROPERTIES
// #FontWork#
@@ -89,6 +90,7 @@ static std::span<SfxItemPropertyMapEntry const> ImplGetSvxTextShapePropertyMap()
LINKTARGET_PROPERTIES
GLOW_PROPERTIES
SOFTEDGE_PROPERTIES
+ GLOW_TEXT_PROPERTIES
SHADOW_PROPERTIES
TEXT_PROPERTIES
// #FontWork#
@@ -114,6 +116,7 @@ static std::span<SfxItemPropertyMapEntry const> ImplGetSvxConnectorPropertyMap()
LINKTARGET_PROPERTIES
GLOW_PROPERTIES
SOFTEDGE_PROPERTIES
+ GLOW_TEXT_PROPERTIES
SHADOW_PROPERTIES
TEXT_PROPERTIES
// #FontWork#
@@ -139,6 +142,7 @@ static std::span<SfxItemPropertyMapEntry const> ImplGetSvxDimensioningPropertyMa
LINKTARGET_PROPERTIES
GLOW_PROPERTIES
SOFTEDGE_PROPERTIES
+ GLOW_TEXT_PROPERTIES
SHADOW_PROPERTIES
TEXT_PROPERTIES
// #FontWork#
@@ -164,6 +168,7 @@ static std::span<SfxItemPropertyMapEntry const> ImplGetSvxCirclePropertyMap()
LINKTARGET_PROPERTIES
GLOW_PROPERTIES
SOFTEDGE_PROPERTIES
+ GLOW_TEXT_PROPERTIES
SHADOW_PROPERTIES
TEXT_PROPERTIES
// #FontWork#
@@ -191,6 +196,7 @@ static std::span<SfxItemPropertyMapEntry const> ImplGetSvxPolyPolygonPropertyMap
LINKTARGET_PROPERTIES
GLOW_PROPERTIES
SOFTEDGE_PROPERTIES
+ GLOW_TEXT_PROPERTIES
SHADOW_PROPERTIES
TEXT_PROPERTIES
// #FontWork#
@@ -221,6 +227,7 @@ static std::span<SfxItemPropertyMapEntry const> ImplGetSvxGraphicObjectPropertyM
LINKTARGET_PROPERTIES
GLOW_PROPERTIES
SOFTEDGE_PROPERTIES
+ GLOW_TEXT_PROPERTIES
SHADOW_PROPERTIES
TEXT_PROPERTIES
// #FontWork#
@@ -366,6 +373,7 @@ static std::span<SfxItemPropertyMapEntry const> ImplGetSvxAllPropertyMap()
{
GLOW_PROPERTIES
SOFTEDGE_PROPERTIES
+ GLOW_TEXT_PROPERTIES
SHADOW_PROPERTIES
LINE_PROPERTIES
LINE_PROPERTIES_START_END
@@ -428,6 +436,7 @@ static std::span<SfxItemPropertyMapEntry const> ImplGetSvxOle2PropertyMap()
LINKTARGET_PROPERTIES
GLOW_PROPERTIES
SOFTEDGE_PROPERTIES
+ GLOW_TEXT_PROPERTIES
SHADOW_PROPERTIES
TEXT_PROPERTIES
FONTWORK_PROPERTIES
@@ -682,6 +691,7 @@ static std::span<SfxItemPropertyMapEntry const> ImplGetSvxCustomShapePropertyMap
LINKTARGET_PROPERTIES
GLOW_PROPERTIES
SOFTEDGE_PROPERTIES
+ GLOW_TEXT_PROPERTIES
SHADOW_PROPERTIES
TEXT_PROPERTIES
{u"UserDefinedAttributes"_ustr, SDRATTR_XMLATTRIBUTES, cppu::UnoType<css::container::XNameContainer>::get(), 0, 0},
@@ -764,6 +774,7 @@ static std::span<comphelper::PropertyMapEntry const> ImplGetSvxDrawingDefaultsPr
{
GLOW_PROPERTIES
SOFTEDGE_PROPERTIES
+ GLOW_TEXT_PROPERTIES
SHADOW_PROPERTIES
LINE_PROPERTIES_DEFAULTS
FILL_PROPERTIES_BMP
diff --git a/svx/uiconfig/ui/sidebartexteffect.ui b/svx/uiconfig/ui/sidebartexteffect.ui
new file mode 100644
index 000000000000..e6484fc3d4fa
--- /dev/null
+++ b/svx/uiconfig/ui/sidebartexteffect.ui
@@ -0,0 +1,135 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.38.2 -->
+<interface domain="svx">
+ <requires lib="gtk+" version="3.20"/>
+ <object class="GtkAdjustment" id="adjustment1">
+ <property name="upper">150</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment2">
+ <property name="upper">100</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <!-- n-columns=1 n-rows=1 -->
+ <object class="GtkGrid" id="TextEffectPropertyPanel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <child>
+ <!-- n-columns=2 n-rows=4 -->
+ <object class="GtkGrid" id="grid1">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="border-width">6</property>
+ <property name="row-spacing">3</property>
+ <property name="column-spacing">6</property>
+ <child>
+ <object class="GtkLabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="halign">start</property>
+ <property name="label" translatable="yes" context="sidebartextglow|glow">Text Glow</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="radiustextglow">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes" context="sidebartextglow|radius">Radius:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">LB_GLOW_TEXT_RADIUS</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="glowtextcolorlabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes" context="sidebartextglow|color">Color:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">LB_GLOW_TEXT_COLOR</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="texttransparency">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="label" translatable="yes" context="sidebartextglow|transparency">Transparency:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">LB_GLOW_TEXT_TRANSPARENCY</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="LB_GLOW_TEXT_RADIUS">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="hexpand">True</property>
+ <property name="truncate-multiline">True</property>
+ <property name="adjustment">adjustment1</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">1</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkMenuButton" id="LB_GLOW_TEXT_COLOR">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="valign">center</property>
+ <property name="xalign">0</property>
+ <property name="draw-indicator">True</property>
+ <child>
+ <placeholder/>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="LB_GLOW_TEXT_TRANSPARENCY">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="truncate-multiline">True</property>
+ <property name="adjustment">adjustment2</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">0</property>
+ </packing>
+ </child>
+ </object>
+</interface>