00001
00002
00003
00004
00005
00006
00007
00008 #ifndef IMPDISPLAY_GEOMETRY_PROCESSOR_H
00009 #define IMPDISPLAY_GEOMETRY_PROCESSOR_H
00010
00011 #include "display_config.h"
00012 #include "geometry.h"
00013
00014 IMPDISPLAY_BEGIN_NAMESPACE
00015
00016
00017
00018
00019
00020 class IMPDISPLAYEXPORT GeometryProcessor
00021 {
00022 protected:
00023 virtual ~GeometryProcessor() {}
00024
00025 virtual bool process(SphereGeometry *g,
00026 Color color, std::string name) {
00027 return false;
00028 }
00029 virtual bool process(CylinderGeometry *g,
00030 Color color, std::string name) {
00031 return false;
00032 }
00033 virtual bool process(PointGeometry *g,
00034 Color color, std::string name) {
00035 return false;
00036 }
00037 virtual bool process(SegmentGeometry *g,
00038 Color color, std::string name) {
00039 return false;
00040 }
00041 virtual bool process(PolygonGeometry *g,
00042 Color color, std::string name) {
00043 return false;
00044 }
00045 virtual bool process(TriangleGeometry *g,
00046 Color color, std::string name) {
00047 return false;
00048 }
00049 virtual bool process(EllipsoidGeometry *g,
00050 Color color, std::string name) {
00051 return false;
00052 }
00053 virtual bool process(BoundingBoxGeometry *g, Color color,
00054 std::string name) {
00055 return false;
00056 }
00057 virtual bool process(Geometry *g, Color color, std::string name) {
00058 return false;
00059 }
00060 void process_geometry(Geometry* g);
00061 private:
00062 void process_geometry_internal(Geometry* g, bool has_color,
00063 Color c,
00064 std::string name);
00065 };
00066
00067
00068 IMPDISPLAY_END_NAMESPACE
00069
00070 #endif