Struct vizia_core::vg::Handle

pub struct Handle<N>(/* private fields */)
where
    N: NativeDrop;
Expand description

Wraps a native type that can be represented in Rust memory.

This type requires an implementation of the NativeDrop trait.

Implementations§

§

impl Handle<SkCodecs_Decoder>

pub fn id(&self) -> &'static str

pub fn is_format(&self, data: &[u8]) -> bool

pub fn from_stream<'a>( &self, stream: &'a mut impl Read, ) -> Result<Codec<'a>, SkCodec_Result>

§

impl Handle<SkBitmap>

pub fn new() -> Handle<SkBitmap>

Creates an empty Bitmap without pixels, with ColorType::Unknown, AlphaType::Unknown, and with a width and height of zero. PixelRef origin is set to (0, 0).

Use Self::set_info() to associate ColorType, AlphaType, width, and height after Bitmap has been created.

pub fn swap(&mut self, other: &mut Handle<SkBitmap>)

Swaps the fields of the two bitmaps.

pub fn pixmap(&self) -> &Pixmap<'_>

Returns a constant reference to the Pixmap holding the Bitmap pixel address, row bytes, and ImageInfo.

pub fn info(&self) -> &Handle<SkImageInfo>

Returns width, height, AlphaType, ColorType, and ColorSpace.

pub fn width(&self) -> i32

Returns pixel count in each row. Should be equal or less than row_bytes() / info().bytes_per_pixel().

May be less than pixel_ref().width(). Will not exceed pixel_ref().width() less pixel_ref_origin().x.

pub fn height(&self) -> i32

Returns pixel row count.

Maybe be less than pixel_ref().height(). Will not exceed pixel_ref().height() less pixel_ref_origin().y.

pub fn color_type(&self) -> ColorType

pub fn alpha_type(&self) -> SkAlphaType

pub fn color_space(&self) -> Option<RCHandle<SkColorSpace>>

Returns ColorSpace, the range of colors, associated with ImageInfo. The returned ColorSpace is immutable.

pub fn bytes_per_pixel(&self) -> usize

Returns number of bytes per pixel required by ColorType.

Returns zero if color_type() is ColorType::Unknown.

pub fn row_bytes_as_pixels(&self) -> usize

Returns number of pixels that fit on row. Should be greater than or equal to width().

pub fn shift_per_pixel(&self) -> usize

Returns bit shift converting row bytes to row pixels.

Returns zero for ColorType::Unknown.

pub fn is_empty(&self) -> bool

Returns true if either width() or height() are zero.

Does not check if PixelRef is None; call draws_nothing() to check width(), height(), and PixelRef.

pub fn is_null(&self) -> bool

Returns true if PixelRef is None.

Does not check if width() or height() are zero; call draws_nothing() to check width(), height(), and PixelRef.

pub fn draws_nothing(&self) -> bool

Returns true if width() or height() are zero, or if PixelRef is None.

If true, Bitmap has no effect when drawn or drawn into.

pub fn row_bytes(&self) -> usize

Returns row bytes, the interval from one pixel row to the next. Row bytes is at least as large as: width() * info().bytes_per_pixel().

Returns zero if color_type() is ColorType::Unknown, or if row bytes supplied to set_info() is not large enough to hold a row of pixels.

pub fn set_alpha_type(&mut self, alpha_type: SkAlphaType) -> bool

Sets AlphaType, if alpha_type is compatible with ColorType. Returns true unless alpha_type is AlphaType::Unknown and current AlphaType is not AlphaType::Unknown.

Returns true if ColorType is ColorType::Unknown. alpha_type is ignored, and AlphaType remains AlphaType::Unknown.

Returns true if ColorType is ColorType::RGB565 or ColorType::Gray8. alpha_type is ignored, and AlphaType remains AlphaType::Opaque.

If ColorType is ColorType::ARGB4444, ColorType::RGBA8888, ColorType::BGRA8888, or ColorType::RGBAF16: returns true unless alpha_type is AlphaType::Unknown and AlphaType is not AlphaType::Unknown. If AlphaType is AlphaType::Unknown, alpha_type is ignored.

If ColorType is ColorType::Alpha8, returns true unless alpha_type is AlphaType::Unknown and AlphaType is not AlphaType::Unknown. If AlphaType is kUnknown_SkAlphaType, alpha_type is ignored. If alpha_type is AlphaType::Unpremul, it is treated as AlphaType::Premul.

This changes AlphaType in PixelRef; all bitmaps sharing PixelRef are affected.

pub fn set_color_space( &mut self, color_space: impl Into<Option<RCHandle<SkColorSpace>>>, )

Sets the ColorSpace associated with this Bitmap.

The raw pixel data is not altered by this call; no conversion is performed.

This changes ColorSpace in PixelRef; all bitmaps sharing PixelRef are affected.

pub fn pixels(&mut self) -> *mut c_void

Returns pixel address, the base address corresponding to the pixel origin.

pub fn compute_byte_size(&self) -> usize

Returns minimum memory required for pixel storage.
Does not include unused memory on last row when row_bytes_as_pixels() exceeds width().
Returns usize::MAX if result does not fit in usize.
Returns zero if height() or width() is 0.
Returns height() times row_bytes() if color_type() is ColorType::Unknown.

pub fn is_immutable(&self) -> bool

Returns true if pixels can not change.

Most immutable Bitmap checks trigger an assert only on debug builds.

pub fn set_immutable(&mut self)

Sets internal flag to mark Bitmap as immutable. Once set, pixels can not change. Any other bitmap sharing the same PixelRef are also marked as immutable.

Once PixelRef is marked immutable, the setting cannot be cleared.

Writing to immutable Bitmap pixels triggers an assert on debug builds.

pub fn is_opaque(&self) -> bool

Returns true if AlphaType is set to hint that all pixels are opaque; their alpha value is implicitly or explicitly 1.0. If true, and all pixels are not opaque, Skia may draw incorrectly.

Does not check if ColorType allows alpha, or if any pixel value has transparency.

pub fn reset(&mut self)

Resets to its initial state; all fields are set to zero, as if Bitmap had been initialized by Bitmap::new().

Sets width, height, row bytes to zero; pixel address to None; ColorType to ColorType::Unknown; and AlphaType to AlphaType::Unknown.

If PixelRef is allocated, its reference count is decreased by one, releasing its memory if Bitmap is the sole owner.

pub fn compute_is_opaque(bm: &Handle<SkBitmap>) -> bool

Returns true if all pixels are opaque. ColorType determines how pixels are encoded, and whether pixel describes alpha. Returns true for ColorType without alpha in each pixel; for other ColorType, returns true if all pixels have alpha values equivalent to 1.0 or greater.

Returns false for ColorType::Unknown.

pub fn bounds(&self) -> IRect

Returns IRect { 0, 0, width(), height() }.

pub fn dimensions(&self) -> ISize

Returns ISize { width(), height() }.

pub fn get_subset(&self) -> IRect

Returns the bounds of this bitmap, offset by its PixelRef origin.

pub fn set_info( &mut self, image_info: &Handle<SkImageInfo>, row_bytes: impl Into<Option<usize>>, ) -> bool

Sets width, height, AlphaType, ColorType, ColorSpace, and optional row_bytes. Frees pixels, and returns true if successful.

row_bytes must equal or exceed image_info.min_row_bytes(). If image_info.color_space() is ColorType::Unknown, row_bytes is ignored and treated as zero; for all other ColorSpace values, row_bytes of zero is treated as image_info.min_row_bytes().

Calls reset() and returns false if:

  • rowBytes exceeds 31 bits
  • image_info.width() is negative
  • image_info.height() is negative
  • row_bytes is positive and less than image_info.width() times image_info.bytes_per_pixel()

pub fn try_alloc_pixels_flags( &mut self, image_info: &Handle<SkImageInfo>, ) -> bool

Sets ImageInfo to info following the rules in set_info() and allocates pixel memory. Memory is zeroed.

Returns false and calls reset() if ImageInfo could not be set, or memory could not be allocated, or memory could not optionally be zeroed.

On most platforms, allocating pixel memory may succeed even though there is not sufficient memory to hold pixels; allocation does not take place until the pixels are written to. The actual behavior depends on the platform implementation of calloc().

pub fn alloc_pixels_flags(&mut self, image_info: &Handle<SkImageInfo>)

Sets ImageInfo to info following the rules in set_info() and allocates pixel memory. Memory is zeroed.

Returns false and calls reset() if ImageInfo could not be set, or memory could not be allocated, or memory could not optionally be zeroed.

On most platforms, allocating pixel memory may succeed even though there is not sufficient memory to hold pixels; allocation does not take place until the pixels are written to. The actual behavior depends on the platform implementation of calloc().

pub fn try_alloc_pixels_info( &mut self, image_info: &Handle<SkImageInfo>, row_bytes: impl Into<Option<usize>>, ) -> bool

Sets ImageInfo to info following the rules in set_info() and allocates pixel memory. row_bytes must equal or exceed info.width() times info.bytes_per_pixel(), or equal None. Pass in None for row_bytes to compute the minimum valid value.

Returns false and calls reset() if ImageInfo could not be set, or memory could not be allocated.

On most platforms, allocating pixel memory may succeed even though there is not sufficient memory to hold pixels; allocation does not take place until the pixels are written to. The actual behavior depends on the platform implementation of malloc().

pub fn alloc_pixels_info( &mut self, image_info: &Handle<SkImageInfo>, row_bytes: impl Into<Option<usize>>, )

Sets ImageInfo to info following the rules in set_info() and allocates pixel memory. row_bytes must equal or exceed info.width() times info.bytes_per_pixel(), or equal None. Pass in None for row_bytes to compute the minimum valid value.

Aborts execution if SkImageInfo could not be set, or memory could be allocated.

On most platforms, allocating pixel memory may succeed even though there is not sufficient memory to hold pixels; allocation does not take place until the pixels are written to. The actual behavior depends on the platform implementation of malloc().

pub fn try_alloc_n32_pixels( &mut self, _: (i32, i32), is_opaque: impl Into<Option<bool>>, ) -> bool

Sets ImageInfo to width, height, and native color type; and allocates pixel memory. If is_opaque is true, sets ImageInfo to AlphaType::Opaque; otherwise, sets to AlphaType::Premul.

Calls reset() and returns false if width exceeds 29 bits or is negative, or height is negative.

Returns false if allocation fails.

Use to create Bitmap that matches crate::PMColor, the native pixel arrangement on the platform. Bitmap drawn to output device skips converting its pixel format.

pub fn alloc_n32_pixels( &mut self, _: (i32, i32), is_opaque: impl Into<Option<bool>>, )

Sets ImageInfo to width, height, and native color type; and allocates pixel memory. If is_opaque is true, sets ImageInfo to AlphaType::Opaque; otherwise, sets to AlphaType::Premul.

Aborts if width exceeds 29 bits or is negative, or height is negative, or allocation fails.

Use to create Bitmap that matches crate::PMColor, the native pixel arrangement on the platform. Bitmap drawn to output device skips converting its pixel format.

pub unsafe fn install_pixels( &mut self, info: &Handle<SkImageInfo>, pixels: *mut c_void, row_bytes: usize, ) -> bool

Sets ImageInfo to info following the rules in set_info(), and creates PixelRef containing pixels and row_bytes.

