Пример #1
0
        public static string ReloadStci(string aFileName)
        {
            IStci _stci = LoadStci(aFileName);

            using (FileStream _fs = new FileStream(aFileName, FileMode.Create))
                _stci.Save(_fs);
            return(_stci.ToString());
        }
Пример #2
0
        public async void Execute(object parameter)
        {
            TestViewModel _viewModel = (TestViewModel)parameter;

            this.IsCanExecute = false;
            this.IsCanExecute = await Task.Run <bool>(() =>
            {
                try
                {
                    _viewModel.StatusString = String.Empty;
                    _viewModel.ResultString = String.Empty;
                    _viewModel.StatusString = String.Empty;

                    int i = 0;
                    string _folderName = Path.Combine(
                        Path.GetDirectoryName(_viewModel.FileName),
                        Path.GetFileNameWithoutExtension(_viewModel.FileName));

                    Directory.CreateDirectory(_folderName);

                    using (FileStream _input = new FileStream(_viewModel.FileName, FileMode.Open))
                    {
                        using (BinaryReader _br = new BinaryReader(_input))
                        {
                            while (_input.Position < _input.Length)
                            {
                                IStci _stci = StciLoader.LoadStci(_input);
                                i++;
                                string _fileName = Path.Combine(_folderName, i.ToString() + ".STI");
                                using (FileStream _output = new FileStream(_fileName, FileMode.Create))
                                {
                                    _stci.Save(_output);
                                }
                            }
                        }
                    }

                    _viewModel.StatusString = "Done";
                }
                catch (Exception exc)
                {
                    _viewModel.ErrorString = Common.GetErrorString(exc);
                }

                return(true);
            });
        }
Пример #3
0
        private void FLoadSlfWorker_DoWork(object sender, DoWorkEventArgs e)
        {
            this.IsBusy = true;
            try
            {
                string  _slfFileName = (string)e.Argument;
                SlfFile _slfFile     = new SlfFile(_slfFileName);
                _slfFile.LoadRecords();
                var _jsdRecords = _slfFile.Records.Where(x => x.FileNameExtention.ToLower() == ".jsd");
                int _recNum     = _jsdRecords.Count();
                foreach (SlfFile.Record _record in _jsdRecords)
                {
                    JsdFileViewModel _jsdFileViewModel = null;

                    MemoryStream _ms      = new MemoryStream(_record.Data);
                    JsdFile      _jsdFile = JsdFile.Load(_ms);
                    _ms.Close();

                    _jsdFileViewModel = new JsdFileViewModel(_jsdFile, _record.FileName);

                    SlfFile.Record _stiRecord = _slfFile.Records
                                                .Where(x => x.FileName.ToLower() == _record.FileName.ToLower().Replace(".jsd", ".sti"))
                                                .SingleOrDefault();

                    if (_stiRecord != null)
                    {
                        _ms = new MemoryStream(_stiRecord.Data);
                        IStci _stci = StciLoader.LoadStci(_ms);
                        if (_stci.IsIndexed)
                        {
                            _jsdFileViewModel.StciFile = (StciIndexed)_stci;
                        }
                    }

                    this.JsdFilesCount++;
                    this.FLoadSlfWorker.ReportProgress(100 * this.JsdFilesCount / _recNum, _jsdFileViewModel);
                }
            }
            finally
            {
                this.IsBusy = false;
            }
        }
Пример #4
0
        private static IStci LoadStci(BinaryReader _br, string aFileName)
        {
            IStci      _stci   = null;
            StciHeader _header = new StciHeader();

            _header.Read(_br);

            if (_header.IsIndexed)
            {
                _stci = new StciIndexed(_header, aFileName);
                _stci.Load(_br);
            }
            else
            {
                _stci = new StciRgb(_header, aFileName);
                _stci.Load(_br);
            }
            return(_stci);
        }
