Flutter Engine
The Flutter Engine
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
Definition: aarectmodes.cpp:90
static SkScalar drawCell(SkCanvas *canvas, SkBlendMode mode, SkAlpha a0, SkAlpha a1)
Definition: aarectmodes.cpp:93
constexpr SkBlendMode gModes[]
Definition: aarectmodes.cpp:73
static void test4(SkCanvas *canvas)
Definition: aarectmodes.cpp:26
void setShader(sk_sp< SkShader > shader)
float SkScalar
Definition: extension.cpp:12
Optional< SkRect > bounds
Definition: SkRecords.h:189
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive keep the shell running after the Dart script has completed enable serial On low power devices with low core running concurrent GC tasks on threads can cause them to contend with the UI thread which could potentially lead to jank This option turns off all concurrent GC activities domain network JSON encoded network policy per domain This overrides the DisallowInsecureConnections switch Embedder can specify whether to allow or disallow insecure connections at a domain level old gen heap size
Definition: switches.h:259
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
Definition: aarectmodes.cpp:91
void drawRect(const SkRect &rect, const SkPaint &paint)
Definition: SkCanvas.cpp:1673
void drawOval(const SkRect &oval, const SkPaint &paint)
Definition: SkCanvas.cpp:1698
const Paint & paint
Definition: color_source.cc:38
sk_sp< SkBlender > blender SkRect rect
Definition: SkRecords.h:350
it will be possible to load the file into Perfetto s trace viewer disable asset Prevents usage of any non test fonts unless they were explicitly Loaded via prefetched default font Indicates whether the embedding started a prefetch of the default font manager before creating the engine run In non interactive mode
Definition: switches.h:228
SeparatedVector2 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)
Definition: SkColorPriv.h:106
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
SkSamplingOptions(SkFilterMode::kLinear))

◆ 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:3892
void clipRect(const SkRect &rect, SkClipOp op, bool doAntiAlias)
Definition: SkCanvas.cpp:1361
void drawPath(const SkPath &path, const SkPaint &paint)
Definition: SkCanvas.cpp:1747
@ kClose_Verb
Definition: SkPath.h:1471
@ kMove_Verb
Definition: SkPath.h:1466
@ kLine_Verb
Definition: SkPath.h:1467
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
Definition: SkPoint_impl.h:164
float fY
y-axis value
Definition: SkPoint_impl.h:165

Variable Documentation

◆ gHeight

const int gHeight = 64

Definition at line 89 of file aarectmodes.cpp.

◆ gModes

constexpr SkBlendMode gModes[]
constexpr
Initial value:

Definition at line 73 of file aarectmodes.cpp.

◆ 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.