Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Functions | Variables
aarectmodes.cpp File Reference
#include "gm/gm.h"
#include "include/core/SkBitmap.h"
#include "include/core/SkBlendMode.h"
#include "include/core/SkCanvas.h"
#include "include/core/SkColor.h"
#include "include/core/SkColorPriv.h"
#include "include/core/SkMatrix.h"
#include "include/core/SkPaint.h"
#include "include/core/SkPath.h"
#include "include/core/SkPathBuilder.h"
#include "include/core/SkPoint.h"
#include "include/core/SkRect.h"
#include "include/core/SkRefCnt.h"
#include "include/core/SkScalar.h"
#include "include/core/SkShader.h"
#include "include/core/SkTileMode.h"
#include "include/core/SkTypes.h"

Go to the source code of this file.

Functions

static void test4 (SkCanvas *canvas)
 
static SkScalar drawCell (SkCanvas *canvas, SkBlendMode mode, SkAlpha a0, SkAlpha a1)
 
static sk_sp< SkShadermake_bg_shader ()
 
 DEF_SIMPLE_GM (aarectmodes, canvas, 640, 480)
 

Variables

constexpr SkBlendMode gModes []
 
const int gWidth = 64
 
const int gHeight = 64
 
const SkScalar W = SkIntToScalar(gWidth)
 
const SkScalar H = SkIntToScalar(gHeight)
 

Function Documentation

◆ DEF_SIMPLE_GM()

DEF_SIMPLE_GM ( aarectmodes  ,
canvas  ,
640  ,
480   
)

Definition at line 129 of file aarectmodes.cpp.

129 {
130 SkPaint bgPaint;
131 bgPaint.setShader(make_bg_shader());
132 if ((false)) { // avoid bit rot, suppress warning
133 test4(canvas);
134 }
135 const SkRect bounds = SkRect::MakeWH(W, H);
136 constexpr SkAlpha gAlphaValue[] = { 0xFF, 0x88, 0x88 };
137
138 canvas->translate(SkIntToScalar(4), SkIntToScalar(4));
139
140 for (int alpha = 0; alpha < 4; ++alpha) {
141 canvas->save();
142 canvas->save();
143 for (size_t i = 0; i < std::size(gModes); ++i) {
144 if (6 == i) {
145 canvas->restore();
146 canvas->translate(W * 5, 0);
147 canvas->save();
148 }
149 canvas->drawRect(bounds, bgPaint);
150 canvas->saveLayer(&bounds, nullptr);
151 SkScalar dy = drawCell(canvas, gModes[i],
152 gAlphaValue[alpha & 1],
153 gAlphaValue[alpha & 2]);
154 canvas->restore();
155
156 canvas->translate(0, dy * 5 / 4);
157 }
158 canvas->restore();
159 canvas->restore();
160 canvas->translate(W * 5 / 4, 0);
161 }
162}
uint8_t SkAlpha
Definition SkColor.h:26
#define SkIntToScalar(x)
Definition SkScalar.h:57
static sk_sp< SkShader > make_bg_shader()
const SkScalar W
static SkScalar drawCell(SkCanvas *canvas, SkBlendMode mode, SkAlpha a0, SkAlpha a1)
constexpr SkBlendMode gModes[]
static void test4(SkCanvas *canvas)
void setShader(sk_sp< SkShader > shader)
float SkScalar
Definition extension.cpp:12
Optional< SkRect > bounds
Definition SkRecords.h:189
Definition SkMD5.cpp:130
static constexpr SkRect MakeWH(float w, float h)
Definition SkRect.h:609

◆ drawCell()

static SkScalar drawCell ( SkCanvas canvas,
SkBlendMode  mode,
SkAlpha  a0,
SkAlpha  a1 
)
static

Definition at line 93 of file aarectmodes.cpp.

93 {
94
96 paint.setAntiAlias(true);
97
99 r.inset(W/10, H/10);
100
101 paint.setColor(SK_ColorBLUE);
102 paint.setAlpha(a0);
103 canvas->drawOval(r, paint);
104
105 paint.setColor(SK_ColorRED);
106 paint.setAlpha(a1);
107 paint.setBlendMode(mode);
108
111 H / 4 + offset,
112 W / 2, H / 2);
113 canvas->drawRect(rect, paint);
114
115 return H;
116}
constexpr SkColor SK_ColorBLUE
Definition SkColor.h:135
constexpr SkColor SK_ColorRED
Definition SkColor.h:126
#define SK_Scalar1
Definition SkScalar.h:18
const SkScalar H
void drawRect(const SkRect &rect, const SkPaint &paint)
void drawOval(const SkRect &oval, const SkPaint &paint)
const Paint & paint
sk_sp< SkBlender > blender SkRect rect
Definition SkRecords.h:350
Point offset
void inset(float dx, float dy)
Definition SkRect.h:1060
static constexpr SkRect MakeXYWH(float x, float y, float w, float h)
Definition SkRect.h:659

