Paint is a graphics code snippets to paint an image to a single color fast.
Paint has the following flavors:
#include <cassert> //From http://www.richelbilderbeek.nl/CppPaint.htm void PaintClx(TImage * const image, const unsigned char red, const unsigned char green, const unsigned char blue ) { assert(image!=0); assert(image->Picture->Bitmap != 0); assert(image->Picture->Bitmap->PixelFormat == pf32bit); const int maxx = image->Picture->Bitmap->Width; const int maxy = image->Picture->Bitmap->Height; for (int y = 0; y != maxy; ++y) { unsigned char * const myLine = static_cast<unsigned char*>(image->Picture->Bitmap->ScanLine[y]); for (int x = 0; x != maxx; ++x) { //myLine[x*4+3] = 0 ; //Do not use alpha-blending (?) byte myLine[x*4+2] = red ; //Red myLine[x*4+1] = green; //Green myLine[x*4+0] = blue ; //Blue } } }
//From http://www.richelbilderbeek.nl/CppPaint.htm void Paint( QPixmap& pixmap, const unsigned char r, const unsigned char g, const unsigned char b, const unsigned char a = 255) //Opaque { const int width = pixmap.width(); const int height = pixmap.height(); QImage image = pixmap.toImage(); assert(image.bytesPerLine() / width == 4 && "Assume there are 4 bytes per pixel"); for (int y=0; y!=height; ++y) { unsigned char * const line = static_cast<unsigned char *>(image.scanLine(y)); for (int x=0; x!=width; ++x) { line[x*4+3] = a; //Alpha value line[x*4+2] = r; //Red line[x*4+1] = g; //Green line[x*4+0] = b; //Blue } } pixmap = pixmap.fromImage(image); }
#include <cassert> //From http://www.richelbilderbeek.nl/CppPaint.htm void PaintVcl(TImage * const image, const unsigned char red, const unsigned char green, const unsigned char blue ) { assert(image!=0); assert(image->Picture->Bitmap != 0); assert(image->Picture->Bitmap->PixelFormat == pf24bit); const int maxx = image->Picture->Bitmap->Width; const int maxy = image->Picture->Bitmap->Height; for (int y = 0; y != maxy; ++y) { unsigned char * const myLine = static_cast<unsigned char*>(image->Picture->Bitmap->ScanLine[y]); for (int x = 0; x != maxx; ++x) { myLine[x*3+2] = red ; //Red myLine[x*3+1] = green; //Green myLine[x*3+0] = blue ; //Blue } } } #include <cassert> //From http://www.richelbilderbeek.nl/CppPaint.htm void PaintVcl(TImage * const image, const TColor color) { assert(image!=0); assert(image->Picture->Bitmap != 0); assert(image->Picture->Bitmap->PixelFormat == pf24bit); const int maxx = image->Picture->Bitmap->Width; const int maxy = image->Picture->Bitmap->Height; const unsigned char red = GetRValue(color); const unsigned char green = GetGValue(color); const unsigned char blue = GetBValue(color); for (int y = 0; y != maxy; ++y) { unsigned char * const myLine = static_cast<unsigned char*>(image->Picture->Bitmap->ScanLine[y]); for (int x = 0; x != maxx; ++x) { myLine[x*3+2] = red ; //Red myLine[x*3+1] = green; //Green myLine[x*3+0] = blue ; //Blue } } }