Copy Code
|
|
---|---|
// Create a filled RGB24 image using direct pixel access HIGEAR createFilledRGB24(AT_DIMENSION w, AT_DIMENSION h, AT_RGBQUAD c) { // Create image (initially filled with black pixels) HIGEAR hImage = createRGB24(w, h); // Note: Pixel access mode does not matter here, since the pixel // data is being accessed directly by getting a pointer to it // Create a raster with the desired color (RGB channel order!) LPAT_PIXEL lpSrcRaster = (LPAT_PIXEL) malloc(w * 3); for (AT_PIXPOS x = 0; x < w; x++) { lpSrcRaster[x * 3 + 0] = c.rgbRed; lpSrcRaster[x * 3 + 1] = c.rgbGreen; lpSrcRaster[x * 3 + 2] = c.rgbBlue; } // Loop over the image and set each raster for (AT_PIXPOS y = 0; y < h; y++) { // Get a pointer to the image raster LPAT_VOID lpDstRaster; IG_image_DIB_raster_pntr_get(hImage, y, &lpDstRaster); // Copy the source raster to image raster memcpy(lpDstRaster, lpSrcRaster, w * 3); } free(lpSrcRaster); return hImage; } |