You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
6.0 KiB
HTML
110 lines
6.0 KiB
HTML
<!menue>
|
|
|
|
//
|
|
//
|
|
//
|
|
<!h2a=llgfx_DrawText,llgfx_DrawText,llgfx_DrawText>
|
|
Zur Textausgabe gibt es eine Grundfunktion <wF>llgfx_DrawText() . Diese Funktionen schreibt einen String an die interne Text Position <wV>llgfx_text_xpos und <wV>llgfx_text_ypos . Nach jedem DrawText Aufruf sind <wV>llgfx_text_xpos und <wV>llgfx_text_ypos modifiziert, siehe weiter unten.
|
|
|
|
<wV>Methode: SRC_COLORKEY Blit*, jede beliebige Blitfunktion
|
|
<wV>Zielgrafik: Backbuffer*, jede beliebige Grafik
|
|
<wV>Zielposition: Beginnt mit <wV>llgfx_text_(xy)pos als linke obere Position für das erste Zeichen
|
|
<wV>Sourcegrafik: Fontgrafik gesetzt mit llgfx_SelectFont() oder interne 10px Schrift
|
|
|
|
<h3>Parameter:</h3>
|
|
<§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.
|
|
|
|
<h3>Externe Referenzen</h3>
|
|
<pre>
|
|
<wT>int <wV>llgfx_text_xpos <- Start Position X setzen
|
|
<wT>int <wV>llgfx_text_ypos <- Start Position Y setzen
|
|
<wT>int <wV>llgfx_tab_pos[8] <- Tabpositionen setzen
|
|
<wT>int <wV>llgfx_tab_char[8] <- Füll Zeichen für Tabs setzen
|
|
<wT>int <wV>llgfx_text_format <- Ausrichtung: 0=links, 1=rechts, 2=Zentriert
|
|
<wT>bool <wV>llgfx_text_wrap <- true für textwrap modus An
|
|
<wT>float <wV>llgfx_text_xspacing <- default faktor ist 1.0f
|
|
<wT>float <wV>llgfx_text_yspacing <- default faktor ist 1.0f
|
|
<wT>s_rect <wV>llgfx_text_rect <- Ausgabebereich Breite und Höhe
|
|
</pre>
|
|
//
|
|
//
|
|
//
|
|
<!h2a=Positionierung,Positionierung,Positionierung>
|
|
<§t=<wF>llgfx_SetTextPos( <wT>int <wV>xpos, <wT>int <wV>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: <wV>llgfx_text_xspacing und <wV>llgfx_text_yspacing.
|
|
//
|
|
//
|
|
//
|
|
<h2>Ausgabe Bereich und Textwrap</h2>
|
|
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=<wV>llgfx_text_wrap = <wT>true ;§>
|
|
<b>Rechten Rand setzen:</b>
|
|
Mit der globalen Variable llgfx_text_rect kann man die Breite für den text_wrap fixieren.
|
|
<§t=<wT>s_rect <wV>llgfx_text_rect§>
|
|
Beispiel:
|
|
<pre>
|
|
<wV>llgfx_text_rect.left = 0; ... \n oder Wrap kehrt zu dieser X-Position zurück
|
|
<wV>llgfx_text_rect.width = 100; ... Voreinstellung ist Inhalt von <wV>llgfx_displaywidth
|
|
<wV>llgfx_text_rect.height = 200; ... Voreinstellung ist Inhalt von <wV>llgfx_displayheight
|
|
</pre>
|
|
//
|
|
//
|
|
//
|
|
<h2>Tabulator Positionen</h2>
|
|
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<wS>(wdurschnittliche <wS>Zeichenbreite) * <wV>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.
|
|
<b>Rücksetzen des Tabulator Arrays:</b>
|
|
Array mit 0 löschen. <§t= <wF>memset( llgfx_tab_pos, 0, sizeof(llgfx_tab_pos)) §>.
|
|
//
|
|
//
|
|
//
|
|
<!h2a=Tabulator Beispiel,Tabulator Beispiel,Tabulator>
|
|
<div style="float:right"><!img1=DrawText_tab.gif,DrawText_tab_pos Screenshot></div><!rtf=DrawText_tab_pos>
|
|
//
|
|
//
|
|
//
|
|
<h2>Zeichensatz</h2>
|
|
|
|
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 <wF>llgfx_LoadFont geladen.
|
|
Die Level One Engine benutzt eine <§t=<wT>s_font§> Struktur zur Verwaltung der Fontdateien. LoadFont erzeugt eine <wT>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 <wF>llgfx_SelectFont().
|
|
<h2>Zeichensatz erzeugen</h2>
|
|
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: <!vid=CreateFont,Fontgrafik mit Asindes.exe erstellen>
|
|
Beispiel für ein 3-Zeichen Font um Rahmen zu zeichnen:
|
|
<!img1=CreateFont1.gif,Borderfont für das DrawText_sample1 Projekt>
|
|
|
|
|
|
|
|
//
|
|
//
|
|
//
|
|
<h2>Aufgelöste Sonderzeichen</h2>
|
|
<§t=<wH>'\n'§> ... llgfx_text_ypos wird um die Zeichensatz-Höhe aufaddiert, llgfx_text_xpos wird auf Startwert gesetzt
|
|
<§t=<wH>'\t'§> ... llgfx_text_xpos wird auf die nächste Tabulator Position gesetzt
|
|
<h2>Zeichen ausserhalb des Zeichensatzes</h2>
|
|
Zeichen die nicht in der Zeichensatz-Map definiert sind, werden ignoriert. Es passiert keine Änderung für die text_x-und yposition.
|
|
//
|
|
//
|
|
//
|
|
<!h2a=Hilfsfunktionen,Hilfsfunktionen,Hilfsfunktionen>
|
|
<!rtf=DrawText_functions>
|
|
<!h2a=llgfx_DrawText,llgfx_DrawText,llgfx_DrawText>
|
|
<!xml=llgfx_DrawText,function.xsl>
|
|
<!h2a=llgfx_LoadFont,llgfx_LoadFont,llgfx_LoadFont>
|
|
<!xml=llgfx_LoadFont,function.xsl>
|
|
<!h2a=llgfx_SelectFont,llgfx_SelectFont,llgfx_SelectFont>
|
|
<!xml=llgfx_SelectFont,function.xsl>
|
|
|