Shapes.h
Go to the documentation of this file.
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 #ifndef __SHAPES_H__
29 #define __SHAPES_H__
30 
31 #include <vector>
32 #include <map>
33 
34 #include "Coordinate.h"
35 #include "MSPUBConstants.h"
36 #include "ShapeType.h"
37 #include "VectorTransformation2D.h"
38 
39 namespace libmspub
40 {
41 class MSPUBCollector;
42 struct CustomShape;
43 struct Line
44 {
46  unsigned m_widthInEmu;
48  Line(ColorReference color, unsigned widthInEmu, bool lineExists) : m_color(color), m_widthInEmu(widthInEmu), m_lineExists(lineExists) { }
49  bool operator==(const Line &r) const
50  {
52  }
53 };
54 struct Shape
55 {
57  virtual void output(libwpg::WPGPaintInterface *painter, Coordinate coord);
58  virtual ~Shape()
59  {
60  }
61  WPXPropertyList props;
62  WPXPropertyList graphicsProps;
63 protected:
64  virtual void setCoordProps(Coordinate coord);
65  virtual void write(libwpg::WPGPaintInterface *painter) = 0;
67 
68  virtual WPXPropertyListVector updateGraphicsProps();
69 
70  Shape();
71 private:
72  Shape(const Shape &);
73  Shape &operator=(const Shape &);
74 };
75 struct FillableShape : public Shape
76 {
79  void setFill(Fill *fill);
80 protected:
81  virtual WPXPropertyListVector updateGraphicsProps();
82 private:
85 };
87 {
88  void addLine(ColorReference color, unsigned widthInEmu, bool lineExists);
90  void setAdjustValue(unsigned index, int adjustValue);
91  void setText(std::vector<TextParagraph> str);
92  double getCalculationValue(unsigned index, bool recursiveEntry = false) const;
93  double getSpecialValue(const CustomShape &shape, int arg) const;
94  void writeText(libwpg::WPGPaintInterface *painter);
96 
97  std::vector<TextParagraph> m_str;
98  bool m_hasText;
99  unsigned m_pageSeqNum;
100  unsigned m_imgIndex;
102  double m_x, m_y, m_width, m_height;
104  std::vector<int> m_adjustValues;
105  unsigned m_left, m_top, m_right, m_bottom; //emu
109  m_adjustValues(),
112  m_lines(), m_drawStroke(false),
115  GeometricShape(unsigned pageSeqNum, MSPUBCollector *o)
116  : FillableShape(o), m_str(), m_hasText(false), m_pageSeqNum(pageSeqNum), m_imgIndex(0), m_type(RECTANGLE),
120  m_lines(), m_drawStroke(false),
123  std::vector<Color> getPaletteColors() const;
124  void output(libwpg::WPGPaintInterface *painter, Coordinate coord);
125 protected:
126  virtual bool hasFill();
127  void setCoordProps(Coordinate coord);
128  virtual void write(libwpg::WPGPaintInterface *painter);
129  WPXPropertyListVector updateGraphicsProps();
130  GeometricShape();
131 private:
134  mutable std::vector<bool> m_valuesSeen;
138 public:
139  std::vector<Line> m_lines;
144 };
145 } // namespace libmspub
146 #endif // __SHAPES_H__
147 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */

Generated for libmspub by doxygen 1.8.1.2