Crearea de imagini și fonturi în format - cu - pentru aplicații embedded


O scurtă istorie

a existat o problemă similară, dar cu un alt ecran după câțiva ani - TIC154 pe PCF8535. In plus, este necesar pentru a traduce în formatul „C“ și o imagine, mai degrabă decât doar fonturile. Sa decis să scrie un nou program cu caracteristicile potrivite, inclusiv un format de ieșire variabilă de fișier „C“ și a datelor pentru diferite controlere.






Astfel sa născut LCD Bitmap Converter. second-hand, cu toate acestea, numai un singur proiect, dar nu e vorba de ea.

Ceva timp mai târziu, când m-am mutat de la Windows la Ubuntu Linux, și acolo a scris deja software pentru microcontrolere, la orizont se ivi proiectul cu un nou afișaj BP320240E pe RA8835, și-a schimbat înțelegerea acestei probleme, există idei noi, cerințe, ceea ce a dus la sfârșitul anului la nașterea programului LCD Image Converter.

Cerințe preliminare

Fonturile sunt compuse din imagini de caractere cu matrice de biți, și coduri de caractere de potrivire aceste matrice. Prin urmare, obiectivul principal a fost de a obține o reprezentare corectă a imaginii ca o serie de biți.

Experiența cu TIC154 și BP320240E a arătat că cel mai simplu mod de a forma imaginea în memoria tampon cadru în microcontroler și transmis după o schimbare pe afișajul complet.
Stocarea datelor în memoria de afișare, citindu-le afară, să modifice și să scrie înapoi au fost obținute în mod semnificativ mai lent.

Lucrul cu display-uri diferite, a condus la o înțelegere a nevoii de program otvyazki pe modelul controlorului specific, organizarea și memoria lățimea sa de autobuz de date. Din moment ce programul este complet rescris pentru fiecare nou ecran ar fi o prostie :) Din exterior nu era nimic ușor, și cu funcționalitatea necesară.
De asemenea, în data viitoare, va include suport pentru ecrane color. Poate că nu este foarte important pentru fonturi, dar pentru imagini - complet.

Uneori este necesar să se afișeze caractere speciale în textul care nu sunt incluse în tabelul periodic Windows 1251 cu codurile de la 32 până la 255. Surse scris programe în Linux, în UTF-8, pentru că ideea a venit să pună în aplicare suport Unicode. Acest lucru face posibil să aibă în textul sursă, este în întregime în concordanță cu textul pe ecran. Fără orice tip de „\ 0xff“ convenții vor fi luate în considerare pentru litera „I“ și în loc de „@“ trage o gama greacă „gamma“

rezultând cerințe

Deci, luând în considerare versiunea anterioară a programului, cerințele din sleduyushie:
  • Crearea de imagini și fonturi în format „C“
  • Suport Unicode
  • Cross-platform, la urma urmei, am fost de programare în Linux
  • Imaginile monocrome și color (îngrămădesc) în tonuri de gri
  • orientare orizontală și verticală de octeți de memorie
  • Dimensiunea elementelor de date în matrice 8, 16, 24 sau 32 de biți
  • 1. 24 biți per punct de la monocrom la 24 de biți RGB
  • Abilitatea de a schimba formatul de fișier de ieșire, fără a schimba programul în sine
  • Diferite ordine de biți de date, de exemplu RGB, BGR, RBG, etc.

Ce sa întâmplat

Qt 4.7 Cadrul a fost selectat pentru punerea în aplicare a caracteristicilor care vin la îndemână cross-platform, viteza programului, suport XML, și diverse formate de imagine, Unicode „din caseta“ internaționalizare.
Ca bază pentru transformarea au fost selectate și implementate fișierele șablon și parser pentru ei (în versiunea anterioară a fost XSL-transformare din XML în text foarte evident pentru neinițiați).






Crearea de imagini și fonturi în format - cu - pentru aplicații embedded

Crearea de imagini și fonturi în format - cu - pentru aplicații embedded

Imaginea de sine algoritm de conversie într-o matrice de biți acceptă următoarele caracteristici:
  • verticală / orientare orizontală de octeți de memorie și orice direcție de puncte de scanare a imaginii (rotație preliminară implementată imagini / reflexie în partea dreaptă și este întotdeauna urmat de scanare de la stânga la dreapta și de sus în jos)
  • Se transferă într-o imagine alb-negru puncte / gri RGB gradație /
  • date schimbare de biți pentru a produce orice comandă de biți de culoare și a modificărilor lor număr, de exemplu R5G6B5, R8G8B8 sau pur și simplu BW1
  • Ambalare biți 8, 16, 24 sau blocuri de date pe 32 de biți pentru a umple matrice

Crearea de imagini și fonturi în format - cu - pentru aplicații embedded

Șabloanele sunt simple fișiere text care arată astfel (în acest caz, pentru imaginea):
în cazul în care textul între @ și @ se înlocuiește cu variabilele corespunzătoare definite la crearea imaginii / textului sau chiar și la transformarea acesteia într-un format „C“.

Câteva exemple de rezultatul

Specificată în primul fluture imagine:

Crearea de imagini și fonturi în format - cu - pentru aplicații embedded

  • în format XML

  • în formatul „C“ (pentru culoare și monocrom)
  • pe un ecran monocrom controler BP320240E RA8835
    Crearea de imagini și fonturi în format - cu - pentru aplicații embedded

  • ecran color cu un controler SSD1289
    Crearea de imagini și fonturi în format - cu - pentru aplicații embedded

fonturi:
  • mai multe caractere de fonturi Ubuntu în format XML

  • Cu toate acestea, în formatul „C“
  • text pe un ecran monocrom PCF8531 TIC32 controler (există deja un alt font)
    Crearea de imagini și fonturi în format - cu - pentru aplicații embedded

Ultima versiune a programului, descrieri mai detaliate ale setărilor și algoritmi, pot fi găsite pe pagina de start: LCD Image Converter

M-am mutat de la Windows la Ubuntu Linux, și acolo a scris deja software pentru microcontrolere, la orizont se ivi proiectul cu un nou afișaj BP320240E pe RA8835, și-a schimbat înțelegerea acestei probleme, există idei noi, cerințe, care în cele din urmă a condus la nașterea programului LCD Image Converter. De ce versiune numai on-line de Windows? În cazul în care versiunea pentru Ubuntu?

Ea merge fără probleme

BitFontCreator plătit, și dacă utilizați în mod gratuit, care este limitată în timp.
Un convertor LCD Imaginea este liber și are o conversie de imagini și fonturi, ca să spunem așa All in One.
În ceea ce privește recomandarea:
1. Am întrebat de scanare: la stânga la dreapta, de jos în sus; inversiune.
Shift comanda octet (little-endian / Big-endian) rezultatele nu se schimba.
2. În cazul în care este potrivit pentru imaginea nu este foarte convenabil pentru fontul această metodă.
P.S. Există vreo posibilitate de a pune în aplicare această metodă de scanare în LCD Image Converter.

Toate într-un loc, deoarece funcțiile de ieșire de text, am fost funcția de ieșire a imaginii.
Din același motiv și nu prezintă nici un inconvenient pentru mine o metodă pentru a afișa ieșire. 1 și 2, care urmează să fie utilizate împreună.

Ea are posibilitatea de a realiza, desigur. Dar, din cauza complexității, eu nu-l văd încă.