If ImageInfo could not be set, or row_bytes is less than info.min_row_bytes(): calls reset(), and returns false`.

Otherwise, if pixels equals ptr::null_mut(): sets ImageInfo, returns true.

Caller must ensure that pixels are valid for the lifetime of Bitmap and PixelRef.

pub fn try_alloc_pixels(&mut self) -> bool

Allocates pixel memory with HeapAllocator, and replaces existing PixelRef. The allocation size is determined by ImageInfo width, height, and ColorType.

Returns false if info().color_type() is ColorType::Unknown, or allocation fails.

pub fn alloc_pixels(&mut self)

Allocates pixel memory with HeapAllocator, and replaces existing PixelRef. The allocation size is determined by ImageInfo width, height, and ColorType.

Aborts if info().color_type() is ColorType::Unknown, or allocation fails.

pub fn pixel_ref(&self) -> Option<RCHandle<SkPixelRef>>

Returns PixelRef, which contains: pixel base address; its dimensions; and row_bytes(), the interval from one row to the next. Does not change PixelRef reference count. PixelRef may be shared by multiple bitmaps.

If PixelRef has not been set, returns None.

pub fn pixel_ref_origin(&self) -> IPoint

Returns origin of pixels within PixelRef. Bitmap bounds is always contained by PixelRef bounds, which may be the same size or larger. Multiple Bitmap can share the same PixelRef, where each Bitmap has different bounds.

The returned origin added to Bitmap dimensions equals or is smaller than the PixelRef dimensions.

Returns (0, 0) if PixelRef is None.

pub fn set_pixel_ref( &mut self, pixel_ref: impl Into<Option<RCHandle<SkPixelRef>>>, offset: impl Into<IPoint>, )

Replaces pixel_ref and origin in Bitmap. offset specifies the offset within the PixelRef pixels for the top-left corner of the bitmap.

Asserts in debug builds if offset is out of range. Pins offset to legal range in release builds.

The caller is responsible for ensuring that the pixels match the ColorType and AlphaType in ImageInfo.

pub fn is_ready_to_draw(&self) -> bool

Returns true if Bitmap can be drawn.

pub fn generation_id(&self) -> u32

Returns a unique value corresponding to the pixels in PixelRef.
Returns a different value after notify_pixels_changed() has been called.
Returns zero if PixelRef is None.

Determines if pixels have changed since last examined.

pub fn notify_pixels_changed(&self)

Marks that pixels in PixelRef have changed. Subsequent calls to generation_id() return a different value.

pub fn erase_color(&self, c: impl Into<Color>)

Replaces pixel values with c, interpreted as being in the sRGB ColorSpace. All pixels contained by [bounds(&self)] are affected. If the [color_type(&self)] is ColorType::Gray8 or ColorType::RGB565, then alpha is ignored; RGB is treated as opaque. If [color_type(&self)] is ColorType::Alpha8, then RGB is ignored.

Input color is ultimately converted to an Color4f, so Self::erase_color_4f will have higher color resolution.

pub fn erase_color_4f(&self, c: impl AsRef<Color4f>)

Replaces pixel values with c, interpreted as being in the sRGB ColorSpace. All pixels contained by [bounds(&self)] are affected. If the [color_type(&self)] is ColorType::Gray8 or ColorType::RGB565, then alpha is ignored; RGB is treated as opaque. If [color_type(&self)] is ColorType::Alpha8, then RGB is ignored.

pub fn erase_argb(&self, a: u8, r: u8, g: u8, b: u8)

Replaces pixel values with unpremultiplied color built from a, r, g, and b, interpreted as being in the sRGB ColorSpace. All pixels contained by [bounds(&self)] are affected. If the [color_type(&self)] is ColorType::Gray8 or ColorType::RGB565, then a is ignored; r, g, and b are treated as opaque. If [color_type(&self)] is ColorType::Alpha8, then r, g, and b are ignored.

pub fn erase(&self, c: impl Into<Color>, area: impl AsRef<IRect>)

Replaces pixel values inside area with c. interpreted as being in the sRGB ColorSpace. If area does not intersect bounds(), call has no effect.

If the color_type() is ColorType::Gray8 ColorType::RGB565, then alpha is ignored; RGB is treated as opaque. If color_type() is ColorType::Alpha8, then RGB is ignored.

Input color is ultimately converted to an Color4f, so Self::erase_4f will have higher color resolution.

pub fn erase_4f(&self, c: impl AsRef<Color4f>, area: impl AsRef<IRect>)

Replaces pixel values inside area with c. interpreted as being in the sRGB ColorSpace. If area does not intersect bounds(), call has no effect.

If the color_type() is ColorType::Gray8 ColorType::RGB565, then alpha is ignored; RGB is treated as opaque. If color_type() is ColorType::Alpha8, then RGB is ignored.

pub fn get_color(&self, p: impl Into<IPoint>) -> Color

Returns pixel at (x, y) as unpremultiplied color.
Returns black with alpha if ColorType is ColorType::Alpha8

Input is not validated: out of bounds values of x or y trigger an assert().

Fails if ColorType is ColorType::Unknown or pixel address is nullptr.

ColorSpace in ImageInfo is ignored. Some color precision may be lost in the conversion to unpremultiplied color; original pixel data may have additional precision.

pub fn get_color_4f(&self, p: impl Into<IPoint>) -> Color4f

Returns pixel at (x, y) as unpremultiplied color. Returns black with alpha if ColorType is ColorType::Alpha8

Input is not validated: out of bounds values of x or y trigger an assert().

Fails if ColorType is ColorType::Unknown or pixel address is None.

ColorSpace in ImageInfo is ignored. Some color precision may be lost in the conversion to unpremultiplied color.

pub fn get_alpha_f(&self, p: impl Into<IPoint>) -> f32

Look up the pixel at (x,y) and return its alpha component, normalized to [0..1]. This is roughly equivalent to get_color().a(), but can be more efficient (and more precise if the pixels store more than 8 bits per component).

pub fn get_addr(&self, p: impl Into<IPoint>) -> *const c_void

Returns pixel address at (x, y).

Input is not validated: out of bounds values of x or y, or ColorType::Unknown, trigger an assert(). Returns nullptr if ColorType is ColorType::Unknown, or PixelRef is nullptr.

Performs a lookup of pixel size; for better performance, call one of: get_addr8(), get_addr16(), or get_addr32().

pub fn extract_subset( &self, dst: &mut Handle<SkBitmap>, subset: impl AsRef<IRect>, ) -> bool

Shares PixelRef with dst. Pixels are not copied; Bitmap and dst point to the same pixels; dst Self::bounds() are set to the intersection of subset and the original Self::bounds().

Subset may be larger than Self::bounds(). Any area outside of Self::bounds() is ignored.

Any contents of dst are discarded.

Return false if:

example: https://fiddle.skia.org/c/@Bitmap_extractSubset

pub unsafe fn read_pixels( &self, dst_info: &Handle<SkImageInfo>, dst_pixels: *mut c_void, dst_row_bytes: usize, src_x: i32, src_y: i32, ) -> bool

Copies a crate::Rect of pixels from Bitmap to dst_pixels. Copy starts at (src_x, src_y), and does not exceed Bitmap (width(), height()).

dst_info specifies width, height, ColorType, AlphaType, and ColorSpace of destination.
dst_row_bytes specifics the gap from one destination row to the next. Returns true if pixels are copied. Returns false if:

  • dst_info has no address
  • dst_row_bytes is less than dst_info.min_row_bytes()
  • PixelRef is nullptr

Pixels are copied only if pixel conversion is possible. If Self::color_type() is ColorType::Gray8, or ColorType::Alpha8; dst_info.color_type() must match. If Self::color_type() is ColorType::Gray8, dst_info.color_space() must match. If Self::alpha_type() is AlphaType::Opaque, dst_info.alpha_type() must match. If Self::color_space() is nullptr, dst_info.color_space() must match. Returns false if pixel conversion is not possible.

src_x and src_y may be negative to copy only top or left of source. Returns false if Self::width() or Self::height() is zero or negative. Returns false if abs(src_x)

= Self::width(), or if abs(src_y) >= Self::height().

pub fn extract_alpha( &self, dst: &mut Handle<SkBitmap>, paint: Option<&Handle<SkPaint>>, ) -> Option<IPoint>

Sets dst to alpha described by pixels. Returns false if dst cannot be written to or dst pixels cannot be allocated.

If paint is not None and contains crate::MaskFilter, crate::MaskFilter generates mask alpha from Bitmap. Uses HeapAllocator to reserve memory for dst PixelRef. Returns offset to top-left position for dst for alignment with Bitmap; (0, 0) unless crate::MaskFilter generates mask.

pub fn peek_pixels(&self) -> Option<Pixmap<'_>>

Copies Bitmap pixel address, row bytes, and ImageInfo to pixmap, if address is available, and returns [Some(Pixmap)]. If pixel address is not available, return None and leave pixmap unchanged.

example: https://fiddle.skia.org/c/@Bitmap_peekPixels

pub fn to_shader<'a>( &self, tile_modes: impl Into<Option<(SkTileMode, SkTileMode)>>, sampling: impl Into<SamplingOptions>, local_matrix: impl Into<Option<&'a Matrix>>, ) -> Option<RCHandle<SkShader>>

Make a shader with the specified tiling, matrix and sampling.
Defaults to clamp in both X and Y.

pub fn as_image(&self) -> RCHandle<SkImage>

Returns a new image from the bitmap. If the bitmap is marked immutable, this will share the pixel buffer. If not, it will make a copy of the pixels for the image.

§

impl Handle<SkContourMeasureIter>

pub fn new( path: &Handle<SkPath>, force_closed: bool, res_scale: impl Into<Option<f32>>, ) -> Handle<SkContourMeasureIter>

pub fn from_path( path: &Handle<SkPath>, force_closed: bool, res_scale: impl Into<Option<f32>>, ) -> Handle<SkContourMeasureIter>

pub fn reset( &mut self, path: &Handle<SkPath>, force_closed: bool, res_scale: impl Into<Option<f32>>, ) -> &mut Handle<SkContourMeasureIter>

§

impl Handle<SkFont>

pub fn new( typeface: impl Into<RCHandle<SkTypeface>>, size: impl Into<Option<f32>>, ) -> Handle<SkFont>

pub fn from_typeface( typeface: impl Into<RCHandle<SkTypeface>>, size: impl Into<Option<f32>>, ) -> Handle<SkFont>

pub fn from_typeface_with_params( typeface: impl Into<RCHandle<SkTypeface>>, size: f32, scale: f32, skew: f32, ) -> Handle<SkFont>

pub fn is_force_auto_hinting(&self) -> bool

pub fn is_embedded_bitmaps(&self) -> bool

pub fn is_subpixel(&self) -> bool

pub fn is_linear_metrics(&self) -> bool

pub fn is_embolden(&self) -> bool

pub fn is_baseline_snap(&self) -> bool

pub fn set_force_auto_hinting( &mut self, force_auto_hinting: bool, ) -> &mut Handle<SkFont>

pub fn set_embedded_bitmaps( &mut self, embedded_bitmaps: bool, ) -> &mut Handle<SkFont>

pub fn set_subpixel(&mut self, subpixel: bool) -> &mut Handle<SkFont>

pub fn set_linear_metrics( &mut self, linear_metrics: bool, ) -> &mut Handle<SkFont>

pub fn set_embolden(&mut self, embolden: bool) -> &mut Handle<SkFont>

pub fn set_baseline_snap(&mut self, baseline_snap: bool) -> &mut Handle<SkFont>

pub fn edging(&self) -> SkFont_Edging

pub fn set_edging(&mut self, edging: SkFont_Edging) -> &mut Handle<SkFont>

pub fn set_hinting(&mut self, hinting: SkFontHinting) -> &mut Handle<SkFont>

pub fn hinting(&self) -> SkFontHinting

pub fn with_size(&self, size: f32) -> Option<Handle<SkFont>>

pub fn typeface(&self) -> RCHandle<SkTypeface>

pub fn size(&self) -> f32

pub fn scale_x(&self) -> f32

pub fn skew_x(&self) -> f32

pub fn set_typeface( &mut self, tf: impl Into<RCHandle<SkTypeface>>, ) -> &mut Handle<SkFont>

pub fn set_size(&mut self, size: f32) -> &mut Handle<SkFont>

pub fn set_scale_x(&mut self, scale_x: f32) -> &mut Handle<SkFont>

pub fn set_skew_x(&mut self, skew_x: f32) -> &mut Handle<SkFont>

pub fn str_to_glyphs(&self, str: impl AsRef<str>, glyphs: &mut [u16]) -> usize

pub fn text_to_glyphs( &self, text: impl EncodedText, glyphs: &mut [u16], ) -> usize

pub fn count_str(&self, str: impl AsRef<str>) -> usize

pub fn count_text(&self, text: impl EncodedText) -> usize

pub fn str_to_glyphs_vec(&self, str: impl AsRef<str>) -> Vec<u16>

pub fn text_to_glyphs_vec(&self, text: impl EncodedText) -> Vec<u16>

pub fn measure_str( &self, str: impl AsRef<str>, paint: Option<&Handle<SkPaint>>, ) -> (f32, Rect)

pub fn measure_text( &self, text: impl EncodedText, paint: Option<&Handle<SkPaint>>, ) -> (f32, Rect)

pub fn unichar_to_glyph(&self, uni: i32) -> u16

pub fn unichar_to_glyphs(&self, uni: &[i32], glyphs: &mut [u16])

pub fn get_widths(&self, glyphs: &[u16], widths: &mut [f32])

pub fn get_widths_bounds( &self, glyphs: &[u16], widths: Option<&mut [f32]>, bounds: Option<&mut [Rect]>, paint: Option<&Handle<SkPaint>>, )

pub fn get_bounds( &self, glyphs: &[u16], bounds: &mut [Rect], paint: Option<&Handle<SkPaint>>, )

pub fn get_pos(&self, glyphs: &[u16], pos: &mut [Point], origin: Option<Point>)

pub fn get_x_pos(&self, glyphs: &[u16], x_pos: &mut [f32], origin: Option<f32>)

pub fn get_intercepts<'a>( &self, glyphs: &[u16], pos: &[Point], _: (f32, f32), paint: impl Into<Option<&'a Handle<SkPaint>>>, ) -> Vec<f32>

pub fn get_path(&self, glyph_id: u16) -> Option<Handle<SkPath>>

pub fn metrics(&self) -> (f32, FontMetrics)

pub fn spacing(&self) -> f32

§

impl Handle<SkColorInfo>

pub fn new( ct: ColorType, at: SkAlphaType, cs: impl Into<Option<RCHandle<SkColorSpace>>>, ) -> Handle<SkColorInfo>

pub fn color_space(&self) -> Option<RCHandle<SkColorSpace>>

pub fn color_type(&self) -> ColorType

pub fn alpha_type(&self) -> SkAlphaType

pub fn is_opaque(&self) -> bool

pub fn is_gamma_close_to_srgb(&self) -> bool

pub fn with_alpha_type( &self, new_alpha_type: SkAlphaType, ) -> Handle<SkColorInfo>

pub fn with_color_type(&self, new_color_type: ColorType) -> Handle<SkColorInfo>

pub fn with_color_space( &self, cs: impl Into<Option<RCHandle<SkColorSpace>>>, ) -> Handle<SkColorInfo>

pub fn bytes_per_pixel(&self) -> usize

pub fn shift_per_pixel(&self) -> usize

§

impl Handle<SkImageInfo>

pub fn new( dimensions: impl Into<ISize>, ct: ColorType, at: SkAlphaType, cs: impl Into<Option<RCHandle<SkColorSpace>>>, ) -> Handle<SkImageInfo>

pub fn from_color_info( dimensions: impl Into<ISize>, color_info: Handle<SkColorInfo>, ) -> Handle<SkImageInfo>

pub fn new_n32( dimensions: impl Into<ISize>, at: SkAlphaType, cs: impl Into<Option<RCHandle<SkColorSpace>>>, ) -> Handle<SkImageInfo>

pub fn new_s32( dimensions: impl Into<ISize>, at: SkAlphaType, ) -> Handle<SkImageInfo>

pub fn new_n32_premul( dimensions: impl Into<ISize>, cs: impl Into<Option<RCHandle<SkColorSpace>>>, ) -> Handle<SkImageInfo>

pub fn new_a8(dimensions: impl Into<ISize>) -> Handle<SkImageInfo>

pub fn new_unknown(dimensions: Option<ISize>) -> Handle<SkImageInfo>

pub fn width(&self) -> i32

pub fn height(&self) -> i32

pub fn color_type(&self) -> ColorType

pub fn alpha_type(&self) -> SkAlphaType

pub fn color_space(&self) -> Option<RCHandle<SkColorSpace>>

pub fn is_empty(&self) -> bool

pub fn color_info(&self) -> &Handle<SkColorInfo>

pub fn is_opaque(&self) -> bool

pub fn dimensions(&self) -> ISize

pub fn bounds(&self) -> IRect

pub fn is_gamma_close_to_srgb(&self) -> bool

pub fn with_dimensions( &self, new_dimensions: impl Into<ISize>, ) -> Handle<SkImageInfo>

pub fn with_alpha_type( &self, new_alpha_type: SkAlphaType, ) -> Handle<SkImageInfo>

pub fn with_color_type(&self, new_color_type: ColorType) -> Handle<SkImageInfo>

pub fn with_color_space( &self, new_color_space: impl Into<Option<RCHandle<SkColorSpace>>>, ) -> Handle<SkImageInfo>

pub fn bytes_per_pixel(&self) -> usize

pub fn shift_per_pixel(&self) -> usize

pub fn min_row_bytes(&self) -> usize

pub fn compute_offset( &self, point: impl Into<IPoint>, row_bytes: usize, ) -> usize

pub fn compute_byte_size(&self, row_bytes: usize) -> usize

pub fn compute_min_byte_size(&self) -> usize

pub fn valid_row_bytes(&self, row_bytes: usize) -> bool

pub fn reset(&mut self) -> &mut Handle<SkImageInfo>

§

impl Handle<SkPaint>

pub fn new<'a>( color: impl AsRef<Color4f>, color_space: impl Into<Option<&'a RCHandle<SkColorSpace>>>, ) -> Handle<SkPaint>

pub fn reset(&mut self) -> &mut Handle<SkPaint>

pub fn is_anti_alias(&self) -> bool

pub fn set_anti_alias(&mut self, anti_alias: bool) -> &mut Handle<SkPaint>

pub fn is_dither(&self) -> bool

pub fn set_dither(&mut self, dither: bool) -> &mut Handle<SkPaint>

pub fn style(&self) -> SkPaint_Style

pub fn set_style(&mut self, style: SkPaint_Style) -> &mut Handle<SkPaint>

pub fn set_stroke(&mut self, stroke: bool) -> &mut Handle<SkPaint>

pub fn color(&self) -> Color

pub fn color4f(&self) -> Color4f

pub fn set_color(&mut self, color: impl Into<Color>) -> &mut Handle<SkPaint>

pub fn set_color4f<'a>( &mut self, color: impl AsRef<Color4f>, color_space: impl Into<Option<&'a RCHandle<SkColorSpace>>>, ) -> &mut Handle<SkPaint>

pub fn alpha_f(&self) -> f32

pub fn alpha(&self) -> u8

pub fn set_alpha_f(&mut self, alpha: f32) -> &mut Handle<SkPaint>

pub fn set_alpha(&mut self, alpha: u8) -> &mut Handle<SkPaint>

pub fn set_argb(&mut self, a: u8, r: u8, g: u8, b: u8) -> &mut Handle<SkPaint>

pub fn stroke_width(&self) -> f32

pub fn set_stroke_width(&mut self, width: f32) -> &mut Handle<SkPaint>

pub fn stroke_miter(&self) -> f32

pub fn set_stroke_miter(&mut self, miter: f32) -> &mut Handle<SkPaint>

pub fn stroke_cap(&self) -> SkPaint_Cap

pub fn set_stroke_cap(&mut self, cap: SkPaint_Cap) -> &mut Handle<SkPaint>

pub fn stroke_join(&self) -> SkPaint_Join

pub fn set_stroke_join(&mut self, join: SkPaint_Join) -> &mut Handle<SkPaint>

pub fn shader(&self) -> Option<RCHandle<SkShader>>

pub fn set_shader( &mut self, shader: impl Into<Option<RCHandle<SkShader>>>, ) -> &mut Handle<SkPaint>

pub fn color_filter(&self) -> Option<RCHandle<SkColorFilter>>

pub fn set_color_filter( &mut self, color_filter: impl Into<Option<RCHandle<SkColorFilter>>>, ) -> &mut Handle<SkPaint>

pub fn as_blend_mode(&self) -> Option<SkBlendMode>

pub fn blend_mode_or(&self, default_mode: SkBlendMode) -> SkBlendMode

pub fn blend_mode(&self) -> SkBlendMode

👎Deprecated since 0.42.0: Use as_blend_mode() or blend_mode_or() instead.

pub fn is_src_over(&self) -> bool

pub fn set_blend_mode(&mut self, mode: SkBlendMode) -> &mut Handle<SkPaint>

pub fn blender(&self) -> Option<RCHandle<SkBlender>>

pub fn set_blender( &mut self, blender: impl Into<Option<RCHandle<SkBlender>>>, ) -> &mut Handle<SkPaint>

pub fn path_effect(&self) -> Option<RCHandle<SkPathEffect>>

pub fn set_path_effect( &mut self, path_effect: impl Into<Option<RCHandle<SkPathEffect>>>, ) -> &mut Handle<SkPaint>

pub fn mask_filter(&self) -> Option<RCHandle<SkMaskFilter>>

pub fn set_mask_filter( &mut self, mask_filter: impl Into<Option<RCHandle<SkMaskFilter>>>, ) -> &mut Handle<SkPaint>

pub fn image_filter(&self) -> Option<RCHandle<SkImageFilter>>

pub fn set_image_filter( &mut self, image_filter: impl Into<Option<RCHandle<SkImageFilter>>>, ) -> &mut Handle<SkPaint>

pub fn nothing_to_draw(&self) -> bool

§

impl Handle<SkPath>

Path contain geometry. Path may be empty, or contain one or more verbs that outline a figure. Path always starts with a move verb to a Cartesian coordinate, and may be followed by additional verbs that add lines or curves. Adding a close verb makes the geometry into a continuous loop, a closed contour. Path may contain any number of contours, each beginning with a move verb.

Path contours may contain only a move verb, or may also contain lines, quadratic beziers, conics, and cubic beziers. Path contours may be open or closed.

When used to draw a filled area, Path describes whether the fill is inside or outside the geometry. Path also describes the winding rule used to fill overlapping contours.

Internally, Path lazily computes metrics likes bounds and convexity. Call Path::update_bounds_cache to make Path thread safe.

pub fn new_from( points: &[Point], verbs: &[u8], conic_weights: &[f32], fill_type: SkPathFillType, is_volatile: impl Into<Option<bool>>, ) -> Handle<SkPath>

Create a new path with the specified segments.

The points and weights arrays are read in order, based on the sequence of verbs.

Move 1 point Line 1 point Quad 2 points Conic 2 points and 1 weight Cubic 3 points Close 0 points

If an illegal sequence of verbs is encountered, or the specified number of points or weights is not sufficient given the verbs, an empty Path is returned.

A legal sequence of verbs consists of any number of Contours. A contour always begins with a Move verb, followed by 0 or more segments: Line, Quad, Conic, Cubic, followed by an optional Close.

pub fn rect( rect: impl AsRef<Rect>, dir: impl Into<Option<SkPathDirection>>, ) -> Handle<SkPath>

pub fn oval( oval: impl AsRef<Rect>, dir: impl Into<Option<SkPathDirection>>, ) -> Handle<SkPath>

pub fn oval_with_start_index( oval: impl AsRef<Rect>, dir: SkPathDirection, start_index: usize, ) -> Handle<SkPath>

pub fn circle( center: impl Into<Point>, radius: f32, dir: impl Into<Option<SkPathDirection>>, ) -> Handle<SkPath>

pub fn rrect( rect: impl AsRef<RRect>, dir: impl Into<Option<SkPathDirection>>, ) -> Handle<SkPath>

pub fn rrect_with_start_index( rect: impl AsRef<RRect>, dir: SkPathDirection, start_index: usize, ) -> Handle<SkPath>

pub fn polygon( pts: &[Point], is_closed: bool, fill_type: impl Into<Option<SkPathFillType>>, is_volatile: impl Into<Option<bool>>, ) -> Handle<SkPath>

pub fn line(a: impl Into<Point>, b: impl Into<Point>) -> Handle<SkPath>

pub fn new() -> Handle<SkPath>

Constructs an empty Path. By default, Path has no verbs, no Point, and no weights. FillType is set to Winding.

Returns: empty Path

example: https://fiddle.skia.org/c/@Path_empty_constructor

pub fn snapshot(&self) -> Handle<SkPath>

Returns a copy of this path in the current state.

pub fn detach(&mut self) -> Handle<SkPath>

Returns a copy of this path in the current state, and resets the path to empty.

pub fn is_interpolatable(&self, compare: &Handle<SkPath>) -> bool

Returns true if Path contain equal verbs and equal weights. If Path contain one or more conics, the weights must match.

conic_to() may add different verbs depending on conic weight, so it is not trivial to interpolate a pair of Path containing conics with different conic weight values.

  • compare - Path to compare Returns: true if Path verb array and weights are equivalent

example: https://fiddle.skia.org/c/@Path_isInterpolatable

pub fn interpolate( &self, ending: &Handle<SkPath>, weight: f32, ) -> Option<Handle<SkPath>>

Interpolates between Path with Point array of equal size. Copy verb array and weights to out, and set out Point array to a weighted average of this Point array and ending Point array, using the formula: (Path Point * weight) + ending Point * (1 - weight).

weight is most useful when between zero (ending Point array) and one (this Point_Array); will work with values outside of this range.

interpolate() returns false and leaves out unchanged if Point array is not the same size as ending Point array. Call is_interpolatable() to check Path compatibility prior to calling interpolate().

  • ending - Point array averaged with this Point array
  • weight - contribution of this Point array, and one minus contribution of ending Point array
  • out - Path replaced by interpolated averages Returns: true if Path contain same number of Point

example: https://fiddle.skia.org/c/@Path_interpolate

pub fn fill_type(&self) -> SkPathFillType

Returns PathFillType, the rule used to fill Path.

Returns: current PathFillType setting

pub fn set_fill_type(&mut self, ft: SkPathFillType) -> &mut Handle<SkPath>

Sets FillType, the rule used to fill Path. While there is no check that ft is legal, values outside of FillType are not supported.

pub fn is_inverse_fill_type(&self) -> bool

Returns if FillType describes area outside Path geometry. The inverse fill area extends indefinitely.

Returns: true if FillType is InverseWinding or InverseEvenOdd

pub fn toggle_inverse_fill_type(&mut self) -> &mut Handle<SkPath>

Replaces FillType with its inverse. The inverse of FillType describes the area unmodified by the original FillType.

pub fn convexity_type(&self) -> !

👎Deprecated since 0.36.0: Removed, use is_convex()

pub fn convexity_type_or_unknown(&self) -> !

👎Deprecated since 0.36.0: Removed, use is_convex()

pub fn is_convex(&self) -> bool

Returns true if the path is convex. If necessary, it will first compute the convexity.

pub fn is_oval(&self) -> Option<Rect>

Returns true if this path is recognized as an oval or circle.

bounds receives bounds of oval.

bounds is unmodified if oval is not found.

  • bounds - storage for bounding Rect of oval; may be None Returns: true if Path is recognized as an oval or circle

example: https://fiddle.skia.org/c/@Path_isOval

pub fn is_rrect(&self) -> Option<RRect>

Returns true if path is representable as RRect. Returns false if path is representable as oval, circle, or Rect.

rrect receives bounds of RRect.

rrect is unmodified if RRect is not found.

  • rrect - storage for bounding Rect of RRect; may be None Returns: true if Path contains only RRect

example: https://fiddle.skia.org/c/@Path_isRRect

pub fn is_arc(&self) -> Option<Arc>

Returns true if path is representable as an oval arc. In other words, could this path be drawn using crate::Canvas::draw_arc.

arc receives parameters of arc

  • arc - storage for arc; may be None Returns: true if Path contains only a single arc from an oval

pub fn reset(&mut self) -> &mut Handle<SkPath>

Sets Path to its initial state. Removes verb array, Point array, and weights, and sets FillType to Winding. Internal storage associated with Path is released.

Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_reset

pub fn rewind(&mut self) -> &mut Handle<SkPath>

Sets Path to its initial state, preserving internal storage. Removes verb array, Point array, and weights, and sets FillType to Winding. Internal storage associated with Path is retained.

Use rewind() instead of reset() if Path storage will be reused and performance is critical.

Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_rewind

pub fn is_empty(&self) -> bool

Returns if Path is empty. Empty Path may have FillType but has no Point, Verb, or conic weight. Path::default() constructs empty Path; reset() and rewind() make Path empty.

Returns: true if the path contains no Verb array

pub fn is_last_contour_closed(&self) -> bool

Returns if contour is closed. Contour is closed if Path Verb array was last modified by close(). When stroked, closed contour draws crate::paint::Join instead of crate::paint::Cap at first and last Point.

Returns: true if the last contour ends with a Verb::Close

example: https://fiddle.skia.org/c/@Path_isLastContourClosed

pub fn is_finite(&self) -> bool

Returns true for finite Point array values between negative SK_ScalarMax and positive SK_ScalarMax. Returns false for any Point array value of SK_ScalarInfinity, SK_ScalarNegativeInfinity, or SK_ScalarNaN.

Returns: true if all Point values are finite

pub fn is_volatile(&self) -> bool

Returns true if the path is volatile; it will not be altered or discarded by the caller after it is drawn. Path by default have volatile set false, allowing crate::Surface to attach a cache of data which speeds repeated drawing. If true, crate::Surface may not speed repeated drawing.

Returns: true if caller will alter Path after drawing

pub fn set_is_volatile(&mut self, is_volatile: bool) -> &mut Handle<SkPath>

Specifies whether Path is volatile; whether it will be altered or discarded by the caller after it is drawn. Path by default have volatile set false, allowing Device to attach a cache of data which speeds repeated drawing.

Mark temporary paths, discarded or modified after use, as volatile to inform Device that the path need not be cached.

Mark animating Path volatile to improve performance. Mark unchanging Path non-volatile to improve repeated rendering.

raster surface Path draws are affected by volatile for some shadows. GPU surface Path draws are affected by volatile for some shadows and concave geometries.

  • is_volatile - true if caller will alter Path after drawing Returns: reference to Path

pub fn is_line_degenerate( p1: impl Into<Point>, p2: impl Into<Point>, exact: bool, ) -> bool

Tests if line between Point pair is degenerate. Line with no length or that moves a very short distance is degenerate; it is treated as a point.

exact changes the equality test. If true, returns true only if p1 equals p2. If false, returns true if p1 equals or nearly equals p2.

  • p1 - line start point
  • p2 - line end point
  • exact - if false, allow nearly equals Returns: true if line is degenerate; its length is effectively zero

example: https://fiddle.skia.org/c/@Path_IsLineDegenerate

pub fn is_quad_degenerate( p1: impl Into<Point>, p2: impl Into<Point>, p3: impl Into<Point>, exact: bool, ) -> bool

Tests if quad is degenerate. Quad with no length or that moves a very short distance is degenerate; it is treated as a point.

  • p1 - quad start point
  • p2 - quad control point
  • p3 - quad end point
  • exact - if true, returns true only if p1, p2, and p3 are equal; if false, returns true if p1, p2, and p3 are equal or nearly equal Returns: true if quad is degenerate; its length is effectively zero

pub fn is_cubic_degenerate( p1: impl Into<Point>, p2: impl Into<Point>, p3: impl Into<Point>, p4: impl Into<Point>, exact: bool, ) -> bool

Tests if cubic is degenerate. Cubic with no length or that moves a very short distance is degenerate; it is treated as a point.

  • p1 - cubic start point
  • p2 - cubic control point 1
  • p3 - cubic control point 2
  • p4 - cubic end point
  • exact - if true, returns true only if p1, p2, p3, and p4 are equal; if false, returns true if p1, p2, p3, and p4 are equal or nearly equal Returns: true if cubic is degenerate; its length is effectively zero

pub fn is_line(&self) -> Option<(Point, Point)>

Returns true if Path contains only one line; Verb array has two entries: Verb::Move, Verb::Line. If Path contains one line and line is not None, line is set to line start point and line end point. Returns false if Path is not one line; line is unaltered.

  • line - storage for line. May be None Returns: true if Path contains exactly one line

example: https://fiddle.skia.org/c/@Path_isLine

pub fn count_points(&self) -> usize

Returns the number of points in Path. Point count is initially zero.

Returns: Path Point array length

example: https://fiddle.skia.org/c/@Path_countPoints

pub fn get_point(&self, index: usize) -> Option<Point>

Returns Point at index in Point array. Valid range for index is 0 to count_points() - 1. Returns (0, 0) if index is out of range.

  • index - Point array element selector Returns: Point array value or (0, 0)

example: https://fiddle.skia.org/c/@Path_getPoint

pub fn get_points(&self, points: &mut [Point]) -> usize

Returns number of points in Path. Up to max points are copied. points may be None; then, max must be zero. If max is greater than number of points, excess points storage is unaltered.

  • points - storage for Path Point array. May be None
  • max - maximum to copy; must be greater than or equal to zero Returns: Path Point array length

example: https://fiddle.skia.org/c/@Path_getPoints

pub fn count_verbs(&self) -> usize

Returns the number of verbs: Verb::Move, Verb::Line, Verb::Quad, Verb::Conic, Verb::Cubic, and Verb::Close; added to Path.

Returns: length of verb array

example: https://fiddle.skia.org/c/@Path_countVerbs

pub fn get_verbs(&self, verbs: &mut [u8]) -> usize

Returns the number of verbs in the path. Up to max verbs are copied. The verbs are copied as one byte per verb.

  • verbs - storage for verbs, may be None
  • max - maximum number to copy into verbs Returns: the actual number of verbs in the path

example: https://fiddle.skia.org/c/@Path_getVerbs

pub fn approximate_bytes_used(&self) -> usize

Returns the approximate byte size of the Path in memory.

Returns: approximate size

pub fn swap(&mut self, other: &mut Handle<SkPath>) -> &mut Handle<SkPath>

Exchanges the verb array, Point array, weights, and FillType with other. Cached state is also exchanged. swap() internally exchanges pointers, so it is lightweight and does not allocate memory.

swap() usage has largely been replaced by PartialEq. Path do not copy their content on assignment until they are written to, making assignment as efficient as swap().

  • other - Path exchanged by value

example: https://fiddle.skia.org/c/@Path_swap

pub fn bounds(&self) -> &Rect

Returns minimum and maximum axes values of Point array. Returns (0, 0, 0, 0) if Path contains no points. Returned bounds width and height may be larger or smaller than area affected when Path is drawn.

Rect returned includes all Point added to Path, including Point associated with Verb::Move that define empty contours.

Returns: bounds of all Point in Point array

pub fn update_bounds_cache(&mut self) -> &mut Handle<SkPath>

Updates internal bounds so that subsequent calls to bounds() are instantaneous. Unaltered copies of Path may also access cached bounds through bounds().

For now, identical to calling bounds() and ignoring the returned value.

Call to prepare Path subsequently drawn from multiple threads, to avoid a race condition where each draw separately computes the bounds.

pub fn compute_tight_bounds(&self) -> Rect

Returns minimum and maximum axes values of the lines and curves in Path. Returns (0, 0, 0, 0) if Path contains no points. Returned bounds width and height may be larger or smaller than area affected when Path is drawn.

Includes Point associated with Verb::Move that define empty contours.

Behaves identically to bounds() when Path contains only lines. If Path contains curves, computed bounds includes the maximum extent of the quad, conic, or cubic; is slower than bounds(); and unlike bounds(), does not cache the result.

Returns: tight bounds of curves in Path

example: https://fiddle.skia.org/c/@Path_computeTightBounds

pub fn conservatively_contains_rect(&self, rect: impl AsRef<Rect>) -> bool

Returns true if rect is contained by Path. May return false when rect is contained by Path.

For now, only returns true if Path has one contour and is convex. rect may share points and edges with Path and be contained. Returns true if rect is empty, that is, it has zero width or height; and the Point or line described by rect is contained by Path.

  • rect - Rect, line, or Point checked for containment Returns: true if rect is contained

example: https://fiddle.skia.org/c/@Path_conservativelyContainsRect

pub fn inc_reserve(&mut self, extra_pt_count: usize) -> &mut Handle<SkPath>

Grows Path verb array and Point array to contain extra_pt_count additional Point. May improve performance and use less memory by reducing the number and size of allocations when creating Path.

  • extra_pt_count - number of additional Point to allocate

example: https://fiddle.skia.org/c/@Path_incReserve

pub fn inc_reserve_with_verb_and_conic( &mut self, extra_pt_count: usize, extra_verb_count: impl Into<Option<usize>>, extract_conic_count: impl Into<Option<usize>>, ) -> &mut Handle<SkPath>

Grows Path verb array and Point array to contain extra_pt_count additional Point. May improve performance and use less memory by reducing the number and size of allocations when creating Path.

  • extra_pt_count - number of additional Point to allocate
  • extra_verb_count - number of additional verbs
  • extra_conic_count - number of additional conics

example: https://fiddle.skia.org/c/@Path_incReserve

pub fn shrink_to_fit(&mut self) -> !

👎Deprecated since 0.37.0: Removed without replacement

pub fn move_to(&mut self, p: impl Into<Point>) -> &mut Handle<SkPath>

Adds beginning of contour at Point (x, y).

  • x - x-axis value of contour start
  • y - y-axis value of contour start Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_moveTo

pub fn r_move_to(&mut self, d: impl Into<Point>) -> &mut Handle<SkPath>

Adds beginning of contour relative to last point. If Path is empty, starts contour at (dx, dy). Otherwise, start contour at last point offset by (dx, dy). Function name stands for “relative move to”.

  • dx - offset from last point to contour start on x-axis
  • dy - offset from last point to contour start on y-axis Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_rMoveTo

pub fn line_to(&mut self, p: impl Into<Point>) -> &mut Handle<SkPath>

Adds line from last point to (x, y). If Path is empty, or last Verb is Verb::Close, last point is set to (0, 0) before adding line.

line_to() appends Verb::Move to verb array and (0, 0) to Point array, if needed. line_to() then appends Verb::Line to verb array and (x, y) to Point array.

  • x - end of added line on x-axis
  • y - end of added line on y-axis Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_lineTo

pub fn r_line_to(&mut self, d: impl Into<Point>) -> &mut Handle<SkPath>

Adds line from last point to vector (dx, dy). If Path is empty, or last Verb is Verb::Close, last point is set to (0, 0) before adding line.

Appends Verb::Move to verb array and (0, 0) to Point array, if needed; then appends Verb::Line to verb array and line end to Point array. Line end is last point plus vector (dx, dy). Function name stands for “relative line to”.

  • dx - offset from last point to line end on x-axis
  • dy - offset from last point to line end on y-axis Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_rLineTo example: https://fiddle.skia.org/c/@Quad_a example: https://fiddle.skia.org/c/@Quad_b

pub fn quad_to( &mut self, p1: impl Into<Point>, p2: impl Into<Point>, ) -> &mut Handle<SkPath>

Adds quad from last point towards (x1, y1), to (x2, y2). If Path is empty, or last Verb is Verb::Close, last point is set to (0, 0) before adding quad.

Appends Verb::Move to verb array and (0, 0) to Point array, if needed; then appends Verb::Quad to verb array; and (x1, y1), (x2, y2) to Point array.

  • x1 - control Point of quad on x-axis
  • y1 - control Point of quad on y-axis
  • x2 - end Point of quad on x-axis
  • y2 - end Point of quad on y-axis Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_quadTo

pub fn r_quad_to( &mut self, dx1: impl Into<Point>, dx2: impl Into<Point>, ) -> &mut Handle<SkPath>

Adds quad from last point towards vector (dx1, dy1), to vector (dx2, dy2). If Path is empty, or last Verb is Verb::Close, last point is set to (0, 0) before adding quad.

Appends Verb::Move to verb array and (0, 0) to Point array, if needed; then appends Verb::Quad to verb array; and appends quad control and quad end to Point array. Quad control is last point plus vector (dx1, dy1). Quad end is last point plus vector (dx2, dy2). Function name stands for “relative quad to”.

  • dx1 - offset from last point to quad control on x-axis
  • dy1 - offset from last point to quad control on y-axis
  • dx2 - offset from last point to quad end on x-axis
  • dy2 - offset from last point to quad end on y-axis Returns: reference to Path

example: https://fiddle.skia.org/c/@Conic_Weight_a example: https://fiddle.skia.org/c/@Conic_Weight_b example: https://fiddle.skia.org/c/@Conic_Weight_c example: https://fiddle.skia.org/c/@Path_rQuadTo

pub fn conic_to( &mut self, p1: impl Into<Point>, p2: impl Into<Point>, w: f32, ) -> &mut Handle<SkPath>

Adds conic from last point towards (x1, y1), to (x2, y2), weighted by w. If Path is empty, or last Verb is Verb::Close, last point is set to (0, 0) before adding conic.

Appends Verb::Move to verb array and (0, 0) to Point array, if needed.

If w is finite and not one, appends Verb::Conic to verb array; and (x1, y1), (x2, y2) to Point array; and w to conic weights.

If w is one, appends Verb::Quad to verb array, and (x1, y1), (x2, y2) to Point array.

If w is not finite, appends Verb::Line twice to verb array, and (x1, y1), (x2, y2) to Point array.

  • x1 - control Point of conic on x-axis
  • y1 - control Point of conic on y-axis
  • x2 - end Point of conic on x-axis
  • y2 - end Point of conic on y-axis
  • w - weight of added conic Returns: reference to Path

pub fn r_conic_to( &mut self, d1: impl Into<Point>, d2: impl Into<Point>, w: f32, ) -> &mut Handle<SkPath>

Adds conic from last point towards vector (dx1, dy1), to vector (dx2, dy2), weighted by w. If Path is empty, or last Verb is Verb::Close, last point is set to (0, 0) before adding conic.

Appends Verb::Move to verb array and (0, 0) to Point array, if needed.

If w is finite and not one, next appends Verb::Conic to verb array, and w is recorded as conic weight; otherwise, if w is one, appends Verb::Quad to verb array; or if w is not finite, appends Verb::Line twice to verb array.

In all cases appends Point control and end to Point array. control is last point plus vector (dx1, dy1). end is last point plus vector (dx2, dy2).

Function name stands for “relative conic to”.

  • dx1 - offset from last point to conic control on x-axis
  • dy1 - offset from last point to conic control on y-axis
  • dx2 - offset from last point to conic end on x-axis
  • dy2 - offset from last point to conic end on y-axis
  • w - weight of added conic Returns: reference to Path

pub fn cubic_to( &mut self, p1: impl Into<Point>, p2: impl Into<Point>, p3: impl Into<Point>, ) -> &mut Handle<SkPath>

Adds cubic from last point towards (x1, y1), then towards (x2, y2), ending at (x3, y3). If Path is empty, or last Verb is Verb::Close, last point is set to (0, 0) before adding cubic.

Appends Verb::Move to verb array and (0, 0) to Point array, if needed; then appends Verb::Cubic to verb array; and (x1, y1), (x2, y2), (x3, y3) to Point array.

  • x1 - first control Point of cubic on x-axis
  • y1 - first control Point of cubic on y-axis
  • x2 - second control Point of cubic on x-axis
  • y2 - second control Point of cubic on y-axis
  • x3 - end Point of cubic on x-axis
  • y3 - end Point of cubic on y-axis Returns: reference to Path

pub fn r_cubic_to( &mut self, d1: impl Into<Point>, d2: impl Into<Point>, d3: impl Into<Point>, ) -> &mut Handle<SkPath>

Adds cubic from last point towards vector (dx1, dy1), then towards vector (dx2, dy2), to vector (dx3, dy3). If Path is empty, or last Verb is Verb::Close, last point is set to (0, 0) before adding cubic.

Appends Verb::Move to verb array and (0, 0) to Point array, if needed; then appends Verb::Cubic to verb array; and appends cubic control and cubic end to Point array. Cubic control is last point plus vector (dx1, dy1). Cubic end is last point plus vector (dx2, dy2). Function name stands for “relative cubic to”.

  • dx1 - offset from last point to first cubic control on x-axis
  • dy1 - offset from last point to first cubic control on y-axis
  • dx2 - offset from last point to second cubic control on x-axis
  • dy2 - offset from last point to second cubic control on y-axis
  • dx3 - offset from last point to cubic end on x-axis
  • dy3 - offset from last point to cubic end on y-axis Returns: reference to Path

pub fn arc_to( &mut self, oval: impl AsRef<Rect>, start_angle: f32, sweep_angle: f32, force_move_to: bool, ) -> &mut Handle<SkPath>

Appends arc to Path. Arc added is part of ellipse bounded by oval, from start_angle through sweep_angle. Both start_angle and sweep_angle are measured in degrees, where zero degrees is aligned with the positive x-axis, and positive sweeps extends arc clockwise.

arc_to() adds line connecting Path last Point to initial arc Point if force_move_to is false and Path is not empty. Otherwise, added contour begins with first point of arc. Angles greater than -360 and less than 360 are treated modulo 360.

  • oval - bounds of ellipse containing arc
  • start_angle - starting angle of arc in degrees
  • sweep_angle - sweep, in degrees. Positive is clockwise; treated modulo 360
  • force_move_to - true to start a new contour with arc Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_arcTo

pub fn arc_to_tangent( &mut self, p1: impl Into<Point>, p2: impl Into<Point>, radius: f32, ) -> &mut Handle<SkPath>

Appends arc to Path, after appending line if needed. Arc is implemented by conic weighted to describe part of circle. Arc is contained by tangent from last Path point to (x1, y1), and tangent from (x1, y1) to (x2, y2). Arc is part of circle sized to radius, positioned so it touches both tangent lines.

If last Path Point does not start Arc, arc_to appends connecting Line to Path. The length of Vector from (x1, y1) to (x2, y2) does not affect Arc.

Arc sweep is always less than 180 degrees. If radius is zero, or if tangents are nearly parallel, arc_to appends Line from last Path Point to (x1, y1).

arc_to_tangent appends at most one Line and one conic. arc_to_tangent implements the functionality of PostScript arct and HTML Canvas arc_to.

  • p1.x - x-axis value common to pair of tangents
  • p1.y - y-axis value common to pair of tangents
  • p2.x - x-axis value end of second tangent
  • p2.y - y-axis value end of second tangent
  • radius - distance from arc to circle center Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_arcTo_2_a example: https://fiddle.skia.org/c/@Path_arcTo_2_b example: https://fiddle.skia.org/c/@Path_arcTo_2_c

pub fn arc_to_rotated( &mut self, r: impl Into<Point>, x_axis_rotate: f32, large_arc: SkPath_ArcSize, sweep: SkPathDirection, end: impl Into<Point>, ) -> &mut Handle<SkPath>

Appends arc to Path. Arc is implemented by one or more conics weighted to describe part of oval with radii (rx, ry) rotated by x_axis_rotate degrees. Arc curves from last Path Point to (x, y), choosing one of four possible routes: clockwise or counterclockwise, and smaller or larger.

Arc sweep is always less than 360 degrees. arc_to_rotated() appends line to (x, y) if either radii are zero, or if last Path Point equals (x, y). arc_to_rotated() scales radii (rx, ry) to fit last Path Point and (x, y) if both are greater than zero but too small.

arc_to_rotated() appends up to four conic curves. arc_to_rotated() implements the functionality of SVG arc, although SVG sweep-flag value is opposite the integer value of sweep; SVG sweep-flag uses 1 for clockwise, while Direction::CW cast to int is zero.

  • r.x - radius on x-axis before x-axis rotation
  • r.y - radius on y-axis before x-axis rotation
  • x_axis_rotate - x-axis rotation in degrees; positive values are clockwise
  • large_arc - chooses smaller or larger arc
  • sweep - chooses clockwise or counterclockwise arc
  • end.x - end of arc
  • end.y - end of arc Returns: reference to Path

pub fn r_arc_to_rotated( &mut self, r: impl Into<Point>, x_axis_rotate: f32, large_arc: SkPath_ArcSize, sweep: SkPathDirection, d: impl Into<Point>, ) -> &mut Handle<SkPath>

Appends arc to Path, relative to last Path Point. Arc is implemented by one or more conic, weighted to describe part of oval with radii (r.x, r.y) rotated by x_axis_rotate degrees. Arc curves from last Path Point to relative end Point: (dx, dy), choosing one of four possible routes: clockwise or counterclockwise, and smaller or larger. If Path is empty, the start arc Point is (0, 0).

Arc sweep is always less than 360 degrees. arc_to() appends line to end Point if either radii are zero, or if last Path Point equals end Point. arc_to() scales radii (rx, ry) to fit last Path Point and end Point if both are greater than zero but too small to describe an arc.

arc_to() appends up to four conic curves. arc_to() implements the functionality of svg arc, although SVG “sweep-flag” value is opposite the integer value of sweep; SVG “sweep-flag” uses 1 for clockwise, while Direction::CW cast to int is zero.

  • r.x - radius before x-axis rotation
  • r.y - radius before x-axis rotation
  • x_axis_rotate - x-axis rotation in degrees; positive values are clockwise
  • large_arc - chooses smaller or larger arc
  • sweep - chooses clockwise or counterclockwise arc
  • d.x - x-axis offset end of arc from last Path Point
  • d.y - y-axis offset end of arc from last Path Point Returns: reference to Path

pub fn close(&mut self) -> &mut Handle<SkPath>

Appends Verb::Close to Path. A closed contour connects the first and last Point with line, forming a continuous loop. Open and closed contour draw the same with fill style. With stroke style, open contour draws crate::paint::Cap at contour start and end; closed contour draws crate::paint::Join at contour start and end.

close() has no effect if Path is empty or last Path Verb is Verb::Close.

Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_close

pub fn convert_conic_to_quads( p0: impl Into<Point>, p1: impl Into<Point>, p2: impl Into<Point>, w: f32, pts: &mut [Point], pow2: usize, ) -> Option<usize>

Approximates conic with quad array. Conic is constructed from start Point p0, control Point p1, end Point p2, and weight w. Quad array is stored in pts; this storage is supplied by caller. Maximum quad count is 2 to the pow2. Every third point in array shares last Point of previous quad and first Point of next quad. Maximum pts storage size is given by: (1 + 2 * (1 << pow2)) * sizeof(Point).

Returns quad count used the approximation, which may be smaller than the number requested.

conic weight determines the amount of influence conic control point has on the curve. w less than one represents an elliptical section. w greater than one represents a hyperbolic section. w equal to one represents a parabolic section.

Two quad curves are sufficient to approximate an elliptical conic with a sweep of up to 90 degrees; in this case, set pow2 to one.

  • p0 - conic start Point
  • p1 - conic control Point
  • p2 - conic end Point
  • w - conic weight
  • pts - storage for quad array
  • pow2 - quad count, as power of two, normally 0 to 5 (1 to 32 quad curves) Returns: number of quad curves written to pts

pub fn is_rect(&self) -> Option<(Rect, bool, SkPathDirection)>

Returns Some(Rect, bool, PathDirection) if Path is equivalent to Rect when filled. If false: rect, is_closed, and direction are unchanged. If true: rect, is_closed, and direction are written to.

rect may be smaller than the Path bounds. Path bounds may include Verb::Move points that do not alter the area drawn by the returned rect.

Returns: Some(rect, is_closed, direction) if Path contains Rect

  • rect - bounds of Rect
  • is_closed - set to true if Path is closed
  • direction - to Rect direction

example: https://fiddle.skia.org/c/@Path_isRect

pub fn add_rect( &mut self, rect: impl AsRef<Rect>, dir_start: Option<(SkPathDirection, usize)>, ) -> &mut Handle<SkPath>

Adds a new contour to the path, defined by the rect, and wound in the specified direction. The verbs added to the path will be:

Move, Line, Line, Line, Close

start specifies which corner to begin the contour: 0: upper-left corner 1: upper-right corner 2: lower-right corner 3: lower-left corner

This start point also acts as the implied beginning of the subsequent, contour, if it does not have an explicit move_to(). e.g.

path.add_rect(...) // if we don’t say move_to() here, we will use the rect’s start point path.line_to(…)`

  • rect - Rect to add as a closed contour
  • dir - Direction to orient the new contour
  • start - initial corner of Rect to add Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_addRect_2

