|
Problem mit WWRAP / problem with WWRAP, please help !
#435330
01/06/14 12:14
01/06/14 12:14
|
Joined: Apr 2005
Posts: 274 austria
Ascalon
OP
Member
|
OP
Member
Joined: Apr 2005
Posts: 274
austria
|
Hallo, hab ein Problem mit WWRAP. Ich habe zwei Strings, einen mit langem Text und einen mit kurzem Text. Der lange Text wird durch WWRAP korrekt umgebrochen, aber der zweite Text wird dann vom ersten überlagert, also nicht in die richtige, nächste Zeile geschrieben. Wie bekommt der zweite String seine richtige Zeile,sodass er nicht vom ersten String überdeckt wird. Hier mein Codebeispiel Hello, have a problem with WWRAP. I have two strings, a long one and a shorter one. The long text have a correct wordwrap with WWRAP, but the second text has an "overlay" from the first one. so the second one didn't get the right new line. How does the second string get his right number of line, so that the first string dont cover the second string. Here is my code example
#include <acknex.h>
#include <default.c>
STRING* strTest1 = "i am a very long text,i am a very long text, i am a very long text, i am a very long text";
STRING* strTest2 = "i am a short one";
TEXT* txtOut= {
pos_x = 20; pos_y = 20;
font = "Arial#20";
strings = 10;
string(strTest1,strTest2);
size_x = 150;
flags = SHOW | WWRAP;
}
function main() {
}
ps. sorry for my bad english
|
|
|
Re: Problem mit WWRAP / problem with WWRAP, please help !
[Re: Superku]
#435491
01/08/14 13:43
01/08/14 13:43
|
Joined: Apr 2005
Posts: 274 austria
Ascalon
OP
Member
|
OP
Member
Joined: Apr 2005
Posts: 274
austria
|
So, ich zeige euch mal meine Lösung für meinen Zeilenumbruch. Vielleicht habt ihr einen bessere Lösung bwz. Verbesserungen. Weiß nicht, wie gut ich meinen Code programmiert habe So, i show you now my solution for my wraptext. Maybe you have a better solution or improvements. I don't know, how good i progged my code sorry, that i made no english comments
#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;
}
|
|
|
|