1 #include "SkDevice.h" 2 #include "SkDraw.h" 3 #include "SkRect.h" 4 5 SkDevice::SkDevice() {} 6 7 SkDevice::SkDevice(const SkBitmap& bitmap) : fBitmap(bitmap) {} 8 9 void SkDevice::lockPixels() { 10 fBitmap.lockPixels(); 11 } 12 13 void SkDevice::unlockPixels() { 14 fBitmap.unlockPixels(); 15 } 16 17 const SkBitmap& SkDevice::accessBitmap(bool changePixels) { 18 this->onAccessBitmap(&fBitmap); 19 if (changePixels) { 20 fBitmap.notifyPixelsChanged(); 21 } 22 return fBitmap; 23 } 24 25 void SkDevice::getBounds(SkIRect* bounds) const { 26 if (bounds) { 27 bounds->set(0, 0, fBitmap.width(), fBitmap.height()); 28 } 29 } 30 31 bool SkDevice::intersects(const SkIRect& r, SkIRect* sect) const { 32 SkIRect bounds; 33 34 this->getBounds(&bounds); 35 return sect ? sect->intersect(r, bounds) : SkIRect::Intersects(r, bounds); 36 } 37 38 void SkDevice::eraseColor(SkColor eraseColor) { 39 fBitmap.eraseColor(eraseColor); 40 } 41 42 void SkDevice::onAccessBitmap(SkBitmap* bitmap) {} 43 44 void SkDevice::setMatrixClip(const SkMatrix&, const SkRegion&) {} 45 46 /////////////////////////////////////////////////////////////////////////////// 47 48 void SkDevice::drawPaint(const SkDraw& draw, const SkPaint& paint) { 49 draw.drawPaint(paint); 50 } 51 52 void SkDevice::drawPoints(const SkDraw& draw, SkCanvas::PointMode mode, size_t count, 53 const SkPoint pts[], const SkPaint& paint) { 54 draw.drawPoints(mode, count, pts, paint); 55 } 56 57 void SkDevice::drawRect(const SkDraw& draw, const SkRect& r, 58 const SkPaint& paint) { 59 draw.drawRect(r, paint); 60 } 61 62 void SkDevice::drawPath(const SkDraw& draw, const SkPath& path, 63 const SkPaint& paint) { 64 draw.drawPath(path, paint); 65 } 66 67 void SkDevice::drawBitmap(const SkDraw& draw, const SkBitmap& bitmap, 68 const SkMatrix& matrix, const SkPaint& paint) { 69 draw.drawBitmap(bitmap, matrix, paint); 70 } 71 72 void SkDevice::drawSprite(const SkDraw& draw, const SkBitmap& bitmap, 73 int x, int y, const SkPaint& paint) { 74 draw.drawSprite(bitmap, x, y, paint); 75 } 76 77 void SkDevice::drawText(const SkDraw& draw, const void* text, size_t len, 78 SkScalar x, SkScalar y, const SkPaint& paint) { 79 draw.drawText((const char*)text, len, x, y, paint); 80 } 81 82 void SkDevice::drawPosText(const SkDraw& draw, const void* text, size_t len, 83 const SkScalar xpos[], SkScalar y, 84 int scalarsPerPos, const SkPaint& paint) { 85 draw.drawPosText((const char*)text, len, xpos, y, scalarsPerPos, paint); 86 } 87 88 void SkDevice::drawTextOnPath(const SkDraw& draw, const void* text, 89 size_t len, const SkPath& path, 90 const SkMatrix* matrix, 91 const SkPaint& paint) { 92 draw.drawTextOnPath((const char*)text, len, path, matrix, paint); 93 } 94 95 void SkDevice::drawPosTextOnPath(const SkDraw& draw, const void* text, size_t len, 96 const SkPoint pos[], const SkPaint& paint, 97 const SkPath& path, const SkMatrix* matrix) { 98 draw.drawPosTextOnPath((const char*)text, len, pos, paint, path, matrix); 99 } 100 101 void SkDevice::drawVertices(const SkDraw& draw, SkCanvas::VertexMode vmode, 102 int vertexCount, 103 const SkPoint verts[], const SkPoint textures[], 104 const SkColor colors[], SkXfermode* xmode, 105 const uint16_t indices[], int indexCount, 106 const SkPaint& paint) { 107 draw.drawVertices(vmode, vertexCount, verts, textures, colors, xmode, 108 indices, indexCount, paint); 109 } 110 111 void SkDevice::drawDevice(const SkDraw& draw, SkDevice* device, 112 int x, int y, const SkPaint& paint) { 113 draw.drawSprite(device->accessBitmap(false), x, y, paint); 114 } 115 116 117