aboutsummaryrefslogtreecommitdiffhomepage
path: root/samplecode
diff options
context:
space:
mode:
authorGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-02-26 13:27:37 +0000
committerGravatar commit-bot@chromium.org <commit-bot@chromium.org@2bbb7eff-a529-9590-31e7-b0007b416f81>2014-02-26 13:27:37 +0000
commitf792a1b20747f769b28906a4b00fd67691ce8d0b (patch)
tree4c953a1345dbea2eb0ea01f85f6c1ae93ab86636 /samplecode
parente600c3268e6f21545a3be4964e23c056e00ffb2f (diff)
Builder class for SkLayerRasterizer.
Provide builder class to make SkLayerRasterizer immutable. We have to keep the addLayer() methods for now because they are used in Chrome. They will be removed once this changed has been rolled into Chrome. An added benefit of this is that this class can only be allocated on the heap. BUG=skia:2187 R=reed@google.com, scroggo@google.com, mtklein@google.com Author: dominikg@chromium.org Review URL: https://codereview.chromium.org/176873004 git-svn-id: http://skia.googlecode.com/svn/trunk@13590 2bbb7eff-a529-9590-31e7-b0007b416f81
Diffstat (limited to 'samplecode')
-rw-r--r--samplecode/ClockFaceView.cpp12
-rw-r--r--samplecode/SampleAll.cpp80
-rw-r--r--samplecode/SamplePathEffects.cpp7
-rw-r--r--samplecode/SampleSlides.cpp80
4 files changed, 90 insertions, 89 deletions
diff --git a/samplecode/ClockFaceView.cpp b/samplecode/ClockFaceView.cpp
index ed0bce9b66..a887cc67fd 100644
--- a/samplecode/ClockFaceView.cpp
+++ b/samplecode/ClockFaceView.cpp
@@ -133,15 +133,15 @@ static SkPathEffect* makepe(float interp, SkTDArray<SkPoint>* pts) {
return new Dot2DPathEffect(rad, lattice, pts);
}
-static void r7(SkLayerRasterizer* rast, SkPaint& p, SkScalar interp) {
+static void r7(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p, SkScalar interp) {
p.setPathEffect(makepe(SkScalarToFloat(interp), NULL))->unref();
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
#if 0
p.setPathEffect(new InverseFillPE())->unref();
p.setXfermodeMode(SkXfermode::kSrcIn_Mode);
p.setXfermodeMode(SkXfermode::kClear_Mode);
p.setAlpha((1 - interp) * 255);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
#endif
}
@@ -152,11 +152,11 @@ typedef void (*raster_proc)(SkLayerRasterizer*, SkPaint&);
static void apply_shader(SkPaint* paint, float scale)
{
SkPaint p;
- SkLayerRasterizer* rast = new SkLayerRasterizer;
+ SkLayerRasterizer::Builder rastBuilder;
p.setAntiAlias(true);
- r7(rast, p, scale);
- paint->setRasterizer(rast)->unref();
+ r7(&rastBuilder, p, scale);
+ paint->setRasterizer(rastBuilder.detachRasterizer())->unref();
paint->setColor(SK_ColorBLUE);
}
diff --git a/samplecode/SampleAll.cpp b/samplecode/SampleAll.cpp
index eb988f1fbf..e0058c4b79 100644
--- a/samplecode/SampleAll.cpp
+++ b/samplecode/SampleAll.cpp
@@ -80,84 +80,84 @@ private:
///////////////////////////////////////////////////////////
-static void r0(SkLayerRasterizer* rast, SkPaint& p) {
+static void r0(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
p.setMaskFilter(SkBlurMaskFilter::Create(SkBlurMaskFilter::kNormal_BlurStyle,
SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(3)),
SkBlurMaskFilter::kNone_BlurFlag))->unref();
- rast->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
+ rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
p.setMaskFilter(NULL);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setAlpha(0x11);
p.setStyle(SkPaint::kFill_Style);
p.setXfermodeMode(SkXfermode::kSrc_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r1(SkLayerRasterizer* rast, SkPaint& p) {
- rast->addLayer(p);
+static void r1(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
+ rastBuilder->addLayer(p);
p.setAlpha(0x40);
p.setXfermodeMode(SkXfermode::kSrc_Mode);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1*2);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r2(SkLayerRasterizer* rast, SkPaint& p) {
+static void r2(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
p.setStyle(SkPaint::kStrokeAndFill_Style);
p.setStrokeWidth(SK_Scalar1*4);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1*3/2);
p.setXfermodeMode(SkXfermode::kClear_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r3(SkLayerRasterizer* rast, SkPaint& p) {
+static void r3(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1*3);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setAlpha(0x20);
p.setStyle(SkPaint::kFill_Style);
p.setXfermodeMode(SkXfermode::kSrc_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r4(SkLayerRasterizer* rast, SkPaint& p) {
+static void r4(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
p.setAlpha(0x60);
- rast->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
+ rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
p.setAlpha(0xFF);
p.setXfermodeMode(SkXfermode::kClear_Mode);
- rast->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2);
+ rastBuilder->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2);
p.setXfermode(NULL);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r5(SkLayerRasterizer* rast, SkPaint& p) {
- rast->addLayer(p);
+static void r5(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
+ rastBuilder->addLayer(p);
p.setPathEffect(SkDiscretePathEffect::Create(SK_Scalar1*4, SK_Scalar1*3))->unref();
p.setXfermodeMode(SkXfermode::kSrcOut_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r6(SkLayerRasterizer* rast, SkPaint& p) {
- rast->addLayer(p);
+static void r6(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
+ rastBuilder->addLayer(p);
p.setAntiAlias(false);
- SkLayerRasterizer* rast2 = new SkLayerRasterizer;
- r5(rast2, p);
- p.setRasterizer(rast2)->unref();
+ SkLayerRasterizer::Builder rastBuilder2;
+ r5(&rastBuilder2, p);
+ p.setRasterizer(rastBuilder2.detachRasterizer())->unref();
p.setXfermodeMode(SkXfermode::kClear_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
class Dot2DPathEffect : public Sk2DPathEffect {
@@ -186,49 +186,49 @@ private:
typedef Sk2DPathEffect INHERITED;
};
-static void r7(SkLayerRasterizer* rast, SkPaint& p) {
+static void r7(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
SkMatrix lattice;
lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0);
lattice.postSkew(SK_Scalar1/3, 0, 0, 0);
p.setPathEffect(new Dot2DPathEffect(SK_Scalar1*4, lattice))->unref();
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r8(SkLayerRasterizer* rast, SkPaint& p) {
- rast->addLayer(p);
+static void r8(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
+ rastBuilder->addLayer(p);
SkMatrix lattice;
lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0);
lattice.postSkew(SK_Scalar1/3, 0, 0, 0);
p.setPathEffect(new Dot2DPathEffect(SK_Scalar1*2, lattice))->unref();
p.setXfermodeMode(SkXfermode::kClear_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setPathEffect(NULL);
p.setXfermode(NULL);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r9(SkLayerRasterizer* rast, SkPaint& p) {
- rast->addLayer(p);
+static void r9(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) {
+ rastBuilder->addLayer(p);
SkMatrix lattice;
lattice.setScale(SK_Scalar1, SK_Scalar1*6, 0, 0);
lattice.postRotate(SkIntToScalar(30), 0, 0);
p.setPathEffect(SkLine2DPathEffect::Create(SK_Scalar1*2, lattice))->unref();
p.setXfermodeMode(SkXfermode::kClear_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setPathEffect(NULL);
p.setXfermode(NULL);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-typedef void (*raster_proc)(SkLayerRasterizer*, SkPaint&);
+typedef void (*raster_proc)(SkLayerRasterizer::Builder*, SkPaint&);
static const raster_proc gRastProcs[] = {
r0, r1, r2, r3, r4, r5, r6, r7, r8, r9
@@ -248,11 +248,11 @@ static void apply_shader(SkPaint* paint, int index) {
raster_proc proc = gRastProcs[index];
if (proc) {
SkPaint p;
- SkLayerRasterizer* rast = new SkLayerRasterizer;
+ SkLayerRasterizer::Builder rastBuilder;
p.setAntiAlias(true);
- proc(rast, p);
- paint->setRasterizer(rast)->unref();
+ proc(&rastBuilder, p);
+ paint->setRasterizer(rastBuilder.detachRasterizer())->unref();
}
#if 1
diff --git a/samplecode/SamplePathEffects.cpp b/samplecode/SamplePathEffects.cpp
index 2a1a49b949..9af0abb59a 100644
--- a/samplecode/SamplePathEffects.cpp
+++ b/samplecode/SamplePathEffects.cpp
@@ -74,9 +74,9 @@ static SkPathEffect* make_warp_pe() {
#include "SkColorFilter.h"
#include "SkLayerRasterizer.h"
-class testrast : public SkLayerRasterizer {
+class TestRastBuilder : public SkLayerRasterizer::Builder {
public:
- testrast() {
+ TestRastBuilder() {
SkPaint paint;
paint.setAntiAlias(true);
@@ -177,7 +177,8 @@ protected:
paint.setARGB(0xFF, 0, 0, 0);
paint.setPathEffect(make_warp_pe())->unref();
- paint.setRasterizer(new testrast)->unref();
+ TestRastBuilder testRastBuilder;
+ paint.setRasterizer(testRastBuilder.detachRasterizer())->unref();
canvas->drawPath(fPath, paint);
}
diff --git a/samplecode/SampleSlides.cpp b/samplecode/SampleSlides.cpp
index 914283aab0..ece96849f9 100644
--- a/samplecode/SampleSlides.cpp
+++ b/samplecode/SampleSlides.cpp
@@ -476,92 +476,92 @@ static void mesh_slide(SkCanvas* canvas) {
///////////////////////////////////////////////////////////////////////////////
-static void r0(SkLayerRasterizer* rast, SkPaint& p)
+static void r0(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
{
p.setMaskFilter(SkBlurMaskFilter::Create(SkBlurMaskFilter::kNormal_BlurStyle,
SkBlurMask::ConvertRadiusToSigma(SkIntToScalar(3))))->unref();
- rast->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
+ rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
p.setMaskFilter(NULL);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setAlpha(0x11);
p.setStyle(SkPaint::kFill_Style);
p.setXfermodeMode(SkXfermode::kSrc_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r1(SkLayerRasterizer* rast, SkPaint& p)
+static void r1(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
{
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setAlpha(0x40);
p.setXfermodeMode(SkXfermode::kSrc_Mode);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1*2);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r2(SkLayerRasterizer* rast, SkPaint& p)
+static void r2(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
{
p.setStyle(SkPaint::kStrokeAndFill_Style);
p.setStrokeWidth(SK_Scalar1*4);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1*3/2);
p.setXfermodeMode(SkXfermode::kClear_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r3(SkLayerRasterizer* rast, SkPaint& p)
+static void r3(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
{
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1*3);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setAlpha(0x20);
p.setStyle(SkPaint::kFill_Style);
p.setXfermodeMode(SkXfermode::kSrc_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r4(SkLayerRasterizer* rast, SkPaint& p)
+static void r4(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
{
p.setAlpha(0x60);
- rast->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
+ rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3));
p.setAlpha(0xFF);
p.setXfermodeMode(SkXfermode::kClear_Mode);
- rast->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2);
+ rastBuilder->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2);
p.setXfermode(NULL);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
#include "SkDiscretePathEffect.h"
-static void r5(SkLayerRasterizer* rast, SkPaint& p)
+static void r5(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
{
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setPathEffect(SkDiscretePathEffect::Create(SK_Scalar1*4, SK_Scalar1*3))->unref();
p.setXfermodeMode(SkXfermode::kSrcOut_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r6(SkLayerRasterizer* rast, SkPaint& p)
+static void r6(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
{
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setAntiAlias(false);
- SkLayerRasterizer* rast2 = new SkLayerRasterizer;
- r5(rast2, p);
- p.setRasterizer(rast2)->unref();
+ SkLayerRasterizer::Builder rastBuilder2;
+ r5(&rastBuilder2, p);
+ p.setRasterizer(rastBuilder2.detachRasterizer())->unref();
p.setXfermodeMode(SkXfermode::kClear_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
#include "Sk2DPathEffect.h"
@@ -572,52 +572,52 @@ static SkPathEffect* MakeDotEffect(SkScalar radius, const SkMatrix& matrix) {
return SkPath2DPathEffect::Create(matrix, path);
}
-static void r7(SkLayerRasterizer* rast, SkPaint& p)
+static void r7(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
{
SkMatrix lattice;
lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0);
lattice.postSkew(SK_Scalar1/3, 0, 0, 0);
p.setPathEffect(MakeDotEffect(SK_Scalar1*4, lattice))->unref();
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r8(SkLayerRasterizer* rast, SkPaint& p)
+static void r8(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
{
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
SkMatrix lattice;
lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0);
lattice.postSkew(SK_Scalar1/3, 0, 0, 0);
p.setPathEffect(MakeDotEffect(SK_Scalar1*2, lattice))->unref();
p.setXfermodeMode(SkXfermode::kClear_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setPathEffect(NULL);
p.setXfermode(NULL);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-static void r9(SkLayerRasterizer* rast, SkPaint& p)
+static void r9(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p)
{
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
SkMatrix lattice;
lattice.setScale(SK_Scalar1, SK_Scalar1*6, 0, 0);
lattice.postRotate(SkIntToScalar(30), 0, 0);
p.setPathEffect(SkLine2DPathEffect::Create(SK_Scalar1*2, lattice))->unref();
p.setXfermodeMode(SkXfermode::kClear_Mode);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
p.setPathEffect(NULL);
p.setXfermode(NULL);
p.setStyle(SkPaint::kStroke_Style);
p.setStrokeWidth(SK_Scalar1);
- rast->addLayer(p);
+ rastBuilder->addLayer(p);
}
-typedef void (*raster_proc)(SkLayerRasterizer*, SkPaint&);
+typedef void (*raster_proc)(SkLayerRasterizer::Builder*, SkPaint&);
static const raster_proc gRastProcs[] = {
r0, r1, r2, r3, r4, r5, r6, r7, r8, r9
@@ -626,11 +626,11 @@ static const raster_proc gRastProcs[] = {
static void apply_shader(SkPaint* paint, int index) {
raster_proc proc = gRastProcs[index];
SkPaint p;
- SkLayerRasterizer* rast = new SkLayerRasterizer;
+ SkLayerRasterizer::Builder rastBuilder;
p.setAntiAlias(true);
- proc(rast, p);
- paint->setRasterizer(rast)->unref();
+ proc(&rastBuilder, p);
+ paint->setRasterizer(rastBuilder.detachRasterizer())->unref();
paint->setColor(SK_ColorBLUE);
}