123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728 |
- /*
- * Copyright 2012 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
- #ifndef SKDRAWCOMMAND_H_
- #define SKDRAWCOMMAND_H_
- #include "include/core/SkBitmap.h"
- #include "include/core/SkCanvas.h"
- #include "include/core/SkFlattenable.h"
- #include "include/core/SkPath.h"
- #include "include/core/SkRRect.h"
- #include "include/core/SkRSXform.h"
- #include "include/core/SkRegion.h"
- #include "include/core/SkString.h"
- #include "include/core/SkVertices.h"
- #include "include/private/SkTDArray.h"
- #include "src/core/SkDrawShadowInfo.h"
- #include "src/core/SkTLazy.h"
- #include "src/utils/SkJSONWriter.h"
- #include "tools/UrlDataManager.h"
- class DrawCommand {
- public:
- enum OpType {
- kBeginDrawPicture_OpType,
- kClear_OpType,
- kClipPath_OpType,
- kClipRegion_OpType,
- kClipRect_OpType,
- kClipRRect_OpType,
- kConcat_OpType,
- kDrawAnnotation_OpType,
- kDrawBitmap_OpType,
- kDrawBitmapLattice_OpType,
- kDrawBitmapNine_OpType,
- kDrawBitmapRect_OpType,
- kDrawDRRect_OpType,
- kDrawImage_OpType,
- kDrawImageLattice_OpType,
- kDrawImageNine_OpType,
- kDrawImageRect_OpType,
- kDrawOval_OpType,
- kDrawArc_OpType,
- kDrawPaint_OpType,
- kDrawPatch_OpType,
- kDrawPath_OpType,
- kDrawPoints_OpType,
- kDrawRect_OpType,
- kDrawRRect_OpType,
- kDrawRegion_OpType,
- kDrawShadow_OpType,
- kDrawTextBlob_OpType,
- kDrawVertices_OpType,
- kDrawAtlas_OpType,
- kDrawDrawable_OpType,
- kDrawEdgeAAQuad_OpType,
- kDrawEdgeAAImageSet_OpType,
- kEndDrawPicture_OpType,
- kRestore_OpType,
- kSave_OpType,
- kSaveLayer_OpType,
- kSetMatrix_OpType,
- kLast_OpType = kSetMatrix_OpType
- };
- static const int kOpTypeCount = kLast_OpType + 1;
- static void WritePNG(SkBitmap bitmap, SkWStream& out);
- DrawCommand(OpType opType);
- virtual ~DrawCommand() {}
- bool isVisible() const { return fVisible; }
- void setVisible(bool toggle) { fVisible = toggle; }
- virtual void execute(SkCanvas*) const = 0;
- virtual bool render(SkCanvas* canvas) const { return false; }
- virtual void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const;
- static const char* GetCommandString(OpType type);
- // Helper methods for converting things to JSON
- static void MakeJsonColor(SkJSONWriter&, const SkColor color);
- static void MakeJsonColor4f(SkJSONWriter&, const SkColor4f& color);
- static void MakeJsonPoint(SkJSONWriter&, const SkPoint& point);
- static void MakeJsonPoint(SkJSONWriter&, SkScalar x, SkScalar y);
- static void MakeJsonPoint3(SkJSONWriter&, const SkPoint3& point);
- static void MakeJsonRect(SkJSONWriter&, const SkRect& rect);
- static void MakeJsonIRect(SkJSONWriter&, const SkIRect&);
- static void MakeJsonMatrix(SkJSONWriter&, const SkMatrix&);
- static void MakeJsonPath(SkJSONWriter&, const SkPath& path);
- static void MakeJsonRegion(SkJSONWriter&, const SkRegion& region);
- static void MakeJsonPaint(SkJSONWriter&, const SkPaint& paint, UrlDataManager& urlDataManager);
- static void MakeJsonLattice(SkJSONWriter&, const SkCanvas::Lattice& lattice);
- static void flatten(const SkFlattenable* flattenable,
- SkJSONWriter& writer,
- UrlDataManager& urlDataManager);
- static bool flatten(const SkImage& image, SkJSONWriter& writer, UrlDataManager& urlDataManager);
- static bool flatten(const SkBitmap& bitmap,
- SkJSONWriter& writer,
- UrlDataManager& urlDataManager);
- private:
- OpType fOpType;
- bool fVisible;
- };
- class RestoreCommand : public DrawCommand {
- public:
- RestoreCommand();
- void execute(SkCanvas* canvas) const override;
- private:
- typedef DrawCommand INHERITED;
- };
- class ClearCommand : public DrawCommand {
- public:
- ClearCommand(SkColor color);
- void execute(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkColor fColor;
- typedef DrawCommand INHERITED;
- };
- class ClipPathCommand : public DrawCommand {
- public:
- ClipPathCommand(const SkPath& path, SkClipOp op, bool doAA);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkPath fPath;
- SkClipOp fOp;
- bool fDoAA;
- typedef DrawCommand INHERITED;
- };
- class ClipRegionCommand : public DrawCommand {
- public:
- ClipRegionCommand(const SkRegion& region, SkClipOp op);
- void execute(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkRegion fRegion;
- SkClipOp fOp;
- typedef DrawCommand INHERITED;
- };
- class ClipRectCommand : public DrawCommand {
- public:
- ClipRectCommand(const SkRect& rect, SkClipOp op, bool doAA);
- void execute(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkRect fRect;
- SkClipOp fOp;
- bool fDoAA;
- typedef DrawCommand INHERITED;
- };
- class ClipRRectCommand : public DrawCommand {
- public:
- ClipRRectCommand(const SkRRect& rrect, SkClipOp op, bool doAA);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkRRect fRRect;
- SkClipOp fOp;
- bool fDoAA;
- typedef DrawCommand INHERITED;
- };
- class ConcatCommand : public DrawCommand {
- public:
- ConcatCommand(const SkMatrix& matrix);
- void execute(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkMatrix fMatrix;
- typedef DrawCommand INHERITED;
- };
- class DrawAnnotationCommand : public DrawCommand {
- public:
- DrawAnnotationCommand(const SkRect&, const char key[], sk_sp<SkData> value);
- void execute(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkRect fRect;
- SkString fKey;
- sk_sp<SkData> fValue;
- typedef DrawCommand INHERITED;
- };
- class DrawBitmapCommand : public DrawCommand {
- public:
- DrawBitmapCommand(const SkBitmap& bitmap, SkScalar left, SkScalar top, const SkPaint* paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkBitmap fBitmap;
- SkScalar fLeft;
- SkScalar fTop;
- SkTLazy<SkPaint> fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawBitmapLatticeCommand : public DrawCommand {
- public:
- DrawBitmapLatticeCommand(const SkBitmap& bitmap,
- const SkCanvas::Lattice& lattice,
- const SkRect& dst,
- const SkPaint* paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkBitmap fBitmap;
- SkCanvas::Lattice fLattice;
- SkRect fDst;
- SkTLazy<SkPaint> fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawBitmapNineCommand : public DrawCommand {
- public:
- DrawBitmapNineCommand(const SkBitmap& bitmap,
- const SkIRect& center,
- const SkRect& dst,
- const SkPaint* paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkBitmap fBitmap;
- SkIRect fCenter;
- SkRect fDst;
- SkTLazy<SkPaint> fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawBitmapRectCommand : public DrawCommand {
- public:
- DrawBitmapRectCommand(const SkBitmap& bitmap,
- const SkRect* src,
- const SkRect& dst,
- const SkPaint* paint,
- SkCanvas::SrcRectConstraint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkBitmap fBitmap;
- SkTLazy<SkRect> fSrc;
- SkRect fDst;
- SkTLazy<SkPaint> fPaint;
- SkCanvas::SrcRectConstraint fConstraint;
- typedef DrawCommand INHERITED;
- };
- class DrawImageCommand : public DrawCommand {
- public:
- DrawImageCommand(const SkImage* image, SkScalar left, SkScalar top, const SkPaint* paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- sk_sp<const SkImage> fImage;
- SkScalar fLeft;
- SkScalar fTop;
- SkTLazy<SkPaint> fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawImageLatticeCommand : public DrawCommand {
- public:
- DrawImageLatticeCommand(const SkImage* image,
- const SkCanvas::Lattice& lattice,
- const SkRect& dst,
- const SkPaint* paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- sk_sp<const SkImage> fImage;
- SkCanvas::Lattice fLattice;
- SkRect fDst;
- SkTLazy<SkPaint> fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawImageNineCommand : public DrawCommand {
- public:
- DrawImageNineCommand(const SkImage* image,
- const SkIRect& center,
- const SkRect& dst,
- const SkPaint* paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- sk_sp<const SkImage> fImage;
- SkIRect fCenter;
- SkRect fDst;
- SkTLazy<SkPaint> fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawImageRectCommand : public DrawCommand {
- public:
- DrawImageRectCommand(const SkImage* image,
- const SkRect* src,
- const SkRect& dst,
- const SkPaint* paint,
- SkCanvas::SrcRectConstraint constraint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- sk_sp<const SkImage> fImage;
- SkTLazy<SkRect> fSrc;
- SkRect fDst;
- SkTLazy<SkPaint> fPaint;
- SkCanvas::SrcRectConstraint fConstraint;
- typedef DrawCommand INHERITED;
- };
- class DrawOvalCommand : public DrawCommand {
- public:
- DrawOvalCommand(const SkRect& oval, const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkRect fOval;
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawArcCommand : public DrawCommand {
- public:
- DrawArcCommand(const SkRect& oval,
- SkScalar startAngle,
- SkScalar sweepAngle,
- bool useCenter,
- const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkRect fOval;
- SkScalar fStartAngle;
- SkScalar fSweepAngle;
- bool fUseCenter;
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawPaintCommand : public DrawCommand {
- public:
- DrawPaintCommand(const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawBehindCommand : public DrawCommand {
- public:
- DrawBehindCommand(const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawPathCommand : public DrawCommand {
- public:
- DrawPathCommand(const SkPath& path, const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkPath fPath;
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class BeginDrawPictureCommand : public DrawCommand {
- public:
- BeginDrawPictureCommand(const SkPicture* picture, const SkMatrix* matrix, const SkPaint* paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- private:
- sk_sp<const SkPicture> fPicture;
- SkTLazy<SkMatrix> fMatrix;
- SkTLazy<SkPaint> fPaint;
- typedef DrawCommand INHERITED;
- };
- class EndDrawPictureCommand : public DrawCommand {
- public:
- EndDrawPictureCommand(bool restore);
- void execute(SkCanvas* canvas) const override;
- private:
- bool fRestore;
- typedef DrawCommand INHERITED;
- };
- class DrawPointsCommand : public DrawCommand {
- public:
- DrawPointsCommand(SkCanvas::PointMode mode,
- size_t count,
- const SkPoint pts[],
- const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkCanvas::PointMode fMode;
- SkTDArray<SkPoint> fPts;
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawRegionCommand : public DrawCommand {
- public:
- DrawRegionCommand(const SkRegion& region, const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkRegion fRegion;
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawTextBlobCommand : public DrawCommand {
- public:
- DrawTextBlobCommand(sk_sp<SkTextBlob> blob, SkScalar x, SkScalar y, const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- sk_sp<SkTextBlob> fBlob;
- SkScalar fXPos;
- SkScalar fYPos;
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawPatchCommand : public DrawCommand {
- public:
- DrawPatchCommand(const SkPoint cubics[12],
- const SkColor colors[4],
- const SkPoint texCoords[4],
- SkBlendMode bmode,
- const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkPoint fCubics[12];
- SkColor* fColorsPtr;
- SkColor fColors[4];
- SkPoint* fTexCoordsPtr;
- SkPoint fTexCoords[4];
- SkBlendMode fBlendMode;
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawRectCommand : public DrawCommand {
- public:
- DrawRectCommand(const SkRect& rect, const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkRect fRect;
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawRRectCommand : public DrawCommand {
- public:
- DrawRRectCommand(const SkRRect& rrect, const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkRRect fRRect;
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawDRRectCommand : public DrawCommand {
- public:
- DrawDRRectCommand(const SkRRect& outer, const SkRRect& inner, const SkPaint& paint);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkRRect fOuter;
- SkRRect fInner;
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawVerticesCommand : public DrawCommand {
- public:
- DrawVerticesCommand(sk_sp<SkVertices>, SkBlendMode, const SkPaint&);
- void execute(SkCanvas* canvas) const override;
- private:
- sk_sp<SkVertices> fVertices;
- SkBlendMode fBlendMode;
- SkPaint fPaint;
- typedef DrawCommand INHERITED;
- };
- class DrawAtlasCommand : public DrawCommand {
- public:
- DrawAtlasCommand(const SkImage*,
- const SkRSXform[],
- const SkRect[],
- const SkColor[],
- int,
- SkBlendMode,
- const SkRect*,
- const SkPaint*);
- void execute(SkCanvas* canvas) const override;
- private:
- sk_sp<const SkImage> fImage;
- SkTDArray<SkRSXform> fXform;
- SkTDArray<SkRect> fTex;
- SkTDArray<SkColor> fColors;
- SkBlendMode fBlendMode;
- SkTLazy<SkRect> fCull;
- SkTLazy<SkPaint> fPaint;
- typedef DrawCommand INHERITED;
- };
- class SaveCommand : public DrawCommand {
- public:
- SaveCommand();
- void execute(SkCanvas* canvas) const override;
- private:
- typedef DrawCommand INHERITED;
- };
- class SaveLayerCommand : public DrawCommand {
- public:
- SaveLayerCommand(const SkCanvas::SaveLayerRec&);
- void execute(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkTLazy<SkRect> fBounds;
- SkTLazy<SkPaint> fPaint;
- sk_sp<const SkImageFilter> fBackdrop;
- uint32_t fSaveLayerFlags;
- typedef DrawCommand INHERITED;
- };
- class SetMatrixCommand : public DrawCommand {
- public:
- SetMatrixCommand(const SkMatrix& matrix);
- void execute(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkMatrix fMatrix;
- typedef DrawCommand INHERITED;
- };
- class DrawShadowCommand : public DrawCommand {
- public:
- DrawShadowCommand(const SkPath& path, const SkDrawShadowRec& rec);
- void execute(SkCanvas* canvas) const override;
- bool render(SkCanvas* canvas) const override;
- void toJSON(SkJSONWriter& writer, UrlDataManager& urlDataManager) const override;
- private:
- SkPath fPath;
- SkDrawShadowRec fShadowRec;
- typedef DrawCommand INHERITED;
- };
- class DrawDrawableCommand : public DrawCommand {
- public:
- DrawDrawableCommand(SkDrawable*, const SkMatrix*);
- void execute(SkCanvas* canvas) const override;
- private:
- sk_sp<SkDrawable> fDrawable;
- SkTLazy<SkMatrix> fMatrix;
- typedef DrawCommand INHERITED;
- };
- class DrawEdgeAAQuadCommand : public DrawCommand {
- public:
- DrawEdgeAAQuadCommand(const SkRect& rect,
- const SkPoint clip[4],
- SkCanvas::QuadAAFlags aa,
- SkColor color,
- SkBlendMode mode);
- void execute(SkCanvas* canvas) const override;
- private:
- SkRect fRect;
- SkPoint fClip[4];
- int fHasClip;
- SkCanvas::QuadAAFlags fAA;
- SkColor fColor;
- SkBlendMode fMode;
- typedef DrawCommand INHERITED;
- };
- class DrawEdgeAAImageSetCommand : public DrawCommand {
- public:
- DrawEdgeAAImageSetCommand(const SkCanvas::ImageSetEntry[],
- int count,
- const SkPoint[],
- const SkMatrix[],
- const SkPaint*,
- SkCanvas::SrcRectConstraint);
- void execute(SkCanvas* canvas) const override;
- private:
- SkAutoTArray<SkCanvas::ImageSetEntry> fSet;
- int fCount;
- SkAutoTArray<SkPoint> fDstClips;
- SkAutoTArray<SkMatrix> fPreViewMatrices;
- SkTLazy<SkPaint> fPaint;
- SkCanvas::SrcRectConstraint fConstraint;
- typedef DrawCommand INHERITED;
- };
- #endif
|