forked from 1b-agent/opencadstudio-upstream
style: apply cargo fmt across workspace
This commit is contained in:
1 parent
85710e5454
commit
9cf9ff2c5c
531 files changed
+57740
-33906
No files matched your search
@@ -151,7 +151,12 @@ pub fn page_content_by_layer(
|
||||
let base = page_content(&super::pdf_layers::source_with_layers(path, &names), page)?;
|
||||
let key = |s: &dyn std::fmt::Debug| format!("{s:?}");
|
||||
let mut seen: HashMap<String, usize> = HashMap::new();
|
||||
for item in base.paths.iter().map(|p| key(p)).chain(base.texts.iter().map(|t| key(t))) {
|
||||
for item in base
|
||||
.paths
|
||||
.iter()
|
||||
.map(|p| key(p))
|
||||
.chain(base.texts.iter().map(|t| key(t)))
|
||||
{
|
||||
*seen.entry(item).or_default() += 1;
|
||||
}
|
||||
let mut out = Vec::new();
|
||||
@@ -159,7 +164,11 @@ pub fn page_content_by_layer(
|
||||
if hidden.contains(&layer.name) {
|
||||
continue;
|
||||
}
|
||||
let others: Vec<String> = names.iter().filter(|n| **n != layer.name).cloned().collect();
|
||||
let others: Vec<String> = names
|
||||
.iter()
|
||||
.filter(|n| **n != layer.name)
|
||||
.cloned()
|
||||
.collect();
|
||||
let Some(mut only) =
|
||||
page_content(&super::pdf_layers::source_with_layers(path, &others), page)
|
||||
else {
|
||||
@@ -203,7 +212,12 @@ fn images_to_last_layer(
|
||||
// Each layered path and text keyed once; the first layer holding it wins.
|
||||
let mut owners: std::collections::HashMap<String, usize> = std::collections::HashMap::new();
|
||||
for (n, (_, pv)) in layered.iter().enumerate() {
|
||||
for item in pv.paths.iter().map(|p| key(p)).chain(pv.texts.iter().map(|t| key(t))) {
|
||||
for item in pv
|
||||
.paths
|
||||
.iter()
|
||||
.map(|p| key(p))
|
||||
.chain(pv.texts.iter().map(|t| key(t)))
|
||||
{
|
||||
owners.entry(item).or_insert(n);
|
||||
}
|
||||
}
|
||||
@@ -218,7 +232,9 @@ fn images_to_last_layer(
|
||||
let image = &full.images[i];
|
||||
if let Some(n) = layered.iter().position(|(_, pv)| pv.images.contains(image)) {
|
||||
last = Some(n);
|
||||
} else if let (Some(n), Some(at)) = (last, base.images.iter().position(|b| b == image)) {
|
||||
} else if let (Some(n), Some(at)) =
|
||||
(last, base.images.iter().position(|b| b == image))
|
||||
{
|
||||
moves.push((n, base.images.remove(at)));
|
||||
}
|
||||
}
|
||||
@@ -268,7 +284,10 @@ fn read_page_with(path: &str, page: &str, images: bool) -> Option<PageVectors> {
|
||||
.and_then(|dict| dict.get::<Name>(b"BaseFont"))
|
||||
.map(|name| String::from_utf8_lossy(&name).into_owned())
|
||||
.unwrap_or_default();
|
||||
let name = name.split_once('+').map(|(_, rest)| rest.to_string()).unwrap_or(name);
|
||||
let name = name
|
||||
.split_once('+')
|
||||
.map(|(_, rest)| rest.to_string())
|
||||
.unwrap_or(name);
|
||||
if !names.contains(&name) {
|
||||
names.push(name);
|
||||
}
|
||||
@@ -276,7 +295,10 @@ fn read_page_with(path: &str, page: &str, images: bool) -> Option<PageVectors> {
|
||||
}
|
||||
let mut texts = device.texts;
|
||||
for text in &mut texts {
|
||||
let index = device.font_order.iter().position(|key| *key == text.font_key);
|
||||
let index = device
|
||||
.font_order
|
||||
.iter()
|
||||
.position(|key| *key == text.font_key);
|
||||
text.text.font = index
|
||||
.and_then(|i| names.get(i).cloned())
|
||||
.filter(|name| !name.is_empty())
|
||||
@@ -344,7 +366,10 @@ fn subpaths(path: &BezPath, transform: Affine) -> Vec<SubPath> {
|
||||
match *el {
|
||||
PathEl::MoveTo(p) => {
|
||||
let p = transform * p;
|
||||
out.push(SubPath { segments: Vec::new(), closed: false });
|
||||
out.push(SubPath {
|
||||
segments: Vec::new(),
|
||||
closed: false,
|
||||
});
|
||||
start = p;
|
||||
last = p;
|
||||
}
|
||||
@@ -360,14 +385,16 @@ fn subpaths(path: &BezPath, transform: Affine) -> Vec<SubPath> {
|
||||
let c1 = last + (c - last) * (2.0 / 3.0);
|
||||
let c2 = p + (c - p) * (2.0 / 3.0);
|
||||
if let Some(sp) = out.last_mut() {
|
||||
sp.segments.push(Segment::Cubic(pt(last), pt(c1), pt(c2), pt(p)));
|
||||
sp.segments
|
||||
.push(Segment::Cubic(pt(last), pt(c1), pt(c2), pt(p)));
|
||||
}
|
||||
last = p;
|
||||
}
|
||||
PathEl::CurveTo(c1, c2, p) => {
|
||||
let (c1, c2, p) = (transform * c1, transform * c2, transform * p);
|
||||
if let Some(sp) = out.last_mut() {
|
||||
sp.segments.push(Segment::Cubic(pt(last), pt(c1), pt(c2), pt(p)));
|
||||
sp.segments
|
||||
.push(Segment::Cubic(pt(last), pt(c1), pt(c2), pt(p)));
|
||||
}
|
||||
last = p;
|
||||
}
|
||||
@@ -385,7 +412,10 @@ fn subpaths(path: &BezPath, transform: Affine) -> Vec<SubPath> {
|
||||
out.retain(|sp| !sp.segments.is_empty());
|
||||
// A path drawn back to its start without a close operator is closed.
|
||||
for sp in &mut out {
|
||||
let (first, last) = (sp.segments[0].start(), sp.segments[sp.segments.len() - 1].end());
|
||||
let (first, last) = (
|
||||
sp.segments[0].start(),
|
||||
sp.segments[sp.segments.len() - 1].end(),
|
||||
);
|
||||
if !sp.closed && (first[0] - last[0]).hypot(first[1] - last[1]) < 1e-9 {
|
||||
sp.closed = true;
|
||||
}
|
||||
@@ -396,7 +426,13 @@ fn subpaths(path: &BezPath, transform: Affine) -> Vec<SubPath> {
|
||||
impl<'a> Device<'a> for Collector {
|
||||
fn set_soft_mask(&mut self, _: Option<SoftMask<'a>>) {}
|
||||
fn set_blend_mode(&mut self, _: BlendMode) {}
|
||||
fn draw_path(&mut self, path: &BezPath, transform: Affine, paint: &Paint<'a>, mode: &PathDrawMode) {
|
||||
fn draw_path(
|
||||
&mut self,
|
||||
path: &BezPath,
|
||||
transform: Affine,
|
||||
paint: &Paint<'a>,
|
||||
mode: &PathDrawMode,
|
||||
) {
|
||||
self.finish_text();
|
||||
let subpaths = subpaths(path, transform);
|
||||
if subpaths.is_empty() {
|
||||
@@ -412,7 +448,11 @@ impl<'a> Device<'a> for Collector {
|
||||
PathDrawMode::Fill(_) => (None, Some(rgb(paint))),
|
||||
};
|
||||
self.order.push(Drawn::Path(self.paths.len()));
|
||||
self.paths.push(PdfPath { subpaths, stroke, fill });
|
||||
self.paths.push(PdfPath {
|
||||
subpaths,
|
||||
stroke,
|
||||
fill,
|
||||
});
|
||||
}
|
||||
fn push_clip_path(&mut self, _: &ClipPath) {}
|
||||
fn push_transparency_group(&mut self, _: f32, _: Option<SoftMask<'a>>, _: BlendMode) {}
|
||||
@@ -593,7 +633,9 @@ pub fn circle_of(sp: &SubPath) -> Option<([f64; 2], f64)> {
|
||||
}
|
||||
let tol = r * 2e-3;
|
||||
let on_circle = cubics.iter().all(|s| {
|
||||
[0.0, 0.25, 0.5, 0.75].iter().all(|t| (dist(bezier(s, *t)) - r).abs() <= tol)
|
||||
[0.0, 0.25, 0.5, 0.75]
|
||||
.iter()
|
||||
.all(|t| (dist(bezier(s, *t)) - r).abs() <= tol)
|
||||
});
|
||||
on_circle.then_some((c, r))
|
||||
}
|
||||
@@ -602,7 +644,11 @@ pub fn circle_of(sp: &SubPath) -> Option<([f64; 2], f64)> {
|
||||
|
||||
/// PDFOSNAP, DWFOSNAP and DGNOSNAP: whether object snaps find the geometry
|
||||
/// inside underlays of each kind.
|
||||
static UNDERLAY_OSNAP: [AtomicBool; 3] = [AtomicBool::new(true), AtomicBool::new(true), AtomicBool::new(true)];
|
||||
static UNDERLAY_OSNAP: [AtomicBool; 3] = [
|
||||
AtomicBool::new(true),
|
||||
AtomicBool::new(true),
|
||||
AtomicBool::new(true),
|
||||
];
|
||||
|
||||
fn osnap_slot(kind: codec::entities::UnderlayType) -> &'static AtomicBool {
|
||||
match kind {
|
||||
@@ -623,7 +669,11 @@ pub fn set_underlay_osnap(kind: codec::entities::UnderlayType, on: bool) {
|
||||
/// UOSNAP: 1 when snaps find every kind of underlay geometry, 0 when none,
|
||||
/// 2 when the kinds differ.
|
||||
pub fn uosnap() -> i16 {
|
||||
match UNDERLAY_OSNAP.iter().filter(|s| s.load(Ordering::Relaxed)).count() {
|
||||
match UNDERLAY_OSNAP
|
||||
.iter()
|
||||
.filter(|s| s.load(Ordering::Relaxed))
|
||||
.count()
|
||||
{
|
||||
0 => 0,
|
||||
n if n == UNDERLAY_OSNAP.len() => 1,
|
||||
_ => 2,
|
||||
@@ -648,7 +698,9 @@ pub fn underlay_snap_points(
|
||||
document: &codec::CadDocument,
|
||||
) -> Vec<(glam::DVec3, crate::scene::model::wire_model::SnapHint)> {
|
||||
use crate::scene::model::wire_model::SnapHint;
|
||||
if !underlay_osnap(u.underlay_type) || !u.flags.contains(codec::entities::UnderlayDisplayFlags::ON) {
|
||||
if !underlay_osnap(u.underlay_type)
|
||||
|| !u.flags.contains(codec::entities::UnderlayDisplayFlags::ON)
|
||||
{
|
||||
return Vec::new();
|
||||
}
|
||||
let Some(def) = crate::entities::underlay::definition(u, document) else {
|
||||
@@ -700,7 +752,12 @@ fn underlay_vectors(
|
||||
codec::entities::UnderlayType::Pdf => {
|
||||
page_vectors(&super::pdf_layers::underlay_source(u, &def.file_path), page)
|
||||
}
|
||||
kind => super::underlay_vector::page_vectors(kind, &def.file_path, page, &super::pdf_layers::hidden_layers(u)),
|
||||
kind => super::underlay_vector::page_vectors(
|
||||
kind,
|
||||
&def.file_path,
|
||||
page,
|
||||
&super::pdf_layers::hidden_layers(u),
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
@@ -723,7 +780,9 @@ pub fn underlay_snap_geometry(
|
||||
u: &codec::entities::Underlay,
|
||||
document: &codec::CadDocument,
|
||||
) -> Vec<SnapPiece> {
|
||||
if !underlay_osnap(u.underlay_type) || !u.flags.contains(codec::entities::UnderlayDisplayFlags::ON) {
|
||||
if !underlay_osnap(u.underlay_type)
|
||||
|| !u.flags.contains(codec::entities::UnderlayDisplayFlags::ON)
|
||||
{
|
||||
return Vec::new();
|
||||
}
|
||||
let Some(def) = crate::entities::underlay::definition(u, document) else {
|
||||
@@ -739,7 +798,11 @@ pub fn underlay_snap_geometry(
|
||||
// A circle stays one only while the placement scales both axes alike.
|
||||
let uniform = (u.x_scale.abs() - u.y_scale.abs()).abs() <= 1e-9 * u.x_scale.abs().max(1e-12);
|
||||
let flatten = |seg: &Segment, points: &mut Vec<[f64; 3]>| {
|
||||
let steps = if matches!(seg, Segment::Cubic(..)) { 12 } else { 1 };
|
||||
let steps = if matches!(seg, Segment::Cubic(..)) {
|
||||
12
|
||||
} else {
|
||||
1
|
||||
};
|
||||
for k in 1..=steps {
|
||||
points.push(world(bezier(seg, k as f64 / steps as f64)));
|
||||
}
|
||||
@@ -757,14 +820,20 @@ pub fn underlay_snap_geometry(
|
||||
flatten(seg, &mut points);
|
||||
}
|
||||
total += points.len();
|
||||
out.push(SnapPiece { points, circle: Some((world(c), r * u.x_scale.abs())) });
|
||||
out.push(SnapPiece {
|
||||
points,
|
||||
circle: Some((world(c), r * u.x_scale.abs())),
|
||||
});
|
||||
continue;
|
||||
}
|
||||
for seg in &sp.segments {
|
||||
let mut points = vec![world(seg.start())];
|
||||
flatten(seg, &mut points);
|
||||
total += points.len();
|
||||
out.push(SnapPiece { points, circle: None });
|
||||
out.push(SnapPiece {
|
||||
points,
|
||||
circle: None,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user