Fill.h
Go to the documentation of this file.
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /*
3  * This file is part of the libmspub 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 
10 #ifndef __FILL_H__
11 #define __FILL_H__
12 
13 #include <cstddef>
14 
15 #include <vector>
16 
17 #include <librevenge/librevenge.h>
18 
19 #include "ColorReference.h"
20 
21 namespace libmspub
22 {
23 class MSPUBCollector;
24 class Fill
25 {
26 protected:
28 public:
29  Fill(const MSPUBCollector *owner);
30  virtual void getProperties(librevenge::RVNGPropertyList *out) const = 0;
31  virtual ~Fill() { }
32 private:
33  Fill(const Fill &) : m_owner(NULL) { }
34  Fill &operator=(const Fill &);
35 };
36 
37 class ImgFill : public Fill
38 {
39 protected:
40  unsigned m_imgIndex;
41 private:
43 protected:
45 public:
46  ImgFill(unsigned imgIndex, const MSPUBCollector *owner, bool isTexture, int rotation);
47  virtual void getProperties(librevenge::RVNGPropertyList *out) const;
48 private:
49  ImgFill(const ImgFill &) : Fill(NULL), m_imgIndex(0), m_isTexture(false), m_rotation(0) { }
50  ImgFill &operator=(const ImgFill &);
51 };
52 
53 class PatternFill : public ImgFill
54 {
57 public:
58  PatternFill(unsigned imgIndex, const MSPUBCollector *owner, ColorReference fg, ColorReference bg);
59  void getProperties(librevenge::RVNGPropertyList *out) const;
60 private:
61  PatternFill(const PatternFill &) : ImgFill(0, NULL, true, 0), m_fg(0x08000000), m_bg(0x08000000) { }
62  PatternFill &operator=(const ImgFill &);
63 };
64 
65 class SolidFill : public Fill
66 {
68  double m_opacity;
69 public:
70  SolidFill(ColorReference color, double opacity, const MSPUBCollector *owner);
71  void getProperties(librevenge::RVNGPropertyList *out) const;
72 private:
73  SolidFill(const SolidFill &) : Fill(NULL), m_color(0x08000000), m_opacity(1) { }
74  SolidFill &operator=(const SolidFill &);
75 };
76 
77 class GradientFill : public Fill
78 {
79  struct StopInfo
80  {
82  unsigned m_offsetPercent;
83  double m_opacity;
84  StopInfo(ColorReference colorReference, unsigned offsetPercent, double opacity) : m_colorReference(colorReference), m_offsetPercent(offsetPercent), m_opacity(opacity) { }
85  };
86  std::vector<StopInfo> m_stops;
87  double m_angle;
88  int m_type;
89  double m_fillLeftVal;
90  double m_fillTopVal;
93 public:
94  GradientFill(const MSPUBCollector *owner, double angle = 0, int type = 7);
95  void setFillCenter(double left, double top, double right, double bottom);
96  void addColor(ColorReference c, unsigned offsetPercent, double opacity);
97  void addColorReverse(ColorReference c, unsigned offsetPercent, double opacity);
98  void completeComplexFill();
99  void getProperties(librevenge::RVNGPropertyList *out) const;
100 private:
101  GradientFill(const GradientFill &) : Fill(NULL), m_stops(), m_angle(0), m_type(7), m_fillLeftVal(0.0), m_fillTopVal(0.0), m_fillRightVal(0.0), m_fillBottomVal(0.0) { }
103 };
104 }
105 
106 #endif /* __FILL_H__ */
107 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
const MSPUBCollector * m_owner
Definition: Fill.h:27
ImgFill(const ImgFill &)
Definition: Fill.h:49
std::vector< StopInfo > m_stops
Definition: Fill.h:86
SolidFill(const SolidFill &)
Definition: Fill.h:73
void getProperties(librevenge::RVNGPropertyList *out) const
Definition: Fill.cpp:52
double m_opacity
Definition: Fill.h:83
ColorReference m_color
Definition: Fill.h:67
double m_fillRightVal
Definition: Fill.h:91
ImgFill & operator=(const ImgFill &)
double m_fillBottomVal
Definition: Fill.h:92
Definition: Fill.h:24
int m_type
Definition: Fill.h:88
StopInfo(ColorReference colorReference, unsigned offsetPercent, double opacity)
Definition: Fill.h:84
PatternFill & operator=(const ImgFill &)
GradientFill & operator=(const GradientFill &)
double m_angle
Definition: Fill.h:87
virtual void getProperties(librevenge::RVNGPropertyList *out) const
Definition: Fill.cpp:26
Definition: Fill.h:37
bool m_isTexture
Definition: Fill.h:42
PatternFill(const PatternFill &)
Definition: Fill.h:61
ColorReference m_fg
Definition: Fill.h:55
Definition: Fill.h:53
Definition: ColorReference.h:17
void addColorReverse(ColorReference c, unsigned offsetPercent, double opacity)
Definition: Fill.cpp:116
ColorReference m_colorReference
Definition: Fill.h:81
virtual ~Fill()
Definition: Fill.h:31
Definition: Fill.h:77
SolidFill & operator=(const SolidFill &)
int m_rotation
Definition: Fill.h:44
ImgFill(unsigned imgIndex, const MSPUBCollector *owner, bool isTexture, int rotation)
Definition: Fill.cpp:22
void addColor(ColorReference c, unsigned offsetPercent, double opacity)
Definition: Fill.cpp:111
unsigned m_offsetPercent
Definition: Fill.h:82
unsigned m_imgIndex
Definition: Fill.h:40
ColorReference m_bg
Definition: Fill.h:56
double m_fillLeftVal
Definition: Fill.h:89
Fill(const MSPUBCollector *owner)
Definition: Fill.cpp:18
Definition: Arrow.h:13
GradientFill(const MSPUBCollector *owner, double angle=0, int type=7)
Definition: Fill.cpp:99
Fill & operator=(const Fill &)
void completeComplexFill()
Definition: Fill.cpp:121
SolidFill(ColorReference color, double opacity, const MSPUBCollector *owner)
Definition: Fill.cpp:84
void setFillCenter(double left, double top, double right, double bottom)
Definition: Fill.cpp:103
Definition: MSPUBCollector.h:46
GradientFill(const GradientFill &)
Definition: Fill.h:101
Definition: Fill.h:65
double m_fillTopVal
Definition: Fill.h:90
void getProperties(librevenge::RVNGPropertyList *out) const
Definition: Fill.cpp:88
Fill(const Fill &)
Definition: Fill.h:33
PatternFill(unsigned imgIndex, const MSPUBCollector *owner, ColorReference fg, ColorReference bg)
Definition: Fill.cpp:48
virtual void getProperties(librevenge::RVNGPropertyList *out) const =0
void getProperties(librevenge::RVNGPropertyList *out) const
Definition: Fill.cpp:131
double m_opacity
Definition: Fill.h:68

Generated for libmspub by doxygen 1.8.9.1