Пример #5
0
        public JsdFileViewModel LoadJsdFile(string aFile)
        {
            FileStream _fs      = new FileStream(aFile, FileMode.Open);
            JsdFile    _jsdFile = JsdFile.Load(_fs);

            _fs.Close();

            string _fileName = String.Empty;

            if (this.FolderName != String.Empty)
            {
                _fileName = aFile.Replace(this.FolderName, String.Empty);
            }
            else
            {
                _fileName = Path.GetFileName(aFile);
            }

            JsdFileViewModel _jsdFileViewModel = new JsdFileViewModel(_jsdFile, _fileName);

            _jsdFileViewModel.FullFileName = aFile;

            string _stiFileName = Path.ChangeExtension(aFile, ".sti");

            if (File.Exists(_stiFileName))
            {
                _fs = new FileStream(_stiFileName, FileMode.Open);
                IStci _stci = StciLoader.LoadStci(_fs);
                _fs.Close();
                if (_stci.IsIndexed)
                {
                    _jsdFileViewModel.StciFile = (StciIndexed)_stci;
                }
            }
            return(_jsdFileViewModel);
        }
Пример #6
0
        public static IStci LoadStci(string aFileName)
        {
            using (FileStream _fs = new FileStream(aFileName, FileMode.Open))
            {
                using (BinaryReader _br = new BinaryReader(_fs))
                {
                    IStci      _stci   = null;
                    StciHeader _header = new StciHeader();
                    _header.Read(_br);

                    if (_header.IsIndexed)
                    {
                        _stci = new StciIndexed(_header, aFileName);
                        _stci.Load(_br);
                    }
                    else
                    {
                        _stci = new StciRgb(_header, aFileName);
                        _stci.Load(_br);
                    }
                    return(_stci);
                }
            }
        }
Пример #7
0
        private ImageSource GetGlobalMapImagefFromSti(string aFileName)
        {
            string _path = Path.Combine(this.FGlobalMapsFolder, aFileName);
            IStci  _sti  = null;

            if (File.Exists(_path))
            {
                using (FileStream input = new FileStream(_path, FileMode.Open, FileAccess.Read))
                    _sti = StciLoader.LoadStci(input);
            }
            else
            {
                if (this.SlfFile != null)
                {
                    SlfFile.Record _record = this.SlfFile.Records
                                             .SingleOrDefault(x => x.FileName.ToUpperInvariant() == aFileName.ToUpperInvariant());
                    if (_record != null)
                    {
                        using (MemoryStream input = new MemoryStream(_record.Data))
                            _sti = StciLoader.LoadStci(input);
                    }
                }
            }

            if (_sti == null)
            {
                ImageSourceConverter _isc = new ImageSourceConverter();
                ImageSource          _is  = (ImageSource)_isc.ConvertFromString("MAP_STUB.bmp");
                return(_is);
            }
            else if (_sti is StciIndexed)
            {
                StciIndexed  _stciIndexed = (StciIndexed)_sti;
                List <Color> _palette     = _stciIndexed.ColorPalette
                                            .Select(x => new Color()
                {
                    A = 255, R = x.Red, G = x.Green, B = x.Blue
                })
                                            .ToList();

                StciSubImage   _subImage = _stciIndexed.Images[0];
                StructureImage _image    = new StructureImage(_subImage, _palette);
                BitmapPalette  _pb       = new BitmapPalette(_palette);
                PixelFormat    _pf       = PixelFormats.Indexed8;

                BitmapSource _bitmap = BitmapSource.Create(
                    _subImage.Header.Width,
                    _subImage.Header.Height,
                    96,
                    96,
                    _pf,
                    _pb,
                    _subImage.ImageData,
                    _subImage.Header.Width * _pf.BitsPerPixel / 8);
                return(_bitmap);
            }
            else if (_sti is StciRgb)
            {
                StciRgb     _stciRgb = (StciRgb)_sti;
                PixelFormat _pf      = PixelFormats.Bgr565;

                BitmapSource _bitmap = BitmapSource.Create(
                    _stciRgb.Header.ImageWidth,
                    _stciRgb.Header.ImageHeight,
                    96,
                    96,
                    _pf,
                    null,
                    _stciRgb.ImageData,
                    _stciRgb.Header.ImageWidth * _pf.BitsPerPixel / 8);
                return(_bitmap);
            }

            return(null);
        }