|
Open PaperOpt
|
00001 #pragma once 00002 #ifndef SURFACEPARSER_H 00003 #define SURFACEPARSER_H 00004 00005 #include <vector> 00006 #include <map> 00007 #include <string> 00008 #include <complex> 00009 #include <iostream> 00010 #include "StructureObject.h" 00011 #include "XMLParser.h" 00012 00013 //Surface includes 00014 #include "Surface.h" 00015 #include "SurfaceTopoBilinear.h" 00016 #include "SurfaceTopography.h" 00017 #include "SurfaceTN.h" 00018 #include "SurfaceTNInk.h" 00019 #include "SurfaceTNSubflat.h" 00020 00021 00022 //Object include 00023 #include "Halftone.h" 00024 00025 extern std::string gBinaryDirectory; 00026 00027 using namespace std; 00028 00029 namespace IO{ 00030 /* 00031 * Functions to parse surfaces should have this signature. 00032 * 00033 */ 00034 typedef StructureObject* (*parseFuncPtr) (XMLParser&, StructureObject*, vector<float>&, float sizeX, float sizeY, float zOffset); 00035 00042 class SurfaceParser 00043 { 00044 public: 00045 /* 00046 * Constructor. 00047 * 00048 */ 00049 SurfaceParser(void); 00050 ~SurfaceParser(void); 00051 00065 StructureObject* parseSurface(XMLParser& rParser, std::string& surfaceType, StructureObject* pPrevStructureObject,vector<float>& rLambdas, float xmax, float ymax); 00066 00067 private: 00068 00075 bool addSurfaceParserMethod(std::string surfaceType, parseFuncPtr pParserMethod ); 00076 00077 map<string, parseFuncPtr> surfaces; 00078 00083 static StructureObject* parseFlat(XMLParser& rParser, StructureObject* pPrevStructureObject, vector<float>& rLambda, float xmax, float ymax, float z); 00084 static StructureObject* parseTopoBilinear(XMLParser& rParser, StructureObject* pPrevStructureObject, vector<float>& rLambda, float xmax, float ymax, float z); 00085 static StructureObject* parseTopoTriangulated(XMLParser& rParser, StructureObject* pPrevStructureObject, vector<float>& rLambda, float xmax, float ymax, float z); 00086 static StructureObject* parseFlatNormal(XMLParser& rParser, StructureObject* pPrevStructureObject, vector<float>& rLambda, float xmax, float ymax, float z); 00087 static StructureObject* parseSubFlat(XMLParser& rParser, StructureObject* pPrevStructureObject, vector<float>& rLambda, float xmax, float ymax, float z); 00088 00089 00094 static Halftone* parseHalftone(XMLParser& rParser, vector<float>& rLambda, float zOffset); 00095 }; 00096 } 00097 00098 #endif //SurfaceParser