Blame src/lib/FHCollector.h

Packit Service db749c
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
Packit Service db749c
/*
Packit Service db749c
 * This file is part of the libfreehand project.
Packit Service db749c
 *
Packit Service db749c
 * This Source Code Form is subject to the terms of the Mozilla Public
Packit Service db749c
 * License, v. 2.0. If a copy of the MPL was not distributed with this
Packit Service db749c
 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
Packit Service db749c
 */
Packit Service db749c
Packit Service db749c
#ifndef __FHCOLLECTOR_H__
Packit Service db749c
#define __FHCOLLECTOR_H__
Packit Service db749c
Packit Service db749c
#include <deque>
Packit Service db749c
#include <map>
Packit Service db749c
#include <stack>
Packit Service db749c
#include <librevenge/librevenge.h>
Packit Service db749c
#include "FHCollector.h"
Packit Service db749c
#include "FHTransform.h"
Packit Service db749c
#include "FHTypes.h"
Packit Service db749c
#include "FHPath.h"
Packit Service db749c
Packit Service db749c
namespace libfreehand
Packit Service db749c
{
Packit Service db749c
Packit Service db749c
class FHCollector
Packit Service db749c
{
Packit Service db749c
public:
Packit Service db749c
  FHCollector();
Packit Service db749c
  virtual ~FHCollector();
Packit Service db749c
Packit Service db749c
  // collector functions
Packit Service db749c
  void collectString(unsigned recordId, const librevenge::RVNGString &str);
Packit Service db749c
  void collectName(unsigned recordId, const librevenge::RVNGString &str);
Packit Service db749c
  void collectPath(unsigned recordId, const FHPath &path);
Packit Service db749c
  void collectXform(unsigned recordId, double m11, double m21,
Packit Service db749c
                    double m12, double m22, double m13, double m23);
Packit Service db749c
  void collectFHTail(unsigned recordId, const FHTail &fhTail);
Packit Service db749c
  void collectBlock(unsigned recordId, const FHBlock &block);
Packit Service db749c
  void collectList(unsigned recordId, const FHList &lst);
Packit Service db749c
  void collectLayer(unsigned recordId, const FHLayer &layer);
Packit Service db749c
  void collectGroup(unsigned recordId, const FHGroup &group);
Packit Service db749c
  void collectClipGroup(unsigned recordId, const FHGroup &group);
Packit Service db749c
  void collectPathText(unsigned recordId, const FHPathText &group);
Packit Service db749c
  void collectCompositePath(unsigned recordId, const FHCompositePath &compositePath);
Packit Service db749c
  void collectTString(unsigned recordId, const std::vector<unsigned> &elements);
Packit Service db749c
  void collectAGDFont(unsigned recordId, const FHAGDFont &font);
Packit Service db749c
  void collectTEffect(unsigned recordId, const FHTEffect &tEffect);
Packit Service db749c
  void collectParagraph(unsigned recordId, const FHParagraph &paragraph);
Packit Service db749c
  void collectTabTable(unsigned recordId, const std::vector<FHTab> &tabs);
Packit Service db749c
  void collectTextBlok(unsigned recordId, const std::vector<unsigned short> &characters);
Packit Service db749c
  void collectTextObject(unsigned recordId, const FHTextObject &textObject);
Packit Service db749c
  void collectCharProps(unsigned recordId, const FHCharProperties &charProps);
Packit Service db749c
  void collectParagraphProps(unsigned recordId, const FHParagraphProperties &paragraphProps);
Packit Service db749c
  void collectPropList(unsigned recordId, const FHPropList &propertyList);
Packit Service db749c
  void collectDisplayText(unsigned recordId, const FHDisplayText &displayText);
Packit Service db749c
  void collectGraphicStyle(unsigned recordId, const FHGraphicStyle &graphicStyle);
Packit Service db749c
  void collectAttributeHolder(unsigned recordId, const FHAttributeHolder &attributeHolder);
Packit Service db749c
  void collectFilterAttributeHolder(unsigned recordId, const FHFilterAttributeHolder &filterAttributeHolder);
Packit Service db749c
  void collectData(unsigned recordId, const librevenge::RVNGBinaryData &data);
Packit Service db749c
  void collectDataList(unsigned recordId, const FHDataList &list);
Packit Service db749c
  void collectImage(unsigned recordId, const FHImageImport &image);
Packit Service db749c
  void collectMultiColorList(unsigned recordId, const std::vector<FHColorStop> &colorStops);
Packit Service db749c
  void collectNewBlend(unsigned recordId, const FHNewBlend &newBlend);
Packit Service db749c
  void collectOpacityFilter(unsigned recordId, double opacity);
Packit Service db749c
  void collectFWShadowFilter(unsigned recordId, const FWShadowFilter &filter);
Packit Service db749c
  void collectFWGlowFilter(unsigned recordId, const FWGlowFilter &filter);
Packit Service db749c
Packit Service db749c
  void collectPageInfo(const FHPageInfo &pageInfo);
Packit Service db749c
Packit Service db749c
  void collectColor(unsigned recordId, const FHRGBColor &color;;
Packit Service db749c
  void collectTintColor(unsigned recordId, const FHTintColor &color;;
Packit Service db749c
  void collectBasicFill(unsigned recordId, const FHBasicFill &fill;;
Packit Service db749c
  void collectLensFill(unsigned recordId, const FHLensFill &fill;;
Packit Service db749c
  void collectLinearFill(unsigned recordId, const FHLinearFill &fill;;
Packit Service db749c
  void collectRadialFill(unsigned recordId, const FHRadialFill &fill;;
Packit Service db749c
  void collectBasicLine(unsigned recordId, const FHBasicLine &line);
Packit Service db749c
  void collectPatternLine(unsigned recordId, const FHPatternLine &line);
Packit Service db749c
  void collectCustomProc(unsigned recordId, const FHCustomProc &lineFill);
Packit Service db749c
  void collectTileFill(unsigned recordId, const FHTileFill &fill;;
Packit Service db749c
  void collectPatternFill(unsigned recordId, const FHPatternFill &fill;;
Packit Service db749c
  void collectLinePattern(unsigned recordId, const FHLinePattern &line);
Packit Service db749c
  void collectArrowPath(unsigned recordId, const FHPath &path);
Packit Service db749c
Packit Service db749c
  void collectSymbolClass(unsigned recordId, const FHSymbolClass &symbolClass);
Packit Service db749c
  void collectSymbolInstance(unsigned recordId, const FHSymbolInstance &symbolInstance);
Packit Service db749c
Packit Service db749c
  void outputDrawing(librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
Packit Service db749c
private:
Packit Service db749c
  FHCollector(const FHCollector &);
Packit Service db749c
  FHCollector &operator=(const FHCollector &);
Packit Service db749c
Packit Service db749c
  void _normalizePath(FHPath &path);
Packit Service db749c
  void _normalizePoint(double &x, double &y);
Packit Service db749c
Packit Service db749c
  void _outputPath(const FHPath *path, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputLayer(unsigned layerId, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputGroup(const FHGroup *group, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputClipGroup(const FHGroup *group, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputCompositePath(const FHCompositePath *compositePath, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputPathText(const FHPathText *pathText, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputTextObject(const FHTextObject *textObject, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputParagraph(const FHParagraph *paragraph, librevenge::RVNGDrawingInterface *painter, unsigned &actPos, unsigned minPos, unsigned maxPos);
Packit Service db749c
  void _outputTextRun(const std::vector<unsigned short> *characters, unsigned offset, unsigned length,
Packit Service db749c
                      unsigned charStyleId, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputDisplayText(const FHDisplayText *displayText, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputImageImport(const FHImageImport *image, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputNewBlend(const FHNewBlend *newBlend, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputSymbolInstance(const FHSymbolInstance *symbolInstance, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
  void _outputSomething(unsigned somethingId, librevenge::RVNGDrawingInterface *painter);
Packit Service db749c
Packit Service db749c
  void _getBBofPath(const FHPath *path,FHBoundingBox &bBox);
Packit Service db749c
  void _getBBofLayer(unsigned layerId,FHBoundingBox &bBox);
Packit Service db749c
  void _getBBofGroup(const FHGroup *group,FHBoundingBox &bBox);
Packit Service db749c
  void _getBBofClipGroup(const FHGroup *group,FHBoundingBox &bBox);
Packit Service db749c
  void _getBBofPathText(const FHPathText *pathText,FHBoundingBox &bBox);
Packit Service db749c
  void _getBBofCompositePath(const FHCompositePath *compositePath,FHBoundingBox &bBox);
Packit Service db749c
  void _getBBofTextObject(const FHTextObject *textObject,FHBoundingBox &bBox);
Packit Service db749c
  void _getBBofDisplayText(const FHDisplayText *displayText,FHBoundingBox &bBox);
Packit Service db749c
  void _getBBofImageImport(const FHImageImport *image,FHBoundingBox &bBox);
Packit Service db749c
  void _getBBofNewBlend(const FHNewBlend *newBlend,FHBoundingBox &bBox);
Packit Service db749c
  void _getBBofSymbolInstance(const FHSymbolInstance *symbolInstance,FHBoundingBox &bBox);
Packit Service db749c
  void _getBBofSomething(unsigned somethingId,FHBoundingBox &bBox);
Packit Service db749c
Packit Service db749c
  const std::vector<unsigned> *_findListElements(unsigned id);
Packit Service db749c
  void _appendParagraphProperties(librevenge::RVNGPropertyList &propList, unsigned paraPropsId);
Packit Service db749c
  void _appendParagraphProperties(librevenge::RVNGPropertyList &propList, const FH3ParaProperties &paraProps);
Packit Service db749c
  void _appendCharacterProperties(librevenge::RVNGPropertyList &propList, unsigned charPropsId);
Packit Service db749c
  void _appendCharacterProperties(librevenge::RVNGPropertyList &propList, const FH3CharProperties &charProps);
Packit Service db749c
  void _appendFontProperties(librevenge::RVNGPropertyList &propList, unsigned agdFontId);
Packit Service db749c
  void _appendTabProperties(librevenge::RVNGPropertyList &propList, const FHTab &tab;;
Packit Service db749c
  void _appendFillProperties(librevenge::RVNGPropertyList &propList, unsigned graphicStyleId);
Packit Service db749c
  void _appendStrokeProperties(librevenge::RVNGPropertyList &propList, unsigned graphicStyleId);
Packit Service db749c
  void _appendBasicFill(librevenge::RVNGPropertyList &propList, const FHBasicFill *basicFill);
Packit Service db749c
  void _appendBasicLine(librevenge::RVNGPropertyList &propList, const FHBasicLine *basicLine);
Packit Service db749c
  void _appendPatternLine(librevenge::RVNGPropertyList &propList, const FHPatternLine *basicLine);
Packit Service db749c
  void _appendCustomProcFill(librevenge::RVNGPropertyList &propList, const FHCustomProc *customProc);
Packit Service db749c
  void _appendCustomProcLine(librevenge::RVNGPropertyList &propList, const FHCustomProc *customProc);
Packit Service db749c
  void _appendLinearFill(librevenge::RVNGPropertyList &propList, const FHLinearFill *linearFill);
Packit Service db749c
  void _appendLensFill(librevenge::RVNGPropertyList &propList, const FHLensFill *lensFill);
Packit Service db749c
  void _appendRadialFill(librevenge::RVNGPropertyList &propList, const FHRadialFill *radialFill);
Packit Service db749c
  void _appendTileFill(librevenge::RVNGPropertyList &propList, const FHTileFill *tileFill);
Packit Service db749c
  void _appendPatternFill(librevenge::RVNGPropertyList &propList, const FHPatternFill *patternFill);
Packit Service db749c
  void _appendLinePattern(librevenge::RVNGPropertyList &propList, const FHLinePattern *linePattern);
Packit Service db749c
  void _appendArrowPath(librevenge::RVNGPropertyList &propList, const FHPath *arrow, bool startArrow);
Packit Service db749c
  void _appendOpacity(librevenge::RVNGPropertyList &propList, const double *opacity);
Packit Service db749c
  void _appendShadow(librevenge::RVNGPropertyList &propList, const FWShadowFilter *filter);
Packit Service db749c
  void _appendGlow(librevenge::RVNGPropertyList &propList, const FWGlowFilter *filter);
Packit Service db749c
  void _applyFilter(librevenge::RVNGPropertyList &propList, unsigned filterId);
Packit Service db749c
  const std::vector<unsigned> *_findTStringElements(unsigned id);
Packit Service db749c
Packit Service db749c
  const FHPath *_findPath(unsigned id);
Packit Service db749c
  const FHGroup *_findGroup(unsigned id);
Packit Service db749c
  const FHGroup *_findClipGroup(unsigned id);
Packit Service db749c
  const FHCompositePath *_findCompositePath(unsigned id);
Packit Service db749c
  const FHPathText *_findPathText(unsigned id);
Packit Service db749c
  const FHTextObject *_findTextObject(unsigned id);
Packit Service db749c
  const FHTransform *_findTransform(unsigned id);
Packit Service db749c
  const FHTEffect *_findTEffect(unsigned id);
Packit Service db749c
  const FHParagraph *_findParagraph(unsigned id);
Packit Service db749c
  const std::vector<FHTab> *_findTabTable(unsigned id);
Packit Service db749c
  const FHPropList *_findPropList(unsigned id);
Packit Service db749c
  const FHGraphicStyle *_findGraphicStyle(unsigned id);
Packit Service db749c
  const std::vector<unsigned short> *_findTextBlok(unsigned id);
Packit Service db749c
  const FHBasicFill *_findBasicFill(unsigned id);
Packit Service db749c
  const FHLinearFill *_findLinearFill(unsigned id);
Packit Service db749c
  const FHLensFill *_findLensFill(unsigned id);
Packit Service db749c
  const FHRadialFill *_findRadialFill(unsigned id);
Packit Service db749c
  const FHTileFill *_findTileFill(unsigned id);
Packit Service db749c
  const FHPatternFill *_findPatternFill(unsigned id);
Packit Service db749c
  const FHLinePattern *_findLinePattern(unsigned id);
Packit Service db749c
  const FHPath *_findArrowPath(unsigned id);
Packit Service db749c
  const FHBasicLine *_findBasicLine(unsigned id);
Packit Service db749c
  const FHCustomProc *_findCustomProc(unsigned id);
Packit Service db749c
  const FHPatternLine *_findPatternLine(unsigned id);
Packit Service db749c
  const FHRGBColor *_findRGBColor(unsigned id);
Packit Service db749c
  const FHTintColor *_findTintColor(unsigned id);
Packit Service db749c
  const FHDisplayText *_findDisplayText(unsigned id);
Packit Service db749c
  const FHImageImport *_findImageImport(unsigned id);
Packit Service db749c
  const FHNewBlend *_findNewBlend(unsigned id);
Packit Service db749c
  const double *_findOpacityFilter(unsigned id);
Packit Service db749c
  const FWShadowFilter *_findFWShadowFilter(unsigned id);
Packit Service db749c
  const FWGlowFilter *_findFWGlowFilter(unsigned id);
Packit Service db749c
  const FHFilterAttributeHolder *_findFilterAttributeHolder(unsigned id);
Packit Service db749c
  const librevenge::RVNGBinaryData *_findData(unsigned id);
Packit Service db749c
  librevenge::RVNGString getColorString(unsigned id, double tint=1);
Packit Service db749c
  unsigned _findFillId(const FHGraphicStyle &graphicStyle);
Packit Service db749c
  unsigned _findStrokeId(const FHGraphicStyle &graphicStyle);
Packit Service db749c
  const FHFilterAttributeHolder *_findFilterAttributeHolder(const FHGraphicStyle &graphicStyle);
Packit Service db749c
  unsigned _findValueFromAttribute(unsigned id);
Packit Service db749c
  const FHSymbolClass *_findSymbolClass(unsigned id);
Packit Service db749c
  const FHSymbolInstance *_findSymbolInstance(unsigned id);
Packit Service db749c
  unsigned _findContentId(unsigned graphicStyleId);
Packit Service db749c
  const std::vector<FHColorStop> *_findMultiColorList(unsigned id);
Packit Service db749c
  librevenge::RVNGBinaryData getImageData(unsigned id);
Packit Service db749c
  FHRGBColor getRGBFromTint(const FHTintColor &tint);
Packit Service db749c
  void _generateBitmapFromPattern(librevenge::RVNGBinaryData &bitmap, unsigned colorId, const std::vector<unsigned char> &pattern);
Packit Service db749c
Packit Service db749c
  FHPageInfo m_pageInfo;
Packit Service db749c
  FHTail m_fhTail;
Packit Service db749c
  std::pair<unsigned, FHBlock> m_block;
Packit Service db749c
  std::map<unsigned, FHTransform> m_transforms;
Packit Service db749c
  std::map<unsigned, FHPath> m_paths;
Packit Service db749c
  std::map<unsigned, librevenge::RVNGString> m_strings;
Packit Service db749c
  std::map<librevenge::RVNGString, unsigned> m_names;
Packit Service db749c
  std::map<unsigned, FHList> m_lists;
Packit Service db749c
  std::map<unsigned, FHLayer> m_layers;
Packit Service db749c
  std::map<unsigned, FHGroup> m_groups;
Packit Service db749c
  std::map<unsigned, FHGroup> m_clipGroups;
Packit Service db749c
  std::stack<FHTransform> m_currentTransforms;
Packit Service db749c
  std::vector<FHTransform> m_fakeTransforms;
Packit Service db749c
  std::map<unsigned, FHCompositePath> m_compositePaths;
Packit Service db749c
  std::map<unsigned, FHPathText> m_pathTexts;
Packit Service db749c
  std::map<unsigned, std::vector<unsigned> > m_tStrings;
Packit Service db749c
  std::map<unsigned, FHAGDFont> m_fonts;
Packit Service db749c
  std::map<unsigned, FHTEffect> m_tEffects;
Packit Service db749c
  std::map<unsigned, FHParagraph> m_paragraphs;
Packit Service db749c
  std::map<unsigned, std::vector<FHTab> > m_tabs;
Packit Service db749c
  std::map<unsigned, std::vector<unsigned short> > m_textBloks;
Packit Service db749c
  std::map<unsigned, FHTextObject> m_textObjects;
Packit Service db749c
  std::map<unsigned, FHCharProperties> m_charProperties;
Packit Service db749c
  std::map<unsigned, FHParagraphProperties> m_paragraphProperties;
Packit Service db749c
  std::map<unsigned, FHRGBColor> m_rgbColors;
Packit Service db749c
  std::map<unsigned, FHBasicFill> m_basicFills;
Packit Service db749c
  std::map<unsigned, FHPropList> m_propertyLists;
Packit Service db749c
  std::map<unsigned, FHBasicLine> m_basicLines;
Packit Service db749c
  std::map<unsigned, FHCustomProc> m_customProcs;
Packit Service db749c
  std::map<unsigned, FHPatternLine> m_patternLines;
Packit Service db749c
  std::map<unsigned, FHDisplayText> m_displayTexts;
Packit Service db749c
  std::map<unsigned, FHGraphicStyle> m_graphicStyles;
Packit Service db749c
  std::map<unsigned, FHAttributeHolder> m_attributeHolders;
Packit Service db749c
  std::map<unsigned, librevenge::RVNGBinaryData> m_data;
Packit Service db749c
  std::map<unsigned, FHDataList> m_dataLists;
Packit Service db749c
  std::map<unsigned, FHImageImport> m_images;
Packit Service db749c
  std::map<unsigned, std::vector<FHColorStop> > m_multiColorLists;
Packit Service db749c
  std::map<unsigned, FHLinearFill> m_linearFills;
Packit Service db749c
  std::map<unsigned, FHTintColor> m_tints;
Packit Service db749c
  std::map<unsigned, FHLensFill> m_lensFills;
Packit Service db749c
  std::map<unsigned, FHRadialFill> m_radialFills;
Packit Service db749c
  std::map<unsigned, FHNewBlend> m_newBlends;
Packit Service db749c
  std::map<unsigned, FHFilterAttributeHolder> m_filterAttributeHolders;
Packit Service db749c
  std::map<unsigned, double> m_opacityFilters;
Packit Service db749c
  std::map<unsigned, FWShadowFilter> m_shadowFilters;
Packit Service db749c
  std::map<unsigned, FWGlowFilter> m_glowFilters;
Packit Service db749c
  std::map<unsigned, FHTileFill> m_tileFills;
Packit Service db749c
  std::map<unsigned, FHSymbolClass> m_symbolClasses;
Packit Service db749c
  std::map<unsigned, FHSymbolInstance> m_symbolInstances;
Packit Service db749c
  std::map<unsigned, FHPatternFill> m_patternFills;
Packit Service db749c
  std::map<unsigned, FHLinePattern> m_linePatterns;
Packit Service db749c
  std::map<unsigned, FHPath> m_arrowPaths;
Packit Service db749c
Packit Service db749c
  unsigned m_strokeId;
Packit Service db749c
  unsigned m_fillId;
Packit Service db749c
  unsigned m_contentId;
Packit Service db749c
  unsigned m_textBoxNumberId;
Packit Service db749c
  std::deque<unsigned> m_visitedObjects;
Packit Service db749c
};
Packit Service db749c
Packit Service db749c
} // namespace libfreehand
Packit Service db749c
Packit Service db749c
#endif /* __FHCOLLECTOR_H__ */
Packit Service db749c
/* vim:set shiftwidth=2 softtabstop=2 expandtab: */