pub fn add_oval( &mut self, oval: impl AsRef<Rect>, dir_start: Option<(SkPathDirection, usize)>, ) -> &mut Handle<SkPath>

Adds oval to Path, appending Verb::Move, four Verb::Conic, and Verb::Close. Oval is upright ellipse bounded by Rect oval with radii equal to half oval width and half oval height. Oval begins at start and continues clockwise if dir is Direction::CW, counterclockwise if dir is Direction::CCW.

  • oval - bounds of ellipse added
  • dir - Direction to wind ellipse
  • start - index of initial point of ellipse Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_addOval_2

pub fn add_open_oval( &mut self, oval: impl AsRef<Rect>, dir_start: Option<(SkPathDirection, usize)>, ) -> &mut Handle<SkPath>

Experimental, subject to change or removal.

Adds an “open” oval to Path. This follows canvas2D semantics: The oval is not a separate contour. If the path was empty, then Verb::Move is appended. Otherwise, Verb::Line is appended. Four Verb::Conic are appended. Verb::Close is not appended.

pub fn add_circle( &mut self, p: impl Into<Point>, radius: f32, dir: impl Into<Option<SkPathDirection>>, ) -> &mut Handle<SkPath>

Adds circle centered at (x, y) of size radius to Path, appending Verb::Move, four Verb::Conic, and Verb::Close. Circle begins at: (x + radius, y), continuing clockwise if dir is Direction::CW, and counterclockwise if dir is Direction::CCW.

