Next Magazine
18. 6. 2026

Abyste si nemysleli, že se jen chlubím vystřižky ze Speccy magazínů, tak tato "sláva" mi nestoupla do hlavy a dál se snažím pracovat na mých programech aby byly lepší - no prostě opravuji chyby, které se objevili při testování. Dnes to bylo hlavně o stabilizaci výběru, vkládání a transformaci obrázků při zoomu. Při testování se ukázalo, že některé starší části kódu stále počítaly s měřítkem 1:1, což se projevovalo hlavně u vloženého výběru, jeho rotace a následného načítání obrázků.

NXPaint: opravy zoomu, rotace a paměti

Abyste si nemysleli, že se jen chlubím vystřižky ze Speccy magazínů, tak tato "sláva" mi nestoupla do hlavy a dál se snažím pracovat na mých programech aby byly lepší - no prostě opravuji chyby, které se objevili při testování. Dnes to bylo hlavně o stabilizaci výběru, vkládání a transformaci obrázků při zoomu. Při testování se ukázalo, že některé starší části kódu stále počítaly s měřítkem 1:1, což se projevovalo hlavně u vloženého výběru, jeho rotace a následného načítání obrázků.

Vkládání výběru při zoomu

První oprava se týkala situace, kdy byl obrázek přiblížený, uživatel označil část kresby, zkopíroval ji a vložil zpět do plátna. Samotné vložení fungovalo, ale při další manipulaci se rámeček výběru kreslil jinde než vložený objekt. Problém byl v tom, že transformovaný obrys používal souřadnice plátna a posun pohledu, ale už je nenásobil aktuálním zoomem. Rámeček se proto při 2×, 4× nebo 8× zvětšení posouval k levému hornímu rohu a neodpovídal skutečné poloze vložené oblasti.

Rotace vloženého objektu

Další chyba se objevila při rotaci vloženého výběru. Vložená hlava nebo jiná část obrázku se po otočení rozpadla na řídkou síť bodů. Jde o to, že rotace používá dopředné mapování: zdrojové pixely se postupně přepočítávají na cílové pozice. Při šikmých úhlech ale mezi nimi zůstávaly mezery. Pro rotovaný paste se proto používá větší vykreslovací blok, aby sousední transformované pixely překryly mezery vzniklé rotací. Náhled je díky tomu čitelnější a vložený objekt se nerozpadá na jednotlivé body.

Zoomovaný transformovaný náhled

Transformovaný paste preview předtím kreslil jeden projektový pixel jako jeden obrazový pixel, i když byl projekt zobrazený ve větším zoomu. To fungovalo pouze v měřítku 1:1, proto se teď při zoomu kreslí každý transformovaný pixel jako blok odpovídající aktuálnímu zoomu.

Stabilita při načítání obrázků

Těmito úpravami (protože nebyly nejjednodušší) se zaplnila hlavní pamět a změnšilo se místo pro stack a při dalším testování se objevila chyba: po načtení obrázku se na obrazovce objevily náhodné pixely. Fixed část programu už byla natolik vysoko v paměti, že stack měl jen velmi malou rezervu. Z toho důvodu jsem část logiky menu přesunul do jiné banky. Ve fixed části zůstaly jen tenké wrappery a dispatcher akcí.

Lepší kompatibilita se ZX Spectrum Next s 1MB

Opravil jsem i jeden neduh a to divné chování na ZX Spectru Next s 1MB RAM. Pro moji obhajobi jak v originálním ZX Spectru Next, tak v N-Go mám 2MB,..

Ale aby tento update nebyl jen o opravách, které byly v programu, přidal jsem do programu ještě jednu novou funkci a to práci s prostředním tlačítkem při zazoomovaném obrázku. Jak jistě víte (a pokud nevíte, tak za chvilku vědět budete), prostřední tlačítko se používá jako kapátko - nabere Vám barvu pod kurzorem, ale od verze 0.5 pokud přidržíte v zazoomovaném obrázku prostřední tlačítko a hýbnete myší, zjistíte, že takto můžete hýbat celých obrázkem.

Stahovat můžete zde: https://shrek128.itch.io/nxpaint

Snímek obrazovky 2026-06-18 220822

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *