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
SkProxyCanvas(SkCanvas * proxy)10 SkProxyCanvas::SkProxyCanvas(SkCanvas* proxy) : fProxy(proxy) {
11 SkSafeRef(fProxy);
12 }
13
~SkProxyCanvas()14 SkProxyCanvas::~SkProxyCanvas() {
15 SkSafeUnref(fProxy);
16 }
17
setProxy(SkCanvas * proxy)18 void SkProxyCanvas::setProxy(SkCanvas* proxy) {
19 SkRefCnt_SafeAssign(fProxy, proxy);
20 }
21
22 ///////////////////////////////// Overrides ///////////
23
willSave()24 void SkProxyCanvas::willSave() {
25 fProxy->save();
26 this->INHERITED::willSave();
27 }
28
willSaveLayer(const SkRect * bounds,const SkPaint * paint,SaveFlags flags)29 SkCanvas::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
willRestore()37 void SkProxyCanvas::willRestore() {
38 fProxy->restore();
39 this->INHERITED::willRestore();
40 }
41
didConcat(const SkMatrix & matrix)42 void SkProxyCanvas::didConcat(const SkMatrix& matrix) {
43 fProxy->concat(matrix);
44 this->INHERITED::didConcat(matrix);
45 }
46
didSetMatrix(const SkMatrix & matrix)47 void SkProxyCanvas::didSetMatrix(const SkMatrix& matrix) {
48 fProxy->setMatrix(matrix);
49 this->INHERITED::didSetMatrix(matrix);
50 }
51
onClipRect(const SkRect & rect,SkRegion::Op op,ClipEdgeStyle edgeStyle)52 void SkProxyCanvas::onClipRect(const SkRect& rect, SkRegion::Op op, ClipEdgeStyle edgeStyle) {
53 fProxy->clipRect(rect, op, kSoft_ClipEdgeStyle == edgeStyle);
54 }
55
onClipRRect(const SkRRect & rrect,SkRegion::Op op,ClipEdgeStyle edgeStyle)56 void SkProxyCanvas::onClipRRect(const SkRRect& rrect, SkRegion::Op op, ClipEdgeStyle edgeStyle) {
57 fProxy->clipRRect(rrect, op, kSoft_ClipEdgeStyle == edgeStyle);
58 }
59
onClipPath(const SkPath & path,SkRegion::Op op,ClipEdgeStyle edgeStyle)60 void SkProxyCanvas::onClipPath(const SkPath& path, SkRegion::Op op, ClipEdgeStyle edgeStyle) {
61 fProxy->clipPath(path, op, kSoft_ClipEdgeStyle == edgeStyle);
62 }
63
onClipRegion(const SkRegion & deviceRgn,SkRegion::Op op)64 void SkProxyCanvas::onClipRegion(const SkRegion& deviceRgn, SkRegion::Op op) {
65 fProxy->clipRegion(deviceRgn, op);
66 }
67
drawPaint(const SkPaint & paint)68 void SkProxyCanvas::drawPaint(const SkPaint& paint) {
69 fProxy->drawPaint(paint);
70 }
71
drawPoints(PointMode mode,size_t count,const SkPoint pts[],const SkPaint & paint)72 void SkProxyCanvas::drawPoints(PointMode mode, size_t count,
73 const SkPoint pts[], const SkPaint& paint) {
74 fProxy->drawPoints(mode, count, pts, paint);
75 }
76
drawOval(const SkRect & rect,const SkPaint & paint)77 void SkProxyCanvas::drawOval(const SkRect& rect, const SkPaint& paint) {
78 fProxy->drawOval(rect, paint);
79 }
80
drawRect(const SkRect & rect,const SkPaint & paint)81 void SkProxyCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
82 fProxy->drawRect(rect, paint);
83 }
84
drawRRect(const SkRRect & rrect,const SkPaint & paint)85 void SkProxyCanvas::drawRRect(const SkRRect& rrect, const SkPaint& paint) {
86 fProxy->drawRRect(rrect, paint);
87 }
88
onDrawDRRect(const SkRRect & outer,const SkRRect & inner,const SkPaint & paint)89 void SkProxyCanvas::onDrawDRRect(const SkRRect& outer, const SkRRect& inner,
90 const SkPaint& paint) {
91 fProxy->drawDRRect(outer, inner, paint);
92 }
93
drawPath(const SkPath & path,const SkPaint & paint)94 void SkProxyCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
95 fProxy->drawPath(path, paint);
96 }
97
drawBitmap(const SkBitmap & bitmap,SkScalar x,SkScalar y,const SkPaint * paint)98 void SkProxyCanvas::drawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y,
99 const SkPaint* paint) {
100 fProxy->drawBitmap(bitmap, x, y, paint);
101 }
102
drawBitmapRectToRect(const SkBitmap & bitmap,const SkRect * src,const SkRect & dst,const SkPaint * paint,DrawBitmapRectFlags flags)103 void 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
drawBitmapMatrix(const SkBitmap & bitmap,const SkMatrix & m,const SkPaint * paint)109 void SkProxyCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m,
110 const SkPaint* paint) {
111 fProxy->drawBitmapMatrix(bitmap, m, paint);
112 }
113
drawSprite(const SkBitmap & bitmap,int x,int y,const SkPaint * paint)114 void SkProxyCanvas::drawSprite(const SkBitmap& bitmap, int x, int y,
115 const SkPaint* paint) {
116 fProxy->drawSprite(bitmap, x, y, paint);
117 }
118
onDrawText(const void * text,size_t byteLength,SkScalar x,SkScalar y,const SkPaint & paint)119 void 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
onDrawPosText(const void * text,size_t byteLength,const SkPoint pos[],const SkPaint & paint)124 void SkProxyCanvas::onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[],
125 const SkPaint& paint) {
126 fProxy->drawPosText(text, byteLength, pos, paint);
127 }
128
onDrawPosTextH(const void * text,size_t byteLength,const SkScalar xpos[],SkScalar constY,const SkPaint & paint)129 void 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
onDrawTextOnPath(const void * text,size_t byteLength,const SkPath & path,const SkMatrix * matrix,const SkPaint & paint)134 void 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
onDrawTextBlob(const SkTextBlob * blob,SkScalar x,SkScalar y,const SkPaint & paint)139 void SkProxyCanvas::onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y,
140 const SkPaint& paint) {
141 fProxy->drawTextBlob(blob, x, y, paint);
142 }
143
onDrawPicture(const SkPicture * picture,const SkMatrix * matrix,const SkPaint * paint)144 void SkProxyCanvas::onDrawPicture(const SkPicture* picture, const SkMatrix* matrix,
145 const SkPaint* paint) {
146 fProxy->drawPicture(picture, matrix, paint);
147 }
148
drawVertices(VertexMode vmode,int vertexCount,const SkPoint vertices[],const SkPoint texs[],const SkColor colors[],SkXfermode * xmode,const uint16_t indices[],int indexCount,const SkPaint & paint)149 void 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
onDrawPatch(const SkPoint cubics[12],const SkColor colors[4],const SkPoint texCoords[4],SkXfermode * xmode,const SkPaint & paint)158 void 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
drawData(const void * data,size_t length)164 void SkProxyCanvas::drawData(const void* data, size_t length) {
165 fProxy->drawData(data, length);
166 }
167
beginCommentGroup(const char * description)168 void SkProxyCanvas::beginCommentGroup(const char* description) {
169 fProxy->beginCommentGroup(description);
170 }
171
addComment(const char * kywd,const char * value)172 void SkProxyCanvas::addComment(const char* kywd, const char* value) {
173 fProxy->addComment(kywd, value);
174 }
175
endCommentGroup()176 void SkProxyCanvas::endCommentGroup() {
177 fProxy->endCommentGroup();
178 }
179
setDrawFilter(SkDrawFilter * filter)180 SkDrawFilter* SkProxyCanvas::setDrawFilter(SkDrawFilter* filter) {
181 return fProxy->setDrawFilter(filter);
182 }
183