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>
65 class QtCanvasItemExtra;
80 virtual void moveBy(
double dx,
double dy);
81 void move(
double x,
double y);
93 virtual void advance(
int stage);
101 virtual void draw(QPainter&)=0;
108 {
return (
bool)
vis; }
111 {
return (
bool)
sel; }
114 {
return (
bool)
ena; }
117 {
return (
bool)
act; }
119 {
return (
bool)
vis; }
121 {
return (
bool)
sel; }
123 {
return (
bool)
ena; }
125 {
return (
bool)
act; }
139 virtual int rtti()
const;
162 virtual QPolygon
chunks()
const;
177 QtCanvasItemExtra&
extra();
195 QtCanvas(QPixmap p,
int h,
int v,
int tilewidth,
int tileheight);
199 virtual void setTiles(QPixmap tiles,
int h,
int v,
200 int tilewidth,
int tileheight);
207 virtual void setTile(
int x,
int y,
int tilenum);
263 void drawArea(
const QRect&, QPainter* p,
bool double_buffer=
false);
269 void drawCanvasArea(
const QRect&, QPainter* p=0,
bool double_buffer=
true);
293 void init(
int w,
int h,
int chunksze=16,
int maxclust=100);
295 QtCanvasChunk&
chunk(
int i,
int j)
const;
308 void initTiles(QPixmap p,
int h,
int v,
int tilewidth,
int tileheight);
325 class QtCanvasViewData;
353 virtual void drawContents(QPainter *p,
int cx,
int cy,
int cw,
int ch);
383 #ifndef QT_NO_IMAGEIO
399 void
init(const QImage&);
400 void init(const QPixmap& pixmap,
int hx,
int hy);
404 friend
bool qt_testCollision(const QtCanvasSprite* s1, const QtCanvasSprite* s2);
412 class QtCanvasPixmapArray
416 #ifndef QT_NO_IMAGEIO
420 ~QtCanvasPixmapArray();
422 #ifndef QT_NO_IMAGEIO
423 bool readPixmaps(
const QString& datafilenamepattern,
int framecount=0);
424 bool readCollisionMasks(
const QString& filenamepattern);
429 bool isValid()
const;
432 {
return img ? img[i] : 0; }
435 {
return (uint)framecount; }
438 Q_DISABLE_COPY(QtCanvasPixmapArray)
440 #ifndef QT_NO_IMAGEIO
441 bool readPixmaps(
const QString& datafilenamepattern,
int framecount,
bool maskonly);
455 void setSequence(QtCanvasPixmapArray* seq);
457 virtual ~QtCanvasSprite();
459 void move(
double x,
double y);
460 virtual void move(
double x,
double y,
int frame);
463 virtual void setFrameAnimation(FrameAnimationType=Cycle,
int step=1,
int state=0);
467 {
return images->count(); }
474 QRect boundingRect()
const;
482 int leftEdge()
const;
484 int rightEdge()
const;
485 int bottomEdge()
const;
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); }
495 {
return images->image(f); }
496 virtual void advance(
int stage);
499 void draw(QPainter& painter);
502 Q_DISABLE_COPY(QtCanvasSprite)
505 void removeFromChunks();
512 bool collidesWith(const QtCanvasSprite*,
519 const QtCanvasSprite* s2);
521 QtCanvasPixmapArray* images;
524 class QPolygonalProcessor;
529 QtCanvasPolygonalItem(
QtCanvas* canvas);
530 virtual ~QtCanvasPolygonalItem();
532 bool collidesWith(
const QtCanvasItem*)
const;
534 virtual void setPen(QPen p);
535 virtual void setBrush(QBrush b);
542 virtual QPolygon areaPoints()
const=0;
543 virtual QPolygon areaPointsAdvanced()
const;
544 QRect boundingRect()
const;
550 void draw(QPainter &);
551 virtual void drawShape(QPainter &) = 0;
553 bool winding()
const;
554 void setWinding(
bool);
558 {
return (
bool)val; }
561 void scanPolygon(
const QPolygon& pa,
int winding,
562 QPolygonalProcessor& process)
const;
563 QPolygon chunks()
const;
565 bool collidesWith(
const QtCanvasSprite*,
566 const QtCanvasPolygonalItem*,
567 const QtCanvasRectangle*,
568 const QtCanvasEllipse*,
588 void setSize(
int w,
int h);
590 {
return QSize(w,h); }
591 QPolygon areaPoints()
const;
593 {
return QRect(
int(x()),
int(y()),w,h); }
601 void drawShape(QPainter &);
602 QPolygon chunks()
const;
605 bool collidesWith(
const QtCanvasSprite*,
620 void setPoints(QPolygon);
621 QPolygon points()
const;
622 void moveBy(
double dx,
double dy);
624 QPolygon areaPoints()
const;
630 void drawShape(QPainter &);
641 void setControlPoints(QPolygon,
bool closed=
true);
642 QPolygon controlPoints()
const;
660 void setPoints(
int x1,
int y1,
int x2,
int y2);
663 {
return QPoint(x1,y1); }
665 {
return QPoint(x2,y2); }
671 void moveBy(
double dx,
double dy);
674 void drawShape(QPainter &);
675 QPolygon areaPoints()
const;
695 void setSize(
int w,
int h);
696 void setAngles(
int start,
int length);
701 QPolygon areaPoints()
const;
709 void drawShape(QPainter &);
712 bool collidesWith(
const QtCanvasSprite*,
722 class QtCanvasTextExtra;
733 void setText(
const QString&);
734 void setFont(
const QFont&);
735 void setColor(
const QColor&);
736 QString text()
const;
738 QColor color()
const;
740 void moveBy(
double dx,
double dy);
744 void setTextFlags(
int);
746 QRect boundingRect()
const;
754 virtual void draw(QPainter&);
760 void removeFromChunks();
769 QtCanvasTextExtra* extra;
771 bool collidesWith(const QtCanvasSprite*,
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)
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 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 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 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
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 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 *)
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)
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
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)
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