LCOV - code coverage report
Current view: top level - include/oox/drawingml - drawingmltypes.hxx (source / functions) Hit Total Coverage
Test: commit 10e77ab3ff6f4314137acd6e2702a6e5c1ce1fae Lines: 12 13 92.3 %
Date: 2014-11-03 Functions: 9 10 90.0 %
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 INCLUDED_OOX_DRAWINGML_DRAWINGMLTYPES_HXX
      21             : #define INCLUDED_OOX_DRAWINGML_DRAWINGMLTYPES_HXX
      22             : 
      23             : #include <boost/shared_ptr.hpp>
      24             : #include <com/sun/star/style/TabAlign.hpp>
      25             : #include <com/sun/star/drawing/TextVerticalAdjust.hpp>
      26             : #include <com/sun/star/drawing/Hatch.hpp>
      27             : #include <com/sun/star/geometry/IntegerRectangle2D.hpp>
      28             : #include <com/sun/star/awt/Point.hpp>
      29             : #include <com/sun/star/awt/Size.hpp>
      30             : #include <com/sun/star/xml/sax/XFastAttributeList.hpp>
      31             : 
      32             : #include <oox/dllapi.h>
      33             : #include <oox/helper/helper.hxx>
      34             : 
      35             : namespace oox {
      36             : namespace drawingml {
      37             : 
      38             : 
      39             : 
      40             : const sal_Int32 PER_PERCENT     = 1000;
      41             : const sal_Int32 MAX_PERCENT     = 100 * PER_PERCENT;
      42             : 
      43             : const sal_Int32 PER_DEGREE      = 60000;
      44             : const sal_Int32 MAX_DEGREE      = 360 * PER_DEGREE;
      45             : 
      46             : 
      47             : 
      48             : struct LineProperties;
      49             : typedef ::boost::shared_ptr< LineProperties > LinePropertiesPtr;
      50             : 
      51             : struct FillProperties;
      52             : typedef ::boost::shared_ptr< FillProperties > FillPropertiesPtr;
      53             : 
      54             : struct GraphicProperties;
      55             : typedef ::boost::shared_ptr< GraphicProperties > GraphicPropertiesPtr;
      56             : 
      57             : struct Shape3DProperties;
      58             : typedef ::boost::shared_ptr< Shape3DProperties > Shape3DPropertiesPtr;
      59             : 
      60             : struct TextCharacterProperties;
      61             : typedef ::boost::shared_ptr< TextCharacterProperties > TextCharacterPropertiesPtr;
      62             : 
      63             : struct TextBodyProperties;
      64             : typedef ::boost::shared_ptr< TextBodyProperties > TextBodyPropertiesPtr;
      65             : 
      66             : struct EffectProperties;
      67             : typedef ::boost::shared_ptr< EffectProperties > EffectPropertiesPtr;
      68             : 
      69             : class TextBody;
      70             : typedef ::boost::shared_ptr< TextBody > TextBodyPtr;
      71             : 
      72             : class TextListStyle;
      73             : typedef boost::shared_ptr< TextListStyle > TextListStylePtr;
      74             : 
      75             : class Shape;
      76             : typedef ::boost::shared_ptr< Shape > ShapePtr;
      77             : 
      78             : class Theme;
      79             : typedef ::boost::shared_ptr< Theme > ThemePtr;
      80             : 
      81             : 
      82             : 
      83             : namespace table {
      84             : 
      85             : class TableProperties;
      86             : typedef ::boost::shared_ptr< TableProperties > TablePropertiesPtr;
      87             : 
      88             : } // namespace table
      89             : 
      90             : 
      91             : 
      92             : /** converts the attributes from an CT_TLPoint into an awt Point with 1/1000% */
      93             : com::sun::star::awt::Point GetPointPercent( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& xAttribs );
      94             : 
      95             : 
      96             : /** converts the attributes from an CT_Size2D into an awt Size with 1/100th mm */
      97             : com::sun::star::awt::Size GetSize2D( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& xAttributes );
      98             : 
      99             : /** converts the attributes from a CT_RelativeRect to an IntegerRectangle2D */
     100             : com::sun::star::geometry::IntegerRectangle2D GetRelativeRect( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& xAttributes );
     101             : 
     102             : /** converts EMUs into 1/100th mmm */
     103             : sal_Int32 GetCoordinate( sal_Int32 nValue );
     104             : 
     105             : /** converts an emu string into 1/100th mmm */
     106             : sal_Int32 GetCoordinate( const OUString& sValue );
     107             : 
     108             : /** converts a ST_Percentage % string into 1/1000th of % */
     109             : sal_Int32 GetPercent( const OUString& sValue );
     110             : 
     111             : /** Converts a ST_PositiveFixedPercentage to a float. 1.0 == 100% */
     112             : double GetPositiveFixedPercentage( const OUString& sValue );
     113             : 
     114             : /** converts the ST_TextFontSize to point */
     115             : float GetTextSize( const OUString& rValue );
     116             : 
     117             : /** converts the ST_TextSpacingPoint to 1/100mm */
     118             : sal_Int32 GetTextSpacingPoint(  const OUString& sValue );
     119             : sal_Int32 GetTextSpacingPoint(  const sal_Int32 nValue );
     120             : 
     121             : /** */
     122             : ::com::sun::star::style::TabAlign GetTabAlign( ::sal_Int32 aToken );
     123             : 
     124             : float GetFontHeight( sal_Int32 nHeight );
     125             : 
     126             : sal_Int16 GetFontUnderline( sal_Int32 nToken );
     127             : 
     128             : sal_Int16 GetFontStrikeout( sal_Int32 nToken );
     129             : 
     130             : sal_Int16 GetCaseMap( sal_Int32 nToken );
     131             : 
     132             : /** converts a paragraph align to a ParaAdjust */
     133             : sal_Int16 GetParaAdjust( sal_Int32 nAlign );
     134             : 
     135             : // Converts vertical adjust tokens to a TextVerticalAdjust item
     136             : ::com::sun::star::drawing::TextVerticalAdjust GetTextVerticalAdjust( sal_Int32 nToken );
     137             : 
     138             : // Converts a TextVerticalAdjust item to string value appearing in ooxml
     139             : OOX_DLLPUBLIC const char* GetTextVerticalAdjust( ::com::sun::star::drawing::TextVerticalAdjust eAdjust );
     140             : 
     141             : // Converts a Hatch object to an ooxml pattern.
     142             : const char* GetHatchPattern( const ::com::sun::star::drawing::Hatch& rHatch );
     143             : 
     144             : 
     145             : 
     146             : // CT_IndexRange
     147             : struct IndexRange {
     148             :     sal_Int32 start;
     149             :     sal_Int32 end;
     150             : };
     151             : 
     152             : /** retrieve the content of CT_IndexRange */
     153             : IndexRange GetIndexRange( const ::com::sun::star::uno::Reference< ::com::sun::star::xml::sax::XFastAttributeList >& xAttributes );
     154             : 
     155             : 
     156             : 
     157             : const sal_Int32 EMU_PER_HMM = 360;      /// 360 EMUs per 1/100 mm.
     158             : 
     159             : /** Converts the passed 32-bit integer value from 1/100 mm to EMUs. */
     160         342 : inline sal_Int64 convertHmmToEmu( sal_Int32 nValue )
     161             : {
     162         342 :     return static_cast< sal_Int64 >( nValue ) * EMU_PER_HMM;
     163             : }
     164             : 
     165             : /** Converts the passed 64-bit integer value from EMUs to 1/100 mm. */
     166       32792 : inline sal_Int32 convertEmuToHmm( sal_Int64 nValue )
     167             : {
     168       32792 :     sal_Int32 nCorrection = (nValue > 0 ? 1 : -1) * EMU_PER_HMM / 2; // So that the implicit floor will round.
     169       32792 :     return getLimitedValue< sal_Int32, sal_Int64 >( (nValue + nCorrection) / EMU_PER_HMM, SAL_MIN_INT32, SAL_MAX_INT32 );
     170             : }
     171             : 
     172             : 
     173             : 
     174             : /** A structure for a point with 64-bit integer components. */
     175             : struct EmuPoint
     176             : {
     177             :     sal_Int64           X;
     178             :     sal_Int64           Y;
     179             : 
     180           2 :                  EmuPoint() : X( 0 ), Y( 0 ) {}
     181         202 :     explicit     EmuPoint( sal_Int64 nX, sal_Int64 nY ) : X( nX ), Y( nY ) {}
     182             : };
     183             : 
     184             : 
     185             : 
     186             : /** A structure for a size with 64-bit integer components. */
     187             : struct EmuSize
     188             : {
     189             :     sal_Int64           Width;
     190             :     sal_Int64           Height;
     191             : 
     192           2 :                  EmuSize() : Width( 0 ), Height( 0 ) {}
     193         154 :     explicit     EmuSize( sal_Int64 nWidth, sal_Int64 nHeight ) : Width( nWidth ), Height( nHeight ) {}
     194             : };
     195             : 
     196             : 
     197             : 
     198             : /** A structure for a rectangle with 64-bit integer components. */
     199             : struct EmuRectangle : public EmuPoint, public EmuSize
     200             : {
     201           2 :                  EmuRectangle() {}
     202             :     explicit     EmuRectangle( const EmuPoint& rPos, const EmuSize& rSize ) : EmuPoint( rPos ), EmuSize( rSize ) {}
     203          52 :     explicit     EmuRectangle( sal_Int64 nX, sal_Int64 nY, sal_Int64 nWidth, sal_Int64 nHeight ) : EmuPoint( nX, nY ), EmuSize( nWidth, nHeight ) {}
     204             : 
     205          50 :     void         setPos( const EmuPoint& rPos ) { static_cast< EmuPoint& >( *this ) = rPos; }
     206           0 :     void         setSize( const EmuSize& rSize ) { static_cast< EmuSize& >( *this ) = rSize; }
     207             : };
     208             : 
     209             : 
     210             : 
     211             : } // namespace drawingml
     212             : } // namespace oox
     213             : 
     214             : #endif
     215             : 
     216             : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10