/************************************************************************* * * 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: xtable.hxx,v $ * $Revision: 1.4 $ * * 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 * * for a copy of the LGPLv3 License. * ************************************************************************/ #ifndef _XTABLE_HXX #define _XTABLE_HXX // include --------------------------------------------------------------- #include #include #include #include #include #include #include #ifndef _SV_COLOR_HXX #include #endif #include #ifndef _TABLE_HXX //autogen #include #endif #include "svx/svxdllapi.h" #include class Color; class Bitmap; class VirtualDevice; class XOutdevItemPool; // Breite und Hoehe der LB-Bitmaps #define BITMAP_WIDTH 32 #define BITMAP_HEIGHT 12 // Standard-Vergleichsstring extern sal_Unicode __FAR_DATA pszStandard[]; // "standard" // Funktion zum Konvertieren in echte RGB-Farben, da mit // enum COL_NAME nicht verglichen werden kann. SVX_DLLPUBLIC Color RGB_Color( ColorData nColorName ); // --------------------- // class XPropertyEntry // --------------------- class XPropertyEntry { protected: String aName; XPropertyEntry(const String& rName) : aName(rName) {} XPropertyEntry(const XPropertyEntry& rOther): aName(rOther.aName) {} public: virtual ~XPropertyEntry() {} void SetName(const String& rName) { aName = rName; } String& GetName() { return aName; } }; // ------------------ // class XColorEntry // ------------------ class XColorEntry : public XPropertyEntry { Color aColor; public: XColorEntry(const Color& rColor, const String& rName) : XPropertyEntry(rName), aColor(rColor) {} XColorEntry(const XColorEntry& rOther) : XPropertyEntry(rOther), aColor(rOther.aColor) {} void SetColor(const Color& rColor) { aColor = rColor; } Color& GetColor() { return aColor; } }; // -------------------- // class XLineEndEntry // -------------------- class XLineEndEntry : public XPropertyEntry { basegfx::B2DPolyPolygon aB2DPolyPolygon; public: XLineEndEntry(const basegfx::B2DPolyPolygon& rB2DPolyPolygon, const String& rName) : XPropertyEntry(rName), aB2DPolyPolygon(rB2DPolyPolygon) {} XLineEndEntry(const XLineEndEntry& rOther) : XPropertyEntry(rOther), aB2DPolyPolygon(rOther.aB2DPolyPolygon) {} void SetLineEnd(const basegfx::B2DPolyPolygon& rB2DPolyPolygon) { aB2DPolyPolygon = rB2DPolyPolygon; } basegfx::B2DPolyPolygon& GetLineEnd() { return aB2DPolyPolygon; } }; // ------------------ // class XDashEntry // ------------------ class XDashEntry : public XPropertyEntry { XDash aDash; public: XDashEntry(const XDash& rDash, const String& rName) : XPropertyEntry(rName), aDash(rDash) {} XDashEntry(const XDashEntry& rOther) : XPropertyEntry(rOther), aDash(rOther.aDash) {} void SetDash(const XDash& rDash) { aDash = rDash; } XDash& GetDash() { return aDash; } }; // ------------------ // class XHatchEntry // ------------------ class XHatchEntry : public XPropertyEntry { XHatch aHatch; public: XHatchEntry(const XHatch& rHatch, const String& rName) : XPropertyEntry(rName), aHatch(rHatch) {} XHatchEntry(const XHatchEntry& rOther) : XPropertyEntry(rOther), aHatch(rOther.aHatch) {} void SetHatch(const XHatch& rHatch) { aHatch = rHatch; } XHatch& GetHatch() { return aHatch; } }; // --------------------- // class XGradientEntry // --------------------- class XGradientEntry : public XPropertyEntry { XGradient aGradient; public: XGradientEntry(const XGradient& rGradient, const String& rName): XPropertyEntry(rName), aGradient(rGradient) {} XGradientEntry(const XGradientEntry& rOther) : XPropertyEntry(rOther), aGradient(rOther.aGradient) {} void SetGradient(const XGradient& rGrad) { aGradient = rGrad; } XGradient& GetGradient() { return aGradient; } }; // --------------------- // class XBitmapEntry // --------------------- class XBitmapEntry : public XPropertyEntry { XOBitmap aXOBitmap; public: XBitmapEntry( const XOBitmap& rXOBitmap, const String& rName ): XPropertyEntry( rName ), aXOBitmap( rXOBitmap ) {} XBitmapEntry( const XBitmapEntry& rOther ) : XPropertyEntry( rOther ), aXOBitmap( rOther.aXOBitmap ) {} void SetXBitmap(const XOBitmap& rXOBitmap) { aXOBitmap = rXOBitmap; } XOBitmap& GetXBitmap() { return aXOBitmap; } }; // --------------------- // class XPropertyTable // --------------------- class SVX_DLLPUBLIC XPropertyTable { protected: String aName; // nicht persistent ! String aPath; XOutdevItemPool* pXPool; Table aTable; Table* pBmpTable; BOOL bTableDirty; BOOL bBitmapsDirty; BOOL bOwnPool; XPropertyTable( const String& rPath, XOutdevItemPool* pXPool = NULL, USHORT nInitSize = 16, USHORT nReSize = 16 ); XPropertyTable( SvStream& rIn ); void Clear(); public: virtual ~XPropertyTable(); long Count() const; BOOL Insert(long nIndex, XPropertyEntry* pEntry); XPropertyEntry* Replace(long nIndex, XPropertyEntry* pEntry); XPropertyEntry* Remove(long nIndex, USHORT nDummy); XPropertyEntry* Get( long nIndex, USHORT nDummy ) const; long Get(const String& rName); Bitmap* GetBitmap( long nIndex ) const; const String& GetName() const { return aName; } void SetName( const String& rString ); const String& GetPath() const { return aPath; } void SetPath( const String& rString ) { aPath = rString; } BOOL IsDirty() const { return bTableDirty && bBitmapsDirty; } void SetDirty( BOOL bDirty = TRUE ) { bTableDirty = bDirty; bBitmapsDirty = bDirty; } virtual BOOL Load() = 0; virtual BOOL Save() = 0; virtual BOOL Create() = 0; virtual BOOL CreateBitmapsForUI() = 0; virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ) = 0; }; // -------------------- // class XPropertyList // -------------------- class SVX_DLLPUBLIC XPropertyList { protected: String aName; // nicht persistent ! String aPath; XOutdevItemPool* pXPool; List aList; List* pBmpList; BOOL bListDirty; BOOL bBitmapsDirty; BOOL bOwnPool; XPropertyList( const String& rPath, XOutdevItemPool* pXPool = NULL, USHORT nInitSize = 16, USHORT nReSize = 16 ); XPropertyList( SvStream& rIn ); void Clear(); public: virtual ~XPropertyList(); long Count() const; void Insert( XPropertyEntry* pEntry, long nIndex = LIST_APPEND ); XPropertyEntry* Replace( XPropertyEntry* pEntry, long nIndex ); XPropertyEntry* Remove( long nIndex, USHORT nDummy ); XPropertyEntry* Get( long nIndex, USHORT nDummy ) const; long Get(const String& rName); Bitmap* GetBitmap( long nIndex ) const; const String& GetName() const { return aName; } void SetName( const String& rString ); const String& GetPath() const { return aPath; } void SetPath( const String& rString ) { aPath = rString; } BOOL IsDirty() const { return bListDirty && bBitmapsDirty; } void SetDirty( BOOL bDirty = TRUE ) { bListDirty = bDirty; bBitmapsDirty = bDirty; } virtual BOOL Load() = 0; virtual BOOL Save() = 0; virtual BOOL Create() = 0; virtual BOOL CreateBitmapsForUI() = 0; virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ) = 0; }; // ------------------ // class XColorTable // ------------------ class SVX_DLLPUBLIC XColorTable : public XPropertyTable { public: XColorTable( const String& rPath, XOutdevItemPool* pXPool = NULL, USHORT nInitSize = 16, USHORT nReSize = 16 ); virtual ~XColorTable(); using XPropertyTable::Replace; XColorEntry* Replace(long nIndex, XColorEntry* pEntry ); using XPropertyTable::Remove; XColorEntry* Remove(long nIndex); using XPropertyTable::Get; XColorEntry* GetColor(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ); static XColorTable* GetStdColorTable(); }; // ------------------- // class XColorList // ------------------- class XColorList : public XPropertyList { public: XColorList( const String& rPath, XOutdevItemPool* pXPool = NULL, USHORT nInitSize = 16, USHORT nReSize = 16 ); virtual ~XColorList(); using XPropertyList::Replace; XColorEntry* Replace(XColorEntry* pEntry, long nIndex ); using XPropertyList::Remove; XColorEntry* Remove(long nIndex); using XPropertyList::Get; XColorEntry* GetColor(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ); }; // -------------------- // class XLineEndTable // -------------------- class XLineEndTable : public XPropertyTable { public: XLineEndTable( const String& rPath, XOutdevItemPool* pXPool = NULL, USHORT nInitSize = 16, USHORT nReSize = 16 ); virtual ~XLineEndTable(); using XPropertyTable::Replace; XLineEndEntry* Replace(long nIndex, XLineEndEntry* pEntry ); using XPropertyTable::Remove; XLineEndEntry* Remove(long nIndex); using XPropertyTable::Get; XLineEndEntry* GetLineEnd(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ); }; // ------------------- // class XLineEndList // ------------------- class impXLineEndList; class SVX_DLLPUBLIC XLineEndList : public XPropertyList { private: impXLineEndList* mpData; void impCreate(); void impDestroy(); public: XLineEndList(const String& rPath, XOutdevItemPool* pXPool = 0, sal_uInt16 nInitSize = 16, sal_uInt16 nReSize = 16); virtual ~XLineEndList(); using XPropertyList::Replace; XLineEndEntry* Replace(XLineEndEntry* pEntry, long nIndex); using XPropertyList::Remove; XLineEndEntry* Remove(long nIndex); using XPropertyList::Get; XLineEndEntry* GetLineEnd(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI(long nIndex, BOOL bDelete = TRUE); }; // -------------------- // class XDashTable // -------------------- class XDashTable : public XPropertyTable { public: XDashTable( const String& rPath, XOutdevItemPool* pXPool = NULL, USHORT nInitSize = 16, USHORT nReSize = 16 ); virtual ~XDashTable(); using XPropertyTable::Replace; XDashEntry* Replace(long nIndex, XDashEntry* pEntry ); using XPropertyTable::Remove; XDashEntry* Remove(long nIndex); using XPropertyTable::Get; XDashEntry* GetDash(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ); }; // ------------------- // class XDashList // ------------------- class impXDashList; class SVX_DLLPUBLIC XDashList : public XPropertyList { private: impXDashList* mpData; void impCreate(); void impDestroy(); public: XDashList(const String& rPath, XOutdevItemPool* pXPool = 0, sal_uInt16 nInitSize = 16, sal_uInt16 nReSize = 16); virtual ~XDashList(); using XPropertyList::Replace; XDashEntry* Replace(XDashEntry* pEntry, long nIndex); using XPropertyList::Remove; XDashEntry* Remove(long nIndex); using XPropertyList::Get; XDashEntry* GetDash(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI(long nIndex, BOOL bDelete = TRUE); }; // -------------------- // class XHatchTable // -------------------- class XHatchTable : public XPropertyTable { public: XHatchTable( const String& rPath, XOutdevItemPool* pXPool = NULL, USHORT nInitSize = 16, USHORT nReSize = 16 ); virtual ~XHatchTable(); using XPropertyTable::Replace; XHatchEntry* Replace(long nIndex, XHatchEntry* pEntry ); using XPropertyTable::Remove; XHatchEntry* Remove(long nIndex); using XPropertyTable::Get; XHatchEntry* GetHatch(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ); }; // ------------------- // class XHatchList // ------------------- class impXHatchList; class SVX_DLLPUBLIC XHatchList : public XPropertyList { private: impXHatchList* mpData; void impCreate(); void impDestroy(); public: XHatchList(const String& rPath, XOutdevItemPool* pXPool = 0, sal_uInt16 nInitSize = 16, sal_uInt16 nReSize = 16); ~XHatchList(); using XPropertyList::Replace; XHatchEntry* Replace(XHatchEntry* pEntry, long nIndex); using XPropertyList::Remove; XHatchEntry* Remove(long nIndex); using XPropertyList::Get; XHatchEntry* GetHatch(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI(long nIndex, BOOL bDelete = TRUE); }; // --------------------- // class XGradientTable // --------------------- class XGradientTable : public XPropertyTable { public: XGradientTable( const String& rPath, XOutdevItemPool* pXPool = NULL, USHORT nInitSize = 16, USHORT nReSize = 16 ); virtual ~XGradientTable(); using XPropertyTable::Replace; XGradientEntry* Replace(long nIndex, XGradientEntry* pEntry ); using XPropertyTable::Remove; XGradientEntry* Remove(long nIndex); using XPropertyTable::Get; XGradientEntry* GetGradient(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ); }; // ------------------- // class XGradientList // ------------------- class impXGradientList; class SVX_DLLPUBLIC XGradientList : public XPropertyList { private: impXGradientList* mpData; void impCreate(); void impDestroy(); public: XGradientList(const String& rPath, XOutdevItemPool* pXPool = 0, sal_uInt16 nInitSize = 16, sal_uInt16 nReSize = 16); virtual ~XGradientList(); using XPropertyList::Replace; XGradientEntry* Replace(XGradientEntry* pEntry, long nIndex); using XPropertyList::Remove; XGradientEntry* Remove(long nIndex); using XPropertyList::Get; XGradientEntry* GetGradient(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI(long nIndex, BOOL bDelete = TRUE); }; // --------------------- // class XBitmapTable // --------------------- class XBitmapTable : public XPropertyTable { public: XBitmapTable( const String& rPath, XOutdevItemPool* pXPool = NULL, USHORT nInitSize = 16, USHORT nReSize = 16 ); virtual ~XBitmapTable(); using XPropertyTable::Replace; XBitmapEntry* Replace(long nIndex, XBitmapEntry* pEntry ); using XPropertyTable::Remove; XBitmapEntry* Remove(long nIndex); using XPropertyTable::Get; XBitmapEntry* GetBitmap(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ); }; // ------------------- // class XBitmapList // ------------------- class SVX_DLLPUBLIC XBitmapList : public XPropertyList { public: XBitmapList( const String& rPath, XOutdevItemPool* pXPool = NULL, USHORT nInitSize = 16, USHORT nReSize = 16 ); virtual ~XBitmapList(); using XPropertyList::Replace; XBitmapEntry* Replace(XBitmapEntry* pEntry, long nIndex ); using XPropertyList::Remove; XBitmapEntry* Remove(long nIndex); using XPropertyList::Get; XBitmapEntry* GetBitmap(long nIndex) const; virtual BOOL Load(); virtual BOOL Save(); virtual BOOL Create(); virtual BOOL CreateBitmapsForUI(); virtual Bitmap* CreateBitmapForUI( long nIndex, BOOL bDelete = TRUE ); }; #endif // _XTABLE_HXX