forked from 1b-agent/opencadstudio-upstream
feat: embed images (OLE2FRAME), print pipeline fixes, plot prefs, community fonts
- IMAGEEMBED: pack raster images into OLE2FRAME entities so a .dwg is self-contained; 'Embed Image' entry in the XREF attach menu; control/MCP op embed_image for external tools; dxf_name for OLE2FRAME queries. - Scene: populate_images_from_document now rebuilds OLE2FRAME and PDF underlay models too (they used to vanish after any XREF op). - Printing: add PRINTER_ENUM_NETWORK pass when listing printers; GDI spooler fallback (hayro raster at 300 DPI + StretchDIBits) for hosts whose PDF handler registers no print verb; DEVMODE orientation with a 90-degree raster rotation fallback for v4 drivers; fix the fit-scale precedence bug that printed blank pages. - PDF export dialogs on Windows use the async file dialog so the native overwrite confirmation no longer deadlocks the UI thread. - Plot dialog: persist the chosen printer (saved on selection) and the picked plot window across sessions; page setups with no device no longer reset the output device. - Community fonts: detect unresolvable .shx references on open and offer a download from the repository's fonts/ folder (contribution guide in fonts/README.md); custom font source URL setting for intranet font servers; downloaded fonts resolve from the per-user fonts directory.
This commit is contained in:
1 parent
1450fdeedf
commit
28efbffd57
27 files changed
+1767
-66
No files matched your search
@@ -143,6 +143,7 @@ pub fn dxf_name(e: &EntityType) -> &'static str {
|
||||
EntityType::MLine(_) => "MLINE",
|
||||
EntityType::RasterImage(_) => "RASTERIMAGE",
|
||||
EntityType::Wipeout(_) => "WIPEOUT",
|
||||
EntityType::Ole2Frame(_) => "OLE2FRAME",
|
||||
EntityType::Underlay(_) => "UNDERLAY",
|
||||
EntityType::AttributeDefinition(_) => "ATTDEF",
|
||||
EntityType::AttributeEntity(_) => "ATTRIB",
|
||||
|
||||
@@ -39,6 +39,12 @@ pub fn resolve_text_style(style_name: &str, document: &CadDocument) -> ResolvedT
|
||||
.map(std::path::Path::new)
|
||||
.and_then(|p| p.parent());
|
||||
crate::io::resolve_image_file(file, base)
|
||||
// Fonts fetched from the community repository live in
|
||||
// the per-user fonts folder — search it last.
|
||||
.or_else(|| {
|
||||
crate::io::font_repo::local_font_file(file)
|
||||
.map(|path| path.to_string_lossy().into_owned())
|
||||
})
|
||||
})
|
||||
.flatten();
|
||||
if let Some(p) = shx_path {
|
||||
|
||||
Reference in new issue
Block a user