Has no effect if radius is zero or negative.

  • p - center of circle
  • radius - distance from center to edge
  • dir - Direction to wind circle Returns: reference to Path

pub fn add_arc( &mut self, oval: impl AsRef<Rect>, start_angle: f32, sweep_angle: f32, ) -> &mut Handle<SkPath>

Appends arc to Path, as the start of new contour. Arc added is part of ellipse bounded by oval, from start_angle through sweep_angle. Both start_angle and sweep_angle are measured in degrees, where zero degrees is aligned with the positive x-axis, and positive sweeps extends arc clockwise.

If sweep_angle <= -360, or sweep_angle >= 360; and start_angle modulo 90 is nearly zero, append oval instead of arc. Otherwise, sweep_angle values are treated modulo 360, and arc may or may not draw depending on numeric rounding.

  • oval - bounds of ellipse containing arc
  • start_angle - starting angle of arc in degrees
  • sweep_angle - sweep, in degrees. Positive is clockwise; treated modulo 360 Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_addArc

pub fn add_round_rect( &mut self, rect: impl AsRef<Rect>, _: (f32, f32), dir: impl Into<Option<SkPathDirection>>, ) -> &mut Handle<SkPath>

Appends RRect to Path, creating a new closed contour. RRect has bounds equal to rect; each corner is 90 degrees of an ellipse with radii (rx, ry). If dir is Direction::CW, RRect starts at top-left of the lower-left corner and winds clockwise. If dir is Direction::CCW, RRect starts at the bottom-left of the upper-left corner and winds counterclockwise.

