mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-10-24 10:08:00 -06:00
* M4: the Bookmarks panel shows each bookmark's colour and style (#3193) ISO 32000-2 §12.3.3: an outline item's /C is "An array of three numbers in the range 0.0 to 1.0, representing the components in the DeviceRGB colour space of the colour that shall be used for the outline entry's text" (Table 151), and its /F flags say italic (bit 1) and bold (bit 2) (Table 152). Both were ignored: every title was drawn in the theme's text colour and face. The inspector (OutlineItem) and the bookmark list (organize::Bookmark, used once a document is edited) now read them: each component is kept within 0-1, and black (the default) or a /C that isn't three numbers reads as no colour. The panel draws bold titles in the semibold face, italic ones slanted, and the colour as given, lightened towards the text colour only as far as it needs to read on the panel (3:1), so dark blue stays visible in the dark theme. bookmark_list reports color, bold and italic where they differ from the defaults. Mutants, each failing a test: italic or bold bit ignored (both readers, the panel), black kept as a colour, no clamping, a four-number /C accepted, colour ignored or truncated in the panel, the contrast floor removed, always jumping to the text colour. Checks for non-finite numbers were equivalent (clamping already covers any size), so they are gone. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * M4: set a bookmark's style and colour from its menu or bookmark_set_style (#3193) #3193 asks for a way to mark bookmarks by colour, for example chapters that are rarely used. ISO 32000-2 §12.3.3 gives every outline item a title colour (/C, Table 151, DeviceRGB, default black) and style flags (/F, Table 152: bit 1 italic, bit 2 bold, default 0); the previous commit shows them, and this one lets the user change them. - organize: set_bookmark_color writes /C, removing it for black (the default) and refusing a component outside 0-1; set_bookmark_style sets or clears the bold and italic bits, keeps any bit the table doesn't define, and removes /F when no bit is left. - engine: SetBookmarkColor and SetBookmarkStyle edits, undoable, under the same assemble permission as the other bookmark edits. Their undo labels are the menus' own names, already translated in every catalogue. - ui-egui: the bookmark menu gains Style (Bold and Italic check boxes) and Colour (the comment swatch grid, with Other colour...). Only existing UI strings are used. - automation: bookmark_set_style takes any of color ([r, g, b], 0-1), bold and italic, and changes only what it is given. Mutants, each failing a test: no range check (library and tool), black kept as /C, a bit not set, a bit not cleared, an untouched bit cleared, /F 0 written, the bits swapped (library and menu), the tool accepting nothing to change or ignoring bold/italic, the menu's colour ignored. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * M4: a colour and a style set in one bookmark_set_style call are one undo step (#3193) Review on #4171 (CodeRabbit). Given both, the tool applied two edits, so undo took back only the style and left the colour, and a failing second edit left the first applied. They now go in one Edit::Batch named "Style", all or nothing. "Colour" and "Style" join EDIT_LABELS, and "Style" BATCH_LABELS, so the history can translate them. The test sets colour and style together and undoes once; with the two edits applied separately it fails. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>