[−][src]Crate raqote
A pure Rust 2D Graphics Library.
Raqote is a small, simple, fast software 2D graphics library.
Current functionality
- path filling
- stroking
- dashing
- image, solid, and gradient fills
- rectangular and path clipping
- blend modes
- layers
- repeat modes for images
- global alpha
Notable users
- resvg supports using raqote as a backend.
- Servo uses raqote as its canvas backend.
- orbtk uses raqote.
Example:
A simple example drawing to a window
Another example drawing to a png follows:
use raqote::*; let mut dt = DrawTarget::new(400, 400); let mut pb = PathBuilder::new(); pb.move_to(100., 10.); pb.cubic_to(150., 40., 175., 0., 200., 10.); pb.quad_to(120., 100., 80., 200.); pb.quad_to(150., 180., 300., 300.); pb.close(); let path = pb.finish(); let gradient = Source::new_radial_gradient( Gradient { stops: vec![ GradientStop { position: 0.2, color: Color::new(0xff, 0, 0xff, 0), }, GradientStop { position: 0.8, color: Color::new(0xff, 0xff, 0xff, 0xff), }, GradientStop { position: 1., color: Color::new(0xff, 0xff, 0, 0xff), }, ], }, Point::new(150., 150.), 128., Spread::Pad, ); dt.fill(&path, &gradient, &DrawOptions::new()); let mut pb = PathBuilder::new(); pb.move_to(100., 100.); pb.line_to(300., 300.); pb.line_to(200., 300.); let path = pb.finish(); dt.stroke( &path, &Source::Solid(SolidSource { r: 0x0, g: 0x0, b: 0x80, a: 0x80, }), &StrokeStyle { cap: LineCap::Round, join: LineJoin::Round, width: 10., miter_limit: 2., dash_array: vec![10., 18.], dash_offset: 16., }, &DrawOptions::new() ); dt.write_png("example.png");
Produces:
Structs
Color | A unpremultiplied color |
DrawOptions | |
DrawTarget | The main type used for drawing |
Gradient | |
GradientStop | color is unpremultiplied argb |
Image | |
Path | Represents a complete path usable for filling or stroking. |
PathBuilder | A helper struct used for constructing a |
SolidSource | A premultiplied color. i.e. r,b,g <= a |
StrokeStyle |
Enums
AntialiasMode | |
BlendMode | |
ExtendMode | |
FilterMode | |
LineCap | |
LineJoin | |
PathOp | |
Source | LinearGradients have an implicit start point at 0,0 and an end point at 256,0. The transform parameter can be used to adjust them to the desired location. RadialGradients have an implict center at 0,0 and a radius of 128. |
Spread | |
Winding |
Functions
stroke_to_path |
Type Definitions
IntPoint | |
IntRect | |
Point | |
Transform | |
Vector |