// Create a filled RGB24 image using pixel access functions (new mode)
HIGEAR createFilledRGB24(AT_DIMENSION w, AT_DIMENSION h, AT_RGBQUAD c)
{
// Create image (initially filled with black pixels)
HIGEAR hImage = createRGB24(w, h);
// Set pixel access mode to new
AT_MODE pixAccessMode = IG_PIX_ACCESS_MODE_NEW;
IG_gctrl_item_set("DIB.PIX_ACCESS_USE_LEGACY_MODE", AM_TID_AT_MODE,
&pixAccessMode, sizeof(pixAccessMode), NULL);
// Create a raster with the desired color (RGB channel order!)
LPAT_PIXEL lpRaster = (LPAT_PIXEL) malloc(w * 3);
for (AT_PIXPOS x = 0; x < w; x++)
{
lpRaster[x * 3 + 0] = c.rgbRed;
lpRaster[x * 3 + 1] = c.rgbGreen;
lpRaster[x * 3 + 2] = c.rgbBlue;
}
// Loop over the image and set each raster
for (AT_PIXPOS y = 0; y < h; y++)
IG_DIB_raster_set(hImage, y, lpRaster, IG_PIXEL_UNPACKED);
free(lpRaster);
return hImage;
}
|