diff options
26 files changed, 644 insertions, 135 deletions
diff --git a/cui/source/tabpages/border.cxx b/cui/source/tabpages/border.cxx index 9b94bc0eb28a..549ab533410a 100644 --- a/cui/source/tabpages/border.cxx +++ b/cui/source/tabpages/border.cxx @@ -1234,8 +1234,8 @@ IMPL_LINK_NOARG(SvxBorderTabPage, SelSdwHdl_Impl, ValueSet*, void) IMPL_LINK(SvxBorderTabPage, SelColHdl_Impl, ColorListBox&, rColorBox, void) { - Color aColor = rColorBox.GetSelectEntryColor(); - m_aFrameSel.SetColorToSelection(aColor); + NamedColor aNamedColor = rColorBox.GetSelectedEntry(); + m_aFrameSel.SetColorToSelection(aNamedColor.m_aColor, aNamedColor.getComplexColor()); } IMPL_LINK_NOARG(SvxBorderTabPage, ModifyWidthLBHdl_Impl, weld::ComboBox&, void) diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx index 7a8788728b46..ace220bcc5c0 100644 --- a/cui/source/tabpages/chardlg.cxx +++ b/cui/source/tabpages/chardlg.cxx @@ -2095,21 +2095,26 @@ bool SvxCharEffectsPage::FillItemSet( SfxItemSet* rSet ) //! item-state in the 'rOldSet' will be invalid. In this case //! changing the underline style will be allowed if a style is //! selected in the listbox. - bool bAllowChg = nPos != -1 && + bool bAllowChange = nPos != -1 && SfxItemState::DEFAULT > rOldSet.GetItemState( nWhich ); const SvxUnderlineItem& rItem = *static_cast<const SvxUnderlineItem*>(pOld); - if ( rItem.GetValue() == eUnder && - ( LINESTYLE_NONE == eUnder || rItem.GetColor() == m_xUnderlineColorLB->GetSelectEntryColor() ) && - ! bAllowChg ) + if (rItem.GetValue() == eUnder && + (LINESTYLE_NONE == eUnder || (rItem.GetColor() == m_xUnderlineColorLB->GetSelectEntryColor() && + rItem.getComplexColor() == m_xUnderlineColorLB->GetSelectedEntry().getComplexColor())) && + !bAllowChange) + { bChanged = false; + } } if ( bChanged ) { SvxUnderlineItem aNewItem( eUnder, nWhich ); - aNewItem.SetColor( m_xUnderlineColorLB->GetSelectEntryColor() ); - rSet->Put( aNewItem ); + auto aNamedColor = m_xUnderlineColorLB->GetSelectedEntry(); + aNewItem.SetColor(aNamedColor.m_aColor); + aNewItem.setComplexColor(aNamedColor.getComplexColor()); + rSet->Put(aNewItem); bModified = true; } else if ( SfxItemState::DEFAULT == rOldSet.GetItemState( nWhich, false ) ) @@ -2129,21 +2134,26 @@ bool SvxCharEffectsPage::FillItemSet( SfxItemSet* rSet ) //! item-state in the 'rOldSet' will be invalid. In this case //! changing the underline style will be allowed if a style is //! selected in the listbox. - bool bAllowChg = nPos != -1 && + bool bAllowChange = nPos != -1 && SfxItemState::DEFAULT > rOldSet.GetItemState( nWhich ); const SvxOverlineItem& rItem = *static_cast<const SvxOverlineItem*>(pOld); - if ( rItem.GetValue() == eOver && - ( LINESTYLE_NONE == eOver || rItem.GetColor() == m_xOverlineColorLB->GetSelectEntryColor() ) && - ! bAllowChg ) + if (rItem.GetValue() == eOver && + (LINESTYLE_NONE == eOver || (rItem.GetColor() == m_xOverlineColorLB->GetSelectEntryColor() && + rItem.getComplexColor() == m_xOverlineColorLB->GetSelectedEntry().getComplexColor())) && + !bAllowChange) + { bChanged = false; + } } if ( bChanged ) { SvxOverlineItem aNewItem( eOver, nWhich ); - aNewItem.SetColor( m_xOverlineColorLB->GetSelectEntryColor() ); - rSet->Put( aNewItem ); + auto aNamedColor = m_xOverlineColorLB->GetSelectedEntry(); + aNewItem.SetColor(aNamedColor.m_aColor); + aNewItem.setComplexColor(aNamedColor.getComplexColor()); + rSet->Put(aNewItem); bModified = true; } else if ( SfxItemState::DEFAULT == rOldSet.GetItemState( nWhich, false ) ) diff --git a/cui/source/tabpages/tpcolor.cxx b/cui/source/tabpages/tpcolor.cxx index 056afe822e7a..8df09ff09823 100644 --- a/cui/source/tabpages/tpcolor.cxx +++ b/cui/source/tabpages/tpcolor.cxx @@ -242,24 +242,12 @@ bool SvxColorTabPage::FillItemSet( SfxItemSet* rSet ) sColorName = m_xValSetColorList->GetItemText( m_xValSetColorList->GetSelectedItemId() ); else sColorName = "#" + m_aCurrentColor.m_aColor.AsRGBHexString().toAsciiUpperCase(); - maPaletteManager.AddRecentColor( m_aCurrentColor.m_aColor, sColorName ); - XFillColorItem aColorItem( sColorName, m_aCurrentColor.m_aColor ); - model::ThemeColorType eType = model::convertToThemeColorType(m_aCurrentColor.m_nThemeIndex); - if (eType != model::ThemeColorType::Unknown) - { - aColorItem.getComplexColor().setSchemeColor(eType); - } - aColorItem.getComplexColor().clearTransformations(); - if (m_aCurrentColor.m_nLumMod != 10000) - { - aColorItem.getComplexColor().addTransformation({model::TransformationType::LumMod, m_aCurrentColor.m_nLumMod}); - } - if (m_aCurrentColor.m_nLumOff != 0) - { - aColorItem.getComplexColor().addTransformation({model::TransformationType::LumOff, m_aCurrentColor.m_nLumOff}); - } - rSet->Put( aColorItem ); - rSet->Put( XFillStyleItem( drawing::FillStyle_SOLID ) ); + + maPaletteManager.AddRecentColor(m_aCurrentColor.m_aColor, sColorName); + XFillColorItem aColorItem(sColorName, m_aCurrentColor.m_aColor); + aColorItem.setComplexColor(m_aCurrentColor.getComplexColor()); + rSet->Put(aColorItem); + rSet->Put(XFillStyleItem(drawing::FillStyle_SOLID)); return true; } @@ -513,14 +501,10 @@ IMPL_LINK(SvxColorTabPage, SelectValSetHdl_Impl, ValueSet*, pValSet, void) m_aCtlPreviewNew.SetAttributes( aXFillAttr.GetItemSet() ); m_aCtlPreviewNew.Invalidate(); - bool bThemePaletteSelected = false; - if (pValSet == m_xValSetColorList.get()) - { - bThemePaletteSelected = maPaletteManager.IsThemePaletteSelected(); - } NamedColor aNamedColor; aNamedColor.m_aColor = aColor; - if (bThemePaletteSelected) + + if (pValSet == m_xValSetColorList.get() && maPaletteManager.IsThemePaletteSelected()) { sal_uInt16 nThemeIndex; sal_uInt16 nEffectIndex; diff --git a/editeng/source/items/borderline.cxx b/editeng/source/items/borderline.cxx index 698fd2b964b0..05742eb95131 100644 --- a/editeng/source/items/borderline.cxx +++ b/editeng/source/items/borderline.cxx @@ -30,7 +30,11 @@ #include <editeng/eerdll.hxx> #include <tools/bigint.hxx> +#include <docmodel/uno/UnoComplexColor.hxx> +#include <com/sun/star/util/XComplexColor.hpp> + using namespace ::com::sun::star::table::BorderLineStyle; +using namespace css; // class SvxBorderLine -------------------------------------------------- @@ -57,7 +61,22 @@ namespace { } } // Anonymous namespace -namespace editeng { +namespace editeng +{ + +bool SvxBorderLine::setComplexColorFromAny(css::uno::Any const& rValue) +{ + css::uno::Reference<css::util::XComplexColor> xComplexColor; + if (!(rValue >>= xComplexColor)) + return false; + + if (xComplexColor.is()) + { + auto aComplexColor = model::color::getFromXComplexColor(xComplexColor); + setComplexColor(aComplexColor); + } + return true; +} Color SvxBorderLine::darkColor( Color aMain ) { @@ -519,6 +538,7 @@ sal_uInt16 SvxBorderLine::GetDistance() const bool SvxBorderLine::operator==( const SvxBorderLine& rCmp ) const { return (m_aColor == rCmp.m_aColor && + m_aComplexColor == rCmp.m_aComplexColor && m_nWidth == rCmp.m_nWidth && m_bMirrorWidths == rCmp.m_bMirrorWidths && m_aWidthImpl == rCmp.m_aWidthImpl && diff --git a/editeng/source/items/frmitems.cxx b/editeng/source/items/frmitems.cxx index 63cbc018c1ab..77c497079634 100644 --- a/editeng/source/items/frmitems.cxx +++ b/editeng/source/items/frmitems.cxx @@ -2458,6 +2458,42 @@ bool SvxBoxItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const nDist = mnRightDistance; bDistMember = true; break; + case MID_BORDER_BOTTOM_COLOR: + { + if (mpBottomBorderLine) + { + auto xComplexColor = model::color::createXComplexColor(mpBottomBorderLine->getComplexColor()); + rVal <<= xComplexColor; + } + return true; + } + case MID_BORDER_LEFT_COLOR: + { + if (mpLeftBorderLine) + { + auto xComplexColor = model::color::createXComplexColor(mpLeftBorderLine->getComplexColor()); + rVal <<= xComplexColor; + } + return true; + } + case MID_BORDER_RIGHT_COLOR: + { + if (mpRightBorderLine) + { + auto xComplexColor = model::color::createXComplexColor(mpRightBorderLine->getComplexColor()); + rVal <<= xComplexColor; + } + return true; + } + case MID_BORDER_TOP_COLOR: + { + if (mpTopBorderLine) + { + auto xComplexColor = model::color::createXComplexColor(mpTopBorderLine->getComplexColor()); + rVal <<= xComplexColor; + } + return true; + } case LINE_STYLE: case LINE_WIDTH: // it doesn't make sense to return a value for these since it's @@ -2682,6 +2718,30 @@ bool SvxBoxItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) } } return true; + case MID_BORDER_BOTTOM_COLOR: + { + if (mpBottomBorderLine) + return mpBottomBorderLine->setComplexColorFromAny(rVal); + return true; + } + case MID_BORDER_LEFT_COLOR: + { + if (mpLeftBorderLine) + return mpLeftBorderLine->setComplexColorFromAny(rVal); + return true; + } + case MID_BORDER_RIGHT_COLOR: + { + if (mpRightBorderLine) + return mpRightBorderLine->setComplexColorFromAny(rVal); + return true; + } + case MID_BORDER_TOP_COLOR: + { + if (mpTopBorderLine) + return mpTopBorderLine->setComplexColorFromAny(rVal); + return true; + } } if( bDistMember || nMemberId == BORDER_DISTANCE ) @@ -4206,8 +4266,12 @@ bool SvxBrushItem::operator==( const SfxPoolItem& rAttr ) const assert(SfxPoolItem::operator==(rAttr)); const SvxBrushItem& rCmp = static_cast<const SvxBrushItem&>(rAttr); - bool bEqual = ( aColor == rCmp.aColor && aFilterColor == rCmp.aFilterColor && - eGraphicPos == rCmp.eGraphicPos && nGraphicTransparency == rCmp.nGraphicTransparency); + bool bEqual = + aColor == rCmp.aColor && + maComplexColor == rCmp.maComplexColor && + aFilterColor == rCmp.aFilterColor && + eGraphicPos == rCmp.eGraphicPos && + nGraphicTransparency == rCmp.nGraphicTransparency; if ( bEqual ) { diff --git a/editeng/source/items/textitem.cxx b/editeng/source/items/textitem.cxx index 9504b89d43ea..2f11ab7bb9b2 100644 --- a/editeng/source/items/textitem.cxx +++ b/editeng/source/items/textitem.cxx @@ -939,7 +939,8 @@ void SvxFontHeightItem::dumpAsXml(xmlTextWriterPtr pWriter) const // class SvxTextLineItem ------------------------------------------------ SvxTextLineItem::SvxTextLineItem( const FontLineStyle eSt, const sal_uInt16 nId ) - : SfxEnumItem( nId, eSt ), mColor( COL_TRANSPARENT ) + : SfxEnumItem(nId, eSt) + , maColor(COL_TRANSPARENT) { } @@ -981,8 +982,8 @@ bool SvxTextLineItem::GetPresentation ) const { rText = GetValueTextByPos( GetValue() ); - if( !mColor.IsTransparent() ) - rText += cpDelim + ::GetColorString( mColor ); + if( !maColor.IsTransparent() ) + rText += cpDelim + ::GetColorString(maColor); return true; } @@ -1005,14 +1006,19 @@ bool SvxTextLineItem::QueryValue( uno::Any& rVal, sal_uInt8 nMemberId ) const rVal <<= static_cast<sal_Int16>(GetValue()); break; case MID_TL_COLOR: - rVal <<= mColor; + rVal <<= maColor; break; + case MID_TL_COMPLEX_COLOR: + { + auto xComplexColor = model::color::createXComplexColor(maComplexColor); + rVal <<= xComplexColor; + break; + } case MID_TL_HASCOLOR: - rVal <<= mColor.GetAlpha() == 255; + rVal <<= maColor.GetAlpha() == 255; break; } return true; - } bool SvxTextLineItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) @@ -1042,14 +1048,24 @@ bool SvxTextLineItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) { // Keep transparence, because it contains the information // whether the font color or the stored color should be used - sal_uInt8 nAlpha = mColor.GetAlpha(); - mColor = nCol; - mColor.SetAlpha( nAlpha ); + sal_uInt8 nAlpha = maColor.GetAlpha(); + maColor = nCol; + maColor.SetAlpha( nAlpha ); } } break; + case MID_TL_COMPLEX_COLOR: + { + css::uno::Reference<css::util::XComplexColor> xComplexColor; + if (!(rVal >>= xComplexColor)) + return false; + + if (xComplexColor.is()) + maComplexColor = model::color::getFromXComplexColor(xComplexColor); + } + break; case MID_TL_HASCOLOR: - mColor.SetAlpha( Any2Bool( rVal ) ? 255 : 0 ); + maColor.SetAlpha( Any2Bool( rVal ) ? 255 : 0 ); break; } return bRet; @@ -1058,7 +1074,8 @@ bool SvxTextLineItem::PutValue( const uno::Any& rVal, sal_uInt8 nMemberId ) bool SvxTextLineItem::operator==( const SfxPoolItem& rItem ) const { return SfxEnumItem::operator==( rItem ) && - GetColor() == static_cast<const SvxTextLineItem&>(rItem).GetColor(); + maColor == static_cast<const SvxTextLineItem&>(rItem).maColor && + maComplexColor == static_cast<const SvxTextLineItem&>(rItem).maComplexColor; } // class SvxUnderlineItem ------------------------------------------------ diff --git a/include/editeng/borderline.hxx b/include/editeng/borderline.hxx index affd513e853e..eb7d2f0f4f8e 100644 --- a/include/editeng/borderline.hxx +++ b/include/editeng/borderline.hxx @@ -27,6 +27,7 @@ #include <tools/mapunit.hxx> #include <editeng/editengdllapi.h> #include <svtools/borderline.hxx> +#include <docmodel/color/ComplexColor.hxx> class IntlWrapper; @@ -154,6 +155,7 @@ class EDITENG_DLLPUBLIC SvxBorderLine final Color (*m_pColorGapFn)(Color); BorderWidthImpl m_aWidthImpl; Color m_aColor; + model::ComplexColor m_aComplexColor; SvxBorderLineStyle m_nStyle; bool m_bMirrorWidths; bool m_bUseLeftTop; @@ -165,7 +167,21 @@ public: Color (*pColorOutFn)( Color ) = &darkColor, Color (*pColorInFn)( Color ) = &darkColor ); - const Color& GetColor() const { return m_aColor; } + const Color & GetColor() const { return m_aColor; } + void SetColor(const Color & rColor ) { m_aColor = rColor; } + + model::ComplexColor const& getComplexColor() const + { + return m_aComplexColor; + } + void setComplexColor(model::ComplexColor const& rComplexColor) + { + m_aComplexColor = rComplexColor; + } + + bool setComplexColorFromAny(css::uno::Any const& rValue); + + Color GetColorOut( bool bLeftOrTop = true ) const; Color GetColorIn( bool bLeftOrTop = true ) const; bool HasGapColor() const { return m_pColorGapFn != nullptr; } @@ -208,7 +224,6 @@ public: SvxBorderLineStyle GetBorderLineStyle() const { return m_nStyle; } - void SetColor( const Color &rColor ) { m_aColor = rColor; } void SetBorderLineStyle( SvxBorderLineStyle nNew ); void ScaleMetrics( tools::Long nMult, tools::Long nDiv ); diff --git a/include/editeng/boxitem.hxx b/include/editeng/boxitem.hxx index 7b1058f570a9..4e35aad3a56c 100644 --- a/include/editeng/boxitem.hxx +++ b/include/editeng/boxitem.hxx @@ -105,6 +105,23 @@ public: return mpRightBorderLine.get(); } + editeng::SvxBorderLine* GetTop() + { + return mpTopBorderLine.get(); + } + editeng::SvxBorderLine* GetBottom() + { + return mpBottomBorderLine.get(); + } + editeng::SvxBorderLine* GetLeft() + { + return mpLeftBorderLine.get(); + } + editeng::SvxBorderLine* GetRight() + { + return mpRightBorderLine.get(); + } + const editeng::SvxBorderLine* GetLine( SvxBoxItemLine nLine ) const; //The Pointers are being copied! diff --git a/include/editeng/memberids.h b/include/editeng/memberids.h index 5787f70ae1e8..b44a1486ac16 100644 --- a/include/editeng/memberids.h +++ b/include/editeng/memberids.h @@ -92,6 +92,7 @@ #define MID_TL_STYLE 1 #define MID_TL_COLOR 2 #define MID_TL_HASCOLOR 3 +#define MID_TL_COMPLEX_COLOR 4 //SvxCrossedOutItem #define MID_CROSSED_OUT 0 @@ -150,12 +151,16 @@ #define RIGHT_BORDER_DISTANCE 7 #define TOP_BORDER_DISTANCE 8 #define BOTTOM_BORDER_DISTANCE 9 -#define MID_LEFT_BORDER 10 -#define MID_RIGHT_BORDER 11 -#define MID_TOP_BORDER 12 -#define MID_BOTTOM_BORDER 13 -#define LINE_STYLE 14 -#define LINE_WIDTH 15 +#define MID_LEFT_BORDER 10 +#define MID_RIGHT_BORDER 11 +#define MID_TOP_BORDER 12 +#define MID_BOTTOM_BORDER 13 +#define LINE_STYLE 14 +#define LINE_WIDTH 15 +#define MID_BORDER_BOTTOM_COLOR 16 +#define MID_BORDER_LEFT_COLOR 17 +#define MID_BORDER_RIGHT_COLOR 18 +#define MID_BORDER_TOP_COLOR 19 //BrushItem #define MID_BACK_COLOR 0 diff --git a/include/editeng/udlnitem.hxx b/include/editeng/udlnitem.hxx index e190348bb6ac..ecbec7a17b8d 100644 --- a/include/editeng/udlnitem.hxx +++ b/include/editeng/udlnitem.hxx @@ -16,13 +16,13 @@ * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ -#ifndef INCLUDED_EDITENG_UDLNITEM_HXX -#define INCLUDED_EDITENG_UDLNITEM_HXX +#pragma once +#include <editeng/editengdllapi.h> #include <svl/eitem.hxx> #include <tools/color.hxx> #include <tools/fontenum.hxx> -#include <editeng/editengdllapi.h> +#include <docmodel/color/ComplexColor.hxx> // class SvxTextLineItem ------------------------------------------------ @@ -30,7 +30,9 @@ class EDITENG_DLLPUBLIC SvxTextLineItem : public SfxEnumItem<FontLineStyle> { - Color mColor; + Color maColor; + model::ComplexColor maComplexColor; + public: SvxTextLineItem( const FontLineStyle eSt, const sal_uInt16 nId ); @@ -61,8 +63,18 @@ public: void SetLineStyle( FontLineStyle eNew ) { SetValue(eNew); } - const Color& GetColor() const { return mColor; } - void SetColor( const Color& rCol ) { mColor = rCol; } + const Color& GetColor() const { return maColor; } + void SetColor(const Color& rColor) { maColor = rColor; } + + const model::ComplexColor& getComplexColor() const + { + return maComplexColor; + } + + void setComplexColor(model::ComplexColor const& rComplexColor) + { + maComplexColor = rComplexColor; + } }; // class SvxUnderlineItem ------------------------------------------------ @@ -97,6 +109,4 @@ public: virtual OUString GetValueTextByPos( sal_uInt16 nPos ) const override; }; -#endif // INCLUDED_EDITENG_UDLNITEM_HXX - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/include/svx/frmsel.hxx b/include/svx/frmsel.hxx index 498b4857c352..9264a36d8f2a 100644 --- a/include/svx/frmsel.hxx +++ b/include/svx/frmsel.hxx @@ -151,7 +151,7 @@ public: /** Sets the passed line widths to all selected frame borders (in twips). */ void SetStyleToSelection( tools::Long nWidth, SvxBorderLineStyle nStyle ); /** Sets the passed color to all selected frame borders. */ - void SetColorToSelection( const Color& rColor ); + void SetColorToSelection(const Color& rColor, model::ComplexColor const& rComplexColor); SvxBorderLineStyle getCurrentStyleLineStyle() const; diff --git a/svx/source/dialog/frmsel.cxx b/svx/source/dialog/frmsel.cxx index fed0d59d0d6d..31dce82e0a84 100644 --- a/svx/source/dialog/frmsel.cxx +++ b/svx/source/dialog/frmsel.cxx @@ -1025,9 +1025,11 @@ void FrameSelector::SetStyleToSelection( tools::Long nWidth, SvxBorderLineStyle mxImpl->SetBorderState( **aIt, FrameBorderState::Show ); } -void FrameSelector::SetColorToSelection( const Color& rColor ) +void FrameSelector::SetColorToSelection(const Color& rColor, model::ComplexColor const& rComplexColor) { - mxImpl->maCurrStyle.SetColor( rColor ); + mxImpl->maCurrStyle.SetColor(rColor); + mxImpl->maCurrStyle.setComplexColor(rComplexColor); + for( SelFrameBorderIter aIt( mxImpl->maEnabBorders ); aIt.Is(); ++aIt ) mxImpl->SetBorderState( **aIt, FrameBorderState::Show ); } diff --git a/svx/source/unodraw/unobrushitemhelper.cxx b/svx/source/unodraw/unobrushitemhelper.cxx index 65d80cf282ca..ff475e8b7077 100644 --- a/svx/source/unodraw/unobrushitemhelper.cxx +++ b/svx/source/unodraw/unobrushitemhelper.cxx @@ -124,7 +124,9 @@ void setSvxBrushItemAsFillAttributesToTargetSet(const SvxBrushItem& rBrush, SfxI const Color aColor(rBrush.GetColor().GetRGBColor()); rToSet.Put(XFillStyleItem(drawing::FillStyle_SOLID)); - rToSet.Put(XFillColorItem(OUString(), aColor)); + XFillColorItem aFillColorItem(OUString(), aColor); + aFillColorItem.setComplexColor(rBrush.getComplexColor()); + rToSet.Put(aFillColorItem); // #125189# nTransparency is in range [0..254], convert to [0..100] which is used in // XFillTransparenceItem (caution with the range which is in an *item-specific* range) @@ -141,10 +143,11 @@ void setSvxBrushItemAsFillAttributesToTargetSet(const SvxBrushItem& rBrush, SfxI // is needed when e.g. first transparency is set to 0xff and then a Graphic gets set. // When not changing the FillStyle, the next getSvxBrushItemFromSourceSet *will* return // to drawing::FillStyle_SOLID with the rescued color. - const Color aColor(rBrush.GetColor().GetRGBColor()); + const Color aColor = rBrush.GetColor().GetRGBColor(); rToSet.Put(XFillStyleItem(drawing::FillStyle_NONE)); - rToSet.Put(XFillColorItem(OUString(), aColor)); + XFillColorItem aFillColorItem(OUString(), aColor); + rToSet.Put(aFillColorItem); } } @@ -169,7 +172,9 @@ static sal_uInt16 getTransparenceForSvxBrushItem(const SfxItemSet& rSourceSet, b static std::unique_ptr<SvxBrushItem> getSvxBrushItemForSolid(const SfxItemSet& rSourceSet, bool bSearchInParents, sal_uInt16 nBackgroundID) { - Color aFillColor(rSourceSet.Get(XATTR_FILLCOLOR, bSearchInParents).GetColorValue()); + auto const& rFillColorItem = rSourceSet.Get(XATTR_FILLCOLOR, bSearchInParents); + model::ComplexColor aFillComplexColor = rFillColorItem.getComplexColor(); + Color aFillColor = rFillColorItem.GetColorValue(); // get evtl. mixed transparence const sal_uInt16 nFillTransparence(getTransparenceForSvxBrushItem(rSourceSet, bSearchInParents)); @@ -184,7 +189,7 @@ static std::unique_ptr<SvxBrushItem> getSvxBrushItemForSolid(const SfxItemSet& r aFillColor.SetAlpha(255 - aTargetTrans); } - return std::make_unique<SvxBrushItem>(aFillColor, nBackgroundID); + return std::make_unique<SvxBrushItem>(aFillColor, aFillComplexColor, nBackgroundID); } std::unique_ptr<SvxBrushItem> getSvxBrushItemFromSourceSet(const SfxItemSet& rSourceSet, sal_uInt16 nBackgroundID, bool bSearchInParents, bool bXMLImportHack) diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx index dc30938eff21..58e21ddc3523 100644 --- a/sw/inc/unoprnms.hxx +++ b/sw/inc/unoprnms.hxx @@ -121,6 +121,8 @@ inline constexpr OUStringLiteral UNO_NAME_CHAR_HEIGHT_COMPLEX = u"CharHeightComp inline constexpr OUStringLiteral UNO_NAME_CHAR_LOCALE_COMPLEX = u"CharLocaleComplex"; inline constexpr OUStringLiteral UNO_NAME_CHAR_AUTO_KERNING = u"CharAutoKerning"; inline constexpr OUStringLiteral UNO_NAME_CHAR_UNDERLINE_COLOR = u"CharUnderlineColor"; +inline constexpr OUStringLiteral UNO_NAME_CHAR_UNDERLINE_COMPLEX_COLOR + = u"CharUnderlineComplexColor"; inline constexpr OUStringLiteral UNO_NAME_CHAR_UNDERLINE_HAS_COLOR = u"CharUnderlineHasColor"; inline constexpr OUStringLiteral UNO_NAME_CHAR_ESCAPEMENT = u"CharEscapement"; inline constexpr OUStringLiteral UNO_NAME_CHAR_CASE_MAP = u"CharCaseMap"; @@ -146,6 +148,8 @@ inline constexpr OUStringLiteral UNO_NAME_TOC_PARAGRAPH_OUTLINE_LEVEL = u"TOCPar inline constexpr OUStringLiteral UNO_NAME_CHAR_FLASH = u"CharFlash"; inline constexpr OUStringLiteral UNO_NAME_CHAR_KERNING = u"CharKerning"; inline constexpr OUStringLiteral UNO_NAME_CHAR_BACK_COLOR = u"CharBackColor"; +inline constexpr OUStringLiteral UNO_NAME_CHAR_BACKGROUND_COMPLEX_COLOR + = u"CharBackgroundComplexColor"; inline constexpr OUStringLiteral UNO_NAME_CHAR_BACK_TRANSPARENT = u"CharBackTransparent"; inline constexpr OUStringLiteral UNO_NAME_CHAR_COMBINE_IS_ON = u"CharCombineIsOn"; inline constexpr OUStringLiteral UNO_NAME_CHAR_COMBINE_PREFIX = u"CharCombinePrefix"; @@ -192,7 +196,10 @@ inline constexpr OUStringLiteral UNO_NAME_PARA_LINE_NUMBER_COUNT = u"ParaLineNum inline constexpr OUStringLiteral UNO_NAME_PARA_LINE_NUMBER_START_VALUE = u"ParaLineNumberStartValue"; inline constexpr OUStringLiteral UNO_NAME_BACK_COLOR = u"BackColor"; +inline constexpr OUStringLiteral UNO_NAME_BACKGROUND_COMPLEX_COLOR = u"BackgroundComplexColor"; inline constexpr OUStringLiteral UNO_NAME_PARA_BACK_COLOR = u"ParaBackColor"; +inline constexpr OUStringLiteral UNO_NAME_PARA_BACKGROUND_COMPLEX_COLOR + = u"ParaBackgroundComplexColor"; inline constexpr OUStringLiteral UNO_NAME_PARA_WIDOWS = u"ParaWidows"; inline constexpr OUStringLiteral UNO_NAME_PARA_ORPHANS = u"ParaOrphans"; inline constexpr OUStringLiteral UNO_NAME_PARA_BACK_TRANSPARENT = u"ParaBackTransparent"; @@ -377,6 +384,10 @@ inline constexpr OUStringLiteral UNO_NAME_LEFT_BORDER_DISTANCE = u"LeftBorderDis inline constexpr OUStringLiteral UNO_NAME_RIGHT_BORDER_DISTANCE = u"RightBorderDistance"; inline constexpr OUStringLiteral UNO_NAME_TOP_BORDER_DISTANCE = u"TopBorderDistance"; inline constexpr OUStringLiteral UNO_NAME_BOTTOM_BORDER_DISTANCE = u"BottomBorderDistance"; +inline constexpr OUStringLiteral UNO_NAME_BORDER_BOTTOM_COMPLEX_COLOR = u"BottomBorderComplexColor"; +inline constexpr OUStringLiteral UNO_NAME_BORDER_LEFT_COMPLEX_COLOR = u"LeftBorderComplexColor"; +inline constexpr OUStringLiteral UNO_NAME_BORDER_RIGHT_COMPLEX_COLOR = u"RightBorderComplexColor"; +inline constexpr OUStringLiteral UNO_NAME_BORDER_TOP_COMPLEX_COLOR = u"TopBorderComplexColor"; inline constexpr OUStringLiteral UNO_NAME_TABLE_BORDER = u"TableBorder"; inline constexpr OUStringLiteral UNO_NAME_TABLE_COLUMN_SEPARATORS = u"TableColumnSeparators"; inline constexpr OUStringLiteral UNO_NAME_TABLE_COLUMN_RELATIVE_SUM = u"TableColumnRelativeSum"; @@ -835,6 +846,7 @@ inline constexpr OUStringLiteral UNO_NAME_PARA_LIST_LABEL_STRING = u"ListLabelSt inline constexpr OUStringLiteral UNO_NAME_PARA_LIST_AUTO_FORMAT = u"ListAutoFormat"; inline constexpr OUStringLiteral UNO_NAME_CHAR_OVERLINE = u"CharOverline"; inline constexpr OUStringLiteral UNO_NAME_CHAR_OVERLINE_COLOR = u"CharOverlineColor"; +inline constexpr OUStringLiteral UNO_NAME_CHAR_OVERLINE_COMPLEX_COLOR = u"CharOverlineComplexColor"; inline constexpr OUStringLiteral UNO_NAME_CHAR_OVERLINE_HAS_COLOR = u"CharOverlineHasColor"; inline constexpr OUStringLiteral UNO_NAME_OUTLINE_CONTENT_VISIBLE = u"OutlineContentVisible"; inline constexpr OUStringLiteral UNO_NAME_OUTLINE_LEVEL = u"OutlineLevel"; @@ -876,6 +888,14 @@ inline constexpr OUStringLiteral UNO_NAME_CHAR_LEFT_BORDER_DISTANCE = u"CharLeft inline constexpr OUStringLiteral UNO_NAME_CHAR_RIGHT_BORDER_DISTANCE = u"CharRightBorderDistance"; inline constexpr OUStringLiteral UNO_NAME_CHAR_TOP_BORDER_DISTANCE = u"CharTopBorderDistance"; inline constexpr OUStringLiteral UNO_NAME_CHAR_BOTTOM_BORDER_DISTANCE = u"CharBottomBorderDistance"; +inline constexpr OUStringLiteral UNO_NAME_CHAR_BORDER_LEFT_COMPLEX_COLOR + = u"CharLeftBorderComplexColor"; +inline constexpr OUStringLiteral UNO_NAME_CHAR_BORDER_RIGHT_COMPLEX_COLOR + = u"CharRightBorderComplexColor"; +inline constexpr OUStringLiteral UNO_NAME_CHAR_BORDER_TOP_COMPLEX_COLOR + = u"CharTopBorderComplexColor"; +inline constexpr OUStringLiteral UNO_NAME_CHAR_BORDER_BOTTOM_COMPLEX_COLOR + = u"CharBottomBorderComplexColor"; inline constexpr OUStringLiteral UNO_NAME_CHAR_SHADOW_FORMAT = u"CharShadowFormat"; inline constexpr OUStringLiteral UNO_NAME_SHADOW_TRANSPARENCE = u"ShadowTransparence"; inline constexpr OUStringLiteral UNO_NAME_DOC_INTEROP_GRAB_BAG = u"InteropGrabBag"; diff --git a/sw/source/core/docnode/ndtbl1.cxx b/sw/source/core/docnode/ndtbl1.cxx index 7fa9dd53e2d9..49b93463a429 100644 --- a/sw/source/core/docnode/ndtbl1.cxx +++ b/sw/source/core/docnode/ndtbl1.cxx @@ -1012,10 +1012,10 @@ void SwDoc::SetTabLineStyle( const SwCursor& rCursor, SwFrameFormat *pFormat = pCell->GetFormat(); std::unique_ptr<SvxBoxItem> aBox(pFormat->GetBox().Clone()); - SvxBorderLine* pTop = const_cast<SvxBorderLine*>(aBox->GetTop()); - SvxBorderLine* pBot = const_cast<SvxBorderLine*>(aBox->GetBottom()); - SvxBorderLine* pLeft = const_cast<SvxBorderLine*>(aBox->GetLeft()); - SvxBorderLine* pRight = const_cast<SvxBorderLine*>(aBox->GetRight()); + SvxBorderLine* pTop = aBox->GetTop(); + SvxBorderLine* pBot = aBox->GetBottom(); + SvxBorderLine* pLeft = aBox->GetLeft(); + SvxBorderLine* pRight = aBox->GetRight(); if ( !pBorderLine && bSetLine ) { diff --git a/sw/source/core/model/ThemeColorChanger.cxx b/sw/source/core/model/ThemeColorChanger.cxx index 4edf802f3309..fb3175e929cf 100644 --- a/sw/source/core/model/ThemeColorChanger.cxx +++ b/sw/source/core/model/ThemeColorChanger.cxx @@ -18,17 +18,22 @@ #include <ndtxt.hxx> #include <format.hxx> #include <charatr.hxx> +#include <paratr.hxx> +#include <frmatr.hxx> #include <DocumentContentOperationsManager.hxx> #include <IDocumentDrawModelAccess.hxx> #include <IDocumentUndoRedo.hxx> #include <UndoThemeChange.hxx> +#include <svx/xflclit.hxx> + #include <sal/config.h> #include <svx/svdpage.hxx> #include <svx/svditer.hxx> #include <docmodel/uno/UnoComplexColor.hxx> #include <docmodel/theme/Theme.hxx> #include <editeng/unoprnms.hxx> +#include <editeng/boxitem.hxx> #include <com/sun/star/text/XTextRange.hpp> #include <com/sun/star/container/XEnumerationAccess.hpp> #include <com/sun/star/container/XEnumeration.hpp> @@ -38,6 +43,25 @@ namespace sw { namespace { +bool changeBorderLine(editeng::SvxBorderLine* pBorderLine, model::ColorSet const& rColorSet) +{ + if (!pBorderLine) + return false; + + model::ComplexColor const& rComplexColor = pBorderLine->getComplexColor(); + if (rComplexColor.meType == model::ColorType::Scheme) + { + auto eThemeType = rComplexColor.meSchemeType; + if (eThemeType != model::ThemeColorType::Unknown) + { + Color aColor = rColorSet.resolveColor(rComplexColor); + pBorderLine->SetColor(aColor); + return true; + } + } + return false; +} + /** Handler for ModelTraverser that recalculates and updates the theme colors. * * It checks all the SdrObjects and updates fill, line and text theme colors. @@ -67,6 +91,7 @@ public: for (size_t i = 0; i < rHints.Count(); ++i) { const SwTextAttr* pTextAttr = rHints.Get(i); + SwPaM aPam(*pTextNode, pTextAttr->GetStart(), *pTextNode, pTextAttr->GetAnyEnd()); if (pTextAttr->Which() == RES_TXTATR_AUTOFMT) { SwFormatAutoFormat const& rAutoFormatPool(pTextAttr->GetAutoFormat()); @@ -81,9 +106,36 @@ public: auto pNew = pItem->Clone(); pNew->SetValue(aNewColor); - SwPaM aPam(*pTextNode, pTextAttr->GetStart(), *pTextNode, - pTextAttr->GetAnyEnd()); - mrDocument.GetDocumentContentOperationsManager().InsertPoolItem( + mrDocument.getIDocumentContentOperations().InsertPoolItem( + aPam, *pNew, SetAttrMode::APICALL | SetAttrMode::NO_CURSOR_CHANGE); + } + } + if (const SvxUnderlineItem* pItem + = pStyleHandle->GetItemIfSet(RES_CHRATR_UNDERLINE)) + { + model::ComplexColor const& rComplexColor = pItem->getComplexColor(); + auto eSchemeType = rComplexColor.meSchemeType; + if (eSchemeType != model::ThemeColorType::Unknown) + { + Color aNewColor = mrColorSet.resolveColor(rComplexColor); + auto pNew = pItem->Clone(); + pNew->SetColor(aNewColor); + + mrDocument.getIDocumentContentOperations().InsertPoolItem( + aPam, *pNew, SetAttrMode::APICALL | SetAttrMode::NO_CURSOR_CHANGE); + } + } + if (const SvxOverlineItem* pItem = pStyleHandle->GetItemIfSet(RES_CHRATR_OVERLINE)) + { + model::ComplexColor const& rComplexColor = pItem->getComplexColor(); + auto eSchemeType = rComplexColor.meSchemeType; + if (eSchemeType != model::ThemeColorType::Unknown) + { + Color aNewColor = mrColorSet.resolveColor(rComplexColor); + auto pNew = pItem->Clone(); + pNew->SetColor(aNewColor); + + mrDocument.getIDocumentContentOperations().InsertPoolItem( aPam, *pNew, SetAttrMode::APICALL | SetAttrMode::NO_CURSOR_CHANGE); } } @@ -91,12 +143,102 @@ public: } } + void updateParagraphAttibutes(SwTextNode* pTextNode) + { + if (!pTextNode->HasSwAttrSet()) + return; + + SwAttrSet const& aAttrSet = pTextNode->GetSwAttrSet(); + + if (const SvxColorItem* pItem = aAttrSet.GetItemIfSet(RES_CHRATR_COLOR, false)) + { + model::ComplexColor const& rComplexColor = pItem->getComplexColor(); + if (rComplexColor.meType == model::ColorType::Scheme) + { + auto eSchemeType = rComplexColor.meSchemeType; + if (eSchemeType != model::ThemeColorType::Unknown) + { + Color aNewColor = mrColorSet.resolveColor(rComplexColor); + std::unique_ptr<SvxColorItem> pNewItem(pItem->Clone()); + pNewItem->setColor(aNewColor); + pTextNode->SetAttr(*pNewItem); + } + } + } + + if (const SvxUnderlineItem* pItem = aAttrSet.GetItemIfSet(RES_CHRATR_UNDERLINE, false)) + { + model::ComplexColor const& rComplexColor = pItem->getComplexColor(); + if (rComplexColor.meType == model::ColorType::Scheme) + { + auto eSchemeType = rComplexColor.meSchemeType; + if (eSchemeType != model::ThemeColorType::Unknown) + { + Color aNewColor = mrColorSet.resolveColor(rComplexColor); + std::unique_ptr<SvxUnderlineItem> pNewItem(pItem->Clone()); + pNewItem->SetColor(aNewColor); + pTextNode->SetAttr(*pNewItem); + } + } + } + + if (const SvxOverlineItem* pItem = aAttrSet.GetItemIfSet(RES_CHRATR_OVERLINE, false)) + { + model::ComplexColor const& rComplexColor = pItem->getComplexColor(); + if (rComplexColor.meType == model::ColorType::Scheme) + { + auto eSchemeType = rComplexColor.meSchemeType; + if (eSchemeType != model::ThemeColorType::Unknown) + { + Color aNewColor = mrColorSet.resolveColor(rComplexColor); + std::unique_ptr<SvxOverlineItem> pNewItem(pItem->Clone()); + pNewItem->SetColor(aNewColor); + pTextNode->SetAttr(*pNewItem); + } + } + } + + if (const XFillColorItem* pItem = aAttrSet.GetItemIfSet(XATTR_FILLCOLOR, false)) + { + model::ComplexColor const& rComplexColor = pItem->getComplexColor(); + if (rComplexColor.meType == model::ColorType::Scheme) + { + auto eSchemeType = rComplexColor.meSchemeType; + if (eSchemeType != model::ThemeColorType::Unknown) + { + Color aNewColor = mrColorSet.resolveColor(rComplexColor); + std::unique_ptr<XFillColorItem> pNewItem(pItem->Clone()); + pNewItem->SetColorValue(aNewColor); + pTextNode->SetAttr(*pNewItem); + } + } + } + + if (const SvxBoxItem* pItem = aAttrSet.GetItemIfSet(RES_BOX, false)) + { + std::unique_ptr<SvxBoxItem> pNewItem(pItem->Clone()); + + bool bChanged = false; + + bChanged = changeBorderLine(pNewItem->GetBottom(), mrColorSet) || bChanged; + bChanged = changeBorderLine(pNewItem->GetTop(), mrColorSet) || bChanged; + bChanged = changeBorderLine(pNewItem->GetLeft(), mrColorSet) || bChanged; + bChanged = changeBorderLine(pNewItem->GetRight(), mrColorSet) || bChanged; + + if (bChanged) + { + pTextNode->SetAttr(*pNewItem); + } + } + } + void handleNode(SwNode* pNode) override { if (!pNode->IsTextNode()) return; updateHints(pNode->GetTextNode()); + updateParagraphAttibutes(pNode->GetTextNode()); } void handleSdrObject(SdrObject* pObject) override @@ -117,24 +259,81 @@ public: } }; -void changeColor(SwFormat* pFormat, model::ColorSet const& rColorSet, SwDoc* pDocument) +bool changeOverlineColor(SwAttrSet const& rSet, SfxItemSet& rNewSet, + model::ColorSet const& rColorSet) { - const SwAttrSet& rAttrSet = pFormat->GetAttrSet(); - std::unique_ptr<SfxItemSet> pNewSet = rAttrSet.Clone(); + SvxOverlineItem aItem(rSet.Get(RES_CHRATR_OVERLINE, false)); + model::ComplexColor const& rComplexColor = aItem.getComplexColor(); + if (rComplexColor.meType != model::ColorType::Scheme) + return false; + auto eThemeType = rComplexColor.meSchemeType; + if (eThemeType == model::ThemeColorType::Unknown) + return false; + Color aColor = rColorSet.resolveColor(rComplexColor); + aItem.SetColor(aColor); + rNewSet.Put(aItem); + return true; +} + +bool changeUnderlineColor(SwAttrSet const& rSet, SfxItemSet& rNewSet, + model::ColorSet const& rColorSet) +{ + SvxUnderlineItem aItem(rSet.Get(RES_CHRATR_UNDERLINE, false)); + model::ComplexColor const& rComplexColor = aItem.getComplexColor(); + if (rComplexColor.meType != model::ColorType::Scheme) + return false; + auto eThemeType = rComplexColor.meSchemeType; + if (eThemeType == model::ThemeColorType::Unknown) + return false; + Color aColor = rColorSet.resolveColor(rComplexColor); + aItem.SetColor(aColor); + rNewSet.Put(aItem); + return true; +} - SvxColorItem aColorItem(rAttrSet.GetColor()); +bool changeColor(SwAttrSet const& rSet, SfxItemSet& rNewSet, model::ColorSet const& rColorSet) +{ + SvxColorItem aColorItem(rSet.GetColor(false)); model::ComplexColor const& rComplexColor = aColorItem.getComplexColor(); if (rComplexColor.meType != model::ColorType::Scheme) - return; + return false; auto eThemeType = rComplexColor.meSchemeType; - if (eThemeType != model::ThemeColorType::Unknown) - { - Color aColor = rColorSet.getColor(eThemeType); - aColor = rComplexColor.applyTransformations(aColor); - aColorItem.SetValue(aColor); - pNewSet->Put(aColorItem); - pDocument->ChgFormat(*pFormat, *pNewSet); - } + if (eThemeType == model::ThemeColorType::Unknown) + return false; + Color aColor = rColorSet.resolveColor(rComplexColor); + aColorItem.SetValue(aColor); + rNewSet.Put(aColorItem); + return true; +} + +bool changeBackground(SwAttrSet const& rSet, SfxItemSet& rNewSet, model::ColorSet const& rColorSet) +{ + XFillColorItem aFillItem(rSet.Get(XATTR_FILLCOLOR, false)); + model::ComplexColor const& rComplexColor = aFillItem.getComplexColor(); + if (rComplexColor.meType != model::ColorType::Scheme) + return false; + auto eThemeType = rComplexColor.getSchemeType(); + if (eThemeType == model::ThemeColorType::Unknown) + return false; + Color aColor = rColorSet.resolveColor(rComplexColor); + aFillItem.SetColorValue(aColor); + rNewSet.Put(aFillItem); + return true; +} + +bool changeBox(SwAttrSet const& rSet, SfxItemSet& rNewSet, model::ColorSet const& rColorSet) +{ + SvxBoxItem aBoxItem(rSet.GetBox(false)); + bool bChange = false; + + bChange = changeBorderLine(aBoxItem.GetBottom(), rColorSet) || bChange; + bChange = changeBorderLine(aBoxItem.GetTop(), rColorSet) || bChange; + bChange = changeBorderLine(aBoxItem.GetLeft(), rColorSet) || bChange; + bChange = changeBorderLine(aBoxItem.GetRight(), rColorSet) || bChange; + + if (bChange) + rNewSet.Put(aBoxItem); + return bChange; } } // end anonymous namespace @@ -171,16 +370,68 @@ void ThemeColorChanger::apply(model::ColorSet const& rColorSet) = std::make_unique<sw::UndoThemeChange>(*pDocument, pOldColorSet, pNewColorSet); pDocument->GetIDocumentUndoRedo().AppendUndo(std::move(pUndoThemeChange)); + // Page styles + for (size_t nIndex = 0; nIndex < pDocument->GetPageDescCnt(); ++nIndex) + { + auto& rPageDesc = pDocument->GetPageDesc(nIndex); + SwFrameFormat& rPageFormat = rPageDesc.GetMaster(); + const SwAttrSet& rAttrSet = rPageFormat.GetAttrSet(); + std::unique_ptr<SfxItemSet> pNewSet = rAttrSet.Clone(); + + bool bChanged = false; + bChanged = bChanged || changeBackground(rAttrSet, *pNewSet, rColorSet); + bChanged = bChanged || changeBox(rAttrSet, *pNewSet, rColorSet); + + if (bChanged) + { + rPageFormat.SetFormatAttr(*pNewSet); + pDocument->ChgPageDesc(nIndex, rPageDesc); + } + } + SfxStyleSheetBasePool* pPool = mpDocSh->GetStyleSheetPool(); SwDocStyleSheet* pStyle; + // Frame style color change + pStyle = static_cast<SwDocStyleSheet*>(pPool->First(SfxStyleFamily::Frame)); + while (pStyle) + { + SwFrameFormat* pFrameFormat = pStyle->GetFrameFormat(); + if (pFrameFormat) + { + const SwAttrSet& rAttrSet = pFrameFormat->GetAttrSet(); + std::unique_ptr<SfxItemSet> pNewSet = rAttrSet.Clone(); + + bool bChanged = false; + bChanged = changeBackground(rAttrSet, *pNewSet, rColorSet) || bChanged; + bChanged = changeBox(rAttrSet, *pNewSet, rColorSet) || bChanged; + + if (bChanged) + pDocument->ChgFormat(*pFrameFormat, *pNewSet); + } + pStyle = static_cast<SwDocStyleSheet*>(pPool->Next()); + } + // Paragraph style color change pStyle = static_cast<SwDocStyleSheet*>(pPool->First(SfxStyleFamily::Para)); while (pStyle) { SwTextFormatColl* pTextFormatCollection = pStyle->GetCollection(); if (pTextFormatCollection) - changeColor(pTextFormatCollection, rColorSet, pDocument); + { + const SwAttrSet& rAttrSet = pTextFormatCollection->GetAttrSet(); + std::unique_ptr<SfxItemSet> pNewSet = rAttrSet.Clone(); + + bool bChanged = false; + bChanged = changeColor(rAttrSet, *pNewSet, rColorSet) || bChanged; + bChanged = changeOverlineColor(rAttrSet, *pNewSet, rColorSet) || bChanged; + bChanged = changeUnderlineColor(rAttrSet, *pNewSet, rColorSet) || bChanged; + bChanged = changeBox(rAttrSet, *pNewSet, rColorSet) || bChanged; + bChanged = changeBackground(rAttrSet, *pNewSet, rColorSet) || bChanged; + + if (bChanged) + pDocument->ChgFormat(*pTextFormatCollection, *pNewSet); + } pStyle = static_cast<SwDocStyleSheet*>(pPool->Next()); } @@ -190,7 +441,17 @@ void ThemeColorChanger::apply(model::ColorSet const& rColorSet) { SwCharFormat* pCharFormat = pStyle->GetCharFormat(); if (pCharFormat) - changeColor(pCharFormat, rColorSet, pDocument); + { + const SwAttrSet& rAttrSet = pCharFormat->GetAttrSet(); + std::unique_ptr<SfxItemSet> pNewSet = rAttrSet.Clone(); + + bool bChanged = false; + bChanged = changeColor(rAttrSet, *pNewSet, rColorSet) || bChanged; + bChanged = changeOverlineColor(rAttrSet, *pNewSet, rColorSet) || bChanged; + bChanged = changeUnderlineColor(rAttrSet, *pNewSet, rColorSet) || bChanged; + if (bChanged) + pDocument->ChgFormat(*pCharFormat, *pNewSet); + } pStyle = static_cast<SwDocStyleSheet*>(pPool->Next()); } diff --git a/sw/source/core/unocore/unomap.cxx b/sw/source/core/unocore/unomap.cxx index ce1321006c1e..ea8bb59f5cdd 100644 --- a/sw/source/core/unocore/unomap.cxx +++ b/sw/source/core/unocore/unomap.cxx @@ -162,6 +162,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM static SfxItemPropertyMapEntry const aCellMap_Impl[] = { { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE , MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_GRAPHIC_URL, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_URL }, { UNO_NAME_BACK_GRAPHIC, RES_BACKGROUND, cppu::UnoType<graphic::XGraphic>::get(), PROPERTY_NONE, MID_GRAPHIC }, { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, @@ -177,6 +178,10 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM { UNO_NAME_RIGHT_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, RIGHT_BORDER_DISTANCE |CONVERT_TWIPS }, { UNO_NAME_TOP_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, TOP_BORDER_DISTANCE |CONVERT_TWIPS }, { UNO_NAME_BOTTOM_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, BOTTOM_BORDER_DISTANCE|CONVERT_TWIPS }, + { UNO_NAME_BORDER_LEFT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_LEFT_COLOR }, + { UNO_NAME_BORDER_RIGHT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_RIGHT_COLOR }, + { UNO_NAME_BORDER_TOP_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_TOP_COLOR }, + { UNO_NAME_BORDER_BOTTOM_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_BOTTOM_COLOR }, { UNO_NAME_USER_DEFINED_ATTRIBUTES, RES_UNKNOWNATR_CONTAINER, cppu::UnoType<css::container::XNameContainer>::get(), PropertyAttribute::MAYBEVOID, 0 }, { UNO_NAME_TEXT_SECTION, FN_UNO_TEXT_SECTION, cppu::UnoType<css::text::XTextSection>::get(), PropertyAttribute::MAYBEVOID|PropertyAttribute::READONLY ,0 }, { UNO_NAME_IS_PROTECTED, RES_PROTECT, cppu::UnoType<bool>::get(), 0, MID_PROTECT_CONTENT}, @@ -357,7 +362,8 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM { UNO_NAME_BACK_GRAPHIC, RES_BACKGROUND, cppu::UnoType<graphic::XGraphic>::get(), PROPERTY_NONE, MID_GRAPHIC }, { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, { UNO_NAME_BACK_GRAPHIC_LOCATION, RES_BACKGROUND, cppu::UnoType<css::style::GraphicLocation>::get(), PROPERTY_NONE ,MID_GRAPHIC_POSITION}, - { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_TRANSPARENT, RES_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT }, { UNO_NAME_PARA_STYLEHEADING, WID_PARA_HEAD, cppu::UnoType<OUString>::get() , 0, 0}, { UNO_NAME_PARA_STYLESEPARATOR, WID_PARA_SEP, cppu::UnoType<OUString>::get() , 0, 0}, @@ -397,6 +403,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, { UNO_NAME_BACK_GRAPHIC_LOCATION, RES_BACKGROUND, cppu::UnoType<css::style::GraphicLocation>::get(), PROPERTY_NONE ,MID_GRAPHIC_POSITION}, { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE ,MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_TRANSPARENT, RES_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT }, { UNO_NAME_PARA_STYLEHEADING, WID_PARA_HEAD, cppu::UnoType<OUString>::get() , 0, 0}, { UNO_NAME_PARA_STYLELEVEL1, WID_PARA_LEV1, cppu::UnoType<OUString>::get() , 0, 0}, @@ -442,6 +449,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, { UNO_NAME_BACK_GRAPHIC_LOCATION, RES_BACKGROUND, cppu::UnoType<css::style::GraphicLocation>::get(), PROPERTY_NONE ,MID_GRAPHIC_POSITION}, { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE ,MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_TRANSPARENT, RES_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT }, { UNO_NAME_PARA_STYLEHEADING, WID_PARA_HEAD, cppu::UnoType<OUString>::get() , 0, 0}, { UNO_NAME_PARA_STYLELEVEL1, WID_PARA_LEV1, cppu::UnoType<OUString>::get() , 0, 0}, @@ -479,6 +487,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, { UNO_NAME_BACK_GRAPHIC_LOCATION, RES_BACKGROUND, cppu::UnoType<css::style::GraphicLocation>::get(), PROPERTY_NONE ,MID_GRAPHIC_POSITION}, { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_TRANSPARENT, RES_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT }, { UNO_NAME_PARA_STYLEHEADING, WID_PARA_HEAD, cppu::UnoType<OUString>::get() , 0, 0}, { UNO_NAME_PARA_STYLELEVEL1, WID_PARA_LEV1, cppu::UnoType<OUString>::get() , 0, 0}, @@ -508,6 +517,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, { UNO_NAME_BACK_GRAPHIC_LOCATION, RES_BACKGROUND, cppu::UnoType<css::style::GraphicLocation>::get(), PROPERTY_NONE ,MID_GRAPHIC_POSITION}, { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_TRANSPARENT, RES_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT }, { UNO_NAME_PARA_STYLEHEADING, WID_PARA_HEAD, cppu::UnoType<OUString>::get() , 0, 0}, { UNO_NAME_PARA_STYLELEVEL1, WID_PARA_LEV1, cppu::UnoType<OUString>::get() , 0, 0}, @@ -535,6 +545,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, { UNO_NAME_BACK_GRAPHIC_LOCATION, RES_BACKGROUND, cppu::UnoType<css::style::GraphicLocation>::get(), PROPERTY_NONE ,MID_GRAPHIC_POSITION}, { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_TRANSPARENT, RES_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT }, { UNO_NAME_PARA_STYLEHEADING, WID_PARA_HEAD, cppu::UnoType<OUString>::get() , 0, 0}, { UNO_NAME_PARA_STYLELEVEL1, WID_PARA_LEV1, cppu::UnoType<OUString>::get() , 0, 0}, @@ -548,6 +559,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM static SfxItemPropertyMapEntry const aTableRowPropertyMap_Impl[] = { { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_GRAPHIC_URL, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_URL }, { UNO_NAME_BACK_GRAPHIC, RES_BACKGROUND, cppu::UnoType<graphic::XGraphic>::get(), PROPERTY_NONE, MID_GRAPHIC }, { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, @@ -603,6 +615,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, { UNO_NAME_BACK_GRAPHIC_LOCATION, RES_BACKGROUND, cppu::UnoType<css::style::GraphicLocation>::get(), PROPERTY_NONE ,MID_GRAPHIC_POSITION}, { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_TRANSPARENT, RES_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT }, { UNO_NAME_PARA_STYLEHEADING, WID_PARA_HEAD, cppu::UnoType<OUString>::get() , 0, 0}, { UNO_NAME_PARA_STYLELEVEL1, WID_PARA_LEV1, cppu::UnoType<OUString>::get() , 0, 0}, @@ -1447,7 +1460,8 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM static SfxItemPropertyMapEntry const aCellStyleMap[] = { // SvxBrushItem - { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, 0 }, + { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR }, // SvxBoxItem { UNO_NAME_LEFT_BORDER, RES_BOX, cppu::UnoType<css::table::BorderLine>::get(), PROPERTY_NONE, LEFT_BORDER|CONVERT_TWIPS }, { UNO_NAME_RIGHT_BORDER, RES_BOX, cppu::UnoType<css::table::BorderLine>::get(), PROPERTY_NONE, RIGHT_BORDER|CONVERT_TWIPS }, @@ -1458,6 +1472,10 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM { UNO_NAME_RIGHT_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, RIGHT_BORDER_DISTANCE |CONVERT_TWIPS }, { UNO_NAME_TOP_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, TOP_BORDER_DISTANCE |CONVERT_TWIPS }, { UNO_NAME_BOTTOM_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, BOTTOM_BORDER_DISTANCE|CONVERT_TWIPS }, + { UNO_NAME_BORDER_LEFT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BORDER_LEFT_COLOR }, + { UNO_NAME_BORDER_RIGHT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BORDER_RIGHT_COLOR }, + { UNO_NAME_BORDER_TOP_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BORDER_TOP_COLOR }, + { UNO_NAME_BORDER_BOTTOM_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BORDER_BOTTOM_COLOR }, // SwFormatVertOrient { UNO_NAME_VERT_ORIENT, RES_VERT_ORIENT, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_VERTORIENT_ORIENT }, // SvxFrameDirectionItem @@ -1480,6 +1498,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPropertyM // SvxUnderlineItem { UNO_NAME_CHAR_UNDERLINE, RES_CHRATR_UNDERLINE, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_TL_STYLE }, { UNO_NAME_CHAR_UNDERLINE_COLOR, RES_CHRATR_UNDERLINE,cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_TL_COLOR }, + { UNO_NAME_CHAR_UNDERLINE_COMPLEX_COLOR, RES_CHRATR_UNDERLINE, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_TL_COMPLEX_COLOR }, { UNO_NAME_CHAR_UNDERLINE_HAS_COLOR, RES_CHRATR_UNDERLINE, cppu::UnoType<bool>::get(), PROPERTY_NONE, MID_TL_HASCOLOR }, // standard font // SvxFontHeightItem diff --git a/sw/source/core/unocore/unomap1.cxx b/sw/source/core/unocore/unomap1.cxx index 36ecc6cd7b57..31ad710c2fd5 100644 --- a/sw/source/core/unocore/unomap1.cxx +++ b/sw/source/core/unocore/unomap1.cxx @@ -177,6 +177,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetCharStyle { UNO_NAME_CHAR_AUTO_KERNING, RES_CHRATR_AUTOKERN , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0}, { UNO_NAME_CHAR_BACK_TRANSPARENT, RES_CHRATR_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT }, { UNO_NAME_CHAR_BACK_COLOR, RES_CHRATR_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_CHAR_BACKGROUND_COMPLEX_COLOR, RES_CHRATR_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE ,MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_CHAR_HIGHLIGHT, RES_CHRATR_HIGHLIGHT, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_BACK_COLOR }, { UNO_NAME_CHAR_CASE_MAP, RES_CHRATR_CASEMAP, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, 0}, { UNO_NAME_CHAR_COLOR, RES_CHRATR_COLOR, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, 0 }, @@ -195,9 +196,11 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetCharStyle CTL_FONT_PROPERTIES { UNO_NAME_CHAR_UNDERLINE, RES_CHRATR_UNDERLINE , cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_TL_STYLE}, { UNO_NAME_CHAR_UNDERLINE_COLOR, RES_CHRATR_UNDERLINE , cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_TL_COLOR}, + { UNO_NAME_CHAR_UNDERLINE_COMPLEX_COLOR, RES_CHRATR_UNDERLINE , cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_TL_COMPLEX_COLOR }, { UNO_NAME_CHAR_UNDERLINE_HAS_COLOR, RES_CHRATR_UNDERLINE , cppu::UnoType<bool>::get(), PROPERTY_NONE, MID_TL_HASCOLOR}, { UNO_NAME_CHAR_OVERLINE, RES_CHRATR_OVERLINE , cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_TL_STYLE}, { UNO_NAME_CHAR_OVERLINE_COLOR, RES_CHRATR_OVERLINE , cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_TL_COLOR}, + { UNO_NAME_CHAR_OVERLINE_COMPLEX_COLOR, RES_CHRATR_OVERLINE, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_TL_COMPLEX_COLOR }, { UNO_NAME_CHAR_OVERLINE_HAS_COLOR, RES_CHRATR_OVERLINE , cppu::UnoType<bool>::get(), PROPERTY_NONE, MID_TL_HASCOLOR}, { UNO_NAME_CHAR_KERNING, RES_CHRATR_KERNING , cppu::UnoType<sal_Int16>::get() , PROPERTY_NONE, CONVERT_TWIPS}, { UNO_NAME_CHAR_NO_HYPHENATION, RES_CHRATR_NOHYPHEN , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0}, @@ -227,6 +230,10 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetCharStyle { UNO_NAME_CHAR_RIGHT_BORDER_DISTANCE, RES_CHRATR_BOX, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, RIGHT_BORDER_DISTANCE |CONVERT_TWIPS }, { UNO_NAME_CHAR_TOP_BORDER_DISTANCE, RES_CHRATR_BOX, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, TOP_BORDER_DISTANCE |CONVERT_TWIPS }, { UNO_NAME_CHAR_BOTTOM_BORDER_DISTANCE, RES_CHRATR_BOX, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, BOTTOM_BORDER_DISTANCE|CONVERT_TWIPS }, + { UNO_NAME_CHAR_BORDER_LEFT_COMPLEX_COLOR, RES_CHRATR_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BORDER_LEFT_COLOR }, + { UNO_NAME_CHAR_BORDER_RIGHT_COMPLEX_COLOR, RES_CHRATR_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BORDER_RIGHT_COLOR }, + { UNO_NAME_CHAR_BORDER_TOP_COMPLEX_COLOR, RES_CHRATR_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BORDER_TOP_COLOR }, + { UNO_NAME_CHAR_BORDER_BOTTOM_COMPLEX_COLOR, RES_CHRATR_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BORDER_BOTTOM_COLOR }, { UNO_NAME_CHAR_SHADOW_FORMAT, RES_CHRATR_SHADOW, cppu::UnoType<css::table::ShadowFormat>::get(), PROPERTY_NONE, CONVERT_TWIPS}, { UNO_NAME_LINK_STYLE, FN_UNO_LINK_STYLE, cppu::UnoType<OUString>::get(), PROPERTY_NONE, 0}, }; @@ -242,6 +249,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetAutoChar { UNO_NAME_CHAR_AUTO_KERNING, RES_CHRATR_AUTOKERN , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0}, { UNO_NAME_CHAR_BACK_TRANSPARENT, RES_CHRATR_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT }, { UNO_NAME_CHAR_BACK_COLOR, RES_CHRATR_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_CHAR_BACKGROUND_COMPLEX_COLOR, RES_CHRATR_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_CHAR_HIGHLIGHT, RES_CHRATR_HIGHLIGHT, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_BACK_COLOR }, { UNO_NAME_CHAR_CASE_MAP, RES_CHRATR_CASEMAP, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, 0}, { UNO_NAME_CHAR_COLOR, RES_CHRATR_COLOR, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, 0}, @@ -260,9 +268,11 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetAutoChar CTL_FONT_PROPERTIES { UNO_NAME_CHAR_UNDERLINE, RES_CHRATR_UNDERLINE , cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_TL_STYLE}, { UNO_NAME_CHAR_UNDERLINE_COLOR, RES_CHRATR_UNDERLINE , cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_TL_COLOR}, + { UNO_NAME_CHAR_UNDERLINE_COMPLEX_COLOR, RES_CHRATR_UNDERLINE, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_TL_COMPLEX_COLOR }, { UNO_NAME_CHAR_UNDERLINE_HAS_COLOR, RES_CHRATR_UNDERLINE , cppu::UnoType<bool>::get(), PROPERTY_NONE, MID_TL_HASCOLOR}, { UNO_NAME_CHAR_OVERLINE, RES_CHRATR_OVERLINE , cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_TL_STYLE}, { UNO_NAME_CHAR_OVERLINE_COLOR, RES_CHRATR_OVERLINE , cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_TL_COLOR}, + { UNO_NAME_CHAR_OVERLINE_COMPLEX_COLOR, RES_CHRATR_OVERLINE, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_TL_COMPLEX_COLOR }, { UNO_NAME_CHAR_OVERLINE_HAS_COLOR, RES_CHRATR_OVERLINE , cppu::UnoType<bool>::get(), PROPERTY_NONE, MID_TL_HASCOLOR}, { UNO_NAME_CHAR_KERNING, RES_CHRATR_KERNING , cppu::UnoType<sal_Int16>::get() , PROPERTY_NONE, CONVERT_TWIPS}, { UNO_NAME_CHAR_NO_HYPHENATION, RES_CHRATR_NOHYPHEN , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0}, @@ -339,6 +349,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetFrameStyl { UNO_NAME_ANCHOR_PAGE_NO, RES_ANCHOR, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_ANCHOR_PAGENUM }, { UNO_NAME_ANCHOR_TYPE, RES_ANCHOR, cppu::UnoType<css::text::TextContentAnchorType>::get(), PROPERTY_NONE, MID_ANCHOR_ANCHORTYPE}, { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE ,MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_COLOR_R_G_B, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR_R_G_B}, { UNO_NAME_BACK_COLOR_TRANSPARENCY, RES_BACKGROUND, cppu::UnoType<sal_Int8>::get(), PROPERTY_NONE ,MID_BACK_COLOR_TRANSPARENCY}, { UNO_NAME_FRAME_INTEROP_GRAB_BAG, RES_FRMATR_GRABBAG, cppu::UnoType< cppu::UnoSequenceType<css::beans::PropertyValue> >::get(), PROPERTY_NONE, 0}, @@ -403,6 +414,10 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetFrameStyl { UNO_NAME_RIGHT_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, RIGHT_BORDER_DISTANCE |CONVERT_TWIPS }, { UNO_NAME_TOP_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, TOP_BORDER_DISTANCE |CONVERT_TWIPS }, { UNO_NAME_BOTTOM_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, BOTTOM_BORDER_DISTANCE|CONVERT_TWIPS }, + { UNO_NAME_BORDER_LEFT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_LEFT_COLOR }, + { UNO_NAME_BORDER_RIGHT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_RIGHT_COLOR }, + { UNO_NAME_BORDER_TOP_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_TOP_COLOR }, + { UNO_NAME_BORDER_BOTTOM_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_BOTTOM_COLOR }, { UNO_NAME_USER_DEFINED_ATTRIBUTES, RES_UNKNOWNATR_CONTAINER, cppu::UnoType<css::container::XNameContainer>::get(), PropertyAttribute::MAYBEVOID, 0 }, { UNO_NAME_IS_PHYSICAL, FN_UNO_IS_PHYSICAL, cppu::UnoType<bool>::get(), PropertyAttribute::READONLY, 0}, { UNO_NAME_IS_AUTO_UPDATE, FN_UNO_IS_AUTO_UPDATE, cppu::UnoType<bool>::get(), PROPERTY_NONE, 0}, @@ -431,7 +446,8 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPageStyle { static SfxItemPropertyMapEntry const aPageStyleMap [] = { - { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_GRAPHIC_URL, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_URL }, { UNO_NAME_BACK_GRAPHIC, RES_BACKGROUND, cppu::UnoType<graphic::XGraphic>::get(), PROPERTY_NONE, MID_GRAPHIC }, { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, @@ -449,6 +465,10 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetPageStyle { UNO_NAME_RIGHT_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, RIGHT_BORDER_DISTANCE |CONVERT_TWIPS }, { UNO_NAME_TOP_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, TOP_BORDER_DISTANCE |CONVERT_TWIPS }, { UNO_NAME_BOTTOM_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, BOTTOM_BORDER_DISTANCE|CONVERT_TWIPS }, + { UNO_NAME_BORDER_LEFT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_LEFT_COLOR }, + { UNO_NAME_BORDER_RIGHT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_RIGHT_COLOR }, + { UNO_NAME_BORDER_TOP_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_TOP_COLOR }, + { UNO_NAME_BORDER_BOTTOM_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_BOTTOM_COLOR }, { UNO_NAME_SHADOW_FORMAT, RES_SHADOW, cppu::UnoType<css::table::ShadowFormat>::get(), PROPERTY_NONE, CONVERT_TWIPS}, { UNO_NAME_SHADOW_TRANSPARENCE, RES_SHADOW, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_SHADOW_TRANSPARENCE}, @@ -631,7 +651,8 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetTableProp { static SfxItemPropertyMapEntry const aTablePropertyMap_Impl[] = { - { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE,MID_BACK_COLOR }, + { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE,MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR}, { UNO_NAME_BREAK_TYPE, RES_BREAK, cppu::UnoType<css::style::BreakType>::get(), PROPERTY_NONE, 0}, { UNO_NAME_BACK_GRAPHIC_URL, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_URL }, { UNO_NAME_BACK_GRAPHIC, RES_BACKGROUND, cppu::UnoType<graphic::XGraphic>::get(), PROPERTY_NONE, MID_GRAPHIC }, @@ -684,7 +705,8 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetRangeProp { COMMON_CRSR_PARA_PROPERTIES_WITHOUT_FN_01 TABSTOPS_MAP_ENTRY - { UNO_NAME_BACK_COLOR, FN_UNO_TABLE_CELL_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, MID_BACK_COLOR }, + { UNO_NAME_BACK_COLOR, FN_UNO_TABLE_CELL_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, FN_UNO_TABLE_CELL_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_GRAPHIC_URL, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PropertyAttribute::MAYBEVOID ,MID_GRAPHIC_URL }, { UNO_NAME_BACK_GRAPHIC, RES_BACKGROUND, cppu::UnoType<graphic::XGraphic>::get(), PROPERTY_NONE, MID_GRAPHIC }, { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PropertyAttribute::MAYBEVOID ,MID_GRAPHIC_FILTER }, @@ -719,6 +741,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetSectionPr { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, { UNO_NAME_BACK_GRAPHIC_LOCATION, RES_BACKGROUND, cppu::UnoType<css::style::GraphicLocation>::get(), PROPERTY_NONE ,MID_GRAPHIC_POSITION}, { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_TRANSPARENT, RES_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT }, { UNO_LINK_DISPLAY_NAME, FN_PARAM_LINK_DISPLAY_NAME, cppu::UnoType<OUString>::get(), PropertyAttribute::READONLY, 0xbf}, { UNO_NAME_USER_DEFINED_ATTRIBUTES, RES_UNKNOWNATR_CONTAINER, cppu::UnoType<css::container::XNameContainer>::get(), PropertyAttribute::MAYBEVOID, 0 }, @@ -916,6 +939,7 @@ o3tl::span<const SfxItemPropertyMapEntry> SwUnoPropertyMapProvider::GetTextTable // attributes from PROPERTY_MAP_TABLE_CELL: { UNO_NAME_BACK_COLOR, FN_UNO_TABLE_CELL_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE , MID_BACK_COLOR }, + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, FN_UNO_TABLE_CELL_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE , MID_BACKGROUND_COMPLEX_COLOR }, { UNO_NAME_BACK_GRAPHIC_URL, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_URL }, { UNO_NAME_BACK_GRAPHIC, RES_BACKGROUND, cppu::UnoType<graphic::XGraphic>::get(), PROPERTY_NONE, MID_GRAPHIC }, { UNO_NAME_BACK_GRAPHIC_FILTER, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_FILTER }, diff --git a/sw/source/core/unocore/unomapproperties.hxx b/sw/source/core/unocore/unomapproperties.hxx index 1b7a4bfc280a..18aa885a3967 100644 --- a/sw/source/core/unocore/unomapproperties.hxx +++ b/sw/source/core/unocore/unomapproperties.hxx @@ -122,8 +122,10 @@ { UNO_NAME_PARA_HYPHENATION_ZONE, RES_PARATR_HYPHENZONE, cppu::UnoType<sal_Int16>::get(), PropertyAttribute::MAYBEVOID, MID_HYPHEN_ZONE}, \ { UNO_NAME_CHAR_AUTO_KERNING, RES_CHRATR_AUTOKERN, cppu::UnoType<bool>::get(), PropertyAttribute::MAYBEVOID, 0 }, \ { UNO_NAME_CHAR_BACK_COLOR, RES_CHRATR_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, MID_BACK_COLOR }, \ + { UNO_NAME_CHAR_BACKGROUND_COMPLEX_COLOR, RES_CHRATR_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR },\ { UNO_NAME_CHAR_HIGHLIGHT, RES_CHRATR_HIGHLIGHT, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, MID_BACK_COLOR }, \ { UNO_NAME_PARA_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, MID_BACK_COLOR }, \ + { UNO_NAME_PARA_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE , MID_BACKGROUND_COMPLEX_COLOR },\ { UNO_NAME_CHAR_CASE_MAP, RES_CHRATR_CASEMAP, cppu::UnoType<sal_Int16>::get(), PropertyAttribute::MAYBEVOID, 0 }, \ { UNO_NAME_CHAR_COLOR, RES_CHRATR_COLOR, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, 0 }, \ { UNO_NAME_CHAR_COLOR_THEME, RES_CHRATR_COLOR, cppu::UnoType<sal_Int16>::get(), PropertyAttribute::MAYBEVOID, MID_COLOR_THEME_INDEX }, \ @@ -139,9 +141,11 @@ { UNO_NAME_CHAR_HIDDEN, RES_CHRATR_HIDDEN, cppu::UnoType<bool>::get(), PropertyAttribute::MAYBEVOID, 0 }, \ { UNO_NAME_CHAR_UNDERLINE, RES_CHRATR_UNDERLINE, cppu::UnoType<sal_Int16>::get(), PropertyAttribute::MAYBEVOID, MID_TL_STYLE }, \ { UNO_NAME_CHAR_UNDERLINE_COLOR, RES_CHRATR_UNDERLINE, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, MID_TL_COLOR }, \ + { UNO_NAME_CHAR_UNDERLINE_COMPLEX_COLOR, RES_CHRATR_UNDERLINE, cppu::UnoType<css::util::XComplexColor>::get(), PropertyAttribute::MAYBEVOID, MID_TL_COMPLEX_COLOR }, \ { UNO_NAME_CHAR_UNDERLINE_HAS_COLOR, RES_CHRATR_UNDERLINE, cppu::UnoType<bool>::get(), PropertyAttribute::MAYBEVOID, MID_TL_HASCOLOR }, \ { UNO_NAME_CHAR_OVERLINE, RES_CHRATR_OVERLINE, cppu::UnoType<sal_Int16>::get(), PropertyAttribute::MAYBEVOID, MID_TL_STYLE }, \ { UNO_NAME_CHAR_OVERLINE_COLOR, RES_CHRATR_OVERLINE, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, MID_TL_COLOR }, \ + { UNO_NAME_CHAR_OVERLINE_COMPLEX_COLOR, RES_CHRATR_OVERLINE, cppu::UnoType<css::util::XComplexColor>::get(), PropertyAttribute::MAYBEVOID, MID_TL_COMPLEX_COLOR }, \ { UNO_NAME_CHAR_OVERLINE_HAS_COLOR, RES_CHRATR_OVERLINE, cppu::UnoType<bool>::get(), PropertyAttribute::MAYBEVOID, MID_TL_HASCOLOR }, \ { UNO_NAME_PARA_GRAPHIC_URL, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PropertyAttribute::MAYBEVOID, MID_GRAPHIC_URL }, \ { UNO_NAME_PARA_GRAPHIC, RES_BACKGROUND, cppu::UnoType<css::graphic::XGraphic>::get(), PropertyAttribute::MAYBEVOID, MID_GRAPHIC }, \ @@ -199,6 +203,10 @@ { UNO_NAME_RIGHT_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, RIGHT_BORDER_DISTANCE | CONVERT_TWIPS }, \ { UNO_NAME_TOP_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, TOP_BORDER_DISTANCE | CONVERT_TWIPS }, \ { UNO_NAME_BOTTOM_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, BOTTOM_BORDER_DISTANCE | CONVERT_TWIPS }, \ + { UNO_NAME_BORDER_LEFT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PropertyAttribute::MAYBEVOID, MID_BORDER_LEFT_COLOR }, \ + { UNO_NAME_BORDER_RIGHT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PropertyAttribute::MAYBEVOID, MID_BORDER_RIGHT_COLOR }, \ + { UNO_NAME_BORDER_TOP_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PropertyAttribute::MAYBEVOID, MID_BORDER_TOP_COLOR }, \ + { UNO_NAME_BORDER_BOTTOM_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), PropertyAttribute::MAYBEVOID, MID_BORDER_BOTTOM_COLOR }, \ { UNO_NAME_PARA_USER_DEFINED_ATTRIBUTES, RES_UNKNOWNATR_CONTAINER, cppu::UnoType<css::container::XNameContainer>::get(), PropertyAttribute::MAYBEVOID, 0 }, \ { UNO_NAME_TEXT_USER_DEFINED_ATTRIBUTES, RES_TXTATR_UNKNOWN_CONTAINER, cppu::UnoType<css::container::XNameContainer>::get(), PropertyAttribute::MAYBEVOID, 0 }, \ { UNO_NAME_PARA_SHADOW_FORMAT, RES_SHADOW, cppu::UnoType<css::table::ShadowFormat>::get(), PROPERTY_NONE, CONVERT_TWIPS }, \ @@ -274,6 +282,7 @@ { UNO_NAME_ANCHOR_FRAME, RES_ANCHOR, cppu::UnoType<css::text::XTextFrame>::get(), PropertyAttribute::MAYBEVOID, MID_ANCHOR_ANCHORFRAME}, \ ANCHOR_TYPES_PROPERTY\ { UNO_NAME_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, \ + { UNO_NAME_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE ,MID_BACKGROUND_COMPLEX_COLOR }, \ { UNO_NAME_BACK_COLOR_R_G_B, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR_R_G_B}, \ { UNO_NAME_BACK_COLOR_TRANSPARENCY, RES_BACKGROUND, cppu::UnoType<sal_Int8>::get(), PROPERTY_NONE ,MID_BACK_COLOR_TRANSPARENCY}, \ { UNO_NAME_FRAME_INTEROP_GRAB_BAG, RES_FRMATR_GRABBAG, cppu::UnoType< cppu::UnoSequenceType<css::beans::PropertyValue> >::get(), PROPERTY_NONE, 0}, \ @@ -328,6 +337,10 @@ { UNO_NAME_RIGHT_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, RIGHT_BORDER_DISTANCE |CONVERT_TWIPS }, \ { UNO_NAME_TOP_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, TOP_BORDER_DISTANCE |CONVERT_TWIPS }, \ { UNO_NAME_BOTTOM_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, BOTTOM_BORDER_DISTANCE|CONVERT_TWIPS }, \ + { UNO_NAME_BORDER_LEFT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_LEFT_COLOR }, \ + { UNO_NAME_BORDER_RIGHT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_RIGHT_COLOR }, \ + { UNO_NAME_BORDER_TOP_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_TOP_COLOR }, \ + { UNO_NAME_BORDER_BOTTOM_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_BOTTOM_COLOR }, \ { UNO_LINK_DISPLAY_NAME, FN_PARAM_LINK_DISPLAY_NAME, cppu::UnoType<OUString>::get(), PropertyAttribute::READONLY, 0xbf}, \ { UNO_NAME_USER_DEFINED_ATTRIBUTES, RES_UNKNOWNATR_CONTAINER, cppu::UnoType<css::container::XNameContainer>::get(), PropertyAttribute::MAYBEVOID, 0 },\ { UNO_NAME_Z_ORDER, FN_UNO_Z_ORDER, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, 0}, \ @@ -364,8 +377,10 @@ { UNO_NAME_CHAR_AUTO_KERNING, RES_CHRATR_AUTOKERN , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0},\ { UNO_NAME_CHAR_BACK_TRANSPARENT, RES_CHRATR_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT },\ { UNO_NAME_CHAR_BACK_COLOR, RES_CHRATR_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR },\ + { UNO_NAME_CHAR_BACKGROUND_COMPLEX_COLOR, RES_CHRATR_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR },\ { UNO_NAME_CHAR_HIGHLIGHT, RES_CHRATR_HIGHLIGHT, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR },\ { UNO_NAME_PARA_BACK_COLOR, RES_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR },\ + { UNO_NAME_PARA_BACKGROUND_COMPLEX_COLOR, RES_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE , MID_BACKGROUND_COMPLEX_COLOR },\ { UNO_NAME_PARA_BACK_TRANSPARENT, RES_BACKGROUND, cppu::UnoType<bool>::get(), PROPERTY_NONE ,MID_GRAPHIC_TRANSPARENT },\ { UNO_NAME_PARA_GRAPHIC_URL, RES_BACKGROUND, cppu::UnoType<OUString>::get(), PROPERTY_NONE ,MID_GRAPHIC_URL },\ { UNO_NAME_PARA_GRAPHIC, RES_BACKGROUND, cppu::UnoType<css::graphic::XGraphic>::get(), PROPERTY_NONE ,MID_GRAPHIC },\ @@ -389,9 +404,11 @@ { UNO_NAME_CHAR_UNDERLINE, RES_CHRATR_UNDERLINE , cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_TL_STYLE},\ { UNO_NAME_CHAR_UNDERLINE_COLOR, RES_CHRATR_UNDERLINE , cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_TL_COLOR},\ { UNO_NAME_CHAR_UNDERLINE_HAS_COLOR, RES_CHRATR_UNDERLINE , cppu::UnoType<bool>::get(), PROPERTY_NONE, MID_TL_HASCOLOR},\ + { UNO_NAME_CHAR_UNDERLINE_COMPLEX_COLOR, RES_CHRATR_UNDERLINE, cppu::UnoType<css::util::XComplexColor>::get(), PropertyAttribute::MAYBEVOID, MID_TL_COMPLEX_COLOR }, \ { UNO_NAME_CHAR_OVERLINE, RES_CHRATR_OVERLINE , cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_TL_STYLE},\ { UNO_NAME_CHAR_OVERLINE_COLOR, RES_CHRATR_OVERLINE , cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_TL_COLOR},\ { UNO_NAME_CHAR_OVERLINE_HAS_COLOR, RES_CHRATR_OVERLINE , cppu::UnoType<bool>::get(), PROPERTY_NONE, MID_TL_HASCOLOR},\ + { UNO_NAME_CHAR_OVERLINE_COMPLEX_COLOR, RES_CHRATR_OVERLINE, cppu::UnoType<css::util::XComplexColor>::get(), PropertyAttribute::MAYBEVOID, MID_TL_COMPLEX_COLOR }, \ { UNO_NAME_PARA_LEFT_MARGIN, RES_MARGIN_TEXTLEFT, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_TXT_LMARGIN|CONVERT_TWIPS},\ { UNO_NAME_PARA_RIGHT_MARGIN, RES_MARGIN_RIGHT, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, MID_R_MARGIN|CONVERT_TWIPS},\ { UNO_NAME_PARA_LEFT_MARGIN_RELATIVE, RES_MARGIN_TEXTLEFT, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_L_REL_MARGIN},\ @@ -444,6 +461,10 @@ { UNO_NAME_RIGHT_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, RIGHT_BORDER_DISTANCE |CONVERT_TWIPS },\ { UNO_NAME_TOP_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, TOP_BORDER_DISTANCE |CONVERT_TWIPS },\ { UNO_NAME_BOTTOM_BORDER_DISTANCE, RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, BOTTOM_BORDER_DISTANCE|CONVERT_TWIPS },\ + { UNO_NAME_BORDER_LEFT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_LEFT_COLOR }, \ + { UNO_NAME_BORDER_RIGHT_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_RIGHT_COLOR }, \ + { UNO_NAME_BORDER_TOP_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_TOP_COLOR }, \ + { UNO_NAME_BORDER_BOTTOM_COMPLEX_COLOR, RES_BOX, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_BORDER_BOTTOM_COLOR }, \ { UNO_NAME_PARA_IS_HYPHENATION, RES_PARATR_HYPHENZONE, cppu::UnoType<bool>::get(), PropertyAttribute::MAYBEVOID, MID_IS_HYPHEN },\ { UNO_NAME_PARA_HYPHENATION_NO_CAPS, RES_PARATR_HYPHENZONE, cppu::UnoType<bool>::get(), PropertyAttribute::MAYBEVOID, MID_HYPHEN_NO_CAPS },\ { UNO_NAME_PARA_HYPHENATION_NO_LAST_WORD, RES_PARATR_HYPHENZONE, cppu::UnoType<bool>::get(), PropertyAttribute::MAYBEVOID, MID_HYPHEN_NO_LAST_WORD },\ @@ -484,7 +505,8 @@ { UNO_NAME_PARA_INTEROP_GRAB_BAG, RES_PARATR_GRABBAG, cppu::UnoType< cppu::UnoSequenceType<css::beans::PropertyValue> >::get(), PROPERTY_NONE, 0}, #define COMMON_ACCESSIBILITY_TEXT_ATTRIBUTE \ - { UNO_NAME_CHAR_BACK_COLOR, RES_CHRATR_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, \ + { UNO_NAME_CHAR_BACK_COLOR, RES_CHRATR_BACKGROUND, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE ,MID_BACK_COLOR }, \ + { UNO_NAME_CHAR_BACKGROUND_COMPLEX_COLOR, RES_CHRATR_BACKGROUND, cppu::UnoType<css::util::XComplexColor>::get(), PROPERTY_NONE, MID_BACKGROUND_COMPLEX_COLOR },\ { UNO_NAME_CHAR_COLOR, RES_CHRATR_COLOR, cppu::UnoType<sal_Int32>::get(), PROPERTY_NONE, 0}, \ { UNO_NAME_CHAR_COLOR_THEME, RES_CHRATR_COLOR, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_COLOR_THEME_INDEX }, \ { UNO_NAME_CHAR_COLOR_TINT_OR_SHADE, RES_CHRATR_COLOR, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, MID_COLOR_TINT_OR_SHADE }, \ @@ -499,6 +521,8 @@ { UNO_NAME_CHAR_SHADOWED, RES_CHRATR_SHADOWED , cppu::UnoType<bool>::get() , PROPERTY_NONE, 0}, \ { UNO_NAME_CHAR_STRIKEOUT, RES_CHRATR_CROSSEDOUT, cppu::UnoType<sal_Int16>::get(), PropertyAttribute::MAYBEVOID, MID_CROSS_OUT}, \ { UNO_NAME_CHAR_UNDERLINE_COLOR, RES_CHRATR_UNDERLINE , cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, MID_TL_COLOR}, \ + { UNO_NAME_CHAR_UNDERLINE_COLOR, RES_CHRATR_UNDERLINE , cppu::UnoType<sal_Int32>::get(), PropertyAttribute::MAYBEVOID, MID_TL_COLOR}, \ + { UNO_NAME_CHAR_UNDERLINE_COMPLEX_COLOR, RES_CHRATR_UNDERLINE, cppu::UnoType<css::util::XComplexColor>::get(), PropertyAttribute::MAYBEVOID, MID_TL_COMPLEX_COLOR}, \ { UNO_NAME_CHAR_WEIGHT, RES_CHRATR_WEIGHT , cppu::UnoType<float>::get(), PropertyAttribute::MAYBEVOID, MID_WEIGHT}, \ { UNO_NAME_NUMBERING_LEVEL, RES_PARATR_LIST_LEVEL,cppu::UnoType<sal_Int16>::get(), PropertyAttribute::MAYBEVOID, 0}, \ { UNO_NAME_CHAR_UNDERLINE, RES_CHRATR_UNDERLINE , cppu::UnoType<sal_Int16>::get(), PropertyAttribute::MAYBEVOID, MID_TL_STYLE}, \ @@ -544,6 +568,7 @@ { UNO_NAME_FILLTRANSPARENCEGRADIENT, XATTR_FILLFLOATTRANSPARENCE, cppu::UnoType<css::awt::Gradient>::get(), 0, MID_FILLGRADIENT}, \ { UNO_NAME_FILLTRANSPARENCEGRADIENTNAME, XATTR_FILLFLOATTRANSPARENCE, cppu::UnoType<OUString>::get(), 0, MID_NAME }, \ { UNO_NAME_FILLCOLOR_2, XATTR_SECONDARYFILLCOLOR, cppu::UnoType<sal_Int32>::get(), 0, 0}, \ + { UNO_NAME_FILL_COMPLEX_COLOR, XATTR_FILLCOLOR, cppu::UnoType<css::util::XComplexColor>::get(), 0, MID_COMPLEX_COLOR}, \ #endif diff --git a/sw/source/uibase/docvw/edtwin.cxx b/sw/source/uibase/docvw/edtwin.cxx index 648ea2334583..2c626849b3f8 100644 --- a/sw/source/uibase/docvw/edtwin.cxx +++ b/sw/source/uibase/docvw/edtwin.cxx @@ -5146,7 +5146,7 @@ void SwEditWin::MouseButtonUp(const MouseEvent& rMEvt) m_pApplyTempl->nUndo = std::min(m_pApplyTempl->nUndo, rSh.GetDoc()->GetIDocumentUndoRedo().GetUndoActionCount()); if (nId == RES_CHRATR_BACKGROUND) - ApplyCharBackground(m_aWaterCanTextBackColor, rSh); + ApplyCharBackground(m_aWaterCanTextBackColor, model::ComplexColor(), rSh); else rSh.SetAttrItem( SvxColorItem( m_aWaterCanTextColor, nId ) ); rSh.UnSetVisibleCursor(); diff --git a/sw/source/uibase/inc/uitool.hxx b/sw/source/uibase/inc/uitool.hxx index 85747a9f82e3..87eef4e84f16 100644 --- a/sw/source/uibase/inc/uitool.hxx +++ b/sw/source/uibase/inc/uitool.hxx @@ -29,6 +29,7 @@ class SvxTabStopItem; class SwWrtShell; namespace com::sun::star::awt { class XPopupMenu; } namespace weld { class ComboBox; } +namespace model { class ComplexColor; } class SwDocShell; class SwFrameFormat; class SwTabCols; @@ -66,7 +67,7 @@ SW_DLLPUBLIC void ConvertAttrGenToChar(SfxItemSet& rSet, const SfxItemSet& rOrig * @param[in] rBackgroundColor the color to apply on the shell * @param[in,out] rShell the shell on which we apply the new attribute **/ -void ApplyCharBackground(const Color& rBackgroundColor, SwWrtShell& rShell); +void ApplyCharBackground(Color const& rBackgroundColor, model::ComplexColor const& rComplexColor, SwWrtShell& rShell); // SfxItemSets <-> PageDesc void ItemSetToPageDesc( const SfxItemSet& rSet, SwPageDesc& rPageDesc ); diff --git a/sw/source/uibase/shells/basesh.cxx b/sw/source/uibase/shells/basesh.cxx index 6e0075a54259..118df74e23a1 100644 --- a/sw/source/uibase/shells/basesh.cxx +++ b/sw/source/uibase/shells/basesh.cxx @@ -2606,7 +2606,7 @@ void SwBaseShell::GetBckColState(SfxItemSet &rSet) case SID_BACKGROUND_COLOR: case SID_TABLE_CELL_BACKGROUND_COLOR: { - SvxColorItem aColorItem(aBrushItem->GetColor(), nWhich); + SvxColorItem aColorItem(aBrushItem->GetColor(), aBrushItem->getComplexColor(), nWhich); rSet.Put(aColorItem); break; } @@ -2676,8 +2676,8 @@ void SwBaseShell::ExecBckCol(SfxRequest& rReq) if (pArgs) { const SvxColorItem& rNewColorItem = static_cast<const SvxColorItem&>(pArgs->Get(nSlotId)); - const Color& rNewColor = rNewColorItem.GetValue(); - aBrushItem->SetColor(rNewColor); + aBrushItem->SetColor(rNewColorItem.GetValue()); + aBrushItem->setComplexColor(rNewColorItem.getComplexColor()); GetView().GetViewFrame().GetBindings().SetState(rNewColorItem); } else diff --git a/sw/source/uibase/shells/frmsh.cxx b/sw/source/uibase/shells/frmsh.cxx index 2b10c0d9261d..bec169eed5ba 100644 --- a/sw/source/uibase/shells/frmsh.cxx +++ b/sw/source/uibase/shells/frmsh.cxx @@ -1222,14 +1222,14 @@ void SwFrameShell::ExecFrameStyle(SfxRequest const & rReq) } else { - if ( aBoxItem->GetTop() ) - const_cast<SvxBorderLine*>(aBoxItem->GetTop())->SetColor( rNewColor ); - if ( aBoxItem->GetBottom() ) - const_cast<SvxBorderLine*>(aBoxItem->GetBottom())->SetColor( rNewColor ); - if ( aBoxItem->GetLeft() ) - const_cast<SvxBorderLine*>(aBoxItem->GetLeft())->SetColor( rNewColor ); - if ( aBoxItem->GetRight() ) - const_cast<SvxBorderLine*>(aBoxItem->GetRight())->SetColor( rNewColor ); + if (aBoxItem->GetTop()) + aBoxItem->GetTop()->SetColor(rNewColor); + if (aBoxItem->GetBottom()) + aBoxItem->GetBottom()->SetColor(rNewColor); + if (aBoxItem->GetLeft()) + aBoxItem->GetLeft()->SetColor(rNewColor); + if (aBoxItem->GetRight()) + aBoxItem->GetRight()->SetColor(rNewColor); } } } diff --git a/sw/source/uibase/shells/textsh1.cxx b/sw/source/uibase/shells/textsh1.cxx index b6f68af7406b..fb5e2f88c9d9 100644 --- a/sw/source/uibase/shells/textsh1.cxx +++ b/sw/source/uibase/shells/textsh1.cxx @@ -1719,18 +1719,23 @@ void SwTextShell::Execute(SfxRequest &rReq) case SID_ATTR_CHAR_COLOR_BACKGROUND: // deprecated case SID_ATTR_CHAR_COLOR_EXT: { - Color aSet; + Color aColor; + model::ComplexColor aComplexColor; if (pItem) - aSet = static_cast<const SvxColorItem*>(pItem)->GetValue(); + { + auto* pColorItem = static_cast<const SvxColorItem*>(pItem); + aColor = pColorItem->GetValue(); + aComplexColor = pColorItem->getComplexColor(); + } else - aSet = COL_TRANSPARENT; + aColor = COL_TRANSPARENT; SwEditWin& rEdtWin = GetView().GetEditWin(); if (nSlot != SID_ATTR_CHAR_COLOR_EXT) - rEdtWin.SetWaterCanTextBackColor(aSet); + rEdtWin.SetWaterCanTextBackColor(aColor); else if (pItem) - rEdtWin.SetWaterCanTextColor(aSet); + rEdtWin.SetWaterCanTextColor(aColor); SwApplyTemplate* pApply = rEdtWin.GetApplyTemplate(); SwApplyTemplate aTempl; @@ -1740,18 +1745,19 @@ void SwTextShell::Execute(SfxRequest &rReq) { SfxItemSetFixed<RES_CHRATR_BACKGROUND, RES_CHRATR_BACKGROUND> aCoreSet( rWrtSh.GetView().GetPool() ); - rWrtSh.GetCurAttr( aCoreSet ); + rWrtSh.GetCurAttr(aCoreSet); // Remove highlight if already set of the same color const SvxBrushItem& rBrushItem = aCoreSet.Get(RES_CHRATR_BACKGROUND); - if ( aSet == rBrushItem.GetColor() ) - aSet = COL_TRANSPARENT; - - ApplyCharBackground(aSet, rWrtSh); + if (aColor == rBrushItem.GetColor()) + { + aComplexColor = model::ComplexColor(); + aColor = COL_TRANSPARENT; + } + ApplyCharBackground(aColor, aComplexColor, rWrtSh); } else - rWrtSh.SetAttrItem( - SvxColorItem(aSet, RES_CHRATR_COLOR) ); + rWrtSh.SetAttrItem(SvxColorItem(aColor, aComplexColor, RES_CHRATR_COLOR)); } else { @@ -2374,12 +2380,12 @@ void SwTextShell::GetState( SfxItemSet &rSet ) const SvxBrushItem& aBrushItem = aSet.Get(RES_CHRATR_HIGHLIGHT); if( aBrushItem.GetColor() != COL_TRANSPARENT ) { - rSet.Put( SvxColorItem(aBrushItem.GetColor(), nWhich) ); + rSet.Put(SvxColorItem(aBrushItem.GetColor(), aBrushItem.getComplexColor(), nWhich)); } else { const SvxBrushItem& aBrushItem2 = aSet.Get(RES_CHRATR_BACKGROUND); - rSet.Put( SvxColorItem(aBrushItem2.GetColor(), nWhich) ); + rSet.Put(SvxColorItem(aBrushItem2.GetColor(), aBrushItem2.getComplexColor(), nWhich)); } } break; diff --git a/sw/source/uibase/sidebar/PageStylesPanel.cxx b/sw/source/uibase/sidebar/PageStylesPanel.cxx index 9565b177b84d..53cf43fb742e 100644 --- a/sw/source/uibase/sidebar/PageStylesPanel.cxx +++ b/sw/source/uibase/sidebar/PageStylesPanel.cxx @@ -544,7 +544,10 @@ void PageStylesPanel::ModifyFillColor() { case SOLID: { - XFillColorItem aItem(OUString(), mxBgColorLB->GetSelectEntryColor()); + auto aNamedColor = mxBgColorLB->GetSelectedEntry(); + XFillColorItem aItem(OUString(), aNamedColor.m_aColor); + aItem.setComplexColor(aNamedColor.getComplexColor()); + aItem.setComplexColor(mxBgColorLB->GetSelectedEntry().getComplexColor()); GetBindings()->GetDispatcher()->ExecuteList(SID_ATTR_PAGE_COLOR, SfxCallMode::RECORD, { &aItem }); } break; diff --git a/sw/source/uibase/utlui/uitool.cxx b/sw/source/uibase/utlui/uitool.cxx index 1ead464c8963..079b5f9fdb1f 100644 --- a/sw/source/uibase/utlui/uitool.cxx +++ b/sw/source/uibase/utlui/uitool.cxx @@ -67,8 +67,9 @@ #include <charfmt.hxx> #include <SwStyleNameMapper.hxx> #include <strings.hrc> -// 50 cm 28350 +#include <docmodel/color/ComplexColor.hxx> +// 50 cm 28350 #define MAXHEIGHT 28350 #define MAXWIDTH 28350 @@ -193,7 +194,7 @@ void ConvertAttrGenToChar(SfxItemSet& rSet, const SfxItemSet& rOrigSet, bool bIs assert(SfxItemState::SET != rSet.GetItemState(RES_PARATR_GRABBAG, false)); } -void ApplyCharBackground(const Color& rBackgroundColor, SwWrtShell& rShell) +void ApplyCharBackground(Color const& rBackgroundColor, model::ComplexColor const& rComplexColor, SwWrtShell& rShell) { rShell.StartUndo(SwUndoId::INSATTR); @@ -202,7 +203,7 @@ void ApplyCharBackground(const Color& rBackgroundColor, SwWrtShell& rShell) rShell.GetCurAttr(aCoreSet); // Set char background - rShell.SetAttrItem(SvxBrushItem(rBackgroundColor, RES_CHRATR_BACKGROUND)); + rShell.SetAttrItem(SvxBrushItem(rBackgroundColor, rComplexColor, RES_CHRATR_BACKGROUND)); // Highlight is an MS specific thing, so remove it at the first time when LO modifies // this part of the imported document. |