85 lines
1.7 KiB
Rust
85 lines
1.7 KiB
Rust
// partitionfinder/lib.rs
|
|
|
|
#![feature(alloc_jemalloc)]
|
|
|
|
// Needed to work around a problem with `heapsize`
|
|
extern crate alloc_jemalloc;
|
|
extern crate bit_vec;
|
|
extern crate env_logger;
|
|
extern crate euclid;
|
|
extern crate half;
|
|
#[macro_use]
|
|
extern crate log;
|
|
|
|
use euclid::Point2D;
|
|
use std::u32;
|
|
|
|
pub mod capi;
|
|
pub mod geometry;
|
|
pub mod partitioner;
|
|
pub mod tessellator;
|
|
|
|
#[repr(C)]
|
|
#[derive(Debug, Clone, Copy)]
|
|
pub struct BQuad {
|
|
pub upper_prev_endpoint: u32,
|
|
pub upper_next_endpoint: u32,
|
|
pub lower_prev_endpoint: u32,
|
|
pub lower_next_endpoint: u32,
|
|
pub upper_left_time: f32,
|
|
pub upper_right_time: f32,
|
|
pub lower_left_time: f32,
|
|
pub lower_right_time: f32,
|
|
}
|
|
|
|
#[repr(C)]
|
|
#[derive(Debug, Clone, Copy)]
|
|
pub struct Endpoint {
|
|
pub position: Point2D<f32>,
|
|
/// `u32::MAX` if not present.
|
|
pub control_points_index: u32,
|
|
pub subpath_index: u32,
|
|
}
|
|
|
|
#[repr(C)]
|
|
#[derive(Debug, Clone, Copy)]
|
|
pub struct ControlPoints {
|
|
pub point1: Point2D<f32>,
|
|
pub point2: Point2D<f32>,
|
|
}
|
|
|
|
#[repr(C)]
|
|
#[derive(Debug, Clone, Copy)]
|
|
pub struct Subpath {
|
|
pub first_endpoint_index: u32,
|
|
pub last_endpoint_index: u32,
|
|
}
|
|
|
|
#[derive(Clone, Copy, PartialEq, Debug)]
|
|
#[repr(u8)]
|
|
pub enum AntialiasingMode {
|
|
Msaa = 0,
|
|
Levien = 1,
|
|
}
|
|
|
|
#[derive(Clone, Copy, Debug)]
|
|
#[repr(C)]
|
|
pub struct Vertex {
|
|
pub prev_endpoint_index: u32,
|
|
pub next_endpoint_index: u32,
|
|
pub time: f32,
|
|
padding: u32,
|
|
}
|
|
|
|
impl Vertex {
|
|
#[inline]
|
|
pub fn new(prev_endpoint_index: u32, next_endpoint_index: u32, time: f32) -> Vertex {
|
|
Vertex {
|
|
prev_endpoint_index: prev_endpoint_index,
|
|
next_endpoint_index: next_endpoint_index,
|
|
time: time,
|
|
padding: 0,
|
|
}
|
|
}
|
|
}
|