Skip to content

Latest commit

 

History

History
99 lines (57 loc) · 10.3 KB

File metadata and controls

99 lines (57 loc) · 10.3 KB

 

 

 

 

 

 

Paint is a graphics code snippets to paint an image to a single color fast.

 

Paint has the following flavors:

 

 

 

 

 

Paint using the CLX library

 


#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     }   } }

 

 

 

 

 

Paint using the Qt library

 


//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); }

 

 

 

 

 

Paint using the VCL library

 


#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     }   } }