summaryrefslogtreecommitdiff
path: root/cui
diff options
context:
space:
mode:
authorRishabh Kumar <kris.kr296@gmail.com>2016-04-25 18:41:29 +0530
committerKatarina Behrens <Katarina.Behrens@cib.de>2016-04-29 12:00:09 +0000
commitb1d4f658aa927ef0d62ffc387ab9593ad5dd8b3b (patch)
treec349a3ec0f6b00c019eb9818338c2c5e6e068396 /cui
parent554158f7d33742284905ed4953dd09041ea04a5d (diff)
Refactoring transparence tab code
Move transparence tab code out from Area tab code. Change-Id: Ia7276aa3b1c438b6c8cff89ab5ca3752ff6bcc0e Reviewed-on: https://gerrit.libreoffice.org/24368 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Katarina Behrens <Katarina.Behrens@cib.de>
Diffstat (limited to 'cui')
-rw-r--r--cui/Library_cui.mk1
-rw-r--r--cui/source/tabpages/tparea.cxx529
-rw-r--r--cui/source/tabpages/tptrans.cxx579
3 files changed, 580 insertions, 529 deletions
diff --git a/cui/Library_cui.mk b/cui/Library_cui.mk
index f835797230f6..7bb181d7f50c 100644
--- a/cui/Library_cui.mk
+++ b/cui/Library_cui.mk
@@ -205,6 +205,7 @@ $(eval $(call gb_Library_add_exception_objects,cui,\
cui/source/tabpages/tplnedef \
cui/source/tabpages/tplneend \
cui/source/tabpages/tpshadow \
+ cui/source/tabpages/tptrans \
cui/source/tabpages/transfrm \
cui/source/uno/services \
))
diff --git a/cui/source/tabpages/tparea.cxx b/cui/source/tabpages/tparea.cxx
index a85632c341fa..4ab7c8ec911a 100644
--- a/cui/source/tabpages/tparea.cxx
+++ b/cui/source/tabpages/tparea.cxx
@@ -57,535 +57,6 @@ const sal_uInt16 SvxAreaTabPage::pAreaRanges[] =
0
};
-const sal_uInt16 SvxTransparenceTabPage::pTransparenceRanges[] =
-{
- XATTR_FILLTRANSPARENCE,
- XATTR_FILLTRANSPARENCE,
- SDRATTR_SHADOWTRANSPARENCE,
- SDRATTR_SHADOWTRANSPARENCE,
- XATTR_FILLFLOATTRANSPARENCE,
- XATTR_FILLFLOATTRANSPARENCE,
- 0
-};
-
-/*************************************************************************
-|*
-|* Dialog for transparence
-|*
-\************************************************************************/
-
-IMPL_LINK_NOARG_TYPED(SvxTransparenceTabPage, ClickTransOffHdl_Impl, Button*, void)
-{
- // disable all other controls
- ActivateLinear(false);
- ActivateGradient(false);
-
- // Preview
- rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
- rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
- m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
- m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
-
- InvalidatePreview( false );
-}
-
-IMPL_LINK_NOARG_TYPED(SvxTransparenceTabPage, ClickTransLinearHdl_Impl, Button*, void)
-{
- // enable linear, disable other
- ActivateLinear(true);
- ActivateGradient(false);
-
- // preview
- rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
- ModifyTransparentHdl_Impl (*m_pMtrTransparent);
-}
-
-IMPL_LINK_NOARG_TYPED(SvxTransparenceTabPage, ClickTransGradientHdl_Impl, Button*, void)
-{
- // enable gradient, disable other
- ActivateLinear(false);
- ActivateGradient(true);
-
- // preview
- rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
- ModifiedTrgrHdl_Impl (nullptr);
-}
-
-SvxTransparenceTabPage::~SvxTransparenceTabPage()
-{
- disposeOnce();
-}
-
-void SvxTransparenceTabPage::dispose()
-{
- m_pRbtTransOff.clear();
- m_pRbtTransLinear.clear();
- m_pRbtTransGradient.clear();
- m_pMtrTransparent.clear();
- m_pGridGradient.clear();
- m_pLbTrgrGradientType.clear();
- m_pFtTrgrCenterX.clear();
- m_pMtrTrgrCenterX.clear();
- m_pFtTrgrCenterY.clear();
- m_pMtrTrgrCenterY.clear();
- m_pFtTrgrAngle.clear();
- m_pMtrTrgrAngle.clear();
- m_pMtrTrgrBorder.clear();
- m_pMtrTrgrStartValue.clear();
- m_pMtrTrgrEndValue.clear();
- m_pCtlBitmapPreview.clear();
- m_pCtlXRectPreview.clear();
- SvxTabPage::dispose();
-}
-
-void SvxTransparenceTabPage::ActivateLinear(bool bActivate)
-{
- m_pMtrTransparent->Enable(bActivate);
-}
-
-IMPL_LINK_NOARG_TYPED(SvxTransparenceTabPage, ModifyTransparentHdl_Impl, Edit&, void)
-{
- sal_uInt16 nPos = (sal_uInt16)m_pMtrTransparent->GetValue();
- XFillTransparenceItem aItem(nPos);
- rXFSet.Put(XFillTransparenceItem(aItem));
-
- // preview
- InvalidatePreview();
-}
-
-IMPL_LINK_TYPED(SvxTransparenceTabPage, ModifiedTrgrListBoxHdl_Impl, ListBox&, rListBox, void)
-{
- ModifiedTrgrHdl_Impl(&rListBox);
-}
-IMPL_LINK_TYPED(SvxTransparenceTabPage, ModifiedTrgrEditHdl_Impl, Edit&, rBox, void)
-{
- ModifiedTrgrHdl_Impl(&rBox);
-}
-void SvxTransparenceTabPage::ModifiedTrgrHdl_Impl(void* pControl)
-{
- if(pControl == m_pLbTrgrGradientType || pControl == this)
- {
- css::awt::GradientStyle eXGS = (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos();
- SetControlState_Impl( eXGS );
- }
-
- // preview
- sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrStartValue->GetValue() * 255) / 100);
- sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrEndValue->GetValue() * 255) / 100);
- XGradient aTmpGradient(
- Color(nStartCol, nStartCol, nStartCol),
- Color(nEndCol, nEndCol, nEndCol),
- (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos(),
- (sal_uInt16)m_pMtrTrgrAngle->GetValue() * 10,
- (sal_uInt16)m_pMtrTrgrCenterX->GetValue(),
- (sal_uInt16)m_pMtrTrgrCenterY->GetValue(),
- (sal_uInt16)m_pMtrTrgrBorder->GetValue(),
- 100, 100);
-
- XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aTmpGradient);
- rXFSet.Put ( aItem );
-
- InvalidatePreview();
-}
-
-void SvxTransparenceTabPage::ActivateGradient(bool bActivate)
-{
- m_pGridGradient->Enable(bActivate);
-
- if(bActivate)
- {
- css::awt::GradientStyle eXGS = (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos();
- SetControlState_Impl( eXGS );
- }
-}
-
-void SvxTransparenceTabPage::SetControlState_Impl(css::awt::GradientStyle eXGS)
-{
- switch(eXGS)
- {
- case css::awt::GradientStyle_LINEAR:
- case css::awt::GradientStyle_AXIAL:
- m_pFtTrgrCenterX->Disable();
- m_pMtrTrgrCenterX->Disable();
- m_pFtTrgrCenterY->Disable();
- m_pMtrTrgrCenterY->Disable();
- m_pFtTrgrAngle->Enable();
- m_pMtrTrgrAngle->Enable();
- break;
-
- case css::awt::GradientStyle_RADIAL:
- m_pFtTrgrCenterX->Enable();
- m_pMtrTrgrCenterX->Enable();
- m_pFtTrgrCenterY->Enable();
- m_pMtrTrgrCenterY->Enable();
- m_pFtTrgrAngle->Disable();
- m_pMtrTrgrAngle->Disable();
- break;
-
- case css::awt::GradientStyle_ELLIPTICAL:
- m_pFtTrgrCenterX->Enable();
- m_pMtrTrgrCenterX->Enable();
- m_pFtTrgrCenterY->Enable();
- m_pMtrTrgrCenterY->Enable();
- m_pFtTrgrAngle->Enable();
- m_pMtrTrgrAngle->Enable();
- break;
-
- case css::awt::GradientStyle_SQUARE:
- case css::awt::GradientStyle_RECT:
- m_pFtTrgrCenterX->Enable();
- m_pMtrTrgrCenterX->Enable();
- m_pFtTrgrCenterY->Enable();
- m_pMtrTrgrCenterY->Enable();
- m_pFtTrgrAngle->Enable();
- m_pMtrTrgrAngle->Enable();
- break;
- default:
- break;
- }
-}
-
-SvxTransparenceTabPage::SvxTransparenceTabPage(vcl::Window* pParent, const SfxItemSet& rInAttrs)
-: SvxTabPage ( pParent,
- "TransparencyTabPage",
- "cui/ui/transparencytabpage.ui",
- rInAttrs),
- rOutAttrs ( rInAttrs ),
- eRP ( RP_LT ),
- nPageType (0),
- nDlgType (0),
- bBitmap ( false ),
- aXFillAttr ( rInAttrs.GetPool() ),
- rXFSet ( aXFillAttr.GetItemSet() )
-{
- get(m_pRbtTransOff,"RBT_TRANS_OFF");
- get(m_pRbtTransLinear,"RBT_TRANS_LINEAR");
- get(m_pRbtTransGradient,"RBT_TRANS_GRADIENT");
-
- get(m_pMtrTransparent,"MTR_TRANSPARENT");
-
- get(m_pGridGradient,"gridGradient");
- get(m_pLbTrgrGradientType,"LB_TRGR_GRADIENT_TYPES");
- get(m_pFtTrgrCenterX,"FT_TRGR_CENTER_X");
- get(m_pMtrTrgrCenterX,"MTR_TRGR_CENTER_X");
- get(m_pFtTrgrCenterY,"FT_TRGR_CENTER_Y");
- get(m_pMtrTrgrCenterY,"MTR_TRGR_CENTER_Y");
- get(m_pFtTrgrAngle,"FT_TRGR_ANGLE");
- get(m_pMtrTrgrAngle,"MTR_TRGR_ANGLE");
- get(m_pMtrTrgrBorder,"MTR_TRGR_BORDER");
- get(m_pMtrTrgrStartValue,"MTR_TRGR_START_VALUE");
- get(m_pMtrTrgrEndValue,"MTR_TRGR_END_VALUE");
-
- get(m_pCtlBitmapPreview,"CTL_BITMAP_PREVIEW");
- get(m_pCtlXRectPreview,"CTL_TRANS_PREVIEW");
-
- // main selection
- m_pRbtTransOff->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransOffHdl_Impl));
- m_pRbtTransLinear->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransLinearHdl_Impl));
- m_pRbtTransGradient->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransGradientHdl_Impl));
-
- // linear transparency
- m_pMtrTransparent->SetValue( 50 );
- m_pMtrTransparent->SetModifyHdl(LINK(this, SvxTransparenceTabPage, ModifyTransparentHdl_Impl));
-
- // gradient transparency
- m_pMtrTrgrEndValue->SetValue( 100 );
- m_pMtrTrgrStartValue->SetValue( 0 );
- Link<Edit&,void> aLink = LINK( this, SvxTransparenceTabPage, ModifiedTrgrEditHdl_Impl);
- m_pLbTrgrGradientType->SetSelectHdl( LINK( this, SvxTransparenceTabPage, ModifiedTrgrListBoxHdl_Impl) );
- m_pMtrTrgrCenterX->SetModifyHdl( aLink );
- m_pMtrTrgrCenterY->SetModifyHdl( aLink );
- m_pMtrTrgrAngle->SetModifyHdl( aLink );
- m_pMtrTrgrBorder->SetModifyHdl( aLink );
- m_pMtrTrgrStartValue->SetModifyHdl( aLink );
- m_pMtrTrgrEndValue->SetModifyHdl( aLink );
-
- // this page needs ExchangeSupport
- SetExchangeSupport();
-}
-
-VclPtr<SfxTabPage> SvxTransparenceTabPage::Create(vcl::Window* pWindow, const SfxItemSet* rAttrs)
-{
- return VclPtr<SvxTransparenceTabPage>::Create(pWindow, *rAttrs);
-}
-
-bool SvxTransparenceTabPage::FillItemSet(SfxItemSet* rAttrs)
-{
- const SfxPoolItem* pGradientItem = nullptr;
- const SfxPoolItem* 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 && static_cast<const XFillTransparenceItem*>(pLinearItem)->GetValue() != 0);
-
- bool bGradUsed = (eStateGradient == SfxItemState::DONTCARE);
- bool bLinearUsed = (eStateLinear == SfxItemState::DONTCARE);
-
- bool bModified(false);
- bool bSwitchOffLinear(false);
- bool bSwitchOffGradient(false);
-
- if(m_pMtrTransparent->IsEnabled())
- {
- // linear transparence
- sal_uInt16 nPos = (sal_uInt16)m_pMtrTransparent->GetValue();
- if(m_pMtrTransparent->IsValueChangedFromSaved() || !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_pLbTrgrGradientType->IsEnabled())
- {
- // transparence gradient, fill ItemSet from values
- if(!bGradActive
- || m_pLbTrgrGradientType->IsValueChangedFromSaved()
- || m_pMtrTrgrAngle->IsValueChangedFromSaved()
- || m_pMtrTrgrCenterX->IsValueChangedFromSaved()
- || m_pMtrTrgrCenterY->IsValueChangedFromSaved()
- || m_pMtrTrgrBorder->IsValueChangedFromSaved()
- || m_pMtrTrgrStartValue->IsValueChangedFromSaved()
- || m_pMtrTrgrEndValue->IsValueChangedFromSaved() )
- {
- sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrStartValue->GetValue() * 255) / 100);
- sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrEndValue->GetValue() * 255) / 100);
- XGradient aTmpGradient(
- Color(nStartCol, nStartCol, nStartCol),
- Color(nEndCol, nEndCol, nEndCol),
- (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos(),
- (sal_uInt16)m_pMtrTrgrAngle->GetValue() * 10,
- (sal_uInt16)m_pMtrTrgrCenterX->GetValue(),
- (sal_uInt16)m_pMtrTrgrCenterY->GetValue(),
- (sal_uInt16)m_pMtrTrgrBorder->GetValue(),
- 100, 100);
-
- XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, 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))
- {
- Color aColor(COL_BLACK);
- XGradient aGrad(aColor, Color(COL_WHITE));
- aGrad.SetStartIntens(100);
- aGrad.SetEndIntens(100);
- XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, 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,nPageType));
- return bModified;
-}
-
-void SvxTransparenceTabPage::Reset(const SfxItemSet* rAttrs)
-{
- const SfxPoolItem* pGradientItem = nullptr;
- SfxItemState eStateGradient(rAttrs->GetItemState(XATTR_FILLFLOATTRANSPARENCE, true, &pGradientItem));
- if(!pGradientItem)
- pGradientItem = &rAttrs->Get(XATTR_FILLFLOATTRANSPARENCE);
- bool bGradActive = (eStateGradient == SfxItemState::SET && static_cast<const XFillFloatTransparenceItem*>(pGradientItem)->IsEnabled());
-
- const SfxPoolItem* pLinearItem = nullptr;
- SfxItemState eStateLinear(rAttrs->GetItemState(XATTR_FILLTRANSPARENCE, true, &pLinearItem));
- if(!pLinearItem)
- pLinearItem = &rAttrs->Get(XATTR_FILLTRANSPARENCE);
- bool bLinearActive = (eStateLinear == SfxItemState::SET && static_cast<const XFillTransparenceItem*>(pLinearItem)->GetValue() != 0);
-
- // transparence gradient
- const XGradient& rGradient = static_cast<const XFillFloatTransparenceItem*>(pGradientItem)->GetGradientValue();
- css::awt::GradientStyle eXGS(rGradient.GetGradientStyle());
- m_pLbTrgrGradientType->SelectEntryPos(sal::static_int_cast< sal_Int32 >(eXGS));
- m_pMtrTrgrAngle->SetValue(rGradient.GetAngle() / 10);
- m_pMtrTrgrBorder->SetValue(rGradient.GetBorder());
- m_pMtrTrgrCenterX->SetValue(rGradient.GetXOffset());
- m_pMtrTrgrCenterY->SetValue(rGradient.GetYOffset());
- m_pMtrTrgrStartValue->SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetStartColor().GetRed() + 1) * 100) / 255));
- m_pMtrTrgrEndValue->SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetEndColor().GetRed() + 1) * 100) / 255));
-
- // linear transparence
- sal_uInt16 nTransp = static_cast<const XFillTransparenceItem*>(pLinearItem)->GetValue();
- m_pMtrTransparent->SetValue(bLinearActive ? nTransp : 50);
- ModifyTransparentHdl_Impl(*m_pMtrTransparent);
-
- // select the correct radio button
- if(bGradActive)
- {
- // transparence gradient, set controls appropriate to item
- m_pRbtTransGradient->Check();
- ClickTransGradientHdl_Impl(nullptr);
- }
- else if(bLinearActive)
- {
- // linear transparence
- m_pRbtTransLinear->Check();
- ClickTransLinearHdl_Impl(nullptr);
- }
- else
- {
- // no transparence
- m_pRbtTransOff->Check();
- ClickTransOffHdl_Impl(nullptr);
- ModifiedTrgrHdl_Impl(nullptr);
- }
-
- // save values
- ChangesApplied();
- bool bActive = InitPreview ( *rAttrs );
- InvalidatePreview ( bActive );
-}
-
-void SvxTransparenceTabPage::ChangesApplied()
-{
- m_pMtrTransparent->SaveValue();
- m_pLbTrgrGradientType->SaveValue();
- m_pMtrTrgrCenterX->SaveValue();
- m_pMtrTrgrCenterY->SaveValue();
- m_pMtrTrgrAngle->SaveValue();
- m_pMtrTrgrBorder->SaveValue();
- m_pMtrTrgrStartValue->SaveValue();
- m_pMtrTrgrEndValue->SaveValue();
-}
-
-void SvxTransparenceTabPage::ActivatePage(const SfxItemSet& rSet)
-{
- const CntUInt16Item* pPageTypeItem = rSet.GetItem<CntUInt16Item>(SID_PAGE_TYPE, false);
- if (pPageTypeItem)
- SetPageType(pPageTypeItem->GetValue());
-
- if(nDlgType == 0) // area dialog
- nPageType = PT_TRANSPARENCE;
-
- InitPreview ( rSet );
-}
-
-SfxTabPage::sfxpg SvxTransparenceTabPage::DeactivatePage(SfxItemSet* _pSet)
-{
- if( _pSet )
- FillItemSet( _pSet );
- return LEAVE_PAGE;
-}
-
-void SvxTransparenceTabPage::PointChanged(vcl::Window* , RECT_POINT eRcPt)
-{
- eRP = eRcPt;
-}
-
-
-// Preview-Methods
-
-bool SvxTransparenceTabPage::InitPreview ( const SfxItemSet& rSet )
-{
- // set transparencetyp for preview
- if ( m_pRbtTransOff->IsChecked() )
- {
- ClickTransOffHdl_Impl(nullptr);
- } else if ( m_pRbtTransLinear->IsChecked() )
- {
- ClickTransLinearHdl_Impl(nullptr);
- } else if ( m_pRbtTransGradient->IsChecked() )
- {
- ClickTransGradientHdl_Impl(nullptr);
- }
-
- // Get fillstyle for preview
- rXFSet.Put ( static_cast<const XFillStyleItem&>( rSet.Get(XATTR_FILLSTYLE)) );
- rXFSet.Put ( static_cast<const XFillColorItem&>( rSet.Get(XATTR_FILLCOLOR)) );
- rXFSet.Put ( static_cast<const XFillGradientItem&>( rSet.Get(XATTR_FILLGRADIENT)) );
- rXFSet.Put ( static_cast<const XFillHatchItem&>( rSet.Get(XATTR_FILLHATCH)) );
- rXFSet.Put ( static_cast<const XFillBackgroundItem&>(rSet.Get(XATTR_FILLBACKGROUND)) );
- rXFSet.Put ( static_cast<const XFillBitmapItem&>( rSet.Get(XATTR_FILLBITMAP)) );
-
- m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
- m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
-
- bBitmap = static_cast<const XFillStyleItem&>( rSet.Get(XATTR_FILLSTYLE) ).GetValue() == drawing::FillStyle_BITMAP;
-
- // show the right preview window
- if ( bBitmap )
- {
- m_pCtlBitmapPreview->Show();
- m_pCtlXRectPreview->Hide();
- }
- else
- {
- m_pCtlBitmapPreview->Hide();
- m_pCtlXRectPreview->Show();
- }
-
- return !m_pRbtTransOff->IsChecked();
-}
-
-void SvxTransparenceTabPage::InvalidatePreview (bool bEnable)
-{
- if ( bBitmap )
- {
- if ( bEnable )
- {
- m_pCtlBitmapPreview->Enable();
- m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
- }
- else
- m_pCtlBitmapPreview->Disable();
- m_pCtlBitmapPreview->Invalidate();
- }
- else
- {
- if ( bEnable )
- {
- m_pCtlXRectPreview->Enable();
- m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
- }
- else
- m_pCtlXRectPreview->Disable();
- m_pCtlXRectPreview->Invalidate();
- }
-}
-
-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(pPageTypeItem->GetValue());
- if (pDlgTypeItem)
- SetDlgType(pDlgTypeItem->GetValue());
-}
-
/*************************************************************************
|*
|* Dialog to modify fill-attributes
diff --git a/cui/source/tabpages/tptrans.cxx b/cui/source/tabpages/tptrans.cxx
new file mode 100644
index 000000000000..e2f20b962cb2
--- /dev/null
+++ b/cui/source/tabpages/tptrans.cxx
@@ -0,0 +1,579 @@
+/* -*- 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 <stdlib.h>
+
+#include <tools/urlobj.hxx>
+#include <sfx2/app.hxx>
+#include <sfx2/module.hxx>
+#include <svx/dialogs.hrc>
+
+#include "svx/xattr.hxx"
+#include <svx/xpool.hxx>
+#include <cuires.hrc>
+#include <svx/xflbckit.hxx>
+#include <svx/svdattr.hxx>
+#include <svx/xtable.hxx>
+#include <svx/xlineit0.hxx>
+#include "svx/drawitem.hxx"
+#include "cuitabarea.hxx"
+#include "dlgname.hxx"
+#include <dialmgr.hxx>
+#include "svx/dlgutil.hxx"
+#include <svl/intitem.hxx>
+#include <sfx2/request.hxx>
+#include "paragrph.hrc"
+
+#include "sfx2/opengrf.hxx"
+#include <vcl/layout.hxx>
+
+using namespace com::sun::star;
+
+const sal_uInt16 SvxTransparenceTabPage::pTransparenceRanges[] =
+{
+ XATTR_FILLTRANSPARENCE,
+ XATTR_FILLTRANSPARENCE,
+ SDRATTR_SHADOWTRANSPARENCE,
+ SDRATTR_SHADOWTRANSPARENCE,
+ XATTR_FILLFLOATTRANSPARENCE,
+ XATTR_FILLFLOATTRANSPARENCE,
+ 0
+};
+
+/*************************************************************************
+|*
+|* Dialog for transparence
+|*
+\************************************************************************/
+
+IMPL_LINK_NOARG_TYPED(SvxTransparenceTabPage, ClickTransOffHdl_Impl, Button*, void)
+{
+ // disable all other controls
+ ActivateLinear(false);
+ ActivateGradient(false);
+
+ // Preview
+ rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
+ rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
+ m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
+ m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
+
+ InvalidatePreview( false );
+}
+
+IMPL_LINK_NOARG_TYPED(SvxTransparenceTabPage, ClickTransLinearHdl_Impl, Button*, void)
+{
+ // enable linear, disable other
+ ActivateLinear(true);
+ ActivateGradient(false);
+
+ // preview
+ rXFSet.ClearItem (XATTR_FILLFLOATTRANSPARENCE);
+ ModifyTransparentHdl_Impl (*m_pMtrTransparent);
+}
+
+IMPL_LINK_NOARG_TYPED(SvxTransparenceTabPage, ClickTransGradientHdl_Impl, Button*, void)
+{
+ // enable gradient, disable other
+ ActivateLinear(false);
+ ActivateGradient(true);
+
+ // preview
+ rXFSet.ClearItem (XATTR_FILLTRANSPARENCE);
+ ModifiedTrgrHdl_Impl (nullptr);
+}
+
+SvxTransparenceTabPage::~SvxTransparenceTabPage()
+{
+ disposeOnce();
+}
+
+void SvxTransparenceTabPage::dispose()
+{
+ m_pRbtTransOff.clear();
+ m_pRbtTransLinear.clear();
+ m_pRbtTransGradient.clear();
+ m_pMtrTransparent.clear();
+ m_pGridGradient.clear();
+ m_pLbTrgrGradientType.clear();
+ m_pFtTrgrCenterX.clear();
+ m_pMtrTrgrCenterX.clear();
+ m_pFtTrgrCenterY.clear();
+ m_pMtrTrgrCenterY.clear();
+ m_pFtTrgrAngle.clear();
+ m_pMtrTrgrAngle.clear();
+ m_pMtrTrgrBorder.clear();
+ m_pMtrTrgrStartValue.clear();
+ m_pMtrTrgrEndValue.clear();
+ m_pCtlBitmapPreview.clear();
+ m_pCtlXRectPreview.clear();
+ SvxTabPage::dispose();
+}
+
+void SvxTransparenceTabPage::ActivateLinear(bool bActivate)
+{
+ m_pMtrTransparent->Enable(bActivate);
+}
+
+IMPL_LINK_NOARG_TYPED(SvxTransparenceTabPage, ModifyTransparentHdl_Impl, Edit&, void)
+{
+ sal_uInt16 nPos = (sal_uInt16)m_pMtrTransparent->GetValue();
+ XFillTransparenceItem aItem(nPos);
+ rXFSet.Put(XFillTransparenceItem(aItem));
+
+ // preview
+ InvalidatePreview();
+}
+
+IMPL_LINK_TYPED(SvxTransparenceTabPage, ModifiedTrgrListBoxHdl_Impl, ListBox&, rListBox, void)
+{
+ ModifiedTrgrHdl_Impl(&rListBox);
+}
+
+IMPL_LINK_TYPED(SvxTransparenceTabPage, ModifiedTrgrEditHdl_Impl, Edit&, rBox, void)
+{
+ ModifiedTrgrHdl_Impl(&rBox);
+}
+
+void SvxTransparenceTabPage::ModifiedTrgrHdl_Impl(void* pControl)
+{
+ if(pControl == m_pLbTrgrGradientType || pControl == this)
+ {
+ css::awt::GradientStyle eXGS = (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos();
+ SetControlState_Impl( eXGS );
+ }
+
+ // preview
+ sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrStartValue->GetValue() * 255) / 100);
+ sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrEndValue->GetValue() * 255) / 100);
+ XGradient aTmpGradient(
+ Color(nStartCol, nStartCol, nStartCol),
+ Color(nEndCol, nEndCol, nEndCol),
+ (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos(),
+ (sal_uInt16)m_pMtrTrgrAngle->GetValue() * 10,
+ (sal_uInt16)m_pMtrTrgrCenterX->GetValue(),
+ (sal_uInt16)m_pMtrTrgrCenterY->GetValue(),
+ (sal_uInt16)m_pMtrTrgrBorder->GetValue(),
+ 100, 100);
+
+ XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, aTmpGradient);
+ rXFSet.Put ( aItem );
+
+ InvalidatePreview();
+}
+
+void SvxTransparenceTabPage::ActivateGradient(bool bActivate)
+{
+ m_pGridGradient->Enable(bActivate);
+
+ if(bActivate)
+ {
+ css::awt::GradientStyle eXGS = (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos();
+ SetControlState_Impl( eXGS );
+ }
+}
+
+void SvxTransparenceTabPage::SetControlState_Impl(css::awt::GradientStyle eXGS)
+{
+ switch(eXGS)
+ {
+ case css::awt::GradientStyle_LINEAR:
+ case css::awt::GradientStyle_AXIAL:
+ m_pFtTrgrCenterX->Disable();
+ m_pMtrTrgrCenterX->Disable();
+ m_pFtTrgrCenterY->Disable();
+ m_pMtrTrgrCenterY->Disable();
+ m_pFtTrgrAngle->Enable();
+ m_pMtrTrgrAngle->Enable();
+ break;
+
+ case css::awt::GradientStyle_RADIAL:
+ m_pFtTrgrCenterX->Enable();
+ m_pMtrTrgrCenterX->Enable();
+ m_pFtTrgrCenterY->Enable();
+ m_pMtrTrgrCenterY->Enable();
+ m_pFtTrgrAngle->Disable();
+ m_pMtrTrgrAngle->Disable();
+ break;
+
+ case css::awt::GradientStyle_ELLIPTICAL:
+ m_pFtTrgrCenterX->Enable();
+ m_pMtrTrgrCenterX->Enable();
+ m_pFtTrgrCenterY->Enable();
+ m_pMtrTrgrCenterY->Enable();
+ m_pFtTrgrAngle->Enable();
+ m_pMtrTrgrAngle->Enable();
+ break;
+
+ case css::awt::GradientStyle_SQUARE:
+ case css::awt::GradientStyle_RECT:
+ m_pFtTrgrCenterX->Enable();
+ m_pMtrTrgrCenterX->Enable();
+ m_pFtTrgrCenterY->Enable();
+ m_pMtrTrgrCenterY->Enable();
+ m_pFtTrgrAngle->Enable();
+ m_pMtrTrgrAngle->Enable();
+ break;
+ default:
+ break;
+ }
+}
+
+SvxTransparenceTabPage::SvxTransparenceTabPage(vcl::Window* pParent, const SfxItemSet& rInAttrs)
+: SvxTabPage ( pParent,
+ "TransparencyTabPage",
+ "cui/ui/transparencytabpage.ui",
+ rInAttrs),
+ rOutAttrs ( rInAttrs ),
+ eRP ( RP_LT ),
+ nPageType (0),
+ nDlgType (0),
+ bBitmap ( false ),
+ aXFillAttr ( rInAttrs.GetPool() ),
+ rXFSet ( aXFillAttr.GetItemSet() )
+{
+ get(m_pRbtTransOff,"RBT_TRANS_OFF");
+ get(m_pRbtTransLinear,"RBT_TRANS_LINEAR");
+ get(m_pRbtTransGradient,"RBT_TRANS_GRADIENT");
+
+ get(m_pMtrTransparent,"MTR_TRANSPARENT");
+
+ get(m_pGridGradient,"gridGradient");
+ get(m_pLbTrgrGradientType,"LB_TRGR_GRADIENT_TYPES");
+ get(m_pFtTrgrCenterX,"FT_TRGR_CENTER_X");
+ get(m_pMtrTrgrCenterX,"MTR_TRGR_CENTER_X");
+ get(m_pFtTrgrCenterY,"FT_TRGR_CENTER_Y");
+ get(m_pMtrTrgrCenterY,"MTR_TRGR_CENTER_Y");
+ get(m_pFtTrgrAngle,"FT_TRGR_ANGLE");
+ get(m_pMtrTrgrAngle,"MTR_TRGR_ANGLE");
+ get(m_pMtrTrgrBorder,"MTR_TRGR_BORDER");
+ get(m_pMtrTrgrStartValue,"MTR_TRGR_START_VALUE");
+ get(m_pMtrTrgrEndValue,"MTR_TRGR_END_VALUE");
+
+ get(m_pCtlBitmapPreview,"CTL_BITMAP_PREVIEW");
+ get(m_pCtlXRectPreview,"CTL_TRANS_PREVIEW");
+
+ // main selection
+ m_pRbtTransOff->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransOffHdl_Impl));
+ m_pRbtTransLinear->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransLinearHdl_Impl));
+ m_pRbtTransGradient->SetClickHdl(LINK(this, SvxTransparenceTabPage, ClickTransGradientHdl_Impl));
+
+ // linear transparency
+ m_pMtrTransparent->SetValue( 50 );
+ m_pMtrTransparent->SetModifyHdl(LINK(this, SvxTransparenceTabPage, ModifyTransparentHdl_Impl));
+
+ // gradient transparency
+ m_pMtrTrgrEndValue->SetValue( 100 );
+ m_pMtrTrgrStartValue->SetValue( 0 );
+ Link<Edit&,void> aLink = LINK( this, SvxTransparenceTabPage, ModifiedTrgrEditHdl_Impl);
+ m_pLbTrgrGradientType->SetSelectHdl( LINK( this, SvxTransparenceTabPage, ModifiedTrgrListBoxHdl_Impl) );
+ m_pMtrTrgrCenterX->SetModifyHdl( aLink );
+ m_pMtrTrgrCenterY->SetModifyHdl( aLink );
+ m_pMtrTrgrAngle->SetModifyHdl( aLink );
+ m_pMtrTrgrBorder->SetModifyHdl( aLink );
+ m_pMtrTrgrStartValue->SetModifyHdl( aLink );
+ m_pMtrTrgrEndValue->SetModifyHdl( aLink );
+
+ // this page needs ExchangeSupport
+ SetExchangeSupport();
+}
+
+VclPtr<SfxTabPage> SvxTransparenceTabPage::Create(vcl::Window* pWindow, const SfxItemSet* rAttrs)
+{
+ return VclPtr<SvxTransparenceTabPage>::Create(pWindow, *rAttrs);
+}
+
+bool SvxTransparenceTabPage::FillItemSet(SfxItemSet* rAttrs)
+{
+ const SfxPoolItem* pGradientItem = nullptr;
+ const SfxPoolItem* 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 && static_cast<const XFillTransparenceItem*>(pLinearItem)->GetValue() != 0);
+
+ bool bGradUsed = (eStateGradient == SfxItemState::DONTCARE);
+ bool bLinearUsed = (eStateLinear == SfxItemState::DONTCARE);
+
+ bool bModified(false);
+ bool bSwitchOffLinear(false);
+ bool bSwitchOffGradient(false);
+
+ if(m_pMtrTransparent->IsEnabled())
+ {
+ // linear transparence
+ sal_uInt16 nPos = (sal_uInt16)m_pMtrTransparent->GetValue();
+ if(m_pMtrTransparent->IsValueChangedFromSaved() || !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_pLbTrgrGradientType->IsEnabled())
+ {
+ // transparence gradient, fill ItemSet from values
+ if(!bGradActive
+ || m_pLbTrgrGradientType->IsValueChangedFromSaved()
+ || m_pMtrTrgrAngle->IsValueChangedFromSaved()
+ || m_pMtrTrgrCenterX->IsValueChangedFromSaved()
+ || m_pMtrTrgrCenterY->IsValueChangedFromSaved()
+ || m_pMtrTrgrBorder->IsValueChangedFromSaved()
+ || m_pMtrTrgrStartValue->IsValueChangedFromSaved()
+ || m_pMtrTrgrEndValue->IsValueChangedFromSaved() )
+ {
+ sal_uInt8 nStartCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrStartValue->GetValue() * 255) / 100);
+ sal_uInt8 nEndCol = (sal_uInt8)(((sal_uInt16)m_pMtrTrgrEndValue->GetValue() * 255) / 100);
+ XGradient aTmpGradient(
+ Color(nStartCol, nStartCol, nStartCol),
+ Color(nEndCol, nEndCol, nEndCol),
+ (css::awt::GradientStyle)m_pLbTrgrGradientType->GetSelectEntryPos(),
+ (sal_uInt16)m_pMtrTrgrAngle->GetValue() * 10,
+ (sal_uInt16)m_pMtrTrgrCenterX->GetValue(),
+ (sal_uInt16)m_pMtrTrgrCenterY->GetValue(),
+ (sal_uInt16)m_pMtrTrgrBorder->GetValue(),
+ 100, 100);
+
+ XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, 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))
+ {
+ Color aColor(COL_BLACK);
+ XGradient aGrad(aColor, Color(COL_WHITE));
+ aGrad.SetStartIntens(100);
+ aGrad.SetEndIntens(100);
+ XFillFloatTransparenceItem aItem( rXFSet.GetPool()/*aString*/, 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,nPageType));
+ return bModified;
+}
+
+void SvxTransparenceTabPage::Reset(const SfxItemSet* rAttrs)
+{
+ const SfxPoolItem* pGradientItem = nullptr;
+ SfxItemState eStateGradient(rAttrs->GetItemState(XATTR_FILLFLOATTRANSPARENCE, true, &pGradientItem));
+ if(!pGradientItem)
+ pGradientItem = &rAttrs->Get(XATTR_FILLFLOATTRANSPARENCE);
+ bool bGradActive = (eStateGradient == SfxItemState::SET && static_cast<const XFillFloatTransparenceItem*>(pGradientItem)->IsEnabled());
+
+ const SfxPoolItem* pLinearItem = nullptr;
+ SfxItemState eStateLinear(rAttrs->GetItemState(XATTR_FILLTRANSPARENCE, true, &pLinearItem));
+ if(!pLinearItem)
+ pLinearItem = &rAttrs->Get(XATTR_FILLTRANSPARENCE);
+ bool bLinearActive = (eStateLinear == SfxItemState::SET && static_cast<const XFillTransparenceItem*>(pLinearItem)->GetValue() != 0);
+
+ // transparence gradient
+ const XGradient& rGradient = static_cast<const XFillFloatTransparenceItem*>(pGradientItem)->GetGradientValue();
+ css::awt::GradientStyle eXGS(rGradient.GetGradientStyle());
+ m_pLbTrgrGradientType->SelectEntryPos(sal::static_int_cast< sal_Int32 >(eXGS));
+ m_pMtrTrgrAngle->SetValue(rGradient.GetAngle() / 10);
+ m_pMtrTrgrBorder->SetValue(rGradient.GetBorder());
+ m_pMtrTrgrCenterX->SetValue(rGradient.GetXOffset());
+ m_pMtrTrgrCenterY->SetValue(rGradient.GetYOffset());
+ m_pMtrTrgrStartValue->SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetStartColor().GetRed() + 1) * 100) / 255));
+ m_pMtrTrgrEndValue->SetValue((sal_uInt16)((((sal_uInt16)rGradient.GetEndColor().GetRed() + 1) * 100) / 255));
+
+ // linear transparence
+ sal_uInt16 nTransp = static_cast<const XFillTransparenceItem*>(pLinearItem)->GetValue();
+ m_pMtrTransparent->SetValue(bLinearActive ? nTransp : 50);
+ ModifyTransparentHdl_Impl(*m_pMtrTransparent);
+
+ // select the correct radio button
+ if(bGradActive)
+ {
+ // transparence gradient, set controls appropriate to item
+ m_pRbtTransGradient->Check();
+ ClickTransGradientHdl_Impl(nullptr);
+ }
+ else if(bLinearActive)
+ {
+ // linear transparence
+ m_pRbtTransLinear->Check();
+ ClickTransLinearHdl_Impl(nullptr);
+ }
+ else
+ {
+ // no transparence
+ m_pRbtTransOff->Check();
+ ClickTransOffHdl_Impl(nullptr);
+ ModifiedTrgrHdl_Impl(nullptr);
+ }
+
+ // save values
+ ChangesApplied();
+ bool bActive = InitPreview ( *rAttrs );
+ InvalidatePreview ( bActive );
+}
+
+void SvxTransparenceTabPage::ChangesApplied()
+{
+ m_pMtrTransparent->SaveValue();
+ m_pLbTrgrGradientType->SaveValue();
+ m_pMtrTrgrCenterX->SaveValue();
+ m_pMtrTrgrCenterY->SaveValue();
+ m_pMtrTrgrAngle->SaveValue();
+ m_pMtrTrgrBorder->SaveValue();
+ m_pMtrTrgrStartValue->SaveValue();
+ m_pMtrTrgrEndValue->SaveValue();
+}
+
+void SvxTransparenceTabPage::ActivatePage(const SfxItemSet& rSet)
+{
+ const CntUInt16Item* pPageTypeItem = rSet.GetItem<CntUInt16Item>(SID_PAGE_TYPE, false);
+ if (pPageTypeItem)
+ SetPageType(pPageTypeItem->GetValue());
+
+ if(nDlgType == 0) // area dialog
+ nPageType = PT_TRANSPARENCE;
+
+ InitPreview ( rSet );
+}
+
+SfxTabPage::sfxpg SvxTransparenceTabPage::DeactivatePage(SfxItemSet* _pSet)
+{
+ if( _pSet )
+ FillItemSet( _pSet );
+ return LEAVE_PAGE;
+}
+
+void SvxTransparenceTabPage::PointChanged(vcl::Window* , RECT_POINT eRcPt)
+{
+ eRP = eRcPt;
+}
+
+
+// Preview-Methods
+
+bool SvxTransparenceTabPage::InitPreview ( const SfxItemSet& rSet )
+{
+ // set transparencetyp for preview
+ if ( m_pRbtTransOff->IsChecked() )
+ {
+ ClickTransOffHdl_Impl(nullptr);
+ } else if ( m_pRbtTransLinear->IsChecked() )
+ {
+ ClickTransLinearHdl_Impl(nullptr);
+ } else if ( m_pRbtTransGradient->IsChecked() )
+ {
+ ClickTransGradientHdl_Impl(nullptr);
+ }
+
+ // Get fillstyle for preview
+ rXFSet.Put ( static_cast<const XFillStyleItem&>( rSet.Get(XATTR_FILLSTYLE)) );
+ rXFSet.Put ( static_cast<const XFillColorItem&>( rSet.Get(XATTR_FILLCOLOR)) );
+ rXFSet.Put ( static_cast<const XFillGradientItem&>( rSet.Get(XATTR_FILLGRADIENT)) );
+ rXFSet.Put ( static_cast<const XFillHatchItem&>( rSet.Get(XATTR_FILLHATCH)) );
+ rXFSet.Put ( static_cast<const XFillBackgroundItem&>(rSet.Get(XATTR_FILLBACKGROUND)) );
+ rXFSet.Put ( static_cast<const XFillBitmapItem&>( rSet.Get(XATTR_FILLBITMAP)) );
+
+ m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
+ m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
+
+ bBitmap = static_cast<const XFillStyleItem&>( rSet.Get(XATTR_FILLSTYLE) ).GetValue() == drawing::FillStyle_BITMAP;
+
+ // show the right preview window
+ if ( bBitmap )
+ {
+ m_pCtlBitmapPreview->Show();
+ m_pCtlXRectPreview->Hide();
+ }
+ else
+ {
+ m_pCtlBitmapPreview->Hide();
+ m_pCtlXRectPreview->Show();
+ }
+
+ return !m_pRbtTransOff->IsChecked();
+}
+
+void SvxTransparenceTabPage::InvalidatePreview (bool bEnable)
+{
+ if ( bBitmap )
+ {
+ if ( bEnable )
+ {
+ m_pCtlBitmapPreview->Enable();
+ m_pCtlBitmapPreview->SetAttributes( aXFillAttr.GetItemSet() );
+ }
+ else
+ m_pCtlBitmapPreview->Disable();
+ m_pCtlBitmapPreview->Invalidate();
+ }
+ else
+ {
+ if ( bEnable )
+ {
+ m_pCtlXRectPreview->Enable();
+ m_pCtlXRectPreview->SetAttributes( aXFillAttr.GetItemSet() );
+ }
+ else
+ m_pCtlXRectPreview->Disable();
+ m_pCtlXRectPreview->Invalidate();
+ }
+}
+
+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(pPageTypeItem->GetValue());
+ if (pDlgTypeItem)
+ SetDlgType(pDlgTypeItem->GetValue());
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */