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

Generated for libmspub by doxygen 1.14.0