Hi(gh)!
Im Moment klappt mit Programmieren wirklich rein gar nichts... werde ich dement? Oder liegt es an der ausgesucht scheißigen Umgebung (lärmiges Unterschicht-Wohnklo ohne Klimaanlage in lärmigem Unterschicht-Viertel, fast ununterbrochenes Kindergeschrei, Bassgewummer, Auspuffgebrüll und ständiger Martinshorn-Terror)?
Konkret:
Die Funktion c64fill():
- bool c64fill(vector < vector < pixel > > & img, vector < vector < pixel > > & c64img, string md, int fcolor) {
- unsigned short leftcols, upperrows, rightcols, lowerrows, fullw, fullh;
- unsigned short h = img.size();
- unsigned short w = img[0].size();
- int a, b;
- pixel p;
- cout << "F" << uuml << "llfunktion wird aufgerufen!" << endl;
- cout << "Gew" << auml << "hlte F" << uuml << "llfarbe: " << palette[fcolor].red << " " << palette[fcolor].green << palette[fcolor].blue << endl;
- cout << "Breite des Originalbildes: " << w << endl;
- cout << "H" << ouml << "he des Originalbildes: " << h << endl;
- if (md == "blocks") {
- fullw = 40;
- fullh = 25;
- }
- if (md == "multicolor") {
- fullw = 160;
- fullh = 200;
- }
- // cout << "fullw = " << fullw << "\tfullh = " << fullh << endl;
- c64img.resize(fullh);
- // c64img[0].resize(fullw);
- if (w < fullw) {
- leftcols = (fullw - w) / 2;
- rightcols = fullw - w - leftcols;
- } else {
- leftcols = 0;
- rightcols = 0;
- }
- if (h < fullh) {
- upperrows = (fullh - h) / 2;
- lowerrows = fullh - h - upperrows;
- } else {
- upperrows = 0;
- lowerrows = 0;
- }
- if (h == fullh && w == fullw)
- return false;
- // cout << "leftcols = " << leftcols << "\trightcols = " << rightcols << endl;
- if (rightcols > 0) {
- a = 0;
- while (a < fullh) {
- b = 0;
- while (b < fullw) {
- if (b < leftcols || b > w + leftcols - 1) {
- p.set_red((unsigned char) palette[fcolor].red);
- p.set_green((unsigned char) palette[fcolor].green);
- p.set_blue((unsigned char) palette[fcolor].blue);
- c64img[a].push_back(p);
- } else {
- p.set_red((unsigned char) img[a].at(b - leftcols).get_red());
- p.set_green((unsigned char) img[a].at(b - leftcols).get_green());
- p.set_blue((unsigned char) img[a].at(b - leftcols).get_blue());
- c64img[a].push_back(p);
- // cout << "b - leftcols = " << b-leftcols << endl;
- }
- b++;
- }
- a++;
- }
- }
- if (lowerrows > 0) {
- a = 0;
- while (a < fullh) {
- b = 0;
- while (b < fullw) {
- if (a < upperrows || a > h + upperrows - 1) {
- p.set_red((unsigned char) palette[fcolor].red);
- p.set_green((unsigned char) palette[fcolor].green);
- p.set_blue((unsigned char) palette[fcolor].blue);
- c64img[a].push_back(p);
- } else {
- p.set_red((unsigned char) img[a - upperrows].at(b).get_red());
- p.set_green((unsigned char) img[a - upperrows].at(b).get_green());
- p.set_blue((unsigned char) img[a - upperrows].at(b).get_blue());
- c64img[a].push_back(p);
- }
- b++;
- }
- a++;
- }
- }
- return true;
- }
soll sowohl im "blocks"-Modus (40 x 25 Pixel) als auch im Multicolor-Modus (160 x 200 Pixel) bei im Original nicht bildschirmfüllenden Bildern fehlende Zeilen oder Spalten mit einer frei aus der C 64-Palette wählbaren Füllfarbe auffüllen. palette ist ein globaler Vektor aus rgb-Strukturen (struct rgb ist in meiner Klassendatei definiert) und wurde schon beim vorangegangenen Aufruf der Funktion c64() mit den entsprechenden Farbwerten belegt.
Bis gestern funktionierte diese Funktion noch - mittlerweile lässt sie die Bilder unverändert, d. h. es werden keine Spalten oder Zeilen aufgefüllt. Ich bin drauf und dran, die Programmiererei mit C++ endgültig dranzugeben, ich kann es ja anscheinend schlichtweg nicht! Schon gar nicht, wenn ich dauernd durch irgendwelchen Alltagsschlamassel (wie das halt eben normal ist in der Unterschicht) abgelenkt werde... Alltag und Programmieren, das beißt sich!
Bis bald im Khyberspace!
Yadgar
<MOD EDIT> Code umformatiert zur besseren Lesbarkeit