internal ImageItem(FileIndex fileIndex) { FileIndex = fileIndex; }
private void DrawFileIndex() { var imageItem = listboxImages.SelectedItem as ImageItem; if (imageItem == null) { return; } var fileIndex = imageItem.FileIndex; if (_currentFileIndex != fileIndex) { _currentFileIndex = fileIndex; var rawBytes = IFSUtils.DecompressLSZZ(fileIndex.Read()); try { _currentRaw = IFSUtils.DecodeRaw(rawBytes); } catch (Exception e) { _currentRaw = null; labelStatus.Text = string.Format("Couldn't decode raw #{0}: {1}", fileIndex.EntryNumber, e); return; } } if (_currentRaw == null) { return; } if (updownIndexSelect.Value == 0) { updownIndexSelect.Maximum = _currentRaw.IndexSize - 1; int indexGuess; if (!_indexGuesses.TryGetValue(_currentRaw.RawLength, out indexGuess)) { indexGuess = (int) (((decimal) _currentRaw.IndexSize)/2); } updownIndexSelect.Value = indexGuess; } var index = (int) updownIndexSelect.Value; _indexGuesses[_currentRaw.RawLength] = index; var size = _currentRaw.GetSize(index); labelStatus.Text = string.Format("#{0}: {1} bytes decompresses to {2} bytes (index {3} = {4}x{5})", fileIndex.EntryNumber, fileIndex.Size, _currentRaw.RawLength, index, size.X, size.Y); var oldImage = pictureboxPreview.Image; pictureboxPreview.Image = DrawToBitmap(); if (oldImage != null) { oldImage.Dispose(); } }