diff --git a/App.config b/App.config new file mode 100644 index 0000000..5754728 --- /dev/null +++ b/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/DDS Header Generator.csproj b/DDS Header Generator.csproj new file mode 100644 index 0000000..bf9db6d --- /dev/null +++ b/DDS Header Generator.csproj @@ -0,0 +1,84 @@ + + + + + Debug + AnyCPU + {B5F572D0-C5CB-4739-8982-D9C2C7C4CD4C} + WinExe + DDS_Header_Generator + DDS Header Generator + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + \ No newline at end of file diff --git a/DDS Header Generator.sln b/DDS Header Generator.sln new file mode 100644 index 0000000..ca80f82 --- /dev/null +++ b/DDS Header Generator.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.6.33829.357 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DDS Header Generator", "DDS Header Generator.csproj", "{B5F572D0-C5CB-4739-8982-D9C2C7C4CD4C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {B5F572D0-C5CB-4739-8982-D9C2C7C4CD4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B5F572D0-C5CB-4739-8982-D9C2C7C4CD4C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B5F572D0-C5CB-4739-8982-D9C2C7C4CD4C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B5F572D0-C5CB-4739-8982-D9C2C7C4CD4C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A6606F05-7920-4011-80AE-818FEB12CA0B} + EndGlobalSection +EndGlobal diff --git a/Form1.Designer.cs b/Form1.Designer.cs new file mode 100644 index 0000000..754c0b1 --- /dev/null +++ b/Form1.Designer.cs @@ -0,0 +1,247 @@ +namespace DDS_Header_Generator +{ + partial class Form1 + { + /// + /// Обязательная переменная конструктора. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Освободить все используемые ресурсы. + /// + /// истинно, если управляемый ресурс должен быть удален; иначе ложно. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Код, автоматически созданный конструктором форм Windows + + /// + /// Требуемый метод для поддержки конструктора — не изменяйте + /// содержимое этого метода с помощью редактора кода. + /// + private void InitializeComponent() + { + this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel(); + this.fileBTN = new System.Windows.Forms.Button(); + this.okBTN = new System.Windows.Forms.Button(); + this.folderBTN = new System.Windows.Forms.Button(); + this.cancelBTN = new System.Windows.Forms.Button(); + this.label1 = new System.Windows.Forms.Label(); + this.wInput = new System.Windows.Forms.NumericUpDown(); + this.label2 = new System.Windows.Forms.Label(); + this.hInput = new System.Windows.Forms.NumericUpDown(); + this.label3 = new System.Windows.Forms.Label(); + this.cInput = new System.Windows.Forms.ComboBox(); + this.label4 = new System.Windows.Forms.Label(); + this.offsetInput = new System.Windows.Forms.NumericUpDown(); + this.tableLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.wInput)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.hInput)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.offsetInput)).BeginInit(); + this.SuspendLayout(); + // + // tableLayoutPanel1 + // + this.tableLayoutPanel1.ColumnCount = 2; + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); + this.tableLayoutPanel1.Controls.Add(this.fileBTN, 0, 0); + this.tableLayoutPanel1.Controls.Add(this.okBTN, 1, 0); + this.tableLayoutPanel1.Controls.Add(this.folderBTN, 0, 1); + this.tableLayoutPanel1.Controls.Add(this.cancelBTN, 1, 1); + this.tableLayoutPanel1.Location = new System.Drawing.Point(10, 215); + this.tableLayoutPanel1.Name = "tableLayoutPanel1"; + this.tableLayoutPanel1.RowCount = 2; + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 53F)); + this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 47F)); + this.tableLayoutPanel1.Size = new System.Drawing.Size(200, 70); + this.tableLayoutPanel1.TabIndex = 0; + // + // fileBTN + // + this.fileBTN.Location = new System.Drawing.Point(3, 3); + this.fileBTN.Name = "fileBTN"; + this.fileBTN.Size = new System.Drawing.Size(94, 31); + this.fileBTN.TabIndex = 0; + this.fileBTN.Text = "Open file"; + this.fileBTN.UseVisualStyleBackColor = true; + this.fileBTN.Click += new System.EventHandler(this.folderOpen); + // + // okBTN + // + this.okBTN.Location = new System.Drawing.Point(103, 3); + this.okBTN.Name = "okBTN"; + this.okBTN.Size = new System.Drawing.Size(94, 31); + this.okBTN.TabIndex = 1; + this.okBTN.Text = "Save file(s)"; + this.okBTN.UseVisualStyleBackColor = true; + // + // folderBTN + // + this.folderBTN.Location = new System.Drawing.Point(3, 40); + this.folderBTN.Name = "folderBTN"; + this.folderBTN.Size = new System.Drawing.Size(94, 27); + this.folderBTN.TabIndex = 2; + this.folderBTN.Text = "Open folder"; + this.folderBTN.UseVisualStyleBackColor = true; + // + // cancelBTN + // + this.cancelBTN.Location = new System.Drawing.Point(103, 40); + this.cancelBTN.Name = "cancelBTN"; + this.cancelBTN.Size = new System.Drawing.Size(94, 27); + this.cancelBTN.TabIndex = 3; + this.cancelBTN.Text = "Cansel"; + this.cancelBTN.UseVisualStyleBackColor = true; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(10, 10); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(35, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Width"; + // + // wInput + // + this.wInput.Location = new System.Drawing.Point(10, 30); + this.wInput.Maximum = new decimal(new int[] { + 100000, + 0, + 0, + 0}); + this.wInput.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.wInput.Name = "wInput"; + this.wInput.Size = new System.Drawing.Size(200, 20); + this.wInput.TabIndex = 2; + this.wInput.Value = new decimal(new int[] { + 1024, + 0, + 0, + 0}); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(10, 60); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(38, 13); + this.label2.TabIndex = 3; + this.label2.Text = "Hieght"; + // + // hInput + // + this.hInput.Location = new System.Drawing.Point(10, 80); + this.hInput.Maximum = new decimal(new int[] { + 100000, + 0, + 0, + 0}); + this.hInput.Minimum = new decimal(new int[] { + 1, + 0, + 0, + 0}); + this.hInput.Name = "hInput"; + this.hInput.Size = new System.Drawing.Size(200, 20); + this.hInput.TabIndex = 4; + this.hInput.Value = new decimal(new int[] { + 1024, + 0, + 0, + 0}); + // + // label3 + // + this.label3.AutoSize = true; + this.label3.Location = new System.Drawing.Point(10, 110); + this.label3.Name = "label3"; + this.label3.Size = new System.Drawing.Size(38, 13); + this.label3.TabIndex = 5; + this.label3.Text = "Codec"; + // + // cInput + // + this.cInput.FlatStyle = System.Windows.Forms.FlatStyle.System; + this.cInput.FormattingEnabled = true; + this.cInput.Location = new System.Drawing.Point(10, 130); + this.cInput.Name = "cInput"; + this.cInput.Size = new System.Drawing.Size(200, 21); + this.cInput.TabIndex = 6; + // + // label4 + // + this.label4.AutoSize = true; + this.label4.Location = new System.Drawing.Point(10, 160); + this.label4.Name = "label4"; + this.label4.Size = new System.Drawing.Size(35, 13); + this.label4.TabIndex = 7; + this.label4.Text = "Offset"; + // + // offsetInput + // + this.offsetInput.Location = new System.Drawing.Point(10, 180); + this.offsetInput.Maximum = new decimal(new int[] { + 1410065408, + 2, + 0, + 0}); + this.offsetInput.Name = "offsetInput"; + this.offsetInput.Size = new System.Drawing.Size(200, 20); + this.offsetInput.TabIndex = 8; + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(224, 301); + this.Controls.Add(this.offsetInput); + this.Controls.Add(this.label4); + this.Controls.Add(this.cInput); + this.Controls.Add(this.label3); + this.Controls.Add(this.hInput); + this.Controls.Add(this.label2); + this.Controls.Add(this.wInput); + this.Controls.Add(this.label1); + this.Controls.Add(this.tableLayoutPanel1); + this.Name = "Form1"; + this.Text = "DDS HG"; + this.tableLayoutPanel1.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.wInput)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.hInput)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.offsetInput)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1; + private System.Windows.Forms.Button fileBTN; + private System.Windows.Forms.Button okBTN; + private System.Windows.Forms.Button folderBTN; + private System.Windows.Forms.Button cancelBTN; + private System.Windows.Forms.Label label1; + private System.Windows.Forms.NumericUpDown wInput; + private System.Windows.Forms.Label label2; + private System.Windows.Forms.NumericUpDown hInput; + private System.Windows.Forms.Label label3; + private System.Windows.Forms.ComboBox cInput; + private System.Windows.Forms.Label label4; + private System.Windows.Forms.NumericUpDown offsetInput; + } +} + diff --git a/Form1.cs b/Form1.cs new file mode 100644 index 0000000..906db95 --- /dev/null +++ b/Form1.cs @@ -0,0 +1,97 @@ +using System; +using System.IO; +using System.Windows.Forms; + +namespace DDS_Header_Generator +{ + public partial class Form1 : Form + + { + private string fileName = string.Empty; + private CodecList codecList; + + public Form1() + { + InitializeComponent(); + + codecList = new CodecList(); + + string[] codecs = codecList.GetCodecList(); + cInput.Items.AddRange(codecs); + cInput.SelectedIndex = Array.IndexOf(codecs, "BC3_UNORM"); + + okBTN.Click += dds_save; + cancelBTN.Click += (s, e) => this.Close(); + fileBTN.Click += fileOpen; + folderBTN.Click += folderOpen; + } + + private void folderOpen(object sender, EventArgs e) + { + FolderBrowserDialog folderDialog = new FolderBrowserDialog(); + DialogResult result = folderDialog.ShowDialog(); + if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(folderDialog.SelectedPath)) + { + fileName = folderDialog.SelectedPath; + Console.WriteLine(fileName); + } + } + + private void fileOpen(object sender, EventArgs e) + { + OpenFileDialog openFileDialog = new OpenFileDialog(); + DialogResult result = openFileDialog.ShowDialog(); + if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(openFileDialog.FileName)) + { + fileName = openFileDialog.FileName; + Console.WriteLine(fileName); + } + } + + + private void dds_save(object sender, EventArgs e) + { + if (string.IsNullOrWhiteSpace(fileName)) + { + MessageBox.Show("Файл не выбран!", "ВНИМАНИЕ!", MessageBoxButtons.OK, MessageBoxIcon.Warning); + return; + } + + using (FileStream sf = new FileStream(fileName, FileMode.Open, FileAccess.Read)) + { + sf.Seek((long)offsetInput.Value, SeekOrigin.Begin); + byte[] data = new byte[sf.Length - sf.Position]; + sf.Read(data, 0, data.Length); + + int x = (int)wInput.Value; + int y = (int)hInput.Value; + string codec = cInput.SelectedItem.ToString(); + byte[] bpp = codecList.GetBPP(codec); + byte[] cdc = codecList.GetCodec(codec); + byte[] flags = codecList.GetCodecFlags(codec); + byte[] rgbaMask = codecList.GetRGBAMask(codec); + byte[] h_flg = codecList.GetHeadFlags(codec); + + using (FileStream ddsFile = new FileStream("temp.dds", FileMode.Create, FileAccess.Write)) + { + ddsFile.Write(new byte[] { 0x44, 0x44, 0x53, 0x20, 0x7C, 0x00, 0x00, 0x00 }, 0, 8); // DDS Header + ddsFile.Write(h_flg, 0, h_flg.Length); + ddsFile.Write(BitConverter.GetBytes(x), 0, 4); // Height + ddsFile.Write(BitConverter.GetBytes(y), 0, 4); // Width + ddsFile.Write(BitConverter.GetBytes(0), 0, 4); // Linear size + ddsFile.Write(BitConverter.GetBytes(0), 0, 4); // Depth + ddsFile.Write(BitConverter.GetBytes(0), 0, 4); // Mipmap count + ddsFile.Write(BitConverter.GetBytes(0), 0, 44); // Reserved + ddsFile.Write(flags, 0, flags.Length); // Flags + ddsFile.Write(cdc, 0, cdc.Length); // FourCC + ddsFile.Write(bpp, 0, bpp.Length); // BPP + ddsFile.Write(rgbaMask, 0, rgbaMask.Length); + ddsFile.Write(BitConverter.GetBytes(0x08), 0, 4); // Caps + ddsFile.Write(BitConverter.GetBytes(0x1040), 0, 4); // Caps2 + ddsFile.Write(BitConverter.GetBytes(0), 0, 16); // Reserved + ddsFile.Write(data, 0, data.Length); + } + } + } + } +} diff --git a/Form1.resx b/Form1.resx new file mode 100644 index 0000000..29dcb1b --- /dev/null +++ b/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..abf6877 --- /dev/null +++ b/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace DDS_Header_Generator +{ + internal static class Program + { + /// + /// Главная точка входа для приложения. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..1844e98 --- /dev/null +++ b/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Общие сведения об этой сборке предоставляются следующим набором +// набора атрибутов. Измените значения этих атрибутов для изменения сведений, +// связанных со сборкой. +[assembly: AssemblyTitle("DDS Header Generator")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("DDS Header Generator")] +[assembly: AssemblyCopyright("Copyright © 2023")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Установка значения False для параметра ComVisible делает типы в этой сборке невидимыми +// для компонентов COM. Если необходимо обратиться к типу в этой сборке через +// COM, следует установить атрибут ComVisible в TRUE для этого типа. +[assembly: ComVisible(false)] + +// Следующий GUID служит для идентификации библиотеки типов, если этот проект будет видимым для COM +[assembly: Guid("b5f572d0-c5cb-4739-8982-d9c2c7c4cd4c")] + +// Сведения о версии сборки состоят из указанных ниже четырех значений: +// +// Основной номер версии +// Дополнительный номер версии +// Номер сборки +// Редакция +// +// Можно задать все значения или принять номера сборки и редакции по умолчанию +// используя "*", как показано ниже: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs new file mode 100644 index 0000000..a23e98f --- /dev/null +++ b/Properties/Resources.Designer.cs @@ -0,0 +1,71 @@ +//------------------------------------------------------------------------------ +// +// Этот код создан программным средством. +// Версия среды выполнения: 4.0.30319.42000 +// +// Изменения в этом файле могут привести к неправильному поведению и будут утрачены, если +// код создан повторно. +// +//------------------------------------------------------------------------------ + +namespace DDS_Header_Generator.Properties +{ + + + /// + /// Класс ресурсов со строгим типом для поиска локализованных строк и пр. + /// + // Этот класс был автоматически создан при помощи StronglyTypedResourceBuilder + // класс с помощью таких средств, как ResGen или Visual Studio. + // Для добавления или удаления члена измените файл .ResX, а затем перезапустите ResGen + // с параметром /str или заново постройте свой VS-проект. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Возврат кэшированного экземпляра ResourceManager, используемого этим классом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DDS_Header_Generator.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Переопределяет свойство CurrentUICulture текущего потока для всех + /// подстановки ресурсов с помощью этого класса ресурсов со строгим типом. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Properties/Resources.resx b/Properties/Resources.resx new file mode 100644 index 0000000..ffecec8 --- /dev/null +++ b/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Properties/Settings.Designer.cs b/Properties/Settings.Designer.cs new file mode 100644 index 0000000..2f70c62 --- /dev/null +++ b/Properties/Settings.Designer.cs @@ -0,0 +1,30 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace DDS_Header_Generator.Properties +{ + + + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Properties/Settings.settings b/Properties/Settings.settings new file mode 100644 index 0000000..abf36c5 --- /dev/null +++ b/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/bin/Debug/DDS Header Generator.exe b/bin/Debug/DDS Header Generator.exe new file mode 100644 index 0000000..3a7f40b Binary files /dev/null and b/bin/Debug/DDS Header Generator.exe differ diff --git a/bin/Debug/DDS Header Generator.exe.config b/bin/Debug/DDS Header Generator.exe.config new file mode 100644 index 0000000..5754728 --- /dev/null +++ b/bin/Debug/DDS Header Generator.exe.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/bin/Debug/DDS Header Generator.pdb b/bin/Debug/DDS Header Generator.pdb new file mode 100644 index 0000000..41d6801 Binary files /dev/null and b/bin/Debug/DDS Header Generator.pdb differ diff --git a/codecList.cs b/codecList.cs new file mode 100644 index 0000000..8094310 --- /dev/null +++ b/codecList.cs @@ -0,0 +1,955 @@ +using System; +using System.Collections.Generic; +using System.Linq; + +public class CodecList +{ + public Dictionary> CodecData { get; private set; } + + public CodecList() + { + CodecData = new Dictionary> + { + {"A8_UNORM", new Dictionary + { + {"bpp", new byte[] {0x08, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[] {0x02, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[] {0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00}} + } + }, + + {"AYUV", new Dictionary + { + {"bpp", new byte[] {0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[] {0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[] {0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + } + }, + + {"B4G4R4A4_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x10, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x41, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x0f, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00}} + + } + }, + + {"B5G5R5A1_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x10, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x41, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x7C, 0x00, 0x00, 0xe0, 0x03, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00}} + + } + }, + + + {"B8G8R8A8_UNORM", new Dictionary + { + + {"bpp", new byte[] {0x20, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x41, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff}} + + } + }, + + {"B8G8R8A8_UNORM_SRGB", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"B8G8R8X8_UNORM", new Dictionary + { + + {"bpp", new byte[] {0x20, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x40, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"B8G8R8X8_UNORM_SRGB", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC1_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x44, 0x58, 0x54, 0x31}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC1_UNORM_SRGB", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC2_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x44, 0x58, 0x54, 0x33}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC2_UNORM_SRGB", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC3_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x44, 0x58, 0x54, 0x35}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC3_UNORM_SRGB", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + { "codec", new byte[] { 0x44, 0x58, 0x31, 0x30 }}, + { "flags", new byte[] { 0x04, 0x00, 0x00, 0x00 }}, + { "head_flg", new byte[] { 0x07, 0x10, 0x0A, 0x00 }}, + { "rgb_mask", new byte[] { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }} + + } + }, + + {"BC4_SNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x42, 0x43, 0x34, 0x53}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC4_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x42, 0x43, 0x34, 0x55}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC5_SNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x42, 0x43, 0x35, 0x53}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + } + }, + + {"BC5_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x42, 0x43, 0x35, 0x55}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC6H_SF16", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC6H_UF16", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC7_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"BC7_UNORM_SRGB", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x07, 0x10, 0x0A, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"G8R8_G8B8_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x47, 0x52, 0x47, 0x42}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R10G10B10A2_UINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R10G10B10A2_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R10G10B10_XR_BIAS_A2_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R11G11B10_FLOAT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16G16B16A16_FLOAT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x71, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16G16B16A16_SINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16G16B16A16_SNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x6E, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16G16B16A16_UINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16G16B16A16_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x24, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16G16_FLOAT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x70, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16G16_SINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16G16_SNORM", new Dictionary + { + + {"bpp", new byte[] {0x20, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x00, 0x00, 0x08, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16G16_UINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16G16_UNORM", new Dictionary + { + + {"bpp", new byte[] {0x20, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x40, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16_FLOAT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x6f, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16_SINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16_SNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16_UINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R16_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x10, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x00, 0x00, 0x02, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32G32B32A32_FLOAT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x74, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32G32B32A32_SINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32G32B32A32_UINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32G32B32_FLOAT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32G32B32_SINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32G32B32_UINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32G32_FLOAT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x73, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32G32_SINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32G32_UINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32_FLOAT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x72, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32_SINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R32_UINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R8G8B8A8_SINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R8G8B8A8_SNORM", new Dictionary + { + + {"bpp", new byte[] {0x20, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x00, 0x00, 0x08, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff}} + + } + }, + + {"R8G8B8A8_UINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R8G8B8A8_UNORM", new Dictionary + { + + {"bpp", new byte[] {0x20, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x41, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0xff}} + + } + }, + + {"R8G8B8A8_UNORM_SRGB", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R8G8_B8G8_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x52, 0x47, 0x42, 0x47}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R8G8_SINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R8G8_SNORM", new Dictionary + { + + {"bpp", new byte[]{0x10, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x00, 0x00, 0x08, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R8G8_UINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R8G8_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x10, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x01, 0x00, 0x02, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00}} + + } + }, + + {"R8_SINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R8_SNORM", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R8_UINT", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R8_UNORM", new Dictionary + { + + {"bpp", new byte[]{0x08, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[]{0x00, 0x00, 0x02, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"R9G9B9E5_SHAREDEXP", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"Y210", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"Y216", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"Y410", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"Y416", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[]{0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + + } + }, + + {"YUY2", new Dictionary + { + + {"bpp", new byte[]{0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x59, 0x55, 0x59, 0x32}}, + {"flags", new byte[]{0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[]{0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[]{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }} + + } + }, + }; + } + + public string[] GetCodecList() + { + // Извлекаем ключи (названия кодеков) из словаря и преобразуем их в массив строк + string[] codecArray = CodecData.Keys.ToArray(); + return codecArray; + } + + public byte[] GetBPP(string codecName) + { + if (CodecData.TryGetValue(codecName, out var codecProperties) && codecProperties.TryGetValue("bpp", out var bppData)) + { + return bppData; + } + + return null; + } + + public byte[] GetCodec(string codecName) + { + if (CodecData.TryGetValue(codecName, out var codecProperties) && codecProperties.TryGetValue("codec", out var bppData)) + { + return bppData; + } + + return null; + } + + public byte[] GetCodecFlags(string codecName) + { + if (CodecData.TryGetValue(codecName, out var codecProperties) && codecProperties.TryGetValue("flags", out var bppData)) + { + return bppData; + } + + return null; + } + + public byte[] GetRGBAMask(string codecName) + { + if (CodecData.TryGetValue(codecName, out var codecProperties) && codecProperties.TryGetValue("rgb_mask", out var bppData)) + { + return bppData; + } + + return null; + } + + public byte[] GetHeadFlags(string codecName) + { + if (CodecData.TryGetValue(codecName, out var codecProperties) && codecProperties.TryGetValue("head_flg", out var bppData)) + { + return bppData; + } + + return null; + } +} diff --git a/codecsList.cs b/codecsList.cs new file mode 100644 index 0000000..c98c1c1 --- /dev/null +++ b/codecsList.cs @@ -0,0 +1,46 @@ +using System.Collections.Generic; + +public class CodecList +{ + public Dictionary> CodecData { get; private set; } + + public CodecList() + { + CodecData = new Dictionary> + { + {"A8_UNORM", new Dictionary + { + {"bpp", new byte[] {0x08, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x00, 0x00, 0x00, 0x00}}, + {"flags", new byte[] {0x02, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[] {0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00}} + } + }, + {"AYUV", new Dictionary + { + {"bpp", new byte[] {0x00, 0x00, 0x00, 0x00}}, + {"codec", new byte[] {0x44, 0x58, 0x31, 0x30}}, + {"flags", new byte[] {0x04, 0x00, 0x00, 0x00}}, + {"head_flg", new byte[] {0x0f, 0x10, 0x02, 0x00}}, + {"rgb_mask", new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}} + } + }, + // Add other codec data here + }; + } + + // Optionally, add methods to access and retrieve specific codec information + public byte[] GetBpp(string codecName) + { + if (CodecData.TryGetValue(codecName, out var codecProperties) && codecProperties.TryGetValue("bpp", out var bppData)) + { + return bppData; + } + + // If codec not found, return null or throw an exception, depending on your requirements. + return null; + } + + // Add other methods as needed +} diff --git a/obj/Debug/DDS Header Generator.csproj.AssemblyReference.cache b/obj/Debug/DDS Header Generator.csproj.AssemblyReference.cache new file mode 100644 index 0000000..9f80ff2 Binary files /dev/null and b/obj/Debug/DDS Header Generator.csproj.AssemblyReference.cache differ diff --git a/obj/Debug/DDS Header Generator.csproj.CoreCompileInputs.cache b/obj/Debug/DDS Header Generator.csproj.CoreCompileInputs.cache new file mode 100644 index 0000000..ba1c915 --- /dev/null +++ b/obj/Debug/DDS Header Generator.csproj.CoreCompileInputs.cache @@ -0,0 +1 @@ +697e72e8ee6039e552397dcbd3262a57ae7d65da diff --git a/obj/Debug/DDS Header Generator.csproj.FileListAbsolute.txt b/obj/Debug/DDS Header Generator.csproj.FileListAbsolute.txt new file mode 100644 index 0000000..8f9031d --- /dev/null +++ b/obj/Debug/DDS Header Generator.csproj.FileListAbsolute.txt @@ -0,0 +1,11 @@ +C:\Users\I\Desktop\DDS Header Generator\bin\Debug\DDS Header Generator.exe.config +C:\Users\I\Desktop\DDS Header Generator\bin\Debug\DDS Header Generator.exe +C:\Users\I\Desktop\DDS Header Generator\bin\Debug\DDS Header Generator.pdb +C:\Users\I\Desktop\DDS Header Generator\obj\Debug\DDS Header Generator.csproj.AssemblyReference.cache +C:\Users\I\Desktop\DDS Header Generator\obj\Debug\DDS Header Generator.csproj.SuggestedBindingRedirects.cache +C:\Users\I\Desktop\DDS Header Generator\obj\Debug\DDS_Header_Generator.Form1.resources +C:\Users\I\Desktop\DDS Header Generator\obj\Debug\DDS_Header_Generator.Properties.Resources.resources +C:\Users\I\Desktop\DDS Header Generator\obj\Debug\DDS Header Generator.csproj.GenerateResource.cache +C:\Users\I\Desktop\DDS Header Generator\obj\Debug\DDS Header Generator.csproj.CoreCompileInputs.cache +C:\Users\I\Desktop\DDS Header Generator\obj\Debug\DDS Header Generator.exe +C:\Users\I\Desktop\DDS Header Generator\obj\Debug\DDS Header Generator.pdb diff --git a/obj/Debug/DDS Header Generator.csproj.GenerateResource.cache b/obj/Debug/DDS Header Generator.csproj.GenerateResource.cache new file mode 100644 index 0000000..7d4db03 Binary files /dev/null and b/obj/Debug/DDS Header Generator.csproj.GenerateResource.cache differ diff --git a/obj/Debug/DDS Header Generator.csproj.SuggestedBindingRedirects.cache b/obj/Debug/DDS Header Generator.csproj.SuggestedBindingRedirects.cache new file mode 100644 index 0000000..e69de29 diff --git a/obj/Debug/DDS Header Generator.exe b/obj/Debug/DDS Header Generator.exe new file mode 100644 index 0000000..3a7f40b Binary files /dev/null and b/obj/Debug/DDS Header Generator.exe differ diff --git a/obj/Debug/DDS Header Generator.pdb b/obj/Debug/DDS Header Generator.pdb new file mode 100644 index 0000000..41d6801 Binary files /dev/null and b/obj/Debug/DDS Header Generator.pdb differ diff --git a/obj/Debug/DDS_Header_Generator.Form1.resources b/obj/Debug/DDS_Header_Generator.Form1.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/obj/Debug/DDS_Header_Generator.Form1.resources differ diff --git a/obj/Debug/DDS_Header_Generator.Properties.Resources.resources b/obj/Debug/DDS_Header_Generator.Properties.Resources.resources new file mode 100644 index 0000000..6c05a97 Binary files /dev/null and b/obj/Debug/DDS_Header_Generator.Properties.Resources.resources differ diff --git a/obj/Debug/DesignTimeResolveAssemblyReferences.cache b/obj/Debug/DesignTimeResolveAssemblyReferences.cache new file mode 100644 index 0000000..a943e6d Binary files /dev/null and b/obj/Debug/DesignTimeResolveAssemblyReferences.cache differ diff --git a/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache new file mode 100644 index 0000000..0df1d31 Binary files /dev/null and b/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