SkNWayCanvas.h 4.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. /*
  2. * Copyright 2011 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. #ifndef SkNWayCanvas_DEFINED
  8. #define SkNWayCanvas_DEFINED
  9. #include "../private/SkTDArray.h"
  10. #include "SkCanvasVirtualEnforcer.h"
  11. #include "SkNoDrawCanvas.h"
  12. class SK_API SkNWayCanvas : public SkCanvasVirtualEnforcer<SkNoDrawCanvas> {
  13. public:
  14. SkNWayCanvas(int width, int height);
  15. ~SkNWayCanvas() override;
  16. virtual void addCanvas(SkCanvas*);
  17. virtual void removeCanvas(SkCanvas*);
  18. virtual void removeAll();
  19. protected:
  20. SkTDArray<SkCanvas*> fList;
  21. void willSave() override;
  22. SaveLayerStrategy getSaveLayerStrategy(const SaveLayerRec&) override;
  23. void willRestore() override;
  24. void didConcat(const SkMatrix&) override;
  25. void didSetMatrix(const SkMatrix&) override;
  26. void onDrawDRRect(const SkRRect&, const SkRRect&, const SkPaint&) override;
  27. virtual void onDrawText(const void* text, size_t byteLength, SkScalar x, SkScalar y,
  28. const SkPaint&) override;
  29. virtual void onDrawPosText(const void* text, size_t byteLength, const SkPoint pos[],
  30. const SkPaint&) override;
  31. virtual void onDrawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[],
  32. SkScalar constY, const SkPaint&) override;
  33. virtual void onDrawTextBlob(const SkTextBlob* blob, SkScalar x, SkScalar y,
  34. const SkPaint& paint) override;
  35. void onDrawTextRSXform(const void* text, size_t byteLength, const SkRSXform xform[],
  36. const SkRect* cull, const SkPaint& paint) override;
  37. virtual void onDrawPatch(const SkPoint cubics[12], const SkColor colors[4],
  38. const SkPoint texCoords[4], SkBlendMode,
  39. const SkPaint& paint) override;
  40. void onDrawPaint(const SkPaint&) override;
  41. void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override;
  42. void onDrawRect(const SkRect&, const SkPaint&) override;
  43. void onDrawRegion(const SkRegion&, const SkPaint&) override;
  44. void onDrawOval(const SkRect&, const SkPaint&) override;
  45. void onDrawArc(const SkRect&, SkScalar, SkScalar, bool, const SkPaint&) override;
  46. void onDrawRRect(const SkRRect&, const SkPaint&) override;
  47. void onDrawPath(const SkPath&, const SkPaint&) override;
  48. void onDrawBitmap(const SkBitmap&, SkScalar left, SkScalar top, const SkPaint*) override;
  49. void onDrawBitmapRect(const SkBitmap&, const SkRect* src, const SkRect& dst, const SkPaint*,
  50. SrcRectConstraint) override;
  51. void onDrawImage(const SkImage*, SkScalar left, SkScalar top, const SkPaint*) override;
  52. void onDrawImageRect(const SkImage*, const SkRect* src, const SkRect& dst,
  53. const SkPaint*, SrcRectConstraint) override;
  54. void onDrawBitmapLattice(const SkBitmap&, const Lattice&, const SkRect&,
  55. const SkPaint*) override;
  56. void onDrawImageLattice(const SkImage*, const Lattice&, const SkRect&, const SkPaint*) override;
  57. void onDrawImageNine(const SkImage*, const SkIRect& center, const SkRect& dst,
  58. const SkPaint*) override;
  59. void onDrawImageSet(const SkCanvas::ImageSetEntry[], int count, SkFilterQuality,
  60. SkBlendMode) override;
  61. void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst,
  62. const SkPaint*) override;
  63. void onDrawVerticesObject(const SkVertices*, const SkVertices::Bone bones[], int boneCount,
  64. SkBlendMode, const SkPaint&) override;
  65. void onDrawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[],
  66. int, SkBlendMode, const SkRect*, const SkPaint*) override;
  67. void onDrawShadowRec(const SkPath&, const SkDrawShadowRec&) override;
  68. void onClipRect(const SkRect&, SkClipOp, ClipEdgeStyle) override;
  69. void onClipRRect(const SkRRect&, SkClipOp, ClipEdgeStyle) override;
  70. void onClipPath(const SkPath&, SkClipOp, ClipEdgeStyle) override;
  71. void onClipRegion(const SkRegion&, SkClipOp) override;
  72. void onDrawPicture(const SkPicture*, const SkMatrix*, const SkPaint*) override;
  73. void onDrawDrawable(SkDrawable*, const SkMatrix*) override;
  74. void onDrawAnnotation(const SkRect&, const char[], SkData*) override;
  75. void onFlush() override;
  76. class Iter;
  77. private:
  78. typedef SkCanvasVirtualEnforcer<SkNoDrawCanvas> INHERITED;
  79. };
  80. #endif