Struct rsvg::drawing_ctx::DrawingCtx
source · pub struct DrawingCtx {
session: Session,
initial_viewport: Viewport,
dpi: Dpi,
cr_stack: Rc<RefCell<Vec<Context>>>,
cr: Context,
user_language: UserLanguage,
drawsub_stack: Vec<Node<NodeData>>,
measuring: bool,
testing: bool,
}
Fields§
§session: Session
§initial_viewport: Viewport
§dpi: Dpi
§cr_stack: Rc<RefCell<Vec<Context>>>
§cr: Context
§user_language: UserLanguage
§drawsub_stack: Vec<Node<NodeData>>
§measuring: bool
§testing: bool
Implementations§
source§impl DrawingCtx
impl DrawingCtx
fn new(
session: Session,
cr: &Context,
initial_viewport: &Viewport,
user_language: UserLanguage,
dpi: Dpi,
measuring: bool,
testing: bool,
drawsub_stack: Vec<Node<NodeData>>
) -> DrawingCtx
sourcefn nested(&self, cr: Context) -> DrawingCtx
fn nested(&self, cr: Context) -> DrawingCtx
Copies a DrawingCtx
for temporary use on a Cairo surface.
DrawingCtx
maintains state using during the drawing process, and sometimes we
would like to use that same state but on a different Cairo surface and context
than the ones being used on self
. This function copies the self
state into a
new DrawingCtx
, and ties the copied one to the supplied cr
.
pub fn session(&self) -> &Session
pub fn user_language(&self) -> &UserLanguage
pub fn toplevel_viewport(&self) -> Rect
sourcepub fn get_transform_for_stacking_ctx(
&self,
stacking_ctx: &StackingContext,
clipping: bool
) -> Result<ValidTransform, RenderingError>
pub fn get_transform_for_stacking_ctx(
&self,
stacking_ctx: &StackingContext,
clipping: bool
) -> Result<ValidTransform, RenderingError>
Gets the transform that will be used on the target surface, whether using an isolated stacking context or not.
This is only used in the text code, and we should probably try to remove it.
pub fn is_measuring(&self) -> bool
pub fn get_transform(&self) -> ValidTransform
pub fn empty_bbox(&self) -> BoundingBox
fn size_for_temporary_surface(&self) -> (i32, i32)
pub fn create_surface_for_toplevel_viewport(
&self
) -> Result<ImageSurface, RenderingError>
fn create_similar_surface_for_toplevel_viewport(
&self,
surface: &Surface
) -> Result<Surface, RenderingError>
sourcepub fn push_new_viewport(
&self,
current_viewport: &Viewport,
vbox: Option<ViewBox>,
viewport_rect: Rect,
preserve_aspect_ratio: AspectRatio,
clip_mode: ClipMode
) -> Option<Viewport>
pub fn push_new_viewport(
&self,
current_viewport: &Viewport,
vbox: Option<ViewBox>,
viewport_rect: Rect,
preserve_aspect_ratio: AspectRatio,
clip_mode: ClipMode
) -> Option<Viewport>
Creates a new coordinate space inside a viewport and sets a clipping rectangle.
Note that this actually changes the draw_ctx.cr
’s transformation to match
the new coordinate space, but the old one is not restored after the
result’s Viewport
is dropped. Thus, this function must be called
inside with_saved_cr
or draw_ctx.with_discrete_layer
.
fn clip_to_node(
&mut self,
clip_node: &Option<Node<NodeData>>,
acquired_nodes: &mut AcquiredNodes<'_>,
viewport: &Viewport,
bbox: &BoundingBox
) -> Result<(), RenderingError>
fn generate_cairo_mask(
&mut self,
mask_node: &Node<NodeData>,
viewport: &Viewport,
transform: Transform,
bbox: &BoundingBox,
acquired_nodes: &mut AcquiredNodes<'_>
) -> Result<Option<ImageSurface>, RenderingError>
pub fn with_discrete_layer(
&mut self,
stacking_ctx: &StackingContext,
acquired_nodes: &mut AcquiredNodes<'_>,
viewport: &Viewport,
clipping: bool,
draw_fn: &mut dyn FnMut(&mut AcquiredNodes<'_>, &mut DrawingCtx) -> Result<BoundingBox, RenderingError>
) -> Result<BoundingBox, RenderingError>
sourcefn with_alpha(
&mut self,
opacity: UnitInterval,
draw_fn: &mut dyn FnMut(&mut DrawingCtx) -> Result<BoundingBox, RenderingError>
) -> Result<BoundingBox, RenderingError>
fn with_alpha(
&mut self,
opacity: UnitInterval,
draw_fn: &mut dyn FnMut(&mut DrawingCtx) -> Result<BoundingBox, RenderingError>
) -> Result<BoundingBox, RenderingError>
Run the drawing function with the specified opacity
sourcefn link_tag_begin(&mut self, link_target: &str)
fn link_tag_begin(&mut self, link_target: &str)
Start a Cairo tag for PDF links
sourcefn link_tag_end(&mut self)
fn link_tag_end(&mut self)
End a Cairo tag for PDF links
fn run_filters(
&mut self,
viewport: &Viewport,
surface_to_filter: SharedImageSurface,
filter: &Filter,
acquired_nodes: &mut AcquiredNodes<'_>,
node_name: &str,
user_space_params: &NormalizeParams,
stroke_paint_source: Rc<UserSpacePaintSource>,
fill_paint_source: Rc<UserSpacePaintSource>,
node_bbox: BoundingBox
) -> Result<SharedImageSurface, RenderingError>
fn set_gradient(
&mut self,
gradient: &UserSpaceGradient
) -> Result<(), RenderingError>
fn set_pattern(
&mut self,
pattern: &UserSpacePattern,
acquired_nodes: &mut AcquiredNodes<'_>
) -> Result<bool, RenderingError>
fn set_color(&self, rgba: RGBA)
fn set_paint_source(
&mut self,
paint_source: &UserSpacePaintSource,
acquired_nodes: &mut AcquiredNodes<'_>
) -> Result<bool, RenderingError>
sourcepub fn get_paint_source_surface(
&mut self,
width: i32,
height: i32,
acquired_nodes: &mut AcquiredNodes<'_>,
paint_source: &UserSpacePaintSource
) -> Result<SharedImageSurface, RenderingError>
pub fn get_paint_source_surface(
&mut self,
width: i32,
height: i32,
acquired_nodes: &mut AcquiredNodes<'_>,
paint_source: &UserSpacePaintSource
) -> Result<SharedImageSurface, RenderingError>
Computes and returns a surface corresponding to the given paint server.
fn stroke(
&mut self,
cr: &Context,
acquired_nodes: &mut AcquiredNodes<'_>,
paint_source: &UserSpacePaintSource
) -> Result<(), RenderingError>
fn fill(
&mut self,
cr: &Context,
acquired_nodes: &mut AcquiredNodes<'_>,
paint_source: &UserSpacePaintSource
) -> Result<(), RenderingError>
pub fn compute_path_extents(
&self,
path: &Path
) -> Result<Option<Rect>, RenderingError>
pub fn draw_layer(
&mut self,
layer: &Layer,
acquired_nodes: &mut AcquiredNodes<'_>,
clipping: bool,
viewport: &Viewport
) -> Result<BoundingBox, RenderingError>
fn draw_shape(
&mut self,
shape: &Shape,
stacking_ctx: &StackingContext,
acquired_nodes: &mut AcquiredNodes<'_>,
clipping: bool,
viewport: &Viewport
) -> Result<BoundingBox, RenderingError>
fn paint_surface(
&mut self,
surface: &SharedImageSurface,
width: f64,
height: f64
) -> Result<(), Error>
fn draw_image(
&mut self,
image: &Image,
stacking_ctx: &StackingContext,
acquired_nodes: &mut AcquiredNodes<'_>,
clipping: bool,
viewport: &Viewport
) -> Result<BoundingBox, RenderingError>
fn draw_text_span(
&mut self,
span: &TextSpan,
acquired_nodes: &mut AcquiredNodes<'_>,
clipping: bool
) -> Result<BoundingBox, RenderingError>
fn draw_text(
&mut self,
text: &Text,
stacking_ctx: &StackingContext,
acquired_nodes: &mut AcquiredNodes<'_>,
clipping: bool,
viewport: &Viewport
) -> Result<BoundingBox, RenderingError>
pub fn get_snapshot(
&self,
width: i32,
height: i32
) -> Result<SharedImageSurface, RenderingError>
pub fn draw_node_to_surface(
&mut self,
node: &Node<NodeData>,
acquired_nodes: &mut AcquiredNodes<'_>,
cascaded: &CascadedValues<'_>,
affine: Transform,
width: i32,
height: i32
) -> Result<SharedImageSurface, RenderingError>
pub fn draw_node_from_stack(
&mut self,
node: &Node<NodeData>,
acquired_nodes: &mut AcquiredNodes<'_>,
cascaded: &CascadedValues<'_>,
viewport: &Viewport,
clipping: bool
) -> Result<BoundingBox, RenderingError>
pub fn draw_from_use_node(
&mut self,
node: &Node<NodeData>,
acquired_nodes: &mut AcquiredNodes<'_>,
values: &ComputedValues,
use_rect: Rect,
link: &NodeId,
clipping: bool,
viewport: &Viewport,
fill_paint: Arc<PaintSource>,
stroke_paint: Arc<PaintSource>
) -> Result<BoundingBox, RenderingError>
sourcepub fn get_font_options(&self) -> FontOptions
pub fn get_font_options(&self) -> FontOptions
Extracts the font options for the current state of the DrawingCtx.
You can use the font options later with create_pango_context().
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for DrawingCtx
impl !Send for DrawingCtx
impl !Sync for DrawingCtx
impl Unpin for DrawingCtx
impl !UnwindSafe for DrawingCtx
Blanket Implementations§
§impl<T> Pointable for T
impl<T> Pointable for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self
from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self
is actually part of its subset T
(and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset
but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self
to the equivalent element of its superset.