◆ make_bg_shader()

static sk_sp< SkShader > make_bg_shader ( )
static

Definition at line 118 of file aarectmodes.cpp.

118 {
119 SkBitmap bm;
120 bm.allocN32Pixels(2, 2);
121 *bm.getAddr32(0, 0) = *bm.getAddr32(1, 1) = 0xFFFFFFFF;
122 *bm.getAddr32(1, 0) = *bm.getAddr32(0, 1) = SkPackARGB32(0xFF, 0xCE,
123 0xCF, 0xCE);
124
126 SkMatrix::Scale(6, 6));
127}
static SkPMColor SkPackARGB32(U8CPU a, U8CPU r, U8CPU g, U8CPU b)
sk_sp< SkShader > makeShader(SkTileMode tmx, SkTileMode tmy, const SkSamplingOptions &, const SkMatrix *localMatrix=nullptr) const
Definition SkBitmap.cpp:669
void allocN32Pixels(int width, int height, bool isOpaque=false)
Definition SkBitmap.cpp:232
uint32_t * getAddr32(int x, int y) const
Definition SkBitmap.h:1260
static SkMatrix Scale(SkScalar sx, SkScalar sy)
Definition SkMatrix.h:75

◆ test4()

static void test4 ( SkCanvas canvas)
static

Definition at line 26 of file aarectmodes.cpp.

26 {
28 paint.setAntiAlias(true);
29 SkPoint pts[] = {
30 {10, 160}, {610, 160},
31 {610, 160}, {10, 160},
32
33 {610, 160}, {610, 160},
34 {610, 199}, {610, 199},
35
36 {10, 198}, {610, 198},
37 {610, 199}, {10, 199},
38
39 {10, 160}, {10, 160},
40 {10, 199}, {10, 199}
41 };
42 char verbs[] = {
43 0, 1, 1, 1, 4,
44 0, 1, 1, 1, 4,
45 0, 1, 1, 1, 4,
46 0, 1, 1, 1, 4
47 };
49 SkPoint* ptPtr = pts;
50 for (size_t i = 0; i < sizeof(verbs); ++i) {
51 switch ((SkPath::Verb) verbs[i]) {
53 path.moveTo(ptPtr->fX, ptPtr->fY);
54 ++ptPtr;
55 break;
57 path.lineTo(ptPtr->fX, ptPtr->fY);
58 ++ptPtr;
59 break;
61 path.close();
62 break;
63 default:
64 SkASSERT(false);
65 break;
66 }
67 }
68 SkRect clip = {0, 130, 772, 531};
69 canvas->clipRect(clip);
70 canvas->drawPath(path.detach(), paint);
71}
#define SkASSERT(cond)
Definition SkAssert.h:116
static SkPath clip(const SkPath &path, const SkHalfPlane &plane)
Definition SkPath.cpp:3824
void clipRect(const SkRect &rect, SkClipOp op, bool doAntiAlias)
void drawPath(const SkPath &path, const SkPaint &paint)
@ kClose_Verb
Definition SkPath.h:1463
@ kMove_Verb
Definition SkPath.h:1458
@ kLine_Verb
Definition SkPath.h:1459
DEF_SWITCHES_START aot vmservice shared library Name of the *so containing AOT compiled Dart assets for launching the service isolate vm snapshot The VM snapshot data that will be memory mapped as read only SnapshotAssetPath must be present isolate snapshot The isolate snapshot data that will be memory mapped as read only SnapshotAssetPath must be present cache dir path
Definition switches.h:57
float fX
x-axis value
float fY
y-axis value

Variable Documentation

◆ gHeight

const int gHeight = 64

Definition at line 89 of file aarectmodes.cpp.

◆ gModes

constexpr SkBlendMode gModes[]
constexpr

◆ gWidth

const int gWidth = 64

Definition at line 88 of file aarectmodes.cpp.

◆ H

Definition at line 91 of file aarectmodes.cpp.

◆ W

Definition at line 90 of file aarectmodes.cpp.