public static bool FastCompare(int offset, int size, int ptr1, int ptr2, SimpleBitmapInfo sharedInfo) { if (NativeMethods.memcmp((byte *)(ptr1 + offset), (byte *)(ptr2 + offset), (uint)size) != 0) { return(false); } return(true); }
public SimpleBitmap() { Scan0 = IntPtr.Zero; bitmapData = null; bitMap = null; Info = new SimpleBitmapInfo(); }
public static bool Compare(int y, int rowsize, int ptr1, int ptr2, SimpleBitmapInfo sharedInfo) { int calc = 0; int Size = sharedInfo.Width * sharedInfo.PixelSize * rowsize; calc = y * sharedInfo.Stride; if (NativeMethods.memcmp((byte *)(ptr1 + calc), (byte *)(ptr2 + calc), (uint)Size) != 0) { return(false); } return(true); }
public static bool Compare(Rectangle block, int ptr1, int ptr2, SimpleBitmapInfo sharedInfo) { int calc = 0; int WidthSize = block.Width * sharedInfo.PixelSize; calc = (block.Y) * sharedInfo.Stride + block.X * sharedInfo.PixelSize; for (int i = 0; i < block.Height; i++) { if (NativeMethods.memcmp((byte *)(ptr1 + calc), (byte *)(ptr2 + calc), (uint)WidthSize) != 0) { return(false); } calc += sharedInfo.Stride; } return(true); }
public void Lock() { if (Locked) { throw new Exception("Already locked"); } lock (ProcessingLock) { bitmapData = bitMap.LockBits(new Rectangle(0, 0, bitMap.Width, bitMap.Height), ImageLockMode.ReadWrite, bitMap.PixelFormat); Info = new SimpleBitmapInfo(bitmapData); Scan0 = bitmapData.Scan0; Scan0_int = Scan0.ToInt32(); } }