00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef SkDevice_DEFINED
00018 #define SkDevice_DEFINED
00019
00020 #include "SkRefCnt.h"
00021 #include "SkBitmap.h"
00022 #include "SkCanvas.h"
00023 #include "SkColor.h"
00024
00025 class SkDraw;
00026 struct SkIRect;
00027 class SkMatrix;
00028 class SkRegion;
00029
00030 class SkDevice : public SkRefCnt {
00031 public:
00032 SkDevice();
00043 SkDevice(const SkBitmap& bitmap);
00044
00047 int width() const { return fBitmap.width(); }
00050 int height() const { return fBitmap.height(); }
00053 SkBitmap::Config config() const { return fBitmap.getConfig(); }
00057 bool isOpaque() const { return fBitmap.isOpaque(); }
00058
00061 void getBounds(SkIRect* bounds) const;
00062
00067 bool intersects(const SkIRect& r, SkIRect* sect = NULL) const;
00068
00075 const SkBitmap& accessBitmap(bool changePixels);
00076
00080 void eraseColor(SkColor eraseColor);
00081
00085 virtual void lockPixels();
00086 virtual void unlockPixels();
00087
00092 virtual void setMatrixClip(const SkMatrix&, const SkRegion&);
00093
00097 virtual void gainFocus(SkCanvas*) {}
00098
00104 virtual void drawPaint(const SkDraw&, const SkPaint& paint);
00105 virtual void drawPoints(const SkDraw&, SkCanvas::PointMode mode, size_t count,
00106 const SkPoint[], const SkPaint& paint);
00107 virtual void drawRect(const SkDraw&, const SkRect& r,
00108 const SkPaint& paint);
00109 virtual void drawPath(const SkDraw&, const SkPath& path,
00110 const SkPaint& paint);
00111 virtual void drawBitmap(const SkDraw&, const SkBitmap& bitmap,
00112 const SkMatrix& matrix, const SkPaint& paint);
00113 virtual void drawSprite(const SkDraw&, const SkBitmap& bitmap,
00114 int x, int y, const SkPaint& paint);
00115 virtual void drawText(const SkDraw&, const void* text, size_t len,
00116 SkScalar x, SkScalar y, const SkPaint& paint);
00117 virtual void drawPosText(const SkDraw&, const void* text, size_t len,
00118 const SkScalar pos[], SkScalar constY,
00119 int scalarsPerPos, const SkPaint& paint);
00120 virtual void drawTextOnPath(const SkDraw&, const void* text, size_t len,
00121 const SkPath& path, const SkMatrix* matrix,
00122 const SkPaint& paint);
00123 virtual void drawVertices(const SkDraw&, SkCanvas::VertexMode, int vertexCount,
00124 const SkPoint verts[], const SkPoint texs[],
00125 const SkColor colors[], SkXfermode* xmode,
00126 const uint16_t indices[], int indexCount,
00127 const SkPaint& paint);
00128 virtual void drawDevice(const SkDraw&, SkDevice*, int x, int y,
00129 const SkPaint&);
00130
00131 protected:
00136 virtual void onAccessBitmap(SkBitmap*);
00137
00138 private:
00139 SkBitmap fBitmap;
00140 };
00141
00142 #endif