#include <acknex.h>
#include <default.c>
STRING* strTest1 = "Hinz und Kunz gingen durch die Stadt. Sie bemerkten nicht, dass es schon abend wurde und wie dunkel es draußen schon war.";
STRING* strTest2 = "i am a short one";
STRING* strTest3 = "so, die Geschichte geht nun weiter. Ich weiß auch nicht, was der Text vorhin sollte? Egal, wo sind wir stehen geblieben?";
STRING* s = "ABC";
FONT* arial_font = "Arial#20";
TEXT* txtOut= {
pos_x = 20; pos_y = 20;
font = arial_font;
strings = 10;
string(strTest1,strTest2,s,strTest3);
size_x = 450;
flags = SHOW;
}
//only for debugging
PANEL* panTest= {
pos_x = 20; pos_y = 300;
digits(0,0,"Länge: %.f","Arial#16",1,laenge);
digits(0,20,"Zeichen: %.f","Arial#16",1,zeichen);
// digits(0,40,"Rückgabe: %.f","Arial#16",1,rueckgabewert);
flags = SHOW;
}
var laenge;
var zeichen;
//var rueckgabewert;
function wrapString(STRING* _string) {
STRING* strTemp = " ";
STRING* strOrginal = " ";
var position; //Speichert die Position des gefundenen Leerzeichens
var abtrennung = 400; //Nach wievielen Pixeln soll der Text umgebrochen werden
str_cpy(strOrginal,_string); //Speichert den Text um ihn im orginal zu erhalten
zeichen = str_len(_string); //Liefert die Anzahl der Zeichen im string
var i;
for(i = 1; i < zeichen; i++) {
str_cpy(strTemp,strOrginal); //Kopiert den Orginaltext in einen temporären String
str_trunc(strTemp,zeichen-i); //und kürzt diesen temp. String um die Anzahl der Zeichen - i.
laenge = str_width(strTemp,arial_font); //dieser gekürzte String wird dann auf seine Länge an Pixeln überprüft
if(laenge >= abtrennung) { //wenn die Länge (in Pixel) des Strings zu lange ist
position = str_chr(_string,-i,' '); //gehe von der aktuellen Position des Zeichens solange zurück, bis ein Leerzeichen gefunden wird
str_setchr(_string,position,'\n'); //und ersetze das Leerzeichen mit einem Zeilenumbruch ('\n')
abtrennung += 400; //dann erhöhe die Abtrennung um den gleichen Abstand für die nächste "Überlänge"
}
}
}
//only for testing
function changeText() {
str_cpy(strTest2,"jetzt is er neu");
}
function main() {
level_load(NULL);
wait(3);
// laenge = str_width(strTest1,arial_font);
// zeichen = str_len(strTest1);
wrapString(strTest1);
wrapString(strTest3);
on_p = changeText;
//on_o = wrapString;
}