| // Copyright 2022 the Vello Authors |
| // SPDX-License-Identifier: Apache-2.0 OR MIT OR Unlicense |
| |
| // The annotated bounding box for a path. It has been transformed, |
| // but contains a link to the active transform, mostly for gradients. |
| // Coordinates are integer pixels (for the convenience of atomic update) |
| // but will probably become fixed-point fractions for rectangles. |
| // |
| // TODO: This also carries a `draw_flags` field that contains information that gets propagated to |
| // the draw info stream. This is currently only used for the fill rule. If the other bits remain |
| // unused we could possibly pack this into some other field, such as the the MSB of `trans_ix`. |
| struct PathBbox { |
| x0: i32, |
| y0: i32, |
| x1: i32, |
| y1: i32, |
| draw_flags: u32, |
| trans_ix: u32, |
| } |
| |
| fn bbox_intersect(a: vec4<f32>, b: vec4<f32>) -> vec4<f32> { |
| return vec4(max(a.xy, b.xy), min(a.zw, b.zw)); |
| } |