LCD editor

Moczik Gabor pm at progzmaster.hu
Fri Jun 30 13:40:04 CEST 2006


Papp Zoltán wrote:
> (Megnézed, hogy az aktuális karakter 1. sorában jobbról hány fehér pixel
> van, ehhez hozzáadod a köv. karakter 1. sorának balról számolt fehér
> pixelek számát, így megvan a távolság a két karakter között az 1. sorban.
> Végigmész az összes soron, és már meg is van, hogy a "legkisebb
> távolság"-1 pixellel kell balra tolni a köv. karaktert.
> -1 helyett lehet -x is, ahol x a kívánt távolság pixelben, gondolom ennek
> nagyjából meg kellene egyezni a font vonalainak vastagságával, ami 5x7
> karakternél 1, de egy 32x32-es karakternél lehet akár 4-5 px is.)
> 
> Persze ez mind plusz idő, és nehezebb kiszámolni is, hogy pl. egy adott
> szöveg hány pixel széles, ami ugye egy középre igazított szövegnél nem
> hátrány, ha tudod.

En ugy tervezem megoldani, hogy eleve a karakterkeszlet lesz proporcionalis, 
azaz le lesz tarolva az adott karakter szelessege, es nem lesz felesleges 
ures pixel oszlop. Ez karakterenkent 1 byte tobblet, viszont osszessegeben 
nem okoz ennyit, mert az elhagyott ures oszlopok miatt kevesebb adatot kell 
tarolni.

Az overhead annyi, hogy ha mondjuk a 254-es kodu betu kell, akkor nem 
tudjuk, hogy az adatteruleten hol kezdodik, mert ossze kell szamolni az 
elotte levo betuk szelesseget.

Lehet indextablat csinalni minden karakterhez, de az rengeteg helyet foglal, 
lehet minden 16-ik karakterhez, ez mar kevesebbet, de rossz esetben 15-ot 
kell szamolni.
Ha a ROM keves, de RAM van meg, akkor ki lehet szamolni a betukeszlet 
kivalasztasakor a tipikus indexeket, es ez alapjan dolgozni.

Igazabol ARM procira keszul, ott elvileg az ilyen szamitasi teljesitmeny nem 
gond, de ha nincs mas komoly dolga az MCU-nak, akkor egy kis 8bites PIC/AVR 
is elviszi.
Bonyolultabb cuccokban mostanaban az UI-t kulon procira szoktam bizni, igy 
konnyebb dolgom van programozaskor, es kevsebb a hibalehetoseg.

> Én valamilyen "paraméterezhető" kimeneti formátumra gondolok, amit
> mindenki magának állíthat be. Persze ez nagy meló, de univerzális. (nézd

Vegul is...
Kellhet egy olyan kimenet, ami egyszer szukseges (pl. valtozonev), blokk 
kezdo jel, elvalasztojel, blokk zaro jel, adat formatum.

Pl. C nyelvu tomb eseten:
start: 'const char %font_name%[%font_size_bytes%] ='
block start:  '{'
blockend: '}'
delimiter: ', '
formatum: '0x%2X'

Ezt egyszeru leprogramozni, de ezzel meg mindig nem lehet meta-adatokat 
tarolni, tovabba ki kell valasztani, hogy 1byte egy oszlopot vagy egy sort 
ir le, stb.

Nekem pl. ilyen formatum kell:

unsigned char Font5x7_data[] = {
     0x7E,0x11,0x11,0x11,0x7E,
     0x7F,0x49,0x49,0x49,0x36,
     0x3E,0x41,0x41,0x41,0x22
};

const struct GFont StFont5x7 = {
     GF_FIXED,
     GF_COLDATA,
     65, /* first char */
     67, /* last char */
     5, /* width */
     7, /* height */
     1, /* letterspacing */
     1, /* rowspacing */
     sizeof(Font5x7_data),
     Font5x7_data
};

const struct GFont* Font5x7 = &StFont5x7;

-- 
((( Móczik Gábor  )))--((( pm -> @ -> progzmaster -> . -> hu  )))
((( Skype: moczik )))--((( Website: http://www.progzmaster.hu )))



More information about the Elektro mailing list