CDRPath.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* libcdr
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 Fridrich Strba <fridrich.strba@bluewin.ch>
17  *
18  *
19  * All Rights Reserved.
20  *
21  * For minor contributions see the git repository.
22  *
23  * Alternatively, the contents of this file may be used under the terms of
24  * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
25  * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
26  * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
27  * instead of those above.
28  */
29 
30 #ifndef __CDRPATH_H__
31 #define __CDRPATH_H__
32 
33 #include <vector>
34 #include <libwpd/libwpd.h>
35 
36 namespace libcdr
37 {
38 
39 class CDRTransform;
40 class CDRTransforms;
41 
43 {
44 public:
46  virtual ~CDRPathElement() {}
47  virtual void writeOut(WPXPropertyListVector &vec) const = 0;
48  virtual void transform(const CDRTransforms &trafos) = 0;
49  virtual void transform(const CDRTransform &trafo) = 0;
50  virtual CDRPathElement *clone() = 0;
51 };
52 
53 
54 class CDRPath : public CDRPathElement
55 {
56 public:
57  CDRPath() : m_elements(), m_isClosed(false) {}
58  CDRPath(const CDRPath &path);
59  ~CDRPath();
60 
61  CDRPath &operator=(const CDRPath &path);
62 
63  void appendMoveTo(double x, double y);
64  void appendLineTo(double x, double y);
65  void appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y);
66  void appendQuadraticBezierTo(double x1, double y1, double x, double y);
67  void appendSplineTo(std::vector<std::pair<double, double> > &points);
68  void appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y);
69  void appendClosePath();
70  void appendPath(const CDRPath &path);
71 
72  void writeOut(WPXPropertyListVector &vec) const;
73  void writeOut(WPXString &path, WPXString &viewBox, double &width) const;
74  void transform(const CDRTransforms &trafos);
75  void transform(const CDRTransform &trafo);
77 
78  void clear();
79  bool empty() const;
80  bool isClosed() const;
81 
82 private:
83  std::vector<CDRPathElement *> m_elements;
84  bool m_isClosed;
85 };
86 
87 } // namespace libcdr
88 
89 #endif /* __CDRPATH_H__ */
90 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
CDRPath & operator=(const CDRPath &path)
Definition: CDRPath.cpp:705
void clear()
Definition: CDRPath.cpp:894
virtual ~CDRPathElement()
Definition: CDRPath.h:46
Definition: CDRPath.h:54
bool empty() const
Definition: CDRPath.cpp:903
void appendLineTo(double x, double y)
Definition: CDRPath.cpp:667
~CDRPath()
Definition: CDRPath.cpp:718
CDRPath()
Definition: CDRPath.h:57
void appendSplineTo(std::vector< std::pair< double, double > > &points)
Definition: CDRPath.cpp:687
void appendMoveTo(double x, double y)
Definition: CDRPath.cpp:662
void appendPath(const CDRPath &path)
Definition: CDRPath.cpp:723
void writeOut(WPXPropertyListVector &vec) const
Definition: CDRPath.cpp:729
bool isClosed() const
Definition: CDRPath.cpp:908
Definition: CDRTransforms.h:39
void appendCubicBezierTo(double x1, double y1, double x2, double y2, double x, double y)
Definition: CDRPath.cpp:672
void appendQuadraticBezierTo(double x1, double y1, double x, double y)
Definition: CDRPath.cpp:677
virtual void transform(const CDRTransforms &trafos)=0
void transform(const CDRTransforms &trafos)
Definition: CDRPath.cpp:877
void appendArcTo(double rx, double ry, double rotation, bool longAngle, bool sweep, double x, double y)
Definition: CDRPath.cpp:682
void appendClosePath()
Definition: CDRPath.cpp:692
virtual CDRPathElement * clone()=0
virtual void writeOut(WPXPropertyListVector &vec) const =0
CDRPathElement()
Definition: CDRPath.h:45
bool m_isClosed
Definition: CDRPath.h:84
Definition: CDRPath.h:42
std::vector< CDRPathElement * > m_elements
Definition: CDRPath.h:83
CDRPathElement * clone()
Definition: CDRPath.cpp:889
Definition: CDRTransforms.h:66

Generated for libcdr by doxygen 1.8.6