00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #ifndef __FHPARSER_H__
00011 #define __FHPARSER_H__
00012
00013 #include <map>
00014 #include <vector>
00015 #include <libwpd/libwpd.h>
00016 #include <libwpg/libwpg.h>
00017 #include "FHTypes.h"
00018
00019 #define FH_PAGE_START_X 0x1c24
00020 #define FH_PAGE_START_Y 0x1c2c
00021 #define FH_PAGE_WIDTH 0x1c34
00022 #define FH_PAGE_HEIGHT 0x1c3c
00023
00024 class WPXInputStream;
00025
00026 namespace libfreehand
00027 {
00028 class FHCollector;
00029
00030 class FHParser
00031 {
00032 public:
00033 explicit FHParser();
00034 virtual ~FHParser();
00035 bool parse(WPXInputStream *input, libwpg::WPGPaintInterface *painter);
00036 private:
00037 FHParser(const FHParser &);
00038 FHParser &operator=(const FHParser &);
00039
00040 void parseDictionary(WPXInputStream *input);
00041 void parseRecordList(WPXInputStream *input);
00042 void parseRecord(WPXInputStream *input, FHCollector *collector, int recordId);
00043 void parseRecords(WPXInputStream *input, FHCollector *collector = 0);
00044 void parseDocument(WPXInputStream *input, FHCollector *collector);
00045
00046 void readAGDFont(WPXInputStream *input, FHCollector *collector);
00047 void readAGDSelection(WPXInputStream *input, FHCollector *collector);
00048 void readArrowPath(WPXInputStream *input, FHCollector *collector);
00049 void readAttributeHolder(WPXInputStream *input, FHCollector *collector);
00050 void readBasicFill(WPXInputStream *input, FHCollector *collector);
00051 void readBasicLine(WPXInputStream *input, FHCollector *collector);
00052 void readBendFilter(WPXInputStream *input, FHCollector *collector);
00053 void readBlock(WPXInputStream *input, FHCollector *collector);
00054 void readBrushList(WPXInputStream *input, FHCollector *collector);
00055 void readBrush(WPXInputStream *input, FHCollector *collector);
00056 void readBrushStroke(WPXInputStream *input, FHCollector *collector);
00057 void readBrushTip(WPXInputStream *input, FHCollector *collector);
00058 void readCalligraphicStroke(WPXInputStream *input, FHCollector *collector);
00059 void readCharacterFill(WPXInputStream *input, FHCollector *collector);
00060 void readClipGroup(WPXInputStream *input, FHCollector *collector);
00061 void readCollector(WPXInputStream *input, FHCollector *collector);
00062 void readColor6(WPXInputStream *input, FHCollector *collector);
00063 void readCompositePath(WPXInputStream *input, FHCollector *collector);
00064 void readConeFill(WPXInputStream *input, FHCollector *collector);
00065 void readConnectorLine(WPXInputStream *input, FHCollector *collector);
00066 void readContentFill(WPXInputStream *input, FHCollector *collector);
00067 void readContourFill(WPXInputStream *input, FHCollector *collector);
00068 void readCustomProc(WPXInputStream *input, FHCollector *collector);
00069 void readDataList(WPXInputStream *input, FHCollector *collector);
00070 void readData(WPXInputStream *input, FHCollector *collector);
00071 void readDateTime(WPXInputStream *input, FHCollector *collector);
00072 void readDuetFilter(WPXInputStream *input, FHCollector *collector);
00073 void readElement(WPXInputStream *input, FHCollector *collector);
00074 void readElemList(WPXInputStream *input, FHCollector *collector);
00075 void readElemPropLst(WPXInputStream *input, FHCollector *collector);
00076 void readEnvelope(WPXInputStream *input, FHCollector *collector);
00077 void readExpandFilter(WPXInputStream *input, FHCollector *collector);
00078 void readExtrusion(WPXInputStream *input, FHCollector *collector);
00079 void readFHDocHeader(WPXInputStream *input, FHCollector *collector);
00080 void readFHTail(WPXInputStream *input, FHCollector *collector);
00081 void readFigure(WPXInputStream *input, FHCollector *collector);
00082 void readFileDescriptor(WPXInputStream *input, FHCollector *collector);
00083 void readFilterAttributeHolder(WPXInputStream *input, FHCollector *collector);
00084 void readFWBevelFilter(WPXInputStream *input, FHCollector *collector);
00085 void readFWBlurFilter(WPXInputStream *input, FHCollector *collector);
00086 void readFWFeatherFilter(WPXInputStream *input, FHCollector *collector);
00087 void readFWGlowFilter(WPXInputStream *input, FHCollector *collector);
00088 void readFWShadowFilter(WPXInputStream *input, FHCollector *collector);
00089 void readFWSharpenFilter(WPXInputStream *input, FHCollector *collector);
00090 void readGradientMaskFilter(WPXInputStream *input, FHCollector *collector);
00091 void readGraphicStyle(WPXInputStream *input, FHCollector *collector);
00092 void readGroup(WPXInputStream *input, FHCollector *collector);
00093 void readGuides(WPXInputStream *input, FHCollector *collector);
00094 void readHalftone(WPXInputStream *input, FHCollector *collector);
00095 void readImageFill(WPXInputStream *input, FHCollector *collector);
00096 void readImageImport(WPXInputStream *input, FHCollector *collector);
00097 void readLayer(WPXInputStream *input, FHCollector *collector);
00098 void readLensFill(WPXInputStream *input, FHCollector *collector);
00099 void readLinearFill(WPXInputStream *input, FHCollector *collector);
00100 void readLinePat(WPXInputStream *input, FHCollector *collector);
00101 void readLineTable(WPXInputStream *input, FHCollector *collector);
00102 void readList(WPXInputStream *input, FHCollector *collector);
00103 void readMasterPageDocMan(WPXInputStream *input, FHCollector *collector);
00104 void readMasterPageElement(WPXInputStream *input, FHCollector *collector);
00105 void readMasterPageLayerElement(WPXInputStream *input, FHCollector *collector);
00106 void readMasterPageLayerInstance(WPXInputStream *input, FHCollector *collector);
00107 void readMasterPageSymbolClass(WPXInputStream *input, FHCollector *collector);
00108 void readMasterPageSymbolInstance(WPXInputStream *input, FHCollector *collector);
00109 void readMDict(WPXInputStream *input, FHCollector *collector);
00110 void readMList(WPXInputStream *input, FHCollector *collector);
00111 void readMName(WPXInputStream *input, FHCollector *collector);
00112 void readMpObject(WPXInputStream *input, FHCollector *collector);
00113 void readMQuickDict(WPXInputStream *input, FHCollector *collector);
00114 void readMString(WPXInputStream *input, FHCollector *collector);
00115 void readMultiBlend(WPXInputStream *input, FHCollector *collector);
00116 void readMultiColorList(WPXInputStream *input, FHCollector *collector);
00117 void readNewBlend(WPXInputStream *input, FHCollector *collector);
00118 void readNewContourFill(WPXInputStream *input, FHCollector *collector);
00119 void readNewRadialFill(WPXInputStream *input, FHCollector *collector);
00120 void readOpacityFilter(WPXInputStream *input, FHCollector *collector);
00121 void readOval(WPXInputStream *input, FHCollector *collector);
00122 void readParagraph(WPXInputStream *input, FHCollector *collector);
00123 void readPath(WPXInputStream *input, FHCollector *collector);
00124 void readPathTextLineInfo(WPXInputStream *input, FHCollector *collector);
00125 void readPatternFill(WPXInputStream *input, FHCollector *collector);
00126 void readPatternLine(WPXInputStream *input, FHCollector *collector);
00127 void readPerspectiveEnvelope(WPXInputStream *input, FHCollector *collector);
00128 void readPerspectiveGrid(WPXInputStream *input, FHCollector *collector);
00129 void readPolygonFigure(WPXInputStream *input, FHCollector *collector);
00130 void readProcedure(WPXInputStream *input, FHCollector *collector);
00131 void readPropLst(WPXInputStream *input, FHCollector *collector);
00132 void readPSLine(WPXInputStream *input, FHCollector *collector);
00133 void readRadialFill(WPXInputStream *input, FHCollector *collector);
00134 void readRadialFillX(WPXInputStream *input, FHCollector *collector);
00135 void readRaggedFilter(WPXInputStream *input, FHCollector *collector);
00136 void readRectangle(WPXInputStream *input, FHCollector *collector);
00137 void readSketchFilter(WPXInputStream *input, FHCollector *collector);
00138 void readSpotColor(WPXInputStream *input, FHCollector *collector);
00139 void readSpotColor6(WPXInputStream *input, FHCollector *collector);
00140 void readStylePropLst(WPXInputStream *input, FHCollector *collector);
00141 void readSwfImport(WPXInputStream *input, FHCollector *collector);
00142 void readSymbolClass(WPXInputStream *input, FHCollector *collector);
00143 void readSymbolInstance(WPXInputStream *input, FHCollector *collector);
00144 void readSymbolLibrary(WPXInputStream *input, FHCollector *collector);
00145 void readTabTable(WPXInputStream *input, FHCollector *collector);
00146 void readTaperedFill(WPXInputStream *input, FHCollector *collector);
00147 void readTaperedFillX(WPXInputStream *input, FHCollector *collector);
00148 void readTEffect(WPXInputStream *input, FHCollector *collector);
00149 void readTextBlok(WPXInputStream *input, FHCollector *collector);
00150 void readTextColumn(WPXInputStream *input, FHCollector *collector);
00151 void readTextInPath(WPXInputStream *input, FHCollector *collector);
00152 void readTFOnPath(WPXInputStream *input, FHCollector *collector);
00153 void readTileFill(WPXInputStream *input, FHCollector *collector);
00154 void readTintColor(WPXInputStream *input, FHCollector *collector);
00155 void readTintColor6(WPXInputStream *input, FHCollector *collector);
00156 void readTransformFilter(WPXInputStream *input, FHCollector *collector);
00157 void readTString(WPXInputStream *input, FHCollector *collector);
00158 void readUString(WPXInputStream *input, FHCollector *collector);
00159 void readVDict(WPXInputStream *input, FHCollector *collector);
00160 void readVMpObj(WPXInputStream *input, FHCollector *collector);
00161 void readXform(WPXInputStream *input, FHCollector *collector);
00162
00163 unsigned _readRecordId(WPXInputStream *input);
00164
00165 unsigned _xformCalc(unsigned char var1, unsigned char var2);
00166
00167 double _readCoordinate(WPXInputStream *input);
00168
00169 WPXInputStream *m_input;
00170 FHCollector *m_collector;
00171 int m_version;
00172 std::map<unsigned short, int> m_dictionary;
00173 std::vector<unsigned short> m_records;
00174 std::vector<unsigned short>::size_type m_currentRecord;
00175 std::vector<long> m_offsets;
00176 long m_fhTailOffset;
00177 FHPageInfo m_pageInfo;
00178 };
00179
00180 }
00181
00182 #endif // __FHRAPHICS_H__
00183