LCOV - code coverage report
Current view: top level - usr/local/src/libreoffice/include/svx - xtable.hxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 31 38 81.6 %
Date: 2013-07-09 Functions: 33 39 84.6 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2             : /*
       3             :  * This file is part of the LibreOffice project.
       4             :  *
       5             :  * This Source Code Form is subject to the terms of the Mozilla Public
       6             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       7             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
       8             :  *
       9             :  * This file incorporates work covered by the following license notice:
      10             :  *
      11             :  *   Licensed to the Apache Software Foundation (ASF) under one or more
      12             :  *   contributor license agreements. See the NOTICE file distributed
      13             :  *   with this work for additional information regarding copyright
      14             :  *   ownership. The ASF licenses this file to you under the Apache
      15             :  *   License, Version 2.0 (the "License"); you may not use this file
      16             :  *   except in compliance with the License. You may obtain a copy of
      17             :  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
      18             :  */
      19             : #ifndef _XTABLE_HXX
      20             : #define _XTABLE_HXX
      21             : 
      22             : #include <rtl/ref.hxx>
      23             : #include <svx/xpoly.hxx>
      24             : #include <svx/xdash.hxx>
      25             : #include <svx/xhatch.hxx>
      26             : #include <svx/xgrad.hxx>
      27             : #include <svx/xflasit.hxx>
      28             : #include <svx/xlnasit.hxx>
      29             : 
      30             : #include <tools/color.hxx>
      31             : #include <tools/string.hxx>
      32             : #include <tools/contnr.hxx>
      33             : 
      34             : #include <cppuhelper/weak.hxx>
      35             : 
      36             : #include <svx/svxdllapi.h>
      37             : #include <com/sun/star/embed/XStorage.hpp>
      38             : #include <basegfx/polygon/b2dpolypolygon.hxx>
      39             : #include <com/sun/star/container/XNameContainer.hpp>
      40             : #include <svtools/grfmgr.hxx>
      41             : #include <svx/XPropertyEntry.hxx>
      42             : 
      43             : class Color;
      44             : class Bitmap;
      45             : class VirtualDevice;
      46             : 
      47             : // Standard-Vergleichsstring
      48             : extern sal_Unicode pszStandard[]; // "standard"
      49             : 
      50             : // Funktion zum Konvertieren in echte RGB-Farben, da mit
      51             : // enum COL_NAME nicht verglichen werden kann.
      52             : SVX_DLLPUBLIC Color RGB_Color( ColorData nColorName );
      53             : 
      54             : // ------------------
      55             : // class XColorEntry
      56             : // ------------------
      57             : 
      58       21120 : class SVX_DLLPUBLIC XColorEntry : public XPropertyEntry
      59             : {
      60             : private:
      61             :     Color   aColor;
      62             : 
      63             : public:
      64             :     XColorEntry(const Color& rColor, const String& rName);
      65             :     XColorEntry(const XColorEntry& rOther);
      66             : 
      67       20460 :     const Color& GetColor() const
      68             :     {
      69       20460 :         return aColor;
      70             :     }
      71             : };
      72             : 
      73             : // --------------------
      74             : // class XLineEndEntry
      75             : // --------------------
      76             : 
      77         160 : class SVX_DLLPUBLIC XLineEndEntry : public XPropertyEntry
      78             : {
      79             : private:
      80             :     basegfx::B2DPolyPolygon aB2DPolyPolygon;
      81             : 
      82             : public:
      83             :     XLineEndEntry(const basegfx::B2DPolyPolygon& rB2DPolyPolygon, const String& rName);
      84             :     XLineEndEntry(const XLineEndEntry& rOther);
      85             : 
      86           0 :     const basegfx::B2DPolyPolygon& GetLineEnd() const
      87             :     {
      88           0 :         return aB2DPolyPolygon;
      89             :     }
      90             : };
      91             : 
      92             : // ------------------
      93             : // class XDashEntry
      94             : // ------------------
      95             : 
      96        1422 : class SVX_DLLPUBLIC XDashEntry : public XPropertyEntry
      97             : {
      98             : private:
      99             :     XDash   aDash;
     100             : 
     101             : public:
     102             :     XDashEntry(const XDash& rDash, const String& rName);
     103             :     XDashEntry(const XDashEntry& rOther);
     104             : 
     105         683 :     const XDash& GetDash() const
     106             :     {
     107         683 :         return aDash;
     108             :     }
     109             : };
     110             : 
     111             : // ------------------
     112             : // class XHatchEntry
     113             : // ------------------
     114             : 
     115          86 : class SVX_DLLPUBLIC XHatchEntry : public XPropertyEntry
     116             : {
     117             : private:
     118             :     XHatch  aHatch;
     119             : 
     120             : public:
     121             :     XHatchEntry(const XHatch& rHatch, const String& rName);
     122             :     XHatchEntry(const XHatchEntry& rOther);
     123             : 
     124         151 :     const XHatch& GetHatch() const
     125             :     {
     126         151 :         return aHatch;
     127             :     }
     128             : };
     129             : 
     130             : // ---------------------
     131             : // class XGradientEntry
     132             : // ---------------------
     133             : 
     134         372 : class SVX_DLLPUBLIC XGradientEntry : public XPropertyEntry
     135             : {
     136             : private:
     137             :     XGradient  aGradient;
     138             : 
     139             : public:
     140             :     XGradientEntry(const XGradient& rGradient, const String& rName);
     141             :     XGradientEntry(const XGradientEntry& rOther);
     142             : 
     143          54 :     const XGradient& GetGradient() const
     144             :     {
     145          54 :         return aGradient;
     146             :     }
     147             : };
     148             : 
     149             : // ---------------------
     150             : // class XBitmapEntry
     151             : // ---------------------
     152             : 
     153         168 : class SVX_DLLPUBLIC XBitmapEntry : public XPropertyEntry
     154             : {
     155             : private:
     156             :     GraphicObject   maGraphicObject;
     157             : 
     158             : public:
     159             :     XBitmapEntry(const GraphicObject& rGraphicObject, const String& rName);
     160             :     XBitmapEntry(const XBitmapEntry& rOther);
     161             : 
     162           0 :     const GraphicObject& GetGraphicObject() const
     163             :     {
     164           0 :         return maGraphicObject;
     165             :     }
     166             : };
     167             : 
     168             : // --------------------
     169             : // class XPropertyList
     170             : // --------------------
     171             : 
     172             : enum XPropertyListType {
     173             :     XCOLOR_LIST,
     174             :     XLINE_END_LIST,
     175             :     XDASH_LIST,
     176             :     XHATCH_LIST,
     177             :     XGRADIENT_LIST,
     178             :     XBITMAP_LIST,
     179             :     XPROPERTY_LIST_COUNT
     180             : };
     181             : 
     182             : typedef rtl::Reference< class XPropertyList > XPropertyListRef;
     183             : 
     184             : class XDashList ; typedef rtl::Reference< class XDashList > XDashListRef;
     185             : class XHatchList ; typedef rtl::Reference< class XHatchList > XHatchListRef;
     186             : class XColorList ; typedef rtl::Reference< class XColorList > XColorListRef;
     187             : class XBitmapList ; typedef rtl::Reference< class XBitmapList > XBitmapListRef;
     188             : class XLineEndList ; typedef rtl::Reference< class XLineEndList > XLineEndListRef;
     189             : class XGradientList ; typedef rtl::Reference< class XGradientList > XGradientListRef;
     190             : 
     191             : class SVX_DLLPUBLIC XPropertyList : public cppu::OWeakObject
     192             : {
     193             :  private:
     194             :     SAL_DLLPRIVATE void* operator new(size_t);
     195             :  protected:
     196             :     SAL_DLLPRIVATE void operator delete(void *);
     197             : protected:
     198             :     typedef ::std::vector< XPropertyEntry* > XPropertyEntryList_impl;
     199             :     typedef ::std::vector< Bitmap* > BitmapList_impl;
     200             : 
     201             :     XPropertyListType   meType;
     202             :     String              maName; // not persistent
     203             :     String              maPath;
     204             : 
     205             :     XPropertyEntryList_impl maList;
     206             : 
     207             :     bool                mbListDirty;
     208             :     bool                mbEmbedInDocument;
     209             : 
     210             :     XPropertyList(XPropertyListType t, const String& rPath);
     211             : 
     212             :     virtual Bitmap CreateBitmapForUI(long nIndex) = 0;
     213             : 
     214             : public:
     215             :     virtual ~XPropertyList();
     216             : 
     217        1113 :     XPropertyListType Type() const { return meType; }
     218             :     long Count() const;
     219             : 
     220             :     void Insert(XPropertyEntry* pEntry, long nIndex = CONTAINER_APPEND);
     221             :     XPropertyEntry* Replace(XPropertyEntry* pEntry, long nIndex);
     222             :     XPropertyEntry* Remove(long nIndex);
     223             : 
     224             :     XPropertyEntry* Get(long nIndex) const;
     225             :     long GetIndex(const String& rName) const;
     226             :     Bitmap GetUiBitmap(long nIndex) const;
     227             : 
     228          36 :     const String& GetName() const { return maName; }
     229             :     void SetName(const String& rString);
     230             : 
     231          36 :     const String& GetPath() const { return maPath; }
     232           0 :     void SetPath(const String& rString) { maPath = rString; }
     233             : 
     234             :     bool IsDirty() const { return mbListDirty; }
     235           0 :     void SetDirty(bool bDirty = true) { mbListDirty = bDirty; }
     236             : 
     237          36 :     bool IsEmbedInDocument() const { return mbEmbedInDocument; }
     238           0 :     void SetEmbedInDocument(bool b) { mbEmbedInDocument = b; }
     239             : 
     240             :     static OUString GetDefaultExt(XPropertyListType t);
     241             :     static OUString GetDefaultExtFilter(XPropertyListType t);
     242         169 :     OUString GetDefaultExt() const { return GetDefaultExt(meType); }
     243             : 
     244             :     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer >
     245             :         createInstance() = 0;
     246             :     bool Load();
     247             :     bool LoadFrom(const ::com::sun::star::uno::Reference<
     248             :                        ::com::sun::star::embed::XStorage > &xStorage,
     249             :                    const OUString &rURL);
     250             :     bool Save();
     251             :     bool SaveTo  (const ::com::sun::star::uno::Reference<
     252             :                        ::com::sun::star::embed::XStorage > &xStorage,
     253             :                    const OUString &rURL,
     254             :                                   OUString *pOptName);
     255             :     virtual bool Create() = 0;
     256             : 
     257             :     // Factory method for sub-classes
     258             :     static XPropertyListRef CreatePropertyList(XPropertyListType t,
     259             :                                                 const String& rPath);
     260             :     // as above but initializes name as expected
     261             :     static XPropertyListRef CreatePropertyListFromURL(XPropertyListType t,
     262             :                                                        const OUString & rUrl);
     263             : 
     264             :     // helper accessors
     265             :     inline XDashListRef  AsDashList();
     266             :     inline XHatchListRef AsHatchList();
     267             :     inline XColorListRef AsColorList();
     268             :     inline XBitmapListRef AsBitmapList();
     269             :     inline XLineEndListRef AsLineEndList();
     270             :     inline XGradientListRef AsGradientList();
     271             : };
     272             : 
     273             : // ------------------
     274             : // class XColorList
     275             : // ------------------
     276             : 
     277         470 : class SVX_DLLPUBLIC XColorList : public XPropertyList
     278             : {
     279             : protected:
     280             :     virtual Bitmap  CreateBitmapForUI(long nIndex);
     281             : 
     282             : public:
     283         248 :     explicit XColorList(const String& rPath)
     284         248 :         : XPropertyList(XCOLOR_LIST, rPath) {}
     285             : 
     286             :     using XPropertyList::Replace;
     287             :     using XPropertyList::Remove;
     288             : 
     289             :     XColorEntry* Replace(long nIndex, XColorEntry* pEntry);
     290             :     XColorEntry* Remove(long nIndex);
     291             :     XColorEntry* GetColor(long nIndex) const;
     292             :     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
     293             :     virtual bool Create();
     294             : 
     295             :     static XColorListRef CreateStdColorList();
     296             :     static XColorListRef GetStdColorList(); // returns a singleton
     297             : };
     298             : 
     299             : // -------------------
     300             : // class XLineEndList
     301             : // -------------------
     302             : 
     303             : class SVX_DLLPUBLIC XLineEndList : public XPropertyList
     304             : {
     305             : protected:
     306             :     virtual Bitmap CreateBitmapForUI(long nIndex);
     307             : 
     308             : public:
     309             :     explicit XLineEndList(const String& rPath);
     310             :     virtual ~XLineEndList();
     311             : 
     312             :     using XPropertyList::Remove;
     313             :     XLineEndEntry* Remove(long nIndex);
     314             :     XLineEndEntry* GetLineEnd(long nIndex) const;
     315             : 
     316             :     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
     317             :     virtual bool Create();
     318             : };
     319             : 
     320             : // -------------------
     321             : // class XDashList
     322             : // -------------------
     323             : 
     324             : class SVX_DLLPUBLIC XDashList : public XPropertyList
     325             : {
     326             : private:
     327             :     Bitmap              maBitmapSolidLine;
     328             :     String              maStringSolidLine;
     329             :     String              maStringNoLine;
     330             : 
     331             : protected:
     332             :     Bitmap ImpCreateBitmapForXDash(const XDash* pDash);
     333             :     virtual Bitmap CreateBitmapForUI(long nIndex);
     334             : 
     335             : public:
     336             :     explicit XDashList(const String& rPath);
     337             :     virtual ~XDashList();
     338             : 
     339             :     using XPropertyList::Replace;
     340             :     XDashEntry* Replace(XDashEntry* pEntry, long nIndex);
     341             :     using XPropertyList::Remove;
     342             :     XDashEntry* Remove(long nIndex);
     343             :     XDashEntry* GetDash(long nIndex) const;
     344             : 
     345             :     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
     346             :     virtual bool Create();
     347             : 
     348             :     // Special call to get a bitmap for the solid line representation. It
     349             :     // creates a bitmap fitting in size and style to the ones you get by
     350             :     // using GetUiBitmap for existing entries.
     351             :     Bitmap GetBitmapForUISolidLine() const;
     352             : 
     353             :     // Special calls to get the translated strings for the UI entry for no
     354             :     // line style (XLINE_NONE) and solid line style (XLINE_SOLID) for dialogs
     355             :     String GetStringForUiSolidLine() const;
     356             :     String GetStringForUiNoLine() const;
     357             : };
     358             : 
     359             : // -------------------
     360             : // class XHatchList
     361             : // -------------------
     362             : 
     363             : class SVX_DLLPUBLIC XHatchList : public XPropertyList
     364             : {
     365             : protected:
     366             :     virtual Bitmap CreateBitmapForUI(long nIndex);
     367             : 
     368             : public:
     369             :     explicit XHatchList(const String& rPath);
     370             :     virtual ~XHatchList();
     371             : 
     372             :     using XPropertyList::Replace;
     373             :     XHatchEntry* Replace(XHatchEntry* pEntry, long nIndex);
     374             :     using XPropertyList::Remove;
     375             :     XHatchEntry* Remove(long nIndex);
     376             :     XHatchEntry* GetHatch(long nIndex) const;
     377             : 
     378             :     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
     379             :     virtual bool Create();
     380             : };
     381             : 
     382             : // -------------------
     383             : // class XGradientList
     384             : // -------------------
     385             : class SVX_DLLPUBLIC XGradientList : public XPropertyList
     386             : {
     387             : protected:
     388             :     virtual Bitmap CreateBitmapForUI(long nIndex);
     389             : 
     390             : public:
     391             :     explicit XGradientList(const String& rPath);
     392             :     virtual ~XGradientList();
     393             : 
     394             :     using XPropertyList::Replace;
     395             :     XGradientEntry* Replace(XGradientEntry* pEntry, long nIndex);
     396             :     using XPropertyList::Remove;
     397             :     XGradientEntry* Remove(long nIndex);
     398             :     XGradientEntry* GetGradient(long nIndex) const;
     399             : 
     400             :     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
     401             :     virtual bool Create();
     402             : };
     403             : 
     404             : // -------------------
     405             : // class XBitmapList
     406             : // -------------------
     407             : 
     408        2522 : class SVX_DLLPUBLIC XBitmapList : public XPropertyList
     409             : {
     410             : protected:
     411             :     virtual Bitmap CreateBitmapForUI(long nIndex);
     412             : 
     413             : public:
     414        1276 :     explicit XBitmapList(const String& rPath)
     415        1276 :         : XPropertyList(XBITMAP_LIST, rPath) {}
     416             : 
     417             :     using XPropertyList::Replace;
     418             :     using XPropertyList::Remove;
     419             :     XBitmapEntry* Remove(long nIndex);
     420             :     XBitmapEntry* GetBitmap(long nIndex) const;
     421             : 
     422             :     virtual ::com::sun::star::uno::Reference< ::com::sun::star::container::XNameContainer > createInstance();
     423             :     virtual bool Create();
     424             : };
     425             : 
     426             : 
     427             : // FIXME: could add type checking too ...
     428        1492 : inline XDashListRef  XPropertyList::AsDashList() { return XDashListRef( static_cast<XDashList *> (this) ); }
     429        1358 : inline XHatchListRef XPropertyList::AsHatchList() { return XHatchListRef( static_cast<XHatchList *> (this) ); }
     430         496 : inline XColorListRef XPropertyList::AsColorList() { return XColorListRef( static_cast<XColorList *> (this) ); }
     431        1358 : inline XBitmapListRef XPropertyList::AsBitmapList() { return XBitmapListRef( static_cast<XBitmapList *> (this) ); }
     432        1358 : inline XLineEndListRef XPropertyList::AsLineEndList() { return XLineEndListRef( static_cast<XLineEndList *> (this) ); }
     433        1358 : inline XGradientListRef XPropertyList::AsGradientList() { return XGradientListRef( static_cast<XGradientList *> (this) ); }
     434             : 
     435             : #endif // _XTABLE_HXX
     436             : 
     437             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10