[−][src]Struct femtovg::Paint
Struct controlling how graphical shapes are rendered.
The Paint struct is a relatively lightweight object which contains all the information needed to display something on the canvas. Unlike the HTML canvas where the current drawing style is stored in an internal stack this paint struct is simply passed to the relevant drawing methods on the canvas.
Clients code can have as many paints as they desire for different use cases and styles. This makes the internal stack in the Canvas struct much lighter since it only needs to contain the transform stack and current scissor rectangle.
Example
use femtovg::{Paint, Path, Color, Canvas, renderer::Void}; let mut canvas = Canvas::new(Void).expect("Cannot create canvas"); let fill_paint = Paint::color(Color::hex("454545")); let mut stroke_paint = Paint::color(Color::hex("bababa")); stroke_paint.set_line_width(4.0); let mut path = Path::new(); path.rounded_rect(10.0, 10.0, 100.0, 100.0, 20.0); canvas.fill_path(&mut path, fill_paint); canvas.stroke_path(&mut path, stroke_paint);
Implementations
impl Paint
[src]
pub fn color(color: Color) -> Self
[src]
Creates a new solid color paint
pub fn image(
id: ImageId,
cx: f32,
cy: f32,
width: f32,
height: f32,
angle: f32,
alpha: f32
) -> Self
[src]
id: ImageId,
cx: f32,
cy: f32,
width: f32,
height: f32,
angle: f32,
alpha: f32
) -> Self
Creates a new image pattern paint.
id
- is handle to the image to rendercx
cy
- Specify the top-left location of the image patternwidth
height
- The size of one imageangle
- Rotation around the top-left corneralpha
- Transparency applied on the image
Example
use femtovg::{Paint, Path, Color, Canvas, ImageFlags, renderer::Void}; let mut canvas = Canvas::new(Void).expect("Cannot create canvas"); let image_id = canvas.load_image_file("examples/assets/rust-logo.png", ImageFlags::GENERATE_MIPMAPS).expect("Cannot create image"); let fill_paint = Paint::image(image_id, 10.0, 10.0, 85.0, 85.0, 0.0, 1.0); let mut path = Path::new(); path.rect(10.0, 10.0, 85.0, 85.0); canvas.fill_path(&mut path, fill_paint);
pub fn linear_gradient(
start_x: f32,
start_y: f32,
end_x: f32,
end_y: f32,
start_color: Color,
end_color: Color
) -> Self
[src]
start_x: f32,
start_y: f32,
end_x: f32,
end_y: f32,
start_color: Color,
end_color: Color
) -> Self
Creates and returns a linear gradient paint.
The gradient is transformed by the current transform when it is passed to fill_path() or stroke_path().
Example
use femtovg::{Paint, Path, Color, Canvas, ImageFlags, renderer::Void}; let mut canvas = Canvas::new(Void).expect("Cannot create canvas"); let bg = Paint::linear_gradient(0.0, 0.0, 0.0, 100.0, Color::rgba(255, 255, 255, 16), Color::rgba(0, 0, 0, 16)); let mut path = Path::new(); path.rounded_rect(0.0, 0.0, 100.0, 100.0, 5.0); canvas.fill_path(&mut path, bg);
pub fn linear_gradient_stops(
start_x: f32,
start_y: f32,
end_x: f32,
end_y: f32,
stops: &[(f32, Color)]
) -> Self
[src]
start_x: f32,
start_y: f32,
end_x: f32,
end_y: f32,
stops: &[(f32, Color)]
) -> Self
Creates and returns a linear gradient paint with two or more stops.
The gradient is transformed by the current transform when it is passed to fill_path() or stroke_path().
Example
use femtovg::{Paint, Path, Color, Canvas, ImageFlags, renderer::Void}; let mut canvas = Canvas::new(Void).expect("Cannot create canvas"); let bg = Paint::linear_gradient_stops( 0.0, 0.0, 0.0, 100.0, &[ (0.0, Color::rgba(255, 255, 255, 16)), (0.5, Color::rgba(0, 0, 0, 16)), (1.0, Color::rgba(255, 0, 0, 16)) ]); let mut path = Path::new(); path.rounded_rect(0.0, 0.0, 100.0, 100.0, 5.0); canvas.fill_path(&mut path, bg);
pub fn box_gradient(
x: f32,
y: f32,
width: f32,
height: f32,
radius: f32,
feather: f32,
inner_color: Color,
outer_color: Color
) -> Self
[src]
x: f32,
y: f32,
width: f32,
height: f32,
radius: f32,
feather: f32,
inner_color: Color,
outer_color: Color
) -> Self
Creates and returns a box gradient.
Box gradient is a feathered rounded rectangle, it is useful for rendering drop shadows or highlights for boxes. Parameters (x,y) define the top-left corner of the rectangle, (w,h) define the size of the rectangle, r defines the corner radius, and f feather. Feather defines how blurry the border of the rectangle is. Parameter inner_color specifies the inner color and outer_color the outer color of the gradient. The gradient is transformed by the current transform when it is passed to fill_path() or stroke_path().
Example
use femtovg::{Paint, Path, Color, Canvas, ImageFlags, renderer::Void}; let mut canvas = Canvas::new(Void).expect("Cannot create canvas"); let bg = Paint::box_gradient( 0.0, 0.0, 100.0, 100.0, 10.0, 10.0, Color::rgba(0, 0, 0, 128), Color::rgba(0, 0, 0, 0), ); let mut path = Path::new(); path.rounded_rect(0.0, 0.0, 100.0, 100.0, 5.0); canvas.fill_path(&mut path, bg);
pub fn radial_gradient(
cx: f32,
cy: f32,
in_radius: f32,
out_radius: f32,
inner_color: Color,
outer_color: Color
) -> Self
[src]
cx: f32,
cy: f32,
in_radius: f32,
out_radius: f32,
inner_color: Color,
outer_color: Color
) -> Self
Creates and returns a radial gradient.
Parameters (cx,cy) specify the center, in_radius and out_radius specify the inner and outer radius of the gradient, inner_color specifies the start color and outer_color the end color. The gradient is transformed by the current transform when it is passed to fill_paint() or stroke_paint().
Example
use femtovg::{Paint, Path, Color, Canvas, ImageFlags, renderer::Void}; let mut canvas = Canvas::new(Void).expect("Cannot create canvas"); let bg = Paint::radial_gradient( 50.0, 50.0, 18.0, 24.0, Color::rgba(0, 0, 0, 128), Color::rgba(0, 0, 0, 0), ); let mut path = Path::new(); path.circle(50.0, 50.0, 20.0); canvas.fill_path(&mut path, bg);
pub fn radial_gradient_stops(
cx: f32,
cy: f32,
in_radius: f32,
out_radius: f32,
stops: &[(f32, Color)]
) -> Self
[src]
cx: f32,
cy: f32,
in_radius: f32,
out_radius: f32,
stops: &[(f32, Color)]
) -> Self
Creates and returns a multi-stop radial gradient.
Parameters (cx,cy) specify the center, in_radius and out_radius specify the inner and outer radius of the gradient, colors specifies a list of color stops with offsets. The first offset should be 0.0 and the last offset should be 1.0. If a gradient has more than 16 stops, then only the first 16 stops will be used.
The gradient is transformed by the current transform when it is passed to fill_paint() or stroke_paint().
Example
use femtovg::{Paint, Path, Color, Canvas, ImageFlags, renderer::Void}; let mut canvas = Canvas::new(Void).expect("Cannot create canvas"); let bg = Paint::radial_gradient_stops( 50.0, 50.0, 18.0, 24.0, &[ (0.0, Color::rgba(0, 0, 0, 128)), (0.5, Color::rgba(0, 0, 128, 128)), (1.0, Color::rgba(0, 128, 0, 128)) ] ); let mut path = Path::new(); path.circle(50.0, 50.0, 20.0); canvas.fill_path(&mut path, bg);
pub fn set_color(&mut self, color: Color)
[src]
Creates a new solid color paint
pub fn anti_alias(&self) -> bool
[src]
Returns boolean if the shapes drawn with this paint will be antialiased.
pub fn set_anti_alias(&mut self, value: bool)
[src]
Sets whether shapes drawn with this paint will be anti aliased. Enabled by default.
pub fn stencil_strokes(&self) -> bool
[src]
True if this paint uses higher quality stencil strokes.
pub fn set_stencil_strokes(&mut self, value: bool)
[src]
Sets whether to use higher quality stencil strokes.
pub fn line_width(&self) -> f32
[src]
Returns the current line width.
pub fn set_line_width(&mut self, width: f32)
[src]
Sets the line width for shapes stroked with this paint.
pub fn miter_limit(&self) -> f32
[src]
Getter for the miter limit
pub fn set_miter_limit(&mut self, limit: f32)
[src]
Sets the limit at which a sharp corner is drawn beveled.
If the miter at a corner exceeds this limit, LineJoin is replaced with LineJoin::Bevel.
pub fn line_cap_start(&self) -> LineCap
[src]
Returns the current start line cap for this paint.
pub fn line_cap_end(&self) -> LineCap
[src]
Returns the current start line cap for this paint.
pub fn set_line_cap(&mut self, cap: LineCap)
[src]
Sets how the start and end of the line (cap) is drawn
By default it's set to LineCap::Butt
pub fn set_line_cap_start(&mut self, cap: LineCap)
[src]
Sets how the beggining cap of the line is drawn
By default it's set to LineCap::Butt
pub fn set_line_cap_end(&mut self, cap: LineCap)
[src]
Sets how the end cap of the line is drawn
By default it's set to LineCap::Butt
pub fn line_join(&self) -> LineJoin
[src]
Returns the current line join for this paint.
pub fn set_line_join(&mut self, join: LineJoin)
[src]
Sets how sharp path corners are drawn.
By default it's set to LineJoin::Miter
pub fn set_font(&mut self, font_ids: &[FontId])
[src]
pub fn font_size(&self) -> f32
[src]
Returns the current font size
Only has effect on canvas text operations
pub fn set_font_size(&mut self, size: f32)
[src]
Sets the font size.
Only has effect on canvas text operations
pub fn letter_spacing(&self) -> f32
[src]
Returns the current letter spacing
pub fn set_letter_spacing(&mut self, spacing: f32)
[src]
Sets the letter spacing for this paint
Only has effect on canvas text operations
pub fn text_baseline(&self) -> Baseline
[src]
Returns the current vertical align
pub fn set_text_baseline(&mut self, align: Baseline)
[src]
Sets the text vertical alignment for this paint
Only has effect on canvas text operations
pub fn text_align(&self) -> Align
[src]
Returns the current horizontal align
pub fn set_text_align(&mut self, align: Align)
[src]
Sets the text horizontal alignment for this paint
Only has effect on canvas text operations
pub fn fill_rule(&self) -> FillRule
[src]
Retrieves the current fill rule setting for this paint
pub fn set_fill_rule(&mut self, rule: FillRule)
[src]
Sets the current rule to be used when filling a path
https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/fill-rule
Trait Implementations
impl Clone for Paint
[src]
impl Copy for Paint
[src]
impl Debug for Paint
[src]
impl Default for Paint
[src]
Auto Trait Implementations
impl RefUnwindSafe for Paint
[src]
impl Send for Paint
[src]
impl Sync for Paint
[src]
impl Unpin for Paint
[src]
impl UnwindSafe for Paint
[src]
Blanket Implementations
impl<T> Any for T where
T: 'static + ?Sized,
[src]
T: 'static + ?Sized,
impl<T> Borrow<T> for T where
T: ?Sized,
[src]
T: ?Sized,
impl<T> BorrowMut<T> for T where
T: ?Sized,
[src]
T: ?Sized,
pub fn borrow_mut(&mut self) -> &mut T
[src]
impl<T> From<T> for T
[src]
impl<T, U> Into<U> for T where
U: From<T>,
[src]
U: From<T>,
impl<T> ToOwned for T where
T: Clone,
[src]
T: Clone,
type Owned = T
The resulting type after obtaining ownership.
pub fn to_owned(&self) -> T
[src]
pub fn clone_into(&self, target: &mut T)
[src]
impl<T, U> TryFrom<U> for T where
U: Into<T>,
[src]
U: Into<T>,
type Error = Infallible
The type returned in the event of a conversion error.
pub fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>
[src]
impl<T, U> TryInto<U> for T where
U: TryFrom<T>,
[src]
U: TryFrom<T>,