From 08fd6108cb0f95b9d9a42f2d66f0086619c43163 Mon Sep 17 00:00:00 2001 From: Asval Date: Mon, 25 Mar 2019 17:21:42 +0100 Subject: [PATCH] added watermark option --- FModel/App.config | 22 ++- FModel/FModel.csproj | 1 + FModel/Options.Designer.cs | 162 ++++++++++++++++++---- FModel/Options.cs | 171 ++++++++++++++++++++++++ FModel/PAKWindow.cs | 101 +++++++++++++- FModel/Properties/Resources.Designer.cs | 10 ++ FModel/Properties/Resources.resx | 65 ++++----- FModel/Properties/Settings.Designer.cs | 58 +++++++- FModel/Properties/Settings.settings | 22 ++- FModel/Resources/wTemplate.png | Bin 0 -> 28849 bytes 10 files changed, 535 insertions(+), 77 deletions(-) create mode 100644 FModel/Resources/wTemplate.png diff --git a/FModel/App.config b/FModel/App.config index 5274fd67..aec39c13 100644 --- a/FModel/App.config +++ b/FModel/App.config @@ -23,23 +23,35 @@ 0 - False + True - False + True - False + True - False + True - False + True + + 0 + + + 0 + + + + + + False + \ No newline at end of file diff --git a/FModel/FModel.csproj b/FModel/FModel.csproj index ccf46d94..aae9ad1a 100644 --- a/FModel/FModel.csproj +++ b/FModel/FModel.csproj @@ -146,6 +146,7 @@ + diff --git a/FModel/Options.Designer.cs b/FModel/Options.Designer.cs index a919243b..81b8f742 100644 --- a/FModel/Options.Designer.cs +++ b/FModel/Options.Designer.cs @@ -44,25 +44,36 @@ this.textBox2 = new System.Windows.Forms.TextBox(); this.label3 = new System.Windows.Forms.Label(); this.groupBox4 = new System.Windows.Forms.GroupBox(); + this.checkBox7 = new System.Windows.Forms.CheckBox(); + this.filenameLabel = new System.Windows.Forms.Label(); + this.trackBar1 = new System.Windows.Forms.TrackBar(); + this.label9 = new System.Windows.Forms.Label(); + this.trackBar2 = new System.Windows.Forms.TrackBar(); + this.label8 = new System.Windows.Forms.Label(); + this.button1 = new System.Windows.Forms.Button(); + this.wPictureBox = new System.Windows.Forms.PictureBox(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.label7 = new System.Windows.Forms.Label(); this.checkBox6 = new System.Windows.Forms.CheckBox(); this.checkBox5 = new System.Windows.Forms.CheckBox(); this.checkBox4 = new System.Windows.Forms.CheckBox(); this.checkBox3 = new System.Windows.Forms.CheckBox(); this.checkBox2 = new System.Windows.Forms.CheckBox(); this.label6 = new System.Windows.Forms.Label(); - this.label7 = new System.Windows.Forms.Label(); - this.comboBox1 = new System.Windows.Forms.ComboBox(); this.groupBox1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.imgsPerRow)).BeginInit(); this.groupBox2.SuspendLayout(); this.groupBox3.SuspendLayout(); this.groupBox4.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar2)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.wPictureBox)).BeginInit(); this.SuspendLayout(); // // optionsOKButton // this.optionsOKButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.optionsOKButton.Location = new System.Drawing.Point(475, 245); + this.optionsOKButton.Location = new System.Drawing.Point(475, 415); this.optionsOKButton.Name = "optionsOKButton"; this.optionsOKButton.Size = new System.Drawing.Size(97, 21); this.optionsOKButton.TabIndex = 1; @@ -130,7 +141,7 @@ this.groupBox1.Controls.Add(this.label5); this.groupBox1.Controls.Add(this.textBox3); this.groupBox1.Controls.Add(this.label4); - this.groupBox1.Location = new System.Drawing.Point(12, 220); + this.groupBox1.Location = new System.Drawing.Point(12, 390); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(414, 46); this.groupBox1.TabIndex = 10; @@ -203,6 +214,14 @@ // // groupBox4 // + this.groupBox4.Controls.Add(this.checkBox7); + this.groupBox4.Controls.Add(this.filenameLabel); + this.groupBox4.Controls.Add(this.trackBar1); + this.groupBox4.Controls.Add(this.label9); + this.groupBox4.Controls.Add(this.trackBar2); + this.groupBox4.Controls.Add(this.label8); + this.groupBox4.Controls.Add(this.button1); + this.groupBox4.Controls.Add(this.wPictureBox); this.groupBox4.Controls.Add(this.comboBox1); this.groupBox4.Controls.Add(this.label7); this.groupBox4.Controls.Add(this.checkBox6); @@ -213,11 +232,111 @@ this.groupBox4.Controls.Add(this.label6); this.groupBox4.Location = new System.Drawing.Point(12, 144); this.groupBox4.Name = "groupBox4"; - this.groupBox4.Size = new System.Drawing.Size(560, 70); + this.groupBox4.Size = new System.Drawing.Size(560, 240); this.groupBox4.TabIndex = 13; this.groupBox4.TabStop = false; this.groupBox4.Text = "Icon Creation"; // + // checkBox7 + // + this.checkBox7.AutoSize = true; + this.checkBox7.Location = new System.Drawing.Point(6, 118); + this.checkBox7.Name = "checkBox7"; + this.checkBox7.Size = new System.Drawing.Size(15, 14); + this.checkBox7.TabIndex = 25; + this.checkBox7.UseVisualStyleBackColor = true; + this.checkBox7.CheckedChanged += new System.EventHandler(this.checkBox7_CheckedChanged); + // + // filenameLabel + // + this.filenameLabel.AutoSize = true; + this.filenameLabel.Location = new System.Drawing.Point(115, 119); + this.filenameLabel.Name = "filenameLabel"; + this.filenameLabel.Size = new System.Drawing.Size(60, 13); + this.filenameLabel.TabIndex = 24; + this.filenameLabel.Text = "File Name: "; + // + // trackBar1 + // + this.trackBar1.Location = new System.Drawing.Point(58, 171); + this.trackBar1.Maximum = 100; + this.trackBar1.Name = "trackBar1"; + this.trackBar1.Size = new System.Drawing.Size(325, 45); + this.trackBar1.TabIndex = 20; + this.trackBar1.TickStyle = System.Windows.Forms.TickStyle.None; + this.trackBar1.ValueChanged += new System.EventHandler(this.trackBar1_ValueChanged); + // + // label9 + // + this.label9.AutoSize = true; + this.label9.Location = new System.Drawing.Point(22, 142); + this.label9.Name = "label9"; + this.label9.Size = new System.Drawing.Size(30, 13); + this.label9.TabIndex = 23; + this.label9.Text = "Size:"; + // + // trackBar2 + // + this.trackBar2.Location = new System.Drawing.Point(58, 142); + this.trackBar2.Maximum = 1000; + this.trackBar2.Minimum = 1; + this.trackBar2.Name = "trackBar2"; + this.trackBar2.Size = new System.Drawing.Size(325, 45); + this.trackBar2.TabIndex = 22; + this.trackBar2.TickFrequency = 25; + this.trackBar2.TickStyle = System.Windows.Forms.TickStyle.None; + this.trackBar2.Value = 1; + this.trackBar2.ValueChanged += new System.EventHandler(this.trackBar2_ValueChanged); + // + // label8 + // + this.label8.AutoSize = true; + this.label8.Location = new System.Drawing.Point(6, 174); + this.label8.Name = "label8"; + this.label8.Size = new System.Drawing.Size(46, 13); + this.label8.TabIndex = 21; + this.label8.Text = "Opacity:"; + // + // button1 + // + this.button1.Location = new System.Drawing.Point(27, 112); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(82, 24); + this.button1.TabIndex = 19; + this.button1.Text = "Watermark"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // wPictureBox + // + this.wPictureBox.Image = global::FModel.Properties.Resources.wTemplate; + this.wPictureBox.Location = new System.Drawing.Point(389, 69); + this.wPictureBox.Name = "wPictureBox"; + this.wPictureBox.Size = new System.Drawing.Size(165, 165); + this.wPictureBox.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.wPictureBox.TabIndex = 18; + this.wPictureBox.TabStop = false; + // + // comboBox1 + // + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Items.AddRange(new object[] { + "Selected Item Name (i.e. CID_001_Athena_Commando_F_Default)", + "displayName (i.e. Recruit)"}); + this.comboBox1.Location = new System.Drawing.Point(69, 42); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(485, 21); + this.comboBox1.TabIndex = 16; + // + // label7 + // + this.label7.AutoSize = true; + this.label7.Location = new System.Drawing.Point(6, 45); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(57, 13); + this.label7.TabIndex = 15; + this.label7.Text = "File Name:"; + // // checkBox6 // this.checkBox6.AutoSize = true; @@ -277,31 +396,11 @@ this.label6.TabIndex = 0; this.label6.Text = "Supported Folders:"; // - // label7 - // - this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(6, 45); - this.label7.Name = "label7"; - this.label7.Size = new System.Drawing.Size(57, 13); - this.label7.TabIndex = 15; - this.label7.Text = "File Name:"; - // - // comboBox1 - // - this.comboBox1.FormattingEnabled = true; - this.comboBox1.Items.AddRange(new object[] { - "Selected Item Name (i.e. CID_001_Athena_Commando_F_Default)", - "displayName (i.e. Recruit)"}); - this.comboBox1.Location = new System.Drawing.Point(69, 42); - this.comboBox1.Name = "comboBox1"; - this.comboBox1.Size = new System.Drawing.Size(485, 21); - this.comboBox1.TabIndex = 16; - // // OptionsWindow // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(584, 277); + this.ClientSize = new System.Drawing.Size(584, 448); this.Controls.Add(this.groupBox4); this.Controls.Add(this.groupBox3); this.Controls.Add(this.groupBox2); @@ -323,6 +422,9 @@ this.groupBox3.PerformLayout(); this.groupBox4.ResumeLayout(false); this.groupBox4.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar2)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.wPictureBox)).EndInit(); this.ResumeLayout(false); } @@ -351,5 +453,13 @@ private System.Windows.Forms.CheckBox checkBox6; private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.Label label7; + private System.Windows.Forms.TrackBar trackBar1; + private System.Windows.Forms.Button button1; + private System.Windows.Forms.PictureBox wPictureBox; + private System.Windows.Forms.Label label8; + private System.Windows.Forms.Label label9; + private System.Windows.Forms.TrackBar trackBar2; + private System.Windows.Forms.Label filenameLabel; + private System.Windows.Forms.CheckBox checkBox7; } } \ No newline at end of file diff --git a/FModel/Options.cs b/FModel/Options.cs index a59fb76c..4a635a32 100644 --- a/FModel/Options.cs +++ b/FModel/Options.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; using System.IO; using System.Linq; using System.Text; @@ -15,6 +17,66 @@ namespace FModel { private static string PAKBefore; private static string OutputBefore; + private static string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).ToString() + "\\FModel"; + + public static Bitmap ResizeImage(Image image, int width, int height) + { + var destRect = new Rectangle(0, 0, width, height); + var destImage = new Bitmap(width, height); + + destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution); + + using (var graphics = Graphics.FromImage(destImage)) + { + graphics.CompositingMode = CompositingMode.SourceCopy; + graphics.CompositingQuality = CompositingQuality.HighQuality; + graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; + graphics.SmoothingMode = SmoothingMode.HighQuality; + graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; + + using (var wrapMode = new ImageAttributes()) + { + wrapMode.SetWrapMode(WrapMode.TileFlipXY); + graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode); + } + } + + return destImage; + } + public Image SetImageOpacity(Image image, float opacity) + { + try + { + //create a Bitmap the size of the image provided + Bitmap bmp = new Bitmap(image.Width, image.Height); + + //create a graphics object from the image + using (Graphics gfx = Graphics.FromImage(bmp)) + { + + //create a color matrix object + ColorMatrix matrix = new ColorMatrix(); + + //set the opacity + matrix.Matrix33 = opacity; + + //create image attributes + ImageAttributes attributes = new ImageAttributes(); + + //set the color(opacity) of the image + attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); + + //now draw the image + gfx.DrawImage(image, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, attributes); + } + return bmp; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + return null; + } + } public OptionsWindow() { @@ -30,7 +92,32 @@ namespace FModel checkBox3.Checked = Properties.Settings.Default.createIconForConsumablesWeapons; checkBox4.Checked = Properties.Settings.Default.createIconForTraps; checkBox6.Checked = Properties.Settings.Default.createIconForChallenges; + checkBox7.Checked = Properties.Settings.Default.isWatermark; comboBox1.SelectedItem = Properties.Settings.Default.IconName; + if (Properties.Settings.Default.wSize == 0) + { + Properties.Settings.Default.wSize = 1; + } + trackBar2.Value = Properties.Settings.Default.wSize; + trackBar1.Value = Properties.Settings.Default.wOpacity; + + button1.Enabled = Properties.Settings.Default.isWatermark; + trackBar1.Enabled = Properties.Settings.Default.isWatermark; + trackBar2.Enabled = Properties.Settings.Default.isWatermark; + + if (!string.IsNullOrEmpty(Properties.Settings.Default.wFilename)) + { + filenameLabel.Text = "File Name: " + Path.GetFileName(Properties.Settings.Default.wFilename); + + Bitmap bmp = new Bitmap(Properties.Resources.wTemplate); + Graphics g = Graphics.FromImage(bmp); + + Image watermark = Image.FromFile(Properties.Settings.Default.wFilename); + var opacityImage = SetImageOpacity(watermark, (float)Properties.Settings.Default.wOpacity / 100); + g.DrawImage(ResizeImage(opacityImage, Properties.Settings.Default.wSize, Properties.Settings.Default.wSize), (522 - Properties.Settings.Default.wSize) / 2, (522 - Properties.Settings.Default.wSize) / 2, Properties.Settings.Default.wSize, Properties.Settings.Default.wSize); + + wPictureBox.Image = bmp; + } PAKBefore = Properties.Settings.Default.FortnitePAKs; OutputBefore = Properties.Settings.Default.ExtractOutput; @@ -86,6 +173,14 @@ namespace FModel { Properties.Settings.Default.createIconForChallenges = false; } + if (checkBox7.Checked == true) + { + Properties.Settings.Default.isWatermark = true; + } + if (checkBox7.Checked == false) + { + Properties.Settings.Default.isWatermark = false; + } if (comboBox1.SelectedItem == null) { Properties.Settings.Default.IconName = "Selected Item Name (i.e. CID_001_Athena_Commando_F_Default)"; @@ -99,6 +194,8 @@ namespace FModel Properties.Settings.Default.FortnitePAKs = textBox2.Text; Properties.Settings.Default.mergerFileName = textBox3.Text; Properties.Settings.Default.mergerImagesRow = Decimal.ToInt32(imgsPerRow.Value); + Properties.Settings.Default.wSize = trackBar2.Value; + Properties.Settings.Default.wOpacity = trackBar1.Value; if (!Directory.Exists(Properties.Settings.Default.ExtractOutput)) Directory.CreateDirectory(Properties.Settings.Default.ExtractOutput); @@ -118,5 +215,79 @@ namespace FModel Properties.Settings.Default.Save(); Close(); } + + private void button1_Click(object sender, EventArgs e) + { + OpenFileDialog theDialog = new OpenFileDialog(); + theDialog.Title = "Choose your watermark"; + theDialog.Multiselect = false; + theDialog.Filter = "PNG Files (*.png)|*.png|JPG Files (*.jpg)|*.jpg|DDS Files (*.dds)|*.dds|All Files (*.*)|*.*"; + + if (theDialog.ShowDialog() == DialogResult.OK) + { + Properties.Settings.Default.wFilename = theDialog.FileName; + Properties.Settings.Default.Save(); + filenameLabel.Text = "File Name: " + Path.GetFileName(Properties.Settings.Default.wFilename); + + if (!string.IsNullOrEmpty(Properties.Settings.Default.wFilename)) + { + Bitmap bmp = new Bitmap(Properties.Resources.wTemplate); + Graphics g = Graphics.FromImage(bmp); + + Image watermark = Image.FromFile(Properties.Settings.Default.wFilename); + g.DrawImage(ResizeImage(watermark, trackBar2.Value, trackBar2.Value), (522 - trackBar2.Value) / 2, (522 - trackBar2.Value) / 2, trackBar2.Value, trackBar2.Value); + + wPictureBox.Image = bmp; + } + } + } + + private void trackBar2_ValueChanged(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(Properties.Settings.Default.wFilename)) + { + Bitmap bmp = new Bitmap(Properties.Resources.wTemplate); + Graphics g = Graphics.FromImage(bmp); + + Image watermark = Image.FromFile(Properties.Settings.Default.wFilename); + var opacityImage = SetImageOpacity(watermark, (float)trackBar1.Value / 100); + g.DrawImage(ResizeImage(opacityImage, trackBar2.Value, trackBar2.Value), (522 - trackBar2.Value) / 2, (522 - trackBar2.Value) / 2, trackBar2.Value, trackBar2.Value); + + wPictureBox.Image = bmp; + wPictureBox.Refresh(); + } + } + + private void trackBar1_ValueChanged(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(Properties.Settings.Default.wFilename)) + { + Bitmap bmp = new Bitmap(Properties.Resources.wTemplate); + Graphics g = Graphics.FromImage(bmp); + + Image watermark = Image.FromFile(Properties.Settings.Default.wFilename); + var opacityImage = SetImageOpacity(watermark, (float)trackBar1.Value / 100); + g.DrawImage(ResizeImage(opacityImage, trackBar2.Value, trackBar2.Value), (522 - trackBar2.Value) / 2, (522 - trackBar2.Value) / 2, trackBar2.Value, trackBar2.Value); + + wPictureBox.Image = bmp; + wPictureBox.Refresh(); + } + } + + private void checkBox7_CheckedChanged(object sender, EventArgs e) + { + if (checkBox7.Checked == false) + { + button1.Enabled = false; + trackBar1.Enabled = false; + trackBar2.Enabled = false; + } + if (checkBox7.Checked == true) + { + button1.Enabled = true; + trackBar1.Enabled = true; + trackBar2.Enabled = true; + } + } } } diff --git a/FModel/PAKWindow.cs b/FModel/PAKWindow.cs index 781bd500..0b50d167 100644 --- a/FModel/PAKWindow.cs +++ b/FModel/PAKWindow.cs @@ -5,11 +5,9 @@ using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; -using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Drawing; -using System.Drawing.Drawing2D; using System.Drawing.Imaging; using System.Drawing.Text; using System.IO; @@ -18,9 +16,7 @@ using System.Net; using System.Runtime.InteropServices; using System.Threading.Tasks; using System.Windows.Forms; -using System.Threading; -using System.Text.RegularExpressions; -using System.Text; +using System.Drawing.Drawing2D; namespace FModel { @@ -100,6 +96,64 @@ namespace FModel fileopener.StartInfo.Arguments = "\"" + path + "\""; fileopener.Start(); } + public static Bitmap ResizeImage(Image image, int width, int height) + { + var destRect = new Rectangle(0, 0, width, height); + var destImage = new Bitmap(width, height); + + destImage.SetResolution(image.HorizontalResolution, image.VerticalResolution); + + using (var graphics = Graphics.FromImage(destImage)) + { + graphics.CompositingMode = CompositingMode.SourceCopy; + graphics.CompositingQuality = CompositingQuality.HighQuality; + graphics.InterpolationMode = InterpolationMode.HighQualityBicubic; + graphics.SmoothingMode = SmoothingMode.HighQuality; + graphics.PixelOffsetMode = PixelOffsetMode.HighQuality; + + using (var wrapMode = new ImageAttributes()) + { + wrapMode.SetWrapMode(WrapMode.TileFlipXY); + graphics.DrawImage(image, destRect, 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, wrapMode); + } + } + + return destImage; + } + public Image SetImageOpacity(Image image, float opacity) + { + try + { + //create a Bitmap the size of the image provided + Bitmap bmp = new Bitmap(image.Width, image.Height); + + //create a graphics object from the image + using (Graphics gfx = Graphics.FromImage(bmp)) + { + + //create a color matrix object + ColorMatrix matrix = new ColorMatrix(); + + //set the opacity + matrix.Matrix33 = opacity; + + //create image attributes + ImageAttributes attributes = new ImageAttributes(); + + //set the color(opacity) of the image + attributes.SetColorMatrix(matrix, ColorMatrixFlag.Default, ColorAdjustType.Bitmap); + + //now draw the image + gfx.DrawImage(image, new Rectangle(0, 0, bmp.Width, bmp.Height), 0, 0, image.Width, image.Height, GraphicsUnit.Pixel, attributes); + } + return bmp; + } + catch (Exception ex) + { + MessageBox.Show(ex.Message); + return null; + } + } string BackupFilename = string.Empty; private void PAKWindow_Load(object sender, EventArgs e) @@ -236,6 +290,15 @@ namespace FModel scintilla1.Styles[ScintillaNET.Style.Json.String].ForeColor = Color.OrangeRed; scintilla1.Styles[ScintillaNET.Style.Json.StringEol].BackColor = Color.OrangeRed; scintilla1.Styles[ScintillaNET.Style.Json.Operator].ForeColor = Color.Black; + scintilla1.Styles[ScintillaNET.Style.LineNumber].ForeColor = Color.DarkGray; + var nums = scintilla1.Margins[1]; + nums.Width = 30; + nums.Type = ScintillaNET.MarginType.Number; + nums.Sensitive = true; + nums.Mask = 0; + + scintilla1.ClearCmdKey(Keys.Control | Keys.F); + scintilla1.ClearCmdKey(Keys.Control | Keys.Z); scintilla1.Lexer = ScintillaNET.Lexer.Json; } //EVERYTHING TO SET WHEN APP IS STARTING private void PAKWindow_FormClosing(object sender, FormClosingEventArgs e) @@ -1742,6 +1805,13 @@ namespace FModel g.DrawImage(ItemIcon, new Point(0, 0)); } + if (Properties.Settings.Default.isWatermark == true && !string.IsNullOrEmpty(Properties.Settings.Default.wFilename)) + { + Image watermark = Image.FromFile(Properties.Settings.Default.wFilename); + var opacityImage = SetImageOpacity(watermark, (float)Properties.Settings.Default.wOpacity / 100); + g.DrawImage(ResizeImage(opacityImage, Properties.Settings.Default.wSize, Properties.Settings.Default.wSize), (522 - Properties.Settings.Default.wSize) / 2, (522 - Properties.Settings.Default.wSize) / 2, Properties.Settings.Default.wSize, Properties.Settings.Default.wSize); + } + Image bg512 = Properties.Resources.BG512; g.DrawImage(bg512, new Point(5, 383)); @@ -2039,6 +2109,13 @@ namespace FModel g.DrawImage(ItemIcon, new Point(0, 0)); } + if (Properties.Settings.Default.isWatermark == true && !string.IsNullOrEmpty(Properties.Settings.Default.wFilename)) + { + Image watermark = Image.FromFile(Properties.Settings.Default.wFilename); + var opacityImage = SetImageOpacity(watermark, (float)Properties.Settings.Default.wOpacity / 100); + g.DrawImage(ResizeImage(opacityImage, Properties.Settings.Default.wSize, Properties.Settings.Default.wSize), (522 - Properties.Settings.Default.wSize) / 2, (522 - Properties.Settings.Default.wSize) / 2, Properties.Settings.Default.wSize, Properties.Settings.Default.wSize); + } + Image bg512 = Properties.Resources.BG512; g.DrawImage(bg512, new Point(5, 383)); @@ -2341,6 +2418,13 @@ namespace FModel g.DrawImage(ItemIcon, new Point(0, 0)); } + if (Properties.Settings.Default.isWatermark == true && !string.IsNullOrEmpty(Properties.Settings.Default.wFilename)) + { + Image watermark = Image.FromFile(Properties.Settings.Default.wFilename); + var opacityImage = SetImageOpacity(watermark, (float)Properties.Settings.Default.wOpacity / 100); + g.DrawImage(ResizeImage(opacityImage, Properties.Settings.Default.wSize, Properties.Settings.Default.wSize), (522 - Properties.Settings.Default.wSize) / 2, (522 - Properties.Settings.Default.wSize) / 2, Properties.Settings.Default.wSize, Properties.Settings.Default.wSize); + } + Image bg512 = Properties.Resources.BG512; g.DrawImage(bg512, new Point(5, 383)); @@ -2607,6 +2691,13 @@ namespace FModel g.DrawImage(ItemIcon, new Point(0, 0)); } + if (Properties.Settings.Default.isWatermark == true && !string.IsNullOrEmpty(Properties.Settings.Default.wFilename)) + { + Image watermark = Image.FromFile(Properties.Settings.Default.wFilename); + var opacityImage = SetImageOpacity(watermark, (float)Properties.Settings.Default.wOpacity / 100); + g.DrawImage(ResizeImage(opacityImage, Properties.Settings.Default.wSize, Properties.Settings.Default.wSize), (522 - Properties.Settings.Default.wSize) / 2, (522 - Properties.Settings.Default.wSize) / 2, Properties.Settings.Default.wSize, Properties.Settings.Default.wSize); + } + Image bg512 = Properties.Resources.BG512; g.DrawImage(bg512, new Point(5, 383)); diff --git a/FModel/Properties/Resources.Designer.cs b/FModel/Properties/Resources.Designer.cs index a5f0442d..23f3d847 100644 --- a/FModel/Properties/Resources.Designer.cs +++ b/FModel/Properties/Resources.Designer.cs @@ -209,5 +209,15 @@ namespace FModel.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// Recherche une ressource localisée de type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap wTemplate { + get { + object obj = ResourceManager.GetObject("wTemplate", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/FModel/Properties/Resources.resx b/FModel/Properties/Resources.resx index 47177aac..c8c2f391 100644 --- a/FModel/Properties/Resources.resx +++ b/FModel/Properties/Resources.resx @@ -118,49 +118,52 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\E512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\R512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\BurbankBigCondensed-Bold.otf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - ..\Resources\FNTools_Logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\C512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\unknown512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\M512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Quest.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\BG512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\I512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\U512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\T512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\L512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\R512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\C512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\FNTools_Logo.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\BurbankBigCondensed-Black.otf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\Quest.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\FNTools_Logo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\I512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\M512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\unknown512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\BurbankBigCondensed-Bold.otf;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\E512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\T512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\U512.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\wTemplate.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/FModel/Properties/Settings.Designer.cs b/FModel/Properties/Settings.Designer.cs index 5742c303..18d3e1dc 100644 --- a/FModel/Properties/Settings.Designer.cs +++ b/FModel/Properties/Settings.Designer.cs @@ -84,7 +84,7 @@ namespace FModel.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] + [global::System.Configuration.DefaultSettingValueAttribute("True")] public bool createIconForCosmetics { get { return ((bool)(this["createIconForCosmetics"])); @@ -96,7 +96,7 @@ namespace FModel.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] + [global::System.Configuration.DefaultSettingValueAttribute("True")] public bool createIconForConsumablesWeapons { get { return ((bool)(this["createIconForConsumablesWeapons"])); @@ -108,7 +108,7 @@ namespace FModel.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] + [global::System.Configuration.DefaultSettingValueAttribute("True")] public bool createIconForTraps { get { return ((bool)(this["createIconForTraps"])); @@ -120,7 +120,7 @@ namespace FModel.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] + [global::System.Configuration.DefaultSettingValueAttribute("True")] public bool createIconForVariants { get { return ((bool)(this["createIconForVariants"])); @@ -132,7 +132,7 @@ namespace FModel.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] + [global::System.Configuration.DefaultSettingValueAttribute("True")] public bool createIconForChallenges { get { return ((bool)(this["createIconForChallenges"])); @@ -153,5 +153,53 @@ namespace FModel.Properties { this["IconName"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public int wSize { + get { + return ((int)(this["wSize"])); + } + set { + this["wSize"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("0")] + public int wOpacity { + get { + return ((int)(this["wOpacity"])); + } + set { + this["wOpacity"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string wFilename { + get { + return ((string)(this["wFilename"])); + } + set { + this["wFilename"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool isWatermark { + get { + return ((bool)(this["isWatermark"])); + } + set { + this["isWatermark"] = value; + } + } } } diff --git a/FModel/Properties/Settings.settings b/FModel/Properties/Settings.settings index d53b67f4..916c47f2 100644 --- a/FModel/Properties/Settings.settings +++ b/FModel/Properties/Settings.settings @@ -18,22 +18,34 @@ 0 - False + True - False + True - False + True - False + True - False + True + + 0 + + + 0 + + + + + + False + \ No newline at end of file diff --git a/FModel/Resources/wTemplate.png b/FModel/Resources/wTemplate.png new file mode 100644 index 0000000000000000000000000000000000000000..76c6eea55a6bca78de0191e61775ebe0c1add2da GIT binary patch literal 28849 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 _f*n@*m#9K4 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 literal 0 HcmV?d00001