00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef MITK_PLANAR_FIGURE_MAPPER_2D_H_
00020 #define MITK_PLANAR_FIGURE_MAPPER_2D_H_
00021
00022 #include "mitkCommon.h"
00023 #include "PlanarFigureExports.h"
00024 #include "mitkGLMapper2D.h"
00025 #include "mitkPlanarFigure.h"
00026 #include "mitkPlanarFigureControlPointStyleProperty.h"
00027
00028 namespace mitk {
00029
00030 class BaseRenderer;
00031 class Contour;
00032
00033
00107 class PlanarFigure_EXPORT PlanarFigureMapper2D : public GLMapper2D
00108 {
00109 public:
00110
00111 mitkClassMacro(PlanarFigureMapper2D, Mapper2D);
00112
00113 itkNewMacro(Self);
00114
00118 virtual void Paint(BaseRenderer * renderer);
00119
00120 static void SetDefaultProperties(mitk::DataNode* node, mitk::BaseRenderer* renderer = NULL, bool overwrite = false);
00121
00122
00123 protected:
00124
00125 typedef PlanarFigure::VertexContainerType VertexContainerType;
00126
00127 enum PlanarFigureDisplayMode
00128 {
00129 PF_DEFAULT = 0,
00130 PF_HOVER,
00131 PF_SELECTED
00132 };
00133
00134 PlanarFigureMapper2D();
00135
00136 virtual ~PlanarFigureMapper2D();
00137
00138 void TransformObjectToDisplay(
00139 const mitk::Point2D &point2D,
00140 mitk::Point2D &displayPoint,
00141 const mitk::Geometry2D *objectGeometry,
00142 const mitk::Geometry2D *rendererGeometry,
00143 const mitk::DisplayGeometry *displayGeometry );
00144
00145 void DrawMarker(
00146 const mitk::Point2D &point,
00147 float* lineColor,
00148 float lineOpacity,
00149 float* markerColor,
00150 float markerOpacity,
00151 float lineWidth,
00152 PlanarFigureControlPointStyleProperty::Shape shape,
00153 const mitk::Geometry2D *objectGeometry,
00154 const mitk::Geometry2D *rendererGeometry,
00155 const mitk::DisplayGeometry *displayGeometry );
00156
00157 void PaintPolyLine(
00158 const VertexContainerType* vertices,
00159 bool closed,
00160 float* color,
00161 float opacity,
00162 float lineWidth,
00163 Point2D& firstPoint,
00164 const Geometry2D* planarFigureGeometry2D,
00165 const Geometry2D* rendererGeometry2D,
00166 const DisplayGeometry* displayGeometry);
00167
00168 void DrawMainLines( mitk::PlanarFigure* figure,
00169 float* color,
00170 float opacity,
00171 float lineWidth,
00172 Point2D& firstPoint,
00173 const Geometry2D* planarFigureGeometry2D,
00174 const Geometry2D* rendererGeometry2D,
00175 const DisplayGeometry* displayGeometry) ;
00176
00177 void DrawHelperLines( mitk::PlanarFigure* figure,
00178 float* color,
00179 float opacity,
00180 float lineWidth,
00181 Point2D& firstPoint,
00182 const Geometry2D* planarFigureGeometry2D,
00183 const Geometry2D* rendererGeometry2D,
00184 const DisplayGeometry* displayGeometry) ;
00185
00186 void InitializeDefaultPlanarFigureProperties();
00187
00188 void InitializePlanarFigurePropertiesFromDataNode( const mitk::DataNode* node );
00189
00190 void SetColorProperty( float property[3][3], PlanarFigureDisplayMode mode, float red, float green, float blue )
00191 {
00192 property[mode][0] = red;
00193 property[mode][1] = green;
00194 property[mode][2] = blue;
00195 }
00196
00197 void SetFloatProperty( float* property, PlanarFigureDisplayMode mode, float value )
00198 {
00199 property[mode] = value;
00200 }
00201
00202
00203
00204 private:
00205 bool m_IsSelected;
00206 bool m_IsHovering;
00207 bool m_DrawOutline;
00208 bool m_DrawQuantities;
00209
00210 float m_LineWidth;
00211 float m_OutlineWidth;
00212 float m_HelperlineWidth;
00213 float m_PointWidth;
00214
00215 PlanarFigureControlPointStyleProperty::Shape m_ControlPointShape;
00216
00217 float m_LineColor[3][3];
00218 float m_LineOpacity[3];
00219 float m_OutlineColor[3][3];
00220 float m_OutlineOpacity[3];
00221 float m_HelperlineColor[3][3];
00222 float m_HelperlineOpacity[3];
00223 float m_MarkerlineColor[3][3];
00224 float m_MarkerlineOpacity[3];
00225 float m_MarkerColor[3][3];
00226 float m_MarkerOpacity[3];
00227
00228 };
00229
00230 }
00231
00232
00233
00234 #endif