Open PaperOpt
OpenPaperOpt/SurfaceParser.h
Go to the documentation of this file.
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