Documentmodus: een afbeelding staat wel in de uitvoer, maar nergens op het scherm #1605
Labels
No labels
accepted
bug
declined
docs
duplicate
enhancement
good first issue
in-progress
needs-info
privacy
security
triage
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
LibreKAT/Ocideck#1605
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Wat er gebeurt
Een document schrijf je met de gewone Markdown-afbeelding,
. De uitvoer tekent hem: de HTML-export schrijft de verwijzing om naar een ingesloten afbeelding (marp_html_service_images.dart:320) en de documentstijl draagt er zelfs een regel voor (.document img{max-width:100%}), dus in de HTML en de PDF die je daaruit drukt staat je afbeelding.Op het scherm staat hij nergens:
DocumentMarkdownViewkent geen afbeeldingsblok;komt eruit als de losse tekst!Een altmet een link eronder. Nagemeten: nulImage-widgets, en de tekstlaag levert letterlijk['Tekst.', '!Een alt-tekst'].PagedDocumentViewrendert via dezelfdeDocumentMarkdownView.UnimplementedError: Embeddable type "image" is not supported). Het merkteken zegt dát er een afbeelding staat, niet welke.Waarom dat erg is
De documentmodus belooft dat je ziet wat je krijgt — dat is de hele reden dat er een visuele stand en een Pagina's-weergave zijn. Voor afbeeldingen klopt dat nu niet: je schrijft blind, je ziet pas bij het exporteren of het plaatje er goed uit komt, en de paginering in Pagina's rekent met een regel tekst waar in de uitvoer een afbeelding van een paar centimeter staat. Dat laatste maakt de pagina-einden op het scherm aantoonbaar onjuist zodra er een afbeelding in het document zit.
Bovendien staat de aanwijzing er wél in de gebruikersgids (§ Afbeeldingen in een document), als beperking. Een beperking die je moet uitleggen is meestal een gat.
Wat er zou moeten gebeuren
De documentlezer tekent de afbeelding, en het schrijfvlak toont hetzelfde — één renderwereld, net als bij tabellen en de tijdlijn.
Het echte werk zit niet in het tekenen maar in het oplossen van het pad. Een documentpad kan
mem:zijn (geïmporteerd of uit een remote deck),asset:(gebundeld) of relatief aan de map van het document. Dat uitzoeken hoort bijImageService, en die heeft de map van het bestand nodig — precies watDocumentMarkdownViewenWysiwygNotesFieldvandaag niet krijgen. Zonder die context zou de lezer een pad raden, en dat is erger dan niets tekenen.Voorstel voor de vorm:
ImageService) die de lezer en het schrijfvlak allebei bereiken, zoalsDocumentStyleScopedat voor het stijlprofiel doet.document_markdown_blocks.dartdat begrensd decodeert (image_limits.dartbestaat al) — een document met twintig foto's mag het geheugen niet opeten.ImageEmbedBuildertekent dezelfde afbeelding in plaats van het merkteken, en valt op het merkteken terug als het pad niet oplost. Een ontbrekend bestand hoort zichtbaar te zijn, niet leeg.mem:(viaWebAssetStore); die grens hoort in de gids te staan in plaats van als raadsel.Raakvlak
lib/widgets/reader/document_markdown_view.dart,lib/widgets/reader/parts/document_markdown_blocks.dart,lib/widgets/reader/paged_document_view.dart,lib/widgets/markdown_editor/image_embed_builder.dart,lib/services/image_service.dart,lib/utils/image_limits.dart. De opslagkant van het pad (x-embed-imagedraagt de markdown byte-getrouw) is met #1604 al geregeld; dit issue gaat alleen over het tónen.Herkomst
Gevonden bij #1604, waar een afbeelding in een document het schrijfvlak liet omvallen. Die crash en het stille verlies van de alt-tekst zijn daar opgelost; dit is het gat dat eronder zichtbaar werd.