mirror of
https://github.com/storytold/vectorcraft.git
synced 2026-10-30 12:47:13 -06:00
209 lines
6.6 KiB
Rust
209 lines
6.6 KiB
Rust
//! Document file I/O for every frontend (desktop, web, CLI, control channel, headless MCP): open,
|
|
//! save, export and serialize by path or bytes (base64), the format table, `command.batch` and
|
|
//! `action.batch` (the Actions panel menu's Batch…).
|
|
//!
|
|
//! - `load`: `document.open` (native, legacy, SVG/SVGZ, PDF/.ai/.ait, DXF, raster images).
|
|
//! - `action_batch`: play an action on every file in a folder or every data set.
|
|
//! - `encode`: one encoder per writable format, with typed options parsed from the params.
|
|
//! - `svg`: the SVG Options (styling, fonts, images, object ids, artboards…).
|
|
//! - `export`: `document.export` / `serialize` / `exportSelection` / `exportForOffice`.
|
|
//! - `screens`: Export for Screens (`document.exportForScreens`, `document.exportSettings`); `zip`
|
|
//! packs its files as one download, and reads the files of Word documents placed as type.
|
|
//! - `save`: `document.save`, Save As / a Copy / as Template, New from Template, Revert and the
|
|
//! per-format options (`file.formatOptions`); [`save_with`] is the one save path of every frontend.
|
|
//! - `pdf`: PDF settings and presets for every PDF export, `document.exportPdf`.
|
|
//! - `pdfimport`: the PDF pages, box and password `document.open` and Place read, `document.pdfInfo`.
|
|
//! - `dxf`: DXF export options, `document.exportDxf`, and the formats that can't be written (DWG, PICT).
|
|
//! - `eps`: EPS export options (flattened transparency, previews, the embedded document), `document.exportEps`.
|
|
//! - `dxfimport`: the DXF options `document.open` and Place read, `document.dxfInfo`.
|
|
//! - `metafile`: EMF and WMF export, open and place.
|
|
//!
|
|
//! [`FORMATS`] is the single list of formats (append-only); open dialogs use [`open_filters`],
|
|
//! agents query `document.formats`.
|
|
|
|
mod action_batch;
|
|
mod affinity;
|
|
mod batch;
|
|
pub mod dxf;
|
|
pub mod dxfimport;
|
|
mod encode;
|
|
pub mod eps;
|
|
mod export;
|
|
pub(crate) mod imagemap;
|
|
mod legacy_ai;
|
|
mod load;
|
|
pub(crate) use load::{MAX_RASTER_ALLOC, size_note};
|
|
mod metafile;
|
|
mod naming;
|
|
mod native;
|
|
pub mod pdf;
|
|
mod pdfimport;
|
|
pub mod pngtext;
|
|
pub mod ppi;
|
|
pub mod progress;
|
|
pub mod psdread;
|
|
mod save;
|
|
mod screens;
|
|
mod svg;
|
|
mod text;
|
|
mod tgaread;
|
|
pub mod zip;
|
|
|
|
use serde_json::{Value, json};
|
|
|
|
pub use dxf::{UNSUPPORTED, Unsupported, unsupported};
|
|
pub use encode::{ARTBOARD_PARAMS, ArtboardPick, Encoded, encode, encode_all, encode_with_warnings};
|
|
pub(crate) use encode::{anti_alias, background, with_single_artboard};
|
|
pub use export::export_source;
|
|
pub(crate) use export::{export_crop, isolated};
|
|
pub(crate) use load::check_not_lossy_overwrite;
|
|
use load::err;
|
|
pub(crate) use load::import_svg;
|
|
pub(crate) use load::is_placeholder;
|
|
pub(crate) use load::native_file;
|
|
pub(crate) use load::page_or_editing_data;
|
|
pub(crate) use load::source;
|
|
pub use load::{
|
|
Loaded, RasterImage, ReadFile, detect, file_name, load, load_with, open_bytes, open_bytes_with, open_read, open_template, raster_image,
|
|
read_for_open, texture_image,
|
|
};
|
|
pub use load::{losses_summary, overwrite_losses};
|
|
pub use naming::{NameParts as FileNameParts, parse_date as parse_file_date, render as render_file_name};
|
|
pub(crate) use native::preview_png;
|
|
pub use native::with_compression_pref;
|
|
pub use pdfimport::{LoadOptions, page_document};
|
|
pub(crate) use save::job_for;
|
|
pub use save::{
|
|
SAVE_FORMATS, SaveJob, SaveMode, SavePlan, StreamWrite, TEMPLATE_FORMATS, dialog_folder, export_folder, reads_option as save_reads_option,
|
|
remembered_save_options, save_filters, save_format, save_job, save_plan, save_with, stamp_save_dates, template_filters, templates_dialog_folder,
|
|
templates_folder,
|
|
};
|
|
pub use screens::{
|
|
PRESET_KEYS as SCREEN_EXPORT_PRESET_KEYS, PRESETS as SCREEN_PRESETS, ScreenExport, ScreenExportPreset, ScreenSize,
|
|
builtin_presets as screen_export_builtin_presets, first_file as screen_first_file, preset_rows as screen_preset_rows,
|
|
};
|
|
pub(crate) use screens::{
|
|
SHARED_KEYS as SCREEN_SETTINGS_KEYS, check_settings as check_screen_settings, export as export_screens, safe_file_name,
|
|
store_settings as store_screen_settings,
|
|
};
|
|
pub use svg::options_map as svg_options;
|
|
/// Atomic file writes (a temporary file renamed over the target: a failed write never damages the
|
|
/// file it replaces), for the apps' own writers too.
|
|
#[cfg(not(target_arch = "wasm32"))]
|
|
pub use vectorcraft_format::write_atomic;
|
|
|
|
use super::{CommandSpec, Result, Session, always, bad, cmd, has_doc, has_selection};
|
|
use crate::EngineError;
|
|
|
|
mod access;
|
|
mod commands;
|
|
mod export_names;
|
|
mod formats;
|
|
|
|
#[cfg(not(target_arch = "wasm32"))]
|
|
use access::list_dir;
|
|
pub use access::write_file_with;
|
|
#[cfg(not(target_arch = "wasm32"))]
|
|
pub(crate) use access::{Placed, copy_new, file_metadata};
|
|
pub(crate) use access::{absolute_path, create_dir, document_path, file_created, file_stamp, read_file, read_file_head, write_file, write_new_file};
|
|
#[cfg(all(test, windows))]
|
|
pub(crate) use access::{document_path_on, document_path_with};
|
|
#[cfg(test)]
|
|
pub(crate) use access::{drive_share_of, share_of};
|
|
#[cfg(test)]
|
|
pub(crate) use access::{drive_share_path, share_path, touched};
|
|
#[cfg(not(target_arch = "wasm32"))]
|
|
use access::{may_read, may_write};
|
|
pub use commands::specs;
|
|
pub use export_names::artboard_file_names;
|
|
pub(crate) use export_names::{default_name, merge, unique_file_names, with_black_output, write_or_return};
|
|
use export_names::{distinct_names, write_encoded};
|
|
use formats::{ARTBOARD, ARTBOARDS, RANGE, USE_ARTBOARDS, writable};
|
|
pub use formats::{
|
|
DOCX_EXTS, FORMATS, Format, FormatOption, OPEN_EXTS, PLACE_EXTS, RTF_EXTS, TEXT_EXTS, UNASSOCIATED_EXTS, export_extensions, extension, file_stem,
|
|
format, format_for_name, has_own_title, library_open_filters, open_filters, place_filters, plugin_formats, titled_for_export, writable_format,
|
|
};
|
|
|
|
#[cfg(test)]
|
|
mod tests;
|
|
#[cfg(test)]
|
|
mod tests_affinity;
|
|
#[cfg(test)]
|
|
mod tests_pdf;
|
|
#[cfg(test)]
|
|
mod tests_pdfcolor;
|
|
#[cfg(test)]
|
|
mod tests_pdfedit;
|
|
#[cfg(test)]
|
|
mod tests_pdffidelity;
|
|
#[cfg(test)]
|
|
mod tests_pdfimport;
|
|
#[cfg(test)]
|
|
mod tests_svg;
|
|
#[cfg(test)]
|
|
mod tests_svgedit;
|
|
|
|
#[cfg(test)]
|
|
mod tests_raster;
|
|
|
|
#[cfg(test)]
|
|
mod tests_exportas;
|
|
|
|
#[cfg(test)]
|
|
mod tests_jpeg;
|
|
|
|
#[cfg(test)]
|
|
mod tests_palette;
|
|
|
|
#[cfg(test)]
|
|
mod tests_batch;
|
|
#[cfg(test)]
|
|
mod tests_screens;
|
|
#[cfg(test)]
|
|
mod tests_text;
|
|
|
|
#[cfg(test)]
|
|
mod tests_dxf;
|
|
|
|
#[cfg(test)]
|
|
mod tests_pdfsecurity;
|
|
#[cfg(test)]
|
|
mod tests_svgenc;
|
|
#[cfg(test)]
|
|
mod tests_svgimport;
|
|
|
|
#[cfg(test)]
|
|
mod tests_eps;
|
|
|
|
#[cfg(test)]
|
|
mod tests_dxfimport;
|
|
#[cfg(test)]
|
|
mod tests_metafile;
|
|
|
|
#[cfg(test)]
|
|
mod tests_pdfoutput;
|
|
#[cfg(test)]
|
|
mod tests_tiffbmp;
|
|
|
|
#[cfg(test)]
|
|
mod tests_pdfx;
|
|
#[cfg(test)]
|
|
mod tests_psd;
|
|
#[cfg(test)]
|
|
mod tests_psdread;
|
|
|
|
#[cfg(test)]
|
|
mod tests_epsimport;
|
|
|
|
#[cfg(test)]
|
|
mod tests_aiimport;
|
|
|
|
#[cfg(test)]
|
|
mod tests_pdflayers;
|
|
|
|
#[cfg(test)]
|
|
mod tests_pdfwebview;
|
|
|
|
#[cfg(test)]
|
|
mod tests_pdf13;
|