pub trait CsgBackend {
type CsgType;
type SketchType;
Show 22 methods
// Required methods
fn empty_csg() -> Self::CsgType;
fn empty_sketch() -> Self::SketchType;
fn union(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType;
fn difference(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType;
fn intersection(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType;
fn xor(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType;
fn union_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType;
fn difference_2d(
a: Self::SketchType,
b: Self::SketchType,
) -> Self::SketchType;
fn intersection_2d(
a: Self::SketchType,
b: Self::SketchType,
) -> Self::SketchType;
fn xor_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType;
fn translate(csg: Self::CsgType, offset: DVec3) -> Self::CsgType;
fn rotate(csg: Self::CsgType, angles: DVec3) -> Self::CsgType;
fn scale(csg: Self::CsgType, factors: DVec3) -> Self::CsgType;
fn mirror(csg: Self::CsgType, axes: DVec3) -> Self::CsgType;
fn translate_2d(sketch: Self::SketchType, offset: DVec3) -> Self::SketchType;
fn rotate_2d(sketch: Self::SketchType, angles: DVec3) -> Self::SketchType;
fn scale_2d(sketch: Self::SketchType, factors: DVec3) -> Self::SketchType;
fn mirror_2d(sketch: Self::SketchType, axes: DVec3) -> Self::SketchType;
fn color(csg: Self::CsgType, color: [f32; 4]) -> Self::CsgType;
fn color_2d(sketch: Self::SketchType, color: [f32; 4]) -> Self::SketchType;
fn extrude(
sketch: Self::SketchType,
height: f64,
twist: f64,
scale: f64,
slices: usize,
) -> Self::CsgType;
fn revolve(
sketch: Self::SketchType,
angle_degrees: f64,
segments: usize,
) -> Self::CsgType;
}Expand description
Marker trait for CSG backends.
Each backend defines a zero-sized marker type implementing this trait, specifying the concrete 3D and 2D output types and operations.
Required Associated Types§
Sourcetype SketchType
type SketchType
2D sketch / cross-section type produced by this backend.
Required Methods§
fn empty_csg() -> Self::CsgType
fn empty_sketch() -> Self::SketchType
fn union(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType
fn difference(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType
fn intersection(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType
fn xor(a: Self::CsgType, b: Self::CsgType) -> Self::CsgType
fn union_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType
fn difference_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType
fn intersection_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType
fn xor_2d(a: Self::SketchType, b: Self::SketchType) -> Self::SketchType
fn translate(csg: Self::CsgType, offset: DVec3) -> Self::CsgType
fn rotate(csg: Self::CsgType, angles: DVec3) -> Self::CsgType
fn scale(csg: Self::CsgType, factors: DVec3) -> Self::CsgType
fn mirror(csg: Self::CsgType, axes: DVec3) -> Self::CsgType
fn translate_2d(sketch: Self::SketchType, offset: DVec3) -> Self::SketchType
fn rotate_2d(sketch: Self::SketchType, angles: DVec3) -> Self::SketchType
fn scale_2d(sketch: Self::SketchType, factors: DVec3) -> Self::SketchType
fn mirror_2d(sketch: Self::SketchType, axes: DVec3) -> Self::SketchType
fn color(csg: Self::CsgType, color: [f32; 4]) -> Self::CsgType
fn color_2d(sketch: Self::SketchType, color: [f32; 4]) -> Self::SketchType
fn extrude( sketch: Self::SketchType, height: f64, twist: f64, scale: f64, slices: usize, ) -> Self::CsgType
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.