Ejemplo n.º 1
0
        /// <summary>
        /// Function to show the tool form.
        /// </summary>
        private void ShowForm()
        {
            TextureAtlasSettings settings;
            FormAtlasGen         form = null;

            CommonServices.BusyService.SetBusy();

            try
            {
                settings = ToolPlugInService.ReadContentSettings <TextureAtlasSettings>(typeof(TextureAtlasToolPlugIn).FullName);

                if (settings == null)
                {
                    settings = new TextureAtlasSettings();
                }

                (List <IContentFileExplorerSearchEntry> searchEntries, List <ContentFileExplorerDirectoryEntry> entries) = GetFileEntries();

                if (_fileVm == null)
                {
                    _fileVm = new SpriteFiles();
                }

                if (_textureAtlas == null)
                {
                    _textureAtlas = new TextureAtlas();
                }

                var fileIO = new FileIOService(_fileManager, _defaultImageCodec, _defaultSpriteCodec);

                _fileVm.Initialize(new SpriteFilesParameters(entries, new EditorContentSearchService(searchEntries), CommonServices));
                _textureAtlas.Initialize(new TextureAtlasParameters(settings,
                                                                    _fileVm,
                                                                    new GorgonTextureAtlasService(GraphicsContext.Renderer2D),
                                                                    fileIO,
                                                                    FolderBrowser,
                                                                    CommonServices));

                form = new FormAtlasGen();
                form.SetupGraphics(GraphicsContext);
                form.SetDataContext(_textureAtlas);

                CommonServices.BusyService.SetIdle();
                form.ShowDialog(GorgonApplication.MainForm);

                ToolPlugInService.WriteContentSettings(typeof(TextureAtlasToolPlugIn).FullName, settings);
            }
            catch (Exception ex)
            {
                CommonServices.MessageDisplay.ShowError(ex, Resources.GORTAG_ERR_LAUNCH);
            }
            finally
            {
                CommonServices.BusyService.SetIdle();
                form?.Dispose();
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Function to show the tool form.
        /// </summary>
        private void ShowForm()
        {
            FormExtract         _form   = null;
            GorgonTexture2DView texture = null;
            Stream fileStream           = null;
            ExtractSpriteToolSettings settings;
            IGorgonImage image = null;
            IContentFile textureFile;

            CommonServices.BusyService.SetBusy();

            try
            {
                settings = ToolPlugInService.ReadContentSettings <ExtractSpriteToolSettings>(typeof(ExtractSpriteToolPlugIn).FullName);

                if (settings == null)
                {
                    settings = new ExtractSpriteToolSettings();
                }

                textureFile = _fileManager.SelectedFile;
                fileStream  = textureFile.OpenRead();

                texture = GorgonTexture2DView.FromStream(GraphicsContext.Graphics, fileStream, _defaultImageCodec, options: new GorgonTexture2DLoadOptions
                {
                    Name          = "Extractor Texture Atlas",
                    Binding       = TextureBinding.ShaderResource,
                    Usage         = ResourceUsage.Default,
                    IsTextureCube = false
                });

                image = texture.Texture.ToImage();

                fileStream.Dispose();

                if (string.IsNullOrWhiteSpace(settings.LastOutputDir))
                {
                    settings.LastOutputDir = Path.GetDirectoryName(textureFile.Path).FormatDirectory('/');
                }
                else
                {
                    if (!_fileManager.DirectoryExists(settings.LastOutputDir.FormatDirectory('/')))
                    {
                        settings.LastOutputDir = Path.GetDirectoryName(textureFile.Path).FormatDirectory('/');
                    }
                }

                _extractData.Value.Texture   = texture;
                _extractData.Value.SkipEmpty = settings.AllowEmptySpriteSkip;
                _extractData.Value.SkipColor = new GorgonColor(settings.SkipColor);

                var extractViewModel = new Extract();
                extractViewModel.Initialize(new ExtractParameters(settings,
                                                                  _extractData.Value,
                                                                  textureFile,
                                                                  new ExtractorService(GraphicsContext.Renderer2D, _fileManager,
                                                                                       new GorgonV3SpriteBinaryCodec(GraphicsContext.Renderer2D)),
                                                                  new ColorPickerService(),
                                                                  FolderBrowser,
                                                                  CommonServices));

                _form = new FormExtract();
                _form.SetupGraphics(GraphicsContext);
                _form.SetDataContext(extractViewModel);
                _form.ShowDialog(GorgonApplication.MainForm);

                ToolPlugInService.WriteContentSettings(typeof(ExtractSpriteToolPlugIn).FullName, settings);
            }
            catch (Exception ex)
            {
                CommonServices.MessageDisplay.ShowError(ex, Resources.GOREST_ERR_LAUNCH);
            }
            finally
            {
                _form?.Dispose();
                fileStream?.Dispose();
                image?.Dispose();
                texture?.Dispose();
                CommonServices.BusyService.SetIdle();
            }
        }