Tässä tuli vain mietittyä että mitenhän onnistuu rivinvaihto tekstille, joka tehdään SDL_ttf-kirjastoa käyttäen. Pätkä koodia johon tämä olisi tarkoitus ujuttaa:
char teksti[100]; TTF_Font *fontti = TTF_OpenFont("Tahoma.ttf", 12); SDL_Surface *pinta = NULL; sprintf(teksti, "blah blah blah [rivinvaihto] blah blah"); //metodi jolla teksti tehdään pintaan (TTF_Font *fontti, SDL_Surface **pinta, SDL_Color vari, string teksti) Text(fontti, &pinta, vari, teksti); //piirtometodi (SDL_Surface *kuva, SDL_Surface *naytto, int x, int y) Draw(pinta, naytto, 385, 128); //vapautukset
Syy miksi haluan rivinvaihdon, on se että se on helpompaa kuin monen eri pinnan luomisen sijaan, joihin jokaiseen laittaa sitten yhden rivin tekstiä ja nämä piirtelee sitten erikseen (joka kohdistamisen takia voi olla turhauttavaa). Tosin jos muuta vaihtoehtoa ei ole niin sitten ei voi mitään. Siis korkeussuunnassa pidemässä laatikossa pitkä rivi tekstiä näyttää vähän oudolta, joten se olisi rivitettävä, mielellään helpoimmalla tavalla. Tiedän että \n vaihtaa riviä, mutta se toimii konsolilla, ei nähtävästi tässä.
Haet SLD_TTF:n lähdekoodin, muokkaat funktiota TTF_RenderUNICODE_xxx (jossa xxx on se mitä käytät) niin, että se osaa huomioida rivinvaihtomerkin (esim. "\n"). Sitten käännät sen uudelleen ja laitat vaan sen "\n" tekstiisi.
Tai ehkä kuitenkin olisi järkevämpää vain muuttaa tuota omaa Text-metodia siten, että se huomioi rivivaihdot.
No siellä Text metodissa oletettavasti kutsutaan tuota TTF_RenderText_xxx tai TTF_RenderUNICODE_xxx funktiota, joka puolestaan ei nykyisellään tue rivinvaihtoa (tarkistin lähdekoodista). Eli ainoa keino kiertää rajoite olisi pistää Text kutsumaan sitä erikseen jokaiselle riville, jolloin kysyjän toivomus monen pinnan välttämisestä ei toteutuisi.
Aihe on jo aika vanha, joten et voi enää vastata siihen.