16c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 8ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 96c924ad46c89955e78e071c792ef00df9910b42freed@android.com#ifndef SkNWayCanvas_DEFINED 106c924ad46c89955e78e071c792ef00df9910b42freed@android.com#define SkNWayCanvas_DEFINED 116c924ad46c89955e78e071c792ef00df9910b42freed@android.com 12a7e9f05119174848c6be5028568f46eb5e85398ebungeman#include "../private/SkTDArray.h" 13439ace939b6aaa58408ece0e9e89b633353571aeFlorin Malita#include "SkNoDrawCanvas.h" 146c924ad46c89955e78e071c792ef00df9910b42freed@android.com 15439ace939b6aaa58408ece0e9e89b633353571aeFlorin Malitaclass SK_API SkNWayCanvas : public SkNoDrawCanvas { 166c924ad46c89955e78e071c792ef00df9910b42freed@android.compublic: 17f0a062bc4573323abcf37394bb68e0230347a974djsollen@google.com SkNWayCanvas(int width, int height); 18d3b65972aad96453ff4510caa3e25a2b847c6d1eBrian Salomon ~SkNWayCanvas() override; 1974b461961607fa57a150a9282c410ef0cab38764vandebo@chromium.org 20339e79fbeabae18a8b9ea094293c7c25eaf9dd68djsollen@google.com virtual void addCanvas(SkCanvas*); 21339e79fbeabae18a8b9ea094293c7c25eaf9dd68djsollen@google.com virtual void removeCanvas(SkCanvas*); 22339e79fbeabae18a8b9ea094293c7c25eaf9dd68djsollen@google.com virtual void removeAll(); 236c924ad46c89955e78e071c792ef00df9910b42freed@android.com 246c924ad46c89955e78e071c792ef00df9910b42freed@android.com /////////////////////////////////////////////////////////////////////////// 256c924ad46c89955e78e071c792ef00df9910b42freed@android.com // These are forwarded to the N canvases we're referencing 266c924ad46c89955e78e071c792ef00df9910b42freed@android.com 2753d9f1cfbd5ddbf57c2f22b9e613ce48e5b2896cfmalita#ifdef SK_SUPPORT_LEGACY_DRAWFILTER 2836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein SkDrawFilter* setDrawFilter(SkDrawFilter*) override; 297765000709dc64eb23be7df47d1f995d1f787115fmalita#endif 3074b461961607fa57a150a9282c410ef0cab38764vandebo@chromium.org 31339e79fbeabae18a8b9ea094293c7c25eaf9dd68djsollen@google.comprotected: 326c924ad46c89955e78e071c792ef00df9910b42freed@android.com SkTDArray<SkCanvas*> fList; 3374b461961607fa57a150a9282c410ef0cab38764vandebo@chromium.org 3436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void willSave() override; 354960eeec4a1f2a772654883d7f3615d47bcd5dc3reed SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec&) override; 3636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void willRestore() override; 37e54a23fcfa42b2fc9d320650de72bcb2d9566b2dcommit-bot@chromium.org 3836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void didConcat(const SkMatrix&) override; 3936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void didSetMatrix(const SkMatrix&) override; 4044c48d062f7996b5b46917e1b312a32ad101f326commit-bot@chromium.org 4136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; 42e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com virtual void onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, 4336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const SkPaint&) override; 44e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com virtual void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], 4536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const SkPaint&) override; 46e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com virtual void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], 4736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein SkScalar constY, const SkPaint&) override; 48e0d9ce890e67d02727ac2811bb456ddb64f827d4reed@google.com virtual void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& path, 4936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const SkMatrix* matrix, const SkPaint&) override; 50b7425173f96e93b090787e2386ba5f022b6c2869fmalita virtual void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, 5136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const SkPaint& paint) override; 5245561a0b15fe045ba272c328684c3f7ae290785areed void onDrawTextRSXform(const void* text, size_t byteLength, const SkRSXform xform[], 5345561a0b15fe045ba272c328684c3f7ae290785areed const SkRect* cull, const SkPaint& paint) override; 54b3c9d1c33caf325aada244204215eb790c228c12dandov virtual void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4], 55faba3715b8ddfaa0ce4df79bc8006e9bc7694e5bMike Reed const SkPoint texCoords[4], SkBlendMode, 5636352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const SkPaint& paint) override; 5736352bf5e38f45a70ee4f4fc132a38048d38206dmtklein 5836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawPaint(const SkPaint&) override; 5936352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override; 6036352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawRect(const SkRect&, const SkPaint&) override; 6136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawOval(const SkRect&, const SkPaint&) override; 62ac3aa245acc7b469aa2f0d0078e53401d78ac8b9bsalomon void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override; 6336352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawRRect(const SkRRect&, const SkPaint&) override; 6436352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawPath(const SkPath&, const SkPaint&) override; 6536352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint*) override; 6641af966ab338e95eee81ab618ab28195075338f7reed void onDrawBitmapRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint*, 67562fe4767cc73e08a4e039362bc0336aea66ecfbreed SrcRectConstraint) override; 6836352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawImage(const SkImage*, SkScalar left, SkScalar top, const SkPaint*) override; 6941af966ab338e95eee81ab618ab28195075338f7reed void onDrawImageRect(const SkImage*, const SkRect* src, const SkRect& dst, 70562fe4767cc73e08a4e039362bc0336aea66ecfbreed const SkPaint*, SrcRectConstraint) override; 7141af966ab338e95eee81ab618ab28195075338f7reed void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst, 7236352bf5e38f45a70ee4f4fc132a38048d38206dmtklein const SkPaint*) override; 73fed9cfdc0216152d7fffe6d838ea7281466ffe74Mike Reed void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override; 744204da25aa4c6e0b321314aa32fd9affb4865563Mike Reed void onDrawShadowRec(const SkPath&, const SkDrawShadowRec&) override; 7541af966ab338e95eee81ab618ab28195075338f7reed 76c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed void onClipRect(const SkRect&, SkClipOp, ClipEdgeStyle) override; 77c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed void onClipRRect(const SkRRect&, SkClipOp, ClipEdgeStyle) override; 78c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed void onClipPath(const SkPath&, SkClipOp, ClipEdgeStyle) override; 79c1f7774e8d327e3c98b4094c9c01d26e27013f71Mike Reed void onClipRegion(const SkRegion&, SkClipOp) override; 808f90a892c5130d4d26b5588e1ff151d01a40688arobertphillips@google.com 8136352bf5e38f45a70ee4f4fc132a38048d38206dmtklein void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override; 82adaeaedc28ff708dbe1380fe54480bb77ed007d8Florin Malita void onDrawDrawable(SkDrawable*, const SkMatrix*) override; 83f70b531daaf47db1ee95c70da9843f1dd1f418d3reed void onDrawAnnotation(const SkRect&, const char[], SkData*) override; 849b14f26d0f3a974f3dd626c8354e1db1cfcd322frobertphillips 85bf48ad179991ad82f1c556e1435d619758bc409fSkia_Android Canary Bot void onFlush() override; 86bf48ad179991ad82f1c556e1435d619758bc409fSkia_Android Canary Bot 876c924ad46c89955e78e071c792ef00df9910b42freed@android.com class Iter; 886c924ad46c89955e78e071c792ef00df9910b42freed@android.com 89339e79fbeabae18a8b9ea094293c7c25eaf9dd68djsollen@google.comprivate: 90439ace939b6aaa58408ece0e9e89b633353571aeFlorin Malita typedef SkNoDrawCanvas INHERITED; 916c924ad46c89955e78e071c792ef00df9910b42freed@android.com}; 926c924ad46c89955e78e071c792ef00df9910b42freed@android.com 936c924ad46c89955e78e071c792ef00df9910b42freed@android.com 946c924ad46c89955e78e071c792ef00df9910b42freed@android.com#endif 95