004
23.07.2006, 23:41 Uhr
Yadgar
|
High!
Mein Code sieht jetzt so aus:
C++: |
class Pixel { friend Image; private: unsigned char b; // da Farbwerte bei normaler 24bit-Grafik nur unsigned char g; // zwischen 0 und 255 liegen können, unsigned char r; // genügt hier ein 1 Byte langer Typ // Private Methoden zur Angabe von Farbwerten, wegen ihrer Kürze inline unsigned char blue(void) { return b; } unsigned char green(void) { return g; } unsigned char red(void) { return r; } public: Pixel (unsigned char, unsigned char, unsigned char); // Konstruktor };
Pixel::Pixel (unsigned char bl, unsigned char gr, unsigned char rd) { b=bl; g=gr; r=rd; }
class Image { private: unsigned short width; unsigned short height; Pixel matrix[height][width]; public: Image (unsigned short, unsigned short); // Konstruktor unsigned long cCount (unsigned char, unsigned char, unsigned char); // zählt Pixel der angegegebenen Farbe, wichtig: Farbwert- }; // reihenfolge ist Standard, also r, g, b!
Image::Image (unsigned short w, unsigned short h) { Pixel* matrix = new Pixel[h][w]; width=w; height=h; }
Image::unsigned long cCount (unsigned char r, unsigned char g, unsigned char b) { unsigned long n=0; unsigned long x; unsigned long y; for (y=0; i<height; y++) { for (x=0; i<width; x++) { if ( matrix[y][x].blue() || matrix[y][x].green() || matrix[y][x].red() ) n++; } } return n; }
|
Hmmm, ich frage mich, ob ich die Speicherplatz-Allokation im Konstruktor von "Image" richtig geschrieben habe... müßte es bei einem zweidimensionalen Feld nicht Pixel* matrix[]... oder so ähnlich heißen? Na ja, ich erfahre es ja spätestens morgen abend, wenn ich zur Implementierung komme...
Bis bald im Khyberspace!
Yadgar
Now playing: Magnetic Fields III, live 1982 Shanghai (Jean-Michel Jarre) -- Flagmaker - ein Programmier-Blog |