Sourcegrafik: Fontgrafik gesetzt mit llgfx_SelectFont() oder interne 10px Schrift
Parameter:
<§t=Zielgrafik id §>: erzeugt durch llgfx_CreateGfx(), llgfx_LoadGfx(), 0=Backbuffer
<§t=Zeiger auf Textbuffer §>: Text muss 0 terminiert sein. Kann Returns und Tabs enthalten.
<§t=Optional: blitflag §>: Integer mit Blitterflags
<§t=Optional: Zeiger auf blitfx §>: Zeiger auf die eigene BlitFX Optionen.
Externe Referenzen
int llgfx_text_xpos <- Start Position X setzen
int llgfx_text_ypos <- Start Position Y setzen
int llgfx_tab_pos[8] <- Tabpositionen setzen
int llgfx_tab_char[8] <- Füll Zeichen für Tabs setzen
int llgfx_text_format <- Ausrichtung: 0=links, 1=rechts, 2=Zentriert
bool llgfx_text_wrap <- true für textwrap modus An
float llgfx_text_xspacing <- default faktor ist 1.0f
float llgfx_text_yspacing <- default faktor ist 1.0f
s_rect llgfx_text_rect <- Ausgabebereich Breite und Höhe
//
//
//
<§t=llgfx_SetTextPos( int xpos, int ypos );§>
Alternativ können direkt die globalen Variablen gesetzt werden.
Die X/Y Textposition wird bei jedem DrawText Aufruf weitergeschoben. d.h. ein weiterer DrawText Aufruf hängt sich nach der letzten Stelle dazu.
Der Vorschub für X Positionen und für Y(nächste Zeile) bestimmt der Zeichensatz.
Diesen Vorschub kann man über zwei globale Variablen steuern: llgfx_text_xspacing und llgfx_text_yspacing.
//
//
//
Ausgabe Bereich und Textwrap
Standard Ausgabebereich ist der gesamte Bildschirm. Wie bei jeder anderen Grafikfunktion sind Positionierungen erlaubt die über den Bildschirm hinausgehen. Geht eine Textausgabe über den rechten Rand hinaus wird abgeschnitten.
Es gibt aber die Möglichkeit den Text für den rechten Rand umzubrechen, dazu setzt man die globale <§t=llgfx_text_wrap = true ;§>
Rechten Rand setzen:
Mit der globalen Variable llgfx_text_rect kann man die Breite für den text_wrap fixieren.
<§t=s_rect llgfx_text_rect§>
Beispiel:
llgfx_text_rect.left = 0; ... \n oder Wrap kehrt zu dieser X-Position zurück
llgfx_text_rect.width = 100; ... Voreinstellung ist Inhalt von llgfx_displaywidth
llgfx_text_rect.height = 200; ... Voreinstellung ist Inhalt von llgfx_displayheight
//
//
//
Tabulator Positionen
Für Tabulator Positionen gibt es ein Array aus 8 Integern für die Position relativ zu Start-X Position der Textausgabe.
Startet man die Textausgabe mit llgfx_test_xpos = 100, und das erste Array Element von llgfx_tab_pos ist 8, dann ist die Xposition für das nächste Zeichen nach einem TAB im Text <§t=StartX + ( 8 * Z(wdurschnittliche Zeichenbreite) * llgfx_text_xspacing )§>.
StartX ist der Inhalt von llgfx_text_xpos zum Zeitpunkt des Aufrufes.
Beim nächsten Tab wird auf das nächste Element vom llgfx_tab_pos Array zurückgegriffen.
Der interne Tab-Positions Zähler wird bei einem Return und bei einer neue DrawText Ausgabe zurückgesetzt.
Rücksetzen des Tabulator Arrays:
Array mit 0 löschen. <§t= memset( llgfx_tab_pos, 0, sizeof(llgfx_tab_pos)) §>.
//
//
//
//
//
//
Zeichensatz
Ein Zeichensatz in der LevelOne Engine ist eine Grafik mit den einzelnen Zeichen und einer zugehörigen Positionierungsdatei, die Map Datei. Die Zeichensatzgrafik wird über llgfx_LoadFont geladen.
Die Level One Engine benutzt eine <§t=s_font§> Struktur zur Verwaltung der Fontdateien. LoadFont erzeugt eine s_font struktur und liefert die Adresse zurück. Man kann beliebig viele Zeichensatz Grafiken laden.
Das Umschalten zwischen den Zeichensätzen erfolgt mit der Funktion llgfx_SelectFont().
Zeichensatz erzeugen
Das Windows Tool AsinDes erzeugt aus einem Systemfont eine Grafik mit zugehöriger Positionsliste. Die Zeichengröße und viele wichtige Parameter können in einem Wizzard eingestellt werden. Siehe Video DrawText_sample1.
Ein Font besteht aus zwei Teilen. Der Grafik selbst mit den Zeichen und die map Datei. Die Map Datei ist eine Liste von Rectangle Positionen der Zeichen.
Die Map Datei wird von AsinDes.exe erzeugt wenn man in der Positionlist auf den Button Save klickt.
Hier ein Video wie eine Fontgrafik mit Asindes erstellt wird:
Beispiel für ein 3-Zeichen Font um Rahmen zu zeichnen:
//
//
//
Aufgelöste Sonderzeichen
<§t='\n'§> ... llgfx_text_ypos wird um die Zeichensatz-Höhe aufaddiert, llgfx_text_xpos wird auf Startwert gesetzt
<§t='\t'§> ... llgfx_text_xpos wird auf die nächste Tabulator Position gesetzt
Zeichen ausserhalb des Zeichensatzes
Zeichen die nicht in der Zeichensatz-Map definiert sind, werden ignoriert. Es passiert keine Änderung für die text_x-und yposition.
//
//
//