Eida.cz - Bezbarvé prostory

Bezbarvé prostory

Eida

Už to asi bude nějaká doba, co se tu naposledy objevil nějaký článek. Hodnocení šlo patrně dolu rychlostí ze skály padajícího vlaku a kytky zvadly. Ale co už, od keců to tady teď není.

V současné době jsem byl donucen zapracovat na vlastní PHP knihovně pro kreslení grafů. Přestože takových knihoven se po světě povaluje dost, patrně neexistuje žádná, která by se dala svobodně využít v komerčním prostředí. Umí mnohdy hezké věci, občas i kouzelné obrázky, někdy jsou krásně čisté a jindy zas nechutné, tu a tam seberou pár kilo a vedle desítky mega. Mým cílem je teď pokus o něco malého a rychlého se základními kreslícími funkcemi sloupců, XY bodů a koláčových grafů.

Dílko se vyvíjí rychle a směje se na svět, nemělo by to celé snad přesáhnout 150 kB (odhadem 4500 řádků kódu), ale to se ještě uvidí. Časem pak stejně nejspíš přibudou další komponenty pro kreslení dalších typů grafů, možná i nějaká ta vyšší matematika.

Dneska krom veselého tweetování do světa s Jaredem bylo v plánu navrhnout automatickou adjustaci barev pro objekty různých datových řad. Což zní celkem jednoduše, ale jako vždy, i tady se vyskytlo nemalé WTF.

Takové nejjednodušší řešení změny barvy při zachování barevné konzistence celé plochy je změna jejího odstínu, resp. jasu. Bohužel svět webu a rastrových obrázků v GD2 je poněkud silně vázán na systém RGB a výše řečené změny jdou nejsnáze dělat v HSL.

Co na tom, wikipedie celkem hezky vysvětluje jejich vzájemnou konverzi a dá se též najít i dost (a často špatných) hotových snippetů. Funkce po úpravách fungovaly skvěle. Až na to, že byl naprosto stupidní nápad pracovat s barevnými složkami v asociativním poli. Jednoduše nebylo zaručeno, že budou indexy na správných místech a prostě to generovalo haluze. Což způsobilo ono velké hodinové OMG.

Jak už bylo řečeno, ne všechna řešení volně stažitelná po Internetu jsou správná, takže tady nabízím svůj upravený kus kódu pro vzájemnou konverzi mezi RGB a HSL barevnými systémy. Funkce žerou a zvrací pole v rozsahu 0-255 pro RGB a 0-1 pro HSL (tedy v procentech pro všechny složky včetně Hue).

rgbhsl.tar.gz768 bajtů
RGB<->HSL conversion functions

 

A to bude tak asi všechno. Kvak.

Tento článek přečetlo již 336 čtenářů (0 dnes).

Komentáře

Nový komentář