コード例 #1
0
        private JsdFileViewModel CreateJsdFile()
        {
            bool          _isOk           = true;
            StringBuilder _sbErrorMessage = new StringBuilder("Error:\n");

            if (this.tbFileName.Text == String.Empty)
            {
                _sbErrorMessage.AppendLine("File name is empty.");
                _isOk = false;
            }

            int _structsNum = 0;

            if (!Int32.TryParse(this.tbStructsNum.Text, out _structsNum))
            {
                _sbErrorMessage.AppendLine(String.Format("\"{0}\" is not a number.", this.tbStructsNum.Text));
                _isOk = false;
            }

            int _auxDataNum = 0;

            if (!Int32.TryParse(this.tbAuxDataNum.Text, out _auxDataNum))
            {
                _sbErrorMessage.AppendLine(String.Format("\"{0}\" is not a number.", this.tbAuxDataNum.Text));
                _isOk = false;
            }

            int _tileLocImagesNum = 0;

            if (!Int32.TryParse(this.tbTileLocsImagesNum.Text, out _tileLocImagesNum))
            {
                _sbErrorMessage.AppendLine(String.Format("\"{0}\" is not a number.", this.tbTileLocsImagesNum.Text));
                _isOk = false;
            }

            bool _isHighDefenition = this.cbIsHD.IsChecked == true;

            JsdFileViewModel _jsdFileViewModel = null;

            if (_isOk)
            {
                Ja2Data.JsdFile _jsdFile = new Ja2Data.JsdFile(
                    _structsNum, _auxDataNum, _tileLocImagesNum, _isHighDefenition);
                _jsdFileViewModel = new JsdFileViewModel(_jsdFile, this.tbFileName.Text);
            }
            else
            {
                this.tbError.Text          = _sbErrorMessage.ToString();
                this.ttErrorMessage.IsOpen = true;
            }

            return(_jsdFileViewModel);
        }
コード例 #2
0
ファイル: JsdLoader.cs プロジェクト: egorovav/Ja2Project
        private SlfRecordJsd LoadJsd(Stream aInput)
        {
            SlfRecordJsd _jsdRecord = new SlfRecordJsd();

            Ja2Data.JsdFile _jsdFile = Ja2Data.JsdFile.Load(aInput);

            this.FJsdFileIsHiDefinition = _jsdFile.IsHighDefenition;

            this.FProfileXSize = Ja2Data.JsdTile.GetProfileXSize(this.FJsdFileIsHiDefinition);
            this.FProfileYSize = Ja2Data.JsdTile.GetProfileYSize(this.FJsdFileIsHiDefinition);

            this.FJsdTileCell = new List <JsdTileCell>(this.FStrCount * FProfileXSize * FProfileYSize);

            _jsdRecord.ID = _jsdFile.FormatId;
            _jsdRecord.NumberOfImageTileLocsStored   = _jsdFile.NumberOfImageTileLocsStored;
            _jsdRecord.NumberOfStructuresStored      = _jsdFile.NumberOfStructuresStored;
            _jsdRecord.NumberOfStructuresAndOrImages = _jsdFile.NumberOfElements;
            _jsdRecord.StructureDataSize             = _jsdFile.StructureDataSize;
            _jsdRecord.Unused = _jsdFile.Unused;

            _jsdRecord.UserId      = this.FUserId;
            _jsdRecord.DateCreated = DateTime.Now;

            var _flags = this.FJsdFlags.Where(x => (x.Mask & (byte)_jsdFile.Flags) != 0);

            foreach (Flag _flag in _flags)
            {
                JsdRecordHeaderFlag _recFlag = new JsdRecordHeaderFlag();
                _recFlag.FlagId       = (byte)_flag.Id;
                _recFlag.SlfRecordJsd = _jsdRecord;
                this.FJsdHeaderFlags.Add(_recFlag);
            }

            if (_jsdFile.Auxilarity.Length > 0)
            {
                JsdAuxData _auxData = this.LoadJsdAux(_jsdFile.Auxilarity, _jsdFile.TileLocData);
                _auxData.SlfRecordJsd = _jsdRecord;
                this.FJsdAuxData.Add(_auxData);
            }


            if (_jsdFile.Structs.Length > 0)
            {
                foreach (Ja2Data.JsdStruct _struct in _jsdFile.Structs)
                {
                    JsdStructure _structRec = this.LoadStructure(_struct);
                    _structRec.SlfRecordJsd = _jsdRecord;
                    this.FJsdStructures.Add(_structRec);
                }
            }

            return(_jsdRecord);
        }
