LCOV - code coverage report
Current view: top level - libreoffice/solver/unxlngi6.pro/inc/oox/drawingml - shapepropertymap.hxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 4 5 80.0 %
Date: 2012-12-27 Functions: 8 15 53.3 %
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             : 
      20             : #ifndef OOX_DRAWINGML_SHAPEPROPERTYMAP_HXX
      21             : #define OOX_DRAWINGML_SHAPEPROPERTYMAP_HXX
      22             : 
      23             : #include "oox/helper/propertymap.hxx"
      24             : #include "oox/dllapi.h"
      25             : 
      26             : namespace oox { class ModelObjectHelper; }
      27             : 
      28             : namespace oox {
      29             : namespace drawingml {
      30             : 
      31             : // ============================================================================
      32             : 
      33             : /** Enumeration for various properties related to drawing shape formatting.
      34             : 
      35             :     This is an abstraction for shape formatting properties that have different
      36             :     names in various implementations, e.g. drawing shapes vs. chart objects.
      37             :  */
      38             : enum ShapePropertyId
      39             : {
      40             :     SHAPEPROP_LineStyle,
      41             :     SHAPEPROP_LineWidth,
      42             :     SHAPEPROP_LineColor,
      43             :     SHAPEPROP_LineTransparency,
      44             :     SHAPEPROP_LineDash,                     /// Explicit line dash or name of a line dash stored in a global container.
      45             :     SHAPEPROP_LineJoint,
      46             :     SHAPEPROP_LineStart,                    /// Explicit line start marker or name of a line marker stored in a global container.
      47             :     SHAPEPROP_LineStartWidth,
      48             :     SHAPEPROP_LineStartCenter,
      49             :     SHAPEPROP_LineEnd,                      /// Explicit line end marker or name of a line marker stored in a global container.
      50             :     SHAPEPROP_LineEndWidth,
      51             :     SHAPEPROP_LineEndCenter,
      52             :     SHAPEPROP_FillStyle,
      53             :     SHAPEPROP_FillColor,
      54             :     SHAPEPROP_FillTransparency,
      55             :     SHAPEPROP_GradientTransparency,
      56             :     SHAPEPROP_FillGradient,                 /// Explicit fill gradient or name of a fill gradient stored in a global container.
      57             :     SHAPEPROP_FillBitmapUrl,                /// Explicit fill bitmap URL or name of a fill bitmap URL stored in a global container.
      58             :     SHAPEPROP_FillBitmapMode,
      59             :     SHAPEPROP_FillBitmapSizeX,
      60             :     SHAPEPROP_FillBitmapSizeY,
      61             :     SHAPEPROP_FillBitmapOffsetX,
      62             :     SHAPEPROP_FillBitmapOffsetY,
      63             :     SHAPEPROP_FillBitmapRectanglePoint,
      64             :     SHAPEPROP_ShadowXDistance,
      65             :     SHAPEPROP_END
      66             : };
      67             : 
      68             : // ============================================================================
      69             : 
      70             : struct OOX_DLLPUBLIC ShapePropertyInfo
      71             : {
      72             :     const sal_Int32*    mpnPropertyIds;         /// Pointer to array of property identifiers for all SHAPEPROP properties.
      73             :     bool                mbNamedLineMarker;      /// True = use named line marker instead of explicit line marker.
      74             :     bool                mbNamedLineDash;        /// True = use named line dash instead of explicit line dash.
      75             :     bool                mbNamedFillGradient;    /// True = use named fill gradient instead of explicit fill gradient.
      76             :     bool                mbNamedFillBitmapUrl;   /// True = use named fill bitmap URL instead of explicit fill bitmap URL.
      77             : 
      78             :     static ShapePropertyInfo DEFAULT;           /// Default property info (used as default parameter of other methods).
      79             : 
      80             :     explicit            ShapePropertyInfo(
      81             :                             const sal_Int32* pnPropertyIds,
      82             :                             bool bNamedLineMarker,
      83             :                             bool bNamedLineDash,
      84             :                             bool bNamedFillGradient,
      85             :                             bool bNamedFillBitmapUrl );
      86             : 
      87           0 :     inline bool         has( ShapePropertyId ePropId ) const { return mpnPropertyIds[ ePropId ] >= 0; }
      88         263 :     inline sal_Int32    operator[]( ShapePropertyId ePropId ) const { return mpnPropertyIds[ ePropId ]; }
      89             : };
      90             : 
      91             : // ============================================================================
      92             : 
      93          63 : class OOX_DLLPUBLIC ShapePropertyMap : public PropertyMap
      94             : {
      95             : public:
      96             :     explicit            ShapePropertyMap(
      97             :                             ModelObjectHelper& rModelObjHelper,
      98             :                             const ShapePropertyInfo& rShapePropInfo = ShapePropertyInfo::DEFAULT );
      99             : 
     100             :     /** Returns true, if the specified property is supported. */
     101             :     bool                supportsProperty( ShapePropertyId ePropId ) const;
     102             : 
     103             :     /** Returns true, if named line markers are supported, and the specified
     104             :         line marker has already been inserted into the marker table. */
     105             :     bool                hasNamedLineMarkerInTable( const ::rtl::OUString& rMarkerName ) const;
     106             : 
     107             :     /** Sets the specified shape property to the passed value. */
     108             :     bool                setAnyProperty( ShapePropertyId ePropId, const ::com::sun::star::uno::Any& rValue );
     109             : 
     110             :     /** Sets the specified shape property to the passed value. */
     111             :     template< typename Type >
     112         263 :     inline bool         setProperty( ShapePropertyId ePropId, const Type& rValue )
     113         263 :                             { return setAnyProperty( ePropId, ::com::sun::star::uno::Any( rValue ) ); }
     114             : 
     115             :     using PropertyMap::setAnyProperty;
     116             :     using PropertyMap::setProperty;
     117             :     using PropertyMap::operator[];
     118             : 
     119             : private:
     120             :     /** Sets an explicit line marker, or creates a named line marker. */
     121             :     bool                setLineMarker( sal_Int32 nPropId, const ::com::sun::star::uno::Any& rValue );
     122             :     /** Sets an explicit line dash, or creates a named line dash. */
     123             :     bool                setLineDash( sal_Int32 nPropId, const ::com::sun::star::uno::Any& rValue );
     124             :     /** Sets an explicit fill gradient, or creates a named fill gradient. */
     125             :     bool                setFillGradient( sal_Int32 nPropId, const ::com::sun::star::uno::Any& rValue );
     126             :     /** Creates a named transparency gradient. */
     127             :     bool                setGradientTrans( sal_Int32 nPropId, const ::com::sun::star::uno::Any& rValue );
     128             :     /** Sets an explicit fill bitmap URL, or creates a named fill bitmap URL. */
     129             :     bool                setFillBitmapUrl( sal_Int32 nPropId, const ::com::sun::star::uno::Any& rValue );
     130             : 
     131             :     // not implemented, to prevent implicit conversion from enum to int
     132             :     ::com::sun::star::uno::Any& operator[]( ShapePropertyId ePropId );
     133             :     const ::com::sun::star::uno::Any& operator[]( ShapePropertyId ePropId ) const;
     134             : 
     135             : private:
     136             :     ModelObjectHelper&  mrModelObjHelper;
     137             :     ShapePropertyInfo   maShapePropInfo;
     138             : };
     139             : 
     140             : // ============================================================================
     141             : 
     142             : } // namespace drawingml
     143             : } // namespace oox
     144             : 
     145             : #endif
     146             : 
     147             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10