Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Tools/Debugging/DebugDrawings.h

Go to the documentation of this file.
00001 /**
00002 * @file Tools/Debugging/DebugDrawings.h
00003 *
00004 * Macros for drawing
00005 * 
00006 * @author <a href="mailto:juengel@informatik.hu-berlin.de">Matthias Jüngel</a>
00007 */ 
00008 #ifndef __DebugDrawings_h_
00009 #define __DebugDrawings_h_
00010 
00011 #include "Tools/Debugging/Debugging.h"
00012 #include "Tools/Debugging/DebugKeyTable.h"
00013 //#include "Platform/GTAssert.h"
00014 
00015 /**
00016 * This class includes all enumeration types and methods that are necessary
00017 * to transmit messages for debug drawings
00018 */
00019 class Drawings
00020 {
00021 public:
00022 
00023   /** IDs for shape types 
00024   * shapes are the basic drawings that can be sent´.
00025   */
00026   enum ShapeType
00027   {
00028     circle, filledCircle, line, dot, largeDot, octangle, arrow
00029   };
00030 
00031   /**
00032   * IDs for debug drawings on the field.
00033   * enter new debug drawings here and add the corresponding string in getDrawingName.
00034   */
00035   enum FieldDrawing
00036   {
00037     // the field
00038     fieldPolygons, /*!< the polygons of the 2D field view */
00039     fieldLines, /*!< the lines of the 2D field view  */
00040 
00041     // percepts
00042     percepts_ballFlagsGoalsField, /*!< player, ball and landmarks percepts on the field view. */
00043     percepts_obstaclesAndPSDField, /*!< obstacles and psd percepts on the field view. */
00044     percepts_specialField, /*!< special percept on field */
00045 
00046     // models
00047     worldStateOracle, /*!< the oracled world state (displayed ligter) */
00048     worldState, /*!< the world state as calculated by the modules */
00049     models_obstaclesField, /*!< the obstacles model */
00050 
00051     // modules
00052     selfLocatorField,/*!< visualization of the particles in the monte carlo selflocalization */
00053     ballLocatorField,/*!< visualization of hypothesis regarding the ball */
00054   goaliePositionField,/*!< visualization of the goalie position */
00055     headControlField,/*!< visualization what feature of the environment HeadControl is aiming at */
00056     teamBallLocatorField,
00057 
00058     //      obstaclesLocatorField, /*! Drawings for the SensorFusionPlayersLocator */
00059     behavior_CBBVector, /*! Drawings for ContinuosBasicBehavior1 */
00060     behavior_CBBWay, /*! Drawings for ContinuosBasicBehavior2 */
00061     behavior_kickAngles, /*! Drawings for several kick angles */
00062     behavior_aStarSearch, /*! Drawings for A* search tree */
00063 
00064     dribbleBall, /*! Drawings for dribble ball */
00065 
00066     // radar viewer      
00067     firstDrawingInRadarViewer, /*!< all drawings below here are shown in the radar view */
00068     percepts_ballFlagsGoalsRadar = firstDrawingInRadarViewer, /*!< player, ball and landmarks percepts on the radar view. */
00069     percepts_obstaclesAndPSDRadar, /*!< obstacles and psd percepts on the radar view. */
00070     models_obstaclesRadar, /*!< obstacles model in radar view */
00071     models_corridorsRadar, /*! All corridors that are calculated */
00072     behavior_kickAnglesRadar,  /*!< kick angles in radar view */
00073 
00074     numberOfFieldDrawings
00075   };
00076 
00077   /**
00078   * IDs for debug drawings on the field.
00079   * enter new debug drawings here and add the corresponding string in getDrawingName.
00080   */
00081   enum ImageDrawing
00082   {
00083     percepts_ball,
00084     percepts_flagsGoals,
00085     percepts_freePartOfGoal,
00086     percepts_lines,
00087     percepts_edges,
00088     percepts_obstacles,
00089     percepts_psd,
00090     percepts_special,
00091     models_obstacles, 
00092     models_freePartOfGoal, 
00093     selfLocator,
00094     imageProcessor_general,
00095     imageProcessor_horizon,
00096     imageProcessor_scanLines,
00097     imageProcessor_coloredSegments1,
00098     imageProcessor_coloredSegments2,
00099     imageProcessor_coloredSegments3,
00100     imageProcessor_calibration1,
00101     imageProcessor_calibration2,
00102     imageProcessor_ball1,
00103     imageProcessor_ball2,
00104     imageProcessor_ball3,
00105     imageProcessor_ball4,
00106     imageProcessor_ground,
00107     imageProcessor_flagsAndGoals,
00108     imageProcessor_obstacles,
00109     imageProcessor_gradients, 
00110     imageProcessor_edges,
00111     sketch,
00112     numberOfImageDrawings
00113   };
00114 
00115   enum TypeOfDrawing 
00116   {
00117     drawingOnField,
00118     drawingOnImage
00119   };
00120 
00121   static TypeOfDrawing getTypeOfDrawing(FieldDrawing) {return drawingOnField;}
00122   static TypeOfDrawing getTypeOfDrawing(ImageDrawing) {return drawingOnImage;}
00123 
00124   /**
00125   * Returns a description for an indexed fieldDrawing.
00126   * \attention Add descriptions for new fieldDrawings here.
00127   */
00128   static const char* getDrawingName(FieldDrawing fieldDrawing)
00129   {
00130     switch (fieldDrawing) 
00131     {
00132     case fieldPolygons: return "field polygons";
00133     case fieldLines: return "field lines";
00134 
00135     case percepts_ballFlagsGoalsField: return "percepts: ball; flags; goals";
00136     case percepts_obstaclesAndPSDField: return "percepts: obstacles; PSD";
00137     case percepts_specialField: return "percepts: special";
00138 
00139     case worldStateOracle: return "world state oracle";
00140     case worldState: return "world state";
00141     case models_obstaclesField: return "models: obstacles";
00142 
00143     case selfLocatorField: return "self locator";
00144     case ballLocatorField: return "ball locator";
00145     case goaliePositionField: return "goalie position"; 
00146     case headControlField: return "head control";
00147     case teamBallLocatorField: return "team ball locator";
00148       //    case obstaclesLocatorField: return "obstacles locator";
00149     case behavior_CBBVector: return "behavior: CBBVector";
00150     case behavior_CBBWay: return "behavior: CBBWay";
00151     case behavior_kickAngles: return "behavior: kick angles";
00152     case behavior_aStarSearch: return "behavior: A* search tree";
00153     case dribbleBall: return "dribble Ball";
00154 
00155     case percepts_ballFlagsGoalsRadar: return "radar - percepts: ball; flags; goals";
00156     case percepts_obstaclesAndPSDRadar: return "radar - percepts: obstacles; PSD";
00157     case models_obstaclesRadar: return "radar - models: obstacles";
00158     case models_corridorsRadar: return "radar - models: corridors";
00159     case behavior_kickAnglesRadar: return "radar - behavior: kick angles";
00160     default: return "check available drawings";
00161     }
00162   }
00163 
00164   /**
00165   * Returns a description for an indexed imageDrawing.
00166   * \attention Add descriptions for new image drawings here.
00167   */
00168   static const char* getDrawingName(ImageDrawing imageDrawing)
00169   {
00170     switch (imageDrawing) 
00171     {
00172     case percepts_ball: return "percepts: ball";
00173     case percepts_flagsGoals: return "percepts: flags; goals";
00174     case percepts_freePartOfGoal: return "percepts: free part of goal";
00175     case percepts_lines: return "percepts: lines";
00176     case percepts_edges: return "percepts: edges";
00177     case percepts_obstacles: return "percepts: obstacles";
00178     case percepts_psd: return "percepts: psd";
00179     case percepts_special: return "percepts: special";
00180     case models_obstacles: return "models: obstacles";
00181     case models_freePartOfGoal: return "models: free part of goal";
00182     case selfLocator: return "self locator";
00183     case imageProcessor_general: return "image processor: general";
00184     case imageProcessor_horizon: return "image processor: horizon";
00185     case imageProcessor_scanLines: return "image processor: scan lines";
00186     case imageProcessor_coloredSegments1: return "image processor: colored segments1";
00187     case imageProcessor_coloredSegments2: return "image processor: colored segments2";
00188     case imageProcessor_coloredSegments3: return "image processor: colored segments3";
00189     case imageProcessor_calibration1: return "image processor: calibration 1";
00190     case imageProcessor_calibration2: return "image processor: calibration 2";
00191     case imageProcessor_ball1: return "image processor: ball 1";
00192     case imageProcessor_ball2: return "image processor: ball 2";
00193     case imageProcessor_ball3: return "image processor: ball 3";
00194     case imageProcessor_ball4: return "image processor: ball 4";
00195     case imageProcessor_ground: return "image processor: ground";
00196     case imageProcessor_flagsAndGoals: return "image processor: flags; goals";
00197     case imageProcessor_obstacles: return "image processor: obstacles";
00198     case imageProcessor_gradients: return "image processor: gradients";
00199     case imageProcessor_edges: return "image processor: edges";
00200     case sketch: return "sketch";
00201     default: return "check available drawings";
00202     }
00203   }
00204 
00205   static bool getDebugKeyID(enum FieldDrawing fieldDrawing, DebugKeyTable::debugKeyID& debugKeyID)
00206   {
00207     switch (fieldDrawing) 
00208     {
00209     case selfLocatorField: debugKeyID = DebugKeyTable::send_selfLocatorField_drawing; return true;
00210     case ballLocatorField: debugKeyID = DebugKeyTable::send_ballLocatorField_drawing; return true;
00211     case goaliePositionField: debugKeyID = DebugKeyTable::send_goaliePositionField_drawing; return true;
00212     case headControlField: debugKeyID = DebugKeyTable::send_headControlField_drawing; return true;
00213     case teamBallLocatorField: debugKeyID = DebugKeyTable::send_teamBallLocatorField_drawing; return true;
00214       //    case obstaclesLocatorField: debugKeyID = DebugKeyTable::send_obstaclesLocatorField_drawing; return true;
00215     case behavior_CBBVector: debugKeyID = DebugKeyTable::send_behavior_CBBVector_drawing; return true;
00216     case behavior_CBBWay: debugKeyID = DebugKeyTable::send_behavior_CBBWay_drawing; return true;
00217     case behavior_kickAngles: debugKeyID = DebugKeyTable::send_behavior_kickAngles_drawing; return true;
00218     case behavior_aStarSearch: debugKeyID = DebugKeyTable::send_behavior_aStarSearch_drawing; return true;
00219     case dribbleBall: debugKeyID = DebugKeyTable::send_dribbleBall_drawing; return true;
00220 
00221     case models_corridorsRadar: debugKeyID = DebugKeyTable::send_models_corridorsRadar_drawing; return true;
00222     case behavior_kickAnglesRadar: debugKeyID = DebugKeyTable::send_behavior_kickAnglesRadar_drawing; return true;
00223 
00224     default: return false;
00225     }
00226   }
00227 
00228   static bool getDebugKeyID(enum ImageDrawing imageDrawing, DebugKeyTable::debugKeyID& debugKeyID)
00229   {
00230     switch (imageDrawing) 
00231     {
00232     case selfLocator: debugKeyID = DebugKeyTable::send_selfLocator_drawing; return true;
00233     case imageProcessor_general: debugKeyID = DebugKeyTable::send_imageProcessor_general_drawing; return true;
00234     case imageProcessor_horizon: debugKeyID = DebugKeyTable::send_imageProcessor_horizon_drawing; return true;
00235     case imageProcessor_scanLines: debugKeyID = DebugKeyTable::send_imageProcessor_scanLines_drawing; return true;
00236     case imageProcessor_coloredSegments1: debugKeyID = DebugKeyTable::send_imageProcessor_coloredSegments1_drawing; return true;
00237     case imageProcessor_coloredSegments2: debugKeyID = DebugKeyTable::send_imageProcessor_coloredSegments2_drawing; return true;
00238     case imageProcessor_coloredSegments3: debugKeyID = DebugKeyTable::send_imageProcessor_coloredSegments3_drawing; return true;
00239     case imageProcessor_calibration1: debugKeyID = DebugKeyTable::send_imageProcessor_calibration1_drawing; return true;
00240     case imageProcessor_calibration2: debugKeyID = DebugKeyTable::send_imageProcessor_calibration2_drawing; return true;
00241     case imageProcessor_ball1: debugKeyID = DebugKeyTable::send_imageProcessor_ball1_drawing; return true;
00242     case imageProcessor_ball2: debugKeyID = DebugKeyTable::send_imageProcessor_ball2_drawing; return true;
00243     case imageProcessor_ball3: debugKeyID = DebugKeyTable::send_imageProcessor_ball3_drawing; return true;
00244     case imageProcessor_ball4: debugKeyID = DebugKeyTable::send_imageProcessor_ball4_drawing; return true;
00245     case imageProcessor_ground: debugKeyID = DebugKeyTable::send_imageProcessor_ground_drawing; return true;
00246     case imageProcessor_flagsAndGoals: debugKeyID = DebugKeyTable::send_imageProcessor_flagsAndGoals_drawing; return true;
00247     case imageProcessor_obstacles: debugKeyID = DebugKeyTable::send_imageProcessor_obstacles_drawing; return true;
00248     case imageProcessor_gradients: debugKeyID = DebugKeyTable::send_imageProcessor_gradients_drawing; return true;
00249     case imageProcessor_edges: debugKeyID = DebugKeyTable::send_imageProcessor_edges_drawing; return true;
00250     case sketch: debugKeyID = DebugKeyTable::send_sketch_drawing; return true;
00251     default: return false;
00252     }
00253   }
00254 
00255   /** The pen style that is used for basic shapes*/
00256   enum PenStyle
00257   {
00258     ps_solid, ps_dash, ps_dot, ps_null
00259   };
00260 
00261   /** The fill style that is used for basic shapes*/
00262   enum FillStyle
00263   {
00264     bs_solid, bs_null
00265   };
00266 
00267   /** The color that is used for basic shapes*/
00268   enum Color
00269   {
00270     red, green, blue, yellow, orange, pink, skyblue, white, light_gray, gray, dark_gray, black, yellowOrange, numberOfColors
00271   };
00272 
00273 };
00274 
00275 #ifdef NDEBUG
00276 #define NODEBUGDRAWINGS
00277 #endif
00278 #ifdef NO_DEBUG_DRAWING
00279 #define NODEBUGDRAWINGS
00280 #endif
00281 
00282 #ifdef NODEBUGDRAWINGS
00283 #define CIRCLE(id, center_x, center_y, radius, penWidth, penStyle, penColor) /**/
00284 #define DOT(id, x, y, penColor, fillColor) /**/
00285 #define LARGE_DOT(id, x, y, penColor, fillColor) /**/
00286 #define ARROW(id, x1, y1, x2, y2, penWidth, penStyle, penColor) /**/
00287 #define LINE(id, x1, y1, x2, y2, penWidth, penStyle, penColor) /**/
00288 #define POSE_2D_SAMPLE(id, p, color) /**/
00289 #define OCTANGLE(id, x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8, color, fill) /**/
00290 #define QUADRANGLE(id, x1,y1,x2,y2,x3,y3,x4,y4, penWidth, penStyle, penColor) /**/
00291 #define RECTANGLE(id, x1,y1,x2,y2, penWidth, penStyle, penColor) /**/
00292 
00293 #define COMPLEX_DRAWING(id,expression) /**/
00294 #define DEBUG_DRAWING_FINISHED(id) /**/
00295 
00296 #else //NODEBUGDRAWINGS
00297 
00298 /** 
00299 * A macro that sends a circle
00300 * @param id A drawing id (Drawings::FieldDrawing or Drawings::ImageDrawing)
00301 * @param center_x The x coordinate of the center of the circle
00302 * @param center_y The y coordinate of the center of the circle
00303 * @param radius The radius of the circle
00304 * @param penWidth The width of the arc of the circle
00305 * @param penStyle The pen style of the arc of the circle (Drawings::PenStyle)
00306 * @param penColor The color of the arc of the circle (Drawings::Color)
00307 */
00308 #define CIRCLE(id, center_x, center_y, radius, penWidth, penStyle, penColor) \
00309   INFO(send_##id##_drawing, idDebugDrawing2, bin, \
00310   (char)Drawings::circle << \
00311   (char)Drawings::id << \
00312   (char)Drawings::getTypeOfDrawing(Drawings::id) << \
00313   (int)(center_x) << (int)(center_y) << (int)(radius) << (char)(penWidth) << \
00314   (char)(penStyle) << (char)(penColor) \
00315   );
00316 
00317 /** 
00318 * A macro that sends a dot (a quadratic box with a border)
00319 * @param id A drawing id (Drawings::FieldDrawing or Drawings::ImageDrawing)
00320 * @param x The x coordinate of the center of the box
00321 * @param y The y coordinate of the center of the box
00322 * @param penColor The color of the border of the dot (Drawings::Color)
00323 * @param fillColor The color of the dot (Drawings::Color)
00324 */
00325 #define DOT(id, x, y, penColor, fillColor) \
00326   INFO(send_##id##_drawing, idDebugDrawing2, bin, \
00327   (char)Drawings::dot << \
00328   (char)Drawings::id << \
00329   (char)Drawings::getTypeOfDrawing(Drawings::id) << \
00330   (int)(x) << (int)(y) << (char)(penColor) << (char)(fillColor) \
00331   );
00332 
00333 
00334 /** 
00335 * A macro that sends a dot (a quadratic box with a border)
00336 * @param id A drawing id (Drawings::FieldDrawing or Drawings::ImageDrawing)
00337 * @param x The x coordinate of the center of the box
00338 * @param y The y coordinate of the center of the box
00339 * @param penColor The color of the border of the dot (Drawings::Color)
00340 * @param fillColor The color of the dot (Drawings::Color)
00341 */
00342 #define LARGE_DOT(id, x, y, penColor, fillColor) \
00343   INFO(send_##id##_drawing, idDebugDrawing2, bin, \
00344   (char)Drawings::largeDot << \
00345   (char)Drawings::id << \
00346   (char)Drawings::getTypeOfDrawing(Drawings::id) << \
00347   (int)(x) << (int)(y) << (char)(penColor) << (char)(fillColor) \
00348   );
00349 
00350 /**
00351 * A macro that sends a line
00352 * @param id A drawing id (Drawings::FieldDrawing or Drawings::ImageDrawing)
00353 * @param x1 The x coordinate of the starting point.
00354 * @param y1 The y coordinate of the starting point.
00355 * @param x2 The x coordinate of the end point.
00356 * @param y2 The y coordinate of the end point.
00357 * @param penWidth The width of the line
00358 * @param penStyle The pen style of the line (Drawings::PenStyle)
00359 * @param penColor The color of the line (Drawings::Color)
00360 */
00361 #define LINE(id, x1, y1, x2, y2, penWidth, penStyle, penColor) \
00362   INFO(send_##id##_drawing, idDebugDrawing2, bin, \
00363   (char)Drawings::line << \
00364   (char)Drawings::id << \
00365   (char)Drawings::getTypeOfDrawing(Drawings::id) << \
00366   (int)(x1) << (int)(y1) << (int)(x2) << (int)(y2) << (char)(penWidth) << (char)(penStyle) << (char)(penColor) \
00367   );
00368 
00369 
00370 /**
00371 * A macro that sends an arrow
00372 * @param id A drawing id (Drawings::FieldDrawing or Drawings::ImageDrawing)
00373 * @param x1 The x coordinate of the starting point.
00374 * @param y1 The y coordinate of the starting point.
00375 * @param x2 The x coordinate of the end point.
00376 * @param y2 The y coordinate of the end point.
00377 * @param penWidth The width of the line
00378 * @param penStyle The pen style of the line (Drawings::PenStyle)
00379 * @param penColor The color of the line (Drawings::Color)
00380 */
00381 #define ARROW(id, x1, y1, x2, y2, penWidth, penStyle, penColor) \
00382   INFO(send_##id##_drawing, idDebugDrawing2, bin, \
00383   (char)Drawings::arrow << \
00384   (char)Drawings::id << \
00385   (char)Drawings::getTypeOfDrawing(Drawings::id) << \
00386   (int)(x1) << (int)(y1) << (int)(x2) << (int)(y2) << (char)(penWidth) << (char)(penStyle) << (char)(penColor) \
00387   );
00388 
00389 
00390 /**
00391 * A macro that sends an arrow for a pose
00392 * @param id A drawing id (Drawings::FieldDrawing or Drawings::ImageDrawing)
00393 * @param p A Pose2D describing the arrow
00394 * @param color The color of the line arrow (Drawings::Color)
00395 */
00396 #define POSE_2D_SAMPLE(id, p, color) \
00397   Pose2D current = p; current += Pose2D(-100,0); \
00398   LINE(id, int(current.translation.x),int(current.translation.y), int(p.translation.x), int(p.translation.y), \
00399   1, Drawings::ps_solid, color); \
00400   current = p; current += Pose2D(-40,-40); \
00401   LINE(id, int(current.translation.x), int(current.translation.y), int(p.translation.x), int(p.translation.y), \
00402   1, Drawings::ps_solid, color); \
00403   current = p; current += Pose2D(-40,40); \
00404   LINE(id, int(current.translation.x),int(current.translation.y),int(p.translation.x), int(p.translation.y), \
00405   1, Drawings::ps_solid, color); \
00406 
00407 /** 
00408 * A macro that sends an octangle
00409 * @param id A drawing id (Drawings::FieldDrawing or Drawings::ImageDrawing)
00410 * @param x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8 The coordinates of the 8 octagon vertices
00411 * @param color The color of the octangle
00412 * @param fill A boolean indicating if the octangle is filled
00413 */
00414 #define OCTANGLE(id, x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,x6,y6,x7,y7,x8,y8, color, fill) \
00415   INFO(send_##id##_drawing, idDebugDrawing2, bin, \
00416   (char)Drawings::octangle << \
00417   (char)Drawings::id << \
00418   (char)Drawings::getTypeOfDrawing(Drawings::id) << \
00419   (int)(x1) << (int)(y1) << (int)(x2) << (int)(y2) << (int)(x3) << (int)(y3) << (int)(x4) << (int)(y4) << \
00420   (int)(x5) << (int)(y5) << (int)(x6) << (int)(y6) << (int)(x7) << (int)(y7) << (int)(x8) << (int)(y8) << \
00421   (char)ColorClasses::colorClassToDrawingsColor(color) << (char)fill \
00422   );
00423 
00424 /** 
00425 * A macro that sends an quadrangle
00426 * @param x1,y1,x2,y2,x3,y3,x4,y4 The coordinates of the 4 quadrangle vertices
00427 * @param id A drawing id (Drawings::FieldDrawing or Drawings::ImageDrawing)
00428 * @param penWidth The line width of the quadrangle
00429 * @param penStyle The line style, e.g. dotted
00430 * @param penColor The color of the quadrangle
00431 */
00432 #define QUADRANGLE(id, x1,y1,x2,y2,x3,y3,x4,y4, penWidth, penStyle, penColor) \
00433   LINE(id, x1, y1, x2, y2, penWidth, penStyle, penColor); \
00434   LINE(id, x2, y2, x3, y3, penWidth, penStyle, penColor); \
00435   LINE(id, x3, y3, x4, y4, penWidth, penStyle, penColor); \
00436   LINE(id, x4, y4, x1, y1, penWidth, penStyle, penColor); 
00437 
00438 /** 
00439 * A macro that sends an rectangle
00440 * @param x1,y1,x2,y2 The coordinates of 2 opposite corners
00441 * @param id A drawing id (Drawings::FieldDrawing or Drawings::ImageDrawing)
00442 * @param penWidth The line width of the rectangle
00443 * @param penStyle The line style, e.g. dotted
00444 * @param penColor The color of the quadrangle
00445 */
00446 #define RECTANGLE(id, x1,y1,x2,y2, penWidth, penStyle, penColor) \
00447   LINE(id, x1, y1, x1, y2, penWidth, penStyle, penColor); \
00448   LINE(id, x1, y2, x2, y2, penWidth, penStyle, penColor); \
00449   LINE(id, x2, y2, x2, y1, penWidth, penStyle, penColor); \
00450   LINE(id, x2, y1, x1, y1, penWidth, penStyle, penColor); 
00451 
00452 /** 
00453 * Complex drawings should be encapsuled by this macro.
00454 */
00455 #define COMPLEX_DRAWING(id,expression) \
00456   if (getDebugKeyTable().isActive(DebugKeyTable::send_##id##_drawing)) {\
00457   expression;\
00458   }
00459 
00460 /**
00461 * Indicates that all elements of the specified drawing are drawn.
00462 * @param id A drawing id (Drawings::FieldDrawing or Drawings::ImageDrawing)
00463 */
00464 #define DEBUG_DRAWING_FINISHED(id) \
00465   INFO(send_##id##_drawing, idDebugDrawingFinished, bin, (char)Drawings::id << (char)Drawings::getTypeOfDrawing(Drawings::id) );
00466 
00467 #endif //NODEBUGDRAWINGS
00468 
00469 
00470 
00471 
00472 
00473 
00474 
00475 
00476 
00477 
00478 
00479 #endif //__DebugDrawings_h_
00480 
00481 /*
00482 * Change log :
00483 * 
00484 * $Log: DebugDrawings.h,v $
00485 * Revision 1.4  2004/06/27 14:53:51  altmeyer
00486 * new GoaliePositionBenjamin and new debug key send_goaliePositionField
00487 *
00488 * Revision 1.3  2004/06/15 10:58:28  thomas
00489 * added edge-specialist, edges-percept, debug-drawings etc. (not yet called from image-processor)
00490 *
00491 * Revision 1.2  2004/06/14 20:12:10  jhoffman
00492 * - numerous changes and additions to headcontrol
00493 * - cameraInfo default constructor now creates ERS7 info
00494 * - debug drawing "headcontrolfield" added
00495 *
00496 * Revision 1.1.1.1  2004/05/22 17:36:03  cvsadm
00497 * created new repository GT2004_WM
00498 *
00499 * Revision 1.12  2004/04/27 19:39:37  roefer
00500 * Support for debug images added to simulator
00501 *
00502 * Revision 1.11  2004/04/08 15:33:08  wachter
00503 * GT04 checkin of Microsoft-Hellounds
00504 *
00505 * Revision 1.10  2004/03/21 19:07:49  roefer
00506 * More realistic camera images for ERS-7
00507 *
00508 * Revision 1.9  2004/02/12 14:29:44  juengel
00509 * Added drawing ball4.
00510 *
00511 * Revision 1.8  2004/02/06 10:16:23  juengel
00512 * percepts for image view are painted in different debug drawings now
00513 *
00514 * Revision 1.7  2004/01/24 18:35:03  wachter
00515 * Reactivated debug-drawings in SensorFusionTeamBallLocator
00516 *
00517 * Revision 1.6  2004/01/20 15:46:17  tim
00518 * Added drawing for potential field A* search
00519 *
00520 * Revision 1.5  2003/12/01 16:24:18  juengel
00521 * Added drawing ball3.
00522 *
00523 * Revision 1.4  2003/11/05 16:44:00  juengel
00524 * Added drawing imageProcessor_ball2
00525 *
00526 * Revision 1.3  2003/11/03 20:19:22  juengel
00527 * Added color class yellowOrange
00528 *
00529 * Revision 1.2  2003/10/29 13:31:34  juengel
00530 * added drawing imageProcessor_coloredSegments
00531 *
00532 * Revision 1.1  2003/10/07 10:13:22  cvsadm
00533 * Created GT2004 (M.J.)
00534 *
00535 * Revision 1.7  2003/09/30 17:42:01  juengel
00536 * changed names of drawings
00537 *
00538 * Revision 1.6  2003/09/01 15:18:21  juengel
00539 * Added drawings scanLines, calibration1, calibration2.
00540 *
00541 * Revision 1.5  2003/09/01 10:23:14  juengel
00542 * DebugDrawings clean-up 2
00543 * DebugImages clean-up
00544 * MessageIDs clean-up
00545 * Stopwatch clean-up
00546 *
00547 * Revision 1.4  2003/08/30 10:16:41  juengel
00548 * DebugDrawings clean-up 1
00549 *
00550 * Revision 1.3  2003/07/29 12:43:50  juengel
00551 * Changed order
00552 *
00553 * Revision 1.2  2003/07/03 10:50:17  juengel
00554 * Added Drawing kickAnglesRadar.
00555 *
00556 * Revision 1.1.1.1  2003/07/02 09:40:28  cvsadm
00557 * created new repository for the competitions in Padova from the 
00558 * tamara CVS (Tuesday 2:00 pm)
00559 *
00560 * removed unused solutions
00561 *
00562 * Revision 1.49  2003/06/24 11:42:22  jhoffman
00563 * empty define for ARROW-makro  for "debug no debugdrawings" added
00564 *
00565 * Revision 1.48  2003/06/24 10:10:16  jhoffman
00566 * added arrow so it can be sent
00567 *
00568 * Revision 1.47  2003/06/19 18:35:14  juengel
00569 * Added drawing kickAngles.
00570 *
00571 * Revision 1.46  2003/06/13 14:49:34  juengel
00572 * Added jointStateDrawing.
00573 *
00574 * Revision 1.45  2003/06/10 18:01:53  juengel
00575 * Added LARGE_DOT.
00576 *
00577 * Revision 1.44  2003/06/05 08:15:10  juengel
00578 * Added "corridors" drawing.
00579 *
00580 * Revision 1.43  2003/05/26 08:25:36  juengel
00581 * Added drawing obstaclesModelImage
00582 * COMPLEX_DRAWINGs are only drawn when requested under WIN_32
00583 *
00584 * Revision 1.42  2003/05/16 14:07:48  risler
00585 * added radar view obstacles drawing
00586 *
00587 * Revision 1.41  2003/05/09 16:21:58  engel
00588 * DebugKey changed for the GaussBellTeamBallLocator
00589 *
00590 * Revision 1.40  2003/05/05 11:56:29  dueffert
00591 * now using ifdef instead of if
00592 *
00593 * Revision 1.39  2003/05/01 23:33:56  roefer
00594 * Anchors for flag specialist added
00595 *
00596 * Revision 1.38  2003/04/30 09:17:08  kallnik
00597 * renamed some DebugKeys and defines
00598 *
00599 * Revision 1.37  2003/04/25 12:57:14  kallnik
00600 * new version of ContinuousBasicBehavior released
00601 *
00602 * Revision 1.36  2003/04/15 15:52:07  risler
00603 * DDD GO 2003 code integrated
00604 *
00605 * Revision 1.35  2003/04/09 15:51:57  kallnik
00606 * ContinuousBasicBehavior Debug Drawing   for   ContinuousBasicBehaviorTester
00607 *
00608 * Revision 1.35  2003/04/05 16:49:39  juengel
00609 * Added image drawing "specialPercept"
00610 *
00611 * Revision 1.34  2003/03/29 21:06:41  juengel
00612 * Added obstaclesAndPSDPercept.
00613 *
00614 * Revision 1.33  2003/03/28 15:07:41  juengel
00615 * Added preprocessor directive NO_DEBUG_DRAWINGS
00616 *
00617 * Revision 1.32  2003/03/28 14:13:58  loetzsch
00618 * added debug drawing areaOfResponsibility
00619 *
00620 * Revision 1.31  2003/03/25 10:56:40  juengel
00621 * DebugDrawings have to be requested in configuration "WIN_32" now.
00622 *
00623 * Revision 1.30  2003/03/24 11:09:10  schumann
00624 * added missing descriptor of StrategicalDatabaseMove drawing
00625 *
00626 * Revision 1.29  2003/03/21 12:22:21  thiel
00627 * added hexAreaPotentialfieldDrawing
00628 *
00629 * Revision 1.28  2003/03/20 14:06:51  roefer
00630 * Localization experiment and view for segmented image added
00631 *
00632 * Revision 1.27  2003/03/19 20:16:19  schumann
00633 * added strategical database drawing
00634 *
00635 * Revision 1.26  2003/03/19 16:41:27  jhoffman
00636 * fixed debug drawing error
00637 *
00638 * Revision 1.25  2003/03/19 15:38:50  jhoffman
00639 * changed drawing name
00640 *
00641 * Revision 1.24  2003/03/15 13:25:49  juengel
00642 * Added descriptions for several debug drawings and debug keys.
00643 *
00644 * Revision 1.23  2003/03/11 11:31:11  juengel
00645 * Added obstaclesModel
00646 *
00647 * Revision 1.22  2003/03/07 15:35:59  wachter
00648 * Added debug-drawings for SensorFusionBall and PlayerLocator.
00649 *
00650 * Revision 1.21  2003/03/05 14:07:10  roefer
00651 * LinesPerceptor2 is now LinesImageProcessor
00652 *
00653 * Revision 1.20  2003/03/05 10:35:35  jhoffman
00654 * added debugdrawing
00655 *
00656 * Revision 1.19  2003/02/27 12:56:35  juengel
00657 * Added some drawings.
00658 *
00659 * Revision 1.18  2003/02/19 15:01:23  roefer
00660 * LinesPerceptor2 added
00661 *
00662 * Revision 1.17  2003/02/08 18:40:06  juengel
00663 * added imageProcessorDrawing
00664 *
00665 * Revision 1.16  2003/01/15 13:47:29  roefer
00666 * Progress in LinesSelfLocator, new debug drawing
00667 *
00668 * Revision 1.15  2003/01/13 18:26:04  juengel
00669 * Added LineFollowerField drawing
00670 *
00671 * Revision 1.14  2002/12/18 16:49:30  dueffert
00672 * doxygen docu corrected
00673 *
00674 * Revision 1.13  2002/12/18 16:22:56  dueffert
00675 * doxygen docu corrected
00676 *
00677 * Revision 1.12  2002/12/17 20:58:38  roefer
00678 * COMPLEX_DRAWING changed
00679 *
00680 * Revision 1.11  2002/12/14 19:44:55  roefer
00681 * Lines drawing in image coordinates removed
00682 *
00683 * Revision 1.10  2002/12/01 17:35:05  juengel
00684 * Added QUADRANGLE(...)
00685 *
00686 * Revision 1.9  2002/11/28 20:42:47  risler
00687 * added walking drawing
00688 *
00689 * Revision 1.8  2002/11/20 15:46:27  juengel
00690 * PathPlanner added.
00691 *
00692 * Revision 1.7  2002/11/19 17:38:31  dueffert
00693 * doxygen bugs corrected
00694 *
00695 * Revision 1.6  2002/11/18 19:24:16  juengel
00696 * Line Follower added.
00697 *
00698 * Revision 1.5  2002/11/18 10:33:01  juengel
00699 * Comments added.
00700 *
00701 * Revision 1.4  2002/11/12 16:08:11  loetzsch
00702 * Added (char) and (int) casts to DebugDrawing Macros
00703 *
00704 * Revision 1.3  2002/11/12 10:49:02  juengel
00705 * New debug drawing macros - second step
00706 * -moved /Tools/Debugging/PaintMethods.h and . cpp
00707 *  to /Visualization/DrawingMethods.h and .cpp
00708 * -moved DebugDrawing.h and .cpp from /Tools/Debugging/
00709 *  to /Visualization
00710 *
00711 * Revision 1.2  2002/11/11 11:27:10  juengel
00712 * First Step: New debug drawing macros.
00713 *
00714 * Revision 1.1  2002/09/19 23:49:08  juengel
00715 * Changed debug image mechanisms.
00716 *
00717 */

Generated on Thu Sep 23 19:57:37 2004 for GT2004 by doxygen 1.3.6