Flutter Engine
The Flutter Engine
ellipse_geometry.h
Go to the documentation of this file.
1// Copyright 2013 The Flutter Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef FLUTTER_IMPELLER_ENTITY_GEOMETRY_ELLIPSE_GEOMETRY_H_
6#define FLUTTER_IMPELLER_ENTITY_GEOMETRY_ELLIPSE_GEOMETRY_H_
7
9
10namespace impeller {
11
12// Geometry class that can generate vertices (with or without texture
13// coordinates) for filled ellipses. Generating vertices for a stroked
14// ellipse would require a lot more work since the line width must be
15// applied perpendicular to the distorted ellipse shape.
16class EllipseGeometry final : public Geometry {
17 public:
18 explicit EllipseGeometry(Rect bounds);
19
20 ~EllipseGeometry() = default;
21
22 // |Geometry|
23 bool CoversArea(const Matrix& transform, const Rect& rect) const override;
24
25 // |Geometry|
26 bool IsAxisAlignedRect() const override;
27
28 private:
29 // |Geometry|
30 GeometryResult GetPositionBuffer(const ContentContext& renderer,
31 const Entity& entity,
32 RenderPass& pass) const override;
33
34 // |Geometry|
35 std::optional<Rect> GetCoverage(const Matrix& transform) const override;
36
37 Rect bounds_;
38
39 EllipseGeometry(const EllipseGeometry&) = delete;
40
41 EllipseGeometry& operator=(const EllipseGeometry&) = delete;
42};
43
44} // namespace impeller
45
46#endif // FLUTTER_IMPELLER_ENTITY_GEOMETRY_ELLIPSE_GEOMETRY_H_
bool CoversArea(const Matrix &transform, const Rect &rect) const override
Determines if this geometry, transformed by the given transform, will completely cover all surface ar...
bool IsAxisAlignedRect() const override
Render passes encode render commands directed as one specific render target into an underlying comman...
Definition: render_pass.h:33
Optional< SkRect > bounds
Definition: SkRecords.h:189
sk_sp< SkBlender > blender SkRect rect
Definition: SkRecords.h:350
static SkColor4f transform(SkColor4f c, SkColorSpace *src, SkColorSpace *dst)
Definition: p3.cpp:47
A 4x4 matrix using column-major storage.
Definition: matrix.h:37