00001
00002
00003 #ifndef _JAFAR_SPAF_DISPLAY_CONTEXT_HPP_
00004 #define _JAFAR_SPAF_DISPLAY_CONTEXT_HPP_
00005
00006 #include <list>
00007 #include <geom/Declarations.hpp>
00008
00009 namespace jafar {
00010 namespace spaf {
00011 class MatchResult;
00012 class Feature;
00017 class DisplayContext {
00018 public:
00019 DisplayContext();
00020 ~DisplayContext();
00021 void addPoint( const geom::Point3D& _point );
00022 const std::list< geom::Point3D >& points() const;
00023 void addSegment( const geom::Segment3D& _segment );
00024 const std::list< geom::Segment3D >& segments() const;
00025 void addFacet( const geom::Facet3D& _facet );
00026 const std::list< geom::Facet3D >& facets() const;
00027 private:
00028 struct Private;
00029 Private* const d;
00030 };
00031 #if 0
00032
00038 class Colorizer {
00039 protected:
00040 struct Color { double r, g, b; };
00041 public:
00042 virtual ~Colorizer() {}
00046 virtual void selectColorFor( const Feature * ) const = 0;
00047 protected:
00048 void setGLColor( const Color& c) const;
00049 };
00055 class RandomColorizer : public Colorizer {
00056 public:
00057 RandomDisplayContext();
00058 virtual ~RandomDisplayContext();
00059 virtual void selectColorFor( const Feature * ) const;
00060 private:
00061 struct Private;
00062 Private* const d;
00063 };
00068 class UniformColorizer : public Colorizer {
00069 public:
00070 UniformDisplayContext(double r = 0.5, double g = 0.5, double b = 1.0);
00071 ~UniformDisplayContext();
00072 virtual void selectColorFor( const Feature * ) const;
00073 private:
00074 struct Private;
00075 Private* const d;
00076 };
00081 class ColorizeMatchesColorizer : public Colorizer {
00082 public:
00088 ColorizeMatchesDisplayContext( DisplayContext* _fallback = 0 );
00089 virtual ~ColorizeMatchesDisplayContext();
00090 virtual void selectColorFor( const Feature * ) const;
00091 void setMatchList( const std::list< MatchResult >& _matchResults );
00092 public:
00093 struct Private;
00094 Private* const d;
00095 };
00096 #endif
00097 }
00098 }
00099
00100 #endif