summaryrefslogtreecommitdiffstats
path: root/include/svx/xtable.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'include/svx/xtable.hxx')
-rw-r--r--include/svx/xtable.hxx501
1 files changed, 501 insertions, 0 deletions
diff --git a/include/svx/xtable.hxx b/include/svx/xtable.hxx
new file mode 100644
index 000000000000..93ad230ea75f
--- /dev/null
+++ b/include/svx/xtable.hxx
@@ -0,0 +1,501 @@
+/* -*- 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 _XTABLE_HXX
+#define _XTABLE_HXX
+
+#include <rtl/ref.hxx>
+#include <svx/xpoly.hxx>
+#include <svx/xdash.hxx>
+#include <svx/xhatch.hxx>
+#include <svx/xgrad.hxx>
+#include <svx/xflasit.hxx>
+#include <svx/xlnasit.hxx>
+
+#include <tools/color.hxx>
+#include <tools/string.hxx>
+#include <tools/contnr.hxx>
+
+#include <cppuhelper/weak.hxx>
+
+#include "svx/svxdllapi.h"
+#include <com/sun/star/embed/XStorage.hpp>
+#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <com/sun/star/container/XNameContainer.hpp>
+#include <svtools/grfmgr.hxx>
+
+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 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)
+ {}
+
+ 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)
+ {}
+
+ 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) {}
+
+ 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) {}
+
+ 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) {}
+
+ void SetGradient(const XGradient& rGrad) { aGradient = rGrad; }
+ XGradient& GetGradient() { return aGradient; }
+};
+
+// ---------------------
+// class XBitmapEntry
+// ---------------------
+
+class XBitmapEntry : public XPropertyEntry
+{
+private:
+ GraphicObject maGraphicObject;
+
+public:
+ XBitmapEntry(const GraphicObject& rGraphicObject, const String& rName)
+ : XPropertyEntry(rName),
+ maGraphicObject(rGraphicObject)
+ {
+ }
+
+ XBitmapEntry(const XBitmapEntry& rOther)
+ : XPropertyEntry(rOther),
+ maGraphicObject(rOther.maGraphicObject)
+ {
+ }
+
+ const GraphicObject& GetGraphicObject() const
+ {
+ return maGraphicObject;
+ }
+
+ void SetGraphicObject(const GraphicObject& rGraphicObject)
+ {
+ maGraphicObject = rGraphicObject;
+ }
+};
+
+// --------------------
+// class XPropertyList
+// --------------------
+
+enum XPropertyListType {
+ XCOLOR_LIST,
+ XLINE_END_LIST,
+ XDASH_LIST,
+ XHATCH_LIST,
+ XGRADIENT_LIST,
+ XBITMAP_LIST,
+ XPROPERTY_LIST_COUNT
+};
+
+typedef rtl::Reference< class XPropertyList > XPropertyListRef;
+
+class XDashList ; typedef rtl::Reference< class XDashList > XDashListRef;
+class XHatchList ; typedef rtl::Reference< class XHatchList > XHatchListRef;
+class XColorList ; typedef rtl::Reference< class XColorList > XColorListRef;
+class XBitmapList ; typedef rtl::Reference< class XBitmapList > XBitmapListRef;
+class XLineEndList ; typedef rtl::Reference< class XLineEndList > XLineEndListRef;
+class XGradientList ; typedef rtl::Reference< class XGradientList > XGradientListRef;
+
+class SVX_DLLPUBLIC XPropertyList : public cppu::OWeakObject
+{
+ private:
+ SAL_DLLPRIVATE void* operator new(size_t);
+ protected:
+ SAL_DLLPRIVATE void operator delete(void *);
+protected:
+ typedef ::std::vector< XPropertyEntry* > XPropertyEntryList_impl;
+ typedef ::std::vector< Bitmap* > BitmapList_impl;
+
+ XPropertyListType eType;
+ String aName; // not persistent
+ String aPath;
+ XOutdevItemPool* pXPool;
+
+ XPropertyEntryList_impl aList;
+ BitmapList_impl* pBmpList;
+
+ bool bListDirty;
+ bool bBitmapsDirty;
+ bool bOwnPool;
+ bool bEmbedInDocument;
+
+ XPropertyList( XPropertyListType t, const String& rPath,
+ XOutdevItemPool* pXPool = NULL );
+
+public:
+ virtual ~XPropertyList();
+
+ XPropertyListType Type() const { return eType; }
+ long Count() const;
+
+ void Insert( XPropertyEntry* pEntry, long nIndex = CONTAINER_APPEND );
+ XPropertyEntry* Replace( XPropertyEntry* pEntry, long nIndex );
+ XPropertyEntry* Remove( long nIndex );
+
+ // Note: Get(long) & Get( String& ) are ambiguous
+ XPropertyEntry* Get( long nIndex, sal_uInt16 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; }
+ sal_Bool IsDirty() const { return bListDirty && bBitmapsDirty; }
+ void SetDirty( sal_Bool bDirty = sal_True )
+ { bListDirty = bDirty; bBitmapsDirty = bDirty; }
+ bool IsEmbedInDocument() const { return bEmbedInDocument; }
+ void SetEmbedInDocument(bool b) { bEmbedInDocument = b; }
+
+ static OUString GetDefaultExt(XPropertyListType t);
+ static OUString GetDefaultExtFilter(XPropertyListType t);
+ OUString GetDefaultExt() const { return GetDefaultExt( eType ); }
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >
+ createInstance() = 0;
+ bool Load();
+ bool LoadFrom( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::embed::XStorage > &xStorage,
+ const OUString &rURL );
+ bool Save();
+ bool SaveTo ( const ::com::sun::star::uno::Reference<
+ ::com::sun::star::embed::XStorage > &xStorage,
+ const OUString &rURL,
+ OUString *pOptName );
+ virtual sal_Bool Create() = 0;
+ virtual sal_Bool CreateBitmapsForUI() = 0;
+ virtual Bitmap* CreateBitmapForUI( long nIndex, sal_Bool bDelete = sal_True ) = 0;
+
+ // Factory method for sub-classes
+ static XPropertyListRef CreatePropertyList( XPropertyListType t,
+ const String& rPath,
+ XOutdevItemPool* pXPool = NULL );
+ // as above but initializes name as expected
+ static XPropertyListRef CreatePropertyListFromURL( XPropertyListType t,
+ const OUString & rUrl,
+ XOutdevItemPool* pXPool = NULL );
+
+ // helper accessors
+ inline XDashListRef AsDashList();
+ inline XHatchListRef AsHatchList();
+ inline XColorListRef AsColorList();
+ inline XBitmapListRef AsBitmapList();
+ inline XLineEndListRef AsLineEndList();
+ inline XGradientListRef AsGradientList();
+};
+
+// ------------------
+// class XColorList
+// ------------------
+
+class SVX_DLLPUBLIC XColorList : public XPropertyList
+{
+public:
+ explicit XColorList( const String& rPath,
+ XOutdevItemPool* pXInPool = NULL ) :
+ XPropertyList( XCOLOR_LIST, rPath, pXInPool ) {}
+
+ using XPropertyList::Replace;
+ using XPropertyList::Remove;
+ using XPropertyList::Get;
+
+ XColorEntry* Replace(long nIndex, XColorEntry* pEntry );
+ XColorEntry* Remove(long nIndex);
+ XColorEntry* GetColor(long nIndex) const;
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
+ virtual sal_Bool Create();
+ virtual sal_Bool CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI( long nIndex, sal_Bool bDelete = sal_True );
+
+ static XColorListRef CreateStdColorList();
+ static XColorListRef GetStdColorList(); // returns a singleton
+};
+
+// -------------------
+// class XLineEndList
+// -------------------
+class impXLineEndList;
+
+class SVX_DLLPUBLIC XLineEndList : public XPropertyList
+{
+private:
+ impXLineEndList* mpData;
+
+ void impCreate();
+ void impDestroy();
+
+public:
+ explicit XLineEndList(
+ const String& rPath,
+ XOutdevItemPool* pXPool = 0
+ );
+ virtual ~XLineEndList();
+
+ using XPropertyList::Remove;
+ XLineEndEntry* Remove(long nIndex);
+ using XPropertyList::Get;
+ XLineEndEntry* GetLineEnd(long nIndex) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
+ virtual sal_Bool Create();
+ virtual sal_Bool CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI(long nIndex, sal_Bool bDelete = sal_True);
+};
+
+// -------------------
+// class XDashList
+// -------------------
+class impXDashList;
+
+class SVX_DLLPUBLIC XDashList : public XPropertyList
+{
+private:
+ impXDashList* mpData;
+
+ void impCreate();
+ void impDestroy();
+
+public:
+ explicit XDashList(
+ const String& rPath,
+ XOutdevItemPool* pXPool = 0
+ );
+ 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 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
+ virtual sal_Bool Create();
+ virtual sal_Bool CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI(long nIndex, sal_Bool bDelete = sal_True);
+};
+
+// -------------------
+// class XHatchList
+// -------------------
+class impXHatchList;
+
+class SVX_DLLPUBLIC XHatchList : public XPropertyList
+{
+private:
+ impXHatchList* mpData;
+
+ void impCreate();
+ void impDestroy();
+
+public:
+ explicit XHatchList( const String& rPath,
+ XOutdevItemPool* pXPool = 0 );
+ virtual ~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 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
+ virtual sal_Bool Create();
+ virtual sal_Bool CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI(long nIndex, sal_Bool bDelete = sal_True);
+};
+
+// -------------------
+// class XGradientList
+// -------------------
+class impXGradientList;
+
+class SVX_DLLPUBLIC XGradientList : public XPropertyList
+{
+private:
+ impXGradientList* mpData;
+
+ void impCreate();
+ void impDestroy();
+
+public:
+ explicit XGradientList(
+ const String& rPath,
+ XOutdevItemPool* pXPool = 0
+ );
+ 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 ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
+ virtual sal_Bool Create();
+ virtual sal_Bool CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI(long nIndex, sal_Bool bDelete = sal_True);
+};
+
+// -------------------
+// class XBitmapList
+// -------------------
+
+class SVX_DLLPUBLIC XBitmapList : public XPropertyList
+{
+public:
+ explicit XBitmapList( const String& rPath,
+ XOutdevItemPool* pXInPool = NULL )
+ : XPropertyList( XBITMAP_LIST, rPath, pXInPool ) {}
+
+ using XPropertyList::Replace;
+ using XPropertyList::Remove;
+ XBitmapEntry* Remove(long nIndex);
+ using XPropertyList::Get;
+ XBitmapEntry* GetBitmap(long nIndex) const;
+
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
+ virtual sal_Bool Create();
+ virtual sal_Bool CreateBitmapsForUI();
+ virtual Bitmap* CreateBitmapForUI( long nIndex, sal_Bool bDelete = sal_True );
+};
+
+
+// FIXME: could add type checking too ...
+inline XDashListRef XPropertyList::AsDashList() { return XDashListRef( static_cast<XDashList *> (this) ); }
+inline XHatchListRef XPropertyList::AsHatchList() { return XHatchListRef( static_cast<XHatchList *> (this) ); }
+inline XColorListRef XPropertyList::AsColorList() { return XColorListRef( static_cast<XColorList *> (this) ); }
+inline XBitmapListRef XPropertyList::AsBitmapList() { return XBitmapListRef( static_cast<XBitmapList *> (this) ); }
+inline XLineEndListRef XPropertyList::AsLineEndList() { return XLineEndListRef( static_cast<XLineEndList *> (this) ); }
+inline XGradientListRef XPropertyList::AsGradientList() { return XGradientListRef( static_cast<XGradientList *> (this) ); }
+
+#endif // _XTABLE_HXX
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */