pub trait ItemRenderer {
Show 27 methods
// Required methods
fn draw_rectangle(
&mut self,
rect: Pin<&Rectangle>,
_self_rc: &ItemRc,
_size: LogicalSize,
);
fn draw_border_rectangle(
&mut self,
rect: Pin<&dyn RenderBorderRectangle>,
_self_rc: &ItemRc,
_size: LogicalSize,
_cache: &CachedRenderingData,
);
fn draw_image(
&mut self,
image: Pin<&dyn RenderImage>,
_self_rc: &ItemRc,
_size: LogicalSize,
_cache: &CachedRenderingData,
);
fn draw_text(
&mut self,
text: Pin<&dyn RenderText>,
_self_rc: &ItemRc,
_size: LogicalSize,
_cache: &CachedRenderingData,
);
fn draw_text_input(
&mut self,
text_input: Pin<&TextInput>,
_self_rc: &ItemRc,
_size: LogicalSize,
);
fn draw_path(
&mut self,
path: Pin<&Path>,
_self_rc: &ItemRc,
_size: LogicalSize,
);
fn draw_box_shadow(
&mut self,
box_shadow: Pin<&BoxShadow>,
_self_rc: &ItemRc,
_size: LogicalSize,
);
fn combine_clip(
&mut self,
rect: LogicalRect,
radius: LogicalBorderRadius,
border_width: LogicalLength,
) -> bool;
fn get_current_clip(&self) -> LogicalRect;
fn translate(&mut self, distance: LogicalVector);
fn rotate(&mut self, angle_in_degrees: f32);
fn apply_opacity(&mut self, opacity: f32);
fn save_state(&mut self);
fn restore_state(&mut self);
fn scale_factor(&self) -> f32;
fn draw_cached_pixmap(
&mut self,
item_cache: &ItemRc,
update_fn: &dyn Fn(&mut dyn FnMut(u32, u32, &[u8])),
);
fn draw_string(&mut self, string: &str, color: Color);
fn draw_image_direct(&mut self, image: Image);
fn window(&self) -> &WindowInner;
fn as_any(&mut self) -> Option<&mut dyn Any>;
// Provided methods
fn visit_opacity(
&mut self,
opacity_item: Pin<&Opacity>,
_self_rc: &ItemRc,
_size: LogicalSize,
) -> RenderingResult { ... }
fn visit_layer(
&mut self,
_layer_item: Pin<&Layer>,
_self_rc: &ItemRc,
_size: LogicalSize,
) -> RenderingResult { ... }
fn visit_clip(
&mut self,
clip_item: Pin<&Clip>,
item_rc: &ItemRc,
_size: LogicalSize,
) -> RenderingResult { ... }
fn translation(&self) -> LogicalVector { ... }
fn draw_rect(&mut self, _size: LogicalSize, _brush: Brush) { ... }
fn filter_item(&mut self, item: &ItemRc) -> (bool, LogicalRect) { ... }
fn metrics(&self) -> RenderingMetrics { ... }
}
Expand description
Trait used to render each items.
The item needs to be rendered relative to its (x,y) position. For example,
draw_rectangle should draw a rectangle in (pos.x + rect.x, pos.y + rect.y)
Required Methods§
fn draw_rectangle( &mut self, rect: Pin<&Rectangle>, _self_rc: &ItemRc, _size: LogicalSize, )
fn draw_border_rectangle( &mut self, rect: Pin<&dyn RenderBorderRectangle>, _self_rc: &ItemRc, _size: LogicalSize, _cache: &CachedRenderingData, )
fn draw_image( &mut self, image: Pin<&dyn RenderImage>, _self_rc: &ItemRc, _size: LogicalSize, _cache: &CachedRenderingData, )
fn draw_text( &mut self, text: Pin<&dyn RenderText>, _self_rc: &ItemRc, _size: LogicalSize, _cache: &CachedRenderingData, )
fn draw_text_input( &mut self, text_input: Pin<&TextInput>, _self_rc: &ItemRc, _size: LogicalSize, )
fn draw_path(&mut self, path: Pin<&Path>, _self_rc: &ItemRc, _size: LogicalSize)
fn draw_box_shadow( &mut self, box_shadow: Pin<&BoxShadow>, _self_rc: &ItemRc, _size: LogicalSize, )
Sourcefn combine_clip(
&mut self,
rect: LogicalRect,
radius: LogicalBorderRadius,
border_width: LogicalLength,
) -> bool
fn combine_clip( &mut self, rect: LogicalRect, radius: LogicalBorderRadius, border_width: LogicalLength, ) -> bool
Clip the further call until restore_state. radius/border_width can be used for border rectangle clip. (FIXME: consider removing radius/border_width and have another function that take a path instead) Returns a boolean indicating the state of the new clip region: true if the clip region covers an area; false if the clip region is empty.
Sourcefn get_current_clip(&self) -> LogicalRect
fn get_current_clip(&self) -> LogicalRect
Get the current clip bounding box in the current transformed coordinate.
fn translate(&mut self, distance: LogicalVector)
fn rotate(&mut self, angle_in_degrees: f32)
Sourcefn apply_opacity(&mut self, opacity: f32)
fn apply_opacity(&mut self, opacity: f32)
Apply the opacity (between 0 and 1) for all following items until the next call to restore_state.
fn save_state(&mut self)
fn restore_state(&mut self)
Sourcefn scale_factor(&self) -> f32
fn scale_factor(&self) -> f32
Returns the scale factor
Sourcefn draw_cached_pixmap(
&mut self,
item_cache: &ItemRc,
update_fn: &dyn Fn(&mut dyn FnMut(u32, u32, &[u8])),
)
fn draw_cached_pixmap( &mut self, item_cache: &ItemRc, update_fn: &dyn Fn(&mut dyn FnMut(u32, u32, &[u8])), )
Draw a pixmap in position indicated by the pos
.
The pixmap will be taken from cache if the cache is valid, otherwise, update_fn will be called
with a callback that need to be called once with fn (width, height, data)
where data are the
RGBA premultiplied pixel values
Sourcefn draw_string(&mut self, string: &str, color: Color)
fn draw_string(&mut self, string: &str, color: Color)
Draw the given string with the specified color at current (0, 0) with the default font. Mainly used by the performance counter overlay.
fn draw_image_direct(&mut self, image: Image)
fn window(&self) -> &WindowInner
Provided Methods§
fn visit_opacity( &mut self, opacity_item: Pin<&Opacity>, _self_rc: &ItemRc, _size: LogicalSize, ) -> RenderingResult
fn visit_layer( &mut self, _layer_item: Pin<&Layer>, _self_rc: &ItemRc, _size: LogicalSize, ) -> RenderingResult
fn visit_clip( &mut self, clip_item: Pin<&Clip>, item_rc: &ItemRc, _size: LogicalSize, ) -> RenderingResult
fn translation(&self) -> LogicalVector
Sourcefn draw_rect(&mut self, _size: LogicalSize, _brush: Brush)
fn draw_rect(&mut self, _size: LogicalSize, _brush: Brush)
Fills a rectangle at (0,0) with the given size. This is used for example by the Skia renderer to handle window backgrounds with a brush (gradient).
Sourcefn filter_item(&mut self, item: &ItemRc) -> (bool, LogicalRect)
fn filter_item(&mut self, item: &ItemRc) -> (bool, LogicalRect)
This is called before it is being rendered (before the draw_* function). Returns
- if the item needs to be drawn (false means it is clipped or doesn’t need to be drawn)
- the geometry of the item
Sourcefn metrics(&self) -> RenderingMetrics
fn metrics(&self) -> RenderingMetrics
Returns any rendering metrics collecting since the creation of the renderer (typically per frame)