If either rx or ry is too large, rx and ry are scaled uniformly until the corners fit. If rx or ry is less than or equal to zero, add_round_rect() appends Rect rect to Path.

After appending, Path may be empty, or may contain: Rect, oval, or RRect.

  • rect - bounds of RRect
  • rx - x-axis radius of rounded corners on the RRect
  • ry - y-axis radius of rounded corners on the RRect
  • dir - Direction to wind RRect Returns: reference to Path

pub fn add_rrect( &mut self, rrect: impl AsRef<RRect>, dir_start: Option<(SkPathDirection, usize)>, ) -> &mut Handle<SkPath>

Adds rrect to Path, creating a new closed contour. If dir is Direction::CW, rrect winds clockwise; if dir is Direction::CCW, rrect winds counterclockwise. start determines the first point of rrect to add.

  • rrect - bounds and radii of rounded rectangle
  • dir - PathDirection to wind RRect
  • start - index of initial point of RRect Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_addRRect_2

pub fn add_poly(&mut self, pts: &[Point], close: bool) -> &mut Handle<SkPath>

Adds contour created from line array, adding pts.len() - 1 line segments. Contour added starts at pts[0], then adds a line for every additional Point in pts slice. If close is true, appends Verb::Close to Path, connecting pts[pts.len() - 1] and pts[0].

If count is zero, append Verb::Move to path. Has no effect if ps.len() is less than one.

  • pts - slice of line sharing end and start Point
  • close - true to add line connecting contour end and start Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_addPoly

pub fn add_path( &mut self, src: &Handle<SkPath>, d: impl Into<Point>, mode: impl Into<Option<SkPath_AddPathMode>>, ) -> &mut Handle<SkPath>

Appends src to Path, offset by (d.x, d.y).

If mode is AddPathMode::Append, src verb array, Point array, and conic weights are added unaltered. If mode is AddPathMode::Extend, add line before appending verbs, Point, and conic weights.

pub fn add_path_matrix( &mut self, src: &Handle<SkPath>, matrix: &Matrix, mode: impl Into<Option<SkPath_AddPathMode>>, ) -> &mut Handle<SkPath>

Appends src to Path, transformed by matrix. Transformed curves may have different verbs, Point, and conic weights.

If mode is AddPathMode::Append, src verb array, Point array, and conic weights are added unaltered. If mode is AddPathMode::Extend, add line before appending verbs, Point, and conic weights.

pub fn reverse_add_path(&mut self, src: &Handle<SkPath>) -> &mut Handle<SkPath>

Appends src to Path, from back to front. Reversed src always appends a new contour to Path.

  • src - Path verbs, Point, and conic weights to add Returns: reference to Path

example: https://fiddle.skia.org/c/@Path_reverseAddPath

pub fn with_offset(&self, d: impl Into<Point>) -> Handle<SkPath>

Offsets Point array by (d.x, d.y).

  • dx - offset added to Point array x-axis coordinates
  • dy - offset added to Point array y-axis coordinates Returns: overwritten, translated copy of Path; may be None

example: https://fiddle.skia.org/c/@Path_offset

pub fn offset(&mut self, d: impl Into<Point>) -> &mut Handle<SkPath>

Offsets Point array by (d.x, d.y). Path is replaced by offset data.

  • d.x - offset added to Point array x-axis coordinates
  • d.y - offset added to Point array y-axis coordinates

pub fn with_transform(&self, matrix: &Matrix) -> Handle<SkPath>

Transforms verb array, Point array, and weight by matrix. transform may change verbs and increase their number.

example: https://fiddle.skia.org/c/@Path_transform

pub fn with_transform_with_perspective_clip( &self, matrix: &Matrix, perspective_clip: SkApplyPerspectiveClip, ) -> Handle<SkPath>

Transforms verb array, Point array, and weight by matrix. transform may change verbs and increase their number.

  • matrix - Matrix to apply to Path
  • pc - whether to apply perspective clipping

example: https://fiddle.skia.org/c/@Path_transform

pub fn transform(&mut self, matrix: &Matrix) -> &mut Handle<SkPath>

Transforms verb array, Point array, and weight by matrix. transform may change verbs and increase their number.

pub fn transform_with_perspective_clip( &mut self, matrix: &Matrix, pc: SkApplyPerspectiveClip, ) -> &mut Handle<SkPath>

Transforms verb array, Point array, and weight by matrix. transform may change verbs and increase their number.

  • matrix - Matrix to apply to Path
  • pc - whether to apply perspective clipping

pub fn make_transform( &mut self, m: &Matrix, pc: impl Into<Option<SkApplyPerspectiveClip>>, ) -> Handle<SkPath>

pub fn make_scale(&mut self, _: (f32, f32)) -> Handle<SkPath>

pub fn last_pt(&self) -> Option<Point>

Returns last point on Path. Returns None if Point array is empty, storing (0, 0) if last_pt is not None.

Returns final Point in Point array; may be None Returns: Some if Point array contains one or more Point

example: https://fiddle.skia.org/c/@Path_getLastPt

pub fn set_last_pt(&mut self, p: impl Into<Point>) -> &mut Handle<SkPath>

Sets the last point on the path. If Point array is empty, append Verb::Move to verb array and append p to Point array.

  • p - set value of last point

pub fn segment_masks(&self) -> PathSegmentMask

Returns a mask, where each set bit corresponds to a SegmentMask constant if Path contains one or more verbs of that type. Returns zero if Path contains no lines, or curves: quads, conics, or cubics.

segment_masks() returns a cached result; it is very fast.

Returns: SegmentMask bits or zero

pub fn contains(&self, p: impl Into<Point>) -> bool

Returns true if the point (p.x, p.y) is contained by Path, taking into account FillType.

  • p.x - x-axis value of containment test
  • p.y - y-axis value of containment test Returns: true if Point is in Path

example: https://fiddle.skia.org/c/@Path_contains

pub fn dump_as_data(&self, dump_as_hex: bool) -> RCHandle<SkData>

Writes text representation of Path to Data. Set dump_as_hex true to generate exact binary representations of floating point numbers used in Point array and conic weights.

  • dump_as_hex - true if scalar values are written as hexadecimal

example: https://fiddle.skia.org/c/@Path_dump

pub fn dump(&self)

pub fn dump_hex(&self)

pub fn dump_arrays_as_data(&self, dump_as_hex: bool) -> RCHandle<SkData>

pub fn dump_arrays(&self)

pub fn serialize(&self) -> RCHandle<SkData>

Writes Path to buffer, returning the buffer written to, wrapped in Data.

serialize() writes FillType, verb array, Point array, conic weight, and additionally writes computed information like convexity and bounds.

serialize() should only be used in concert with read_from_memory(). The format used for Path in memory is not guaranteed.

Returns: Path data wrapped in Data buffer

example: https://fiddle.skia.org/c/@Path_serialize

pub fn deserialize(data: &RCHandle<SkData>) -> Option<Handle<SkPath>>

pub fn generation_id(&self) -> u32

(See Skia bug 1762.) Returns a non-zero, globally unique value. A different value is returned if verb array, Point array, or conic weight changes.

Setting FillType does not change generation identifier.

Each time the path is modified, a different generation identifier will be returned. FillType does affect generation identifier on Android framework.

Returns: non-zero, globally unique value

example: https://fiddle.skia.org/c/@Path_getGenerationID

pub fn is_valid(&self) -> bool

Returns if Path data is consistent. Corrupt Path data is detected if internal values are out of range or internal storage does not match array dimensions.

Returns: true if Path data is consistent

§

impl Handle<SkPathBuilder>

pub fn new() -> Handle<SkPathBuilder>

pub fn new_path(path: &Handle<SkPath>) -> Handle<SkPathBuilder>

pub fn fill_type(&self) -> SkPathFillType

pub fn compute_bounds(&self) -> Rect

pub fn snapshot(&self) -> Handle<SkPath>

pub fn detach(&mut self) -> Handle<SkPath>

pub fn set_fill_type( &mut self, ft: SkPathFillType, ) -> &mut Handle<SkPathBuilder>

pub fn set_is_volatile( &mut self, is_volatile: bool, ) -> &mut Handle<SkPathBuilder>

pub fn reset(&mut self) -> &mut Handle<SkPathBuilder>

pub fn move_to(&mut self, pt: impl Into<Point>) -> &mut Handle<SkPathBuilder>

pub fn line_to(&mut self, pt: impl Into<Point>) -> &mut Handle<SkPathBuilder>

pub fn quad_to( &mut self, p1: impl Into<Point>, p2: impl Into<Point>, ) -> &mut Handle<SkPathBuilder>

pub fn conic_to( &mut self, p1: impl Into<Point>, p2: impl Into<Point>, w: f32, ) -> &mut Handle<SkPathBuilder>

pub fn cubic_to( &mut self, p1: impl Into<Point>, p2: impl Into<Point>, p3: impl Into<Point>, ) -> &mut Handle<SkPathBuilder>

pub fn close(&mut self) -> &mut Handle<SkPathBuilder>

pub fn polyline_to(&mut self, points: &[Point]) -> &mut Handle<SkPathBuilder>

pub fn r_line_to(&mut self, pt: impl Into<Point>) -> &mut Handle<SkPathBuilder>

pub fn r_quad_to( &mut self, pt1: impl Into<Point>, pt2: impl Into<Point>, ) -> &mut Handle<SkPathBuilder>

pub fn r_conic_to( &mut self, pt1: impl Into<Point>, pt2: impl Into<Point>, w: f32, ) -> &mut Handle<SkPathBuilder>

pub fn r_cubic_to( &mut self, pt1: impl Into<Point>, pt2: impl Into<Point>, pt3: impl Into<Point>, ) -> &mut Handle<SkPathBuilder>

pub fn arc_to( &mut self, oval: impl AsRef<Rect>, start_angle_deg: f32, sweep_angle_deg: f32, force_move_to: bool, ) -> &mut Handle<SkPathBuilder>

pub fn arc_to_tangent( &mut self, p1: impl Into<Point>, p2: impl Into<Point>, radius: f32, ) -> &mut Handle<SkPathBuilder>

pub fn arc_to_radius( &mut self, r: impl Into<Point>, x_axis_rotate: f32, large_arc: SkPathBuilder_ArcSize, sweep: SkPathDirection, xy: impl Into<Point>, ) -> &mut Handle<SkPathBuilder>

pub fn add_arc( &mut self, oval: impl AsRef<Rect>, start_angle_deg: f32, sweep_angle_deg: f32, ) -> &mut Handle<SkPathBuilder>

pub fn add_rect( &mut self, rect: impl AsRef<Rect>, dir: impl Into<Option<SkPathDirection>>, start_index: impl Into<Option<usize>>, ) -> &mut Handle<SkPathBuilder>

pub fn add_oval( &mut self, rect: impl AsRef<Rect>, dir: impl Into<Option<SkPathDirection>>, start_index: impl Into<Option<usize>>, ) -> &mut Handle<SkPathBuilder>

pub fn add_rrect( &mut self, rect: impl AsRef<RRect>, dir: impl Into<Option<SkPathDirection>>, start_index: impl Into<Option<usize>>, ) -> &mut Handle<SkPathBuilder>

pub fn add_circle( &mut self, center: impl Into<Point>, radius: f32, dir: impl Into<Option<SkPathDirection>>, ) -> &mut Handle<SkPathBuilder>

pub fn add_polygon( &mut self, pts: &[Point], is_closed: bool, ) -> &mut Handle<SkPathBuilder>

pub fn add_path(&mut self, path: &Handle<SkPath>) -> &mut Handle<SkPathBuilder>

pub fn inc_reserve(&mut self, extra_pt_count: usize, extra_verb_count: usize)

pub fn offset(&mut self, d: impl Into<Point>) -> &mut Handle<SkPathBuilder>

pub fn toggle_inverse_fill_type(&mut self) -> &mut Handle<SkPathBuilder>

pub fn make( _points: &[Point], _verbs: &[u8], _conic_weights: &[f32], _fill_type: SkPathFillType, _is_volatile: impl Into<Option<bool>>, ) -> !

👎Deprecated since 0.35.0: Removed without replacement
§

impl Handle<SkPathMeasure>

Warning: Even if you pass in a PathMeasure with multiple contours, most of this struct’s functions, including length only return the value for the first contour on the path (which is why they aren’t const). You must exhaust PathMeasure::next_contour.

use skia_safe::{PathMeasure, Point, Path};
use std::f64::consts::PI;
let mut path = Path::circle((0., 0.), 10.0, None);
path.add_path(&Path::circle((100., 100.), 27.0, None), Point::default(), None);
let mut measure = PathMeasure::new(&path, false, None);
let mut lengths = vec![measure.length()];
while measure.next_contour() {
    lengths.push(measure.length());
}
assert_eq!(*lengths.first().unwrap() as i64, (2. * PI * 10.0) as i64);
assert_eq!(*lengths.get(1).unwrap() as i64, (2. * PI * 27.0) as i64);
eprintln!("Circle lengths: {:?}", &lengths);

pub fn new( path: &Handle<SkPath>, force_closed: bool, res_scale: impl Into<Option<f32>>, ) -> Handle<SkPathMeasure>

pub fn from_path( path: &Handle<SkPath>, force_closed: bool, res_scale: impl Into<Option<f32>>, ) -> Handle<SkPathMeasure>

👎Deprecated since 0.48.0: Use PathMeasure::new

pub fn set_path( &mut self, path: &Handle<SkPath>, force_closed: bool, ) -> &mut Handle<SkPathMeasure>

pub fn length(&mut self) -> f32

pub fn pos_tan(&mut self, distance: f32) -> Option<(Point, Point)>

pub fn matrix( &mut self, distance: f32, flags: impl Into<Option<MatrixFlags>>, ) -> Option<Matrix>

pub fn segment( &mut self, start_d: f32, stop_d: f32, start_with_move_to: bool, ) -> Option<Handle<SkPath>>

pub fn is_closed(&mut self) -> bool

pub fn next_contour(&mut self) -> bool

pub fn current_measure(&self) -> &Option<RCHandle<SkContourMeasure>>

§

impl Handle<SkPictureRecorder>

pub fn new() -> Handle<SkPictureRecorder>

pub fn begin_recording( &mut self, bounds: impl AsRef<Rect>, bbh_factory: Option<&mut Handle<SkBBHFactory>>, ) -> &Canvas

pub fn recording_canvas(&mut self) -> Option<&Canvas>

pub fn finish_recording_as_picture( &mut self, cull_rect: Option<&Rect>, ) -> Option<RCHandle<SkPicture>>

pub fn finish_recording_as_drawable(&mut self) -> Option<RCHandle<SkDrawable>>

§

impl Handle<SkRegion>

pub fn new() -> Handle<SkRegion>

pub fn from_rect(rect: impl AsRef<IRect>) -> Handle<SkRegion>

pub fn set(&mut self, src: &Handle<SkRegion>) -> bool

pub fn swap(&mut self, other: &mut Handle<SkRegion>)

pub fn is_empty(&self) -> bool

pub fn is_rect(&self) -> bool

pub fn is_complex(&self) -> bool

pub fn bounds(&self) -> &IRect

pub fn compute_region_complexity(&self) -> usize

pub fn get_boundary_path(&self, path: &mut Handle<SkPath>) -> bool

pub fn set_empty(&mut self) -> bool

pub fn set_rect(&mut self, rect: impl AsRef<IRect>) -> bool

pub fn set_rects(&mut self, rects: &[IRect]) -> bool

pub fn set_region(&mut self, region: &Handle<SkRegion>) -> bool

pub fn set_path( &mut self, path: &Handle<SkPath>, clip: &Handle<SkRegion>, ) -> bool

pub fn intersects_rect(&self, rect: impl AsRef<IRect>) -> bool

pub fn intersects_region(&self, other: &Handle<SkRegion>) -> bool

pub fn contains_point(&self, point: IPoint) -> bool

pub fn contains_rect(&self, rect: impl AsRef<IRect>) -> bool

pub fn contains_region(&self, other: &Handle<SkRegion>) -> bool

pub fn quick_contains(&self, r: impl AsRef<IRect>) -> bool

pub fn quick_reject_rect(&self, rect: impl AsRef<IRect>) -> bool

