Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Public Member Functions | List of all members
MaterialShadowsSlide Class Reference
Inheritance diagram for MaterialShadowsSlide:
Slide SkRefCnt SkRefCntBase

Public Member Functions

 MaterialShadowsSlide ()
 
void load (SkScalar w, SkScalar h) override
 
void drawShadowedPath (SkCanvas *canvas, const SkPath &path, const SkPoint3 &zPlaneParams, const SkPaint &paint, SkScalar ambientAlpha, const SkPoint3 &lightPos, SkScalar lightRadius, SkScalar spotAlpha)
 
void draw (SkCanvas *canvas) override
 
- Public Member Functions inherited from Slide
virtual SkISize getDimensions () const
 
virtual void gpuTeardown ()
 
virtual bool animate (double nanos)
 
virtual void resize (SkScalar winWidth, SkScalar winHeight)
 
virtual void unload ()
 
virtual bool onChar (SkUnichar c)
 
virtual bool onMouse (SkScalar x, SkScalar y, skui::InputState state, skui::ModifierKey modifiers)
 
virtual bool onGetControls (SkMetaData *)
 
virtual void onSetControls (const SkMetaData &)
 
const SkStringgetName ()
 
- Public Member Functions inherited from SkRefCntBase
 SkRefCntBase ()
 
virtual ~SkRefCntBase ()
 
bool unique () const
 
void ref () const
 
void unref () const
 

Additional Inherited Members

- Protected Attributes inherited from Slide
SkString fName
 

Detailed Description

Definition at line 24 of file MaterialShadowsSlide.cpp.

Constructor & Destructor Documentation

◆ MaterialShadowsSlide()

MaterialShadowsSlide::MaterialShadowsSlide ( )
inline

Definition at line 33 of file MaterialShadowsSlide.cpp.

33{ fName = "MaterialShadows"; }
SkString fName
Definition Slide.h:54

Member Function Documentation

◆ draw()

void MaterialShadowsSlide::draw ( SkCanvas canvas)
inlineoverridevirtual

Implements Slide.

Definition at line 59 of file MaterialShadowsSlide.cpp.

59 {
60 canvas->drawColor(0xFFFFFFFF);
61
62 const SkScalar kLightRadius = 1.1f;
63 const SkScalar kAmbientAlpha = 0.05f;
64 const SkScalar kSpotAlpha = 0.35f;
65
66 const SkScalar elevations[] = { 1, 3, 6, 8, 12, 24 };
67
69 paint.setAntiAlias(true);
70
71 SkPoint3 lightPos = fLightPos;
72 SkPoint3 zPlaneParams = SkPoint3::Make(0, 0, 0);
73
74 paint.setColor(SK_ColorWHITE);
75 canvas->save();
76 canvas->translate(80, 80);
77 for (unsigned int i = 0; i < std::size(elevations); ++i) {
78 zPlaneParams.fZ = elevations[i];
79 this->drawShadowedPath(canvas, fCirclePath, zPlaneParams, paint, kAmbientAlpha,
80 lightPos, kLightRadius, kSpotAlpha);
81 canvas->translate(80, 0);
82 }
83 canvas->restore();
84
85 canvas->save();
86 canvas->translate(120, 175);
87 for (unsigned int i = 0; i < std::size(elevations); ++i) {
88 zPlaneParams.fZ = elevations[i];
89 this->drawShadowedPath(canvas, fCapsulePath, zPlaneParams, paint, kAmbientAlpha,
90 lightPos, kLightRadius, kSpotAlpha);
91 canvas->translate(160, 0);
92 }
93 canvas->restore();
94
95 canvas->save();
96 canvas->translate(120, 320);
97 for (unsigned int i = 0; i < std::size(elevations); ++i) {
98 zPlaneParams.fZ = elevations[i];
99 this->drawShadowedPath(canvas, fLargeRRPath, zPlaneParams, paint, kAmbientAlpha,
100 lightPos, kLightRadius, kSpotAlpha);
101 canvas->translate(160, 0);
102 }
103 canvas->restore();
104
105 canvas->save();
106 canvas->translate(100, 475);
107 for (unsigned int i = 0; i < std::size(elevations); ++i) {
108 zPlaneParams.fZ = elevations[i];
109 this->drawShadowedPath(canvas, fSmallRRPath, zPlaneParams, paint, kAmbientAlpha,
110 lightPos, kLightRadius, kSpotAlpha);
111 canvas->translate(160, 0);
112 }
113 canvas->restore();
114
115 canvas->save();
116 canvas->translate(100, 600);
117 for (unsigned int i = 0; i < std::size(elevations); ++i) {
118 canvas->save();
119 zPlaneParams.fZ = elevations[i];
120 canvas->rotate(10);
121 this->drawShadowedPath(canvas, fSmallRRPath, zPlaneParams, paint, kAmbientAlpha,
122 lightPos, kLightRadius, kSpotAlpha);
123 canvas->restore();
124 canvas->translate(160, 0);
125 }
126 canvas->restore();
127
128 canvas->save();
129 canvas->translate(100, 725);
130 for (unsigned int i = 0; i < std::size(elevations); ++i) {
131 canvas->save();
132 zPlaneParams.fZ = elevations[i];
133 canvas->rotate(45);
134 this->drawShadowedPath(canvas, fSmallRRPath, zPlaneParams, paint, kAmbientAlpha,
135 lightPos, kLightRadius, kSpotAlpha);
136 canvas->restore();
137 canvas->translate(160, 0);
138 }
139 canvas->restore();
140
141 }
constexpr SkColor SK_ColorWHITE
Definition SkColor.h:122
void drawShadowedPath(SkCanvas *canvas, const SkPath &path, const SkPoint3 &zPlaneParams, const SkPaint &paint, SkScalar ambientAlpha, const SkPoint3 &lightPos, SkScalar lightRadius, SkScalar spotAlpha)
void restore()
Definition SkCanvas.cpp:465
void translate(SkScalar dx, SkScalar dy)
void drawColor(SkColor color, SkBlendMode mode=SkBlendMode::kSrcOver)
Definition SkCanvas.h:1182
void rotate(SkScalar degrees)
int save()
Definition SkCanvas.cpp:451
const Paint & paint
float SkScalar
Definition extension.cpp:12
static SkPoint3 Make(SkScalar x, SkScalar y, SkScalar z)
Definition SkPoint3.h:18
SkScalar fZ
Definition SkPoint3.h:16

