Commit Graph
4844 Commits
Author SHA1 Message Date
aiongg 703efef6cc refactor(export): split lib.rs into layout, as_html, as_docx, as_rtf
New modules: layout.rs (data types and layout analysis), as_html.rs, as_docx.rs, as_rtf.rs.
2026-10-26 22:18:50 +00:00
aiongg cc9b5057bf refactor(redact): split interp.rs into interp/
New modules: interp/layers.rs (hidden-layer handling), interp/prune.rs (resource pruning and unlinking).
2026-10-26 22:18:50 +00:00
aiongg e4abf5b5dc refactor(engine): split lib.rs's helpers into doc_state.rs and clock.rs
New modules: clock (local_utc_offset, parse_ymd), doc_state (ImageEdit, merge_data_files, SplitPart, DocId, LOW_RESOLUTION_PRINT_DPI, render_threads, RecoverySnapshot, renderer_password, writable, guard, signatures_of, OptimizeReport).
2026-10-26 22:18:50 +00:00
aiongg 6dcd93ab1d refactor(engine): move the re-exports from reexports.rs into lib.rs 2026-10-26 22:18:50 +00:00
aiongg 09d75f7757 refactor(ui-egui): split combine_ui.rs into combine_ui/
New modules: files, view, table, parts, session, actions (tests.rs moved in the previous commit).
2026-10-26 22:18:50 +00:00
aiongg d558972e78 refactor(ui-egui): move combine_ui tests to combine_ui/tests.rs 2026-10-26 22:18:50 +00:00
aiongg 58c5799e3f refactor(organize): split import.rs into import/
New modules: import/copy.rs, import/fields.rs, import/combine.rs, import/carry.rs.
2026-10-26 22:18:50 +00:00
aiongg 6ab1820bae refactor(xfdf): split lib.rs into common, xfdf, fdf
New modules: common.rs, xfdf.rs, fdf.rs.
2026-10-26 22:18:50 +00:00
aiongg 0bcf83d474 refactor(forms): split af.rs into af/
New modules: af/script.rs, af/calc.rs, af/format.rs.
2026-10-26 22:18:50 +00:00
aiongg 22c85d3679 refactor(forms): split author.rs into author/
New modules: author/tree.rs, author/look.rs, author/edit.rs, author/lifecycle.rs.
2026-10-26 22:18:50 +00:00
aiongg 4362d705e6 refactor(forms): split lib.rs into read, tab_order, values, appearances
New modules: read.rs, tab_order.rs, values.rs, appearances.rs.
2026-10-26 22:18:50 +00:00
aiongg 676b30d83c refactor(ui-egui): split sign_ui.rs into sign_ui/
New modules: dialog, panel.
2026-10-26 22:18:50 +00:00
aiongg ce5d36e470 refactor(ui-egui): split prepare.rs into prepare/
New modules: draft, properties, tabs.
2026-10-26 22:18:50 +00:00
aiongg eb69f95efe test(ui-egui): list edit_text_ui/image.rs among the page modules 2026-10-26 22:18:50 +00:00
aiongg c83a42144a refactor(ui-egui): split edit_text_ui.rs into edit_text_ui/
New modules: background, layout, image.
2026-10-26 21:17:18 +00:00
aiongg 36917232ba refactor(cos): split document.rs into document/
New modules: state, xref, open, objects, reader.
2026-10-26 21:17:18 +00:00
aiongg 61c9164037 refactor(ui-egui): split control.rs into control/
New modules: plugin, requests, screenshot, pending, host, transport (non-wasm).
transport_tests and screenshot_geometry_tests move with their code;
lifecycle_tests and pointer_tests stay.
2026-10-26 21:17:18 +00:00
aiongg 7cf7d1338b test(ui-egui): point the page-pointer source scan at canvas/*.rs 2026-10-26 21:17:18 +00:00
aiongg 41a525eee3 refactor(ui-egui): split canvas.rs into canvas/
New modules: find, selection, cache, zoom, navigation, xform, organize, bars, area.
fn document_area stays in canvas.rs this round.
2026-10-26 21:17:18 +00:00
aiongg d69b566db6 refactor(ui-egui): split app.rs into app/
New modules: app/files, links, input, keys, clipboard, window, prefs, commands, control, frame (frame holds panel_migration_tests).
2026-10-26 21:17:18 +00:00
aiongg 5e61134225 refactor(ui-egui): split lib.rs into app.rs, state.rs and hooks.rs
New modules: app (construction, queries, eframe::App, and every impl PdfCraftApp group, split further next), state (UI state types, OpenRequest, OpenOutcome, GridFile, CopyPage, DocumentCopyJob), hooks (host-hook types). PendingOpen, GridDrop and DocumentCopy stay in lib.rs as app struct field types.
2026-10-26 21:14:39 +00:00
vangel76andClaude Sonnet 5.5 929d350f1d perf(cos): write hex strings, integers and references without the formatter
serialize wrote every byte of a hex string, every integer and every object
number through write!. A table lookup and a small digit loop give the same
bytes in a fraction of the instructions. The octal escape in literal strings
and the #xx escape in names use the same helpers.

Fixes #4870

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 22:00:43 +01:00
vangel76andClaude Sonnet 5.5 a7baf8a2af perf(cos): write_full keeps the objects it parsed while numbering
write_full parsed each object once to number it and again, after the
128-object reader cache had dropped it, to write it. Keep the parsed object
from the traversal and write that, within a budget of 64 MiB of owned bytes
and 2M tree nodes; past it the object is read again as before, which keeps
the memory bound and the "read differently while saving" check.

Fixes #4869

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 21:59:12 +01:00
vangel76andClaude Sonnet 5.5 be8345aa3f perf(cos): rebuild a damaged cross-reference index without parsing every object
Reconstruct parsed every object to see whether it is an object stream, and
searched each object's next 1,024 bytes and the whole file byte by byte.

Only objects whose dictionary holds ObjStm or a # (a name can hide letters as
#xx) are now parsed for that check. Every /XRef position is found once, and
find() scans for the needle's rarest byte in 32-byte blocks. The index, trailer
and repair log are unchanged.

Fixes #4868

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 21:57:29 +01:00
vangel76andClaude Sonnet 5.5 fe03703a3b perf(cos): keep a running total of the scan reader's cache size
ObjectReader::try_get measured every parsed object in its cache (up to 128)
after each read to check the byte budget. Keep a running total instead and
measure the whole cache only when something other than one freshly parsed
object changed it. Eviction timing is unchanged, so output is identical.

Fixes #4867

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-26 21:55:16 +01:00
aiongg e2b30ba7b5 docs: name i18n.rs and demo_pdf.rs after the mod.rs moves 2026-10-26 20:51:19 +00:00
aiongg b1a09ee08d docs(parity): point evidence at the tests' new files 2026-10-26 20:51:19 +00:00
aiongg da51747654 test(ui-egui): skip test files in the page pointer scan 2026-10-26 20:51:19 +00:00
aiongg d39b6629c8 test(pdfcraft): cut main.rs at the moved test module's declaration 2026-10-26 20:51:19 +00:00
aiongg bc69802ed9 refactor(ui-egui): move control.rs's lifecycle tests to control/lifecycle_tests.rs 2026-10-26 20:51:19 +00:00
aiongg 0457352c23 refactor(engine): move signature_scan.rs's tests to signature_scan/tests.rs 2026-10-26 20:51:19 +00:00
aiongg f281f0f18d refactor(ui-egui): move theme.rs's tests to theme/tests.rs 2026-10-26 20:51:19 +00:00
aiongg 0dc3d45f77 refactor(ui-egui): move page_pointer.rs's tests to page_pointer/tests.rs 2026-10-26 20:51:19 +00:00
aiongg b1761d5bbf refactor(engine): move links.rs's tests to links/tests.rs 2026-10-26 20:51:19 +00:00
aiongg 52f15202ef refactor(ui-egui): move bidi.rs's tests to bidi/tests.rs 2026-10-26 20:51:19 +00:00
aiongg 4739740804 refactor(ui-egui): move combine_grid.rs's tests to combine_grid/tests.rs 2026-10-26 20:51:19 +00:00
aiongg 7d54ae2be3 refactor(ui-egui): move motion.rs's tests to motion/tests.rs 2026-10-26 20:51:19 +00:00
aiongg 0ead57f2b5 refactor(ui-egui): move comments.rs's tests to comments/tests.rs 2026-10-26 20:51:19 +00:00
aiongg f700dc3f2e refactor(export): move pptx.rs's tests to pptx/tests.rs 2026-10-26 20:51:19 +00:00
aiongg 37fa7dca86 refactor(platform): move staging.rs's tests to staging/tests.rs 2026-10-26 20:51:19 +00:00
aiongg d823fbd77a refactor(forms): move af.rs's tests to af/tests.rs 2026-10-26 20:51:19 +00:00
aiongg 701988ecd6 refactor(automation): move lib.rs's tests to tests.rs 2026-10-26 20:51:19 +00:00
aiongg 9d6ae81f0e refactor(ui-egui): move editing.rs's tests to editing/tests.rs 2026-10-26 20:51:19 +00:00
aiongg 801729ed19 refactor(pdfcraft): move main.rs's tests to tests.rs 2026-10-26 20:51:19 +00:00
aiongg e0033d3989 refactor(export): move lib.rs's tests to tests.rs 2026-10-26 20:51:19 +00:00
aiongg 79d72038f1 refactor(fonts): move pdf.rs's tests to pdf/tests.rs 2026-10-26 20:51:19 +00:00
aiongg 6d8c0bb8dd refactor(ui-egui): move i18n.rs's tests to i18n/tests.rs 2026-10-26 20:51:19 +00:00
aiongg 38e95285d3 refactor(cos): move document.rs's tests to document/tests.rs 2026-10-26 20:51:19 +00:00
aiongg a892922237 refactor(render): move text.rs's tests to text/tests.rs 2026-10-26 20:51:19 +00:00
aiongg 401397d2be refactor(ui-egui): move canvas.rs's tests to canvas/tests.rs 2026-10-26 20:51:19 +00:00