MWAWPageSpan.hxx
Go to the documentation of this file.
1 /* -*- Mode: C++; c-default-style: "k&r"; indent-tabs-mode: nil; tab-width: 2; c-basic-offset: 2 -*- */
2
3 /* libmwaw
4 * Version: MPL 2.0 / LGPLv2+
5 *
6 * The contents of this file are subject to the Mozilla Public License Version
7 * 2.0 (the "License"); you may not use this file except in compliance with
8 * the License or as specified alternatively below. You may obtain a copy of
9 * the License at http://www.mozilla.org/MPL/
10 *
11 * Software distributed under the License is distributed on an "AS IS" basis,
12 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13 * for the specific language governing rights and limitations under the
14 * License.
15 *
16 * Major Contributor(s):
17 * Copyright (C) 2002 William Lachance (wrlach@gmail.com)
18 * Copyright (C) 2002,2004 Marc Maurer (uwog@uwog.net)
19 * Copyright (C) 2004-2006 Fridrich Strba (fridrich.strba@bluewin.ch)
20 * Copyright (C) 2006, 2007 Andrew Ziem
21 * Copyright (C) 2011, 2012 Alonso Laurent (alonso@loria.fr)
22 *
23 *
24 * All Rights Reserved.
25 *
26 * For minor contributions see the git repository.
27 *
28 * Alternatively, the contents of this file may be used under the terms of
29 * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
30 * in which case the provisions of the LGPLv2+ are applicable
31 * instead of those above.
32 */
33
34 #ifndef MWAWPAGESPAN_H
35 #define MWAWPAGESPAN_H
36
37 #include <vector>
38
39 #include "libmwaw_internal.hxx"
40
41 #include "MWAWFont.hxx"
42
44 class MWAWHeaderFooter
45 {
46 public:
48 enum Type { HEADER, FOOTER, UNDEF };
50 enum Occurrence { ODD, EVEN, ALL, NEVER };
52 enum PageNumberPosition { None = 0, TopLeft, TopCenter, TopRight, BottomLeft, BottomCenter, BottomRight };
53
55 MWAWHeaderFooter(Type const type=UNDEF, Occurrence const occurrence=NEVER);
57 ~MWAWHeaderFooter();
59 bool isDefined() const
60 {
61 return m_type != UNDEF;
62 }
64 void send(MWAWListener *listener) const;
66 bool operator==(MWAWHeaderFooter const &headerFooter) const;
68 bool operator!=(MWAWHeaderFooter const &headerFooter) const
69 {
70 return !operator==(headerFooter);
71 }
73 void insertPageNumberParagraph(MWAWListener *listener) const;
74
75 public:
77 Type m_type;
79 Occurrence m_occurrence;
81 double m_height;
83 PageNumberPosition m_pageNumberPosition;
85 libmwaw::NumberingType m_pageNumberType;
87 MWAWFont m_pageNumberFont;
89 MWAWSubDocumentPtr m_subDocument;
90 };
91
92 typedef shared_ptr<MWAWHeaderFooter> MWAWHeaderFooterPtr;
93
95 class MWAWPageSpan
96 {
97 public:
99 enum FormOrientation { PORTRAIT, LANDSCAPE };
101 enum PageNumberPosition { None = 0, TopLeft, TopCenter, TopRight,
102 BottomLeft, BottomCenter, BottomRight
103 };
104 public:
106 MWAWPageSpan();
108 ~MWAWPageSpan();
109
111 double getFormLength() const
112 {
113 return m_formLength;
114 }
116 double getFormWidth() const
117 {
118 return m_formWidth;
119 }
121 FormOrientation getFormOrientation() const
122 {
123 return m_formOrientation;
124 }
126 double getMarginLeft() const
127 {
128 return m_margins[libmwaw::Left];
129 }
131 double getMarginRight() const
132 {
133 return m_margins[libmwaw::Right];
134 }
136 double getMarginTop() const
137 {
138 return m_margins[libmwaw::Top];
139 }
141 double getMarginBottom() const
142 {
143 return m_margins[libmwaw::Bottom];
144 }
146 double getPageLength() const
147 {
148 return m_formLength-m_margins[libmwaw::Top]-m_margins[libmwaw::Bottom];
149 }
151 double getPageWidth() const
152 {
153 return m_formWidth-m_margins[libmwaw::Left]-m_margins[libmwaw::Right];
154 }
156 MWAWColor backgroundColor() const
157 {
158 return m_backgroundColor;
159 }
160 int getPageNumber() const
161 {
162 return m_pageNumber;
163 }
164 int getPageSpan() const
165 {
166 return m_pageSpan;
167 }
168
170 void setHeaderFooter(MWAWHeaderFooter const &headerFooter);
172 void setFormLength(const double formLength)
173 {
174 m_formLength = formLength;
175 }
177 void setFormWidth(const double formWidth)
178 {
179 m_formWidth = formWidth;
180 }
182 void setFormOrientation(const FormOrientation formOrientation)
183 {
184 m_formOrientation = formOrientation;
185 }
187 void setMarginLeft(const double marginLeft)
188 {
189 m_margins[libmwaw::Left] = (marginLeft >= 0) ? marginLeft : 0.01;
190 }
192 void setMarginRight(const double marginRight)
193 {
194 m_margins[libmwaw::Right] = (marginRight >= 0) ? marginRight : 0.01;
195 }
197 void setMarginTop(const double marginTop)
198 {
199 m_margins[libmwaw::Top] =(marginTop >= 0) ? marginTop : 0.01;
200 }
202 void setMarginBottom(const double marginBottom)
203 {
204 m_margins[libmwaw::Bottom] = (marginBottom >= 0) ? marginBottom : 0.01;
205 }
207 void setMargins(double margin, int wh=libmwaw::LeftBit|libmwaw::RightBit|libmwaw::TopBit|libmwaw::BottomBit)
208 {
209 if (margin < 0.0) margin = 0.01;
210 if (wh&libmwaw::LeftBit)
211 m_margins[libmwaw::Left]=margin;
212 if (wh&libmwaw::RightBit)
213 m_margins[libmwaw::Right]=margin;
214 if (wh&libmwaw::TopBit)
215 m_margins[libmwaw::Top]=margin;
216 if (wh&libmwaw::BottomBit)
217 m_margins[libmwaw::Bottom]=margin;
218 }
220 void checkMargins();
222 void setPageName(librevenge::RVNGString const &name)
223 {
224 m_name=name;
225 }
227 bool hasPageName() const
228 {
229 return !m_name.empty();
230 }
232 librevenge::RVNGString const &getPageName() const
233 {
234 return m_name;
235 }
237 void setMasterPageName(librevenge::RVNGString const &name)
238 {
239 m_masterName=name;
240 }
242 bool hasMasterPageName() const
243 {
244 return !m_masterName.empty();
245 }
247 librevenge::RVNGString const &getMasterPageName() const
248 {
249 return m_masterName;
250 }
252 void setBackgroundColor(MWAWColor color=MWAWColor::white())
253 {
254 m_backgroundColor=color;
255 }
257 void setPageNumber(const int pageNumber)
258 {
259 m_pageNumber = pageNumber;
260 }
262 void setPageSpan(const int pageSpan)
263 {
264 m_pageSpan = pageSpan;
265 }
267 bool operator==(shared_ptr<MWAWPageSpan> const &pageSpan) const;
269 bool operator!=(shared_ptr<MWAWPageSpan> const &pageSpan) const
270 {
271 return !operator==(pageSpan);
272 }
273
274 // interface with MWAWListener
276 void getPageProperty(librevenge::RVNGPropertyList &pList, bool isPresentation=false) const;
278 void sendHeaderFooters(MWAWListener *listener) const;
280 void sendHeaderFooters(MWAWListener *listener, MWAWHeaderFooter::Occurrence occurrence) const;
281
282 protected:
284 int getHeaderFooterPosition(MWAWHeaderFooter::Type type, MWAWHeaderFooter::Occurrence occurrence);
286 void removeHeaderFooter(MWAWHeaderFooter::Type type, MWAWHeaderFooter::Occurrence occurrence);
288 bool containsHeaderFooter(MWAWHeaderFooter::Type type, MWAWHeaderFooter::Occurrence occurrence);
289 private:
290 double m_formLength, m_formWidth ;
292 double m_margins[4];
294 librevenge::RVNGString m_name;
296 librevenge::RVNGString m_masterName;
298 FormOrientation m_formOrientation;
300 MWAWColor m_backgroundColor;
302 std::vector<MWAWHeaderFooter> m_headerFooterList;
304 int m_pageNumber;
306 int m_pageSpan;
307 };
308
309 #endif
310 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
MWAWPageSpan::getPageLength
double getPageLength() const
returns the page length (form width without margin )
Definition: MWAWPageSpan.hxx:146
MWAWHeaderFooter::PageNumberPosition
PageNumberPosition
a fixed page number position
Definition: MWAWPageSpan.hxx:52
MWAWPageSpan::getFormLength
double getFormLength() const
returns the page length
Definition: MWAWPageSpan.hxx:111
MWAWPageSpan::getFormOrientation
FormOrientation getFormOrientation() const
returns the page orientation
Definition: MWAWPageSpan.hxx:121
MWAWPageSpan::getFormWidth
double getFormWidth() const
returns the page width
Definition: MWAWPageSpan.hxx:116
libmwaw::NumberingType
NumberingType
Definition: libmwaw_internal.hxx:184
MWAWHeaderFooter::m_height
double m_height
the height ( if known )
Definition: MWAWPageSpan.hxx:81
MWAWPageSpan::setMarginBottom
void setMarginBottom(const double marginBottom)
set the page bottom margin
Definition: MWAWPageSpan.hxx:202
MWAWHeaderFooter::FOOTER
Definition: MWAWPageSpan.hxx:48
MWAWHeaderFooter::ODD
Definition: MWAWPageSpan.hxx:50
MWAWHeaderFooter::HEADER
Definition: MWAWPageSpan.hxx:48
MWAWPageSpan::getMarginBottom
double getMarginBottom() const
returns the bottom margin
Definition: MWAWPageSpan.hxx:141
MWAWHeaderFooter::Occurrence
Occurrence
the header/footer occurrence in the file
Definition: MWAWPageSpan.hxx:50
libmwaw::TopBit
Definition: libmwaw_internal.hxx:182
MWAWPageSpan::setPageSpan
void setPageSpan(const int pageSpan)
set the page span ( default 1)
Definition: MWAWPageSpan.hxx:262
MWAWPageSpan
A class which defines the page properties.
Definition: MWAWPageSpan.hxx:95
MWAWPageSpan::m_pageNumber
int m_pageNumber
the page number ( or -1)
Definition: MWAWPageSpan.hxx:304
MWAWHeaderFooter::operator==
bool operator==(MWAWHeaderFooter const &headerFooter) const
operator==
Definition: MWAWPageSpan.cxx:111
libmwaw_internal.hxx
MWAWPageSpan::setMarginTop
void setMarginTop(const double marginTop)
set the page top margin
Definition: MWAWPageSpan.hxx:197
MWAWColor::white
static MWAWColor white()
return the white color
Definition: libmwaw_internal.hxx:245
MWAWHeaderFooter::isDefined
bool isDefined() const
returns true if the header footer is defined
Definition: MWAWPageSpan.hxx:59
MWAWPageSpan::getPageWidth
double getPageWidth() const
returns the page width (form width without margin )
Definition: MWAWPageSpan.hxx:151
MWAWPageSpan::getPageName
librevenge::RVNGString const & getPageName() const
return the page name
Definition: MWAWPageSpan.hxx:232
MWAWHeaderFooter::Type
Type
the header/footer type
Definition: MWAWPageSpan.hxx:48
MWAWPageSpan::m_masterName
librevenge::RVNGString m_masterName
the page master name
Definition: MWAWPageSpan.hxx:296
MWAWPageSpan::getPageSpan
int getPageSpan() const
Definition: MWAWPageSpan.hxx:164
MWAWPageSpan::PageNumberPosition
PageNumberPosition
a fixed page number position
Definition: MWAWPageSpan.hxx:101
libmwaw::Bottom
Definition: libmwaw_internal.hxx:180
MWAWPageSpan::FormOrientation
FormOrientation
the page orientation
Definition: MWAWPageSpan.hxx:99
libmwaw::Top
Definition: libmwaw_internal.hxx:180
MWAWHeaderFooter::send
void send(MWAWListener *listener) const
send to header to the listener
Definition: MWAWPageSpan.cxx:134
MWAWPageSpan::setMarginRight
void setMarginRight(const double marginRight)
set the page right margin
Definition: MWAWPageSpan.hxx:192
libmwaw::Right
Definition: libmwaw_internal.hxx:180
MWAWHeaderFooter::ALL
Definition: MWAWPageSpan.hxx:50
MWAWHeaderFooter::m_pageNumberFont
MWAWFont m_pageNumberFont
the page numbering font
Definition: MWAWPageSpan.hxx:87
MWAWColor
the class to store a color
Definition: libmwaw_internal.hxx:196
MWAWSubDocumentPtr
shared_ptr< MWAWSubDocument > MWAWSubDocumentPtr
a smart pointer of MWAWSubDocument
Definition: libmwaw_internal.hxx:531
MWAWPageSpan::setMargins
void setMargins(double margin, int wh=libmwaw::LeftBit|libmwaw::RightBit|libmwaw::TopBit|libmwaw::BottomBit)
set all the margins
Definition: MWAWPageSpan.hxx:207
libmwaw::Left
Definition: libmwaw_internal.hxx:180
MWAWPageSpan::hasMasterPageName
bool hasMasterPageName() const
return true if the masterPage has a name
Definition: MWAWPageSpan.hxx:242
MWAWHeaderFooter::BottomRight
Definition: MWAWPageSpan.hxx:52
MWAWFont
Class to store font.
Definition: MWAWFont.hxx:43
MWAWPageSpan::backgroundColor
MWAWColor backgroundColor() const
returns the background color
Definition: MWAWPageSpan.hxx:156
MWAWHeaderFooter::m_occurrence
Occurrence m_occurrence
the actual occurrence
Definition: MWAWPageSpan.hxx:79
MWAWHeaderFooter::None
Definition: MWAWPageSpan.hxx:52
MWAWPageSpan::operator!=
bool operator!=(shared_ptr< MWAWPageSpan > const &pageSpan) const
operator!=
Definition: MWAWPageSpan.hxx:269
MWAWFont.hxx
MWAWHeaderFooter::operator!=
bool operator!=(MWAWHeaderFooter const &headerFooter) const
operator!=
Definition: MWAWPageSpan.hxx:68
MWAWPageSpan::setFormWidth
void setFormWidth(const double formWidth)
set the total page width
Definition: MWAWPageSpan.hxx:177
MWAWHeaderFooter::MWAWHeaderFooter
MWAWHeaderFooter(Type const type=UNDEF, Occurrence const occurrence=NEVER)
constructor
Definition: MWAWPageSpan.cxx:100
MWAWPageSpan::PORTRAIT
Definition: MWAWPageSpan.hxx:99
MWAWHeaderFooter::NEVER
Definition: MWAWPageSpan.hxx:50
MWAWPageSpan::getMasterPageName
librevenge::RVNGString const & getMasterPageName() const
return the page master name
Definition: MWAWPageSpan.hxx:247
MWAWPageSpan::setPageName
void setPageName(librevenge::RVNGString const &name)
set the page name
Definition: MWAWPageSpan.hxx:222
MWAWHeaderFooter::insertPageNumberParagraph
void insertPageNumberParagraph(MWAWListener *listener) const
insert a page number
Definition: MWAWPageSpan.cxx:174
MWAWHeaderFooter::TopRight
Definition: MWAWPageSpan.hxx:52
libmwaw::BottomBit
Definition: libmwaw_internal.hxx:182
MWAWHeaderFooterPtr
shared_ptr< MWAWHeaderFooter > MWAWHeaderFooterPtr
Definition: MWAWPageSpan.hxx:92
MWAWPageSpan::getPageNumber
int getPageNumber() const
Definition: MWAWPageSpan.hxx:160
MWAWPageSpan::setFormOrientation
void setFormOrientation(const FormOrientation formOrientation)
set the form orientation
Definition: MWAWPageSpan.hxx:182
libmwaw::RightBit
Definition: libmwaw_internal.hxx:182
MWAWHeaderFooter::m_pageNumberType
libmwaw::NumberingType m_pageNumberType
the page numbering type
Definition: MWAWPageSpan.hxx:85
MWAWPageSpan::setMarginLeft
void setMarginLeft(const double marginLeft)
set the page left margin
Definition: MWAWPageSpan.hxx:187
MWAWPageSpan::m_headerFooterList
std::vector< MWAWHeaderFooter > m_headerFooterList
the list of header
Definition: MWAWPageSpan.hxx:302
MWAWPageSpan::m_backgroundColor
MWAWColor m_backgroundColor
the page background color: default white
Definition: MWAWPageSpan.hxx:300
MWAWHeaderFooter::UNDEF
Definition: MWAWPageSpan.hxx:48
MWAWHeaderFooter
a class which stores the header/footer data
Definition: MWAWPageSpan.hxx:44
MWAWPageSpan::TopRight
Definition: MWAWPageSpan.hxx:101
MWAWHeaderFooter::BottomCenter
Definition: MWAWPageSpan.hxx:52
MWAWHeaderFooter::TopCenter
Definition: MWAWPageSpan.hxx:52
MWAWListener
This class contains a virtual interface to all listener.
Definition: MWAWListener.hxx:49
MWAWPageSpan::setPageNumber
void setPageNumber(const int pageNumber)
set the page number
Definition: MWAWPageSpan.hxx:257
MWAWHeaderFooter::EVEN
Definition: MWAWPageSpan.hxx:50
MWAWPageSpan::m_formOrientation
FormOrientation m_formOrientation
the form orientation
Definition: MWAWPageSpan.hxx:298
MWAWPageSpan::setMasterPageName
void setMasterPageName(librevenge::RVNGString const &name)
set the page master name
Definition: MWAWPageSpan.hxx:237
MWAWPageSpan::m_pageSpan
int m_pageSpan
the number of page
Definition: MWAWPageSpan.hxx:306
MWAWHeaderFooter::m_pageNumberPosition
PageNumberPosition m_pageNumberPosition
the page number position ( or none)
Definition: MWAWPageSpan.hxx:83
MWAWHeaderFooter::TopLeft
Definition: MWAWPageSpan.hxx:52
MWAWPageSpan::getMarginLeft
double getMarginLeft() const
returns the left margin
Definition: MWAWPageSpan.hxx:126
MWAWHeaderFooter::m_subDocument
MWAWSubDocumentPtr m_subDocument
the document data
Definition: MWAWPageSpan.hxx:89
MWAWPageSpan::setFormLength
void setFormLength(const double formLength)
set the total page length
Definition: MWAWPageSpan.hxx:172
MWAWHeaderFooter::m_type
Type m_type
the type header/footer
Definition: MWAWPageSpan.hxx:77
libmwaw::LeftBit
Definition: libmwaw_internal.hxx:182
MWAWPageSpan::getMarginTop
double getMarginTop() const
returns the top margin
Definition: MWAWPageSpan.hxx:136
MWAWHeaderFooter::~MWAWHeaderFooter
~MWAWHeaderFooter()
destructor
Definition: MWAWPageSpan.cxx:107
MWAWPageSpan::hasPageName
bool hasPageName() const
return true if the page has a name
Definition: MWAWPageSpan.hxx:227
MWAWHeaderFooter::BottomLeft
Definition: MWAWPageSpan.hxx:52
MWAWPageSpan::setBackgroundColor
void setBackgroundColor(MWAWColor color=MWAWColor::white())
set the background color
Definition: MWAWPageSpan.hxx:252
MWAWPageSpan::getMarginRight
double getMarginRight() const
returns the right margin
Definition: MWAWPageSpan.hxx:131
MWAWPageSpan::m_name
librevenge::RVNGString m_name
the page name
Definition: MWAWPageSpan.hxx:294