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 
45 {
46 public:
48  enum Type { HEADER, FOOTER, UNDEF };
50  enum Occurrence { ODD, EVEN, ALL, NEVER };
53 
55  MWAWHeaderFooter(Type const type=UNDEF, Occurrence const occurrence=NEVER);
62  bool isDefined() const
63  {
64  return m_type != UNDEF;
65  }
67  void send(MWAWListener *listener) const;
69  bool operator==(MWAWHeaderFooter const &headerFooter) const;
71  bool operator!=(MWAWHeaderFooter const &headerFooter) const
72  {
73  return !operator==(headerFooter);
74  }
76  void insertPageNumberParagraph(MWAWListener *listener) const;
77 
78 public:
84  double m_height;
93 };
94 
95 typedef std::shared_ptr<MWAWHeaderFooter> MWAWHeaderFooterPtr;
96 
99 {
100 public:
106  };
107 public:
109  MWAWPageSpan();
110  MWAWPageSpan(MWAWPageSpan const &)=default;
114  ~MWAWPageSpan();
115 
117  double getFormLength() const
118  {
119  return m_formLength;
120  }
122  double getFormWidth() const
123  {
124  return m_formWidth;
125  }
128  {
129  return m_formOrientation;
130  }
132  double getMarginLeft() const
133  {
134  return m_margins[libmwaw::Left];
135  }
137  double getMarginRight() const
138  {
139  return m_margins[libmwaw::Right];
140  }
142  double getMarginTop() const
143  {
144  return m_margins[libmwaw::Top];
145  }
147  double getMarginBottom() const
148  {
149  return m_margins[libmwaw::Bottom];
150  }
152  double getPageLength() const
153  {
155  }
157  double getPageWidth() const
158  {
160  }
163  {
164  return m_backgroundColor;
165  }
166  int getPageNumber() const
167  {
168  return m_pageNumber;
169  }
170  int getPageSpan() const
171  {
172  return m_pageSpan;
173  }
174 
176  void setHeaderFooter(MWAWHeaderFooter const &headerFooter);
178  void setFormLength(const double formLength)
179  {
180  m_formLength = formLength;
181  }
183  void setFormWidth(const double formWidth)
184  {
185  m_formWidth = formWidth;
186  }
188  void setFormOrientation(const FormOrientation formOrientation)
189  {
190  m_formOrientation = formOrientation;
191  }
193  void setMarginLeft(const double marginLeft)
194  {
195  m_margins[libmwaw::Left] = (marginLeft >= 0) ? marginLeft : 0.01;
196  }
198  void setMarginRight(const double marginRight)
199  {
200  m_margins[libmwaw::Right] = (marginRight >= 0) ? marginRight : 0.01;
201  }
203  void setMarginTop(const double marginTop)
204  {
205  m_margins[libmwaw::Top] =(marginTop >= 0) ? marginTop : 0.01;
206  }
208  void setMarginBottom(const double marginBottom)
209  {
210  m_margins[libmwaw::Bottom] = (marginBottom >= 0) ? marginBottom : 0.01;
211  }
214  {
215  if (margin < 0.0) margin = 0.01;
216  if (wh&libmwaw::LeftBit)
217  m_margins[libmwaw::Left]=margin;
218  if (wh&libmwaw::RightBit)
219  m_margins[libmwaw::Right]=margin;
220  if (wh&libmwaw::TopBit)
221  m_margins[libmwaw::Top]=margin;
222  if (wh&libmwaw::BottomBit)
223  m_margins[libmwaw::Bottom]=margin;
224  }
226  void checkMargins();
228  void setPageName(librevenge::RVNGString const &name)
229  {
230  m_name=name;
231  }
233  bool hasPageName() const
234  {
235  return !m_name.empty();
236  }
238  librevenge::RVNGString const &getPageName() const
239  {
240  return m_name;
241  }
243  void setMasterPageName(librevenge::RVNGString const &name)
244  {
245  m_masterName=name;
246  }
248  bool hasMasterPageName() const
249  {
250  return !m_masterName.empty();
251  }
253  librevenge::RVNGString const &getMasterPageName() const
254  {
255  return m_masterName;
256  }
259  {
260  m_backgroundColor=color;
261  }
263  void setPageNumber(const int pageNumber)
264  {
265  m_pageNumber = pageNumber;
266  }
268  void setPageSpan(const int pageSpan)
269  {
270  m_pageSpan = pageSpan;
271  }
273  bool operator==(std::shared_ptr<MWAWPageSpan> const &pageSpan) const;
275  bool operator!=(std::shared_ptr<MWAWPageSpan> const &pageSpan) const
276  {
277  return !operator==(pageSpan);
278  }
279 
280  // interface with MWAWListener
282  void getPageProperty(librevenge::RVNGPropertyList &pList, bool isPresentation=false) const;
284  void sendHeaderFooters(MWAWListener *listener) const;
286  void sendHeaderFooters(MWAWListener *listener, MWAWHeaderFooter::Occurrence occurrence) const;
287 
288 protected:
295 private:
298  double m_margins[4];
300  librevenge::RVNGString m_name;
302  librevenge::RVNGString m_masterName;
308  std::vector<MWAWHeaderFooter> m_headerFooterList;
313 };
314 
315 #endif
316 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
std::shared_ptr< MWAWHeaderFooter > MWAWHeaderFooterPtr
Definition: MWAWPageSpan.hxx:95
Class to store font.
Definition: MWAWFont.hxx:44
a class which stores the header/footer data
Definition: MWAWPageSpan.hxx:45
double m_height
the height ( if known )
Definition: MWAWPageSpan.hxx:84
MWAWFont m_pageNumberFont
the page numbering font
Definition: MWAWPageSpan.hxx:90
bool operator==(MWAWHeaderFooter const &headerFooter) const
operator==
Definition: MWAWPageSpan.cxx:112
void insertPageNumberParagraph(MWAWListener *listener) const
insert a page number
Definition: MWAWPageSpan.cxx:175
Type
the header/footer type
Definition: MWAWPageSpan.hxx:48
@ UNDEF
Definition: MWAWPageSpan.hxx:48
@ FOOTER
Definition: MWAWPageSpan.hxx:48
@ HEADER
Definition: MWAWPageSpan.hxx:48
MWAWHeaderFooter & operator=(MWAWHeaderFooter const &)=default
libmwaw::NumberingType m_pageNumberType
the page numbering type
Definition: MWAWPageSpan.hxx:88
bool isDefined() const
returns true if the header footer is defined
Definition: MWAWPageSpan.hxx:62
MWAWHeaderFooter(MWAWHeaderFooter const &)=default
Occurrence m_occurrence
the actual occurrence
Definition: MWAWPageSpan.hxx:82
MWAWSubDocumentPtr m_subDocument
the document data
Definition: MWAWPageSpan.hxx:92
Occurrence
the header/footer occurrence in the file
Definition: MWAWPageSpan.hxx:50
@ ALL
Definition: MWAWPageSpan.hxx:50
@ ODD
Definition: MWAWPageSpan.hxx:50
@ EVEN
Definition: MWAWPageSpan.hxx:50
@ NEVER
Definition: MWAWPageSpan.hxx:50
PageNumberPosition
a fixed page number position
Definition: MWAWPageSpan.hxx:52
@ BottomRight
Definition: MWAWPageSpan.hxx:52
@ TopRight
Definition: MWAWPageSpan.hxx:52
@ TopLeft
Definition: MWAWPageSpan.hxx:52
@ None
Definition: MWAWPageSpan.hxx:52
@ BottomLeft
Definition: MWAWPageSpan.hxx:52
@ BottomCenter
Definition: MWAWPageSpan.hxx:52
@ TopCenter
Definition: MWAWPageSpan.hxx:52
~MWAWHeaderFooter()
destructor
Definition: MWAWPageSpan.cxx:108
bool operator!=(MWAWHeaderFooter const &headerFooter) const
operator!=
Definition: MWAWPageSpan.hxx:71
void send(MWAWListener *listener) const
send to header to the listener
Definition: MWAWPageSpan.cxx:135
PageNumberPosition m_pageNumberPosition
the page number position ( or none)
Definition: MWAWPageSpan.hxx:86
MWAWHeaderFooter(Type const type=UNDEF, Occurrence const occurrence=NEVER)
constructor
Definition: MWAWPageSpan.cxx:97
Type m_type
the type header/footer
Definition: MWAWPageSpan.hxx:80
MWAWHeaderFooter & operator=(MWAWHeaderFooter &&)=default
This class contains a virtual interface to all listener.
Definition: MWAWListener.hxx:50
A class which defines the page properties.
Definition: MWAWPageSpan.hxx:99
MWAWColor backgroundColor() const
returns the background color
Definition: MWAWPageSpan.hxx:162
void setPageSpan(const int pageSpan)
set the page span ( default 1)
Definition: MWAWPageSpan.hxx:268
void setMarginTop(const double marginTop)
set the page top margin
Definition: MWAWPageSpan.hxx:203
void setMarginBottom(const double marginBottom)
set the page bottom margin
Definition: MWAWPageSpan.hxx:208
bool containsHeaderFooter(MWAWHeaderFooter::Type type, MWAWHeaderFooter::Occurrence occurrence)
return true if we have a header footer in this position
Definition: MWAWPageSpan.cxx:387
librevenge::RVNGString const & getPageName() const
return the page name
Definition: MWAWPageSpan.hxx:238
bool hasMasterPageName() const
return true if the masterPage has a name
Definition: MWAWPageSpan.hxx:248
double getPageWidth() const
returns the page width (form width without margin )
Definition: MWAWPageSpan.hxx:157
void getPageProperty(librevenge::RVNGPropertyList &pList, bool isPresentation=false) const
add the page properties in pList
Definition: MWAWPageSpan.cxx:310
librevenge::RVNGString const & getMasterPageName() const
return the page master name
Definition: MWAWPageSpan.hxx:253
bool operator==(std::shared_ptr< MWAWPageSpan > const &pageSpan) const
operator==
Definition: MWAWPageSpan.cxx:339
FormOrientation
the page orientation
Definition: MWAWPageSpan.hxx:102
@ LANDSCAPE
Definition: MWAWPageSpan.hxx:102
@ PORTRAIT
Definition: MWAWPageSpan.hxx:102
bool hasPageName() const
return true if the page has a name
Definition: MWAWPageSpan.hxx:233
MWAWPageSpan(MWAWPageSpan const &)=default
MWAWPageSpan & operator=(MWAWPageSpan &&)=default
double m_margins[4]
the margins: libmwaw::Left, ...
Definition: MWAWPageSpan.hxx:298
PageNumberPosition
a fixed page number position
Definition: MWAWPageSpan.hxx:104
@ TopCenter
Definition: MWAWPageSpan.hxx:104
@ BottomRight
Definition: MWAWPageSpan.hxx:105
@ BottomLeft
Definition: MWAWPageSpan.hxx:105
@ BottomCenter
Definition: MWAWPageSpan.hxx:105
@ TopRight
Definition: MWAWPageSpan.hxx:104
@ None
Definition: MWAWPageSpan.hxx:104
@ TopLeft
Definition: MWAWPageSpan.hxx:104
int getPageNumber() const
Definition: MWAWPageSpan.hxx:166
int m_pageNumber
the page number ( or -1)
Definition: MWAWPageSpan.hxx:310
double getPageLength() const
returns the page length (form width without margin )
Definition: MWAWPageSpan.hxx:152
double getFormWidth() const
returns the page width
Definition: MWAWPageSpan.hxx:122
void setFormWidth(const double formWidth)
set the total page width
Definition: MWAWPageSpan.hxx:183
void setMarginRight(const double marginRight)
set the page right margin
Definition: MWAWPageSpan.hxx:198
double getMarginTop() const
returns the top margin
Definition: MWAWPageSpan.hxx:142
void setBackgroundColor(MWAWColor color=MWAWColor::white())
set the background color
Definition: MWAWPageSpan.hxx:258
void setMarginLeft(const double marginLeft)
set the page left margin
Definition: MWAWPageSpan.hxx:193
MWAWPageSpan()
constructor
Definition: MWAWPageSpan.cxx:209
int m_pageSpan
the number of page
Definition: MWAWPageSpan.hxx:312
double m_formWidth
the form width
Definition: MWAWPageSpan.hxx:296
double m_formLength
the form length
Definition: MWAWPageSpan.hxx:296
void setMasterPageName(librevenge::RVNGString const &name)
set the page master name
Definition: MWAWPageSpan.hxx:243
void setFormLength(const double formLength)
set the total page length
Definition: MWAWPageSpan.hxx:178
librevenge::RVNGString m_masterName
the page master name
Definition: MWAWPageSpan.hxx:302
double getMarginLeft() const
returns the left margin
Definition: MWAWPageSpan.hxx:132
void removeHeaderFooter(MWAWHeaderFooter::Type type, MWAWHeaderFooter::Occurrence occurrence)
remove a header footer
Definition: MWAWPageSpan.cxx:380
MWAWColor m_backgroundColor
the page background color: default white
Definition: MWAWPageSpan.hxx:306
void sendHeaderFooters(MWAWListener *listener) const
send the page's headers/footers if some exists
Definition: MWAWPageSpan.cxx:283
double getFormLength() const
returns the page length
Definition: MWAWPageSpan.hxx:117
librevenge::RVNGString m_name
the page name
Definition: MWAWPageSpan.hxx:300
int getHeaderFooterPosition(MWAWHeaderFooter::Type type, MWAWHeaderFooter::Occurrence occurrence)
return the header footer positions in m_headerFooterList
Definition: MWAWPageSpan.cxx:394
MWAWPageSpan & operator=(MWAWPageSpan const &)=default
void checkMargins()
check if the page margins are consistent with the page dimension, if not update them
Definition: MWAWPageSpan.cxx:271
FormOrientation m_formOrientation
the form orientation
Definition: MWAWPageSpan.hxx:304
void setMargins(double margin, int wh=libmwaw::LeftBit|libmwaw::RightBit|libmwaw::TopBit|libmwaw::BottomBit)
set all the margins
Definition: MWAWPageSpan.hxx:213
FormOrientation getFormOrientation() const
returns the page orientation
Definition: MWAWPageSpan.hxx:127
std::vector< MWAWHeaderFooter > m_headerFooterList
the list of header
Definition: MWAWPageSpan.hxx:308
bool operator!=(std::shared_ptr< MWAWPageSpan > const &pageSpan) const
operator!=
Definition: MWAWPageSpan.hxx:275
~MWAWPageSpan()
destructor
Definition: MWAWPageSpan.cxx:223
int getPageSpan() const
Definition: MWAWPageSpan.hxx:170
double getMarginBottom() const
returns the bottom margin
Definition: MWAWPageSpan.hxx:147
void setPageName(librevenge::RVNGString const &name)
set the page name
Definition: MWAWPageSpan.hxx:228
void setHeaderFooter(MWAWHeaderFooter const &headerFooter)
add a header/footer on some page
Definition: MWAWPageSpan.cxx:227
void setFormOrientation(const FormOrientation formOrientation)
set the form orientation
Definition: MWAWPageSpan.hxx:188
double getMarginRight() const
returns the right margin
Definition: MWAWPageSpan.hxx:137
void setPageNumber(const int pageNumber)
set the page number
Definition: MWAWPageSpan.hxx:263
std::shared_ptr< MWAWSubDocument > MWAWSubDocumentPtr
a smart pointer of MWAWSubDocument
Definition: libmwaw_internal.hxx:565
@ LeftBit
Definition: libmwaw_internal.hxx:178
@ BottomBit
Definition: libmwaw_internal.hxx:178
@ TopBit
Definition: libmwaw_internal.hxx:178
@ RightBit
Definition: libmwaw_internal.hxx:178
NumberingType
Definition: libmwaw_internal.hxx:180
@ Top
Definition: libmwaw_internal.hxx:176
@ Bottom
Definition: libmwaw_internal.hxx:176
@ Left
Definition: libmwaw_internal.hxx:176
@ Right
Definition: libmwaw_internal.hxx:176
the class to store a color
Definition: libmwaw_internal.hxx:192
static MWAWColor white()
return the white color
Definition: libmwaw_internal.hxx:250

Generated on Thu May 13 2021 07:36:32 for libmwaw by doxygen 1.9.1