/* -*- 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 . */ #ifndef INCLUDED_CUI_SOURCE_INC_CUITABAREA_HXX #define INCLUDED_CUI_SOURCE_INC_CUITABAREA_HXX #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include class SdrModel; class SvxBitmapCtl; enum class PageType { Area, Gradient, Hatch, Bitmap, Color, Shadow, Transparence, Unknown = 0xFFFF }; /************************************************************************/ class SvxAreaTabDialog : public SfxTabDialog { sal_uInt16 m_nAreaTabPage; sal_uInt16 m_nShadowTabPage; sal_uInt16 m_nTransparenceTabPage; sal_uInt16 m_nColorTabPage; sal_uInt16 m_nGradientTabPage; sal_uInt16 m_nHatchTabPage; sal_uInt16 m_nBitmapTabPage; sal_uInt16 m_nPatternTabPage; private: SdrModel* mpDrawModel; XColorListRef mpColorList; XColorListRef mpNewColorList; XGradientListRef mpGradientList; XGradientListRef mpNewGradientList; XHatchListRef mpHatchingList; XHatchListRef mpNewHatchingList; XBitmapListRef mpBitmapList; XBitmapListRef mpNewBitmapList; XPatternListRef mpPatternList; XPatternListRef mpNewPatternList; const SfxItemSet& mrOutAttrs; ChangeType mnColorListState; ChangeType mnBitmapListState; ChangeType mnPatternListState; ChangeType mnGradientListState; ChangeType mnHatchingListState; PageType mnPageType; sal_Int32 mnPos; bool mbAreaTP; virtual void PageCreated( sal_uInt16 nId, SfxTabPage &rPage ) override; protected: virtual short Ok() override; DECL_LINK_TYPED( CancelHdlImpl, Button*, void ); void SavePalettes(); public: SvxAreaTabDialog( vcl::Window* pParent, const SfxItemSet* pAttr, SdrModel* pModel, bool bShadow ); void SetNewColorList( XColorListRef const & pColorList ) { mpNewColorList = pColorList; } const XColorListRef& GetNewColorList() const { return mpNewColorList; } const XColorListRef& GetColorList() const { return mpColorList; } void SetNewGradientList( XGradientListRef const & pGrdLst) { mpNewGradientList = pGrdLst; } const XGradientListRef& GetNewGradientList() const { return mpNewGradientList; } void SetNewHatchingList( XHatchListRef const & pHtchLst) { mpNewHatchingList = pHtchLst; } const XHatchListRef& GetNewHatchingList() const { return mpNewHatchingList; } void SetNewBitmapList( XBitmapListRef const & pBmpLst) { mpNewBitmapList = pBmpLst; } const XBitmapListRef& GetNewBitmapList() const { return mpNewBitmapList; } void SetNewPatternList( XPatternListRef const & pPtrnLst ) { mpNewPatternList = pPtrnLst; } const XPatternListRef& GetNewPatternList() const { return mpNewPatternList; } }; /************************************************************************/ class SvxTransparenceTabPage : public SvxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; static const sal_uInt16 pTransparenceRanges[]; const SfxItemSet& rOutAttrs; RectPoint eRP; PageType nPageType; sal_uInt16 nDlgType; // main selection VclPtr m_pRbtTransOff; VclPtr m_pRbtTransLinear; VclPtr m_pRbtTransGradient; /// linear transparency VclPtr m_pMtrTransparent; // gradient transparency VclPtr m_pGridGradient; VclPtr m_pLbTrgrGradientType; VclPtr m_pFtTrgrCenterX; VclPtr m_pMtrTrgrCenterX; VclPtr m_pFtTrgrCenterY; VclPtr m_pMtrTrgrCenterY; VclPtr m_pFtTrgrAngle; VclPtr m_pMtrTrgrAngle; VclPtr m_pMtrTrgrBorder; VclPtr m_pMtrTrgrStartValue; VclPtr m_pMtrTrgrEndValue; // preview VclPtr m_pCtlBitmapPreview; VclPtr m_pCtlXRectPreview; bool bBitmap; XFillAttrSetItem aXFillAttr; SfxItemSet& rXFSet; DECL_LINK_TYPED(ClickTransOffHdl_Impl, Button*, void ); DECL_LINK_TYPED(ClickTransLinearHdl_Impl, Button*, void ); DECL_LINK_TYPED(ClickTransGradientHdl_Impl, Button*, void ); DECL_LINK_TYPED(ModifyTransparentHdl_Impl, Edit&, void); DECL_LINK_TYPED(ModifiedTrgrEditHdl_Impl, Edit&, void); DECL_LINK_TYPED(ModifiedTrgrListBoxHdl_Impl, ListBox&, void); void ModifiedTrgrHdl_Impl(void*); void ActivateLinear(bool bActivate); void ActivateGradient(bool bActivate); void SetControlState_Impl(css::awt::GradientStyle eXGS); bool InitPreview ( const SfxItemSet& rSet ); void InvalidatePreview (bool bEnable = true ); public: SvxTransparenceTabPage(vcl::Window* pParent, const SfxItemSet& rInAttrs); virtual ~SvxTransparenceTabPage() override; virtual void dispose() override; static VclPtr Create(vcl::Window*, const SfxItemSet*); static const sal_uInt16* GetRanges() { return pTransparenceRanges; } virtual bool FillItemSet(SfxItemSet*) override; virtual void Reset(const SfxItemSet*) override; virtual void ChangesApplied() override; virtual void ActivatePage(const SfxItemSet& rSet) override; virtual DeactivateRC DeactivatePage(SfxItemSet* pSet) override; virtual void PointChanged(vcl::Window* pWindow, RectPoint eRP) override; void SetPageType(PageType nInType) { nPageType = nInType; } void SetDlgType(sal_uInt16 nInType) { nDlgType = nInType; } virtual void PageCreated(const SfxAllItemSet& aSet) override; }; /************************************************************************/ class SvxAreaTabPage : public SvxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; static const sal_uInt16 pAreaRanges[]; private: VclPtr m_pTypeLB; VclPtr m_pFillLB; VclPtr m_pLbColor; VclPtr m_pLbGradient; VclPtr m_pLbHatching; VclPtr m_pLbBitmap; VclPtr m_pCtlBitmapPreview; VclPtr m_pCtlXRectPreview; const SfxItemSet& m_rOutAttrs; RectPoint m_eRP; XColorListRef m_pColorList; XGradientListRef m_pGradientList; XHatchListRef m_pHatchingList; XBitmapListRef m_pBitmapList; // Placeholders for pointer-based entries; these will be inited // to point to these so that the page is usable without that // SvxAreaTabDialog has to call the setter methods (e.g. SetColorChgd). // Without that the pages used in SvxAreaTabDialog are not usable ChangeType maFixed_ChangeType; bool maFixed_sal_Bool; ChangeType* m_pnColorListState; ChangeType* m_pnBitmapListState; ChangeType* m_pnGradientListState; ChangeType* m_pnHatchingListState; PageType m_nPageType; sal_uInt16 m_nDlgType; sal_Int32 m_nPos; bool* m_pbAreaTP; XFillAttrSetItem m_aXFillAttr; SfxItemSet& m_rXFSet; MapUnit m_ePoolUnit; DECL_LINK_TYPED(SelectDialogTypeHdl_Impl, ListBox&, void); DECL_LINK_TYPED( ModifyColorHdl_Impl, ListBox&, void ); DECL_LINK_TYPED( ModifyGradientHdl_Impl, ListBox&, void ); DECL_LINK_TYPED( ModifyHatchingHdl_Impl, ListBox&, void ); DECL_LINK_TYPED( ModifyBitmapHdl_Impl, ListBox&, void ); DECL_LINK_TYPED( ModifyTileHdl_Impl, Edit&, void ); DECL_LINK_TYPED( ModifyTileClickHdl_Impl, Button*, void ); DECL_LINK_TYPED( ClickScaleHdl_Impl, Button*, void ); void ClickInvisibleHdl_Impl(); void ClickHatchingHdl_Impl(); void ClickGradientHdl_Impl(); void ClickColorHdl_Impl(); void ClickBitmapHdl_Impl(); public: SvxAreaTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ); virtual ~SvxAreaTabPage() override; virtual void dispose() override; void Construct(); static VclPtr Create( vcl::Window*, const SfxItemSet* ); static const sal_uInt16* GetRanges() { return pAreaRanges; } virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet * ) override; virtual void ChangesApplied() override; virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; virtual void PointChanged( vcl::Window* pWindow, RectPoint eRP ) override; void SetColorList( XColorListRef const & pColorList ) { m_pColorList = pColorList; } void SetGradientList( XGradientListRef const & pGrdLst) { m_pGradientList = pGrdLst; } void SetHatchingList( XHatchListRef const & pHtchLst) { m_pHatchingList = pHtchLst; } void SetBitmapList( XBitmapListRef const & pBmpLst) { m_pBitmapList = pBmpLst; } void SetPageType( PageType nInType ) { m_nPageType = nInType; } void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } void SetPos( sal_uInt16 nInPos ) { m_nPos = nInPos; } void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } virtual void PageCreated(const SfxAllItemSet& aSet) override; void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } void SetGrdChgd( ChangeType* pIn ) { m_pnGradientListState = pIn; } void SetHtchChgd( ChangeType* pIn ) { m_pnHatchingListState = pIn; } void SetBmpChgd( ChangeType* pIn ) { m_pnBitmapListState = pIn; } }; class SvxShadowTabPage : public SvxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; static const sal_uInt16 pShadowRanges[]; private: VclPtr m_pTsbShowShadow; VclPtr m_pGridShadow; VclPtr m_pCtlPosition; VclPtr m_pMtrDistance; VclPtr m_pLbShadowColor; VclPtr m_pMtrTransparent; VclPtr m_pCtlXRectPreview; const SfxItemSet& m_rOutAttrs; RectPoint m_eRP; XColorListRef m_pColorList; ChangeType* m_pnColorListState; PageType m_nPageType; sal_uInt16 m_nDlgType; bool* m_pbAreaTP; XFillAttrSetItem m_aXFillAttr; SfxItemSet& m_rXFSet; MapUnit m_ePoolUnit; DECL_LINK_TYPED( ClickShadowHdl_Impl, Button*, void ); DECL_LINK_TYPED( ModifyShadowHdl_Impl, Edit&, void ); DECL_LINK_TYPED( SelectShadowHdl_Impl, ListBox&, void ); public: SvxShadowTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ); virtual ~SvxShadowTabPage() override; virtual void dispose() override; void Construct(); static VclPtr Create( vcl::Window*, const SfxItemSet* ); static const sal_uInt16* GetRanges() { return pShadowRanges; } virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet * ) override; virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; virtual void PointChanged( vcl::Window* pWindow, RectPoint eRP ) override; void SetColorList( XColorListRef const & pColorList ) { m_pColorList = pColorList; } void SetPageType( PageType nInType ) { m_nPageType = nInType; } void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } virtual void PageCreated(const SfxAllItemSet& aSet) override; }; /************************************************************************/ class SvxGradientTabPage : public SfxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; private: VclPtr m_pLbGradientType; VclPtr m_pFtCenter; VclPtr m_pMtrCenterX; VclPtr m_pMtrCenterY; VclPtr m_pFtAngle; VclPtr m_pMtrAngle; VclPtr m_pMtrBorder; VclPtr m_pSliderBorder; VclPtr m_pLbColorFrom; VclPtr m_pMtrColorFrom; VclPtr m_pLbColorTo; VclPtr m_pMtrColorTo; VclPtr m_pGradientLB; VclPtr m_pMtrIncrement; VclPtr m_pCbIncrement; VclPtr m_pSliderIncrement; VclPtr m_pCtlPreview; VclPtr m_pBtnAdd; VclPtr m_pBtnModify; const SfxItemSet& m_rOutAttrs; XColorListRef m_pColorList; XGradientListRef m_pGradientList; ChangeType* m_pnGradientListState; ChangeType* m_pnColorListState; PageType* m_pPageType; sal_uInt16 m_nDlgType; sal_Int32* m_pPos; bool* m_pbAreaTP; XFillStyleItem m_aXFStyleItem; XFillGradientItem m_aXGradientItem; XFillAttrSetItem m_aXFillAttr; SfxItemSet& m_rXFSet; DECL_LINK_TYPED( ClickAddHdl_Impl, Button*, void ); DECL_LINK_TYPED( ClickModifyHdl_Impl, Button*, void ); DECL_LINK_TYPED( ChangeGradientHdl, ValueSet*, void ); void ChangeGradientHdl_Impl(); DECL_LINK_TYPED( ClickRenameHdl_Impl, SvxPresetListBox*, void ); DECL_LINK_TYPED( ClickDeleteHdl_Impl, SvxPresetListBox*, void ); DECL_LINK_TYPED( ModifiedEditHdl_Impl, Edit&, void ); DECL_LINK_TYPED( ModifiedListBoxHdl_Impl, ListBox&, void ); DECL_LINK_TYPED( ChangeAutoStepHdl_Impl, CheckBox&, void ); DECL_LINK_TYPED( ModifiedSliderHdl_Impl, Slider*, void ); void ModifiedHdl_Impl(void*); void SetControlState_Impl( css::awt::GradientStyle eXGS ); sal_Int32 SearchGradientList(const OUString& rGradientName); public: SvxGradientTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ); virtual ~SvxGradientTabPage() override; virtual void dispose() override; void Construct(); static VclPtr Create( vcl::Window*, const SfxItemSet* ); virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet * ) override; virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; void SetColorList( XColorListRef const & pColorList ) { m_pColorList = pColorList; } void SetGradientList( XGradientListRef const & pGrdLst) { m_pGradientList = pGrdLst; } void SetPageType( PageType* pInType ) { m_pPageType = pInType; } void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } void SetPos( sal_Int32* pInPos ) { m_pPos = pInPos; } void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } void SetGrdChgd( ChangeType* pIn ) { m_pnGradientListState = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } }; /************************************************************************/ class SvxHatchTabPage : public SvxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; private: VclPtr m_pMtrDistance; VclPtr m_pMtrAngle; VclPtr m_pSliderAngle; VclPtr m_pLbLineType; VclPtr m_pLbLineColor; VclPtr m_pCbBackgroundColor; VclPtr m_pLbBackgroundColor; VclPtr m_pHatchLB; VclPtr m_pCtlPreview; VclPtr m_pBtnAdd; VclPtr m_pBtnModify; const SfxItemSet& m_rOutAttrs; XColorListRef m_pColorList; XHatchListRef m_pHatchingList; ChangeType* m_pnHatchingListState; ChangeType* m_pnColorListState; PageType* m_pPageType; sal_uInt16 m_nDlgType; sal_Int32* m_pPos; bool* m_pbAreaTP; XFillStyleItem m_aXFStyleItem; XFillHatchItem m_aXHatchItem; XFillAttrSetItem m_aXFillAttr; SfxItemSet& m_rXFSet; MapUnit m_ePoolUnit; DECL_LINK_TYPED( ChangeHatchHdl, ValueSet*, void ); void ChangeHatchHdl_Impl(); DECL_LINK_TYPED( ModifiedEditHdl_Impl, Edit&, void ); DECL_LINK_TYPED( ModifiedListBoxHdl_Impl, ListBox&, void ); DECL_LINK_TYPED( ToggleHatchBackgroundColor_Impl, CheckBox&, void ); DECL_LINK_TYPED( ModifiedBackgroundHdl_Impl, ListBox&, void ); DECL_LINK_TYPED( ModifiedSliderHdl_Impl, Slider*, void ); void ModifiedHdl_Impl(void*); DECL_LINK_TYPED( ClickAddHdl_Impl, Button*, void ); DECL_LINK_TYPED( ClickModifyHdl_Impl, Button*, void ); DECL_LINK_TYPED( ClickRenameHdl_Impl, SvxPresetListBox*, void ); DECL_LINK_TYPED( ClickDeleteHdl_Impl, SvxPresetListBox*, void ); sal_Int32 SearchHatchList(const OUString& rHatchName); public: SvxHatchTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ); virtual ~SvxHatchTabPage() override; virtual void dispose() override; void Construct(); static VclPtr Create( vcl::Window*, const SfxItemSet* ); virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet * ) override; virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; virtual void PointChanged( vcl::Window* pWindow, RectPoint eRP ) override; void SetColorList( XColorListRef const & pColorList ) { m_pColorList = pColorList; } void SetHatchingList( XHatchListRef const & pHtchLst) { m_pHatchingList = pHtchLst; } void SetPageType( PageType* pInType ) { m_pPageType = pInType; } void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } void SetPos( sal_Int32* pInPos ) { m_pPos = pInPos; } void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } void SetHtchChgd( ChangeType* pIn ) { m_pnHatchingListState = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } virtual void DataChanged( const DataChangedEvent& rDCEvt ) override; }; /************************************************************************/ class SvxBitmapTabPage : public SvxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; static const sal_uInt16 pBitmapRanges[]; private: VclPtr m_pBitmapLB; VclPtr m_pBitmapStyleLB; VclPtr m_pSizeBox; VclPtr m_pTsbScale; VclPtr m_pBitmapWidth; VclPtr m_pBitmapHeight; VclPtr m_pPositionBox; VclPtr m_pPositionLB; VclPtr m_pPositionOffBox; VclPtr m_pPositionOffX; VclPtr m_pPositionOffY; VclPtr m_pTileOffBox; VclPtr m_pTileOffLB; VclPtr m_pTileOffset; VclPtr m_pBtnImport; VclPtr m_pCtlBitmapPreview; const SfxItemSet& m_rOutAttrs; XBitmapListRef m_pBitmapList; ChangeType* m_pnBitmapListState; XFillStyleItem m_aXFStyleItem; XFillBitmapItem m_aXBitmapItem; double m_fObjectWidth; double m_fObjectHeight; PageType* m_nPageType; sal_uInt16 m_nDlgType; sal_Int32* m_nPos; bool* m_pbAreaTP; XFillAttrSetItem m_aXFillAttr; SfxItemSet& m_rXFSet; const SdrView* mpView; MapUnit mePoolUnit; Size rBitmapSize; Size rFilledSize; Size rZoomedSize; sal_Int64 nFilledWidthPercent; sal_Int64 nFilledHeightPercent; sal_Int64 nZoomedWidthPercent; sal_Int64 nZoomedHeightPercent; DECL_LINK_TYPED( ModifyBitmapHdl, ValueSet*, void ); DECL_LINK_TYPED( ClickScaleHdl, Button*, void ); DECL_LINK_TYPED( ModifyBitmapStyleHdl, ListBox&, void ); DECL_LINK_TYPED( ModifyBitmapSizeHdl, Edit&, void ); DECL_LINK_TYPED( ModifyBitmapPositionHdl, ListBox&, void ); DECL_LINK_TYPED( ModifyPositionOffsetHdl, Edit&, void ); DECL_LINK_TYPED( ModifyTileOffsetHdl, Edit&, void ); DECL_LINK_TYPED( ClickRenameHdl, SvxPresetListBox*, void ); DECL_LINK_TYPED( ClickDeleteHdl, SvxPresetListBox*, void ); DECL_LINK_TYPED( ClickImportHdl, Button*, void ); void ClickBitmapHdl_Impl(); void CalculateBitmapPresetSize(); sal_Int32 SearchBitmapList(const OUString& rBitmapName); public: SvxBitmapTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ); virtual ~SvxBitmapTabPage() override; virtual void dispose() override; void Construct(); static VclPtr Create( vcl::Window*, const SfxItemSet* ); static const sal_uInt16* GetRanges() { return pBitmapRanges; } virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet * ) override; virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; virtual void PointChanged( vcl::Window* pWindow, RectPoint eRP ) override; void SetBitmapList( const XBitmapListRef& pBmpLst) { m_pBitmapList = pBmpLst; } void SetPageType( PageType* pInType ) { m_nPageType = pInType; } void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } void SetPos( sal_Int32* pInPos ) { m_nPos = pInPos; } void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } void SetBmpChgd( ChangeType* pIn ) { m_pnBitmapListState = pIn; } }; /************************************************************************/ class SvxPatternTabPage : public SvxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; private: VclPtr m_pBxPixelEditor; VclPtr m_pCtlPixel; VclPtr m_pLbColor; VclPtr m_pLbBackgroundColor; VclPtr m_pPatternLB; VclPtr m_pCtlPreview; VclPtr m_pBtnAdd; VclPtr m_pBtnModify; VclPtr m_pBtnDelete; SvxBitmapCtl* m_pBitmapCtl; const SfxItemSet& m_rOutAttrs; XColorListRef m_pColorList; XPatternListRef m_pPatternList; ChangeType* m_pnPatternListState; ChangeType* m_pnColorListState; PageType* m_pPageType; sal_uInt16 m_nDlgType; sal_Int32* m_pPos; bool* m_pbAreaTP; bool m_bPtrnChanged; XFillStyleItem m_aXFStyleItem; XFillBitmapItem m_aXPatternItem; XFillAttrSetItem m_aXFillAttr; SfxItemSet& m_rXFSet; DECL_LINK_TYPED( ClickAddHdl_Impl, Button*, void ); DECL_LINK_TYPED( ClickModifyHdl_Impl, Button*, void ); DECL_LINK_TYPED( ChangePatternHdl_Impl, ValueSet*, void ); DECL_LINK_TYPED( ChangeColorHdl_Impl, ListBox&, void ); DECL_LINK_TYPED( ClickRenameHdl_Impl, SvxPresetListBox*, void ); DECL_LINK_TYPED( ClickDeleteHdl_Impl, SvxPresetListBox*, void ); public: SvxPatternTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ); virtual ~SvxPatternTabPage() override; virtual void dispose() override; void Construct(); static VclPtr Create( vcl::Window*, const SfxItemSet* ); virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet * ) override; virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; virtual void PointChanged( vcl::Window* pWindow, RectPoint eRP ) override; void SetColorList( XColorListRef const & pColorList ) { m_pColorList = pColorList; } void SetPatternList( XPatternListRef const & pPatternList) { m_pPatternList = pPatternList; } void SetPageType( PageType* pInType ) { m_pPageType = pInType; } void SetDlgType( sal_uInt16 nInType ) { m_nDlgType = nInType; } void SetPos( sal_Int32* pInPos ) { m_pPos = pInPos; } void SetAreaTP( bool* pIn ) { m_pbAreaTP = pIn; } void SetPtrnChgd( ChangeType* pIn ) { m_pnPatternListState = pIn; } void SetColorChgd( ChangeType* pIn ) { m_pnColorListState = pIn; } void ChangeColor_Impl(); }; /************************************************************************/ enum class ColorModel { RGB, CMYK // can be extend with more models, e.g. HSV }; struct SvxColorTabPageShadow; class SvxColorTabPage : public SfxTabPage { using TabPage::ActivatePage; using TabPage::DeactivatePage; private: XPropertyListType meType; VclPtr mpTopDlg; SvxColorTabPageShadow *pShadow; PaletteManager maPaletteManager; VclPtr m_pSelectPalette; VclPtr m_pValSetColorList; VclPtr m_pValSetRecentList; VclPtr m_pCtlPreviewOld; VclPtr m_pCtlPreviewNew; VclPtr m_pRbRGB; VclPtr m_pRbCMYK; VclPtr m_pRGBcustom; VclPtr m_pRGBpreset; VclPtr m_pRcustom; VclPtr m_pRpreset; VclPtr m_pGcustom; VclPtr m_pGpreset; VclPtr m_pBcustom; VclPtr m_pBpreset; VclPtr m_pHexpreset; VclPtr m_pHexcustom; VclPtr m_pCMYKcustom; VclPtr m_pCMYKpreset; VclPtr m_pCcustom; VclPtr m_pCpreset; VclPtr m_pYcustom; VclPtr m_pYpreset; VclPtr m_pMcustom; VclPtr m_pMpreset; VclPtr m_pKcustom; VclPtr m_pKpreset; VclPtr m_pBtnAdd; VclPtr m_pBtnDelete; VclPtr m_pBtnWorkOn; const SfxItemSet& rOutAttrs; XColorListRef pColorList; ChangeType* pnColorListState; PageType* pPageType; sal_uInt16 nDlgType; sal_Int32* pPos; bool* pbAreaTP; XFillStyleItem aXFStyleItem; XFillColorItem aXFillColorItem; XFillAttrSetItem aXFillAttr; SfxItemSet& rXFSet; ColorModel eCM; Color aPreviousColor; Color aCurrentColor; static void ConvertColorValues (Color& rColor, ColorModel eModell); static void RgbToCmyk_Impl( Color& rColor, sal_uInt16& rK ); static void CmykToRgb_Impl( Color& rColor, const sal_uInt16 nKey ); sal_uInt16 ColorToPercent_Impl( sal_uInt16 nColor ); sal_uInt16 PercentToColor_Impl( sal_uInt16 nPercent ); void ImpColorCountChanged(); void FillPaletteLB(); DECL_LINK_TYPED( ClickAddHdl_Impl, Button*, void ); DECL_LINK_TYPED( ClickWorkOnHdl_Impl, Button*, void ); DECL_LINK_TYPED( ClickDeleteHdl_Impl, Button*, void ); DECL_LINK_TYPED( SelectPaletteLBHdl, ListBox&, void ); DECL_LINK_TYPED( SelectValSetHdl_Impl, ValueSet*, void ); DECL_LINK_TYPED( SelectColorModeHdl_Impl, RadioButton&, void ); void ChangeColor(const Color &rNewColor); void SetColorModel(ColorModel eModel); void ChangeColorModel(); void UpdateColorValues(); static sal_Int32 SearchColorList(OUString const & aColorName); DECL_LINK_TYPED( ModifiedHdl_Impl, Edit&, void ); void UpdateModified(); css::uno::Reference< css::uno::XComponentContext > m_context; public: SvxColorTabPage( vcl::Window* pParent, const SfxItemSet& rInAttrs ); virtual ~SvxColorTabPage() override; virtual void dispose() override; void Construct(); static VclPtr Create( vcl::Window*, const SfxItemSet* ); virtual bool FillItemSet( SfxItemSet* ) override; virtual void Reset( const SfxItemSet * ) override; virtual void ActivatePage( const SfxItemSet& rSet ) override; virtual DeactivateRC DeactivatePage( SfxItemSet* pSet ) override; void SetPropertyList( XPropertyListType t, const XPropertyListRef &xRef ); void SetColorList( const XColorListRef& pColList ); const XColorListRef& GetColorList() { return pColorList; } void SetPageType( PageType* pInType ) { pPageType = pInType; } void SetDlgType( sal_uInt16 nInType ) { nDlgType = nInType; } void SetPos( sal_Int32* pInPos ) { pPos = pInPos; } void SetAreaTP( bool* pIn ) { pbAreaTP = pIn; } void SetColorChgd( ChangeType* pIn ) { pnColorListState = pIn; } virtual void FillUserData() override; bool IsModified() { return bool(*pnColorListState & ChangeType::MODIFIED); } void SetModified(bool bIsModified) { if (bIsModified) *pnColorListState |= ChangeType::MODIFIED; else *pnColorListState &= ~ChangeType::MODIFIED; } void AddState(ChangeType nState) { *pnColorListState |= nState; } void Update(bool bLoaded); }; #endif // INCLUDED_CUI_SOURCE_INC_CUITABAREA_HXX /* vim:set shiftwidth=4 softtabstop=4 expandtab: */