public PaletteReductionSettings(ChrPipeline pipeline, ImageRenderControl image) { _loading = true; Pipeline = pipeline; _image = image; InitializeComponent(); RefreshLayout(); _loading = false; }
private void AddPipelineButton_Click(object sender, EventArgs e) { var option = _imagePipelineChoices.Keys.ToArray()[NewPipelineType.SelectedIndex]; switch (option) { case ImagePipelines.Chr: var baseFile = _file.GetRelativeDirectory() + @"/" + Path.GetFileNameWithoutExtension(_file.File.Name); Pipeline = new ChrPipeline(_file, baseFile + ".chr", baseFile + ".pal"); ChrPipelinePanel.Pipeline = Pipeline as ChrPipeline; PaletteReductionPanel.Pipeline = Pipeline as ChrPipeline; RegisterChange(); break; } RefreshLayout(); }
public ImageRenderControl(string filename) { try { ImageSource = ChrPipeline.LoadImageFile(filename); Palette = new List <Color>(); RefreshPalette(ImageSource); _wantedWidth = ImageSource.Width; _wantedHeight = ImageSource.Height; } catch (Exception ex) { ImageSource = new Bitmap(1, 1); Program.Error(string.Format("Could not open image file '{0}'", new FileInfo(filename).Name), ex); } }
public ChrPipelineSettings(ChrPipeline pipeline, ImageRenderControl image) { _loading = true; Pipeline = pipeline; _paletteSource = image.Palette; InitializeComponent(); RefreshLayout(); _loading = false; PaletteEntries.OrderUpdated += () => { SetPaletteAssignments(); }; PaletteEntries.MouseOverColor += (colors) => { PreviewPaletteColor(colors); }; image.PaletteChanged += () => { _loading = true; RefreshLayout(); _loading = false; }; }
// IMPORT public void GetProjectModel(AsmProject project) { var errors = new List <string>(); var fileReferences = new Dictionary <int, AsmProjectFile>(); project.Type = Type; project.Name = Name; if (ExtraDirectories != null) { project.Directories = ExtraDirectories .Select(d => new DirectoryInfo(Path.Combine(project.Directory.FullName, d))) .Where(d => d.Exists).ToList(); } foreach (var fileHeader in Files) { var fileInfo = new FileInfo(Path.Combine(project.Directory.FullName, fileHeader.RelativePath)); var file = new AsmProjectFile { Project = project }; file.File = fileInfo; if (!fileInfo.Exists) { file.Missing = true; } file.Mode = fileHeader.Mode; if (fileHeader.Pipeline != null) { switch (fileHeader.Pipeline.Type) { case "chr": // TODO: Deserialization method on the pipeline itself var chrOutput = Path.Combine(project.Directory.FullName, fileHeader.Pipeline.Output[0]); var paletteOutput = fileHeader.Pipeline.Output.Length < 2 || fileHeader.Pipeline.Output[1] == null ? null : Path.Combine(project.Directory.FullName, fileHeader.Pipeline.Output[1]); var pipeline = new ChrPipeline(file, chrOutput, paletteOutput, fileHeader.Pipeline.LastProcessed); pipeline.SetSettings(fileHeader.Pipeline.Settings); file.Pipeline = pipeline; break; } } fileReferences.Add(fileHeader.Id, file); project.Files.Add(file); } var buildConfigurations = new List <BuildConfigurationHeader>(); if (Cartridge != null) { buildConfigurations.Add(Cartridge); } if (BuildConfigurations != null) { buildConfigurations.AddRange(BuildConfigurations); } foreach (var configurationHeader in buildConfigurations) { var cData = configurationHeader.Data; var configuration = new NesCartridge { ChrBuildPath = cData[0], PrgBuildPath = cData[1], BuildPath = cData[2], ChrFile = cData[3], DebugFile = cData[4], Filename = cData[5], LinkerConfigFile = cData[6], MapFile = cData[7], PrgFile = cData[8], Name = cData.Length > 9 ? cData[9] : null, Symbols = cData.Length > 10 ? cData[10].Split(new [] { ',' }, StringSplitOptions.RemoveEmptyEntries).ToList() : new List <string>(), CalculateChecksum = cData.Length > 11 ? cData[11] != "0" : true, }; if (configurationHeader.ChrBankFileIds != null) { foreach (var bank in configurationHeader.ChrBankFileIds) { var chrBank = new ChrBank(); foreach (var fileId in bank) { chrBank.Sources.Add(fileReferences[fileId]); } configuration.ChrBanks.Add(chrBank); } } project.BuildConfigurations.Add(configuration); } if (errors.Any()) { throw new Exception(string.Join(Environment.NewLine, errors)); } project.Pristine = true; }