public void DetectLCM(byte[] plane, uint NoMaskCRC, bool Reverse) { bool clear = true; uint checksum = NoMaskCRC; var maskSize = Width * Height / 8; var maskedPlane = new byte[maskSize]; for (int k = -1; k < Masks.Length; k++) { if (k >= 0) { checksum = FrameUtil.ChecksumWithMask(plane, Masks[k], Reverse); } foreach (var af in Frames) { if (af.Hash == checksum) { if (clear) { ClearLCMBuffer(); clear = false; } for (int i = 0; i < af.Planes.Count; i++) { FrameUtil.OrPlane(af.PlaneData[i], LCMBufferPlanes[i]); } } } } }
public bool DetectLCM(byte[] plane, uint NoMaskCRC, bool Reverse, bool clear) { uint checksum = NoMaskCRC; var maskSize = Width * Height / 8; var maskedPlane = new byte[maskSize]; for (int k = -1; k < Masks.Length; k++) { if (k >= 0) { checksum = FrameUtil.ChecksumWithMask(plane, Masks[k], Reverse); } foreach (var af in Frames) { if (af.Hash == checksum) { if (clear) { ClearLCMBuffer(); clear = false; if (SwitchMode == SwitchMode.MaskedReplace) { Common.FrameUtil.ClearPlane(ReplaceMask); } } for (int i = 0; i < af.Planes.Count; i++) { FrameUtil.OrPlane(af.PlaneData[i], LCMBufferPlanes[i]); if (SwitchMode == SwitchMode.MaskedReplace) { FrameUtil.OrPlane(af.Mask, ReplaceMask); } } } } } return(clear); }