private void _read() { _magic = m_io.ReadBytes(8); if (!((KaitaiStream.ByteArrayCompare(Magic, new byte[] { 65, 78, 68, 82, 79, 73, 68, 33 }) == 0))) { throw new ValidationNotEqualError(new byte[] { 65, 78, 68, 82, 79, 73, 68, 33 }, Magic, M_Io, "/seq/0"); } _kernel = new Load(m_io, this, m_root); _ramdisk = new Load(m_io, this, m_root); _second = new Load(m_io, this, m_root); _tagsLoad = m_io.ReadU4le(); _pageSize = m_io.ReadU4le(); _headerVersion = m_io.ReadU4le(); _osVersion = new OsVersion(m_io, this, m_root); _name = System.Text.Encoding.GetEncoding("ASCII").GetString(KaitaiStream.BytesTerminate(m_io.ReadBytes(16), 0, false)); _cmdline = System.Text.Encoding.GetEncoding("ASCII").GetString(KaitaiStream.BytesTerminate(m_io.ReadBytes(512), 0, false)); _sha = m_io.ReadBytes(32); _extraCmdline = System.Text.Encoding.GetEncoding("ASCII").GetString(KaitaiStream.BytesTerminate(m_io.ReadBytes(1024), 0, false)); if (HeaderVersion > 0) { _recoveryDtbo = new SizeOffset(m_io, this, m_root); } if (HeaderVersion > 0) { _bootHeaderSize = m_io.ReadU4le(); } if (HeaderVersion > 1) { _dtb = new LoadLong(m_io, this, m_root); } }
protected override IEnumerator ProcessPayload(VisualPayload payload) { var filesize = FileSize.GetFirstValue(payload.Data); var significantStream = SignificantBitstream .GetFirstValue(payload.Data); var insignificantStream = InsignificantBitStream .GetFirstValue(payload.Data); var sizeOffset = SizeOffset.GetFirstValue(payload.Data); var csView = Assembler.ConstructCsViewStep1(significantStream, insignificantStream, filesize, sizeOffset /* * filesize/700000*/); csView.Initialize(this, payload); csView.SetTexture(VisualizerTexture.GetFirstValue(payload.Data)); CsVisualizerTarget.SetValue(new CsVisContainer(csView), payload.Data); var newPayload = new VisualPayload(payload.Data, new VisualDescription(csView.Bound)); var iterator = Router.TransmitAll(newPayload); while (iterator.MoveNext()) { yield return(null); } }
public Image GetPartialImage(Image image, SizeOffset sizeOffset) { Bitmap original = new Bitmap(image); Rectangle srcRect = new Rectangle( sizeOffset.OffsetX, sizeOffset.OffsetY, sizeOffset.SizeX, sizeOffset.SizeY); return(sizeOffset.SizeX == 0 || sizeOffset.SizeY == 0 ? null : original.Clone(srcRect, original.PixelFormat)); }
public SizeOffset GetChanges(Image newImage) { var newImageBmp = new Bitmap(newImage); var x = newImage.Width; var y = newImage.Height; var result = new SizeOffset() { OffsetX = x, OffsetY = y, SizeX = 0, SizeY = 0 }; var isChanged = false; if (oldImage != null) { for (int i = 0; i < x; i++) { for (int j = 0; j < y; j++) { Color a = oldImage.GetPixel(i, j); Color b = newImageBmp.GetPixel(i, j); if (!isColorEqual(a, b)) { isChanged = true; result.OffsetX = i > result.OffsetX ? i : result.OffsetX; result.OffsetY = j > result.OffsetY ? j : result.OffsetY; result.SizeX = i < result.SizeX ? i : result.SizeX; result.SizeY = j < result.SizeY ? j : result.SizeY; } } } } oldImage = newImageBmp; return(isChanged ? result : new SizeOffset() { OffsetX = 0, OffsetY = 0, SizeX = x, SizeY = y }); }