Canorus  0.7
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
drawable.h
Go to the documentation of this file.
1 
8 #ifndef DRAWABLE_H_
9 #define DRAWABLE_H_
10 
11 #include <QRect>
12 #include <QColor>
13 
14 class QPainter;
15 
17  float z; // zoom level
18  int x; // painter x pos in pixels
19  int y; // painter y pos in pixels
20  int w; // canvas width in pixels
21  int h; // canvas height in pixels
22  QColor color; // pen color
23  double worldX; // x coordinate of the view
24  double worldY; // y coordinate of the view
25 };
26 
27 class CADrawable {
28 public:
32  };
33 
34  enum CADirection {
36  Top,
44  };
45 
46  CADrawable( double x, double y ); // x and y position of an element in absolute world units
47  virtual ~CADrawable() { }
48  virtual void draw(QPainter *p, const CADrawSettings s) = 0;
49  virtual CADrawable *clone();
50 
51  void drawHScaleHandles( QPainter *p, const CADrawSettings s );
52  void drawVScaleHandles( QPainter *p, const CADrawSettings s );
53 
55  inline double xPos() { return _xPos; }
56  inline double yPos() { return _yPos; }
57  inline double width() { return _width; }
58  inline double height() { return _height; }
59  inline double neededSpaceWidth() { return _neededSpaceWidth; }
60  inline double neededSpaceHeight() { return _neededSpaceHeight; }
61  inline double neededWidth() { return _width+_neededSpaceWidth; }
62  inline double neededHeight() { return _height+_neededSpaceHeight; }
63  inline double xCenter() { return _xPos + (_width)/2; }
64  inline double yCenter() { return _yPos + (_height)/2; }
65  inline const QRect bBox() { return QRect(_xPos, _yPos, _width, _height); }
66  inline bool isVisible() { return _visible; }
67  inline bool isSelectable() { return _selectable; }
68  inline bool isHScalable() { return _hScalable; }
69  inline bool isVScalable() { return _vScalable; }
70 
71  inline void setXPos(double xPos) { _xPos = xPos; }
72  inline void setYPos(double yPos) { _yPos = yPos; }
73  inline void setWidth(double width) { _width = width; }
74  inline void setHeight(double height) { _height = height; }
75  inline void setNeededSpaceWidth( double width ) { _neededSpaceWidth = width; }
77  inline void setVisible(bool v) { _visible = v; }
78  inline void setSelectable(bool s) { _selectable = s; }
79  inline void setHScalable(bool s) { _hScalable = s; }
80  inline void setVScalable(bool s) { _vScalable = s; }
81 
82 protected:
84 
85  CADrawableType _drawableType; // DrawableMusElement or DrawableContext.
86  double _xPos;
87  double _yPos;
88  double _width; // Element's width as it appears on the screen
89  double _height; // Element's height as it appears on the screen
90  double _neededSpaceWidth; // Minimum width the next element should be placed next to it by engraver
91  double _neededSpaceHeight; // Minimum height the next element should be placed next to it by engraver
92  bool _visible;
93  bool _selectable; // Can the element be clicked on and is then selected
94  bool _hScalable; // Can the element be streched horizontally
95  bool _vScalable; // Can the element be streched vertically
96 
97  static const int SCALE_HANDLES_SIZE; // Width and Height of the scale handles squares in pixels
98 };
99 
100 #endif /* DRAWABLE_H_ */
void setYPos(double yPos)
Definition: drawable.h:72
double yCenter()
Definition: drawable.h:64
void setDrawableType(CADrawableType t)
Definition: drawable.h:83
float z
Definition: drawable.h:17
CADrawableType
Definition: drawable.h:29
double worldX
Definition: drawable.h:23
void setHeight(double height)
Definition: drawable.h:74
double xCenter()
Definition: drawable.h:63
void drawVScaleHandles(QPainter *p, const CADrawSettings s)
Definition: drawable.cpp:36
double worldY
Definition: drawable.h:24
int w
Definition: drawable.h:20
int y
Definition: drawable.h:19
bool isHScalable()
Definition: drawable.h:68
Definition: drawable.h:35
bool _selectable
Definition: drawable.h:93
virtual CADrawable * clone()
Definition: drawable.cpp:23
int h
Definition: drawable.h:21
CADrawableType _drawableType
Definition: drawable.h:83
Definition: drawable.h:39
bool _hScalable
Definition: drawable.h:94
void setSelectable(bool s)
Definition: drawable.h:78
void setNeededSpaceHeight(double height)
Definition: drawable.h:76
QColor color
Definition: drawable.h:22
Definition: drawable.h:16
double neededSpaceWidth()
Definition: drawable.h:59
double neededHeight()
Definition: drawable.h:62
static const int SCALE_HANDLES_SIZE
Definition: drawable.h:97
Definition: drawable.h:40
const QRect bBox()
Definition: drawable.h:65
Definition: drawable.h:36
Definition: drawable.h:37
CADrawable(double x, double y)
Definition: drawable.cpp:16
double _height
Definition: drawable.h:89
Definition: drawable.h:38
bool isSelectable()
Definition: drawable.h:67
Definition: drawable.h:42
double xPos()
Definition: drawable.h:55
virtual void draw(QPainter *p, const CADrawSettings s)=0
void setWidth(double width)
Definition: drawable.h:73
Definition: drawable.h:30
CADrawableType drawableType()
Definition: drawable.h:54
double _width
Definition: drawable.h:88
Definition: drawable.h:43
void setVisible(bool v)
Definition: drawable.h:77
bool isVScalable()
Definition: drawable.h:69
Definition: drawable.h:31
bool _vScalable
Definition: drawable.h:95
double width()
Definition: drawable.h:57
double _neededSpaceHeight
Definition: drawable.h:91
bool isVisible()
Definition: drawable.h:66
double neededSpaceHeight()
Definition: drawable.h:60
double height()
Definition: drawable.h:58
void setXPos(double xPos)
Definition: drawable.h:71
void setNeededSpaceWidth(double width)
Definition: drawable.h:75
void drawHScaleHandles(QPainter *p, const CADrawSettings s)
Definition: drawable.cpp:28
void setHScalable(bool s)
Definition: drawable.h:79
bool _visible
Definition: drawable.h:92
Definition: drawable.h:41
int x
Definition: drawable.h:18
double _yPos
Definition: drawable.h:87
void setVScalable(bool s)
Definition: drawable.h:80
Definition: drawable.h:27
double _xPos
Definition: drawable.h:86
double neededWidth()
Definition: drawable.h:61
virtual ~CADrawable()
Definition: drawable.h:47
CADirection
Definition: drawable.h:34
double yPos()
Definition: drawable.h:56
double _neededSpaceWidth
Definition: drawable.h:90