forked from 1b-agent/opencadstudio-upstream
ocs_doc_api: dissolve src/app/doc_api_convert.rs shim into direct crate usage
Delete the thin re-export file; src/app/doc_api.rs now uses ocs_doc_api::convert directly (use ocs_doc_api::convert + convert::* call sites). Remove the mod doc_api_convert registration from src/app/mod.rs. The conversion logic already lives in the crate (src/convert.rs) from the prior move; the shim was redundant. 623 host lib + 38 doc_api tests green.
This commit is contained in:
1 parent
d746d635fb
commit
f79c8c59bb
3 files changed
+10
-20
No files matched your search
+10
-9
@@ -13,6 +13,7 @@ use ocs_doc_api::{
|
|||||||
|
|
||||||
use crate::scene::convert::acis_export;
|
use crate::scene::convert::acis_export;
|
||||||
use crate::scene::model::solid_model;
|
use crate::scene::model::solid_model;
|
||||||
|
use ocs_doc_api::convert;
|
||||||
|
|
||||||
use super::plugin_host::HostSession;
|
use super::plugin_host::HostSession;
|
||||||
|
|
||||||
@@ -123,7 +124,7 @@ impl DocApiBackend for HostSession<'_> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn add_curve(&mut self, spec: &Curve2Spec) -> ApiResult<ObjectId> {
|
fn add_curve(&mut self, spec: &Curve2Spec) -> ApiResult<ObjectId> {
|
||||||
let entity = crate::app::doc_api_convert::curve_spec_to_entity(spec)?;
|
let entity = convert::curve_spec_to_entity(spec)?;
|
||||||
let handle = self.scene_mut().add_entity(entity);
|
let handle = self.scene_mut().add_entity(entity);
|
||||||
Ok(handle_to_obj(handle))
|
Ok(handle_to_obj(handle))
|
||||||
}
|
}
|
||||||
@@ -398,8 +399,8 @@ impl DocApiBackend for HostSession<'_> {
|
|||||||
for h in &br.entity_handles {
|
for h in &br.entity_handles {
|
||||||
let id = handle_to_obj(*h);
|
let id = handle_to_obj(*h);
|
||||||
let (kind, bounds) = match self.document().get_entity(*h) {
|
let (kind, bounds) = match self.document().get_entity(*h) {
|
||||||
Some(e) => (crate::app::doc_api_convert::entity_kind_name(e).to_string(),
|
Some(e) => (convert::entity_kind_name(e).to_string(),
|
||||||
crate::app::doc_api_convert::entity_bounds(Some(e), id).ok()),
|
convert::entity_bounds(Some(e), id).ok()),
|
||||||
None => ("Missing".to_string(), None),
|
None => ("Missing".to_string(), None),
|
||||||
};
|
};
|
||||||
out.push(EntityView { id, kind, bounds });
|
out.push(EntityView { id, kind, bounds });
|
||||||
@@ -559,7 +560,7 @@ impl DocApiBackend for HostSession<'_> {
|
|||||||
.ok_or(ApiError::UnknownId(id))?;
|
.ok_or(ApiError::UnknownId(id))?;
|
||||||
Ok(EntityView {
|
Ok(EntityView {
|
||||||
id,
|
id,
|
||||||
kind: crate::app::doc_api_convert::entity_kind_name(entity).to_string(),
|
kind: convert::entity_kind_name(entity).to_string(),
|
||||||
bounds: self.bounds(id).ok(),
|
bounds: self.bounds(id).ok(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@@ -583,7 +584,7 @@ impl DocApiBackend for HostSession<'_> {
|
|||||||
.get_entity(handle)
|
.get_entity(handle)
|
||||||
.cloned()
|
.cloned()
|
||||||
.ok_or(ApiError::UnknownId(id))?;
|
.ok_or(ApiError::UnknownId(id))?;
|
||||||
let moved = crate::app::doc_api_convert::transform_entity_geometry(&entity, placement)?;
|
let moved = convert::transform_entity_geometry(&entity, placement)?;
|
||||||
if !self.scene_mut().update_entity(moved) {
|
if !self.scene_mut().update_entity(moved) {
|
||||||
return Err(ApiError::Unsupported(format!("entity {id:?} is on a locked layer")));
|
return Err(ApiError::Unsupported(format!("entity {id:?} is on a locked layer")));
|
||||||
}
|
}
|
||||||
@@ -596,7 +597,7 @@ impl DocApiBackend for HostSession<'_> {
|
|||||||
.document()
|
.document()
|
||||||
.get_entity(obj_to_handle(id))
|
.get_entity(obj_to_handle(id))
|
||||||
.ok_or(ApiError::UnknownId(id))?;
|
.ok_or(ApiError::UnknownId(id))?;
|
||||||
crate::app::doc_api_convert::entity_to_profile_curves(entity)
|
convert::entity_to_profile_curves(entity)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn bounds(&mut self, id: ObjectId) -> ApiResult<Aabb> {
|
fn bounds(&mut self, id: ObjectId) -> ApiResult<Aabb> {
|
||||||
@@ -611,7 +612,7 @@ impl DocApiBackend for HostSession<'_> {
|
|||||||
};
|
};
|
||||||
return self.with_body(id, &mut f);
|
return self.with_body(id, &mut f);
|
||||||
}
|
}
|
||||||
crate::app::doc_api_convert::entity_bounds(self.document().get_entity(handle), id)
|
convert::entity_bounds(self.document().get_entity(handle), id)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn centroid(&mut self, id: ObjectId) -> ApiResult<[f64; 3]> {
|
fn centroid(&mut self, id: ObjectId) -> ApiResult<[f64; 3]> {
|
||||||
@@ -1219,7 +1220,7 @@ mod tests {
|
|||||||
// Negative (CW) bulge: the center must be on the CW side (mirror of CCW).
|
// Negative (CW) bulge: the center must be on the CW side (mirror of CCW).
|
||||||
// A single 90° bulge segment start=(0,0), end=(1,0), bulge=-0.4142 (~90° CW):
|
// A single 90° bulge segment start=(0,0), end=(1,0), bulge=-0.4142 (~90° CW):
|
||||||
// correct center is BELOW the chord; the buggy double-sign put it above.
|
// correct center is BELOW the chord; the buggy double-sign put it above.
|
||||||
let neg = crate::app::doc_api_convert::bulge_arc_segment([0.0, 0.0], [1.0, 0.0], -0.4142)
|
let neg = convert::bulge_arc_segment([0.0, 0.0], [1.0, 0.0], -0.4142)
|
||||||
.expect("negative bulge arc");
|
.expect("negative bulge arc");
|
||||||
if let cadkernel::geom2d::Curve::Arc(arc) = &neg {
|
if let cadkernel::geom2d::Curve::Arc(arc) = &neg {
|
||||||
// 90° arc, chord 1: radius = 0.5/sin(45°) ≈ 0.7071; center y must be negative.
|
// 90° arc, chord 1: radius = 0.5/sin(45°) ≈ 0.7071; center y must be negative.
|
||||||
@@ -1229,7 +1230,7 @@ mod tests {
|
|||||||
panic!("expected an arc for negative bulge");
|
panic!("expected an arc for negative bulge");
|
||||||
}
|
}
|
||||||
// And the CCW mirror: center above.
|
// And the CCW mirror: center above.
|
||||||
let pos = crate::app::doc_api_convert::bulge_arc_segment([0.0, 0.0], [1.0, 0.0], 0.4142)
|
let pos = convert::bulge_arc_segment([0.0, 0.0], [1.0, 0.0], 0.4142)
|
||||||
.expect("positive bulge arc");
|
.expect("positive bulge arc");
|
||||||
if let cadkernel::geom2d::Curve::Arc(arc) = &pos {
|
if let cadkernel::geom2d::Curve::Arc(arc) = &pos {
|
||||||
assert!(arc.centre[1] > 0.0, "CCW arc center y must be above the chord, got {:?}", arc.centre);
|
assert!(arc.centre[1] > 0.0, "CCW arc center y must be above the chord, got {:?}", arc.centre);
|
||||||
|
|||||||
@@ -1,9 +0,0 @@
|
|||||||
// DocApi v2 entity conversions now live in the crate (`ocs_doc_api::convert`),
|
|
||||||
// moved out of the host to minimize /src surface (the conversion logic is
|
|
||||||
// host-independent: acadrust + crate DTOs only). Re-exported here so existing
|
|
||||||
// `crate::app::doc_api_convert::*` paths keep working unchanged.
|
|
||||||
#[allow(unused_imports)] // re-export for tests + downstream; non-test build may not use all of it
|
|
||||||
pub use ocs_doc_api::convert::{
|
|
||||||
bulge_arc_segment, curve_spec_to_entity, entity_bounds, entity_kind_name,
|
|
||||||
entity_to_profile_curves, transform_entity_geometry,
|
|
||||||
};
|
|
||||||
@@ -13,8 +13,6 @@ pub(crate) mod helpers;
|
|||||||
mod history;
|
mod history;
|
||||||
#[cfg(not(target_arch = "wasm32"))]
|
#[cfg(not(target_arch = "wasm32"))]
|
||||||
mod doc_api;
|
mod doc_api;
|
||||||
#[cfg(not(target_arch = "wasm32"))]
|
|
||||||
mod doc_api_convert;
|
|
||||||
mod layers;
|
mod layers;
|
||||||
mod model_ops;
|
mod model_ops;
|
||||||
mod mtext_editor;
|
mod mtext_editor;
|
||||||
|
|||||||
Reference in new issue
Block a user