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

Generated for libmspub by doxygen 1.9.3