pub fn quick_reject_region(&self, rgn: &Handle<SkRegion>) -> bool

pub fn translate(&mut self, d: impl Into<IPoint>)

pub fn translated(&self, d: impl Into<IPoint>) -> Handle<SkRegion>

pub fn op_rect(&mut self, rect: impl AsRef<IRect>, op: SkRegion_Op) -> bool

pub fn op_region(&mut self, region: &Handle<SkRegion>, op: SkRegion_Op) -> bool

pub fn op_rect_region( &mut self, rect: impl AsRef<IRect>, region: &Handle<SkRegion>, op: SkRegion_Op, ) -> bool

pub fn op_region_rect( &mut self, region: &Handle<SkRegion>, rect: impl AsRef<IRect>, op: SkRegion_Op, ) -> bool

pub fn write_to_memory(&self, buf: &mut Vec<u8>)

pub fn read_from_memory(&mut self, buf: &[u8]) -> usize

§

impl Handle<SkStrokeRec>

pub fn new(init_style: SkStrokeRec_InitStyle) -> Handle<SkStrokeRec>

pub fn new_hairline() -> Handle<SkStrokeRec>

pub fn new_fill() -> Handle<SkStrokeRec>

pub fn from_paint( paint: &Handle<SkPaint>, style: impl Into<Option<SkPaint_Style>>, res_scale: impl Into<Option<f32>>, ) -> Handle<SkStrokeRec>

pub fn style(&self) -> SkStrokeRec_Style

pub fn width(&self) -> f32

pub fn miter(&self) -> f32

pub fn cap(&self) -> SkPaint_Cap

pub fn join(&self) -> SkPaint_Join

pub fn is_hairline_style(&self) -> bool

pub fn is_fill_style(&self) -> bool

pub fn set_fill_style(&mut self) -> &mut Handle<SkStrokeRec>

pub fn set_hairline_style(&mut self) -> &mut Handle<SkStrokeRec>

pub fn set_stroke_style( &mut self, width: f32, stroke_and_fill: impl Into<Option<bool>>, ) -> &mut Handle<SkStrokeRec>

pub fn set_stroke_params( &mut self, cap: SkPaint_Cap, join: SkPaint_Join, miter_limit: f32, ) -> &mut Handle<SkStrokeRec>

pub fn res_scale(&self) -> f32

pub fn set_res_scale(&mut self, rs: f32)

pub fn need_to_apply(&self) -> bool

pub fn apply_to_path( &self, dst: &mut Handle<SkPath>, src: &Handle<SkPath>, ) -> bool

pub fn apply_to_path_inplace(&self, path: &mut Handle<SkPath>) -> bool

pub fn apply_to_paint(&self, paint: &mut Handle<SkPaint>)

pub fn inflation_radius(&self) -> f32

pub fn inflation_radius_from_paint_and_style( paint: &Handle<SkPaint>, style: SkPaint_Style, ) -> f32

pub fn inflation_radius_from_params( join: SkPaint_Join, miter_limit: f32, cap: SkPaint_Cap, stroke_width: f32, ) -> f32

pub fn has_equal_effect(&self, other: &Handle<SkStrokeRec>) -> bool

§

impl Handle<SkTextBlobBuilder>

pub fn new() -> Handle<SkTextBlobBuilder>

pub fn make(&mut self) -> Option<RCHandle<SkTextBlob>>

pub fn alloc_run( &mut self, font: &Handle<SkFont>, count: usize, offset: impl Into<Point>, bounds: Option<&Rect>, ) -> &mut [u16]

pub fn alloc_run_pos_h( &mut self, font: &Handle<SkFont>, count: usize, y: f32, bounds: Option<&Rect>, ) -> (&mut [u16], &mut [f32])

pub fn alloc_run_pos( &mut self, font: &Handle<SkFont>, count: usize, bounds: Option<&Rect>, ) -> (&mut [u16], &mut [Point])

pub fn alloc_run_rsxform( &mut self, font: &Handle<SkFont>, count: usize, ) -> (&mut [u16], &mut [RSXform])

pub fn alloc_run_text( &mut self, font: &Handle<SkFont>, count: usize, offset: impl Into<Point>, text_byte_count: usize, bounds: Option<&Rect>, ) -> (&mut [u16], &mut [u8], &mut [u32])

pub fn alloc_run_text_pos_h( &mut self, font: &Handle<SkFont>, count: usize, y: f32, text_byte_count: usize, bounds: Option<&Rect>, ) -> (&mut [u16], &mut [f32], &mut [u8], &mut [u32])

pub fn alloc_run_text_pos( &mut self, font: &Handle<SkFont>, count: usize, text_byte_count: usize, bounds: Option<&Rect>, ) -> (&mut [u16], &mut [Point], &mut [u8], &mut [u32])

pub fn alloc_run_text_rsxform( &mut self, font: &Handle<SkFont>, count: usize, text_byte_count: usize, bounds: Option<&Rect>, ) -> (&mut [u16], &mut [RSXform], &mut [u8], &mut [u32])

§

impl Handle<SkVertices_Builder>

pub fn new( mode: SkVertices_VertexMode, vertex_count: usize, index_count: usize, flags: BuilderFlags, ) -> Handle<SkVertices_Builder>

pub fn positions(&mut self) -> &mut [Point]

pub fn indices(&mut self) -> Option<&mut [u16]>

pub fn tex_coords(&mut self) -> Option<&mut [Point]>

pub fn colors(&mut self) -> Option<&mut [Color]>

pub fn is_volatile(&self) -> bool

👎Deprecated since 0.29.0: returns false

pub fn bone_indices(&mut self) -> Option<&mut [[u32; 4]]>

👎Deprecated since 0.29.0: returns None

pub fn bone_weights(&mut self) -> Option<&mut [[u32; 4]]>

👎Deprecated since 0.29.0: returns None

pub fn detach(self) -> RCHandle<SkVertices>

§

impl Handle<SkYUVAInfo>

pub const MAX_PLANES: usize = 4usize

pub fn new( dimensions: impl Into<ISize>, config: SkYUVAInfo_PlaneConfig, subsampling: Subsampling, color_space: SkYUVColorSpace, origin: impl Into<Option<EncodedOrigin>>, siting_xy: impl Into<Option<(SkYUVAInfo_Siting, SkYUVAInfo_Siting)>>, ) -> Option<Handle<SkYUVAInfo>>

dimensions should specify the size of the full resolution image (after planes have been oriented to how the image is displayed as indicated by origin).

pub fn plane_config(&self) -> SkYUVAInfo_PlaneConfig

pub fn subsampling(&self) -> Subsampling

pub fn plane_subsampling_factors(&self, plane_index: usize) -> (i32, i32)

pub fn dimensions(&self) -> ISize

Dimensions of the full resolution image (after planes have been oriented to how the image is displayed as indicated by fOrigin).

pub fn width(&self) -> i32

pub fn height(&self) -> i32

pub fn yuv_color_space(&self) -> SkYUVColorSpace

pub fn siting_xy(&self) -> (SkYUVAInfo_Siting, SkYUVAInfo_Siting)

pub fn origin(&self) -> EncodedOrigin

pub fn origin_matrix(&self) -> Matrix

pub fn has_alpha(&self) -> bool

pub fn plane_dimensions(&self) -> Vec<ISize>

Returns the dimensions for each plane. Dimensions are as stored in memory, before transformation to image display space as indicated by [origin(&self)].

pub fn compute_total_bytes( &self, row_bytes: &[usize; 4], plane_sizes: Option<&mut [usize; 4]>, ) -> usize

Given a per-plane row bytes, determine size to allocate for all planes. Optionally retrieves the per-plane byte sizes in planeSizes if not None. If total size overflows will return SIZE_MAX and set all planeSizes to SIZE_MAX.

pub fn num_planes(&self) -> usize

pub fn num_channels_in_plane(&self, i: usize) -> Option<usize>

pub fn with_subsampling( &self, subsampling: Subsampling, ) -> Option<Handle<SkYUVAInfo>>

Returns a YUVAInfo that is identical to this one but with the passed Subsampling. If the passed Subsampling is not Subsampling::S444 and this info’s PlaneConfig is not compatible with chroma subsampling (because Y is in the same plane as UV) then the result will be None.

pub fn with_dimensions( &self, dimensions: impl Into<ISize>, ) -> Option<Handle<SkYUVAInfo>>

Returns a YUVAInfo that is identical to this one but with the passed dimensions. If the passed dimensions is empty then the result will be None.

§

impl Handle<SkYUVAPixmapInfo>

pub const MAX_PLANES: usize = 4usize

pub const DATA_TYPE_CNT: usize = 3usize

pub fn new( info: &Handle<SkYUVAInfo>, color_types: &[ColorType], row_bytes: Option<&[usize]>, ) -> Option<Handle<SkYUVAPixmapInfo>>

Initializes the YUVAPixmapInfo from a YUVAInfo with per-plane color types and row bytes. This will return None if the colorTypes aren’t compatible with the YUVAInfo or if a rowBytes entry is not valid for the plane dimensions and color type. Color type and row byte values beyond the number of planes in YUVAInfo are ignored. All ColorTypes must have the same DataType or this will return None.

If rowBytes is None then bpp*width is assumed for each plane.

pub fn from_data_type( info: &Handle<SkYUVAInfo>, data_type: SkYUVAPixmapInfo_DataType, row_bytes: Option<&[usize]>, ) -> Option<Handle<SkYUVAPixmapInfo>>

Like above but uses yuva_pixmap_info::default_color_type_for_data_type to determine each plane’s ColorType. If rowBytes is None then bpp*width is assumed for each plane.

pub fn yuva_info(&self) -> &Handle<SkYUVAInfo>

pub fn yuv_color_space(&self) -> SkYUVColorSpace

pub fn num_planes(&self) -> usize

The number of Pixmap planes.

pub fn data_type(&self) -> SkYUVAPixmapInfo_DataType

The per-YUV[A] channel data type.

pub fn row_bytes(&self, i: usize) -> Option<usize>

Row bytes for the ith plane. Returns None if i >= Self::num_planes() or this YUVAPixmapInfo is invalid.

pub fn row_bytes_iter( &self, ) -> impl Iterator<Item = usize> + Captures<&Handle<SkYUVAPixmapInfo>>

Row bytes for all planes.

pub fn plane_info(&self, i: usize) -> Option<&Handle<SkImageInfo>>

Image info for the ith plane, or None if i >= Self::num_planes()

pub fn plane_infos(&self) -> impl Iterator<Item = &Handle<SkImageInfo>>

An iterator of all planes’ image infos.

pub fn compute_total_bytes(&self, plane_sizes: Option<&mut [usize; 4]>) -> usize

Determine size to allocate for all planes. Optionally retrieves the per-plane sizes in planeSizes if not None. If total size overflows will return SIZE_MAX and set all plane_sizes to SIZE_MAX.

