Crate wizdraw

Source
Expand description

wizdraw - Portable crate to fill and stroke composite bezier curves (paths)

All operations are done on an offscreen canvas.

The CPU implementation is always available and performs OK.

§Limitations

  • Pixels are [R, G, B, A] values with 8-bit components
  • Point coordinates are pairs of f32
  • The GLES2 implementation’s output is currently only readable as RGBA5551

§Features

  • simd: include the SIMD canvas implementation
  • gles2: include the OpenGL ES 2.0 canvas implementation
  • contour: include path stroking code
  • shapes: include basic shape generation code

By default, this crate doesn’t use SIMD because a nightly toolchain is required for that.

§Example

let myrtle = Color::new(255, 100, 100, 255);
let texture = Texture::SolidColor(myrtle);

let oval = [
    CubicBezier {
        c1: Point::new(50.0, 250.0),
        c2: Point::new(50.0, 50.0),
        c3: Point::new(450.0, 50.0),
        c4: Point::new(450.0, 250.0),
    },
    CubicBezier {
        c1: Point::new(450.0, 250.0),
        c2: Point::new(450.0, 450.0),
        c3: Point::new(50.0, 450.0),
        c4: Point::new(50.0, 250.0),
    },
];

let mut canvas = wizdraw::cpu::Canvas::new(500, 500);
canvas.fill_cbc(&oval, &texture, false, SsaaConfig::X4);

// retrieve a framebuffer
let pixels = canvas.pixels();

§Demo: PNG output

Check out the cpu example to generate this image:

output.png

Re-exports§

pub extern crate rgb;
pub extern crate vek;

Modules§

cpu
Implementations of Canvas using only the CPU
gles2
Implementations of Canvas using OpenGL ES 2.0
shapes

Structs§

BitmapHandle
Texture handle created using a Canvas
CubicBezier
Cubic Bezier Curve, made of 4 control points

Enums§

SsaaConfig
Super-Sampling Anti-Aliasing Configuration
Texture
The expected content of a filled path

Traits§

Canvas
The trait that rendering backends must implement

Functions§

contour
Creates a Contour composite bezier curve based on another one.

Type Aliases§

Color
A 4-byte color (RGBA)
Point
Pixel or Subpixel coordinates