20 #include <svx/svxids.hrc>
37 XATTR_FILLTRANSPARENCE, XATTR_FILLTRANSPARENCE,
38 XATTR_FILLFLOATTRANSPARENCE, XATTR_FILLFLOATTRANSPARENCE,
39 SDRATTR_SHADOWTRANSPARENCE, SDRATTR_SHADOWTRANSPARENCE
51 ActivateLinear(
false);
52 ActivateGradient(
false);
57 m_aCtlXRectPreview.SetAttributes( aXFillAttr.GetItemSet() );
58 m_aCtlBitmapPreview.SetAttributes( aXFillAttr.GetItemSet() );
60 InvalidatePreview(
false);
67 ActivateGradient(
false);
71 ModifyTransparentHdl_Impl(*m_xMtrTransparent);
77 ActivateLinear(
false);
78 ActivateGradient(
true);
82 ModifiedTrgrHdl_Impl(
nullptr);
91 m_xMtrTransparent->set_sensitive(bActivate);
96 sal_uInt16
nPos = m_xMtrTransparent->get_value(FieldUnit::PERCENT);
105 ModifiedTrgrHdl_Impl(&rListBox);
110 ModifiedTrgrHdl_Impl(
nullptr);
115 if (pControl == m_xLbTrgrGradientType.get())
117 css::awt::GradientStyle eXGS =
static_cast<css::awt::GradientStyle
>(m_xLbTrgrGradientType->get_active());
118 SetControlState_Impl( eXGS );
122 sal_uInt8 nStartCol =
static_cast<sal_uInt8>((
static_cast<sal_uInt16
>(m_xMtrTrgrStartValue->get_value(FieldUnit::PERCENT)) * 255) / 100);
123 sal_uInt8 nEndCol =
static_cast<sal_uInt8>((
static_cast<sal_uInt16
>(m_xMtrTrgrEndValue->get_value(FieldUnit::PERCENT)) * 255) / 100);
125 Color(nStartCol, nStartCol, nStartCol),
126 Color(nEndCol, nEndCol, nEndCol),
127 static_cast<css::awt::GradientStyle>(m_xLbTrgrGradientType->get_active()),
128 Degree10(static_cast<sal_Int16>(m_xMtrTrgrAngle->get_value(FieldUnit::DEGREE)) * 10),
129 static_cast<sal_uInt16
>(m_xMtrTrgrCenterX->get_value(FieldUnit::PERCENT)),
130 static_cast<sal_uInt16>(m_xMtrTrgrCenterY->get_value(FieldUnit::PERCENT)),
131 static_cast<sal_uInt16>(m_xMtrTrgrBorder->get_value(FieldUnit::PERCENT)),
135 rXFSet.Put ( aItem );
142 m_xGridGradient->set_sensitive(bActivate);
146 css::awt::GradientStyle eXGS =
static_cast<css::awt::GradientStyle
>(m_xLbTrgrGradientType->get_active());
147 SetControlState_Impl( eXGS );
155 case css::awt::GradientStyle_LINEAR:
156 case css::awt::GradientStyle_AXIAL:
157 m_xFtTrgrCenterX->set_sensitive(
false);
158 m_xMtrTrgrCenterX->set_sensitive(
false);
159 m_xFtTrgrCenterY->set_sensitive(
false);
160 m_xMtrTrgrCenterY->set_sensitive(
false);
161 m_xFtTrgrAngle->set_sensitive(
true);
162 m_xMtrTrgrAngle->set_sensitive(
true);
165 case css::awt::GradientStyle_RADIAL:
166 m_xFtTrgrCenterX->set_sensitive(
true);
167 m_xMtrTrgrCenterX->set_sensitive(
true);
168 m_xFtTrgrCenterY->set_sensitive(
true);
169 m_xMtrTrgrCenterY->set_sensitive(
true);
170 m_xFtTrgrAngle->set_sensitive(
false);
171 m_xMtrTrgrAngle->set_sensitive(
false);
174 case css::awt::GradientStyle_ELLIPTICAL:
175 case css::awt::GradientStyle_SQUARE:
176 case css::awt::GradientStyle_RECT:
177 m_xFtTrgrCenterX->set_sensitive(
true);
178 m_xMtrTrgrCenterX->set_sensitive(
true);
179 m_xFtTrgrCenterY->set_sensitive(
true);
180 m_xMtrTrgrCenterY->set_sensitive(
true);
181 m_xFtTrgrAngle->set_sensitive(
true);
182 m_xMtrTrgrAngle->set_sensitive(
true);
190 :
SfxTabPage(pPage, pController,
"cui/ui/transparencytabpage.ui",
"TransparencyTabPage", &rInAttrs)
191 , rOutAttrs(rInAttrs)
195 , aXFillAttr(rInAttrs.GetPool())
197 , m_xRbtTransOff(m_xBuilder->weld_radio_button(
"RBT_TRANS_OFF"))
198 , m_xRbtTransLinear(m_xBuilder->weld_radio_button(
"RBT_TRANS_LINEAR"))
199 , m_xRbtTransGradient(m_xBuilder->weld_radio_button(
"RBT_TRANS_GRADIENT"))
200 , m_xMtrTransparent(m_xBuilder->weld_metric_spin_button(
"MTR_TRANSPARENT",
FieldUnit::
PERCENT))
201 , m_xGridGradient(m_xBuilder->weld_widget(
"gridGradient"))
202 , m_xLbTrgrGradientType(m_xBuilder->weld_combo_box(
"LB_TRGR_GRADIENT_TYPES"))
203 , m_xFtTrgrCenterX(m_xBuilder->weld_label(
"FT_TRGR_CENTER_X"))
204 , m_xMtrTrgrCenterX(m_xBuilder->weld_metric_spin_button(
"MTR_TRGR_CENTER_X",
FieldUnit::
PERCENT))
205 , m_xFtTrgrCenterY(m_xBuilder->weld_label(
"FT_TRGR_CENTER_Y"))
206 , m_xMtrTrgrCenterY(m_xBuilder->weld_metric_spin_button(
"MTR_TRGR_CENTER_Y",
FieldUnit::
PERCENT))
207 , m_xFtTrgrAngle(m_xBuilder->weld_label(
"FT_TRGR_ANGLE"))
208 , m_xMtrTrgrAngle(m_xBuilder->weld_metric_spin_button(
"MTR_TRGR_ANGLE",
FieldUnit::
DEGREE))
209 , m_xMtrTrgrBorder(m_xBuilder->weld_metric_spin_button(
"MTR_TRGR_BORDER",
FieldUnit::
PERCENT))
210 , m_xMtrTrgrStartValue(m_xBuilder->weld_metric_spin_button(
"MTR_TRGR_START_VALUE",
FieldUnit::
PERCENT))
211 , m_xMtrTrgrEndValue(m_xBuilder->weld_metric_spin_button(
"MTR_TRGR_END_VALUE",
FieldUnit::
PERCENT))
212 , m_xCtlBitmapBorder(m_xBuilder->weld_widget(
"bitmap_border"))
213 , m_xCtlXRectBorder(m_xBuilder->weld_widget(
"trans_border"))
214 , m_xCtlBitmapPreview(new
weld::CustomWeld(*m_xBuilder,
"CTL_IMAGE_PREVIEW", m_aCtlBitmapPreview))
215 , m_xCtlXRectPreview(new
weld::CustomWeld(*m_xBuilder,
"CTL_TRANS_PREVIEW", m_aCtlXRectPreview))
244 return std::make_unique<SvxTransparenceTabPage>(pPage, pController, *rAttrs);
253 bool bGradActive = (eStateGradient == SfxItemState::SET &&
static_cast<const XFillFloatTransparenceItem*
>(pGradientItem)->IsEnabled());
256 bool bGradUsed = (eStateGradient == SfxItemState::DONTCARE);
257 bool bLinearUsed = (eStateLinear == SfxItemState::DONTCARE);
259 bool bModified(
false);
260 bool bSwitchOffLinear(
false);
261 bool bSwitchOffGradient(
false);
272 if(!pOld || !(*static_cast<const XFillTransparenceItem*>(pOld) == aItem) || !bLinearActive)
275 rAttrs->
Put(aShadowItem);
277 bSwitchOffGradient =
true;
296 Color(nStartCol, nStartCol, nStartCol),
297 Color(nEndCol, nEndCol, nEndCol),
308 if(!pOld || !(*static_cast<const XFillFloatTransparenceItem*>(pOld) == aItem) || !bGradActive)
312 bSwitchOffLinear =
true;
319 bSwitchOffGradient =
true;
320 bSwitchOffLinear =
true;
324 if(bSwitchOffGradient && (bGradActive || bGradUsed))
336 if(bSwitchOffLinear && (bLinearActive || bLinearUsed))
341 rAttrs->
Put(aShadowItem);
352 bool bGradActive = (pGradientItem && pGradientItem->
IsEnabled());
358 bool bLinearActive = (pLinearItem && pLinearItem->GetValue() != 0);
374 sal_uInt16 nTransp = pLinearItem->GetValue();
385 else if(bLinearActive)
433 return DeactivateRC::LeavePage;
#define LINK(Instance, Class, Member)
const T * GetItemIfSet(TypedWhichId< T > nWhich, bool bSrchInParent=true) const
std::unique_ptr< weld::MetricSpinButton > m_xMtrTrgrStartValue
virtual void Reset(const SfxItemSet *) override
Degree10 GetAngle() const
std::unique_ptr< weld::MetricSpinButton > m_xMtrTrgrCenterX
static constexpr auto Items
std::unique_ptr< weld::Widget > m_xCtlXRectBorder
virtual void ChangesApplied() override
constexpr TypedWhichId< XFillStyleItem > XATTR_FILLSTYLE(XATTR_FILL_FIRST)
void ActivateLinear(bool bActivate)
std::unique_ptr< weld::RadioButton > m_xRbtTransGradient
constexpr OUStringLiteral PERCENT(u"Percent")
sal_uInt16 GetValue() const
XFillAttrSetItem aXFillAttr
constexpr TypedWhichId< XFillHatchItem > XATTR_FILLHATCH(XATTR_FILL_FIRST+3)
std::unique_ptr< weld::MetricSpinButton > m_xMtrTrgrAngle
constexpr TypedWhichId< XFillBackgroundItem > XATTR_FILLBACKGROUND(XATTR_FILL_FIRST+19)
std::unique_ptr< weld::MetricSpinButton > m_xMtrTrgrBorder
std::unique_ptr< weld::RadioButton > m_xRbtTransOff
std::unique_ptr< weld::Widget > m_xCtlBitmapBorder
const Color & GetStartColor() const
IMPL_LINK(SvxTransparenceTabPage, ModifiedTrgrListBoxHdl_Impl, weld::ComboBox &, rListBox, void)
sal_uInt16 GetYOffset() const
SvxXRectPreview m_aCtlXRectPreview
static const WhichRangesContainer pTransparenceRanges
void SetExchangeSupport()
static std::unique_ptr< SfxTabPage > Create(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet *)
void InvalidatePreview(bool bEnable=true)
void SetDlgType(sal_uInt16 nInType)
std::unique_ptr< weld::CustomWeld > m_xCtlXRectPreview
sal_uInt16 GetXOffset() const
void ModifiedTrgrHdl_Impl(const weld::ComboBox *)
void SetPageType(PageType nInType)
std::unique_ptr< weld::RadioButton > m_xRbtTransLinear
IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransOffHdl_Impl, weld::Toggleable &, void)
virtual tools::Long GetValue() const override
void SetEndIntens(sal_uInt16 nNewIntens)
const SfxPoolItem * GetOldItem(const SfxItemSet &rSet, sal_uInt16 nSlot, bool bDeep=true)
virtual bool FillItemSet(SfxItemSet *) override
const SfxItemSet & rOutAttrs
UNDERLYING_TYPE get() const
sal_uInt16 GetBorder() const
constexpr TypedWhichId< XFillTransparenceItem > XATTR_FILLTRANSPARENCE(XATTR_FILL_FIRST+5)
constexpr TypedWhichId< XFillGradientItem > XATTR_FILLGRADIENT(XATTR_FILL_FIRST+2)
SfxItemState GetItemState(sal_uInt16 nWhich, bool bSrchInParent=true, const SfxPoolItem **ppItem=nullptr) const
const XGradient & GetGradientValue() const
constexpr TypedWhichId< XFillBitmapItem > XATTR_FILLBITMAP(XATTR_FILL_FIRST+4)
SdrPercentItem makeSdrShadowTransparenceItem(sal_uInt16 nTransp)
std::unique_ptr< weld::MetricSpinButton > m_xMtrTrgrEndValue
std::unique_ptr< weld::ComboBox > m_xLbTrgrGradientType
void SetAttributes(const SfxItemSet &rItemSet)
bool InitPreview(const SfxItemSet &rSet)
void SetStartIntens(sal_uInt16 nNewIntens)
css::awt::GradientStyle GetGradientStyle() const
constexpr TypedWhichId< XFillColorItem > XATTR_FILLCOLOR(XATTR_FILL_FIRST+1)
const SfxPoolItem * Put(const SfxPoolItem &rItem, sal_uInt16 nWhich)
constexpr TypedWhichId< XFillFloatTransparenceItem > XATTR_FILLFLOATTRANSPARENCE(XATTR_FILL_FIRST+11)
const SfxPoolItem & Get(sal_uInt16 nWhich, bool bSrchInParent=true) const
SvxXRectPreview m_aCtlBitmapPreview
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_WHITE
virtual ~SvxTransparenceTabPage() override
const ::std::vector< Color > ImpSvNumberformatScan::StandardColor COL_BLACK
std::unique_ptr< weld::MetricSpinButton > m_xMtrTransparent
linear transparency
virtual void PageCreated(const SfxAllItemSet &aSet) override
SvxTransparenceTabPage(weld::Container *pPage, weld::DialogController *pController, const SfxItemSet &rInAttrs)
std::unique_ptr< weld::CustomWeld > m_xCtlBitmapPreview
std::unique_ptr< weld::MetricSpinButton > m_xMtrTrgrCenterY
void ActivateGradient(bool bActivate)
virtual void ActivatePage(const SfxItemSet &rSet) override
void SetEnabled(bool bEnable)
void SetControlState_Impl(css::awt::GradientStyle eXGS)
const SfxPoolItem * GetItem(sal_uInt16 nWhich, bool bSearchInParent=true) const
std::unique_ptr< weld::Widget > m_xGridGradient
const Color & GetEndColor() const
virtual DeactivateRC DeactivatePage(SfxItemSet *pSet) override
bool m_bDetectedRangeSegmentation false