Exemplo n.º 1
0
 internal ImageItem(FileIndex fileIndex)
 {
     FileIndex = fileIndex;
 }
Exemplo n.º 2
0
        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();
            }
        }