◆ drawShadowedPath()

void MaterialShadowsSlide::drawShadowedPath ( SkCanvas canvas,
const SkPath path,
const SkPoint3 zPlaneParams,
const SkPaint paint,
SkScalar  ambientAlpha,
const SkPoint3 lightPos,
SkScalar  lightRadius,
SkScalar  spotAlpha 
)
inline

Definition at line 44 of file MaterialShadowsSlide.cpp.

47 {
48 uint32_t flags = 0;
50
51 SkColor ambientColor = SkColorSetARGB(ambientAlpha * 255, 0, 0, 0);
52 SkColor spotColor = SkColorSetARGB(spotAlpha * 255, 0, 0, 0);
53 SkShadowUtils::DrawShadow(canvas, path, zPlaneParams, lightPos, lightRadius,
54 ambientColor, spotColor, flags);
55
56 canvas->drawPath(path, paint);
57 }
uint32_t SkColor
Definition SkColor.h:37
static constexpr SkColor SkColorSetARGB(U8CPU a, U8CPU r, U8CPU g, U8CPU b)
Definition SkColor.h:49
@ kDirectionalLight_ShadowFlag
void drawPath(const SkPath &path, const SkPaint &paint)
static void DrawShadow(SkCanvas *canvas, const SkPath &path, const SkPoint3 &zPlaneParams, const SkPoint3 &lightPos, SkScalar lightRadius, SkColor ambientColor, SkColor spotColor, uint32_t flags=SkShadowFlags::kNone_ShadowFlag)
FlutterSemanticsFlag flags

◆ load()

void MaterialShadowsSlide::load ( SkScalar  w,
SkScalar  h 
)
inlineoverridevirtual

Reimplemented from Slide.

Definition at line 35 of file MaterialShadowsSlide.cpp.

35 {
36 fCirclePath.addCircle(0, 0, 56/2);
37 fCapsulePath.addRRect(SkRRect::MakeRectXY(SkRect::MakeXYWH(-64, -24, 128, 48), 24, 24));
38 fLargeRRPath.addRRect(SkRRect::MakeRectXY(SkRect::MakeXYWH(-64, -64, 128, 128), 4, 4));
39 fSmallRRPath.addRRect(SkRRect::MakeRectXY(SkRect::MakeXYWH(-40, -40, 80, 80), 4, 4));
40
41 fLightPos = SkPoint3::Make(0, -700, 700);
42 }
SkPath & addCircle(SkScalar x, SkScalar y, SkScalar radius, SkPathDirection dir=SkPathDirection::kCW)
Definition SkPath.cpp:1149
SkPath & addRRect(const SkRRect &rrect, SkPathDirection dir=SkPathDirection::kCW)
Definition SkPath.cpp:990
static SkRRect MakeRectXY(const SkRect &rect, SkScalar xRad, SkScalar yRad)
Definition SkRRect.h:180
static constexpr SkRect MakeXYWH(float x, float y, float w, float h)
Definition SkRect.h:659

The documentation for this class was generated from the following file: