KEYCollector.h
Go to the documentation of this file.
00001 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
00002 /*
00003  * This file is part of the libetonyek project.
00004  *
00005  * This Source Code Form is subject to the terms of the Mozilla Public
00006  * License, v. 2.0. If a copy of the MPL was not distributed with this
00007  * file, You can obtain one at http://mozilla.org/MPL/2.0/.
00008  */
00009 
00010 #ifndef KEYCOLLECTOR_H_INCLUDED
00011 #define KEYCOLLECTOR_H_INCLUDED
00012 
00013 #include <string>
00014 
00015 #include <boost/optional.hpp>
00016 
00017 #include "libetonyek_utils.h"
00018 #include "KEYPath_fwd.h"
00019 #include "KEYTable.h"
00020 #include "KEYTypes_fwd.h"
00021 
00022 namespace libetonyek
00023 {
00024 
00025 class KEYDefaults;
00026 class KEYPropertyMap;
00027 struct KEYSize;
00028 
00029 class KEYCollector
00030 {
00031 public:
00032   virtual ~KEYCollector() = 0;
00033 
00034   // collector functions
00035 
00036   virtual void collectCellStyle(const boost::optional<ID_t> &id,
00037                                 const boost::optional<KEYPropertyMap> &props,
00038                                 const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent,
00039                                 bool ref, bool anonymous) = 0;
00040   virtual void collectCharacterStyle(const boost::optional<ID_t> &id,
00041                                      const boost::optional<KEYPropertyMap> &props,
00042                                      const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent,
00043                                      bool ref, bool anonymous) = 0;
00044   virtual void collectConnectionStyle(const boost::optional<ID_t> &id,
00045                                       const boost::optional<KEYPropertyMap> &props,
00046                                       const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent,
00047                                       bool ref, bool anonymous) = 0;
00048   virtual void collectGraphicStyle(const boost::optional<ID_t> &id,
00049                                    const boost::optional<KEYPropertyMap> &props,
00050                                    const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent,
00051                                    bool ref, bool anonymous) = 0;
00052   virtual void collectLayoutStyle(const boost::optional<ID_t> &id,
00053                                   const boost::optional<KEYPropertyMap> &props,
00054                                   const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent,
00055                                   bool ref, bool anonymous) = 0;
00056   virtual void collectListStyle(const boost::optional<ID_t> &id,
00057                                 const boost::optional<KEYPropertyMap> &props,
00058                                 const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent,
00059                                 bool ref, bool anonymous) = 0;
00060   virtual void collectParagraphStyle(const boost::optional<ID_t> &id,
00061                                      const boost::optional<KEYPropertyMap> &props,
00062                                      const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent,
00063                                      bool ref, bool anonymous) = 0;
00064   virtual void collectPlaceholderStyle(const boost::optional<ID_t> &id,
00065                                        const boost::optional<KEYPropertyMap> &props,
00066                                        const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent,
00067                                        bool ref, bool anonymous) = 0;
00068   virtual void collectSlideStyle(const boost::optional<ID_t> &id,
00069                                  const boost::optional<KEYPropertyMap> &props,
00070                                  const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent,
00071                                  bool ref, bool anonymous) = 0;
00072   virtual void collectTabularStyle(const boost::optional<ID_t> &id,
00073                                    const boost::optional<KEYPropertyMap> &props,
00074                                    const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent,
00075                                    bool ref, bool anonymous) = 0;
00076   virtual void collectVectorStyle(const boost::optional<ID_t> &id,
00077                                   const boost::optional<KEYPropertyMap> &props,
00078                                   const boost::optional<std::string> &ident, const boost::optional<std::string> &parentIdent,
00079                                   bool ref, bool anonymous) = 0;
00080 
00081   virtual void collectGeometry(boost::optional<ID_t> &id,
00082                                boost::optional<KEYSize> &naturalSize, boost::optional<KEYPosition> &position,
00083                                boost::optional<double> &angle,
00084                                boost::optional<double> &shearXAngle, boost::optional<double> &shearYAngle,
00085                                boost::optional<bool> &horizontalFlip, boost::optional<bool> &verticalFlip,
00086                                boost::optional<bool> &aspectRatioLocked, boost::optional<bool> &sizesLocked) = 0;
00087 
00088   virtual void collectBezier(const boost::optional<ID_t> &id, const KEYPathPtr_t &path, bool ref) = 0;
00089   virtual void collectGroup(const boost::optional<ID_t> &id, const KEYGroupPtr_t &group) = 0;
00090   virtual void collectImage(const boost::optional<ID_t> &id, const KEYImagePtr_t &image) = 0;
00091   virtual void collectLine(const boost::optional<ID_t> &id, const KEYLinePtr_t &line) = 0;
00092   virtual void collectShape(const boost::optional<ID_t> &id) = 0;
00093 
00094   virtual void collectBezierPath(const boost::optional<ID_t> &id) = 0;
00095   virtual void collectPolygonPath(const boost::optional<ID_t> &id, const KEYSize &size, unsigned edges) = 0;
00096   virtual void collectRoundedRectanglePath(const boost::optional<ID_t> &id, const KEYSize &size, double radius) = 0;
00097   virtual void collectArrowPath(const boost::optional<ID_t> &id, const KEYSize &size, double headWidth, double stemRelYPos, bool doubleSided) = 0;
00098   virtual void collectStarPath(const boost::optional<ID_t> &id, const KEYSize &size, unsigned points, double innerRadius) = 0;
00099   virtual void collectConnectionPath(const boost::optional<ID_t> &id, const KEYSize &size, double middleX, double middleY) = 0;
00100   virtual void collectCalloutPath(const boost::optional<ID_t> &id, const KEYSize &size, double radius, double tailSize, double tailX, double tailY, bool quoteBubble) = 0;
00101 
00102   virtual void collectData(const boost::optional<ID_t> &id, const WPXInputStreamPtr_t &stream, const boost::optional<std::string> &displayName, const boost::optional<unsigned> &type, bool ref) = 0;
00103   virtual void collectUnfiltered(const boost::optional<ID_t> &id, const boost::optional<KEYSize> &size, bool ref) = 0;
00104   virtual void collectFiltered(const boost::optional<ID_t> &id, const boost::optional<KEYSize> &size) = 0;
00105   virtual void collectLeveled(const boost::optional<ID_t> &id, const boost::optional<KEYSize> &size) = 0;
00106   virtual void collectFilteredImage(const boost::optional<ID_t> &id, bool ref) = 0;
00107   virtual void collectMovieMedia(const boost::optional<ID_t> &id) = 0;
00108   virtual void collectMedia(const boost::optional<ID_t> &id) = 0;
00109 
00110   virtual void collectPresentation(const boost::optional<KEYSize> &size) = 0;
00111 
00112   virtual void collectLayer(const boost::optional<ID_t> &id, bool ref) = 0;
00113   virtual void collectPage(const boost::optional<ID_t> &id) = 0;
00114   virtual void collectStylesheet(const boost::optional<ID_t> &id, const boost::optional<ID_t> &parent) = 0;
00115 
00116   virtual void collectText(const boost::optional<ID_t> &style, const std::string &text) = 0;
00117   virtual void collectTab() = 0;
00118   virtual void collectLineBreak() = 0;
00119 
00120   virtual void collectTextPlaceholder(const boost::optional<ID_t> &id, bool title, bool ref) = 0;
00121 
00122   virtual void collectTableSizes(const KEYTable::RowSizes_t &rowSizes, const KEYTable::ColumnSizes_t &columnSizes) = 0;
00123   virtual void collectTableCell(unsigned row, unsigned column, const boost::optional<std::string> &content, unsigned rowSpan, unsigned columnSpan) = 0;
00124   virtual void collectCoveredTableCell(unsigned row, unsigned column) = 0;
00125   virtual void collectTableRow() = 0;
00126   virtual void collectTable() = 0;
00127 
00128   virtual void collectNote() = 0;
00129 
00130   virtual void collectStickyNote() = 0;
00131 
00132   virtual void startPage() = 0;
00133   virtual void endPage() = 0;
00134   virtual void startLayer() = 0;
00135   virtual void endLayer() = 0;
00136   virtual void startGroup() = 0;
00137   virtual void endGroup() = 0;
00138 
00139   virtual void startParagraph(const boost::optional<ID_t> &style) = 0;
00140   virtual void endParagraph() = 0;
00141 
00150   virtual void startText(bool object) = 0;
00151 
00154   virtual void endText() = 0;
00155 
00156   // helper functions
00157 
00158   virtual void startSlides() = 0;
00159   virtual void endSlides() = 0;
00160   virtual void startThemes() = 0;
00161   virtual void endThemes() = 0;
00162 
00163   virtual void startLevel() = 0;
00164   virtual void endLevel() = 0;
00165 };
00166 
00167 } // namespace libetonyek
00168 
00169 #endif // KEYCOLLECTOR_H_INCLUDED
00170 
00171 /* vim:set shiftwidth=2 softtabstop=2 expandtab: */