Files
odfstudio/cui/source/tabpages/tptrans.cxx
T
Armin Le Grand (collabora) 760394bbad Remove XFillAttrSetItem and XLineAttrSetItem
Both are derived from SfxSetItem which means they contain
a SfxItemSet themselves. That leads to problems since at
their construction time a SfxItemPool has to be known and
it *should* not be different to the one of the ItemSet
that Item gets added later - that leads to the 2nd class
of problems.

In the long therm we should get rid of all SfxSetItems.
This change simplifies already some stuff, including that
the standard Items for DrawObjects reduces by two (and
more due to containing a whole ItemSet) and e.g. the
problem that these Items had to be converted to hard
attributes in the done fixes for copy/pasting Slides.

Signed-off-by: Armin Le Grand (collabora) <Armin.LeGrand@collabora.com>
Change-Id: I8b1c6cabdaa43ed6062811b5508ab3dece47a755
Reviewed-on: https://gerrit.collaboraoffice.com/c/online/+/6795
Reviewed-by: Armin Le Grand <armin.legrand@collabora.com>
Tested-by: Jenkins CPCI <releng@collaboraoffice.com>
(cherry picked from commit e67458a9b769fe7a3a7ee0739ed6d5c46dbc0692)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/211734
Tested-by: Jenkins
Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org>
2026-10-08 08:56:42 +02:00

539 lines
20 KiB
C++

