11cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger
21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/*
31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2011 Google Inc.
41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger *
51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file.
71cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger */
80910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project#include "SkProxyCanvas.h"
90910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkProxyCanvas::SkProxyCanvas(SkCanvas* proxy) : fProxy(proxy) {
1140528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    SkSafeRef(fProxy);
120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkProxyCanvas::~SkProxyCanvas() {
1540528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger    SkSafeUnref(fProxy);
160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1740528743dbb9ce7f39f093e0cdc47849ac8887cfDerek Sollenberger
180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::setProxy(SkCanvas* proxy) {
190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    SkRefCnt_SafeAssign(fProxy, proxy);
200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project///////////////////////////////// Overrides ///////////
230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectint SkProxyCanvas::save(SaveFlags flags) {
250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return fProxy->save(flags);
260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectint SkProxyCanvas::saveLayer(const SkRect* bounds, const SkPaint* paint,
290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                             SaveFlags flags) {
300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return fProxy->saveLayer(bounds, paint, flags);
310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::restore() {
340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->restore();
350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkProxyCanvas::translate(SkScalar dx, SkScalar dy) {
380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return fProxy->translate(dx, dy);
390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkProxyCanvas::scale(SkScalar sx, SkScalar sy) {
420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return fProxy->scale(sx, sy);
430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
450910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkProxyCanvas::rotate(SkScalar degrees) {
460910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return fProxy->rotate(degrees);
470910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
480910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkProxyCanvas::skew(SkScalar sx, SkScalar sy) {
500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return fProxy->skew(sx, sy);
510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkProxyCanvas::concat(const SkMatrix& matrix) {
540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return fProxy->concat(matrix);
550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
570910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::setMatrix(const SkMatrix& matrix) {
580910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->setMatrix(matrix);
590910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
600910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
611cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerbool SkProxyCanvas::clipRect(const SkRect& rect, SkRegion::Op op, bool doAA) {
621cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    return fProxy->clipRect(rect, op, doAA);
630910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
640910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
651cab2921ab279367f8206cdadc9259d12e603548Derek Sollenbergerbool SkProxyCanvas::clipPath(const SkPath& path, SkRegion::Op op, bool doAA) {
661cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger    return fProxy->clipPath(path, op, doAA);
670910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
680910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
690910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectbool SkProxyCanvas::clipRegion(const SkRegion& deviceRgn, SkRegion::Op op) {
700910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return fProxy->clipRegion(deviceRgn, op);
710910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
720910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
730910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawPaint(const SkPaint& paint) {
740910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawPaint(paint);
750910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
760910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
770910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawPoints(PointMode mode, size_t count,
780910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                               const SkPoint pts[], const SkPaint& paint) {
790910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawPoints(mode, count, pts, paint);
800910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
810910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
820910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawRect(const SkRect& rect, const SkPaint& paint) {
830910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawRect(rect, paint);
840910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
850910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
860910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawPath(const SkPath& path, const SkPaint& paint) {
870910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawPath(path, paint);
880910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
890910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
900910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawBitmap(const SkBitmap& bitmap, SkScalar x, SkScalar y,
910910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                               const SkPaint* paint) {
920910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawBitmap(bitmap, x, y, paint);
930910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
940910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
950910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawBitmapRect(const SkBitmap& bitmap, const SkIRect* src,
960910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                   const SkRect& dst, const SkPaint* paint) {
970910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawBitmapRect(bitmap, src, dst, paint);
980910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
990910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1000910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawBitmapMatrix(const SkBitmap& bitmap, const SkMatrix& m,
1010910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                     const SkPaint* paint) {
1020910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawBitmapMatrix(bitmap, m, paint);
1030910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1040910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1050910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawSprite(const SkBitmap& bitmap, int x, int y,
1060910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                               const SkPaint* paint) {
1070910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawSprite(bitmap, x, y, paint);
1080910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1090910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1100910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawText(const void* text, size_t byteLength, SkScalar x,
1110910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                             SkScalar y, const SkPaint& paint) {
1120910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawText(text, byteLength, x, y, paint);
1130910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1140910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1150910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawPosText(const void* text, size_t byteLength,
1160910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                const SkPoint pos[], const SkPaint& paint) {
1170910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawPosText(text, byteLength, pos, paint);
1180910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1190910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1200910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawPosTextH(const void* text, size_t byteLength,
1210910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                 const SkScalar xpos[], SkScalar constY,
1220910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                 const SkPaint& paint) {
1230910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawPosTextH(text, byteLength, xpos, constY, paint);
1240910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1250910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1260910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawTextOnPath(const void* text, size_t byteLength,
1270910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                   const SkPath& path, const SkMatrix* matrix,
1280910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                   const SkPaint& paint) {
1290910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawTextOnPath(text, byteLength, path, matrix, paint);
1300910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1310910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1320910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawPicture(SkPicture& picture) {
1330910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawPicture(picture);
1340910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1350910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1360910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Projectvoid SkProxyCanvas::drawVertices(VertexMode vmode, int vertexCount,
1370910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                 const SkPoint vertices[], const SkPoint texs[],
1380910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                 const SkColor colors[], SkXfermode* xmode,
1390910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                 const uint16_t indices[], int indexCount,
1400910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                 const SkPaint& paint) {
1410910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    fProxy->drawVertices(vmode, vertexCount, vertices, texs, colors,
1420910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project                                     xmode, indices, indexCount, paint);
1430910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1440910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
14593d11b5b461a8677a8e3ffa94260f4f9897070acMike Reedvoid SkProxyCanvas::drawData(const void* data, size_t length) {
14693d11b5b461a8677a8e3ffa94260f4f9897070acMike Reed    fProxy->drawData(data, length);
14793d11b5b461a8677a8e3ffa94260f4f9897070acMike Reed}
14893d11b5b461a8677a8e3ffa94260f4f9897070acMike Reed
1490910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkBounder* SkProxyCanvas::setBounder(SkBounder* bounder) {
1500910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return fProxy->setBounder(bounder);
1510910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1520910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
1530910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source ProjectSkDrawFilter* SkProxyCanvas::setDrawFilter(SkDrawFilter* filter) {
1540910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project    return fProxy->setDrawFilter(filter);
1550910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project}
1560910916c0f7b951ee55c4b7c6358295b9bca0565The Android Open Source Project
157