コード例 #1
0
ファイル: FloatImage.cs プロジェクト: perepichka/RoomAlive
        public void Copy(ByteImage a, float scale)
        {
            byte * pa = a.Data(0, 0);
            float *p  = data;

            for (int i = 0; i < width * height; i++)
            {
                *p++ = *pa++ *scale;
            }
        }
コード例 #2
0
ファイル: ByteImage.cs プロジェクト: perepichka/RoomAlive
        public void Invert(ByteImage a)
        {
            byte *p0 = a.data;
            byte *p1 = data;

            for (int i = 0; i < width * height; i++)
            {
                *p1++ = (byte)(255 - *p0++);
            }
        }
コード例 #3
0
ファイル: RGBImage.cs プロジェクト: perepichka/RoomAlive
        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++;
            }
        }
コード例 #4
0
ファイル: ByteImage.cs プロジェクト: perepichka/RoomAlive
        public void Decimate(ByteImage a, int factor)
        {
            byte *output = data;

            for (int y = 0; y < height; y++)
            {
                byte *pa = a.Data(0, y * factor);
                for (int x = 0; x < width; x++)
                {
                    *output++ = *pa;
                    pa += factor;
                }
            }
        }
コード例 #5
0
ファイル: ByteImage.cs プロジェクト: perepichka/RoomAlive
        //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;
        //        }
        //    }
        //}

        //public void DecimateAndReduce(ARGBImage a, int factor)
        //{
        //    byte* output = data;

        //    for (int y = 0; y < height; y++)
        //    {
        //        ARGB32* pa = a.Data(0, y * factor);
        //        for (int x = 0; x < width; x++)
        //        {
        //            *output++ = (*pa).R;
        //            pa += factor;
        //        }
        //    }
        //}

        public void Threshold(ByteImage a, byte threshold)
        {
            byte *pa = a.data;
            byte *p  = data;

            for (int i = 0; i < a.width * a.height; i++)
            {
                if (*pa++ > threshold)
                {
                    *p++ = 255;
                }
                else
                {
                    *p++ = 0;
                }
            }
        }
コード例 #6
0
ファイル: ByteImage.cs プロジェクト: perepichka/RoomAlive
        public void ThresholdHighPass(ByteImage a, byte threshold)
        {
            byte *pa = a.data;
            byte *p  = data;

            for (int i = 0; i < a.width * a.height; i++)
            {
                if (*pa > threshold)
                {
                    *p++ = *pa;
                }
                else
                {
                    *p++ = 0;
                }
                pa++;
            }
        }
コード例 #7
0
        public void CopyRectangle(ByteImage byteImage, int startX, int startY, int w, int h)
        {
            byte *  pOrig    = byteImage.Data(0, 0);
            ARGB32 *pOutOrig = data;
            byte *  p;
            ARGB32 *pOut;

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

                    pOut->A = 255;
                    pOut->R = pOut->G = pOut->B = *p;
                }
            }
        }