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);
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:
81  double m_height;
90 };
91 
92 typedef shared_ptr<MWAWHeaderFooter> MWAWHeaderFooterPtr;
93 
96 {
97 public:
103  };
104 public:
106  MWAWPageSpan();
108  virtual ~MWAWPageSpan();
109 
111  double getFormLength() const
112  {
113  return m_formLength;
114  }
116  double getFormWidth() const
117  {
118  return m_formWidth;
119  }
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  {
149  }
151  double getPageWidth() const
152  {
154  }
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  }
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();
223  {
224  m_backgroundColor=color;
225  }
227  void setPageNumber(const int pageNumber)
228  {
229  m_pageNumber = pageNumber;
230  }
232  void setPageSpan(const int pageSpan)
233  {
234  m_pageSpan = pageSpan;
235  }
237  bool operator==(shared_ptr<MWAWPageSpan> const &pageSpan) const;
239  bool operator!=(shared_ptr<MWAWPageSpan> const &pageSpan) const
240  {
241  return !operator==(pageSpan);
242  }
243 
244  // interface with MWAWListener
246  void getPageProperty(librevenge::RVNGPropertyList &pList) const;
248  void sendHeaderFooters(MWAWListener *listener) const;
250  void sendHeaderFooters(MWAWListener *listener, MWAWHeaderFooter::Occurrence occurrence) const;
251 
252 protected:
259 private:
264  double m_margins[4];
270  std::vector<MWAWHeaderFooter> m_headerFooterList;
273 };
274 
275 #endif
276 // vim: set filetype=cpp tabstop=2 shiftwidth=2 cindent autoindent smartindent noexpandtab:
bool operator!=(MWAWHeaderFooter const &headerFooter) const
operator!=
Definition: MWAWPageSpan.hxx:68
PageNumberPosition
a fixed page number position
Definition: MWAWPageSpan.hxx:52
double m_formWidth
the form width
Definition: MWAWPageSpan.hxx:260
NumberingType
Definition: libmwaw_internal.hxx:159
int getPageSpan() const
Definition: MWAWPageSpan.hxx:164
double m_height
the height ( if known )
Definition: MWAWPageSpan.hxx:81
void setMarginBottom(const double marginBottom)
set the page bottom margin
Definition: MWAWPageSpan.hxx:202
Definition: MWAWPageSpan.hxx:48
Definition: MWAWPageSpan.hxx:102
Definition: MWAWPageSpan.hxx:50
Definition: MWAWPageSpan.hxx:48
Occurrence
the header/footer occurrence in the file
Definition: MWAWPageSpan.hxx:50
Definition: libmwaw_internal.hxx:157
void setPageSpan(const int pageSpan)
set the page span ( default 1)
Definition: MWAWPageSpan.hxx:232
A class which defines the page properties.
Definition: MWAWPageSpan.hxx:95
int m_pageNumber
the page number ( or -1)
Definition: MWAWPageSpan.hxx:268
void removeHeaderFooter(MWAWHeaderFooter::Type type, MWAWHeaderFooter::Occurrence occurrence)
remove a header footer
Definition: MWAWPageSpan.cxx:359
void sendHeaderFooters(MWAWListener *listener) const
send the page's headers/footers if some exists
Definition: MWAWPageSpan.cxx:271
void setMarginTop(const double marginTop)
set the page top margin
Definition: MWAWPageSpan.hxx:197
int getPageNumber() const
Definition: MWAWPageSpan.hxx:160
static MWAWColor white()
return the white color
Definition: libmwaw_internal.hxx:188
int getHeaderFooterPosition(MWAWHeaderFooter::Type type, MWAWHeaderFooter::Occurrence occurrence)
return the header footer positions in m_headerFooterList
Definition: MWAWPageSpan.cxx:373
bool containsHeaderFooter(MWAWHeaderFooter::Type type, MWAWHeaderFooter::Occurrence occurrence)
return true if we have a header footer in this position
Definition: MWAWPageSpan.cxx:366
Definition: MWAWPageSpan.hxx:102
Type
the header/footer type
Definition: MWAWPageSpan.hxx:48
double getMarginLeft() const
returns the left margin
Definition: MWAWPageSpan.hxx:126
void insertPageNumberParagraph(MWAWListener *listener) const
insert a page number
Definition: MWAWPageSpan.cxx:172
PageNumberPosition
a fixed page number position
Definition: MWAWPageSpan.hxx:101
Definition: libmwaw_internal.hxx:155
void checkMargins()
check if the page margins are consistent with the page dimension, if not update them ...
Definition: MWAWPageSpan.cxx:259
FormOrientation
the page orientation
Definition: MWAWPageSpan.hxx:99
Definition: libmwaw_internal.hxx:155
void setMarginRight(const double marginRight)
set the page right margin
Definition: MWAWPageSpan.hxx:192
Definition: libmwaw_internal.hxx:155
Definition: MWAWPageSpan.hxx:50
MWAWFont m_pageNumberFont
the page numbering font
Definition: MWAWPageSpan.hxx:87
bool operator==(MWAWHeaderFooter const &headerFooter) const
operator==
Definition: MWAWPageSpan.cxx:111
the class to store a color
Definition: libmwaw_internal.hxx:166
shared_ptr< MWAWSubDocument > MWAWSubDocumentPtr
a smart pointer of MWAWSubDocument
Definition: libmwaw_internal.hxx:392
void setMargins(double margin, int wh=libmwaw::LeftBit|libmwaw::RightBit|libmwaw::TopBit|libmwaw::BottomBit)
set all the margins
Definition: MWAWPageSpan.hxx:207
MWAWColor backgroundColor() const
returns the background color
Definition: MWAWPageSpan.hxx:156
Definition: libmwaw_internal.hxx:155
double getPageLength() const
returns the page length (form width without margin )
Definition: MWAWPageSpan.hxx:146
double getMarginRight() const
returns the right margin
Definition: MWAWPageSpan.hxx:131
Definition: MWAWPageSpan.hxx:52
Class to store font.
Definition: MWAWFont.hxx:44
Occurrence m_occurrence
the actual occurrence
Definition: MWAWPageSpan.hxx:79
Definition: MWAWPageSpan.hxx:52
FormOrientation getFormOrientation() const
returns the page orientation
Definition: MWAWPageSpan.hxx:121
double getFormWidth() const
returns the page width
Definition: MWAWPageSpan.hxx:116
Definition: MWAWPageSpan.hxx:101
void setFormWidth(const double formWidth)
set the total page width
Definition: MWAWPageSpan.hxx:177
MWAWHeaderFooter(Type const type=UNDEF, Occurrence const occurrence=NEVER)
constructor
Definition: MWAWPageSpan.cxx:100
bool operator==(shared_ptr< MWAWPageSpan > const &pageSpan) const
operator==
Definition: MWAWPageSpan.cxx:319
MWAWPageSpan()
constructor
Definition: MWAWPageSpan.cxx:204
Definition: MWAWPageSpan.hxx:99
Definition: MWAWPageSpan.hxx:50
void send(MWAWListener *listener) const
send to header to the listener
Definition: MWAWPageSpan.cxx:134
Definition: MWAWPageSpan.hxx:52
Definition: MWAWPageSpan.hxx:101
Definition: libmwaw_internal.hxx:157
shared_ptr< MWAWHeaderFooter > MWAWHeaderFooterPtr
Definition: MWAWPageSpan.hxx:92
double getFormLength() const
returns the page length
Definition: MWAWPageSpan.hxx:111
Definition: MWAWPageSpan.hxx:99
bool isDefined() const
returns true if the header footer is defined
Definition: MWAWPageSpan.hxx:59
bool operator!=(shared_ptr< MWAWPageSpan > const &pageSpan) const
operator!=
Definition: MWAWPageSpan.hxx:239
void setFormOrientation(const FormOrientation formOrientation)
set the form orientation
Definition: MWAWPageSpan.hxx:182
double getMarginTop() const
returns the top margin
Definition: MWAWPageSpan.hxx:136
Definition: libmwaw_internal.hxx:157
libmwaw::NumberingType m_pageNumberType
the page numbering type
Definition: MWAWPageSpan.hxx:85
virtual ~MWAWPageSpan()
destructor
Definition: MWAWPageSpan.cxx:214
void setHeaderFooter(MWAWHeaderFooter const &headerFooter)
add a header/footer on some page
Definition: MWAWPageSpan.cxx:218
Definition: MWAWPageSpan.hxx:101
void setMarginLeft(const double marginLeft)
set the page left margin
Definition: MWAWPageSpan.hxx:187
double m_formLength
the form length
Definition: MWAWPageSpan.hxx:260
std::vector< MWAWHeaderFooter > m_headerFooterList
the list of header
Definition: MWAWPageSpan.hxx:270
double m_margins[4]
the margins: libmwaw::Left, ...
Definition: MWAWPageSpan.hxx:264
MWAWColor m_backgroundColor
the page background color: default white
Definition: MWAWPageSpan.hxx:266
Definition: MWAWPageSpan.hxx:48
a class which stores the header/footer data
Definition: MWAWPageSpan.hxx:44
Definition: MWAWPageSpan.hxx:101
Definition: MWAWPageSpan.hxx:52
double getPageWidth() const
returns the page width (form width without margin )
Definition: MWAWPageSpan.hxx:151
Definition: MWAWPageSpan.hxx:52
This class contains a virtual interface to all listener.
Definition: MWAWListener.hxx:49
void setPageNumber(const int pageNumber)
set the page number
Definition: MWAWPageSpan.hxx:227
Definition: MWAWPageSpan.hxx:50
FormOrientation m_formOrientation
the form orientation
Definition: MWAWPageSpan.hxx:262
int m_pageSpan
the number of page
Definition: MWAWPageSpan.hxx:272
PageNumberPosition m_pageNumberPosition
the page number position ( or none)
Definition: MWAWPageSpan.hxx:83
Definition: MWAWPageSpan.hxx:52
void getPageProperty(librevenge::RVNGPropertyList &pList) const
add the page properties in pList
Definition: MWAWPageSpan.cxx:300
MWAWSubDocumentPtr m_subDocument
the document data
Definition: MWAWPageSpan.hxx:89
void setFormLength(const double formLength)
set the total page length
Definition: MWAWPageSpan.hxx:172
Type m_type
the type header/footer
Definition: MWAWPageSpan.hxx:77
Definition: libmwaw_internal.hxx:157
~MWAWHeaderFooter()
destructor
Definition: MWAWPageSpan.cxx:107
double getMarginBottom() const
returns the bottom margin
Definition: MWAWPageSpan.hxx:141
Definition: MWAWPageSpan.hxx:52
Definition: MWAWPageSpan.hxx:102
void setBackgroundColor(MWAWColor color=MWAWColor::white())
set the background color
Definition: MWAWPageSpan.hxx:222

Generated on Wed Jun 7 2017 22:16:22 for libmwaw by doxygen 1.8.8