Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(481)

Side by Side Diff: include/effects/SkLayerRasterizer.h

Issue 176873004: Builder class for SkLayerRasterizer. (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: SK_SUPPORT_LEGACY_LAYERRASTERIZER_API Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2006 The Android Open Source Project 3 * Copyright 2006 The Android Open Source Project
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 8
9 9
10 #ifndef SkLayerRasterizer_DEFINED 10 #ifndef SkLayerRasterizer_DEFINED
11 #define SkLayerRasterizer_DEFINED 11 #define SkLayerRasterizer_DEFINED
12 12
13 #include "SkRasterizer.h" 13 #include "SkRasterizer.h"
14 #include "SkDeque.h" 14 #include "SkDeque.h"
15 #include "SkScalar.h" 15 #include "SkScalar.h"
16 16
17 class SkPaint; 17 class SkPaint;
18 18
19 class SK_API SkLayerRasterizer : public SkRasterizer { 19 class SK_API SkLayerRasterizer : public SkRasterizer {
20 public: 20 public:
21 SkLayerRasterizer();
22 virtual ~SkLayerRasterizer(); 21 virtual ~SkLayerRasterizer();
23 22
23 class SK_API Builder {
24 public:
25 Builder();
26 ~Builder();
27
28 void addLayer(const SkPaint& paint) {
29 this->addLayer(paint, 0, 0);
30 }
31
32 /**
33 * Add a new layer (above any previous layers) to the rasterizer.
34 * The layer will extract those fields that affect the mask from
35 * the specified paint, but will not retain a reference to the paint
36 * object itself, so it may be reused without danger of side-effects.
37 */
38 void addLayer(const SkPaint& paint, SkScalar dx, SkScalar dy);
39
40 /**
41 * Pass queue of layers on to newly created layer rasterizer and retur n it. The builder
42 * cannot be used any more after calling this function.
43 */
44 SkLayerRasterizer* detachRasterizer();
45
46 private:
47 SkDeque* fLayers;
48 };
49
50 #ifdef SK_SUPPORT_LEGACY_LAYERRASTERIZER_API
24 void addLayer(const SkPaint& paint) { 51 void addLayer(const SkPaint& paint) {
25 this->addLayer(paint, 0, 0); 52 this->addLayer(paint, 0, 0);
26 } 53 }
27 54
28 /** Add a new layer (above any previous layers) to the rasterizer. 55 /** Add a new layer (above any previous layers) to the rasterizer.
29 The layer will extract those fields that affect the mask from 56 The layer will extract those fields that affect the mask from
30 the specified paint, but will not retain a reference to the paint 57 the specified paint, but will not retain a reference to the paint
31 object itself, so it may be reused without danger of side-effects. 58 object itself, so it may be reused without danger of side-effects.
32 */ 59 */
33 void addLayer(const SkPaint& paint, SkScalar dx, SkScalar dy); 60 void addLayer(const SkPaint& paint, SkScalar dx, SkScalar dy);
61 #endif
34 62
35 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLayerRasterizer) 63 SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(SkLayerRasterizer)
36 64
37 protected: 65 protected:
66 SkLayerRasterizer(SkDeque* layers);
38 SkLayerRasterizer(SkReadBuffer&); 67 SkLayerRasterizer(SkReadBuffer&);
39 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE; 68 virtual void flatten(SkWriteBuffer&) const SK_OVERRIDE;
40 69
41 // override from SkRasterizer 70 // override from SkRasterizer
42 virtual bool onRasterize(const SkPath& path, const SkMatrix& matrix, 71 virtual bool onRasterize(const SkPath& path, const SkMatrix& matrix,
43 const SkIRect* clipBounds, 72 const SkIRect* clipBounds,
44 SkMask* mask, SkMask::CreateMode mode) const; 73 SkMask* mask, SkMask::CreateMode mode) const;
45 74
75 #ifdef SK_SUPPORT_LEGACY_LAYERRASTERIZER_API
76 public:
77 #endif
78 SkLayerRasterizer();
79
46 private: 80 private:
47 SkDeque fLayers; 81 SkDeque* fLayers;
reed1 2014/02/24 13:59:48 question: can this be 'const' when we switch over
scroggo 2014/02/24 14:00:21 In the interest of immutability, should these be c
Dominik Grewe 2014/02/24 14:44:41 Yes, I've made them const behind the guard. That a
48 82
49 typedef SkRasterizer INHERITED; 83 typedef SkRasterizer INHERITED;
50 }; 84 };
51 85
52 #endif 86 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698