/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: t; c-basic-offset: 4 -*- */
/* libwpd
* Version: MPL 2.0 / LGPLv2.1+
*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Major Contributor(s):
* Copyright (C) 2002 William Lachance (wrlach@gmail.com)
* Copyright (C) 2002 Marc Maurer (uwog@uwog.net)
* Copyright (C) 2006 Fridrich Strba (fridrich.strba@bluewin.ch)
*
* For minor contributions see the git repository.
*
* Alternatively, the contents of this file may be used under the terms
* of the GNU Lesser General Public License Version 2.1 or later
* (LGPLv2.1+), in which case the provisions of the LGPLv2.1+ are
* applicable instead of those above.
*
* For further information visit http://libwpd.sourceforge.net
*/
/* "This product is not manufactured, approved, or supported by
* Corel Corporation or Corel Corporation Limited."
*/
#ifndef WPXPAGE_H
#define WPXPAGE_H
#include "WPXFileStructure.h"
#include <vector>
#include "WPXTable.h"
#include "libwpd_internal.h"
#include "WPXSubDocument.h"
// intermediate page representation class: for internal use only (by the high-level content/styles listeners). should not be exported.
class WPXHeaderFooter
{
public:
WPXHeaderFooter(const WPXHeaderFooterType headerFooterType, const WPXHeaderFooterOccurrence occurrence,
const unsigned char internalType, const WPXSubDocument *subDocument, WPXTableList tableList);
WPXHeaderFooter(const WPXHeaderFooterType headerFooterType, const WPXHeaderFooterOccurrence occurrence,
const unsigned char internalType, const WPXSubDocument *subDocument);
WPXHeaderFooter(const WPXHeaderFooter &headerFooter);
~WPXHeaderFooter();
WPXHeaderFooter &operator=(const WPXHeaderFooter &headerFooter);
WPXHeaderFooterType getType() const
{
return m_type;
}
WPXHeaderFooterOccurrence getOccurrence() const
{
return m_occurrence;
}
unsigned char getInternalType() const
{
return m_internalType;
}
const WPXSubDocument *getSubDocument() const
{
return m_subDocument;
}
WPXTableList getTableList() const
{
return m_tableList;
}
private:
WPXHeaderFooterType m_type;
WPXHeaderFooterOccurrence m_occurrence;
unsigned char m_internalType; // for suppression
const WPXSubDocument *m_subDocument; // for the actual text
WPXTableList m_tableList;
};
class WPXPageSpan
{
public:
WPXPageSpan();
WPXPageSpan(const WPXPageSpan &page, double paragraphMarginLeft, double paragraphMarginRight);
virtual ~WPXPageSpan();
bool getPageNumberSuppression() const
{
return m_isPageNumberSuppressed;
}
bool getHeaderFooterSuppression(const unsigned char headerFooterType) const
{
if (headerFooterType <= WPX_FOOTER_B) return m_isHeaderFooterSuppressed[headerFooterType];
return false;
}
double getFormLength() const
{
return m_formLength;
}
double getFormWidth() const
{
return m_formWidth;
}
WPXFormOrientation getFormOrientation() const
{
return m_formOrientation;
}
double getMarginLeft() const
{
return m_marginLeft;
}
double getMarginRight() const
{
return m_marginRight;
}
double getMarginTop() const
{
return m_marginTop;
}
double getMarginBottom() const
{
return m_marginBottom;
}
WPXPageNumberPosition getPageNumberPosition() const
{
return m_pageNumberPosition;
}
bool getPageNumberOverriden() const
{
return m_isPageNumberOverridden;
}
int getPageNumberOverride() const
{
return m_pageNumberOverride;
}
WPXNumberingType getPageNumberingType() const
{
return m_pageNumberingType;
}
double getPageNumberingFontSize() const
{
return m_pageNumberingFontSize;
}
librevenge::RVNGString getPageNumberingFontName() const
{
return m_pageNumberingFontName;
}
int getPageSpan() const
{
return m_pageSpan;
}
const std::vector<WPXHeaderFooter> &getHeaderFooterList() const
{
return m_headerFooterList;
}
void setHeaderFooter(const WPXHeaderFooterType type, const unsigned char headerFooterType, const WPXHeaderFooterOccurrence occurrence,
const WPXSubDocument *subDocument, WPXTableList tableList);
void setPageNumberSuppression(const bool suppress)
{
m_isPageNumberSuppressed = suppress;
}
void setHeadFooterSuppression(const unsigned char headerFooterType, const bool suppress)
{
m_isHeaderFooterSuppressed[headerFooterType] = suppress;
}
void setFormLength(const double formLength)
{
m_formLength = formLength;
}
void setFormWidth(const double formWidth)
{
m_formWidth = formWidth;
}
void setFormOrientation(const WPXFormOrientation formOrientation)
{
m_formOrientation = formOrientation;
}
void setMarginLeft(const double marginLeft)
{
m_marginLeft = marginLeft;
}
void setMarginRight(const double marginRight)
{
m_marginRight = marginRight;
}
void setMarginTop(const double marginTop)
{
m_marginTop = marginTop;
}
void setMarginBottom(const double marginBottom)
{
m_marginBottom = marginBottom;
}
void setPageNumberPosition(const WPXPageNumberPosition pageNumberPosition)
{
m_pageNumberPosition = pageNumberPosition;
}
void setPageNumber(const int pageNumberOverride)
{
m_pageNumberOverride = pageNumberOverride;
m_isPageNumberOverridden = true;
}
void setPageNumberingType(const WPXNumberingType pageNumberingType)
{
m_pageNumberingType = pageNumberingType;
}
void setPageNumberingFontSize(const double pageNumberingFontSize)
{
m_pageNumberingFontSize = pageNumberingFontSize;
}
void setPageNumberingFontName(const librevenge::RVNGString &pageNumberingFontName)
{
m_pageNumberingFontName = pageNumberingFontName;
}
void setPageSpan(const int pageSpan)
{
m_pageSpan = pageSpan;
}
protected:
void _removeHeaderFooter(WPXHeaderFooterType type, WPXHeaderFooterOccurrence occurrence);
bool _containsHeaderFooter(WPXHeaderFooterType type, WPXHeaderFooterOccurrence occurrence);
private:
bool m_isHeaderFooterSuppressed[WPX_NUM_HEADER_FOOTER_TYPES];
bool m_isPageNumberSuppressed;
double m_formLength, m_formWidth;
WPXFormOrientation m_formOrientation;
double m_marginLeft, m_marginRight;
double m_marginTop, m_marginBottom;
WPXPageNumberPosition m_pageNumberPosition;
bool m_isPageNumberOverridden;
int m_pageNumberOverride;
WPXNumberingType m_pageNumberingType;
librevenge::RVNGString m_pageNumberingFontName;
double m_pageNumberingFontSize;
std::vector<WPXHeaderFooter> m_headerFooterList;
int m_pageSpan;
};
bool operator==(const WPXPageSpan &, const WPXPageSpan &);
#endif /* WPXPAGE_H */
/* vim:set shiftwidth=4 softtabstop=4 noexpandtab: */