Struct vg::Paint

source · []
pub struct Paint { /* private fields */ }
Expand description

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 vg::{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

Creates a new solid color paint

Creates a new image pattern paint.

  • id - is handle to the image to render
  • cx cy - Specify the top-left location of the image pattern
  • width height - The size of one image
  • angle - Rotation around the top-left corner
  • alpha - Transparency applied on the image
Example
use vg::{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);

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 vg::{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);

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 vg::{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);

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 vg::{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);

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 vg::{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);

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 vg::{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);

Creates a new solid color paint

Returns boolean if the shapes drawn with this paint will be antialiased.

Sets whether shapes drawn with this paint will be anti aliased. Enabled by default.

True if this paint uses higher quality stencil strokes.

Sets whether to use higher quality stencil strokes.

Returns the current line width.

Sets the line width for shapes stroked with this paint.

Getter for the miter limit

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.

Returns the current start line cap for this paint.

Returns the current start line cap for this paint.

Sets how the start and end of the line (cap) is drawn

By default it’s set to LineCap::Butt

Sets how the beggining cap of the line is drawn

By default it’s set to LineCap::Butt

Sets how the end cap of the line is drawn

By default it’s set to LineCap::Butt

Returns the current line join for this paint.

Sets how sharp path corners are drawn.

By default it’s set to LineJoin::Miter

Set the font

Returns the current font size

Only has effect on canvas text operations

Sets the font size.

Only has effect on canvas text operations

Returns the current letter spacing

Sets the letter spacing for this paint

Only has effect on canvas text operations

Returns the current vertical align

Sets the text vertical alignment for this paint

Only has effect on canvas text operations

Returns the current horizontal align

Sets the text horizontal alignment for this paint

Only has effect on canvas text operations

Retrieves the current fill rule setting for this paint

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

Returns a copy of the value. Read more

Performs copy-assignment from source. Read more

Formats the value using the given formatter. Read more

Returns the “default value” for a type. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Returns the argument unchanged.

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

The resulting type after obtaining ownership.

Creates owned data from borrowed data, usually by cloning. Read more

Uses borrowed data to replace owned data, usually by cloning. Read more

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.