diff options
Diffstat (limited to 'sc/inc/patattr.hxx')
-rw-r--r-- | sc/inc/patattr.hxx | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/sc/inc/patattr.hxx b/sc/inc/patattr.hxx new file mode 100644 index 000000000000..65d350455ddd --- /dev/null +++ b/sc/inc/patattr.hxx @@ -0,0 +1,196 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: patattr.hxx,v $ + * $Revision: 1.14.32.1 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef SC_SCPATATR_HXX +#define SC_SCPATATR_HXX + +#include <svl/poolitem.hxx> +#include <svl/itemset.hxx> +#include <unotools/fontcvt.hxx> +#include <svx/svxenum.hxx> +#include "scdllapi.h" + +class Font; +class OutputDevice; +class Fraction; +class ScStyleSheet; +class SvNumberFormatter; +class ScDocument; + + +// how to treat COL_AUTO in GetFont: + +enum ScAutoFontColorMode +{ + SC_AUTOCOL_RAW, // COL_AUTO is returned + SC_AUTOCOL_BLACK, // always use black + SC_AUTOCOL_PRINT, // black or white, depending on background + SC_AUTOCOL_DISPLAY, // from style settings, or black/white if needed + SC_AUTOCOL_IGNOREFONT, // like DISPLAY, but ignore stored font color (assume COL_AUTO) + SC_AUTOCOL_IGNOREBACK, // like DISPLAY, but ignore stored background color (use configured color) + SC_AUTOCOL_IGNOREALL // like DISPLAY, but ignore stored font and background colors +}; + + +class SC_DLLPUBLIC ScPatternAttr: public SfxSetItem +{ + String* pName; + ScStyleSheet* pStyle; +public: + static ScDocument* pDoc; + ScPatternAttr(SfxItemSet* pItemSet, const String& rStyleName); + ScPatternAttr(SfxItemSet* pItemSet, ScStyleSheet* pStyleSheet = NULL); + ScPatternAttr(SfxItemPool* pItemPool); + ScPatternAttr(const ScPatternAttr& rPatternAttr); + + ~ScPatternAttr(); + + virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const; + virtual SfxPoolItem* Create(SvStream& rStream, USHORT nVersion) const; + virtual SvStream& Store(SvStream& rStream, USHORT nItemVersion) const; + + virtual int operator==(const SfxPoolItem& rCmp) const; + + const SfxPoolItem& GetItem( USHORT nWhichP ) const + { return GetItemSet().Get(nWhichP); } + + static const SfxPoolItem& GetItem( USHORT nWhich, const SfxItemSet& rItemSet, const SfxItemSet* pCondSet ); + const SfxPoolItem& GetItem( USHORT nWhich, const SfxItemSet* pCondSet ) const; + + // pWhich sind keine Ranges, sondern einzelne IDs, 0-terminiert + BOOL HasItemsSet( const USHORT* pWhich ) const; + void ClearItems( const USHORT* pWhich ); + + void DeleteUnchanged( const ScPatternAttr* pOldAttrs ); + + static SvxCellOrientation GetCellOrientation( const SfxItemSet& rItemSet, const SfxItemSet* pCondSet = 0 ); + SvxCellOrientation GetCellOrientation( const SfxItemSet* pCondSet = 0 ) const; + + /** Static helper function to fill a font object from the passed item set. */ + static void GetFont( Font& rFont, const SfxItemSet& rItemSet, + ScAutoFontColorMode eAutoMode, + OutputDevice* pOutDev = NULL, + const Fraction* pScale = NULL, + const SfxItemSet* pCondSet = NULL, + BYTE nScript = 0, const Color* pBackConfigColor = NULL, + const Color* pTextConfigColor = NULL ); + /** Fills a font object from the own item set. */ + void GetFont( Font& rFont, ScAutoFontColorMode eAutoMode, + OutputDevice* pOutDev = NULL, + const Fraction* pScale = NULL, + const SfxItemSet* pCondSet = NULL, + BYTE nScript = 0, const Color* pBackConfigColor = NULL, + const Color* pTextConfigColor = NULL ) const; + + /** Converts all Calc items contained in rSrcSet to edit engine items and puts them into rEditSet. */ + static void FillToEditItemSet( SfxItemSet& rEditSet, const SfxItemSet& rSrcSet, const SfxItemSet* pCondSet = NULL ); + /** Converts all Calc items contained in the own item set to edit engine items and puts them into pEditSet. */ + void FillEditItemSet( SfxItemSet* pEditSet, const SfxItemSet* pCondSet = NULL ) const; + + /** Converts all edit engine items contained in rEditSet to Calc items and puts them into rDestSet. */ + static void GetFromEditItemSet( SfxItemSet& rDestSet, const SfxItemSet& rEditSet ); + /** Converts all edit engine items contained in pEditSet to Calc items and puts them into the own item set. */ + void GetFromEditItemSet( const SfxItemSet* pEditSet ); + + void FillEditParaItems( SfxItemSet* pSet ) const; + + ScPatternAttr* PutInPool( ScDocument* pDestDoc, ScDocument* pSrcDoc ) const; + + void SetStyleSheet(ScStyleSheet* pNewStyle); + const ScStyleSheet* GetStyleSheet() const { return pStyle; } + const String* GetStyleName() const; + void UpdateStyleSheet(); + void StyleToName(); + + BOOL IsVisible() const; + BOOL IsVisibleEqual( const ScPatternAttr& rOther ) const; + + /** If font is an old symbol font StarBats/StarMath + with text encoding RTL_TEXTENC_SYMBOL */ + BOOL IsSymbolFont() const; + +//UNUSED2008-05 /** Create a FontToSubsFontConverter if needed for +//UNUSED2008-05 this pattern, else return 0. +//UNUSED2008-05 +//UNUSED2008-05 @param nFlags is the bit mask which shall be +//UNUSED2008-05 used for CreateFontToSubsFontConverter(). +//UNUSED2008-05 +//UNUSED2008-05 The converter must be destroyed by the caller +//UNUSED2008-05 using DestroyFontToSubsFontConverter() which +//UNUSED2008-05 should be accomplished using the +//UNUSED2008-05 ScFontToSubsFontConverter_AutoPtr +//UNUSED2008-05 */ +//UNUSED2008-05 FontToSubsFontConverter GetSubsFontConverter( ULONG nFlags ) const; + + ULONG GetNumberFormat( SvNumberFormatter* ) const; + ULONG GetNumberFormat( SvNumberFormatter* pFormatter, + const SfxItemSet* pCondSet ) const; + + long GetRotateVal( const SfxItemSet* pCondSet ) const; + BYTE GetRotateDir( const SfxItemSet* pCondSet ) const; +}; + + +class ScFontToSubsFontConverter_AutoPtr +{ + FontToSubsFontConverter h; + + void release() + { + if ( h ) + DestroyFontToSubsFontConverter( h ); + } + + // prevent usage + ScFontToSubsFontConverter_AutoPtr( const ScFontToSubsFontConverter_AutoPtr& ); + ScFontToSubsFontConverter_AutoPtr& operator=( const ScFontToSubsFontConverter_AutoPtr& ); + +public: + ScFontToSubsFontConverter_AutoPtr() + : h(0) + {} + ~ScFontToSubsFontConverter_AutoPtr() + { + release(); + } + + ScFontToSubsFontConverter_AutoPtr& operator=( FontToSubsFontConverter hN ) + { + release(); + h = hN; + return *this; + } + + operator FontToSubsFontConverter() const + { return h; } +}; + + +#endif |