コード例 #3
0
ファイル: Ja2DataAccess.cs プロジェクト: egorovav/Ja2Project
        private Ja2Data.SlfFile.Record DownloadJsdRecord(SlfRecordJsd aJsdRecord)
        {
            this.FJsdCells = new List <JsdCell>(100 * aJsdRecord.NumberOfStructuresStored);

            string _queryString = @"Select T.JsdTileId, C.RowNumber, C.CellNumber, Value
	from JsdTileCell C
	inner join JsdTile T on C.JsdTileId = T.JsdTileId
	inner join JsdStructure S on S.JsdStructureId = T.JsdStructureId
	inner join SlfRecordJsd SRJ on SRJ.SlfRecordJsdId = S.SlfRecordJsdId
	where SRJ.SlfRecordJsdId = @JsdFileId"    ;

            DbRawSqlQuery _query = this.FContext.Database.SqlQuery(typeof(JsdCell), _queryString,
                                                                   new SqlParameter("@JsdFileId", aJsdRecord.SlfRecordJsdId));

            var _enum = _query.GetEnumerator();

            while (_enum.MoveNext())
            {
                this.FJsdCells.Add(((JsdCell)_enum.Current));
            }

            Ja2Data.SlfFile.Record.Header _header = this.DownloadSlfRecordHeader(aJsdRecord.SlfRecordHeader);
            Ja2Data.SlfFile.Record        _jsdRec = new Ja2Data.SlfFile.Record(_header);
            _jsdRec.Data = new byte[_header.uiLength];

            int _flags = 0;

            foreach (JsdRecordHeaderFlag _flag in aJsdRecord.JsdRecordHeaderFlag)
            {
                _flags |= _flag.JsdHeaderFlags.Mask.Value;
            }

            Ja2Data.JsdFile.Header _jsdHeader = new Ja2Data.JsdFile.Header(
                aJsdRecord.ID,
                (ushort)aJsdRecord.NumberOfStructuresAndOrImages,
                (ushort)aJsdRecord.NumberOfStructuresStored,
                (ushort)aJsdRecord.StructureDataSize,
                (byte)_flags,
                aJsdRecord.Unused,
                (ushort)aJsdRecord.NumberOfImageTileLocsStored
                );

            Ja2Data.JsdFile _jsdFile = new Ja2Data.JsdFile(_jsdHeader);

            if (aJsdRecord.JsdAuxData.Count > 0)
            {
                JsdAuxData _jsdAuxData = aJsdRecord.JsdAuxData.First();

                if (aJsdRecord.NumberOfImageTileLocsStored > 0)
                {
                    Array.Copy(_jsdAuxData.TileLocationData, _jsdFile.TileLocData, _jsdFile.TileLocData.Length);
                }

                int i = 0;
                foreach (AuxDataJsdAux _aux in _jsdAuxData.AuxDataJsdAux)
                {
                    _jsdFile.Auxilarity[i] = this.DownloadAuxObjectData(_aux.AuxObjectData);
                    i++;
                }
            }

            if (aJsdRecord.JsdStructure.Count > 0)
            {
                int i = 0;
                foreach (JsdStructure _struct in aJsdRecord.JsdStructure)
                {
                    _jsdFile.Structs[i] = this.DownloadJsdStructure(_struct, _jsdFile.IsHighDefenition);
                    i++;
                }
            }

            using (MemoryStream _ms = new MemoryStream(_jsdRec.Data))
            {
                _jsdFile.Save(_ms);
            }

            return(_jsdRec);
        }