Computer Assited Medical Intervention Tool Kit  version 3.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
canvas_typed/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;
61 
62 typedef QList<QtCanvasItem *> QtCanvasItemList;
63 
64 
65 class QtCanvasItemExtra;
66 
68 {
69 public:
71  virtual ~QtCanvasItem();
72 
73  double x() const
74  { return myx; }
75  double y() const
76  { return myy; }
77  double z() const
78  { return myz; } // (depth)
79 
80  virtual void moveBy(double dx, double dy);
81  void move(double x, double y);
82  void setX(double a) { move(a,y()); }
83  void setY(double a) { move(x(),a); }
84  void setZ(double a) { myz=a; changeChunks(); }
85 
86  bool animated() const;
87  virtual void setAnimated(bool y);
88  virtual void setVelocity(double vx, double vy);
89  void setXVelocity(double vx) { setVelocity(vx,yVelocity()); }
90  void setYVelocity(double vy) { setVelocity(xVelocity(),vy); }
91  double xVelocity() const;
92  double yVelocity() const;
93  virtual void advance(int stage);
94 
95  virtual bool collidesWith(const QtCanvasItem*) const=0;
96 
97  QtCanvasItemList collisions(bool exact /* NO DEFAULT */) const;
98 
99  virtual void setCanvas(QtCanvas*);
100 
101  virtual void draw(QPainter&)=0;
102 
103  void show();
104  void hide();
105 
106  virtual void setVisible(bool yes);
107  bool isVisible() const
108  { return (bool)vis; }
109  virtual void setSelected(bool yes);
110  bool isSelected() const
111  { return (bool)sel; }
112  virtual void setEnabled(bool yes);
113  bool isEnabled() const
114  { return (bool)ena; }
115  virtual void setActive(bool yes);
116  bool isActive() const
117  { return (bool)act; }
118  bool visible() const
119  { return (bool)vis; }
120  bool selected() const
121  { return (bool)sel; }
122  bool enabled() const
123  { return (bool)ena; }
124  bool active() const
125  { return (bool)act; }
126 
127  enum RttiValues {
137  };
138 
139  virtual int rtti() const;
140  static int RTTI;
141 
142  virtual QRect boundingRect() const=0;
143  virtual QRect boundingRectAdvanced() const;
144 
145  QtCanvas* canvas() const
146  { return cnv; }
147 
148 protected:
149  void update() { changeChunks(); }
150 
151 private:
152  // For friendly subclasses...
153 
154  friend class QtCanvasPolygonalItem;
155  friend class QtCanvasSprite;
156  friend class QtCanvasRectangle;
157  friend class QtCanvasPolygon;
158  friend class QtCanvasEllipse;
159  friend class QtCanvasText;
160  friend class QtCanvasLine;
161 
162  virtual QPolygon chunks() const;
163  virtual void addToChunks();
164  virtual void removeFromChunks();
165  virtual void changeChunks();
166  virtual bool collidesWith(const QtCanvasSprite*,
167  const QtCanvasPolygonalItem*,
168  const QtCanvasRectangle*,
169  const QtCanvasEllipse*,
170  const QtCanvasText*) const = 0;
171  // End of friend stuff
172 
175  double myx,myy,myz;
176  QtCanvasItemExtra *ext;
177  QtCanvasItemExtra& extra();
178  uint ani:1;
179  uint vis:1;
180  uint val:1;
181  uint sel:1;
182  uint ena:1;
183  uint act:1;
184 };
185 
186 
187 class QtCanvasData;
188 
189 class QtCanvas : public QObject
190 {
191  Q_OBJECT
192 public:
193  QtCanvas(QObject* parent = 0);
194  QtCanvas(int w, int h);
195  QtCanvas(QPixmap p, int h, int v, int tilewidth, int tileheight);
196 
197  virtual ~QtCanvas();
198 
199  virtual void setTiles(QPixmap tiles, int h, int v,
200  int tilewidth, int tileheight);
201  virtual void setBackgroundPixmap(const QPixmap& p);
202  QPixmap backgroundPixmap() const;
203 
204  virtual void setBackgroundColor(const QColor& c);
205  QColor backgroundColor() const;
206 
207  virtual void setTile(int x, int y, int tilenum);
208  int tile(int x, int y) const
209  { return grid[x+y*htiles]; }
210 
211  int tilesHorizontally() const
212  { return htiles; }
213  int tilesVertically() const
214  { return vtiles; }
215 
216  int tileWidth() const
217  { return tilew; }
218  int tileHeight() const
219  { return tileh; }
220 
221  virtual void resize(int width, int height);
222  int width() const
223  { return awidth; }
224  int height() const
225  { return aheight; }
226  QSize size() const
227  { return QSize(awidth,aheight); }
228  QRect rect() const
229  { return QRect(0, 0, awidth, aheight); }
230  bool onCanvas(int x, int y) const
231  { return x>=0 && y>=0 && x<awidth && y<aheight; }
232  bool onCanvas(const QPoint& p) const
233  { return onCanvas(p.x(),p.y()); }
234  bool validChunk(int x, int y) const
235  { return x>=0 && y>=0 && x<chwidth && y<chheight; }
236  bool validChunk(const QPoint& p) const
237  { return validChunk(p.x(),p.y()); }
238 
239  int chunkSize() const
240  { return chunksize; }
241  virtual void retune(int chunksize, int maxclusters=100);
242 
243  bool sameChunk(int x1, int y1, int x2, int y2) const
244  { return x1/chunksize==x2/chunksize && y1/chunksize==y2/chunksize; }
245  virtual void setChangedChunk(int i, int j);
246  virtual void setChangedChunkContaining(int x, int y);
247  virtual void setAllChanged();
248  virtual void setChanged(const QRect& area);
249  virtual void setUnchanged(const QRect& area);
250 
251  // These call setChangedChunk.
252  void addItemToChunk(QtCanvasItem*, int i, int j);
253  void removeItemFromChunk(QtCanvasItem*, int i, int j);
254  void addItemToChunkContaining(QtCanvasItem*, int x, int y);
255  void removeItemFromChunkContaining(QtCanvasItem*, int x, int y);
256 
258  QtCanvasItemList collisions(const QPoint&) const;
259  QtCanvasItemList collisions(const QRect&) const;
260  QtCanvasItemList collisions(const QPolygon& pa, const QtCanvasItem* item,
261  bool exact) const;
262 
263  void drawArea(const QRect&, QPainter* p, bool double_buffer=false);
264 
265  // These are for QtCanvasView to call
266  virtual void addView(QtCanvasView*);
267  virtual void removeView(QtCanvasView*);
268 
269  void drawCanvasArea(const QRect&, QPainter* p=0, bool double_buffer=true);
270  void drawViewArea(QtCanvasView* view, QPainter* p, const QRect& r, bool dbuf);
271 
272  // These are for QtCanvasItem to call
273  virtual void addItem(QtCanvasItem*);
274  virtual void addAnimation(QtCanvasItem*);
275  virtual void removeItem(QtCanvasItem*);
276  virtual void removeAnimation(QtCanvasItem*);
277 
278  virtual void setAdvancePeriod(int ms);
279  virtual void setUpdatePeriod(int ms);
280 
281 signals:
282  void resized();
283 
284 public slots:
285  virtual void advance();
286  virtual void update();
287 
288 protected:
289  virtual void drawBackground(QPainter&, const QRect& area);
290  virtual void drawForeground(QPainter&, const QRect& area);
291 
292 private:
293  void init(int w, int h, int chunksze=16, int maxclust=100);
294 
295  QtCanvasChunk& chunk(int i, int j) const;
296  QtCanvasChunk& chunkContaining(int x, int y) const;
297 
298  QRect changeBounds();
299 
304  QtCanvasChunk* chunks;
305 
306  QtCanvasData* d;
307 
308  void initTiles(QPixmap p, int h, int v, int tilewidth, int tileheight);
309  ushort *grid;
310  ushort htiles;
311  ushort vtiles;
312  ushort tilew;
313  ushort tileh;
314  bool oneone;
315  QPixmap pm;
316  QTimer* update_timer;
317  QColor bgcolor;
319 
320  friend void qt_unview(QtCanvas* c);
321 
322  Q_DISABLE_COPY(QtCanvas)
323 };
324 
325 class QtCanvasViewData;
326 
327 class QtCanvasView : public QScrollArea
328 {
329  Q_OBJECT
331 public:
332 
333  QtCanvasView(QWidget* parent=0);
334  QtCanvasView(QtCanvas* viewing, QWidget* parent=0);
335  ~QtCanvasView();
336 
337  QtCanvas* canvas() const
338  { return viewing; }
339  void setCanvas(QtCanvas* v);
340 
341  const QMatrix &worldMatrix() const;
342  const QMatrix &inverseWorldMatrix() const;
343  bool setWorldMatrix(const QMatrix &);
344 
345  virtual QSize sizeHint() const;
346 
347  bool highQualityRendering() const;
348 public slots:
349  void setHighQualityRendering(bool enable);
350 
351 protected:
352  friend class QtCanvasWidget;
353  virtual void drawContents(QPainter *p, int cx, int cy, int cw, int ch);
354 
355  virtual void contentsMousePressEvent( QMouseEvent* );
356  virtual void contentsMouseReleaseEvent( QMouseEvent* );
357  virtual void contentsMouseDoubleClickEvent( QMouseEvent* );
358  virtual void contentsMouseMoveEvent( QMouseEvent* );
359  virtual void contentsDragEnterEvent( QDragEnterEvent * );
360  virtual void contentsDragMoveEvent( QDragMoveEvent * );
361  virtual void contentsDragLeaveEvent( QDragLeaveEvent * );
362  virtual void contentsDropEvent( QDropEvent * );
363  virtual void contentsWheelEvent( QWheelEvent * );
364  virtual void contentsContextMenuEvent( QContextMenuEvent * );
365 
366 private:
367  friend class QtCanvas;
368  void drawContents(QPainter*);
370  QtCanvasViewData* d;
371 
372 private slots:
373  void updateContentsSize();
374 
375 private:
376  Q_DISABLE_COPY(QtCanvasView)
377 };
378 
379 
380 class QtCanvasPixmap : public QPixmap
381 {
382 public:
383 #ifndef QT_NO_IMAGEIO
384  QtCanvasPixmap(const QString& datafilename);
385 #endif
386  QtCanvasPixmap(const QImage& image);
387  QtCanvasPixmap(const QPixmap&, const QPoint& hotspot);
388  ~QtCanvasPixmap();
389 
390  int offsetX() const
391  { return hotx; }
392  int offsetY() const
393  { return hoty; }
394  void setOffset(int x, int y) { hotx = x; hoty = y; }
395 
396 private:
397  Q_DISABLE_COPY(QtCanvasPixmap)
398 
399  void init(const QImage&);
400  void init(const QPixmap& pixmap, int hx, int hy);
401 
402  friend class QtCanvasSprite;
403  friend class QtCanvasPixmapArray;
404  friend bool qt_testCollision(const QtCanvasSprite* s1, const QtCanvasSprite* s2);
405 
406  int hotx,hoty;
407 
408  QImage* collision_mask;
409 };
410 
411 
412 class QtCanvasPixmapArray
413 {
414 public:
416 #ifndef QT_NO_IMAGEIO
417  QtCanvasPixmapArray(const QString& datafilenamepattern, int framecount=0);
418 #endif
419  QtCanvasPixmapArray(const QList<QPixmap> &pixmaps, const QPolygon &hotspots = QPolygon());
420  ~QtCanvasPixmapArray();
421 
422 #ifndef QT_NO_IMAGEIO
423  bool readPixmaps(const QString& datafilenamepattern, int framecount=0);
424  bool readCollisionMasks(const QString& filenamepattern);
425 #endif
426 
427  // deprecated
428  bool operator!(); // Failure check.
429  bool isValid() const;
430 
431  QtCanvasPixmap* image(int i) const
432  { return img ? img[i] : 0; }
433  void setImage(int i, QtCanvasPixmap* p);
434  uint count() const
435  { return (uint)framecount; }
436 
437 private:
438  Q_DISABLE_COPY(QtCanvasPixmapArray)
439 
440 #ifndef QT_NO_IMAGEIO
441  bool readPixmaps(const QString& datafilenamepattern, int framecount, bool maskonly);
442 #endif
443 
444  void reset();
447 };
448 
449 
450 class QtCanvasSprite : public QtCanvasItem
451 {
452 public:
453  QtCanvasSprite(QtCanvasPixmapArray* array, QtCanvas* canvas);
454 
455  void setSequence(QtCanvasPixmapArray* seq);
456 
457  virtual ~QtCanvasSprite();
458 
459  void move(double x, double y);
460  virtual void move(double x, double y, int frame);
461  void setFrame(int);
462  enum FrameAnimationType { Cycle, Oscillate };
463  virtual void setFrameAnimation(FrameAnimationType=Cycle, int step=1, int state=0);
464  int frame() const
465  { return frm; }
466  int frameCount() const
467  { return images->count(); }
468 
469  int rtti() const;
470  static int RTTI;
471 
472  bool collidesWith(const QtCanvasItem*) const;
473 
474  QRect boundingRect() const;
475 
476  // is there a reason for these to be protected? Lars
477 //protected:
478 
479  int width() const;
480  int height() const;
481 
482  int leftEdge() const;
483  int topEdge() const;
484  int rightEdge() const;
485  int bottomEdge() const;
486 
487  int leftEdge(int nx) const;
488  int topEdge(int ny) const;
489  int rightEdge(int nx) const;
490  int bottomEdge(int ny) const;
492  { return images->image(frm); }
493  virtual QtCanvasPixmap* imageAdvanced() const;
494  QtCanvasPixmap* image(int f) const
495  { return images->image(f); }
496  virtual void advance(int stage);
497 
498 public:
499  void draw(QPainter& painter);
500 
501 private:
502  Q_DISABLE_COPY(QtCanvasSprite)
503 
504  void addToChunks();
505  void removeFromChunks();
506  void changeChunks();
507 
508  int frm;
509  ushort anim_val;
510  uint anim_state:2;
511  uint anim_type:14;
512  bool collidesWith(const QtCanvasSprite*,
513  const QtCanvasPolygonalItem*,
514  const QtCanvasRectangle*,
515  const QtCanvasEllipse*,
516  const QtCanvasText*) const;
517 
518  friend bool qt_testCollision(const QtCanvasSprite* s1,
519  const QtCanvasSprite* s2);
520 
521  QtCanvasPixmapArray* images;
522 };
523 
524 class QPolygonalProcessor;
525 
526 class QtCanvasPolygonalItem : public QtCanvasItem
527 {
528 public:
529  QtCanvasPolygonalItem(QtCanvas* canvas);
530  virtual ~QtCanvasPolygonalItem();
531 
532  bool collidesWith(const QtCanvasItem*) const;
533 
534  virtual void setPen(QPen p);
535  virtual void setBrush(QBrush b);
536 
537  QPen pen() const
538  { return pn; }
539  QBrush brush() const
540  { return br; }
541 
542  virtual QPolygon areaPoints() const=0;
543  virtual QPolygon areaPointsAdvanced() const;
544  QRect boundingRect() const;
545 
546  int rtti() const;
547  static int RTTI;
548 
549 protected:
550  void draw(QPainter &);
551  virtual void drawShape(QPainter &) = 0;
552 
553  bool winding() const;
554  void setWinding(bool);
555 
556  void invalidate();
557  bool isValid() const
558  { return (bool)val; }
559 
560 private:
561  void scanPolygon(const QPolygon& pa, int winding,
562  QPolygonalProcessor& process) const;
563  QPolygon chunks() const;
564 
565  bool collidesWith(const QtCanvasSprite*,
566  const QtCanvasPolygonalItem*,
567  const QtCanvasRectangle*,
568  const QtCanvasEllipse*,
569  const QtCanvasText*) const;
570 
571  QBrush br;
572  QPen pn;
573  uint wind:1;
574 };
575 
576 
578 {
579 public:
580  QtCanvasRectangle(QtCanvas* canvas);
581  QtCanvasRectangle(const QRect&, QtCanvas* canvas);
582  QtCanvasRectangle(int x, int y, int width, int height, QtCanvas* canvas);
583 
585 
586  int width() const;
587  int height() const;
588  void setSize(int w, int h);
589  QSize size() const
590  { return QSize(w,h); }
591  QPolygon areaPoints() const;
592  QRect rect() const
593  { return QRect(int(x()),int(y()),w,h); }
594 
595  bool collidesWith(const QtCanvasItem*) const;
596 
597  int rtti() const;
598  static int RTTI;
599 
600 protected:
601  void drawShape(QPainter &);
602  QPolygon chunks() const;
603 
604 private:
605  bool collidesWith( const QtCanvasSprite*,
606  const QtCanvasPolygonalItem*,
607  const QtCanvasRectangle*,
608  const QtCanvasEllipse*,
609  const QtCanvasText*) const;
610 
611  int w, h;
612 };
613 
614 
616 {
617 public:
618  QtCanvasPolygon(QtCanvas* canvas);
619  ~QtCanvasPolygon();
620  void setPoints(QPolygon);
621  QPolygon points() const;
622  void moveBy(double dx, double dy);
623 
624  QPolygon areaPoints() const;
625 
626  int rtti() const;
627  static int RTTI;
628 
629 protected:
630  void drawShape(QPainter &);
631  QPolygon poly;
632 };
633 
634 
636 {
637 public:
638  QtCanvasSpline(QtCanvas* canvas);
639  ~QtCanvasSpline();
640 
641  void setControlPoints(QPolygon, bool closed=true);
642  QPolygon controlPoints() const;
643  bool closed() const;
644 
645  int rtti() const;
646  static int RTTI;
647 
648 private:
649  void recalcPoly();
650  QPolygon bez;
651  bool cl;
652 };
653 
654 
656 {
657 public:
658  QtCanvasLine(QtCanvas* canvas);
659  ~QtCanvasLine();
660  void setPoints(int x1, int y1, int x2, int y2);
661 
662  QPoint startPoint() const
663  { return QPoint(x1,y1); }
664  QPoint endPoint() const
665  { return QPoint(x2,y2); }
666 
667  int rtti() const;
668  static int RTTI;
669 
670  void setPen(QPen p);
671  void moveBy(double dx, double dy);
672 
673 protected:
674  void drawShape(QPainter &);
675  QPolygon areaPoints() const;
676 
677 private:
678  int x1,y1,x2,y2;
679 };
680 
681 
683 {
684 
685 public:
686  QtCanvasEllipse(QtCanvas* canvas);
687  QtCanvasEllipse(int width, int height, QtCanvas* canvas);
688  QtCanvasEllipse(int width, int height, int startangle, int angle,
689  QtCanvas* canvas);
690 
691  ~QtCanvasEllipse();
692 
693  int width() const;
694  int height() const;
695  void setSize(int w, int h);
696  void setAngles(int start, int length);
697  int angleStart() const
698  { return a1; }
699  int angleLength() const
700  { return a2; }
701  QPolygon areaPoints() const;
702 
703  bool collidesWith(const QtCanvasItem*) const;
704 
705  int rtti() const;
706  static int RTTI;
707 
708 protected:
709  void drawShape(QPainter &);
710 
711 private:
712  bool collidesWith(const QtCanvasSprite*,
713  const QtCanvasPolygonalItem*,
714  const QtCanvasRectangle*,
715  const QtCanvasEllipse*,
716  const QtCanvasText*) const;
717  int w, h;
718  int a1, a2;
719 };
720 
721 
722 class QtCanvasTextExtra;
723 
725 {
726 public:
727  QtCanvasText(QtCanvas* canvas);
728  QtCanvasText(const QString&, QtCanvas* canvas);
729  QtCanvasText(const QString&, QFont, QtCanvas* canvas);
730 
731  virtual ~QtCanvasText();
732 
733  void setText(const QString&);
734  void setFont(const QFont&);
735  void setColor(const QColor&);
736  QString text() const;
737  QFont font() const;
738  QColor color() const;
739 
740  void moveBy(double dx, double dy);
741 
742  int textFlags() const
743  { return flags; }
744  void setTextFlags(int);
745 
746  QRect boundingRect() const;
747 
748  bool collidesWith(const QtCanvasItem*) const;
749 
750  int rtti() const;
751  static int RTTI;
752 
753 protected:
754  virtual void draw(QPainter&);
755 
756 private:
757  Q_DISABLE_COPY(QtCanvasText)
758 
759  void addToChunks();
760  void removeFromChunks();
761  void changeChunks();
762 
763  void setRect();
764  QRect brect;
765  QString txt;
766  int flags;
767  QFont fnt;
768  QColor col;
769  QtCanvasTextExtra* extra;
770 
771  bool collidesWith(const QtCanvasSprite*,
772  const QtCanvasPolygonalItem*,
773  const QtCanvasRectangle*,
774  const QtCanvasEllipse*,
775  const QtCanvasText*) const;
776 };
777 
778 #endif // QTCANVAS_H
virtual void addToChunks()
RttiValues
Definition: canvas_typed/qtcanvas.h:127
Definition: canvas_typed/qtcanvas.h:615
bool validChunk(const QPoint &p) const
Definition: canvas_typed/qtcanvas.h:236
void setHighQualityRendering(bool enable)
QRect changeBounds()
virtual void resize(int width, int height)
Definition: canvas_typed/qtcanvas.h:682
double y() const
Definition: canvas_typed/qtcanvas.h:75
void update()
Definition: canvas_typed/qtcanvas.h:149
virtual void setUnchanged(const QRect &area)
Definition: canvas_typed/qtcanvas.h:724
Definition: canvas_typed/qtcanvas.h:635
QBrush brush() const
Definition: canvas_typed/qtcanvas.h:539
int maxclusters
Definition: canvas_typed/qtcanvas.h:302
int hoty
Definition: canvas_typed/qtcanvas.h:406
static int RTTI
Definition: canvas_typed/qtcanvas.h:706
virtual void setCanvas(QtCanvas *)
double myy
Definition: canvas_typed/qtcanvas.h:175
int awidth
Definition: canvas_typed/qtcanvas.h:300
QtCanvasPixmap * image(int f) const
Definition: canvas_typed/qtcanvas.h:494
QPixmap backgroundPixmap() const
bool oneone
Definition: canvas_typed/qtcanvas.h:314
virtual void setVisible(bool yes)
int hotx
Definition: canvas_typed/qtcanvas.h:406
void drawArea(const QRect &, QPainter *p, bool double_buffer=false)
Definition: canvas_typed/qtcanvas.h:412
virtual void setActive(bool yes)
static int RTTI
Definition: canvas_typed/qtcanvas.h:751
double x() const
Definition: canvas_typed/qtcanvas.h:73
void resized()
void removeItemFromChunkContaining(QtCanvasItem *, int x, int y)
ushort tilew
Definition: canvas_typed/qtcanvas.h:312
ushort * grid
Definition: canvas_typed/qtcanvas.h:309
virtual void setAnimated(bool y)
virtual void contentsContextMenuEvent(QContextMenuEvent *)
virtual void drawBackground(QPainter &, const QRect &area)
virtual int rtti() const
virtual void retune(int chunksize, int maxclusters=100)
int w
Definition: canvas_typed/qtcanvas.h:717
int offsetY() const
Definition: canvas_typed/qtcanvas.h:392
QtCanvasItemExtra * ext
Definition: canvas_typed/qtcanvas.h:176
virtual void setBackgroundColor(const QColor &c)
bool cl
Definition: canvas_typed/qtcanvas.h:651
virtual void drawForeground(QPainter &, const QRect &area)
int frame() const
Definition: canvas_typed/qtcanvas.h:464
QtCanvasItemList collisions(bool exact) const
virtual void update()
virtual void setBackgroundPixmap(const QPixmap &p)
QtCanvasItemList collisions(const QPoint &) const
static int RTTI
Definition: canvas_typed/qtcanvas.h:547
virtual void contentsMouseReleaseEvent(QMouseEvent *)
Definition: canvas_typed/qtcanvas.h:189
int width() const
Definition: canvas_typed/qtcanvas.h:222
bool active() const
Definition: canvas_typed/qtcanvas.h:124
ushort htiles
Definition: canvas_typed/qtcanvas.h:310
Definition: canvas_typed/qtcanvas.h:130
uint ena
Definition: canvas_typed/qtcanvas.h:182
virtual void setChanged(const QRect &area)
QtCanvasPixmap ** img
Definition: canvas_typed/qtcanvas.h:446
QtCanvasPixmap * image() const
Definition: canvas_typed/qtcanvas.h:491
QImage * collision_mask
Definition: canvas_typed/qtcanvas.h:408
void removeItemFromChunk(QtCanvasItem *, int i, int j)
Definition: canvas_typed/qtcanvas.h:133
FrameAnimationType
Definition: canvas_typed/qtcanvas.h:462
virtual void addItem(QtCanvasItem *)
bool sameChunk(int x1, int y1, int x2, int y2) const
Definition: canvas_typed/qtcanvas.h:243
virtual void setSelected(bool yes)
Definition: canvas_typed/qtcanvas.h:135
bool enabled() const
Definition: canvas_typed/qtcanvas.h:122
void init(const QImage &)
int aheight
Definition: canvas_typed/qtcanvas.h:300
QPen pen() const
Definition: canvas_typed/qtcanvas.h:537
QtCanvasItemExtra & extra()
const QMatrix & inverseWorldMatrix() const
bool onCanvas(const QPoint &p) const
Definition: canvas_typed/qtcanvas.h:232
const QMatrix & worldMatrix() const
QRect rect() const
Definition: canvas_typed/qtcanvas.h:592
virtual void setUpdatePeriod(int ms)
QtCanvas * canvas() const
Definition: canvas_typed/qtcanvas.h:145
QtCanvasChunk * chunks
Definition: canvas_typed/qtcanvas.h:304
void setYVelocity(double vy)
Definition: canvas_typed/qtcanvas.h:90
int y2
Definition: canvas_typed/qtcanvas.h:678
double xVelocity() const
QSize size() const
Definition: canvas_typed/qtcanvas.h:226
Definition: canvas_typed/qtcanvas.h:526
QtCanvasPixmap(const QString &datafilename)
Definition: canvas_typed/qtcanvas.h:655
Definition: canvas_typed/qtcanvas.h:380
QPolygon poly
Definition: canvas_typed/qtcanvas.h:631
virtual void contentsMouseDoubleClickEvent(QMouseEvent *)
friend class QtCanvasWidget
Definition: canvas_typed/qtcanvas.h:352
QtCanvasData * d
Definition: canvas_typed/qtcanvas.h:306
QtCanvasPixmap * image(int i) const
Definition: canvas_typed/qtcanvas.h:431
QtCanvasItemList allItems()
virtual void setAllChanged()
virtual QPolygon chunks() const
QPolygon bez
Definition: canvas_typed/qtcanvas.h:650
virtual void draw(QPainter &)=0
virtual ~QtCanvasItem()
virtual void moveBy(double dx, double dy)
int chunksize
Definition: canvas_typed/qtcanvas.h:301
friend class QtCanvasSprite
Definition: canvas_typed/qtcanvas.h:402
void setOffset(int x, int y)
Definition: canvas_typed/qtcanvas.h:394
virtual void contentsMousePressEvent(QMouseEvent *)
int textFlags() const
Definition: canvas_typed/qtcanvas.h:742
static int RTTI
Definition: canvas_typed/qtcanvas.h:140
int w
Definition: canvas_typed/qtcanvas.h:611
Definition: canvas_typed/qtcanvas.h:450
virtual void setChangedChunk(int i, int j)
virtual void advance(int stage)
double myz
Definition: canvas_typed/qtcanvas.h:175
QtCanvas * viewing
Definition: canvas_typed/qtcanvas.h:369
virtual void contentsDragLeaveEvent(QDragLeaveEvent *)
bool visible() const
Definition: canvas_typed/qtcanvas.h:118
virtual QSize sizeHint() const
Definition: canvas_typed/qtcanvas.h:128
QSize size() const
Definition: canvas_typed/qtcanvas.h:589
uint vis
Definition: canvas_typed/qtcanvas.h:179
Definition: canvas_typed/qtcanvas.h:132
virtual void removeItem(QtCanvasItem *)
QtCanvas * canvas() const
Definition: canvas_typed/qtcanvas.h:337
void setX(double a)
Definition: canvas_typed/qtcanvas.h:82
virtual void contentsDropEvent(QDropEvent *)
int offsetX() const
Definition: canvas_typed/qtcanvas.h:390
virtual void removeAnimation(QtCanvasItem *)
virtual void contentsDragEnterEvent(QDragEnterEvent *)
virtual ~QtCanvas()
uint val
Definition: canvas_typed/qtcanvas.h:180
int tile(int x, int y) const
Definition: canvas_typed/qtcanvas.h:208
int tileWidth() const
Definition: canvas_typed/qtcanvas.h:216
QtCanvasChunk & chunk(int i, int j) const
virtual void setVelocity(double vx, double vy)
int frameCount() const
Definition: canvas_typed/qtcanvas.h:466
void initTiles(QPixmap p, int h, int v, int tilewidth, int tileheight)
static int RTTI
Definition: canvas_typed/qtcanvas.h:646
uint ani
Definition: canvas_typed/qtcanvas.h:178
static int RTTI
Definition: canvas_typed/qtcanvas.h:470
QRect rect() const
Definition: canvas_typed/qtcanvas.h:228
void updateContentsSize()
virtual void addAnimation(QtCanvasItem *)
virtual void addView(QtCanvasView *)
int framecount
Definition: canvas_typed/qtcanvas.h:445
bool isActive() const
Definition: canvas_typed/qtcanvas.h:116
int chwidth
Definition: canvas_typed/qtcanvas.h:303
static int RTTI
Definition: canvas_typed/qtcanvas.h:598
int height() const
Definition: canvas_typed/qtcanvas.h:224
bool isVisible() const
Definition: canvas_typed/qtcanvas.h:107
virtual void setTile(int x, int y, int tilenum)
void setXVelocity(double vx)
Definition: canvas_typed/qtcanvas.h:89
virtual void removeView(QtCanvasView *)
double z() const
Definition: canvas_typed/qtcanvas.h:77
static int RTTI
Definition: canvas_typed/qtcanvas.h:668
QBrush br
Definition: canvas_typed/qtcanvas.h:571
bool highQualityRendering() const
bool isValid() const
Definition: canvas_typed/qtcanvas.h:557
int tileHeight() const
Definition: canvas_typed/qtcanvas.h:218
void drawViewArea(QtCanvasView *view, QPainter *p, const QRect &r, bool dbuf)
int angleLength() const
Definition: canvas_typed/qtcanvas.h:699
QColor backgroundColor() const
uint count() const
Definition: canvas_typed/qtcanvas.h:434
bool isEnabled() const
Definition: canvas_typed/qtcanvas.h:113
QPoint startPoint() const
Definition: canvas_typed/qtcanvas.h:662
void drawCanvasArea(const QRect &, QPainter *p=0, bool double_buffer=true)
virtual void contentsDragMoveEvent(QDragMoveEvent *)
QtCanvasItem(QtCanvas *canvas)
Definition: canvas_typed/qtcanvas.h:131
bool onCanvas(int x, int y) const
Definition: canvas_typed/qtcanvas.h:230
virtual void changeChunks()
QPoint endPoint() const
Definition: canvas_typed/qtcanvas.h:664
virtual void contentsWheelEvent(QWheelEvent *)
Definition: canvas_typed/qtcanvas.h:327
virtual void setAdvancePeriod(int ms)
virtual void advance()
uint sel
Definition: canvas_typed/qtcanvas.h:181
virtual void setTiles(QPixmap tiles, int h, int v, int tilewidth, int tileheight)
QColor bgcolor
Definition: canvas_typed/qtcanvas.h:317
QtCanvasChunk & chunkContaining(int x, int y) const
static int RTTI
Definition: canvas_typed/qtcanvas.h:627
int tilesHorizontally() const
Definition: canvas_typed/qtcanvas.h:211
virtual void setChangedChunkContaining(int x, int y)
double myx
Definition: canvas_typed/qtcanvas.h:175
virtual void contentsMouseMoveEvent(QMouseEvent *)
virtual QRect boundingRectAdvanced() const
Definition: canvas_typed/qtcanvas.h:136
void move(double x, double y)
int tilesVertically() const
Definition: canvas_typed/qtcanvas.h:213
int angleStart() const
Definition: canvas_typed/qtcanvas.h:697
Definition: canvas_typed/qtcanvas.h:67
ushort vtiles
Definition: canvas_typed/qtcanvas.h:311
Definition: canvas_typed/qtcanvas.h:129
QtCanvasViewData * d
Definition: canvas_typed/qtcanvas.h:370
void setCanvas(QtCanvas *v)
bool validChunk(int x, int y) const
Definition: canvas_typed/qtcanvas.h:234
virtual bool collidesWith(const QtCanvasItem *) const =0
friend class QtCanvasPixmapArray
Definition: canvas_typed/qtcanvas.h:403
bool animated() const
friend void qt_unview(QtCanvas *c)
virtual void setEnabled(bool yes)
int chheight
Definition: canvas_typed/qtcanvas.h:303
void addItemToChunk(QtCanvasItem *, int i, int j)
friend bool qt_testCollision(const QtCanvasSprite *s1, const QtCanvasSprite *s2)
virtual void removeFromChunks()
int chunkSize() const
Definition: canvas_typed/qtcanvas.h:239
QPen pn
Definition: canvas_typed/qtcanvas.h:572
QtCanvas(QObject *parent=0)
QList< QtCanvasItem * > QtCanvasItemList
Definition: canvas_typed/qtcanvas.h:60
bool isSelected() const
Definition: canvas_typed/qtcanvas.h:110
ushort tileh
Definition: canvas_typed/qtcanvas.h:313
void addItemToChunkContaining(QtCanvasItem *, int x, int y)
void init(int w, int h, int chunksze=16, int maxclust=100)
virtual QRect boundingRect() const =0
static QtCanvas * current_canvas
Definition: canvas_typed/qtcanvas.h:174
void setZ(double a)
Definition: canvas_typed/qtcanvas.h:84
QtCanvasView(QWidget *parent=0)
double yVelocity() const
virtual void drawContents(QPainter *p, int cx, int cy, int cw, int ch)
uint act
Definition: canvas_typed/qtcanvas.h:183
bool debug_redraw_areas
Definition: canvas_typed/qtcanvas.h:318
Definition: canvas_typed/qtcanvas.h:134
QTimer * update_timer
Definition: canvas_typed/qtcanvas.h:316
bool selected() const
Definition: canvas_typed/qtcanvas.h:120
bool setWorldMatrix(const QMatrix &)
QtCanvas * cnv
Definition: canvas_typed/qtcanvas.h:173
void setY(double a)
Definition: canvas_typed/qtcanvas.h:83
Definition: canvas_typed/qtcanvas.h:577
QPixmap pm
Definition: canvas_typed/qtcanvas.h:315
int a2
Definition: canvas_typed/qtcanvas.h:718