Computer Assisted Medical Intervention Tool Kit  version 5.2
canvas_variant/qtcanvas.h
Go to the documentation of this file.
1 /****************************************************************************
2 **
3 ** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 **
6 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 **
8 ** This file is part of a Qt Solutions component.
9 **
10 ** You may use this file under the terms of the BSD license as follows:
11 **
12 ** "Redistribution and use in source and binary forms, with or without
13 ** modification, are permitted provided that the following conditions are
14 ** met:
15 ** * Redistributions of source code must retain the above copyright
16 ** notice, this list of conditions and the following disclaimer.
17 ** * Redistributions in binary form must reproduce the above copyright
18 ** notice, this list of conditions and the following disclaimer in
19 ** the documentation and/or other materials provided with the
20 ** distribution.
21 ** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
22 ** the names of its contributors may be used to endorse or promote
23 ** products derived from this software without specific prior written
24 ** permission.
25 **
26 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
27 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
28 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
29 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
30 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
31 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
32 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
33 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
34 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
35 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
36 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
37 **
38 ****************************************************************************/
39 
40 #ifndef QTCANVAS_H
41 #define QTCANVAS_H
42 
43 #include <QtGui/qpixmap.h>
44 #include <QtGui/qbrush.h>
45 #include <QtGui/qpen.h>
46 #include <QtGui/qpolygon.h>
47 #include <QtGui/qscrollarea.h>
48 
49 class QtCanvasSprite;
51 class QtCanvasRectangle;
52 class QtCanvasPolygon;
53 class QtCanvasEllipse;
54 class QtCanvasText;
55 class QtCanvasLine;
56 class QtCanvasChunk;
57 class QtCanvas;
58 class QtCanvasItem;
59 class QtCanvasView;
60 class QtCanvasPixmap;
61 
63 
64 
65 class QtCanvasItemExtra;
66 
67 class QtCanvasItem {
68 public:
70  virtual ~QtCanvasItem();
71 
72  double x() const {
73  return myx;
74  }
75  double y() const {
76  return myy;
77  }
78  double z() const {
79  return myz; // (depth)
80  }
81 
82  virtual void moveBy(double dx, double dy);
83  void move(double x, double y);
84  void setX(double a) {
85  move(a, y());
86  }
87  void setY(double a) {
88  move(x(), a);
89  }
90  void setZ(double a) {
91  myz = a;
92  changeChunks();
93  }
94 
95  bool animated() const;
96  virtual void setAnimated(bool y);
97  virtual void setVelocity(double vx, double vy);
98  void setXVelocity(double vx) {
99  setVelocity(vx, yVelocity());
100  }
101  void setYVelocity(double vy) {
102  setVelocity(xVelocity(), vy);
103  }
104  double xVelocity() const;
105  double yVelocity() const;
106  virtual void advance(int stage);
107 
108  virtual bool collidesWith(const QtCanvasItem*) const = 0;
109 
110  QtCanvasItemList collisions(bool exact /* NO DEFAULT */) const;
111 
112  virtual void setCanvas(QtCanvas*);
113 
114  virtual void draw(QPainter&) = 0;
115 
116  void show();
117  void hide();
118 
119  virtual void setVisible(bool yes);
120  bool isVisible() const {
121  return (bool)vis;
122  }
123  virtual void setSelected(bool yes);
124  bool isSelected() const {
125  return (bool)sel;
126  }
127  virtual void setEnabled(bool yes);
128  bool isEnabled() const {
129  return (bool)ena;
130  }
131  virtual void setActive(bool yes);
132  bool isActive() const {
133  return (bool)act;
134  }
135  bool visible() const {
136  return (bool)vis;
137  }
138  bool selected() const {
139  return (bool)sel;
140  }
141  bool enabled() const {
142  return (bool)ena;
143  }
144  bool active() const {
145  return (bool)act;
146  }
147 
148  enum RttiValues {
149  Rtti_Item = 0,
150  Rtti_Sprite = 1,
151  Rtti_PolygonalItem = 2,
152  Rtti_Text = 3,
153  Rtti_Polygon = 4,
154  Rtti_Rectangle = 5,
155  Rtti_Ellipse = 6,
156  Rtti_Line = 7,
157  Rtti_Spline = 8
158  };
159 
160  virtual int rtti() const;
161  static int RTTI;
162 
163  virtual QRect boundingRect() const = 0;
164  virtual QRect boundingRectAdvanced() const;
165 
166  QtCanvas* canvas() const {
167  return cnv;
168  }
169 
170 protected:
171  void update() {
172  changeChunks();
173  }
174 
175 private:
176  // For friendly subclasses...
177 
178  friend class QtCanvasPolygonalItem;
179  friend class QtCanvasSprite;
180  friend class QtCanvasRectangle;
181  friend class QtCanvasPolygon;
182  friend class QtCanvasEllipse;
183  friend class QtCanvasText;
184  friend class QtCanvasLine;
185 
186  virtual QPolygon chunks() const;
187  virtual void addToChunks();
188  virtual void removeFromChunks();
189  virtual void changeChunks();
190  virtual bool collidesWith(const QtCanvasSprite*,
191  const QtCanvasPolygonalItem*,
192  const QtCanvasRectangle*,
193  const QtCanvasEllipse*,
194  const QtCanvasText*) const = 0;
195  // End of friend stuff
196 
197  QtCanvas* cnv;
198  static QtCanvas* current_canvas;
199  double myx, myy, myz;
200  QtCanvasItemExtra* ext;
201  QtCanvasItemExtra& extra();
202  uint ani: 1;
203  uint vis: 1;
204  uint val: 1;
205  uint sel: 1;
206  uint ena: 1;
207  uint act: 1;
208 };
209 
210 
211 class QtCanvasData;
212 
213 class QtCanvas : public QObject {
214  Q_OBJECT
215 public:
216  QtCanvas(QObject* parent = 0);
217  QtCanvas(int w, int h);
218  QtCanvas(QPixmap p, int h, int v, int tilewidth, int tileheight);
219 
220  virtual ~QtCanvas();
221 
222  virtual void setTiles(QPixmap tiles, int h, int v,
223  int tilewidth, int tileheight);
224  virtual void setBackgroundPixmap(const QPixmap& p);
225  QPixmap backgroundPixmap() const;
226 
227  virtual void setBackgroundColor(const QColor& c);
228  QColor backgroundColor() const;
229 
230  virtual void setTile(int x, int y, int tilenum);
231  int tile(int x, int y) const {
232  return grid[x + y * htiles];
233  }
234 
235  int tilesHorizontally() const {
236  return htiles;
237  }
238  int tilesVertically() const {
239  return vtiles;
240  }
241 
242  int tileWidth() const {
243  return tilew;
244  }
245  int tileHeight() const {
246  return tileh;
247  }
248 
249  virtual void resize(int width, int height);
250  int width() const {
251  return awidth;
252  }
253  int height() const {
254  return aheight;
255  }
256  QSize size() const {
257  return QSize(awidth, aheight);
258  }
259  QRect rect() const {
260  return QRect(0, 0, awidth, aheight);
261  }
262  bool onCanvas(int x, int y) const {
263  return x >= 0 && y >= 0 && x < awidth && y < aheight;
264  }
265  bool onCanvas(const QPoint& p) const {
266  return onCanvas(p.x(), p.y());
267  }
268  bool validChunk(int x, int y) const {
269  return x >= 0 && y >= 0 && x < chwidth && y < chheight;
270  }
271  bool validChunk(const QPoint& p) const {
272  return validChunk(p.x(), p.y());
273  }
274 
275  int chunkSize() const {
276  return chunksize;
277  }
278  virtual void retune(int chunksize, int maxclusters = 100);
279 
280  bool sameChunk(int x1, int y1, int x2, int y2) const {
281  return x1 / chunksize == x2 / chunksize && y1 / chunksize == y2 / chunksize;
282  }
283  virtual void setChangedChunk(int i, int j);
284  virtual void setChangedChunkContaining(int x, int y);
285  virtual void setAllChanged();
286  virtual void setChanged(const QRect& area);
287  virtual void setUnchanged(const QRect& area);
288 
289  // These call setChangedChunk.
290  void addItemToChunk(QtCanvasItem*, int i, int j);
291  void removeItemFromChunk(QtCanvasItem*, int i, int j);
294 
296  QtCanvasItemList collisions(const QPoint&) const;
297  QtCanvasItemList collisions(const QRect&) const;
298  QtCanvasItemList collisions(const QPolygon& pa, const QtCanvasItem* item,
299  bool exact) const;
300 
301  void drawArea(const QRect&, QPainter* p, bool double_buffer = false);
302 
303  // These are for QtCanvasView to call
304  virtual void addView(QtCanvasView*);
305  virtual void removeView(QtCanvasView*);
306 
307  void drawCanvasArea(const QRect&, QPainter* p = 0, bool double_buffer = true);
308  void drawViewArea(QtCanvasView* view, QPainter* p, const QRect& r, bool dbuf);
309 
310  // These are for QtCanvasItem to call
311  virtual void addItem(QtCanvasItem*);
312  virtual void addAnimation(QtCanvasItem*);
313  virtual void removeItem(QtCanvasItem*);
315 
316  virtual void setAdvancePeriod(int ms);
317  virtual void setUpdatePeriod(int ms);
318 
319 signals:
320  void resized();
321 
322 public slots:
323  virtual void advance();
324  virtual void update();
325 
326 protected:
327  virtual void drawBackground(QPainter&, const QRect& area);
328  virtual void drawForeground(QPainter&, const QRect& area);
329 
330 private:
331  void init(int w, int h, int chunksze = 16, int maxclust = 100);
332 
333  QtCanvasChunk& chunk(int i, int j) const;
334  QtCanvasChunk& chunkContaining(int x, int y) const;
335 
336  QRect changeBounds();
337 
338  int awidth, aheight;
339  int chunksize;
340  int maxclusters;
341  int chwidth, chheight;
342  QtCanvasChunk* chunks;
343 
344  QtCanvasData* d;
345 
346  void initTiles(QPixmap p, int h, int v, int tilewidth, int tileheight);
347  ushort* grid;
348  ushort htiles;
349  ushort vtiles;
350  ushort tilew;
351  ushort tileh;
352  bool oneone;
353  QPixmap pm;
354  QTimer* update_timer;
355  QColor bgcolor;
356  bool debug_redraw_areas;
357 
358  friend void qt_unview(QtCanvas* c);
359 
360  Q_DISABLE_COPY(QtCanvas)
361 };
362 
363 class QtCanvasViewData;
364 
365 class QtCanvasView : public QScrollArea {
366  Q_OBJECT
368 public:
369 
370  QtCanvasView(QWidget* parent = 0);
371  QtCanvasView(QtCanvas* viewing, QWidget* parent = 0);
373 
374  QtCanvas* canvas() const {
375  return viewing;
376  }
377  void setCanvas(QtCanvas* v);
378 
379  const QMatrix& worldMatrix() const;
380  const QMatrix& inverseWorldMatrix() const;
381  bool setWorldMatrix(const QMatrix&);
382 
383  virtual QSize sizeHint() const;
384 
385  bool highQualityRendering() const;
386 public slots:
387  void setHighQualityRendering(bool enable);
388 
389 protected:
390  friend class QtCanvasWidget;
391  virtual void drawContents(QPainter* p, int cx, int cy, int cw, int ch);
392 
393  virtual void contentsMousePressEvent(QMouseEvent*);
394  virtual void contentsMouseReleaseEvent(QMouseEvent*);
395  virtual void contentsMouseDoubleClickEvent(QMouseEvent*);
396  virtual void contentsMouseMoveEvent(QMouseEvent*);
397  virtual void contentsDragEnterEvent(QDragEnterEvent*);
398  virtual void contentsDragMoveEvent(QDragMoveEvent*);
399  virtual void contentsDragLeaveEvent(QDragLeaveEvent*);
400  virtual void contentsDropEvent(QDropEvent*);
401  virtual void contentsWheelEvent(QWheelEvent*);
402  virtual void contentsContextMenuEvent(QContextMenuEvent*);
403 
404 private:
405  friend class QtCanvas;
406  void drawContents(QPainter*);
407  QtCanvas* viewing;
408  QtCanvasViewData* d;
409 
410 private slots:
411  void updateContentsSize();
412 
413 private:
414  Q_DISABLE_COPY(QtCanvasView)
415 };
416 
417 
418 class QtCanvasPixmap : public QPixmap {
419 public:
420 #ifndef QT_NO_IMAGEIO
421  QtCanvasPixmap(const QString& datafilename);
422 #endif
423  QtCanvasPixmap(const QImage& image);
424  QtCanvasPixmap(const QPixmap&, const QPoint& hotspot);
426 
427  int offsetX() const {
428  return hotx;
429  }
430  int offsetY() const {
431  return hoty;
432  }
433  void setOffset(int x, int y) {
434  hotx = x;
435  hoty = y;
436  }
437 
438 private:
439  Q_DISABLE_COPY(QtCanvasPixmap)
440 
441  void init(const QImage&);
442  void init(const QPixmap& pixmap, int hx, int hy);
443 
444  friend class QtCanvasSprite;
445  friend class QtCanvasPixmapArray;
446  friend bool qt_testCollision(const QtCanvasSprite* s1, const QtCanvasSprite* s2);
447 
448  int hotx, hoty;
449 
450  QImage* collision_mask;
451 };
452 
453 
454 class QtCanvasPixmapArray {
455 public:
457 #ifndef QT_NO_IMAGEIO
458  QtCanvasPixmapArray(const QString& datafilenamepattern, int framecount = 0);
459 #endif
460  QtCanvasPixmapArray(const QList<QPixmap>& pixmaps, const QPolygon& hotspots = QPolygon());
462 
463 #ifndef QT_NO_IMAGEIO
464  bool readPixmaps(const QString& datafilenamepattern, int framecount = 0);
465  bool readCollisionMasks(const QString& filenamepattern);
466 #endif
467 
468  // deprecated
469  bool operator!(); // Failure check.
470  bool isValid() const;
471 
472  QtCanvasPixmap* image(int i) const {
473  return img ? img[i] : 0;
474  }
475  void setImage(int i, QtCanvasPixmap* p);
476  uint count() const {
477  return (uint)framecount;
478  }
479 
480 private:
481  Q_DISABLE_COPY(QtCanvasPixmapArray)
482 
483 #ifndef QT_NO_IMAGEIO
484  bool readPixmaps(const QString& datafilenamepattern, int framecount, bool maskonly);
485 #endif
486 
487  void reset();
488  int framecount;
489  QtCanvasPixmap** img;
490 };
491 
492 
493 class QtCanvasSprite : public QtCanvasItem {
494 public:
496 
498 
499  virtual ~QtCanvasSprite();
500 
501  void move(double x, double y);
502  virtual void move(double x, double y, int frame);
503  void setFrame(int);
505  virtual void setFrameAnimation(FrameAnimationType = Cycle, int step = 1, int state = 0);
506  int frame() const {
507  return frm;
508  }
509  int frameCount() const {
510  return images->count();
511  }
512 
513  int rtti() const;
514  static int RTTI;
515 
516  bool collidesWith(const QtCanvasItem*) const;
517 
518  QRect boundingRect() const;
519 
520  // is there a reason for these to be protected? Lars
521 //protected:
522 
523  int width() const;
524  int height() const;
525 
526  int leftEdge() const;
527  int topEdge() const;
528  int rightEdge() const;
529  int bottomEdge() const;
530 
531  int leftEdge(int nx) const;
532  int topEdge(int ny) const;
533  int rightEdge(int nx) const;
534  int bottomEdge(int ny) const;
536  return images->image(frm);
537  }
538  virtual QtCanvasPixmap* imageAdvanced() const;
539  QtCanvasPixmap* image(int f) const {
540  return images->image(f);
541  }
542  virtual void advance(int stage);
543 
544 public:
545  void draw(QPainter& painter);
546 
547 private:
548  Q_DISABLE_COPY(QtCanvasSprite)
549 
550  void addToChunks();
551  void removeFromChunks();
552  void changeChunks();
553 
554  int frm;
555  ushort anim_val;
556  uint anim_state: 2;
557  uint anim_type: 14;
558  bool collidesWith(const QtCanvasSprite*,
559  const QtCanvasPolygonalItem*,
560  const QtCanvasRectangle*,
561  const QtCanvasEllipse*,
562  const QtCanvasText*) const;
563 
564  friend bool qt_testCollision(const QtCanvasSprite* s1,
565  const QtCanvasSprite* s2);
566 
567  QtCanvasPixmapArray* images;
568 };
569 
570 class QPolygonalProcessor;
571 
572 class QtCanvasPolygonalItem : public QtCanvasItem {
573 public:
576 
577  bool collidesWith(const QtCanvasItem*) const;
578 
579  virtual void setPen(QPen p);
580  virtual void setBrush(QBrush b);
581 
582  QPen pen() const {
583  return pn;
584  }
585  QBrush brush() const {
586  return br;
587  }
588 
589  virtual QPolygon areaPoints() const = 0;
590  virtual QPolygon areaPointsAdvanced() const;
591  QRect boundingRect() const;
592 
593  int rtti() const;
594  static int RTTI;
595 
596 protected:
597  void draw(QPainter&);
598  virtual void drawShape(QPainter&) = 0;
599 
600  bool winding() const;
601  void setWinding(bool);
602 
603  void invalidate();
604  bool isValid() const {
605  return (bool)val;
606  }
607 
608 private:
609  void scanPolygon(const QPolygon& pa, int winding,
610  QPolygonalProcessor& process) const;
611  QPolygon chunks() const;
612 
613  bool collidesWith(const QtCanvasSprite*,
614  const QtCanvasPolygonalItem*,
615  const QtCanvasRectangle*,
616  const QtCanvasEllipse*,
617  const QtCanvasText*) const;
618 
619  QBrush br;
620  QPen pn;
621  uint wind: 1;
622 };
623 
624 
626 public:
629  QtCanvasRectangle(int x, int y, int width, int height, QtCanvas* canvas);
630 
632 
633  int width() const;
634  int height() const;
635  void setSize(int w, int h);
636  QSize size() const {
637  return QSize(w, h);
638  }
639  QPolygon areaPoints() const;
640  QRect rect() const {
641  return QRect(int(x()), int(y()), w, h);
642  }
643 
644  bool collidesWith(const QtCanvasItem*) const;
645 
646  int rtti() const;
647  static int RTTI;
648 
649 protected:
650  void drawShape(QPainter&);
651  QPolygon chunks() const;
652 
653 private:
654  bool collidesWith(const QtCanvasSprite*,
655  const QtCanvasPolygonalItem*,
656  const QtCanvasRectangle*,
657  const QtCanvasEllipse*,
658  const QtCanvasText*) const;
659 
660  int w, h;
661 };
662 
663 
664 class QtCanvasPolygon : public QtCanvasPolygonalItem {
665 public:
668  void setPoints(QPolygon);
669  QPolygon points() const;
670  void moveBy(double dx, double dy);
671 
672  QPolygon areaPoints() const;
673 
674  int rtti() const;
675  static int RTTI;
676 
677 protected:
678  void drawShape(QPainter&);
679  QPolygon poly;
680 };
681 
682 
683 class QtCanvasSpline : public QtCanvasPolygon {
684 public:
687 
688  void setControlPoints(QPolygon, bool closed = true);
689  QPolygon controlPoints() const;
690  bool closed() const;
691 
692  int rtti() const;
693  static int RTTI;
694 
695 private:
696  void recalcPoly();
697  QPolygon bez;
698  bool cl;
699 };
700 
701 
702 class QtCanvasLine : public QtCanvasPolygonalItem {
703 public:
706  void setPoints(int x1, int y1, int x2, int y2);
707 
708  QPoint startPoint() const {
709  return QPoint(x1, y1);
710  }
711  QPoint endPoint() const {
712  return QPoint(x2, y2);
713  }
714 
715  int rtti() const;
716  static int RTTI;
717 
718  void setPen(QPen p);
719  void moveBy(double dx, double dy);
720 
721 protected:
722  void drawShape(QPainter&);
723  QPolygon areaPoints() const;
724 
725 private:
726  int x1, y1, x2, y2;
727 };
728 
729 
730 class QtCanvasEllipse : public QtCanvasPolygonalItem {
731 
732 public:
735  QtCanvasEllipse(int width, int height, int startangle, int angle,
736  QtCanvas* canvas);
737 
739 
740  int width() const;
741  int height() const;
742  void setSize(int w, int h);
743  void setAngles(int start, int length);
744  int angleStart() const {
745  return a1;
746  }
747  int angleLength() const {
748  return a2;
749  }
750  QPolygon areaPoints() const;
751 
752  bool collidesWith(const QtCanvasItem*) const;
753 
754  int rtti() const;
755  static int RTTI;
756 
757 protected:
758  void drawShape(QPainter&);
759 
760 private:
761  bool collidesWith(const QtCanvasSprite*,
762  const QtCanvasPolygonalItem*,
763  const QtCanvasRectangle*,
764  const QtCanvasEllipse*,
765  const QtCanvasText*) const;
766  int w, h;
767  int a1, a2;
768 };
769 
770 
771 class QtCanvasTextExtra;
772 
773 class QtCanvasText : public QtCanvasItem {
774 public:
776  QtCanvasText(const QString&, QtCanvas* canvas);
777  QtCanvasText(const QString&, QFont, QtCanvas* canvas);
778 
779  virtual ~QtCanvasText();
780 
781  void setText(const QString&);
782  void setFont(const QFont&);
783  void setColor(const QColor&);
784  QString text() const;
785  QFont font() const;
786  QColor color() const;
787 
788  void moveBy(double dx, double dy);
789 
790  int textFlags() const {
791  return flags;
792  }
793  void setTextFlags(int);
794 
795  QRect boundingRect() const;
796 
797  bool collidesWith(const QtCanvasItem*) const;
798 
799  int rtti() const;
800  static int RTTI;
801 
802 protected:
803  virtual void draw(QPainter&);
804 
805 private:
806  Q_DISABLE_COPY(QtCanvasText)
807 
808  void addToChunks();
809  void removeFromChunks();
810  void changeChunks();
811 
812  void setRect();
813  QRect brect;
814  QString txt;
815  int flags;
816  QFont fnt;
817  QColor col;
818  QtCanvasTextExtra* extra;
819 
820  bool collidesWith(const QtCanvasSprite*,
821  const QtCanvasPolygonalItem*,
822  const QtCanvasRectangle*,
823  const QtCanvasEllipse*,
824  const QtCanvasText*) const;
825 };
826 
827 #endif // QTCANVAS_H
#define a
QList< QtCanvasItem * > QtCanvasItemList
Definition: canvas_variant/qtcanvas.h:60
Definition: canvas_typed/qtcanvas.cpp:3477
Definition: canvas_typed/qtcanvas.cpp:284
Definition: canvas_typed/qtcanvas.cpp:56
Definition: canvas_typed/qtcanvas.h:730
static int RTTI
Definition: canvas_typed/qtcanvas.h:755
void setSize(int w, int h)
int angleLength() const
Definition: canvas_variant/qtcanvas.h:747
void setAngles(int start, int length)
QtCanvasEllipse(int width, int height, QtCanvas *canvas)
bool collidesWith(const QtCanvasItem *) const
QPolygon areaPoints() const
QtCanvasEllipse(QtCanvas *canvas)
QtCanvasEllipse(int width, int height, int startangle, int angle, QtCanvas *canvas)
int rtti() const
int angleStart() const
Definition: canvas_variant/qtcanvas.h:744
int height() const
Definition: canvas_typed/qtcanvas.cpp:4269
int width() const
Definition: canvas_typed/qtcanvas.cpp:4262
void drawShape(QPainter &)
Definition: canvas_typed/qtcanvas.cpp:1489
Definition: canvas_typed/qtcanvas.h:67
virtual bool collidesWith(const QtCanvasItem *) const =0
bool isEnabled() const
Definition: canvas_variant/qtcanvas.h:128
bool animated() const
void move(double x, double y)
virtual void setEnabled(bool yes)
virtual QRect boundingRectAdvanced() const
void setX(double a)
Definition: canvas_variant/qtcanvas.h:84
virtual void advance(int stage)
void setY(double a)
Definition: canvas_variant/qtcanvas.h:87
double z() const
Definition: canvas_variant/qtcanvas.h:78
virtual QRect boundingRect() const =0
virtual void setActive(bool yes)
QtCanvasItem(QtCanvas *canvas)
QtCanvasItemList collisions(bool exact) const
bool active() const
Definition: canvas_variant/qtcanvas.h:144
bool selected() const
Definition: canvas_variant/qtcanvas.h:138
double yVelocity() const
Definition: canvas_typed/qtcanvas.cpp:1758
virtual ~QtCanvasItem()
void setXVelocity(double vx)
Definition: canvas_variant/qtcanvas.h:98
void update()
Definition: canvas_variant/qtcanvas.h:171
virtual void moveBy(double dx, double dy)
virtual int rtti() const
virtual void setVelocity(double vx, double vy)
double xVelocity() const
Definition: canvas_typed/qtcanvas.cpp:1751
bool visible() const
Definition: canvas_variant/qtcanvas.h:135
double y() const
Definition: canvas_variant/qtcanvas.h:75
bool isVisible() const
Definition: canvas_variant/qtcanvas.h:120
bool isSelected() const
Definition: canvas_variant/qtcanvas.h:124
QtCanvas * canvas() const
Definition: canvas_typed/qtcanvas.h:166
void setZ(double a)
Definition: canvas_variant/qtcanvas.h:90
virtual void setAnimated(bool y)
virtual void setVisible(bool yes)
static int RTTI
Definition: canvas_typed/qtcanvas.h:161
RttiValues
Definition: canvas_typed/qtcanvas.h:148
@ Rtti_Spline
Definition: canvas_typed/qtcanvas.h:157
@ Rtti_PolygonalItem
Definition: canvas_typed/qtcanvas.h:151
@ Rtti_Item
Definition: canvas_typed/qtcanvas.h:149
@ Rtti_Ellipse
Definition: canvas_typed/qtcanvas.h:155
@ Rtti_Rectangle
Definition: canvas_typed/qtcanvas.h:154
@ Rtti_Polygon
Definition: canvas_typed/qtcanvas.h:153
@ Rtti_Text
Definition: canvas_typed/qtcanvas.h:152
@ Rtti_Line
Definition: canvas_typed/qtcanvas.h:156
@ Rtti_Sprite
Definition: canvas_typed/qtcanvas.h:150
double x() const
Definition: canvas_variant/qtcanvas.h:72
virtual void setVelocity(double vx, double vy)
Definition: canvas_typed/qtcanvas.cpp:1738
void setYVelocity(double vy)
Definition: canvas_variant/qtcanvas.h:101
virtual void draw(QPainter &)=0
bool isActive() const
Definition: canvas_variant/qtcanvas.h:132
virtual void setCanvas(QtCanvas *)
virtual void setSelected(bool yes)
bool enabled() const
Definition: canvas_variant/qtcanvas.h:141
Definition: canvas_typed/qtcanvas.h:702
static int RTTI
Definition: canvas_typed/qtcanvas.h:716
QtCanvasLine(QtCanvas *canvas)
QPolygon areaPoints() const
QPoint endPoint() const
Definition: canvas_variant/qtcanvas.h:711
void drawShape(QPainter &)
void moveBy(double dx, double dy)
void setPen(QPen p)
int rtti() const
QPoint startPoint() const
Definition: canvas_variant/qtcanvas.h:708
void setPoints(int x1, int y1, int x2, int y2)
Definition: canvas_typed/qtcanvas.h:454
bool isValid() const
bool readPixmaps(const QString &datafilenamepattern, int framecount=0)
QtCanvasPixmapArray(const QList< QPixmap > &pixmaps, const QPolygon &hotspots=QPolygon())
QtCanvasPixmap * image(int i) const
Definition: canvas_variant/qtcanvas.h:472
void setImage(int i, QtCanvasPixmap *p)
bool readCollisionMasks(const QString &filenamepattern)
uint count() const
Definition: canvas_variant/qtcanvas.h:476
QtCanvasPixmapArray(const QString &datafilenamepattern, int framecount=0)
Definition: canvas_typed/qtcanvas.h:418
QtCanvasPixmap(const QString &datafilename)
QtCanvasPixmap(const QImage &image)
int offsetY() const
Definition: canvas_variant/qtcanvas.h:430
void setOffset(int x, int y)
Definition: canvas_variant/qtcanvas.h:433
int offsetX() const
Definition: canvas_variant/qtcanvas.h:427
friend bool qt_testCollision(const QtCanvasSprite *s1, const QtCanvasSprite *s2)
Definition: canvas_typed/qtcanvas.cpp:1950
QtCanvasPixmap(const QPixmap &, const QPoint &hotspot)
Definition: canvas_typed/qtcanvas.h:664
QtCanvasPolygon(QtCanvas *canvas)
void drawShape(QPainter &)
void setPoints(QPolygon)
int rtti() const
void moveBy(double dx, double dy)
QPolygon points() const
QPolygon areaPoints() const
static int RTTI
Definition: canvas_typed/qtcanvas.h:675
QPolygon poly
Definition: canvas_typed/qtcanvas.h:679
Definition: canvas_typed/qtcanvas.h:572
virtual void setPen(QPen p)
static int RTTI
Definition: canvas_typed/qtcanvas.h:594
QBrush brush() const
Definition: canvas_variant/qtcanvas.h:585
virtual QPolygon areaPoints() const =0
QPen pen() const
Definition: canvas_variant/qtcanvas.h:582
QtCanvasPolygonalItem(QtCanvas *canvas)
QRect boundingRect() const
virtual void drawShape(QPainter &)=0
bool isValid() const
Definition: canvas_variant/qtcanvas.h:604
virtual void setBrush(QBrush b)
virtual ~QtCanvasPolygonalItem()
bool winding() const
virtual QPolygon areaPointsAdvanced() const
void draw(QPainter &)
bool collidesWith(const QtCanvasItem *) const
Definition: canvas_typed/qtcanvas.h:625
void drawShape(QPainter &)
int rtti() const
QPolygon areaPoints() const
void setSize(int w, int h)
QPolygon chunks() const
static int RTTI
Definition: canvas_typed/qtcanvas.h:647
int height() const
Definition: canvas_typed/qtcanvas.cpp:4125
bool collidesWith(const QtCanvasItem *) const
QtCanvasRectangle(const QRect &, QtCanvas *canvas)
QtCanvasRectangle(int x, int y, int width, int height, QtCanvas *canvas)
QSize size() const
Definition: canvas_variant/qtcanvas.h:636
int width() const
Definition: canvas_typed/qtcanvas.cpp:4118
QRect rect() const
Definition: canvas_variant/qtcanvas.h:640
QtCanvasRectangle(QtCanvas *canvas)
Definition: canvas_typed/qtcanvas.h:683
QtCanvasSpline(QtCanvas *canvas)
static int RTTI
Definition: canvas_typed/qtcanvas.h:693
bool closed() const
Definition: canvas_typed/qtcanvas.cpp:3875
void setControlPoints(QPolygon, bool closed=true)
int rtti() const
QPolygon controlPoints() const
Definition: canvas_typed/qtcanvas.h:493
virtual ~QtCanvasSprite()
int leftEdge(int nx) const
int frame() const
Definition: canvas_typed/qtcanvas.h:506
int bottomEdge(int ny) const
int rightEdge(int nx) const
int bottomEdge() const
bool collidesWith(const QtCanvasItem *) const
QtCanvasPixmap * image(int f) const
Definition: canvas_variant/qtcanvas.h:539
int topEdge(int ny) const
void setFrame(int)
int frameCount() const
Definition: canvas_variant/qtcanvas.h:509
QtCanvasPixmap * image() const
Definition: canvas_variant/qtcanvas.h:535
QRect boundingRect() const
virtual void advance(int stage)
int height() const
void draw(QPainter &painter)
int rightEdge() const
int width() const
int leftEdge() const
static int RTTI
Definition: canvas_typed/qtcanvas.h:514
int rtti() const
int topEdge() const
FrameAnimationType
Definition: canvas_typed/qtcanvas.h:504
@ Cycle
Definition: canvas_typed/qtcanvas.h:504
@ Oscillate
Definition: canvas_typed/qtcanvas.h:504
virtual void move(double x, double y, int frame)
virtual void setFrameAnimation(FrameAnimationType=Cycle, int step=1, int state=0)
QtCanvasSprite(QtCanvasPixmapArray *array, QtCanvas *canvas)
void move(double x, double y)
virtual QtCanvasPixmap * imageAdvanced() const
friend bool qt_testCollision(const QtCanvasSprite *s1, const QtCanvasSprite *s2)
Definition: canvas_typed/qtcanvas.cpp:1950
void setSequence(QtCanvasPixmapArray *seq)
Definition: canvas_typed/qtcanvas.h:773
void setTextFlags(int)
QtCanvasText(QtCanvas *canvas)
int rtti() const
QString text() const
void setColor(const QColor &)
QtCanvasText(const QString &, QFont, QtCanvas *canvas)
QColor color() const
void moveBy(double dx, double dy)
int textFlags() const
Definition: canvas_variant/qtcanvas.h:790
QtCanvasText(const QString &, QtCanvas *canvas)
static int RTTI
Definition: canvas_typed/qtcanvas.h:800
virtual ~QtCanvasText()
void setFont(const QFont &)
void setText(const QString &)
virtual void draw(QPainter &)
bool collidesWith(const QtCanvasItem *) const
QFont font() const
QRect boundingRect() const
Definition: canvas_typed/qtcanvas.cpp:66
Definition: canvas_typed/qtcanvas.h:365
virtual void contentsMouseMoveEvent(QMouseEvent *)
virtual void drawContents(QPainter *p, int cx, int cy, int cw, int ch)
Definition: canvas_typed/qtcanvas.cpp:3296
virtual void contentsDropEvent(QDropEvent *)
void setHighQualityRendering(bool enable)
Definition: canvas_typed/qtcanvas.cpp:3162
virtual void contentsDragEnterEvent(QDragEnterEvent *)
const QMatrix & worldMatrix() const
virtual void contentsMouseDoubleClickEvent(QMouseEvent *)
virtual void contentsDragMoveEvent(QDragMoveEvent *)
bool highQualityRendering() const
bool setWorldMatrix(const QMatrix &)
QtCanvasView(QtCanvas *viewing, QWidget *parent=0)
QtCanvasView(QWidget *parent=0)
const QMatrix & inverseWorldMatrix() const
virtual void contentsDragLeaveEvent(QDragLeaveEvent *)
virtual void drawContents(QPainter *p, int cx, int cy, int cw, int ch)
virtual void contentsMouseReleaseEvent(QMouseEvent *)
virtual void contentsContextMenuEvent(QContextMenuEvent *)
virtual void contentsMousePressEvent(QMouseEvent *)
virtual void contentsWheelEvent(QWheelEvent *)
virtual QSize sizeHint() const
QtCanvas * canvas() const
Definition: canvas_variant/qtcanvas.h:374
bool highQualityRendering
Definition: canvas_typed/qtcanvas.h:367
void setCanvas(QtCanvas *v)
Definition: canvas_typed/qtcanvas.cpp:3059
Definition: canvas_typed/qtcanvas.h:213
void addItemToChunkContaining(QtCanvasItem *, int x, int y)
virtual void setBackgroundPixmap(const QPixmap &p)
virtual void addItem(QtCanvasItem *)
virtual void retune(int chunksize, int maxclusters=100)
bool onCanvas(const QPoint &p) const
Definition: canvas_variant/qtcanvas.h:265
bool sameChunk(int x1, int y1, int x2, int y2) const
Definition: canvas_variant/qtcanvas.h:280
QtCanvas(QObject *parent=0)
virtual void removeAnimation(QtCanvasItem *)
int width() const
Definition: canvas_typed/qtcanvas.h:250
void removeItemFromChunk(QtCanvasItem *, int i, int j)
void resized()
virtual void setAdvancePeriod(int ms)
virtual void setUpdatePeriod(int ms)
QColor backgroundColor() const
QRect rect() const
Definition: canvas_variant/qtcanvas.h:259
void drawViewArea(QtCanvasView *view, QPainter *p, const QRect &r, bool dbuf)
QtCanvasItemList collisions(const QRect &) const
void drawArea(const QRect &, QPainter *p, bool double_buffer=false)
friend void qt_unview(QtCanvas *c)
int height() const
Definition: canvas_typed/qtcanvas.h:253
int chunkSize() const
Definition: canvas_variant/qtcanvas.h:275
void addItemToChunk(QtCanvasItem *, int i, int j)
virtual void addAnimation(QtCanvasItem *)
QtCanvas(int w, int h)
virtual void addView(QtCanvasView *)
bool validChunk(int x, int y) const
Definition: canvas_variant/qtcanvas.h:268
virtual void setAllChanged()
virtual void setChangedChunkContaining(int x, int y)
void removeItemFromChunkContaining(QtCanvasItem *, int x, int y)
bool onCanvas(int x, int y) const
Definition: canvas_variant/qtcanvas.h:262
virtual void setBackgroundColor(const QColor &c)
int tilesHorizontally() const
Definition: canvas_variant/qtcanvas.h:235
virtual void drawBackground(QPainter &, const QRect &area)
virtual void resize(int width, int height)
virtual void removeItem(QtCanvasItem *)
QtCanvasItemList collisions(const QPolygon &pa, const QtCanvasItem *item, bool exact) const
virtual void removeView(QtCanvasView *)
int tileHeight() const
Definition: canvas_variant/qtcanvas.h:245
bool validChunk(const QPoint &p) const
Definition: canvas_variant/qtcanvas.h:271
QtCanvasItemList collisions(const QPoint &) const
virtual void setChangedChunk(int i, int j)
virtual void drawForeground(QPainter &, const QRect &area)
QSize size() const
Definition: canvas_variant/qtcanvas.h:256
virtual void update()
virtual void setTile(int x, int y, int tilenum)
virtual ~QtCanvas()
QtCanvasItemList allItems()
int tileWidth() const
Definition: canvas_variant/qtcanvas.h:242
virtual void setTiles(QPixmap tiles, int h, int v, int tilewidth, int tileheight)
virtual void setUnchanged(const QRect &area)
int tile(int x, int y) const
Definition: canvas_variant/qtcanvas.h:231
virtual void advance()
void drawCanvasArea(const QRect &, QPainter *p=0, bool double_buffer=true)
QtCanvas(QPixmap p, int h, int v, int tilewidth, int tileheight)
virtual void setChanged(const QRect &area)
int tilesVertically() const
Definition: canvas_variant/qtcanvas.h:238
QPixmap backgroundPixmap() const