/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
/*
* This file is part of the LibreOffice project.
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
#include <svx/svxids.hrc>
#include <svx/xfillit0.hxx>
#include <svx/xflclit.hxx>
#include <svx/xflftrit.hxx>
#include <svx/xflgrit.hxx>
#include <svx/xflhtit.hxx>
#include <svx/xbtmpit.hxx>
#include <svx/xflbckit.hxx>
#include <svx/sdshtitm.hxx>
#include <svx/xfltrit.hxx>
#include <o3tl/untaint.hxx>
#include <cuitabarea.hxx>
#include <svl/intitem.hxx>
#include <vcl/weld/Builder.hxx>
using namespace com::sun::star;
const WhichRangesContainer SvxTransparenceTabPage::pTransparenceRanges(svl::Items<
XATTR_FILLTRANSPARENCE, XATTR_FILLTRANSPARENCE,
XATTR_FILLFLOATTRANSPARENCE, XATTR_FILLFLOATTRANSPARENCE,
SDRATTR_SHADOWTRANSPARENCE, SDRATTR_SHADOWTRANSPARENCE
>);
/*************************************************************************
|*
|* Dialog for transparence
|*
\************************************************************************/
IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransOffHdl_Impl, weld::Toggleable&, void)
{
// disable all other controls
ActivateLinear(false);
ActivateGradient(false);
// Preview
m_aFillAttributeSet.ClearItem(XATTR_FILLTRANSPARENCE);
m_aFillAttributeSet.ClearItem(XATTR_FILLFLOATTRANSPARENCE);
m_aCtlXRectPreview.SetAttributes(m_aFillAttributeSet);
m_aCtlBitmapPreview.SetAttributes(m_aFillAttributeSet);
InvalidatePreview(false);
}
IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransLinearHdl_Impl, weld::Toggleable&, void)
{
// enable linear, disable other
ActivateLinear(true);
ActivateGradient(false);
// preview
m_aFillAttributeSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
ModifyTransparentHdl_Impl(*m_xMtrTransparent);
}
IMPL_LINK_NOARG(SvxTransparenceTabPage, ClickTransGradientHdl_Impl, weld::Toggleable&, void)
{
// enable gradient, disable other
ActivateLinear(false);
ActivateGradient(true);
// preview
m_aFillAttributeSet.ClearItem (XATTR_FILLTRANSPARENCE);
ModifiedTrgrHdl_Impl(nullptr);
}
SvxTransparenceTabPage::~SvxTransparenceTabPage()
{
}
void SvxTransparenceTabPage::ActivateLinear(bool bActivate)
{
m_xMtrTransparent->set_sensitive(bActivate);
}
IMPL_LINK_NOARG(SvxTransparenceTabPage, ModifyTransparentHdl_Impl, weld::MetricSpinButton&, void)
{
sal_uInt16 nPos = o3tl::sanitizing_cast<sal_uInt16>(m_xMtrTransparent->get_value(FieldUnit::PERCENT));
m_aFillAttributeSet.Put(XFillTransparenceItem(nPos));
// preview
InvalidatePreview();
}
IMPL_LINK(SvxTransparenceTabPage, ModifiedTrgrListBoxHdl_Impl, weld::ComboBox&, rListBox, void)
{
ModifiedTrgrHdl_Impl(&rListBox);
}
IMPL_LINK_NOARG(SvxTransparenceTabPage, ModifiedTrgrEditHdl_Impl, weld::MetricSpinButton&, void)
{
ModifiedTrgrHdl_Impl(nullptr);
}
void SvxTransparenceTabPage::ModifiedTrgrHdl_Impl(const weld::ComboBox* pControl)
{
if (pControl == m_xLbTrgrGradientType.get())
{
css::awt::GradientStyle eXGS = static_cast<css::awt::GradientStyle>(m_xLbTrgrGradientType->get_active());
SetControlState_Impl( eXGS );
}
// preview
basegfx::BGradient aTmpGradient(
createColorStops(),
static_cast<css::awt::GradientStyle>(m_xLbTrgrGradientType->get_active()),
Degree10(static_cast<sal_Int16>(m_xMtrTrgrAngle->get_value(FieldUnit::DEGREE)) * 10),
static_cast<sal_uInt16>(m_xMtrTrgrCenterX->get_value(FieldUnit::PERCENT)),
static_cast<sal_uInt16>(m_xMtrTrgrCenterY->get_value(FieldUnit::PERCENT)),
static_cast<sal_uInt16>(m_xMtrTrgrBorder->get_value(FieldUnit::PERCENT)),
100, 100);
XFillFloatTransparenceItem aItem( aTmpGradient);
m_aFillAttributeSet.Put ( aItem );
InvalidatePreview();
}
void SvxTransparenceTabPage::ActivateGradient(bool bActivate)
{
m_xGridGradient->set_sensitive(bActivate);
if (bActivate)
{
css::awt::GradientStyle eXGS = static_cast<css::awt::GradientStyle>(m_xLbTrgrGradientType->get_active());
SetControlState_Impl( eXGS );
}
}
void SvxTransparenceTabPage::SetControlState_Impl(css::awt::GradientStyle eXGS)
{
switch(eXGS)
{
case css::awt::GradientStyle_LINEAR:
case css::awt::GradientStyle_AXIAL:
m_xFtTrgrCenterX->set_sensitive(false);
m_xMtrTrgrCenterX->set_sensitive(false);
m_xFtTrgrCenterY->set_sensitive(false);
m_xMtrTrgrCenterY->set_sensitive(false);
m_xFtTrgrAngle->set_sensitive(true);
m_xMtrTrgrAngle->set_sensitive(true);
break;
case css::awt::GradientStyle_RADIAL:
m_xFtTrgrCenterX->set_sensitive(true);
m_xMtrTrgrCenterX->set_sensitive(true);
m_xFtTrgrCenterY->set_sensitive(true);
m_xMtrTrgrCenterY->set_sensitive(true);
m_xFtTrgrAngle->set_sensitive(false);
m_xMtrTrgrAngle->set_sensitive(false);
break;
case css::awt::GradientStyle_ELLIPTICAL:
case css::awt::GradientStyle_SQUARE:
case css::awt::GradientStyle_RECT:
m_xFtTrgrCenterX->set_sensitive(true);
m_xMtrTrgrCenterX->set_sensitive(true);
m_xFtTrgrCenterY->set_sensitive(true);
m_xMtrTrgrCenterY->set_sensitive(true);
m_xFtTrgrAngle->set_sensitive(true);
m_xMtrTrgrAngle->set_sensitive(true);
break;
default:
break;
}
}
SvxTransparenceTabPage::SvxTransparenceTabPage(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet& rInAttrs)
: SfxTabPage(pPage, pController, u"cui/ui/transparencytabpage.ui"_ustr, u"TransparencyTabPage"_ustr, &rInAttrs)
, rOutAttrs(rInAttrs)
, nPageType(PageType::Area)
, nDlgType(0)
, bBitmap(false)
, m_aFillAttributeSet(rInAttrs.getPool(), WhichRangesContainer(XATTR_FILL_FIRST, XATTR_FILL_LAST))
, m_xRbtTransOff(m_xBuilder->weld_radio_button(u"RBT_TRANS_OFF"_ustr))
, m_xRbtTransLinear(m_xBuilder->weld_radio_button(u"RBT_TRANS_LINEAR"_ustr))
, m_xRbtTransGradient(m_xBuilder->weld_radio_button(u"RBT_TRANS_GRADIENT"_ustr))
, m_xMtrTransparent(m_xBuilder->weld_metric_spin_button(u"MTR_TRANSPARENT"_ustr, FieldUnit::PERCENT))
, m_xGridGradient(m_xBuilder->weld_widget(u"gridGradient"_ustr))
, m_xLbTrgrGradientType(m_xBuilder->weld_combo_box(u"LB_TRGR_GRADIENT_TYPES"_ustr))
, m_xFtTrgrCenterX(m_xBuilder->weld_label(u"FT_TRGR_CENTER_X"_ustr))
, m_xMtrTrgrCenterX(m_xBuilder->weld_metric_spin_button(u"MTR_TRGR_CENTER_X"_ustr, FieldUnit::PERCENT))
, m_xFtTrgrCenterY(m_xBuilder->weld_label(u"FT_TRGR_CENTER_Y"_ustr))
, m_xMtrTrgrCenterY(m_xBuilder->weld_metric_spin_button(u"MTR_TRGR_CENTER_Y"_ustr, FieldUnit::PERCENT))
, m_xFtTrgrAngle(m_xBuilder->weld_label(u"FT_TRGR_ANGLE"_ustr))
, m_xMtrTrgrAngle(m_xBuilder->weld_metric_spin_button(u"MTR_TRGR_ANGLE"_ustr, FieldUnit::DEGREE))
, m_xMtrTrgrBorder(m_xBuilder->weld_metric_spin_button(u"MTR_TRGR_BORDER"_ustr, FieldUnit::PERCENT))
, m_xMtrTrgrStartValue(m_xBuilder->weld_metric_spin_button(u"MTR_TRGR_START_VALUE"_ustr, FieldUnit::PERCENT))
, m_xMtrTrgrEndValue(m_xBuilder->weld_metric_spin_button(u"MTR_TRGR_END_VALUE"_ustr, FieldUnit::PERCENT))
, m_xCtlBitmapBorder(m_xBuilder->weld_widget(u"bitmap_border"_ustr))
, m_xCtlXRectBorder(m_xBuilder->weld_widget(u"trans_border"_ustr))
, m_xCtlBitmapPreview(new weld::CustomWeld(*m_xBuilder, u"CTL_IMAGE_PREVIEW"_ustr, m_aCtlBitmapPreview))
, m_xCtlXRectPreview(new weld::CustomWeld(*m_xBuilder, u"CTL_TRANS_PREVIEW"_ustr, m_aCtlXRectPreview))
{
// main selection
m_xRbtTransOff->connect_toggled(LINK(this, SvxTransparenceTabPage, ClickTransOffHdl_Impl));
m_xRbtTransLinear->connect_toggled(LINK(this, SvxTransparenceTabPage, ClickTransLinearHdl_Impl));
m_xRbtTransGradient->connect_toggled(LINK(this, SvxTransparenceTabPage, ClickTransGradientHdl_Impl));
// linear transparency
m_xMtrTransparent->set_value(50, FieldUnit::PERCENT);
m_xMtrTransparent->connect_value_changed(LINK(this, SvxTransparenceTabPage, ModifyTransparentHdl_Impl));
// gradient transparency
m_xMtrTrgrEndValue->set_value(100, FieldUnit::PERCENT);
m_xMtrTrgrStartValue->set_value(0, FieldUnit::PERCENT);
Link<weld::MetricSpinButton&,void> aLink = LINK( this, SvxTransparenceTabPage, ModifiedTrgrEditHdl_Impl);
m_xLbTrgrGradientType->connect_changed(LINK(this, SvxTransparenceTabPage, ModifiedTrgrListBoxHdl_Impl));
m_xMtrTrgrCenterX->connect_value_changed( aLink );
m_xMtrTrgrCenterY->connect_value_changed( aLink );
m_xMtrTrgrAngle->connect_value_changed( aLink );
m_xMtrTrgrBorder->connect_value_changed( aLink );
m_xMtrTrgrStartValue->connect_value_changed( aLink );
m_xMtrTrgrEndValue->connect_value_changed( aLink );
// this page needs ExchangeSupport
SetExchangeSupport();
}
std::unique_ptr<SfxTabPage> SvxTransparenceTabPage::Create(weld::Container* pPage, weld::DialogController* pController, const SfxItemSet* rAttrs)
{
return std::make_unique<SvxTransparenceTabPage>(pPage, pController, *rAttrs);
}
bool SvxTransparenceTabPage::FillItemSet(SfxItemSet* rAttrs)
{
const SfxPoolItem* pGradientItem = nullptr;
const XFillTransparenceItem* pLinearItem = nullptr;
SfxItemState eStateGradient(rOutAttrs.GetItemState(XATTR_FILLFLOATTRANSPARENCE, true, &pGradientItem));
SfxItemState eStateLinear(rOutAttrs.GetItemState(XATTR_FILLTRANSPARENCE, true, &pLinearItem));
bool bGradActive = (eStateGradient == SfxItemState::SET && static_cast<const XFillFloatTransparenceItem*>(pGradientItem)->IsEnabled());
bool bLinearActive = (eStateLinear == SfxItemState::SET && pLinearItem->GetValue() != 0);
bool bGradUsed = (eStateGradient == SfxItemState::INVALID);
bool bLinearUsed = (eStateLinear == SfxItemState::INVALID);
bool bModified(false);
bool bSwitchOffLinear(false);
bool bSwitchOffGradient(false);
if (m_xMtrTransparent->get_sensitive())
{
// linear transparence
sal_uInt16 nPos = o3tl::sanitizing_cast<sal_uInt16>(m_xMtrTransparent->get_value(FieldUnit::PERCENT));
if (m_xMtrTransparent->get_value_changed_from_saved() || !bLinearActive)
{
XFillTransparenceItem aItem(nPos);
SdrPercentItem aShadowItem(makeSdrShadowTransparenceItem(nPos));
const SfxPoolItem* pOld = GetOldItem(*rAttrs, XATTR_FILLTRANSPARENCE);
if(!pOld || !(*static_cast<const XFillTransparenceItem*>(pOld) == aItem) || !bLinearActive)
{
rAttrs->Put(aItem);
rAttrs->Put(aShadowItem);
bModified = true;
bSwitchOffGradient = true;
}
}
}
else if (m_xGridGradient->get_sensitive())
{
// transparence gradient, fill ItemSet from values
if (!bGradActive
|| m_xLbTrgrGradientType->get_value_changed_from_saved()
|| m_xMtrTrgrAngle->get_value_changed_from_saved()
|| m_xMtrTrgrCenterX->get_value_changed_from_saved()
|| m_xMtrTrgrCenterY->get_value_changed_from_saved()
|| m_xMtrTrgrBorder->get_value_changed_from_saved()
|| m_xMtrTrgrStartValue->get_value_changed_from_saved()
|| m_xMtrTrgrEndValue->get_value_changed_from_saved())
{
basegfx::BGradient aTmpGradient(
createColorStops(),
static_cast<css::awt::GradientStyle>(m_xLbTrgrGradientType->get_active()),
Degree10(static_cast<sal_Int16>(m_xMtrTrgrAngle->get_value(FieldUnit::DEGREE)) * 10),
static_cast<sal_uInt16>(m_xMtrTrgrCenterX->get_value(FieldUnit::PERCENT)),
static_cast<sal_uInt16>(m_xMtrTrgrCenterY->get_value(FieldUnit::PERCENT)),
static_cast<sal_uInt16>(m_xMtrTrgrBorder->get_value(FieldUnit::PERCENT)),
100, 100);
XFillFloatTransparenceItem aItem(aTmpGradient);
const SfxPoolItem* pOld = GetOldItem(*rAttrs, XATTR_FILLFLOATTRANSPARENCE);
if(!pOld || !(*static_cast<const XFillFloatTransparenceItem*>(pOld) == aItem) || !bGradActive)
{
rAttrs->Put(aItem);
bModified = true;
bSwitchOffLinear = true;
}
}
}
else
{
// no transparence
bSwitchOffGradient = true;
bSwitchOffLinear = true;
}
// disable unused XFillFloatTransparenceItem
if(bSwitchOffGradient && (bGradActive || bGradUsed))
{
// basegfx::BGradient() default already creates [COL_BLACK, COL_WHITE] with same defaults
// basegfx::BGradient() default also sets the Start/EndIntensity to 100 already
basegfx::BGradient aGrad;
XFillFloatTransparenceItem aItem(aGrad);
aItem.SetEnabled(false);
rAttrs->Put(aItem);
bModified = true;
}
// disable unused XFillFloatTransparenceItem
if(bSwitchOffLinear && (bLinearActive || bLinearUsed))
{
XFillTransparenceItem aItem(0);
SdrPercentItem aShadowItem(makeSdrShadowTransparenceItem(0));
rAttrs->Put(aItem);
rAttrs->Put(aShadowItem);
bModified = true;
}
rAttrs->Put(CntUInt16Item(SID_PAGE_TYPE, static_cast<sal_uInt16>(nPageType)));
return bModified;
}
void SvxTransparenceTabPage::Reset(const SfxItemSet* rAttrs)
{
const XFillFloatTransparenceItem* pGradientItem =
rAttrs->GetItemIfSet(XATTR_FILLFLOATTRANSPARENCE);
bool bGradActive = (pGradientItem && pGradientItem->IsEnabled());
if(!pGradientItem)
pGradientItem = &rAttrs->Get(XATTR_FILLFLOATTRANSPARENCE);
const XFillTransparenceItem* pLinearItem =
rAttrs->GetItemIfSet(XATTR_FILLTRANSPARENCE);
bool bLinearActive = (pLinearItem && pLinearItem->GetValue() != 0);
if(!pLinearItem)
pLinearItem = &rAttrs->Get(XATTR_FILLTRANSPARENCE);
// transparence gradient
const basegfx::BGradient& rGradient = pGradientItem->GetGradientValue();
css::awt::GradientStyle eXGS(rGradient.GetGradientStyle());
m_xLbTrgrGradientType->set_active(sal::static_int_cast< sal_Int32 >(eXGS));
m_xMtrTrgrAngle->set_value(rGradient.GetAngle().get() / 10, FieldUnit::DEGREE);
m_xMtrTrgrBorder->set_value(rGradient.GetBorder(), FieldUnit::PERCENT);
m_xMtrTrgrCenterX->set_value(rGradient.GetXOffset(), FieldUnit::PERCENT);
m_xMtrTrgrCenterY->set_value(rGradient.GetYOffset(), FieldUnit::PERCENT);
const Color aStart(rGradient.GetColorStops().front().getStopColor());
const Color aEnd(rGradient.GetColorStops().back().getStopColor());
m_xMtrTrgrStartValue->set_value(static_cast<sal_uInt16>(((static_cast<sal_uInt16>(aStart.GetRed()) + 1) * 100) / 255), FieldUnit::PERCENT);
m_xMtrTrgrEndValue->set_value(static_cast<sal_uInt16>(((static_cast<sal_uInt16>(aEnd.GetRed()) + 1) * 100) / 255), FieldUnit::PERCENT);
// MCGR: preserve ColorStops if given
// tdf#155901 We need offset of first and last stop, so include them.
if (rGradient.GetColorStops().size() >= 2)
maColorStops = rGradient.GetColorStops();
else
maColorStops.clear();
// linear transparence
sal_uInt16 nTransp = pLinearItem->GetValue();
m_xMtrTransparent->set_value(bLinearActive ? nTransp : 50, FieldUnit::PERCENT);
ModifyTransparentHdl_Impl(*m_xMtrTransparent);
// select the correct radio button
if(bGradActive)
{
// transparence gradient, set controls appropriate to item
m_xRbtTransGradient->set_active(true);
ClickTransGradientHdl_Impl(*m_xRbtTransGradient);
}
else if(bLinearActive)
{
// linear transparence
m_xRbtTransLinear->set_active(true);
ClickTransLinearHdl_Impl(*m_xRbtTransLinear);
}
else
{
// no transparence
m_xRbtTransOff->set_active(true);
ClickTransOffHdl_Impl(*m_xRbtTransOff);
ModifiedTrgrHdl_Impl(nullptr);
}
// save values
ChangesApplied();
bool bActive = InitPreview ( *rAttrs );
InvalidatePreview ( bActive );
}
void SvxTransparenceTabPage::ChangesApplied()
{
m_xMtrTransparent->save_value();
m_xLbTrgrGradientType->save_value();
m_xMtrTrgrCenterX->save_value();
m_xMtrTrgrCenterY->save_value();
m_xMtrTrgrAngle->save_value();
m_xMtrTrgrBorder->save_value();
m_xMtrTrgrStartValue->save_value();
m_xMtrTrgrEndValue->save_value();
}
void SvxTransparenceTabPage::ActivatePage(const SfxItemSet& rSet)
{
const CntUInt16Item* pPageTypeItem = rSet.GetItem<SfxUInt16Item>(SID_PAGE_TYPE, false);
if (pPageTypeItem)
SetPageType(static_cast<PageType>(pPageTypeItem->GetValue()));
if(nDlgType == 0) // area dialog
nPageType = PageType::Transparence;
InitPreview ( rSet );
}
DeactivateRC SvxTransparenceTabPage::DeactivatePage(SfxItemSet* _pSet)
{
if( _pSet )
FillItemSet( _pSet );
return DeactivateRC::LeavePage;
}
// Preview-Methods
bool SvxTransparenceTabPage::InitPreview(const SfxItemSet& rSet)
{
// set transparencetype for preview
if (m_xRbtTransOff->get_active())
{
ClickTransOffHdl_Impl(*m_xRbtTransOff);
}
else if (m_xRbtTransLinear->get_active())
{
ClickTransLinearHdl_Impl(*m_xRbtTransLinear);
}
else if (m_xRbtTransGradient->get_active())
{
ClickTransGradientHdl_Impl(*m_xRbtTransGradient);
}
// Get fillstyle for preview
rSet.SetAccessTrackerIgnore(true);
m_aFillAttributeSet.Put ( rSet.Get(XATTR_FILLSTYLE) );
m_aFillAttributeSet.Put ( rSet.Get(XATTR_FILLCOLOR) );
m_aFillAttributeSet.Put ( rSet.Get(XATTR_FILLGRADIENT) );
m_aFillAttributeSet.Put ( rSet.Get(XATTR_FILLHATCH) );
m_aFillAttributeSet.Put ( rSet.Get(XATTR_FILLBACKGROUND) );
m_aFillAttributeSet.Put ( rSet.Get(XATTR_FILLBITMAP) );
m_aCtlXRectPreview.SetAttributes(m_aFillAttributeSet);
m_aCtlBitmapPreview.SetAttributes(m_aFillAttributeSet);
bBitmap = rSet.Get(XATTR_FILLSTYLE).GetValue() == drawing::FillStyle_BITMAP;
rSet.SetAccessTrackerIgnore(false);
// show the right preview window
if ( bBitmap )
{
m_xCtlBitmapBorder->show();
m_xCtlXRectBorder->hide();
}
else
{
m_xCtlBitmapBorder->hide();
m_xCtlXRectBorder->show();
}
return !m_xRbtTransOff->get_active();
}
void SvxTransparenceTabPage::InvalidatePreview (bool bEnable)
{
if ( bBitmap )
{
if ( bEnable )
{
m_xCtlBitmapPreview->set_sensitive(true);
m_aCtlBitmapPreview.SetAttributes(m_aFillAttributeSet);
}
else
m_xCtlBitmapPreview->set_sensitive(false);
m_xCtlBitmapPreview->queue_draw();
}
else
{
if ( bEnable )
{
m_xCtlXRectPreview->set_sensitive(true);
m_aCtlXRectPreview.SetAttributes(m_aFillAttributeSet);
}
else
m_xCtlXRectPreview->set_sensitive(false);
m_xCtlXRectPreview->queue_draw();
}
}
basegfx::BColorStops SvxTransparenceTabPage::createColorStops()
{
basegfx::BColor aStartBColor(m_xMtrTrgrStartValue->get_value(FieldUnit::PERCENT) / 100.0);
aStartBColor.clamp();
basegfx::BColor aEndBColor(m_xMtrTrgrEndValue->get_value(FieldUnit::PERCENT) / 100.0);
aEndBColor.clamp();
basegfx::BColorStops aColorStops = maColorStops;
aColorStops.changeStartAndEnd(aStartBColor, aEndBColor);
return aColorStops;
}
void SvxTransparenceTabPage::PageCreated(const SfxAllItemSet& aSet)
{
const SfxUInt16Item* pPageTypeItem = aSet.GetItem<SfxUInt16Item>(SID_PAGE_TYPE, false);
const SfxUInt16Item* pDlgTypeItem = aSet.GetItem<SfxUInt16Item>(SID_DLG_TYPE, false);
if (pPageTypeItem)
SetPageType(static_cast<PageType>(pPageTypeItem->GetValue()));
if (pDlgTypeItem)
SetDlgType(pDlgTypeItem->GetValue());
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */