IMP  2.0.0
The Integrative Modeling Platform
GeometryProcessor.h
Go to the documentation of this file.
1 /**
2  * \file IMP/display/GeometryProcessor.h
3  * \brief Implement GeometryProcessor
4  *
5  * Copyright 2007-2013 IMP Inventors. All rights reserved.
6  */
7 
8 #ifndef IMPDISPLAY_GEOMETRY_PROCESSOR_H
9 #define IMPDISPLAY_GEOMETRY_PROCESSOR_H
10 
11 #include <IMP/display/display_config.h>
12 #include "declare_Geometry.h"
13 #include "primitive_geometries.h"
14 
15 IMPDISPLAY_BEGIN_NAMESPACE
16 
17 //! Provide a standard geometry processing framework.
18 /** This class is designed to be used as a mixin, so
19  inherit from this and overload various process methods
20  as needed.
21  */
22 class IMPDISPLAYEXPORT GeometryProcessor
23 {
24 protected:
26 
27  virtual bool handle_sphere(SphereGeometry *,
28  Color, std::string) {
29  return false;
30  }
31  virtual bool handle_cylinder(CylinderGeometry *,
32  Color, std::string) {
33  return false;
34  }
35  virtual bool handle_point(PointGeometry *,
36  Color, std::string) {
37  return false;
38  }
39  virtual bool handle_segment(SegmentGeometry *,
40  Color, std::string) {
41  return false;
42  }
43  virtual bool handle_polygon(PolygonGeometry *,
44  Color, std::string) {
45  return false;
46  }
47  virtual bool handle_triangle(TriangleGeometry *,
48  Color, std::string) {
49  return false;
50  }
51  virtual bool handle_surface_mesh(SurfaceMeshGeometry *,
52  Color, std::string) {
53  return false;
54  }
55  virtual bool handle_label(LabelGeometry *,
56  Color, std::string) {
57  return false;
58  }
59  virtual bool handle_ellipsoid(EllipsoidGeometry *,
60  Color, std::string) {
61  return false;
62  }
63  virtual bool handle_bounding_box(BoundingBoxGeometry *, Color,
64  std::string) {
65  return false;
66  }
67  virtual bool handle_anything(Geometry *, Color, std::string) {
68  return false;
69  }
70  void handle_geometry (Geometry* g);
71  private:
72  void handle_geometry_internal(Geometry* g, bool has_color,
73  Color c,
74  std::string);
75 };
76 #ifndef IMP_DOXYGEN
77 typedef base::Vector<GeometryProcessor> GeometryProcessors;
78 #endif
79 IMPDISPLAY_END_NAMESPACE
80 
81 #endif /* IMPDISPLAY_GEOMETRY_PROCESSOR_H */