00001 #ifndef TF_CONTROL_POINT_H
00002 #define TF_CONTROL_POINT_H
00003
00004 #include "Colours.h"
00005 #include "BasicObjects.h"
00006
00014 class TFControlPoint
00015 {
00016 public:
00017 TFControlPoint(float x, float y, const Lab_Colour& colour);
00018
00019 bool operator == (const TFControlPoint& other);
00020 bool operator < (const TFControlPoint& other);
00021
00022 void setPosition(float x, float y);
00023 void setColour(float l, float a, float b);
00024
00025 bool isBeingDragged();
00026 void setBeingDragged(bool beingDragged);
00027 bool isSelected();
00028 void setSelected(bool selected);
00029 bool isMarkedForDeletion();
00030 void setMarkedForDeletion(bool deletePoint);
00031
00032 Lab_Colour& getColourLab();
00033 void drawControlPoint();
00034
00035 void drawControlPointDragged( float square, RGBA_Colour colourRGBA, float radius );
00036 void drawControlPointNormal( float square, RGBA_Colour colourRGBA, float radius );
00037 void drawControlPointBackGround( float square, bool drawVersionDragged = false);
00038 void drawControlPointFrame(float squares, bool drawVersionDragged = false, bool drawVersionDeleting = false);
00039 void drawControlPointCenterPoint( RGBA_Colour &colourRGBA, float radius, bool drawVersionDragged = false );
00040
00041 void dragMovement(int mouseX, int mouseY);
00042
00043 void updateBeingDraggedIntoDeletion( int mouseX, int mouseY );
00044 void updateDragDifference( int mouseX, int mouseY );
00045 void draggingEnded();
00046
00047 Position m_pos;
00048 float dragDifferenceX;
00049 float dragDifferenceY;
00050 Lab_Colour m_colour;
00051
00052 static const int DrawSize = 10;
00053 static bool g_bMouseInsideBottomWindow;
00054
00055 static int MAXIMUM_CONTROLPOINT_OUTSIDE_DRAG_DIST_SQUARED;
00056
00057 private:
00058 bool selected;
00059 bool beingDragged;
00060 bool markedForDeletion;
00061 };
00062
00063 #endif