Example #1
0
        private void Paste_4BitCount(int x, int y, Bmp src)
        {
            int sw          = src.bmih.biWidth;
            int sh          = src.bmih.biHeight;
            int sLineStride = src.GetLineStride();
            int dLineStride = GetLineStride();
            int sidx        = src.GetByteOffset(0, 0);
            int didx        = GetByteOffset(x, y);
            int sw2         = sw / 2;

            for (int i = 0; i < sh; ++i)
            {
                for (int j = 0; j < sw2; ++j)
                {
                    byte    scidx  = src.imageData[sidx + j];
                    RGBQUAD sc0    = src.colorTable[scidx >> 4];
                    RGBQUAD sc1    = src.colorTable[scidx & 0xF];
                    int     dcidx0 = Array.IndexOf(colorTable, sc0);
                    int     dcidx1 = Array.IndexOf(colorTable, sc1);
                    imageData[didx + j] = (byte)((dcidx0 << 4) | dcidx1);
                }
                sidx += sLineStride;
                didx += dLineStride;
            }
        }
Example #2
0
        private void Paste_8BitCount(int x, int y, Bmp src)
        {
            int sw          = src.bmih.biWidth;
            int sh          = src.bmih.biHeight;
            int sLineStride = src.GetLineStride();
            int dLineStride = GetLineStride();
            int sidx        = src.GetByteOffset(0, 0);
            int didx        = GetByteOffset(x, y);

            for (int i = 0; i < sh; ++i)
            {
                for (int j = 0; j < sw; ++j)
                {
                    RGBQUAD sc = src.colorTable[src.imageData[sidx + j]];
                    imageData[didx + j] = (byte)Array.IndexOf(colorTable, sc);
                }
                sidx += sLineStride;
                didx += dLineStride;
            }
        }