1 /* 2 * Copyright 2013 Google Inc. 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 8 #ifndef SkLuaCanvas_DEFINED 9 #define SkLuaCanvas_DEFINED 10 11 #include "SkCanvas.h" 12 #include "SkString.h" 13 #include "SkVertices.h" 14 15 struct lua_State; 16 17 class SkLuaCanvas : public SkCanvas { 18 public: 19 void pushThis(); 20 21 SkLuaCanvas(int width, int height, lua_State*, const char function[]); 22 ~SkLuaCanvas() override; 23 24 protected: 25 void willSave() override; 26 SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec&) override; 27 void willRestore() override; 28 29 void didConcat(const SkMatrix&) override; 30 void didSetMatrix(const SkMatrix&) override; 31 32 void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override; 33 virtual void onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, 34 const SkPaint&) override; 35 virtual void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[], 36 const SkPaint&) override; 37 virtual void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], 38 SkScalar constY, const SkPaint&) override; 39 virtual void onDrawTextOnPath(const void* text, size_t byteLength, const SkPath& path, 40 const SkMatrix* matrix, const SkPaint&) override; 41 void onDrawTextRSXform(const void* text, size_t byteLength, const SkRSXform xform[], 42 const SkRect* cull, const SkPaint& paint) override; 43 virtual void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y, 44 const SkPaint& paint) override; 45 46 void onDrawPaint(const SkPaint&) override; 47 void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override; 48 void onDrawRect(const SkRect&, const SkPaint&) override; 49 void onDrawOval(const SkRect&, const SkPaint&) override; 50 void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override; 51 void onDrawRRect(const SkRRect&, const SkPaint&) override; 52 void onDrawPath(const SkPath&, const SkPaint&) override; 53 void onDrawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint*) override; 54 void onDrawBitmapRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint*, 55 SrcRectConstraint) override; 56 void onDrawImage(const SkImage*, SkScalar left, SkScalar top, const SkPaint*) override; 57 void onDrawImageRect(const SkImage*, const SkRect* src, const SkRect& dst, 58 const SkPaint*, SrcRectConstraint) override; 59 void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst, 60 const SkPaint*) override; 61 void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override; 62 63 void onClipRect(const SkRect&, SkClipOp, ClipEdgeStyle) override; 64 void onClipRRect(const SkRRect&, SkClipOp, ClipEdgeStyle) override; 65 void onClipPath(const SkPath&, SkClipOp, ClipEdgeStyle) override; 66 void onClipRegion(const SkRegion&, SkClipOp) override; 67 68 void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override; 69 void onDrawDrawable(SkDrawable*, const SkMatrix*) override; 70 71 private: 72 lua_State* fL; 73 SkString fFunc; 74 75 void sendverb(const char verb[]); 76 77 typedef SkCanvas INHERITED; 78 }; 79 80 #endif 81