LCOV - code coverage report
Current view: top level - libreoffice/workdir/unxlngi6.pro/UnpackedTarball/mspub/src/lib - PolygonUtils.h (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 0 7 0.0 %
Date: 2012-12-17 Functions: 0 5 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
       2             : /* libmspub
       3             :  * Version: MPL 1.1 / GPLv2+ / LGPLv2+
       4             :  *
       5             :  * The contents of this file are subject to the Mozilla Public License Version
       6             :  * 1.1 (the "License"); you may not use this file except in compliance with
       7             :  * the License or as specified alternatively below. You may obtain a copy of
       8             :  * the License at http://www.mozilla.org/MPL/
       9             :  *
      10             :  * Software distributed under the License is distributed on an "AS IS" basis,
      11             :  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
      12             :  * for the specific language governing rights and limitations under the
      13             :  * License.
      14             :  *
      15             :  * Major Contributor(s):
      16             :  * Copyright (C) 2012 Brennan Vincent <brennanv@email.arizona.edu>
      17             :  *
      18             :  * All Rights Reserved.
      19             :  *
      20             :  * For minor contributions see the git repository.
      21             :  *
      22             :  * Alternatively, the contents of this file may be used under the terms of
      23             :  * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
      24             :  * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
      25             :  * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
      26             :  * instead of those above.
      27             :  */
      28             : 
      29             : #ifndef __POLYGONUTILS_H__
      30             : #define __POLYGONUTILS_H__
      31             : 
      32             : #include <vector>
      33             : 
      34             : #include <libwpg/libwpg.h>
      35             : #include <boost/function.hpp>
      36             : #include <boost/shared_ptr.hpp>
      37             : 
      38             : #include "ShapeType.h"
      39             : #include "VectorTransformation2D.h"
      40             : #include "Coordinate.h"
      41             : #include "Line.h"
      42             : 
      43             : namespace libmspub
      44             : {
      45             : const int PROP_ADJUST_VAL_FIRST = 327;
      46             : const int PROP_ADJUST_VAL_LAST  = 336;
      47             : const int PROP_GEO_LEFT         = 320;
      48             : const int PROP_GEO_TOP          = 321;
      49             : const int PROP_GEO_RIGHT        = 322;
      50             : const int PROP_GEO_BOTTOM       = 323;
      51             : 
      52             : const int OTHER_CALC_VAL        = 0x400;
      53             : const int ASPECT_RATIO          = 0x600;
      54             : 
      55             : class MSPUBCollector;
      56             : 
      57             : typedef struct
      58             : {
      59             :   int m_x;
      60             :   int m_y;
      61             : }  Vertex;
      62             : 
      63             : typedef struct
      64             : {
      65             :   int m_flags;
      66             :   int m_argOne;
      67             :   int m_argTwo;
      68             :   int m_argThree;
      69             : } Calculation;
      70             : 
      71             : typedef struct
      72             : {
      73             :   Vertex first;
      74             :   Vertex second;
      75             : } TextRectangle;
      76             : 
      77             : struct CustomShape
      78             : {
      79             :   const Vertex *mp_vertices;
      80             :   unsigned m_numVertices;
      81             :   const unsigned short *mp_elements;
      82             :   unsigned m_numElements;
      83             :   const Calculation *mp_calculations;
      84             :   unsigned m_numCalculations;
      85             :   const int *mp_defaultAdjustValues;
      86             :   unsigned m_numDefaultAdjustValues;
      87             :   const TextRectangle *mp_textRectangles;
      88             :   unsigned m_numTextRectangles;
      89             :   unsigned m_coordWidth;
      90             :   unsigned m_coordHeight;
      91             :   const Vertex *mp_gluePoints;
      92             :   unsigned m_numGluePoints;
      93             :   unsigned char m_adjustShiftMask;
      94             : 
      95             :   Coordinate getTextRectangle(double x, double y, double width, double height, boost::function<double (unsigned index)> calculator) const;
      96             : 
      97           0 :   CustomShape(const Vertex *p_vertices, unsigned numVertices, const unsigned short *p_elements, unsigned numElements, const Calculation *p_calculations, unsigned numCalculations, const int *p_defaultAdjustValues, unsigned numDefaultAdjustValues, const TextRectangle *p_textRectangles, unsigned numTextRectangles, unsigned coordWidth, unsigned coordHeight, const Vertex *p_gluePoints, unsigned numGluePoints, unsigned char adjustShiftMask = 0) :
      98             :     mp_vertices(p_vertices), m_numVertices(numVertices),
      99             :     mp_elements(p_elements), m_numElements(numElements),
     100             :     mp_calculations(p_calculations), m_numCalculations(numCalculations),
     101             :     mp_defaultAdjustValues(p_defaultAdjustValues), m_numDefaultAdjustValues(numDefaultAdjustValues),
     102             :     mp_textRectangles(p_textRectangles), m_numTextRectangles(numTextRectangles),
     103             :     m_coordWidth(coordWidth), m_coordHeight(coordHeight),
     104             :     mp_gluePoints(p_gluePoints), m_numGluePoints(numGluePoints),
     105           0 :     m_adjustShiftMask(adjustShiftMask)
     106             :   {
     107           0 :   }
     108             : };
     109             : 
     110           0 : struct DynamicCustomShape
     111             : {
     112             :   std::vector<Vertex> m_vertices;
     113             :   std::vector<unsigned short> m_elements;
     114             :   std::vector<Calculation> m_calculations;
     115             :   std::vector<int> m_defaultAdjustValues;
     116             :   std::vector<TextRectangle> m_textRectangles;
     117             :   std::vector<Vertex> m_gluePoints;
     118             :   unsigned m_coordWidth;
     119             :   unsigned m_coordHeight;
     120             :   unsigned char m_adjustShiftMask;
     121             : 
     122           0 :   DynamicCustomShape(unsigned coordWidth, unsigned coordHeight)
     123             :     : m_vertices(), m_elements(),
     124             :       m_calculations(), m_defaultAdjustValues(),
     125             :       m_textRectangles(), m_gluePoints(),
     126             :       m_coordWidth(coordWidth), m_coordHeight(coordHeight),
     127           0 :       m_adjustShiftMask(0)
     128             :   {
     129           0 :   }
     130             : };
     131             : 
     132             : boost::shared_ptr<const CustomShape> getFromDynamicCustomShape(const DynamicCustomShape &dcs);
     133             : 
     134             : const CustomShape *getCustomShape(ShapeType type);
     135             : bool isShapeTypeRectangle(ShapeType type);
     136             : void writeCustomShape(ShapeType shapeType, WPXPropertyList &graphicsProps, libwpg::WPGPaintInterface *painter, double x, double y, double height, double width, bool closeEverything, VectorTransformation2D transform, std::vector<Line> lines, boost::function<double(unsigned index)> calculator, const std::vector<Color> &palette, boost::shared_ptr<const CustomShape> shape);
     137             : 
     138             : } // libmspub
     139             : #endif /* __POLYGONUTILS_H__ */
     140             : /* vim:set shiftwidth=2 softtabstop=2 expandtab: */

Generated by: LCOV version 1.10