1 2/* 3 * Copyright 2011 Google Inc. 4 * 5 * Use of this source code is governed by a BSD-style license that can be 6 * found in the LICENSE file. 7 */ 8#include "SkProxyCanvas.h" 9 10SkProxyCanvas::SkProxyCanvas(SkCanvas* proxy) : fProxy(proxy) { 11 SkSafeRef(fProxy); 12} 13 14SkProxyCanvas::~SkProxyCanvas() { 15 SkSafeUnref(fProxy); 16} 17 18void SkProxyCanvas::setProxy(SkCanvas* proxy) { 19 SkRefCnt_SafeAssign(fProxy, proxy); 20} 21 22///////////////////////////////// Overrides /////////// 23 24void SkProxyCanvas::willSave() { 25 fProxy->save(); 26 this->INHERITED::willSave(); 27} 28 29SkCanvas::SaveLayerStrategy SkProxyCanvas::willSaveLayer(const SkRect* bounds, const SkPaint* paint, 30 SaveFlags flags) { 31 fProxy->saveLayer(bounds, paint, flags); 32 this->INHERITED::willSaveLayer(bounds, paint, flags); 33 // No need for a layer. 34 return kNoLayer_SaveLayerStrategy; 35} 36 37void SkProxyCanvas::willRestore() { 38 fProxy->restore(); 39 this->INHERITED::willRestore(); 40} 41 42void SkProxyCanvas::didConcat(const SkMatrix& matrix) { 43 fProxy->concat(matrix); 44 this->INHERITED::didConcat(matrix); 45} 46 47void SkProxyCanvas::didSetMatrix(const SkMatrix& matrix) { 48 fProxy->setMatrix(matrix); 49 this->INHERITED::didSetMatrix(matrix); 50} 51 52void SkProxyCanvas::onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle edgeStyle) { 53 fProxy->clipRect(rect, op, kSoft_ClipEdgeStyle == edgeStyle); 54} 55 56void SkProxyCanvas::onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyle edgeStyle) { 57 fProxy->clipRRect(rrect, op, kSoft_ClipEdgeStyle == edgeStyle); 58} 59 60void SkProxyCanvas::onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle edgeStyle) { 61 fProxy->clipPath(path, op, kSoft_ClipEdgeStyle == edgeStyle); 62} 63 64void SkProxyCanvas::onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op) { 65 fProxy->clipRegion(deviceRgn, op); 66} 67 68void SkProxyCanvas::drawPaint(const SkPaint& paint) { 69 fProxy->drawPaint(paint); 70} 71 72void SkProxyCanvas::drawPoints(PointMode mode, size_t count, 73 const SkPoint pts[], const SkPaint& paint) { 74 fProxy->drawPoints(mode, count, pts, paint); 75} 76 77void SkProxyCanvas::drawOval(const SkRect& rect, const SkPaint& paint) { 78 fProxy->drawOval(rect, paint); 79} 80 81void SkProxyCanvas::drawRect(const SkRect& rect, const SkPaint& paint) { 82 fProxy->drawRect(rect, paint); 83} 84 85void SkProxyCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) { 86 fProxy->drawRRect(rrect, paint); 87} 88 89void SkProxyCanvas::onDrawDRRect(const SkRRect& outer, const SkRRect& inner, 90 const SkPaint& paint) { 91 fProxy->drawDRRect(outer, inner, paint); 92} 93 94void SkProxyCanvas::drawPath(const SkPath& path, const SkPaint& paint) { 95 fProxy->drawPath(path, paint); 96} 97 98void SkProxyCanvas::drawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y, 99 const SkPaint* paint) { 100 fProxy->drawBitmap(bitmap, x, y, paint); 101} 102 103void SkProxyCanvas::drawBitmapRectToRect(const SkBitmap& bitmap, const SkRect* src, 104 const SkRect& dst, const SkPaint* paint, 105 DrawBitmapRectFlags flags) { 106 fProxy->drawBitmapRectToRect(bitmap, src, dst, paint, flags); 107} 108 109void SkProxyCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m, 110 const SkPaint* paint) { 111 fProxy->drawBitmapMatrix(bitmap, m, paint); 112} 113 114void SkProxyCanvas::drawSprite(const SkBitmap& bitmap, int x, int y, 115 const SkPaint* paint) { 116 fProxy->drawSprite(bitmap, x, y, paint); 117} 118 119void SkProxyCanvas::onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, 120 const SkPaint& paint) { 121 fProxy->drawText(text, byteLength, x, y, paint); 122} 123 124void SkProxyCanvas::onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], 125 const SkPaint& paint) { 126 fProxy->drawPosText(text, byteLength, pos, paint); 127} 128 129void SkProxyCanvas::onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], 130 SkScalar constY, const SkPaint& paint) { 131 fProxy->drawPosTextH(text, byteLength, xpos, constY, paint); 132} 133 134void SkProxyCanvas::onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& path, 135 const SkMatrix* matrix, const SkPaint& paint) { 136 fProxy->drawTextOnPath(text, byteLength, path, matrix, paint); 137} 138 139void SkProxyCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, 140 const SkPaint& paint) { 141 fProxy->drawTextBlob(blob, x, y, paint); 142} 143 144void SkProxyCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix, 145 const SkPaint* paint) { 146 fProxy->drawPicture(picture, matrix, paint); 147} 148 149void SkProxyCanvas::drawVertices(VertexMode vmode, int vertexCount, 150 const SkPoint vertices[], const SkPoint texs[], 151 const SkColor colors[], SkXfermode* xmode, 152 const uint16_t indices[], int indexCount, 153 const SkPaint& paint) { 154 fProxy->drawVertices(vmode, vertexCount, vertices, texs, colors, 155 xmode, indices, indexCount, paint); 156} 157 158void SkProxyCanvas::onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], 159 const SkPoint texCoords[4], SkXfermode* xmode, 160 const SkPaint& paint) { 161 fProxy->drawPatch(cubics, colors, texCoords, xmode, paint); 162} 163 164void SkProxyCanvas::drawData(const void* data, size_t length) { 165 fProxy->drawData(data, length); 166} 167 168void SkProxyCanvas::beginCommentGroup(const char* description) { 169 fProxy->beginCommentGroup(description); 170} 171 172void SkProxyCanvas::addComment(const char* kywd, const char* value) { 173 fProxy->addComment(kywd, value); 174} 175 176void SkProxyCanvas::endCommentGroup() { 177 fProxy->endCommentGroup(); 178} 179 180SkDrawFilter* SkProxyCanvas::setDrawFilter(SkDrawFilter* filter) { 181 return fProxy->setDrawFilter(filter); 182} 183