pub unsafe fn init_pixmaps_from_single_allocation( &self, memory: *mut c_void, ) -> Option<[Pixmap<'_>; 4]>

Takes an allocation that is assumed to be at least [compute_total_bytes(&self)] in size and configures the first [numPlanes(&self)] entries in pixmaps array to point into that memory. The remaining entries of pixmaps are default initialized. Returns None if this YUVAPixmapInfo not valid.

pub fn is_supported( &self, data_types: &Handle<SkYUVAPixmapInfo_SupportedDataTypes>, ) -> bool

Is this valid and does it use color types allowed by the passed SupportedDataTypes?

§

impl Handle<SkYUVAPixmaps>

pub const MAX_PLANES: usize = 4usize

pub fn recommended_rgba_color_type(dt: SkYUVAPixmapInfo_DataType) -> ColorType

pub fn allocate( info: &Handle<SkYUVAPixmapInfo>, ) -> Option<Handle<SkYUVAPixmaps>>

Allocate space for pixmaps’ pixels in the YUVAPixmaps.

pub fn from_data( info: &Handle<SkYUVAPixmapInfo>, data: impl Into<RCHandle<SkData>>, ) -> Option<Handle<SkYUVAPixmaps>>

Use storage in Data as backing store for pixmaps’ pixels. Data is retained by the YUVAPixmaps.

pub unsafe fn from_external_memory( info: &Handle<SkYUVAPixmapInfo>, memory: *mut c_void, ) -> Option<Handle<SkYUVAPixmaps>>

Use passed in memory as backing store for pixmaps’ pixels. Caller must ensure memory remains allocated while pixmaps are in use. There must be at least [YUVAPixmapInfo::computeTotalBytes(&self)] allocated starting at memory.

pub unsafe fn from_external_pixmaps( info: &Handle<SkYUVAInfo>, pixmaps: &[Pixmap<'_>; 4], ) -> Option<Handle<SkYUVAPixmaps>>

Wraps existing Pixmaps. The YUVAPixmaps will have no ownership of the Pixmaps’ pixel memory so the caller must ensure it remains valid. Will return None if the YUVAInfo isn’t compatible with the Pixmap array (number of planes, plane dimensions, sufficient color channels in planes, …).

pub fn yuva_info(&self) -> &Handle<SkYUVAInfo>

pub fn data_type(&self) -> SkYUVAPixmapInfo_DataType

pub fn pixmaps_info(&self) -> Handle<SkYUVAPixmapInfo>

pub fn num_planes(&self) -> usize

Number of pixmap planes.

pub fn planes(&self) -> &[Pixmap<'_>]

Access the Pixmap planes.

pub fn plane(&self, i: usize) -> &Pixmap<'_>

Get the ith Pixmap plane. Pixmap will be default initialized if i >= numPlanes.

§

impl Handle<SkYUVAPixmapInfo_SupportedDataTypes>

pub fn all() -> Handle<SkYUVAPixmapInfo_SupportedDataTypes>

All legal combinations of PlaneConfig and DataType are supported.

pub fn supported( &self, pc: SkYUVAInfo_PlaneConfig, dt: SkYUVAPixmapInfo_DataType, ) -> bool

Checks whether there is a supported combination of color types for planes structured as indicated by PlaneConfig with channel data types as indicated by DataType.

pub fn enable_data_type( &mut self, dt: SkYUVAPixmapInfo_DataType, num_channels: usize, )

Update to add support for pixmaps with num_channels channels where each channel is represented as DataType.

§

impl Handle<SkPDF_AttributeList>

Attributes for nodes in the PDF tree.

Each attribute must have an owner (e.g. “Layout”, “List”, “Table”, etc) and an attribute name (e.g. “BBox”, “RowSpan”, etc.) from PDF32000_2008 14.8.5, and then a value of the proper type according to the spec.

pub fn append_int( &mut self, owner: impl AsRef<str>, name: impl AsRef<str>, value: i32, ) -> &mut Handle<SkPDF_AttributeList>

pub fn append_float( &mut self, owner: impl AsRef<str>, name: impl AsRef<str>, value: f32, ) -> &mut Handle<SkPDF_AttributeList>

pub fn append_float_array( &mut self, owner: impl AsRef<str>, name: impl AsRef<str>, value: &[f32], ) -> &mut Handle<SkPDF_AttributeList>

§

impl Handle<SkColorMatrix>

pub fn new( m00: f32, m01: f32, m02: f32, m03: f32, m04: f32, m10: f32, m11: f32, m12: f32, m13: f32, m14: f32, m20: f32, m21: f32, m22: f32, m23: f32, m24: f32, m30: f32, m31: f32, m32: f32, m33: f32, m34: f32, ) -> Handle<SkColorMatrix>

pub fn rgb_to_yuv(rgb: SkYUVColorSpace) -> Handle<SkColorMatrix>

pub fn yuv_to_rgb(yuv: SkYUVColorSpace) -> Handle<SkColorMatrix>

pub fn set_identity(&mut self)

pub fn set_scale( &mut self, r_scale: f32, g_scale: f32, b_scale: f32, a_scale: impl Into<Option<f32>>, )

pub fn post_translate(&mut self, dr: f32, dg: f32, db: f32, da: f32)

pub fn set_concat( &mut self, a: &Handle<SkColorMatrix>, b: &Handle<SkColorMatrix>, )

pub fn pre_concat(&mut self, mat: &Handle<SkColorMatrix>)

pub fn post_concat(&mut self, mat: &Handle<SkColorMatrix>)

pub fn set_saturation(&mut self, sat: f32)

pub fn set_row_major(&mut self, src: &[f32; 20])

pub fn get_row_major(&self, dst: &mut [f32; 20])

§

impl Handle<SkRuntimeEffect_Uniform>

pub fn name(&self) -> &str

pub fn offset(&self) -> usize

pub fn ty(&self) -> SkRuntimeEffect_Uniform_Type

pub fn count(&self) -> i32

pub fn flags(&self) -> Flags

pub fn is_array(&self) -> bool

pub fn is_color(&self) -> bool

pub fn size_in_bytes(&self) -> usize

§

impl Handle<SkRuntimeEffect_Child>

pub fn name(&self) -> &str

pub fn ty(&self) -> SkRuntimeEffect_ChildType

pub fn index(&self) -> usize

§

impl Handle<SkBitmap>

pub fn encode( &self, format: SkEncodedImageFormat, quality: impl Into<Option<u32>>, ) -> Option<Vec<u8>>

§

impl Handle<GrBackendDrawableInfo>

pub fn new() -> Handle<GrBackendDrawableInfo>

pub fn is_valid(&self) -> bool

pub fn backend(&self) -> GrBackendApi

§

impl Handle<GrBackendFormat>

pub fn new() -> Handle<GrBackendFormat>

👎Deprecated since 0.37.0: The creation of invalid BackendFormats isn’t supported anymore

pub fn new_gl(format: u32, target: u32) -> Handle<GrBackendFormat>

pub fn backend(&self) -> GrBackendApi

pub fn channel_mask(&self) -> u32

pub fn as_gl_format(&self) -> GrGLFormat

pub fn as_gl_format_enum(&self) -> u32

pub fn to_texture_2d(&self) -> Handle<GrBackendFormat>

pub fn is_valid(&self) -> bool

👎Deprecated since 0.37.0: Invalid BackendFormats are not supported anymore
§

impl Handle<GrBackendRenderTarget>

pub fn new_gl( _: (i32, i32), sample_count: impl Into<Option<usize>>, stencil_bits: usize, info: FramebufferInfo, ) -> Handle<GrBackendRenderTarget>

👎Deprecated since 0.67.0: use gpu::backend_render_targets::make_gl()

pub fn dimensions(&self) -> ISize

pub fn width(&self) -> i32

pub fn height(&self) -> i32

pub fn sample_count(&self) -> usize

pub fn stencil_bits(&self) -> usize

pub fn backend(&self) -> GrBackendApi

pub fn is_framebuffer_only(&self) -> bool

pub fn gl_framebuffer_info(&self) -> Option<FramebufferInfo>

pub fn backend_format(&self) -> Handle<GrBackendFormat>

pub fn set_mutable_state(&mut self, state: &RCHandle<skgpu_MutableTextureState>)

pub fn is_protected(&self) -> bool

pub fn is_valid(&self) -> bool

👎Deprecated since 0.37.0: Exposed BackendRenderTargets are always valid.
§

impl Handle<GrGLExtensions>

pub fn is_initialized(&self) -> bool

pub fn has(&self, extension: impl AsRef<str>) -> bool

pub fn remove(&mut self, extension: impl AsRef<str>) -> bool

pub fn add(&mut self, extension: impl AsRef<str>)

pub fn reset(&mut self)

§

impl Handle<GrYUVABackendTextureInfo>

pub const MAX_PLANES: usize = 4usize

pub fn new( info: &Handle<SkYUVAInfo>, formats: &[Handle<GrBackendFormat>], mip_mapped: skgpu_Mipmapped, origin: GrSurfaceOrigin, ) -> Option<Handle<GrYUVABackendTextureInfo>>

Initializes a YUVABackendTextureInfo to describe a set of textures that can store the planes indicated by the YUVAInfo. The texture dimensions are taken from the YUVAInfo’s plane dimensions. All the described textures share a common origin. The planar image this describes will be mip mapped if all the textures are individually mip mapped as indicated by Mipmapped. This will return None if the passed formats’ channels don’t agree with YUVAInfo.

pub fn yuva_info(&self) -> &Handle<SkYUVAInfo>

pub fn yuv_color_space(&self) -> SkYUVColorSpace

pub fn mipmapped(&self) -> skgpu_Mipmapped

pub fn texture_origin(&self) -> GrSurfaceOrigin

pub fn num_planes(&self) -> usize

The number of crate::Pixmap planes.

pub fn plane_format(&self, i: usize) -> Option<&Handle<GrBackendFormat>>

Format of the ith plane, or None if i >= Self::num_planes()

pub fn plane_formats(&self) -> &[Handle<GrBackendFormat>]

All plane formats.

§

impl Handle<GrYUVABackendTextures>

pub fn new( info: &Handle<SkYUVAInfo>, textures: &[RefHandle<GrBackendTexture>], texture_origin: GrSurfaceOrigin, ) -> Option<Handle<GrYUVABackendTextures>>

pub fn textures(&self) -> Vec<RefHandle<GrBackendTexture>>

pub fn texture(&self, i: usize) -> Option<RefHandle<GrBackendTexture>>

pub fn yuva_info(&self) -> &Handle<SkYUVAInfo>

pub fn num_planes(&self) -> usize

pub fn texture_origin(&self) -> GrSurfaceOrigin

§

impl Handle<SkDynamicMemoryWStream>

pub fn new() -> Handle<SkDynamicMemoryWStream>

pub fn from_bytes(bytes: &[u8]) -> Handle<SkDynamicMemoryWStream>

pub fn write(&mut self, bytes: &[u8]) -> bool

pub fn detach_as_data(&mut self) -> RCHandle<SkData>

pub fn detach_as_stream(&mut self) -> Stream<SkStreamAsset>

§

impl Handle<SkString>

pub fn from_str(str: impl AsRef<str>) -> Handle<SkString>

pub fn as_str(&self) -> &str

§

impl Handle<SkStrings>

pub fn new(strings: Vec<Handle<SkString>>) -> Handle<SkStrings>

Constructs a native Strings array from a slice of SkStrings by moving them.

pub fn is_empty(&self) -> bool

pub fn len(&self) -> usize

pub fn as_slice(&self) -> &[Handle<SkString>]

§

impl Handle<skia_textlayout_FontArguments>

pub fn clone_typeface( &self, typeface: impl Into<RCHandle<SkTypeface>>, ) -> Option<RCHandle<SkTypeface>>

§

impl Handle<skia_textlayout_Paragraph_VisitorInfo>

pub fn font(&self) -> &Handle<SkFont>

pub fn origin(&self) -> Point

pub fn advance_x(&self) -> f32

pub fn count(&self) -> usize

pub fn glyphs(&self) -> &[u16]

pub fn positions(&self) -> &[Point]

pub fn utf8_starts(&self) -> &[u32]

pub fn flags(&self) -> VisitorFlags

§

impl Handle<skia_textlayout_Paragraph_ExtendedVisitorInfo>

pub fn font(&self) -> &Handle<SkFont>

pub fn origin(&self) -> Point

pub fn advance(&self) -> Size

pub fn count(&self) -> usize

pub fn glyphs(&self) -> &[u16]

pub fn positions(&self) -> &[Point]

pub fn bounds(&self) -> &[Rect]

pub fn utf8_starts(&self) -> &[u32]

pub fn flags(&self) -> VisitorFlags

§

impl Handle<skia_textlayout_ParagraphCache>

pub fn new() -> Handle<skia_textlayout_ParagraphCache>

pub fn abandon(&mut self)

pub fn reset(&mut self)

pub fn print_statistics(&mut self)

pub fn turn_on(&mut self, value: bool)

pub fn count(&mut self) -> i32

§

impl Handle<skia_textlayout_StrutStyle>

pub fn new() -> Handle<skia_textlayout_StrutStyle>

pub fn font_families(&self) -> FontFamilies<'_>

pub fn set_font_families( &mut self, families: &[impl AsRef<str>], ) -> &mut Handle<skia_textlayout_StrutStyle>

pub fn font_style(&self) -> FontStyle

pub fn set_font_style( &mut self, font_style: FontStyle, ) -> &mut Handle<skia_textlayout_StrutStyle>

pub fn font_size(&self) -> f32

pub fn set_font_size( &mut self, font_size: f32, ) -> &mut Handle<skia_textlayout_StrutStyle>

pub fn set_height( &mut self, height: f32, ) -> &mut Handle<skia_textlayout_StrutStyle>

pub fn height(&self) -> f32

pub fn set_leading( &mut self, leading: f32, ) -> &mut Handle<skia_textlayout_StrutStyle>

pub fn leading(&self) -> f32

pub fn strut_enabled(&self) -> bool

pub fn set_strut_enabled( &mut self, enabled: bool, ) -> &mut Handle<skia_textlayout_StrutStyle>

pub fn force_strut_height(&self) -> bool

pub fn set_force_strut_height( &mut self, force_height: bool, ) -> &mut Handle<skia_textlayout_StrutStyle>

pub fn height_override(&self) -> bool

pub fn set_height_override( &mut self, height_override: bool, ) -> &mut Handle<skia_textlayout_StrutStyle>

pub fn half_leading(&self) -> bool

pub fn set_half_leading( &mut self, half_leading: bool, ) -> &mut Handle<skia_textlayout_StrutStyle>

§

impl Handle<skia_textlayout_FontFeature>

pub fn name(&self) -> &str

pub fn value(&self) -> i32

§

impl Handle<skia_textlayout_TextStyle>

pub fn new() -> Handle<skia_textlayout_TextStyle>

pub fn to_placeholder(&self) -> Handle<skia_textlayout_TextStyle>

👎Deprecated since 0.51.0: Use clone_for_placeholder

pub fn clone_for_placeholder(&self) -> Handle<skia_textlayout_TextStyle>

pub fn equals(&self, other: &Handle<skia_textlayout_TextStyle>) -> bool

pub fn equals_by_fonts(&self, that: &Handle<skia_textlayout_TextStyle>) -> bool

pub fn match_one_attribute( &self, style_type: skia_textlayout_StyleType, other: &Handle<skia_textlayout_TextStyle>, ) -> bool

pub fn color(&self) -> Color

pub fn set_color( &mut self, color: impl Into<Color>, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn has_foreground(&self) -> bool

pub fn foreground(&self) -> Handle<SkPaint>

pub fn set_foreground_paint( &mut self, paint: &Handle<SkPaint>, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn set_foreground_color( &mut self, paint: &Handle<SkPaint>, ) -> &mut Handle<skia_textlayout_TextStyle>

👎Deprecated since 0.64.0: use set_foreground_paint()

pub fn clear_foreground_color( &mut self, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn has_background(&self) -> bool

pub fn background(&self) -> Handle<SkPaint>

pub fn set_background_paint( &mut self, paint: &Handle<SkPaint>, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn set_background_color( &mut self, paint: &Handle<SkPaint>, ) -> &mut Handle<skia_textlayout_TextStyle>

👎Deprecated since 0.64.0: use set_background_paint()

pub fn clear_background_color( &mut self, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn decoration(&self) -> &Decoration

pub fn decoration_type(&self) -> TextDecoration

pub fn decoration_mode(&self) -> skia_textlayout_TextDecorationMode

pub fn decoration_color(&self) -> Color

pub fn decoration_style(&self) -> skia_textlayout_TextDecorationStyle

pub fn decoration_thickness_multiplier(&self) -> f32

pub fn set_decoration(&mut self, decoration: &Decoration)

pub fn set_decoration_type(&mut self, decoration: TextDecoration)

pub fn set_decoration_mode(&mut self, mode: skia_textlayout_TextDecorationMode)

pub fn set_decoration_style( &mut self, style: skia_textlayout_TextDecorationStyle, )

pub fn set_decoration_color(&mut self, color: impl Into<Color>)

pub fn set_decoration_thickness_multiplier(&mut self, multiplier: f32)

pub fn decoration_mut(&mut self) -> &mut Decoration

👎Deprecated since 0.63.1: use set_decoration()

pub fn font_style(&self) -> FontStyle

pub fn set_font_style( &mut self, font_style: FontStyle, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn shadows(&self) -> &[TextShadow]

pub fn add_shadow( &mut self, shadow: TextShadow, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn reset_shadows(&mut self) -> &mut Handle<skia_textlayout_TextStyle>

pub fn font_features(&self) -> &[Handle<skia_textlayout_FontFeature>]

pub fn add_font_feature(&mut self, font_feature: impl AsRef<str>, value: i32)

pub fn reset_font_features(&mut self)

pub fn font_arguments(&self) -> Option<&Handle<skia_textlayout_FontArguments>>

pub fn set_font_arguments<'fa>( &mut self, arguments: impl Into<Option<&'fa FontArguments<'fa, 'fa>>>, )

The contents of the crate::FontArguments will be copied into the TextStyle.

pub fn font_size(&self) -> f32

pub fn set_font_size( &mut self, size: f32, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn font_families(&self) -> FontFamilies<'_>

pub fn set_font_families( &mut self, families: &[impl AsRef<str>], ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn baseline_shift(&self) -> f32

pub fn set_baseline_shift( &mut self, baseline_shift: f32, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn set_height( &mut self, height: f32, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn height(&self) -> f32

pub fn set_height_override( &mut self, height_override: bool, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn height_override(&self) -> bool

pub fn set_half_leading( &mut self, half_leading: bool, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn half_leading(&self) -> bool

pub fn set_letter_spacing( &mut self, letter_spacing: f32, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn letter_spacing(&self) -> f32

pub fn set_word_spacing( &mut self, word_spacing: f32, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn word_spacing(&self) -> f32

pub fn typeface(&self) -> Option<RCHandle<SkTypeface>>

pub fn set_typeface( &mut self, typeface: impl Into<Option<RCHandle<SkTypeface>>>, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn locale(&self) -> &str

pub fn set_locale( &mut self, locale: impl AsRef<str>, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn text_baseline(&self) -> skia_textlayout_TextBaseline

pub fn set_text_baseline( &mut self, baseline: skia_textlayout_TextBaseline, ) -> &mut Handle<skia_textlayout_TextStyle>

pub fn font_metrics(&self) -> FontMetrics

pub fn is_placeholder(&self) -> bool

pub fn set_placeholder(&mut self) -> &mut Handle<skia_textlayout_TextStyle>

§

impl Handle<SkOpBuilder>

pub fn add( &mut self, path: &Handle<SkPath>, operator: SkPathOp, ) -> &mut Handle<SkOpBuilder>

pub fn resolve(&mut self) -> Option<Handle<SkPath>>

§

impl Handle<SkPath>

pub fn op( &self, path: &Handle<SkPath>, path_op: SkPathOp, ) -> Option<Handle<SkPath>>

pub fn simplify(&self) -> Option<Handle<SkPath>>

pub fn tight_bounds(&self) -> Option<Rect>

pub fn as_winding(&self) -> Option<Handle<SkPath>>

§

impl Handle<SkCustomTypefaceBuilder>

pub fn new() -> Handle<SkCustomTypefaceBuilder>

pub fn set_glyph<'a>( &mut self, glyph_id: u16, advance: f32, typeface_glyph: impl Into<TypefaceGlyph<'a>>, ) -> &mut Handle<SkCustomTypefaceBuilder>

pub fn set_metrics( &mut self, font_metrics: &FontMetrics, scale: impl Into<Option<f32>>, ) -> &mut Handle<SkCustomTypefaceBuilder>

pub fn set_font_style( &mut self, font_style: FontStyle, ) -> &mut Handle<SkCustomTypefaceBuilder>

pub fn detach(&mut self) -> Option<RCHandle<SkTypeface>>

pub const FACTORY_ID: FourByteTag = _

pub fn from_data( data: impl Into<RCHandle<SkData>>, font_arguments: &FontArguments<'_, '_>, ) -> Option<RCHandle<SkTypeface>>

§

impl Handle<SkPath>

pub fn from_svg(svg: impl AsRef<str>) -> Option<Handle<SkPath>>

pub fn to_svg(&self) -> String

pub fn to_svg_with_encoding(&self, encoding: SkParsePath_PathEncoding) -> String

§

impl Handle<SkPath>

pub fn from_str( text: impl AsRef<str>, p: impl Into<Point>, font: &Handle<SkFont>, ) -> Handle<SkPath>

Trait Implementations§

§

impl<N> AsRef<Handle<N>> for Handle<N>
where N: NativeDrop,

§

fn as_ref(&self) -> &Handle<N>

Converts this type into a shared reference of the (usually inferred) input type.
§

impl AsRef<str> for Handle<SkString>

§

fn as_ref(&self) -> &str

Converts this type into a shared reference of the (usually inferred) input type.
§

impl<N> Clone for Handle<N>
where N: NativeDrop + NativeClone,

§

fn clone(&self) -> Handle<N>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Clone for Handle<SkPathBuilder>

§

fn clone(&self) -> Handle<SkPathBuilder>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
§

impl Combine<Handle<SkRegion>, Handle<SkRegion>> for Handle<SkRegion>

§

fn combine( a: &Handle<SkRegion>, op: SkRegion_Op, b: &Handle<SkRegion>, ) -> Handle<SkRegion>

§

fn difference(a: &A, b: &B) -> Self

§

fn intersect(a: &A, b: &B) -> Self

§

fn xor(a: &A, b: &B) -> Self

§

fn union(a: &A, b: &B) -> Self

§

fn reverse_difference(a: &A, b: &B) -> Self

§

fn replace(a: &A, b: &B) -> Self

§

impl Combine<Handle<SkRegion>, IRect> for Handle<SkRegion>

§

fn combine( region: &Handle<SkRegion>, op: SkRegion_Op, rect: &IRect, ) -> Handle<SkRegion>

§

fn difference(a: &A, b: &B) -> Self

§

fn intersect(a: &A, b: &B) -> Self

§

fn xor(a: &A, b: &B) -> Self

§

fn union(a: &A, b: &B) -> Self

§

fn reverse_difference(a: &A, b: &B) -> Self

§

fn replace(a: &A, b: &B) -> Self

§

impl Combine<IRect, Handle<SkRegion>> for Handle<SkRegion>

§

fn combine( rect: &IRect, op: SkRegion_Op, region: &Handle<SkRegion>, ) -> Handle<SkRegion>

§

fn difference(a: &A, b: &B) -> Self

§

fn intersect(a: &A, b: &B) -> Self

§

fn xor(a: &A, b: &B) -> Self

§

fn union(a: &A, b: &B) -> Self

§

fn reverse_difference(a: &A, b: &B) -> Self

§

fn replace(a: &A, b: &B) -> Self

§

impl Contains<&Handle<SkRegion>> for Handle<SkRegion>

§

fn contains(&self, other: &Handle<SkRegion>) -> bool

§

impl Contains<&IRect> for Handle<SkRegion>

§

fn contains(&self, rect: &IRect) -> bool

§

impl Contains<IPoint> for Handle<SkRegion>

§

fn contains(&self, point: IPoint) -> bool

§

impl Debug for Handle<GrBackendDrawableInfo>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<GrBackendFormat>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<GrBackendRenderTarget>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<GrGLExtensions>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<GrYUVABackendTextureInfo>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<GrYUVABackendTextures>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkBitmap>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkCodecs_Decoder>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkColorInfo>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkColorMatrix>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkContourMeasureIter>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkCustomTypefaceBuilder>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkDynamicMemoryWStream>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkFont>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkImageInfo>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkOpBuilder>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkPDF_AttributeList>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkPaint>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkPath>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkPathBuilder>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkPathMeasure>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkPictureRecorder>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkRegion>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkRuntimeEffect_Child>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkRuntimeEffect_Uniform>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkString>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkStrings>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkStrokeRec>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkTextBlobBuilder>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkVertices_Builder>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkYUVAInfo>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkYUVAPixmapInfo>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkYUVAPixmapInfo_SupportedDataTypes>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<SkYUVAPixmaps>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<skia_textlayout_FontArguments>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<skia_textlayout_FontFeature>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<skia_textlayout_ParagraphCache>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<skia_textlayout_Paragraph_ExtendedVisitorInfo>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<skia_textlayout_Paragraph_VisitorInfo>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<skia_textlayout_StrutStyle>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Debug for Handle<skia_textlayout_TextStyle>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl Default for Handle<SkBitmap>

§

fn default() -> Handle<SkBitmap>

§

impl Default for Handle<SkColorInfo>

§

fn default() -> Handle<SkColorInfo>

Returns the “default value” for a type. Read more
§

impl Default for Handle<SkColorMatrix>

§

fn default() -> Handle<SkColorMatrix>

Returns the “default value” for a type. Read more
§

impl Default for Handle<SkFont>

§

fn default() -> Handle<SkFont>

Returns the “default value” for a type. Read more
§

impl Default for Handle<SkImageInfo>

§

fn default() -> Handle<SkImageInfo>

Returns the “default value” for a type. Read more
§

impl Default for Handle<SkOpBuilder>

§

fn default() -> Handle<SkOpBuilder>

Returns the “default value” for a type. Read more
§

impl Default for Handle<SkPDF_AttributeList>

§

fn default() -> Handle<SkPDF_AttributeList>

Returns the “default value” for a type. Read more
§

impl Default for Handle<SkPDF_Metadata>

§

fn default() -> Handle<SkPDF_Metadata>

Returns the “default value” for a type. Read more
§

impl Default for Handle<SkPaint>

§

fn default() -> Handle<SkPaint>

Returns the “default value” for a type. Read more
§

impl Default for Handle<SkPath>

§

fn default() -> Handle<SkPath>

§

impl Default for Handle<SkPathMeasure>

§

fn default() -> Handle<SkPathMeasure>

Returns the “default value” for a type. Read more
§

impl Default for Handle<SkString>

§

fn default() -> Handle<SkString>

Returns the “default value” for a type. Read more
§

impl Default for Handle<SkYUVAInfo>

§

fn default() -> Handle<SkYUVAInfo>

Returns the “default value” for a type. Read more
§

impl Default for Handle<SkYUVAPixmapInfo_SupportedDataTypes>

§

fn default() -> Handle<SkYUVAPixmapInfo_SupportedDataTypes>

Defaults to nothing supported.

§

impl Default for Handle<skia_textlayout_StrutStyle>

§

fn default() -> Handle<skia_textlayout_StrutStyle>

Returns the “default value” for a type. Read more
§

impl Default for Handle<skia_textlayout_TextStyle>

§

fn default() -> Handle<skia_textlayout_TextStyle>

Returns the “default value” for a type. Read more
§

impl Display for Handle<SkString>

§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
§

impl<N> Drop for Handle<N>
where N: NativeDrop,

§

fn drop(&mut self)

Executes the destructor for this type. Read more
§

impl<'a> From<&'a Handle<SkPath>> for TypefaceGlyph<'a>

§

fn from(path: &'a Handle<SkPath>) -> TypefaceGlyph<'a>

Converts to this type from the input type.
§

impl From<FontArguments<'_, '_>> for Handle<skia_textlayout_FontArguments>

§

fn from(fa: FontArguments<'_, '_>) -> Handle<skia_textlayout_FontArguments>

Converts to this type from the input type.
§

impl<N> Hash for Handle<N>
where N: NativeDrop + NativeHash,

§

fn hash<H>(&self, state: &mut H)
where H: Hasher,

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
§

impl Index<usize> for Handle<SkStrings>

§

type Output = Handle<SkString>

The returned type after indexing.
§

fn index(&self, index: usize) -> &<Handle<SkStrings> as Index<usize>>::Output

Performs the indexing (container[index]) operation. Read more
§

impl Intersects<Handle<SkRegion>> for Handle<SkRegion>

§

fn intersects(&self, other: &Handle<SkRegion>) -> bool

§

impl Intersects<IRect> for Handle<SkRegion>

§

fn intersects(&self, rect: &IRect) -> bool

§

impl Iterator for Handle<SkContourMeasureIter>

§

type Item = RCHandle<SkContourMeasure>

The type of the elements being iterated over.
§

fn next(&mut self) -> Option<<Handle<SkContourMeasureIter> as Iterator>::Item>

Advances the iterator and returns the next value. Read more
source§

fn next_chunk<const N: usize>( &mut self, ) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
1.0.0 · source§

fn count(self) -> usize
where Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where Self: Sized,

Creates an iterator starting at the same point, but stepping by the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where Self: Sized, U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where Self: Sized, U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse(self, separator: Self::Item) -> Intersperse<Self>
where Self: Sized, Self::Item: Clone,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places a copy of separator between adjacent items of the original iterator. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where Self: Sized, G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where Self: Sized, F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where Self: Sized, F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where Self: Sized, P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where Self: Sized, F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where Self: Sized,

Creates an iterator which gives the current iteration count as well as the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where Self: Sized, P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where Self: Sized, P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where Self: Sized, P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where Self: Sized,

Creates an iterator that yields the first n elements, or fewer if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where Self: Sized, F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where Self: Sized, U: IntoIterator, F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where Self: Sized, F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over self and returns an iterator over the outputs of f. Like slice::windows(), the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where Self: Sized, F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where B: FromIterator<Self::Item>, Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where E: Extend<Self::Item>, Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where Self: Sized, B: Default + Extend<Self::Item>, F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where Self: Sized, P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where Self: Sized, F: FnMut(B, Self::Item) -> R, R: Try<Output = B>,

An iterator method that applies a function as long as it returns successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where Self: Sized, F: FnMut(Self::Item) -> R, R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where Self: Sized, F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where Self: Sized, F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing operation. Read more
source§

fn try_reduce<R>( &mut self, f: impl FnMut(Self::Item, Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where Self: Sized, R: Try<Output = Self::Item>, <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where Self: Sized, F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where Self: Sized, F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where Self: Sized, P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where Self: Sized, F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns the first non-none result. Read more
source§

fn try_find<R>( &mut self, f: impl FnMut(&Self::Item) -> R, ) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where Self: Sized, R: Try<Output = bool>, <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where Self: Sized, P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where B: Ord, Self: Sized, F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where B: Ord, Self: Sized, F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where FromA: Default + Extend<A>, FromB: Default + Extend<B>, Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where T: 'a + Copy, Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where T: 'a + Clone, Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where Self: Sized, S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where Self: Sized, P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where Self: Sized, I: IntoIterator, F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Lexicographically compares the PartialOrd elements of this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where Self: Sized, I: IntoIterator, F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are equal to those of another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where Self: Sized, I: IntoIterator, F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialEq<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are not equal to those of another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are lexicographically less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are lexicographically less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are lexicographically greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where I: IntoIterator, Self::Item: PartialOrd<<I as IntoIterator>::Item>, Self: Sized,

Determines if the elements of this Iterator are lexicographically greater than or equal to those of another. Read more
1.82.0 · source§

fn is_sorted_by<F>(self, compare: F) -> bool
where Self: Sized, F: FnMut(&Self::Item, &Self::Item) -> bool,

Checks if the elements of this iterator are sorted using the given comparator function. Read more
1.82.0 · source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where Self: Sized, F: FnMut(Self::Item) -> K, K: PartialOrd,

Checks if the elements of this iterator are sorted using the given key extraction function. Read more
§

impl<N> PartialEq for Handle<N>
where N: NativeDrop + NativePartialEq,

§

fn eq(&self, rhs: &Handle<N>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl PartialEq for Handle<SkColorMatrix>

§

fn eq(&self, other: &Handle<SkColorMatrix>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl PartialEq for Handle<skia_textlayout_FontFeature>

§

fn eq(&self, other: &Handle<skia_textlayout_FontFeature>) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
§

impl QuickReject<Handle<SkPath>> for Canvas

§

fn quick_reject(&self, path: &Handle<SkPath>) -> bool

Returns true if path, transformed by Matrix, can be quickly determined to be outside of clip. May return false even though path is outside of clip.

Use to check if an area to be drawn is clipped out, to skip subsequent draw calls.

  • path Path to compare with clip Returns true if path, transformed by Matrix, does not intersect clip

example: https://fiddle.skia.org/c/@Canvas_quickReject_2

§

impl QuickReject<Handle<SkRegion>> for Handle<SkRegion>

§

fn quick_reject(&self, other: &Handle<SkRegion>) -> bool

§

impl QuickReject<IRect> for Handle<SkRegion>

§

fn quick_reject(&self, rect: &IRect) -> bool

§

impl<N> RefWrapper<N> for Handle<N>
where N: NativeDrop,

§

fn wrap_ref(native: &N) -> &Handle<N>

§

fn wrap_mut(native: &mut N) -> &mut Handle<N>

§

fn inner(&self) -> &N

§

fn inner_mut(&mut self) -> &mut N

§

impl<N> ValueWrapper<N> for Handle<N>
where N: NativeDrop,

§

fn wrap(native: N) -> Handle<N>
where N: NativeDrop,

§

fn unwrap(self) -> N

§

fn inner(&self) -> &N

§

fn inner_mut(&mut self) -> &mut N

§

impl Send for Handle<GrBackendDrawableInfo>

§

impl Send for Handle<GrBackendFormat>

§

impl Send for Handle<GrBackendRenderTarget>

§

impl Send for Handle<GrGLExtensions>

§

impl Send for Handle<GrYUVABackendTextureInfo>

§

impl Send for Handle<GrYUVABackendTextures>

§

impl Send for Handle<SkCodecs_Decoder>

§

impl Send for Handle<SkColorInfo>

§

impl Send for Handle<SkColorMatrix>

§

impl Send for Handle<SkContourMeasureIter>

§

impl Send for Handle<SkCustomTypefaceBuilder>

§

impl Send for Handle<SkFont>

§

impl Send for Handle<SkImageInfo>

§

impl Send for Handle<SkOpBuilder>

§

impl Send for Handle<SkPDF_AttributeList>

§

impl Send for Handle<SkPaint>

§

impl Send for Handle<SkPath>

§

impl Send for Handle<SkPathBuilder>

§

impl Send for Handle<SkRegion>

§

impl Send for Handle<SkRuntimeEffect_Child>

§

impl Send for Handle<SkRuntimeEffect_Uniform>

§

impl Send for Handle<SkString>

§

impl Send for Handle<SkStrings>

§

impl Send for Handle<SkStrokeRec>

§

impl Send for Handle<SkTextBlobBuilder>

§

impl Send for Handle<SkVertices_Builder>

§

impl Send for Handle<SkYUVAInfo>

§

impl Send for Handle<SkYUVAPixmapInfo>

§

impl Send for Handle<SkYUVAPixmapInfo_SupportedDataTypes>

§

impl Send for Handle<SkYUVAPixmaps>

§

impl Send for Handle<skia_textlayout_FontArguments>

§

impl Send for Handle<skia_textlayout_FontFeature>

§

impl Send for Handle<skia_textlayout_StrutStyle>

§

impl Send for Handle<skia_textlayout_TextStyle>

§

impl Sync for Handle<GrBackendDrawableInfo>

§

impl Sync for Handle<GrBackendFormat>

§

impl Sync for Handle<GrBackendRenderTarget>

§

impl Sync for Handle<GrGLExtensions>

§

impl Sync for Handle<GrYUVABackendTextureInfo>

§

impl Sync for Handle<GrYUVABackendTextures>

§

impl Sync for Handle<SkCodecs_Decoder>

§

impl Sync for Handle<SkColorInfo>

§

impl Sync for Handle<SkColorMatrix>

§

impl Sync for Handle<SkContourMeasureIter>

§

impl Sync for Handle<SkCustomTypefaceBuilder>

§

impl Sync for Handle<SkFont>

§

impl Sync for Handle<SkImageInfo>

§

impl Sync for Handle<SkOpBuilder>

§

impl Sync for Handle<SkPDF_AttributeList>

§

impl Sync for Handle<SkPaint>

§

impl Sync for Handle<SkPath>

§

impl Sync for Handle<SkPathBuilder>

§

impl Sync for Handle<SkRegion>

§

impl Sync for Handle<SkRuntimeEffect_Child>

§

impl Sync for Handle<SkRuntimeEffect_Uniform>

§

impl Sync for Handle<SkString>

§

impl Sync for Handle<SkStrings>

§

impl Sync for Handle<SkStrokeRec>

§

impl Sync for Handle<SkTextBlobBuilder>

§

impl Sync for Handle<SkVertices_Builder>

§

impl Sync for Handle<SkYUVAInfo>

§

impl Sync for Handle<SkYUVAPixmapInfo>

§

impl Sync for Handle<SkYUVAPixmapInfo_SupportedDataTypes>

§

impl Sync for Handle<SkYUVAPixmaps>

§

impl Sync for Handle<skia_textlayout_FontArguments>

§

impl Sync for Handle<skia_textlayout_FontFeature>

§

impl Sync for Handle<skia_textlayout_StrutStyle>

§

impl Sync for Handle<skia_textlayout_TextStyle>

Auto Trait Implementations§

§

impl<N> Freeze for Handle<N>
where N: Freeze,

§

impl<N> RefUnwindSafe for Handle<N>
where N: RefUnwindSafe,

§

impl<N> !Send for Handle<N>

§

impl<N> !Sync for Handle<N>

§

impl<N> Unpin for Handle<N>
where N: Unpin,

§

impl<N> UnwindSafe for Handle<N>
where N: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> AnyEq for T
where T: Any + PartialEq,

§

fn equals(&self, other: &(dyn Any + 'static)) -> bool

§

fn as_any(&self) -> &(dyn Any + 'static)

source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> CloneToUninit for T
where T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
§

impl<T> Downcast for T
where T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<I> IntoIterator for I
where I: Iterator,

source§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
source§

type IntoIter = I

Which kind of iterator are we turning this into?
source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T> Same for T

source§

type Output = T

Should always be Self
source§

impl<T> ToOwned for T
where T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T> ToStringLocalized for T
where T: ToString,

source§

fn to_string_local(&self, _cx: &impl DataContext) -> String

source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more