Example #1
0
        unsafe static private int ARGB32_To_RGB24(
            int dwWidthInPixels,
            int dwHeightInPixels,
            int dwDestStride,
            IntPtr ipSrc,
            IntPtr ipDest
            )
        {
            RGBQUAD *pSrc  = (RGBQUAD *)ipSrc;
            RGB24 *  pDest = (RGB24 *)ipDest;

            for (int y = 0; y < dwHeightInPixels; y++)
            {
                for (int x = 0; x < dwWidthInPixels; x++)
                {
                    pDest[x].rgbRed   = pSrc[x].R;
                    pDest[x].rgbGreen = pSrc[x].G;
                    pDest[x].rgbBlue  = pSrc[x].B;
                }

                pSrc  += dwWidthInPixels * 3;
                pDest += dwDestStride;
            }

            return(dwDestStride * dwHeightInPixels);
        }
Example #2
0
        public void Copy(ByteImage byteImage)
        {
            byte * p    = byteImage.Data(0, 0);
            RGB24 *pOut = data;

            for (int i = 0; i < width * height; i++)
            {
                pOut->R = pOut->G = pOut++->B = *p++;
            }
        }
Example #3
0
        public void Copy(RGBImage rgbImage)
        {
            RGB24 * p    = rgbImage.Data(0, 0);
            ARGB32 *pOut = data;

            for (int i = 0; i < width * height; i++)
            {
                pOut->A   = 255;
                pOut->R   = p->R;
                pOut->G   = p->G;
                pOut++->B = p++->B;
            }
        }
Example #4
0
        public void DecimateAndReduce(RGBImage a, int factor)
        {
            byte *output = data;

            for (int y = 0; y < height; y++)
            {
                RGB24 *pa = a.Data(0, y * factor);
                for (int x = 0; x < width; x++)
                {
                    *output++ = (*pa).R;
                    pa += factor;
                }
            }
        }
Example #5
0
        public void CopyRectangle(RGBImage rgbImage, int startX, int startY, int w, int h)
        {
            RGB24 * pOrig    = rgbImage.Data(0, 0);
            ARGB32 *pOutOrig = data;
            RGB24 * p;
            ARGB32 *pOut;

            for (int j = startY; j < h; j++)
            {
                for (int i = startX; i < w; i++)
                {
                    p    = pOrig + j * rgbImage.Width + i;
                    pOut = pOutOrig + j * width + i;

                    pOut->A = 255;
                    pOut->R = p->R;
                    pOut->G = p->G;
                    pOut->B = p->B;
                }
            }
        }
Example #6
0
        //-------------------------------------------------------------------
        // TransformImage_RGB24
        //
        // RGB-24 to RGB-32
        //-------------------------------------------------------------------
        unsafe private static void TransformImage_RGB24(IntPtr pDest, int lDestStride, IntPtr pSrc, int lSrcStride, int dwWidthInPixels, int dwHeightInPixels)
        {
            RGB24 *  source = (RGB24 *)pSrc;
            RGBQUAD *dest   = (RGBQUAD *)pDest;

            lSrcStride  /= 3;
            lDestStride /= 4;

            for (int y = 0; y < dwHeightInPixels; y++)
            {
                for (int x = 0; x < dwWidthInPixels; x++)
                {
                    dest[x].R = source[x].rgbRed;
                    dest[x].G = source[x].rgbGreen;
                    dest[x].B = source[x].rgbBlue;
                    dest[x].A = 0;
                }

                source += lSrcStride;
                dest   += lDestStride;
            }
        }
Example #7
0
 public RGBImage(int width, int height, IntPtr dataIntPtr)
     : base(width, height, dataIntPtr, sizeof(RGB24))
 {
     data = (RGB24 *)dataIntPtr.ToPointer();
 }
Example #8
0
 public RGBImage(int width, int height, IntPtr dataIntPtr)
     : base(width, height, dataIntPtr, sizeof(RGB24))
 {
     data = (RGB24*)dataIntPtr.ToPointer();
 }