00001
00002
00003
00004
00005
00006
00007
00008 #ifndef IMPDISPLAY_FILTER_GEOMETRY_H
00009 #define IMPDISPLAY_FILTER_GEOMETRY_H
00010
00011 #include "display_config.h"
00012 #include "geometry.h"
00013 #include "GeometryProcessor.h"
00014
00015 #include <IMP/PairContainer.h>
00016 #include <IMP/SingletonContainer.h>
00017 #include <IMP/algebra/Plane3D.h>
00018
00019 IMPDISPLAY_BEGIN_NAMESPACE
00020
00021
00022
00023
00024
00025 class IMPDISPLAYEXPORT FilterGeometry: public GeometryProcessor,
00026 public Geometry
00027 {
00028 const algebra::Plane3D &p_;
00029 Geometries gdata_;
00030 mutable Geometries filtered_;
00031 protected:
00032 using GeometryProcessor::process;
00033 bool process(SphereGeometry *g,
00034 Color color, std::string name);
00035 bool process(CylinderGeometry *g,
00036 Color color, std::string name);
00037 bool process(PointGeometry *g,
00038 Color color, std::string name);
00039 bool process(SegmentGeometry *g,
00040 Color color, std::string name);
00041 public:
00042
00043 FilterGeometry(const algebra::Plane3D &p);
00044
00045 void add_geometry(Geometry* g);
00046
00047 void add_geometry(const Geometries& g);
00048
00049 IMP_GEOMETRY(FilterGeometry);
00050 };
00051
00052
00053 IMPDISPLAY_END_NAMESPACE
00054
00055 #endif