예제 #1
0
파일: FastBitmap.cs 프로젝트: sbarisic/Foam
        public void SetPixelChecked(int X, int Y, FastColor Clr)
        {
            if (X < 0 || X >= Width || Y < 0 || Y >= Height)
            {
                return;
            }

            SetPixel(X, Y, Clr);
        }
예제 #2
0
파일: FastBitmap.cs 프로젝트: sbarisic/Foam
 public static bool IsAlpha(FastColor C)
 {
     return(C.R == 0 && C.G == 0 && C.B == 0 && C.A == 0);
 }
예제 #3
0
파일: FastBitmap.cs 프로젝트: sbarisic/Foam
        public FastBitmap Extend()
        {
            FastBitmap NewBitmap = new FastBitmap(Width, Height);

            for (int Y = 0; Y < Height; Y++)
            {
                for (int X = 0; X < Width; X++)
                {
                    FastColor Cur;

                    if (FastColor.IsAlpha(Cur = GetPixel(X, Y)))
                    {
                        FastColor CopyClr;

                        // Top row
                        if (!FastColor.IsAlpha(CopyClr = GetPixelChecked(X - 1, Y + 1)))
                        {
                            NewBitmap.SetPixel(X, Y, CopyClr);
                            continue;
                        }
                        if (!FastColor.IsAlpha(CopyClr = GetPixelChecked(X, Y + 1)))
                        {
                            NewBitmap.SetPixel(X, Y, CopyClr);
                            continue;
                        }
                        if (!FastColor.IsAlpha(CopyClr = GetPixelChecked(X + 1, Y + 1)))
                        {
                            NewBitmap.SetPixel(X, Y, CopyClr);
                            continue;
                        }

                        // Cur row
                        if (!FastColor.IsAlpha(CopyClr = GetPixelChecked(X - 1, Y)))
                        {
                            NewBitmap.SetPixel(X, Y, CopyClr);
                            continue;
                        }
                        if (!FastColor.IsAlpha(CopyClr = GetPixelChecked(X + 1, Y)))
                        {
                            NewBitmap.SetPixel(X, Y, CopyClr);
                            continue;
                        }

                        // Bottom row
                        if (!FastColor.IsAlpha(CopyClr = GetPixelChecked(X - 1, Y - 1)))
                        {
                            NewBitmap.SetPixel(X, Y, CopyClr);
                            continue;
                        }
                        if (!FastColor.IsAlpha(CopyClr = GetPixelChecked(X, Y - 1)))
                        {
                            NewBitmap.SetPixel(X, Y, CopyClr);
                            continue;
                        }
                        if (!FastColor.IsAlpha(CopyClr = GetPixelChecked(X + 1, Y - 1)))
                        {
                            NewBitmap.SetPixel(X, Y, CopyClr);
                            continue;
                        }
                    }
                    else
                    {
                        NewBitmap.SetPixel(X, Y, Cur);
                    }
                }
            }

            return(NewBitmap);
        }
예제 #4
0
파일: FastBitmap.cs 프로젝트: sbarisic/Foam
 public void SetPixel(int X, int Y, FastColor Clr)
 {
     Scan0[Y * Stride + X] = Clr;
 }