summaryrefslogtreecommitdiff
path: root/sc/inc/patattr.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'sc/inc/patattr.hxx')
-rw-r--r--sc/inc/patattr.hxx183
1 files changed, 183 insertions, 0 deletions
diff --git a/sc/inc/patattr.hxx b/sc/inc/patattr.hxx
new file mode 100644
index 000000000000..dc58a8a6473a
--- /dev/null
+++ b/sc/inc/patattr.hxx
@@ -0,0 +1,183 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * 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 <editeng/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, sal_uInt16 nVersion) const;
+ virtual SvStream& Store(SvStream& rStream, sal_uInt16 nItemVersion) const;
+
+ virtual int operator==(const SfxPoolItem& rCmp) const;
+
+ const SfxPoolItem& GetItem( sal_uInt16 nWhichP ) const
+ { return GetItemSet().Get(nWhichP); }
+
+ static const SfxPoolItem& GetItem( sal_uInt16 nWhich, const SfxItemSet& rItemSet, const SfxItemSet* pCondSet );
+ const SfxPoolItem& GetItem( sal_uInt16 nWhich, const SfxItemSet* pCondSet ) const;
+
+ // pWhich are no ranges, but single IDs, 0-terminated
+ sal_Bool HasItemsSet( const sal_uInt16* pWhich ) const;
+ void ClearItems( const sal_uInt16* 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,
+ sal_uInt8 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,
+ sal_uInt8 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();
+
+ sal_Bool IsVisible() const;
+ sal_Bool IsVisibleEqual( const ScPatternAttr& rOther ) const;
+
+ /** If font is an old symbol font StarBats/StarMath
+ with text encoding RTL_TEXTENC_SYMBOL */
+ sal_Bool IsSymbolFont() const;
+
+ sal_uLong GetNumberFormat( SvNumberFormatter* ) const;
+ sal_uLong GetNumberFormat( SvNumberFormatter* pFormatter,
+ const SfxItemSet* pCondSet ) const;
+
+ long GetRotateVal( const SfxItemSet* pCondSet ) const;
+ sal_uInt8 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
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */