|
virtual bool | PrefersImpellerPaths () const |
|
virtual void | clipPath (const CacheablePath &cache, ClipOp clip_op, bool is_aa) |
|
virtual void | drawPath (const CacheablePath &cache) |
|
virtual void | drawShadow (const CacheablePath &cache, const DlColor color, const SkScalar elevation, bool transparent_occluder, SkScalar dpr) |
|
virtual void | setAntiAlias (bool aa)=0 |
|
virtual void | setDrawStyle (DlDrawStyle style)=0 |
|
virtual void | setColor (DlColor color)=0 |
|
virtual void | setStrokeWidth (float width)=0 |
|
virtual void | setStrokeMiter (float limit)=0 |
|
virtual void | setStrokeCap (DlStrokeCap cap)=0 |
|
virtual void | setStrokeJoin (DlStrokeJoin join)=0 |
|
virtual void | setColorSource (const DlColorSource *source)=0 |
|
virtual void | setColorFilter (const DlColorFilter *filter)=0 |
|
virtual void | setInvertColors (bool invert)=0 |
|
virtual void | setBlendMode (DlBlendMode mode)=0 |
|
virtual void | setMaskFilter (const DlMaskFilter *filter)=0 |
|
virtual void | setImageFilter (const DlImageFilter *filter)=0 |
|
virtual void | save ()=0 |
|
virtual void | save (uint32_t total_content_depth) |
|
virtual void | saveLayer (const SkRect &bounds, const SaveLayerOptions options, const DlImageFilter *backdrop=nullptr)=0 |
|
virtual void | saveLayer (const SkRect &bounds, const SaveLayerOptions &options, uint32_t total_content_depth, DlBlendMode max_content_blend_mode, const DlImageFilter *backdrop=nullptr) |
|
virtual void | restore ()=0 |
|
virtual void | saveLayer (const SkRect *bounds, const SaveLayerOptions options, const DlImageFilter *backdrop=nullptr) final |
|
virtual void | translate (SkScalar tx, SkScalar ty)=0 |
|
virtual void | scale (SkScalar sx, SkScalar sy)=0 |
|
virtual void | rotate (SkScalar degrees)=0 |
|
virtual void | skew (SkScalar sx, SkScalar sy)=0 |
|
virtual void | transform2DAffine (SkScalar mxx, SkScalar mxy, SkScalar mxt, SkScalar myx, SkScalar myy, SkScalar myt)=0 |
|
virtual void | transformFullPerspective (SkScalar mxx, SkScalar mxy, SkScalar mxz, SkScalar mxt, SkScalar myx, SkScalar myy, SkScalar myz, SkScalar myt, SkScalar mzx, SkScalar mzy, SkScalar mzz, SkScalar mzt, SkScalar mwx, SkScalar mwy, SkScalar mwz, SkScalar mwt)=0 |
|
virtual void | transformReset ()=0 |
|
virtual void | clipRect (const SkRect &rect, ClipOp clip_op, bool is_aa)=0 |
|
virtual void | clipRRect (const SkRRect &rrect, ClipOp clip_op, bool is_aa)=0 |
|
virtual void | clipPath (const SkPath &path, ClipOp clip_op, bool is_aa)=0 |
|
virtual void | drawColor (DlColor color, DlBlendMode mode)=0 |
|
virtual void | drawPaint ()=0 |
|
virtual void | drawLine (const SkPoint &p0, const SkPoint &p1)=0 |
|
virtual void | drawDashedLine (const DlPoint &p0, const DlPoint &p1, DlScalar on_length, DlScalar off_length)=0 |
|
virtual void | drawRect (const SkRect &rect)=0 |
|
virtual void | drawOval (const SkRect &bounds)=0 |
|
virtual void | drawCircle (const SkPoint ¢er, SkScalar radius)=0 |
|
virtual void | drawRRect (const SkRRect &rrect)=0 |
|
virtual void | drawDRRect (const SkRRect &outer, const SkRRect &inner)=0 |
|
virtual void | drawPath (const SkPath &path)=0 |
|
virtual void | drawArc (const SkRect &oval_bounds, SkScalar start_degrees, SkScalar sweep_degrees, bool use_center)=0 |
|
virtual void | drawPoints (PointMode mode, uint32_t count, const SkPoint points[])=0 |
|
virtual void | drawVertices (const DlVertices *vertices, DlBlendMode mode)=0 |
|
virtual void | drawImage (const sk_sp< DlImage > image, const SkPoint point, DlImageSampling sampling, bool render_with_attributes)=0 |
|
virtual void | drawImageRect (const sk_sp< DlImage > image, const SkRect &src, const SkRect &dst, DlImageSampling sampling, bool render_with_attributes, SrcRectConstraint constraint=SrcRectConstraint::kFast)=0 |
|
virtual void | drawImageNine (const sk_sp< DlImage > image, const SkIRect ¢er, const SkRect &dst, DlFilterMode filter, bool render_with_attributes)=0 |
|
virtual void | drawAtlas (const sk_sp< DlImage > atlas, const SkRSXform xform[], const SkRect tex[], const DlColor colors[], int count, DlBlendMode mode, DlImageSampling sampling, const SkRect *cull_rect, bool render_with_attributes)=0 |
|
virtual void | drawDisplayList (const sk_sp< DisplayList > display_list, SkScalar opacity=SK_Scalar1)=0 |
|
virtual void | drawTextBlob (const sk_sp< SkTextBlob > blob, SkScalar x, SkScalar y)=0 |
|
virtual void | drawTextFrame (const std::shared_ptr< impeller::TextFrame > &text_frame, SkScalar x, SkScalar y)=0 |
|
virtual void | drawShadow (const SkPath &path, const DlColor color, const SkScalar elevation, bool transparent_occluder, SkScalar dpr)=0 |
|
Internal API for rendering recorded display lists to backends.
The |DisplayList| object will play back recorded operations in this format. Most developers should not need to deal with this interface unless they are writing a utility that needs to examine the contents of a display list.
Similar to |DlCanvas|, this interface carries clip and transform state which are saved and restored by the |save|, |saveLayer|, and |restore| calls.
Unlike DlCanvas, this interface has attribute state which is global across an entire DisplayList (not affected by save/restore).
DISPLAYLIST DEPTH TRACKING
Each rendering call in the DisplayList stream is assumed to have a "depth" value relative to the beginning of its DisplayList. The depth value is implicitly allocated during recording and only reported in 2 places so it is important for a dispatcher to perform the same internal allocations if it is to make sense of the information reported by the save/saveLayer calls. This depth value is maintained as follows:
- The absolute depth value is never reported, only the total depth size of the entire DisplayList or one of its save/restore pairs is reported. Since the DisplayList might be dispatched recursively due to embedded drawDisplayList calls, these depth size values will often be relative to things like:
- the start of a given save/saveLayer group
- the start of a DisplayList dispatch or recursion as such, only totals for groups of DisplayList dispatched calls will be reported. These totals will be reported in:
- the
DisplayList::total_depth()
method reporting the total depth accumulated for every operation in the DisplayList
- the save/saveLayer dispatch calls will report the total depth accumulated for every call until their corresponding restore call.
- The depth value is incremented for every drawing operation, including:
- all draw* calls (including drawDisplayList)
- drawDisplayList will also accumulate the total_depth() of the DisplayList object it is drawing (in other words it will skip enough depth values for each drawing call in the child). This bump is in addition to the depth value it records for being a rendering operation. Some implementations may need to surround the actual drawDisplayList with a protective saveLayer, but others may not - so the implicit depth value assigned to the drawDisplayList call itself may go unused, but must be accounted for.
- a saveLayer call will also increment the depth value just like a rendering call. This is in addition to the depth of its content. It is doing so to reserve a depth for the drawing operation that copies its layer back to the parent.
- Each save() or saveLayer() call will report the total depth of all rendering calls within its content (recorded before the corresponding restore) and report this total during dispatch. This information might be needed to assign depths to the clip operations that occur within its content. As there is no enclosing saveLayer/restore pair around the root of a DisplayList, the total depth of the DisplayList can be used to determine the appropriate clip depths for any clip ops appearing before the first save/saveLayer or after the last restore.
- See also
- DlSkCanvasDispatcher
-
impeller::DlDispatcher
-
DlOpSpy
Definition at line 89 of file dl_op_receiver.h.