Computer Assited Medical Intervention Tool Kit  version 5.0
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
49class QtCanvasSprite;
52class QtCanvasPolygon;
53class QtCanvasEllipse;
54class QtCanvasText;
55class QtCanvasLine;
56class QtCanvasChunk;
57class QtCanvas;
58class QtCanvasItem;
59class QtCanvasView;
60class QtCanvasPixmap;
61
62typedef QList<QtCanvasItem*> QtCanvasItemList;
63
64
66
67class QtCanvasItem {
68public:
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;
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) {
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
149 Rtti_Item = 0,
150 Rtti_Sprite = 1,
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
170protected:
171 void update() {
172 changeChunks();
173 }
174
175private:
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*,
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;
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
211class QtCanvasData;
212
213class QtCanvas : public QObject {
214 Q_OBJECT
215public:
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*);
313 virtual void removeItem(QtCanvasItem*);
315
316 virtual void setAdvancePeriod(int ms);
317 virtual void setUpdatePeriod(int ms);
318
319signals:
320 void resized();
321
322public slots:
323 virtual void advance();
324 virtual void update();
325
326protected:
327 virtual void drawBackground(QPainter&, const QRect& area);
328 virtual void drawForeground(QPainter&, const QRect& area);
329
330private:
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
337
338 int awidth, aheight;
339 int chunksize;
340 int maxclusters;
341 int chwidth, chheight;
343
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;
357
358 friend void qt_unview(QtCanvas* c);
359
360 Q_DISABLE_COPY(QtCanvas)
361};
362
363class QtCanvasViewData;
364
365class QtCanvasView : public QScrollArea {
366 Q_OBJECT
368public:
369
370 QtCanvasView(QWidget* parent = 0);
371 QtCanvasView(QtCanvas* viewing, QWidget* parent = 0);
373
374 QtCanvas* canvas() const {
375 return viewing;
376 }
378
379 const QMatrix& worldMatrix() const;
380 const QMatrix& inverseWorldMatrix() const;
381 bool setWorldMatrix(const QMatrix&);
382
383 virtual QSize sizeHint() const;
384
386public slots:
387 void setHighQualityRendering(bool enable);
388
389protected:
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
404private:
405 friend class QtCanvas;
406 void drawContents(QPainter*);
409
410private slots:
412
413private:
414 Q_DISABLE_COPY(QtCanvasView)
415};
416
417
418class QtCanvasPixmap : public QPixmap {
419public:
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
438private:
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
455public:
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
480private:
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
493class QtCanvasSprite : public QtCanvasItem {
494public:
496
498
500
501 void move(double x, double y);
502 virtual void move(double x, double y, int frame);
503 void setFrame(int);
504 enum FrameAnimationType { Cycle, Oscillate };
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 }
539 QtCanvasPixmap* image(int f) const {
540 return images->image(f);
541 }
542 virtual void advance(int stage);
543
544public:
545 void draw(QPainter& painter);
546
547private:
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*,
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
571
572class QtCanvasPolygonalItem : public QtCanvasItem {
573public:
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
596protected:
597 void draw(QPainter&);
598 virtual void drawShape(QPainter&) = 0;
599
600 bool winding() const;
601 void setWinding(bool);
602
604 bool isValid() const {
605 return (bool)val;
606 }
607
608private:
609 void scanPolygon(const QPolygon& pa, int winding,
610 QPolygonalProcessor& process) const;
611 QPolygon chunks() const;
612
615 const QtCanvasRectangle*,
616 const QtCanvasEllipse*,
617 const QtCanvasText*) const;
618
619 QBrush br;
620 QPen pn;
621 uint wind: 1;
622};
623
624
626public:
628 QtCanvasRectangle(const QRect&, QtCanvas* canvas);
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
649protected:
650 void drawShape(QPainter&);
651 QPolygon chunks() const;
652
653private:
656 const QtCanvasRectangle*,
657 const QtCanvasEllipse*,
658 const QtCanvasText*) const;
659
660 int w, h;
661};
662
663
665public:
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
677protected:
678 void drawShape(QPainter&);
679 QPolygon poly;
680};
681
682
683class QtCanvasSpline : public QtCanvasPolygon {
684public:
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
695private:
697 QPolygon bez;
698 bool cl;
699};
700
701
702class QtCanvasLine : public QtCanvasPolygonalItem {
703public:
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
721protected:
722 void drawShape(QPainter&);
723 QPolygon areaPoints() const;
724
725private:
726 int x1, y1, x2, y2;
727};
728
729
731
732public:
734 QtCanvasEllipse(int width, int height, QtCanvas* canvas);
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
757protected:
758 void drawShape(QPainter&);
759
760private:
763 const QtCanvasRectangle*,
764 const QtCanvasEllipse*,
765 const QtCanvasText*) const;
766 int w, h;
767 int a1, a2;
768};
769
770
771class QtCanvasTextExtra;
772
773class QtCanvasText : public QtCanvasItem {
774public:
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
802protected:
803 virtual void draw(QPainter&);
804
805private:
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*,
822 const QtCanvasRectangle*,
823 const QtCanvasEllipse*,
824 const QtCanvasText*) const;
825};
826
827#endif // QTCANVAS_H
#define a
QList< QtCanvasItem * > QtCanvasItemList
Definition: canvas_typed/qtcanvas.h:62
QList< QtCanvasItem * > QtCanvasItemList
Definition: canvas_variant/qtcanvas.h:62
Definition: canvas_typed/qtcanvas.cpp:3477
Definition: canvas_typed/qtcanvas.cpp:284
Definition: canvas_typed/qtcanvas.cpp:56
Definition: canvas_typed/qtcanvas.h:730
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
bool collidesWith(const QtCanvasSprite *, const QtCanvasPolygonalItem *, const QtCanvasRectangle *, const QtCanvasEllipse *, const QtCanvasText *) 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
int width() const
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
static QtCanvas * current_canvas
Definition: canvas_typed/qtcanvas.h:198
QtCanvas * cnv
Definition: canvas_typed/qtcanvas.h:197
double myz
Definition: canvas_typed/qtcanvas.h:199
uint val
Definition: canvas_typed/qtcanvas.h:204
bool animated() const
void move(double x, double y)
virtual void setEnabled(bool yes)
virtual QRect boundingRectAdvanced() const
virtual void changeChunks()
Definition: canvas_typed/qtcanvas.cpp:2383
void setX(double a)
Definition: canvas_variant/qtcanvas.h:84
uint ena
Definition: canvas_typed/qtcanvas.h:206
uint ani
Definition: canvas_typed/qtcanvas.h:202
virtual void advance(int stage)
virtual void changeChunks()
virtual bool collidesWith(const QtCanvasSprite *, const QtCanvasPolygonalItem *, const QtCanvasRectangle *, const QtCanvasEllipse *, const QtCanvasText *) const =0
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)
QtCanvasItemExtra & extra()
uint act
Definition: canvas_typed/qtcanvas.h:207
QtCanvasItem(QtCanvas *canvas)
uint vis
Definition: canvas_typed/qtcanvas.h:203
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
virtual QPolygon chunks() const
bool visible() const
Definition: canvas_variant/qtcanvas.h:135
double myx
Definition: canvas_typed/qtcanvas.h:199
uint sel
Definition: canvas_typed/qtcanvas.h:205
double myy
Definition: canvas_typed/qtcanvas.h:199
virtual void removeFromChunks()
QtCanvas * canvas() const
Definition: canvas_typed/qtcanvas.h:166
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
void setZ(double a)
Definition: canvas_variant/qtcanvas.h:90
QtCanvasItemExtra * ext
Definition: canvas_typed/qtcanvas.h:200
virtual void addToChunks()
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
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())
bool readPixmaps(const QString &datafilenamepattern, int framecount, bool maskonly)
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
int hotx
Definition: canvas_typed/qtcanvas.h:448
QImage * collision_mask
Definition: canvas_typed/qtcanvas.h:450
QtCanvasPixmap(const QString &datafilename)
QtCanvasPixmap(const QImage &image)
int hoty
Definition: canvas_typed/qtcanvas.h:448
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
void init(const QImage &)
Definition: canvas_typed/qtcanvas.cpp:2476
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
Definition: canvas_typed/qtcanvas.h:572
virtual void setPen(QPen p)
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)
bool collidesWith(const QtCanvasSprite *, const QtCanvasPolygonalItem *, const QtCanvasRectangle *, const QtCanvasEllipse *, const QtCanvasText *) const
virtual ~QtCanvasPolygonalItem()
QPolygon chunks() const
void scanPolygon(const QPolygon &pa, int winding, QPolygonalProcessor &process) const
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
bool collidesWith(const QtCanvasSprite *, const QtCanvasPolygonalItem *, const QtCanvasRectangle *, const QtCanvasEllipse *, const QtCanvasText *) const
void setSize(int w, int h)
QPolygon chunks() const
int height() const
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
QRect rect() const
Definition: canvas_variant/qtcanvas.h:640
QtCanvasRectangle(QtCanvas *canvas)
Definition: canvas_typed/qtcanvas.h:683
QtCanvasSpline(QtCanvas *canvas)
bool closed() const
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_variant/qtcanvas.h:506
int bottomEdge(int ny) const
int rightEdge(int nx) const
int bottomEdge() const
bool collidesWith(const QtCanvasItem *) const
QtCanvasPixmap * image() const
Definition: canvas_variant/qtcanvas.h:535
int topEdge(int ny) const
void setFrame(int)
virtual QtCanvasPixmap * imageAdvanced() const
int frameCount() const
Definition: canvas_variant/qtcanvas.h:509
QRect boundingRect() const
virtual void advance(int stage)
int height() const
void draw(QPainter &painter)
int rightEdge() const
int width() const
int leftEdge() const
int rtti() const
int topEdge() const
FrameAnimationType
Definition: canvas_typed/qtcanvas.h:504
QtCanvasPixmap * image(int f) const
Definition: canvas_variant/qtcanvas.h:539
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)
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)
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 *)
void drawContents(QPainter *)
virtual void contentsDropEvent(QDropEvent *)
void setHighQualityRendering(bool enable)
Definition: canvas_typed/qtcanvas.cpp:3162
virtual void contentsDragEnterEvent(QDragEnterEvent *)
virtual void contentsMouseDoubleClickEvent(QMouseEvent *)
virtual void contentsDragMoveEvent(QDragMoveEvent *)
bool highQualityRendering() const
bool setWorldMatrix(const QMatrix &)
QtCanvasView(QtCanvas *viewing, QWidget *parent=0)
void updateContentsSize()
QtCanvasView(QWidget *parent=0)
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 *)
const QMatrix & inverseWorldMatrix() const
virtual void contentsMousePressEvent(QMouseEvent *)
virtual void contentsWheelEvent(QWheelEvent *)
QtCanvas * viewing
Definition: canvas_typed/qtcanvas.h:407
QtCanvas * canvas() const
Definition: canvas_variant/qtcanvas.h:374
QtCanvasViewData * d
Definition: canvas_typed/qtcanvas.h:408
const QMatrix & worldMatrix() const
virtual QSize sizeHint() const
bool highQualityRendering
Definition: canvas_typed/qtcanvas.h:367
void setCanvas(QtCanvas *v)
Definition: canvas_typed/qtcanvas.cpp:3059
Definition: canvas_typed/qtcanvas.h:213
int chwidth
Definition: canvas_typed/qtcanvas.h:341
void addItemToChunkContaining(QtCanvasItem *, int x, int y)
virtual void setBackgroundPixmap(const QPixmap &p)
ushort vtiles
Definition: canvas_typed/qtcanvas.h:349
virtual void addItem(QtCanvasItem *)
QtCanvasChunk * chunks
Definition: canvas_typed/qtcanvas.h:342
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()
QtCanvasChunk & chunkContaining(int x, int y) const
ushort htiles
Definition: canvas_typed/qtcanvas.h:348
virtual void setAdvancePeriod(int ms)
virtual void setUpdatePeriod(int ms)
bool oneone
Definition: canvas_typed/qtcanvas.h:352
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 *)
QTimer * update_timer
Definition: canvas_typed/qtcanvas.h:354
QtCanvas(int w, int h)
int maxclusters
Definition: canvas_typed/qtcanvas.h:340
virtual void addView(QtCanvasView *)
QRect changeBounds()
bool validChunk(int x, int y) const
Definition: canvas_variant/qtcanvas.h:268
ushort tileh
Definition: canvas_typed/qtcanvas.h:351
void initTiles(QPixmap p, int h, int v, int tilewidth, int tileheight)
virtual void setAllChanged()
bool debug_redraw_areas
Definition: canvas_typed/qtcanvas.h:356
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
QPixmap pm
Definition: canvas_typed/qtcanvas.h:353
ushort tilew
Definition: canvas_typed/qtcanvas.h:350
QColor bgcolor
Definition: canvas_typed/qtcanvas.h:355
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 *)
int chheight
Definition: canvas_typed/qtcanvas.h:341
QtCanvasItemList collisions(const QPolygon &pa, const QtCanvasItem *item, bool exact) const
virtual void removeView(QtCanvasView *)
int tileHeight() const
Definition: canvas_variant/qtcanvas.h:245
int chunksize
Definition: canvas_typed/qtcanvas.h:339
QtCanvasData * d
Definition: canvas_typed/qtcanvas.h:344
bool validChunk(const QPoint &p) const
Definition: canvas_variant/qtcanvas.h:271
QtCanvasItemList collisions(const QPoint &) const
QtCanvasChunk & chunk(int i, int j) 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()
ushort * grid
Definition: canvas_typed/qtcanvas.h:347
virtual void setTile(int x, int y, int tilenum)
int aheight
Definition: canvas_typed/qtcanvas.h:338
virtual ~QtCanvas()
QtCanvasItemList allItems()
int awidth
Definition: canvas_typed/qtcanvas.h:338
int tileWidth() const
Definition: canvas_variant/qtcanvas.h:242
virtual void setTiles(QPixmap tiles, int h, int v, int tilewidth, int tileheight)
void init(int w, int h, int chunksze=16, int maxclust=100)
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