diff --git a/FModel/App.config b/FModel/App.config index 3ad2bd6d..20575ad8 100644 --- a/FModel/App.config +++ b/FModel/App.config @@ -61,9 +61,6 @@ English - - False - @@ -91,6 +88,18 @@ + + False + + + + + + 1 + + + 50,50,50 + diff --git a/FModel/FModel.csproj b/FModel/FModel.csproj index 63ff9fd5..6c8eee6e 100644 --- a/FModel/FModel.csproj +++ b/FModel/FModel.csproj @@ -252,6 +252,7 @@ + @@ -280,10 +281,6 @@ - - - - diff --git a/FModel/Forms/Settings.Designer.cs b/FModel/Forms/Settings.Designer.cs index 4468494c..4e7936a6 100644 --- a/FModel/Forms/Settings.Designer.cs +++ b/FModel/Forms/Settings.Designer.cs @@ -57,7 +57,14 @@ namespace FModel.Forms this.textBox3 = new System.Windows.Forms.TextBox(); this.label4 = new System.Windows.Forms.Label(); this.groupBox6 = new System.Windows.Forms.GroupBox(); + this.button3 = new System.Windows.Forms.Button(); + this.button2 = new System.Windows.Forms.Button(); + this.label7 = new System.Windows.Forms.Label(); + this.button4 = new System.Windows.Forms.Button(); this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.label6 = new System.Windows.Forms.Label(); + this.trackBar3 = new System.Windows.Forms.TrackBar(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); this.textBox6 = new System.Windows.Forms.TextBox(); this.label12 = new System.Windows.Forms.Label(); this.groupBox3.SuspendLayout(); @@ -69,6 +76,8 @@ namespace FModel.Forms this.groupBox1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.imgsPerRow)).BeginInit(); this.groupBox6.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar3)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.SuspendLayout(); // // groupBox3 @@ -140,9 +149,9 @@ namespace FModel.Forms // // OKButton // - this.OKButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.OKButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.OKButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this.OKButton.Location = new System.Drawing.Point(475, 434); + this.OKButton.Location = new System.Drawing.Point(475, 546); this.OKButton.Name = "OKButton"; this.OKButton.Size = new System.Drawing.Size(97, 21); this.OKButton.TabIndex = 15; @@ -301,7 +310,7 @@ namespace FModel.Forms // // wPictureBox // - this.wPictureBox.Image = global::FModel.Properties.Resources.wTemplate; + this.wPictureBox.Image = global::FModel.Properties.Resources.wTemplatev1; this.wPictureBox.Location = new System.Drawing.Point(389, 19); this.wPictureBox.Name = "wPictureBox"; this.wPictureBox.Size = new System.Drawing.Size(165, 165); @@ -311,12 +320,13 @@ namespace FModel.Forms // // groupBox1 // + this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.groupBox1.Controls.Add(this.checkBoxSaveAsMergeImages); this.groupBox1.Controls.Add(this.imgsPerRow); 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, 375); + this.groupBox1.Location = new System.Drawing.Point(12, 487); this.groupBox1.Name = "groupBox1"; this.groupBox1.Size = new System.Drawing.Size(560, 49); this.groupBox1.TabIndex = 17; @@ -377,32 +387,114 @@ namespace FModel.Forms // // groupBox6 // + this.groupBox6.Controls.Add(this.button3); + this.groupBox6.Controls.Add(this.button2); + this.groupBox6.Controls.Add(this.label7); + this.groupBox6.Controls.Add(this.button4); this.groupBox6.Controls.Add(this.checkBox2); + this.groupBox6.Controls.Add(this.label6); + this.groupBox6.Controls.Add(this.trackBar3); + this.groupBox6.Controls.Add(this.pictureBox1); this.groupBox6.Controls.Add(this.textBox6); this.groupBox6.Controls.Add(this.label12); this.groupBox6.Location = new System.Drawing.Point(12, 323); this.groupBox6.Name = "groupBox6"; - this.groupBox6.Size = new System.Drawing.Size(560, 46); + this.groupBox6.Size = new System.Drawing.Size(560, 158); this.groupBox6.TabIndex = 19; this.groupBox6.TabStop = false; - this.groupBox6.Text = "Challenges"; + this.groupBox6.Text = "Challenges Theme"; + // + // button3 + // + this.button3.Location = new System.Drawing.Point(102, 129); + this.button3.Name = "button3"; + this.button3.Size = new System.Drawing.Size(94, 23); + this.button3.TabIndex = 26; + this.button3.Text = "Choose Banner"; + this.button3.UseVisualStyleBackColor = true; + this.button3.Click += new System.EventHandler(this.Button3_Click); + // + // button2 + // + this.button2.Location = new System.Drawing.Point(199, 129); + this.button2.Name = "button2"; + this.button2.Size = new System.Drawing.Size(93, 23); + this.button2.TabIndex = 11; + this.button2.Text = "Open Image"; + this.button2.UseVisualStyleBackColor = true; + this.button2.Click += new System.EventHandler(this.Button2_Click); + // + // label7 + // + this.label7.AutoSize = true; + this.label7.ForeColor = System.Drawing.Color.Red; + this.label7.Location = new System.Drawing.Point(89, 113); + this.label7.Name = "label7"; + this.label7.Size = new System.Drawing.Size(117, 13); + this.label7.TabIndex = 33; + this.label7.Text = "Banner Size: 1024x256"; + // + // button4 + // + this.button4.Location = new System.Drawing.Point(6, 129); + this.button4.Name = "button4"; + this.button4.Size = new System.Drawing.Size(93, 23); + this.button4.TabIndex = 31; + this.button4.Text = "Pick Color"; + this.button4.UseVisualStyleBackColor = true; + this.button4.Click += new System.EventHandler(this.Button4_Click); // // checkBox2 // this.checkBox2.AutoSize = true; - this.checkBox2.Location = new System.Drawing.Point(448, 21); + this.checkBox2.Location = new System.Drawing.Point(6, 52); this.checkBox2.Name = "checkBox2"; - this.checkBox2.Size = new System.Drawing.Size(105, 17); - this.checkBox2.TabIndex = 27; - this.checkBox2.Text = "Draw Reward ID"; + this.checkBox2.Size = new System.Drawing.Size(97, 17); + this.checkBox2.TabIndex = 30; + this.checkBox2.Text = "Custom Theme"; this.checkBox2.UseVisualStyleBackColor = true; + this.checkBox2.CheckedChanged += new System.EventHandler(this.CheckBox2_CheckedChanged); + // + // label6 + // + this.label6.AutoSize = true; + this.label6.Location = new System.Drawing.Point(6, 82); + this.label6.Name = "label6"; + this.label6.Size = new System.Drawing.Size(46, 13); + this.label6.TabIndex = 28; + this.label6.Text = "Opacity:"; + // + // trackBar3 + // + this.trackBar3.Location = new System.Drawing.Point(58, 82); + this.trackBar3.Maximum = 1000; + this.trackBar3.Minimum = 1; + this.trackBar3.Name = "trackBar3"; + this.trackBar3.Size = new System.Drawing.Size(234, 45); + this.trackBar3.TabIndex = 27; + this.trackBar3.TickFrequency = 25; + this.trackBar3.TickStyle = System.Windows.Forms.TickStyle.None; + this.trackBar3.Value = 1; + this.trackBar3.ValueChanged += new System.EventHandler(this.TrackBar3_ValueChanged); + // + // pictureBox1 + // + this.pictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pictureBox1.Image = global::FModel.Properties.Resources.cTemplate; + this.pictureBox1.Location = new System.Drawing.Point(298, 45); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(256, 107); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; + this.pictureBox1.TabIndex = 10; + this.pictureBox1.TabStop = false; // // textBox6 // this.textBox6.Location = new System.Drawing.Point(74, 19); this.textBox6.Name = "textBox6"; - this.textBox6.Size = new System.Drawing.Size(359, 20); + this.textBox6.Size = new System.Drawing.Size(480, 20); this.textBox6.TabIndex = 8; + this.textBox6.TextChanged += new System.EventHandler(this.TextBox6_TextChanged); // // label12 // @@ -417,7 +509,7 @@ namespace FModel.Forms // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(584, 467); + this.ClientSize = new System.Drawing.Size(584, 579); this.Controls.Add(this.groupBox6); this.Controls.Add(this.groupBox1); this.Controls.Add(this.groupBox4); @@ -431,6 +523,7 @@ namespace FModel.Forms this.Name = "Settings"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "FModel Settings"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.Settings_FormClosing); this.groupBox3.ResumeLayout(false); this.groupBox3.PerformLayout(); this.groupBox2.ResumeLayout(false); @@ -445,6 +538,8 @@ namespace FModel.Forms ((System.ComponentModel.ISupportInitialize)(this.imgsPerRow)).EndInit(); this.groupBox6.ResumeLayout(false); this.groupBox6.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.trackBar3)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); this.ResumeLayout(false); } @@ -476,11 +571,18 @@ namespace FModel.Forms private System.Windows.Forms.ComboBox comboBox1; private System.Windows.Forms.Label label10; private System.Windows.Forms.GroupBox groupBox6; - private System.Windows.Forms.CheckBox checkBox2; private System.Windows.Forms.TextBox textBox6; private System.Windows.Forms.Label label12; private System.Windows.Forms.CheckBox checkBox_tryToOpen; private System.Windows.Forms.CheckBox checkBoxSaveAsMergeImages; private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.PictureBox pictureBox1; + private System.Windows.Forms.Button button2; + private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.Label label6; + private System.Windows.Forms.TrackBar trackBar3; + private System.Windows.Forms.Button button3; + private System.Windows.Forms.Button button4; + private System.Windows.Forms.Label label7; } } diff --git a/FModel/Forms/Settings.cs b/FModel/Forms/Settings.cs index 9ef46f11..e4b04d95 100644 --- a/FModel/Forms/Settings.cs +++ b/FModel/Forms/Settings.cs @@ -1,16 +1,22 @@ using System; using System.Drawing; +using System.Drawing.Drawing2D; +using System.Drawing.Text; using System.IO; using System.Windows.Forms; using FModel.Properties; namespace FModel.Forms { + //refactor asap public partial class Settings : Form { private static string _paKsPathBefore; private static string _outputPathBefore; private static string _oldLanguage; + private static Color headerColor; + private static Bitmap bmp; + private static Graphics g; public Settings() { @@ -25,7 +31,6 @@ namespace FModel.Forms checkBox1.Checked = Properties.Settings.Default.rarityNew; textBox6.Text = Properties.Settings.Default.challengesWatermark; - checkBox2.Checked = Properties.Settings.Default.challengesDebug; if (string.IsNullOrWhiteSpace(textBox6.Text)) { textBox6.Text = "{Bundle_Name} Generated using FModel & JohnWickParse - {Date}"; @@ -50,6 +55,16 @@ namespace FModel.Forms trackBar1.Value = Properties.Settings.Default.wOpacity; trackBar2.Value = Properties.Settings.Default.wSize; + button3.Enabled = Properties.Settings.Default.isChallengesTheme; + button4.Enabled = Properties.Settings.Default.isChallengesTheme; + checkBox2.Checked = Properties.Settings.Default.isChallengesTheme; + trackBar3.Enabled = Properties.Settings.Default.isChallengesTheme; + trackBar3.Value = Properties.Settings.Default.challengesOpacity; + string[] colorParts = Properties.Settings.Default.challengesColors.Split(','); + headerColor = Color.FromArgb(255, Int32.Parse(colorParts[0]), Int32.Parse(colorParts[1]), Int32.Parse(colorParts[2])); + if (File.Exists(Properties.Settings.Default.challengesBannerFileName)) { drawChallengeTemplate(headerColor, true); } + else { pictureBox1.Image = Resources.cTemplate; } + //FEATURED checkBox8.Checked = Properties.Settings.Default.loadFeaturedImage; if (File.Exists(Properties.Settings.Default.wFilename)) @@ -101,8 +116,10 @@ namespace FModel.Forms MessageBox.Show(@"Please, restart FModel to apply your new output path", @"FModel Output Path Changed", MessageBoxButtons.OK, MessageBoxIcon.Information); } - Properties.Settings.Default.challengesDebug = checkBox2.Checked; Properties.Settings.Default.challengesWatermark = textBox6.Text; + Properties.Settings.Default.isChallengesTheme = checkBox2.Checked; + Properties.Settings.Default.challengesOpacity = trackBar3.Value; + Properties.Settings.Default.challengesColors = headerColor.R + "," + headerColor.G + "," + headerColor.B; Properties.Settings.Default.tryToOpenAssets = checkBox_tryToOpen.Checked; @@ -129,6 +146,7 @@ namespace FModel.Forms } Properties.Settings.Default.Save(); //SAVE + bmp.Dispose(); Close(); } @@ -256,5 +274,181 @@ namespace FModel.Forms wPictureBox.Image = bmp; } } + + private void Button2_Click(object sender, EventArgs e) + { + if (pictureBox1.Image != null) + { + var newForm = new Form(); + + PictureBox pb = new PictureBox(); + pb.Dock = DockStyle.Fill; + pb.Image = pictureBox1.Image; + pb.SizeMode = PictureBoxSizeMode.Zoom; + + newForm.Size = pictureBox1.Image.Size; + newForm.Icon = Resources.FModel; + newForm.Text = ThePak.CurrentUsedItem; + newForm.StartPosition = FormStartPosition.CenterScreen; + newForm.Controls.Add(pb); + newForm.Show(); + } + } + + private void CheckBox2_CheckedChanged(object sender, EventArgs e) + { + button3.Enabled = checkBox2.Checked; + button4.Enabled = checkBox2.Checked; + trackBar3.Enabled = checkBox2.Checked; + + if (!checkBox2.Checked) + { + pictureBox1.Image = Resources.cTemplate; + } + else { drawChallengeTemplate(headerColor, File.Exists(Properties.Settings.Default.challengesBannerFileName)); } + } + + private void Button4_Click(object sender, EventArgs e) + { + ColorDialog MyDialog = new ColorDialog(); + MyDialog.FullOpen = true; + MyDialog.AnyColor = true; + + if (MyDialog.ShowDialog() == DialogResult.OK) + { + headerColor = MyDialog.Color; + drawChallengeTemplate(headerColor, File.Exists(Properties.Settings.Default.challengesBannerFileName)); + } + MyDialog.Dispose(); + } + + private void drawChallengeTemplate(Color headerColor, bool isBanner = false) + { + bmp = new Bitmap(1024, 410); + g = Graphics.FromImage(bmp); + g.TextRenderingHint = TextRenderingHint.AntiAlias; + g.SmoothingMode = SmoothingMode.HighQuality; + + #region header + if (isBanner) + { + if (File.Exists(Properties.Settings.Default.challengesBannerFileName)) + { + g.FillRectangle(new SolidBrush(headerColor), new Rectangle(0, 0, bmp.Width, 256)); + + Image banner = Image.FromFile(Properties.Settings.Default.challengesBannerFileName); + var opacityImage = ImageUtilities.SetImageOpacity(banner, (float)trackBar3.Value / 1000); + g.DrawImage(ImageUtilities.ResizeImage(opacityImage, 1024, 256), 0, 0); + } + } + else + { + g.FillRectangle(new SolidBrush(headerColor), new Rectangle(0, 0, bmp.Width, 256)); + } + + GraphicsPath gp = new GraphicsPath(); + gp.StartFigure(); + gp.AddLine(0, 256, bmp.Width, 256); + gp.AddLine(bmp.Width, 256, bmp.Width, 241); + gp.AddLine(bmp.Width, 241, bmp.Width / 2 + 25, 236); + gp.AddLine(bmp.Width / 2 + 25, 236, bmp.Width / 2 + 35, 249); + gp.AddLine(bmp.Width / 2 + 35, 249, 0, 241); + gp.CloseFigure(); + g.FillPath(new SolidBrush(ControlPaint.Light(headerColor)), gp); + + GraphicsPath p = new GraphicsPath(); + Pen myPen = new Pen(ControlPaint.Light(headerColor, (float)0.2), 3); + myPen.LineJoin = LineJoin.Round; //needed to avoid spikes + p.AddString( + "{LAST FOLDER HERE}", + Properties.Settings.Default.IconLanguage == "Japanese" ? FontUtilities.pfc.Families[2] : FontUtilities.pfc.Families[1], + (int)FontStyle.Regular, 30, + new Point(30, 70), + FontUtilities.leftString + ); + g.DrawPath(myPen, p); + g.FillPath(new SolidBrush(ControlPaint.Dark(headerColor, (float)0.05)), p); + + g.DrawString("{BUNDLE DISPLAY NAME HERE}", new Font(Properties.Settings.Default.IconLanguage == "Japanese" ? FontUtilities.pfc.Families[2] : FontUtilities.pfc.Families[1], 40), new SolidBrush(Color.White), new Point(25, 105)); + + g.FillRectangle(new SolidBrush(ControlPaint.Dark(headerColor, (float)0.1)), new Rectangle(0, 256, bmp.Width, bmp.Height)); + #endregion + + #region quest background + int theY = 290; + g.FillRectangle(new SolidBrush(Color.FromArgb(50, headerColor.R, headerColor.G, headerColor.B)), new Rectangle(25, theY, bmp.Width - 50, 70)); + + gp = new GraphicsPath(); + gp.StartFigure(); + gp.AddLine(32, theY + 5, 29, theY + 67); + gp.AddLine(29, theY + 67, bmp.Width - 160, theY + 62); + gp.AddLine(bmp.Width - 160, theY + 62, bmp.Width - 150, theY + 4); + gp.CloseFigure(); + g.FillPath(new SolidBrush(Color.FromArgb(50, headerColor.R, headerColor.G, headerColor.B)), gp); + + g.FillRectangle(new SolidBrush(headerColor), new Rectangle(60, theY + 47, 500, 7)); + + gp = new GraphicsPath(); + gp.StartFigure(); + gp.AddLine(39, theY + 35, 45, theY + 32); + gp.AddLine(45, theY + 32, 48, theY + 37); + gp.AddLine(48, theY + 37, 42, theY + 40); + gp.CloseFigure(); + g.FillPath(new SolidBrush(headerColor), gp); + #endregion + + #region watermark + string text = textBox6.Text; + if (string.IsNullOrWhiteSpace(text)) + { + text = "{Bundle_Name} Generated using FModel & JohnWickParse - {Date}"; + } + + if (text.Contains("{Bundle_Name}")) + { + text = text.Replace("{Bundle_Name}", "{BUNDLE DISPLAY NAME HERE}"); + } + if (text.Contains("{Date}")) + { + text = text.Replace("{Date}", DateTime.Now.ToString("dd/MM/yyyy")); + } + + g.DrawString(text, new Font(FontUtilities.pfc.Families[0], 15), new SolidBrush(Color.FromArgb(150, 255, 255, 255)), new Point(bmp.Width - 10, 210), FontUtilities.rightString); + #endregion + + pictureBox1.Image = bmp; + } + + private void Button3_Click(object sender, EventArgs e) + { + OpenFileDialog theDialog = new OpenFileDialog(); + theDialog.Title = @"Choose your banner"; + 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.challengesBannerFileName = theDialog.FileName; + Properties.Settings.Default.Save(); + + drawChallengeTemplate(headerColor, File.Exists(Properties.Settings.Default.challengesBannerFileName)); + } + } + + private void TrackBar3_ValueChanged(object sender, EventArgs e) + { + drawChallengeTemplate(headerColor, File.Exists(Properties.Settings.Default.challengesBannerFileName)); + pictureBox1.Refresh(); + } + + private void TextBox6_TextChanged(object sender, EventArgs e) + { + drawChallengeTemplate(headerColor, File.Exists(Properties.Settings.Default.challengesBannerFileName)); + } + + private void Settings_FormClosing(object sender, FormClosingEventArgs e) + { + bmp.Dispose(); + } } } diff --git a/FModel/MainWindow.cs b/FModel/MainWindow.cs index d3352089..bf9ab6a8 100644 --- a/FModel/MainWindow.cs +++ b/FModel/MainWindow.cs @@ -165,13 +165,13 @@ namespace FModel } await Task.Run(() => { + FontUtilities.SetFont(); Utilities.SetOutputFolder(); FillWithPaKs(); AddToUI.checkAndAddDynamicKeys(); Utilities.colorMyPaks(loadOneToolStripMenuItem); Utilities.SetFolderPermission(App.DefaultOutputPath); Utilities.CreateDefaultFolders(); - FontUtilities.SetFont(); }); MyScintilla.SetScintillaStyle(scintilla1); diff --git a/FModel/Methods/IconGenerator/ChallengeGenerator/BundleDesign.cs b/FModel/Methods/IconGenerator/ChallengeGenerator/BundleDesign.cs index a190fb87..ee5fb8ec 100644 --- a/FModel/Methods/IconGenerator/ChallengeGenerator/BundleDesign.cs +++ b/FModel/Methods/IconGenerator/ChallengeGenerator/BundleDesign.cs @@ -14,7 +14,7 @@ namespace FModel public static int theY { get; set; } public static Graphics toDrawOn { get; set; } public static JToken myItem { get; set; } - public static Color headerColor { get; set; } + private static Color headerColor { get; set; } /// /// get a random color in case DisplayStyle doesn't exist in drawBackground() @@ -52,7 +52,15 @@ namespace FModel JToken displayStyle = myBundle["DisplayStyle"]; if (displayStyle != null) { - headerColor = BundleInfos.getSecondaryColor(myBundle); + if (Settings.Default.isChallengesTheme) + { + string[] colorParts = Settings.Default.challengesColors.Split(','); + headerColor = Color.FromArgb(255, Int32.Parse(colorParts[0]), Int32.Parse(colorParts[1]), Int32.Parse(colorParts[2])); + } + else + { + headerColor = BundleInfos.getSecondaryColor(myBundle); + } JToken customBackground = displayStyle["CustomBackground"]; JToken displayImage = displayStyle["DisplayImage"]; @@ -70,8 +78,22 @@ namespace FModel { challengeIcon = new Bitmap(bmpTemp); } - toDrawOn.DrawImage(challengeIcon, new Point(0, 0)); - toDrawOn.FillRectangle(new SolidBrush(Color.FromArgb(175, headerColor.R, headerColor.G, headerColor.B)), new Rectangle(0, 0, myBitmap.Width, 256)); + + toDrawOn.FillRectangle(new SolidBrush(headerColor), new Rectangle(0, 0, myBitmap.Width, 256)); + if (Settings.Default.isChallengesTheme) + { + if (File.Exists(Settings.Default.challengesBannerFileName)) + { + Image banner = Image.FromFile(Settings.Default.challengesBannerFileName); + var opacityImage = ImageUtilities.SetImageOpacity(banner, (float)Settings.Default.challengesOpacity / 1000); + toDrawOn.DrawImage(ImageUtilities.ResizeImage(opacityImage, 1024, 256), 0, 0); + } + } + else + { + var opacityImage = ImageUtilities.SetImageOpacity(challengeIcon, (float)0.3); + toDrawOn.DrawImage(opacityImage, new Point(0, 0)); + } } } } @@ -88,14 +110,59 @@ namespace FModel { challengeIcon = new Bitmap(bmpTemp); } + toDrawOn.FillRectangle(new SolidBrush(headerColor), new Rectangle(0, 0, myBitmap.Width, 256)); + if (Settings.Default.isChallengesTheme) + { + if (File.Exists(Settings.Default.challengesBannerFileName)) + { + Image banner = Image.FromFile(Settings.Default.challengesBannerFileName); + var opacityImage = ImageUtilities.SetImageOpacity(banner, (float)Settings.Default.challengesOpacity / 1000); + toDrawOn.DrawImage(ImageUtilities.ResizeImage(opacityImage, 1024, 256), 0, 0); + } + } + toDrawOn.DrawImage(ImageUtilities.ResizeImage(challengeIcon, 256, 256), new Point(0, 0)); } } - else { toDrawOn.FillRectangle(new SolidBrush(headerColor), new Rectangle(0, 0, myBitmap.Width, 256)); } + else + { + toDrawOn.FillRectangle(new SolidBrush(headerColor), new Rectangle(0, 0, myBitmap.Width, 256)); + if (Settings.Default.isChallengesTheme) + { + if (File.Exists(Settings.Default.challengesBannerFileName)) + { + Image banner = Image.FromFile(Settings.Default.challengesBannerFileName); + var opacityImage = ImageUtilities.SetImageOpacity(banner, (float)Settings.Default.challengesOpacity / 1000); + toDrawOn.DrawImage(ImageUtilities.ResizeImage(opacityImage, 1024, 256), 0, 0); + } + } + } + } + } + else + { + if (Settings.Default.isChallengesTheme) + { + string[] colorParts = Settings.Default.challengesColors.Split(','); + headerColor = Color.FromArgb(255, Int32.Parse(colorParts[0]), Int32.Parse(colorParts[1]), Int32.Parse(colorParts[2])); + } + else + { + headerColor = getRandomColor(); + } + + toDrawOn.FillRectangle(new SolidBrush(headerColor), new Rectangle(0, 0, myBitmap.Width, 256)); + if (Settings.Default.isChallengesTheme) + { + if (File.Exists(Settings.Default.challengesBannerFileName)) + { + Image banner = Image.FromFile(Settings.Default.challengesBannerFileName); + var opacityImage = ImageUtilities.SetImageOpacity(banner, (float)Settings.Default.challengesOpacity / 1000); + toDrawOn.DrawImage(ImageUtilities.ResizeImage(opacityImage, 1024, 256), 0, 0); + } } } - else { headerColor = getRandomColor(); toDrawOn.FillRectangle(new SolidBrush(headerColor), new Rectangle(0, 0, myBitmap.Width, 256)); } GraphicsPath gp = new GraphicsPath(); gp.StartFigure(); @@ -160,7 +227,7 @@ namespace FModel JToken bundleCompletionRewards = myBundle["BundleCompletionRewards"]; if (bundleCompletionRewards != null) { - theY += 50; + theY += 35; JArray bundleCompletionRewardsArray = bundleCompletionRewards.Value(); foreach (JToken token in bundleCompletionRewardsArray) { diff --git a/FModel/Methods/Utilities/Utilities.cs b/FModel/Methods/Utilities/Utilities.cs index 3823c5f0..b497db34 100644 --- a/FModel/Methods/Utilities/Utilities.cs +++ b/FModel/Methods/Utilities/Utilities.cs @@ -187,6 +187,13 @@ namespace FModel Properties.Settings.Default.UMFilename = string.Empty; Properties.Settings.Default.UMWatermark = false; } + + if (!string.IsNullOrEmpty(Properties.Settings.Default.challengesBannerFileName) && + !File.Exists(Properties.Settings.Default.challengesBannerFileName)) + { + Properties.Settings.Default.challengesBannerFileName = string.Empty; + Properties.Settings.Default.isChallengesTheme = false; + } } } } diff --git a/FModel/Properties/Resources.Designer.cs b/FModel/Properties/Resources.Designer.cs index a6fbb18e..e13cb1e2 100644 --- a/FModel/Properties/Resources.Designer.cs +++ b/FModel/Properties/Resources.Designer.cs @@ -140,6 +140,16 @@ namespace FModel.Properties { } } + /// + /// Recherche une ressource localisée de type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap cTemplate { + get { + object obj = ResourceManager.GetObject("cTemplate", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Recherche une ressource localisée de type System.Drawing.Bitmap. /// diff --git a/FModel/Properties/Resources.resx b/FModel/Properties/Resources.resx index 52e40683..80241dbf 100644 --- a/FModel/Properties/Resources.resx +++ b/FModel/Properties/Resources.resx @@ -241,4 +241,7 @@ ..\Resources\wTemplatev1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\cTemplate.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 1cd67d1a..ac5da8e8 100644 --- a/FModel/Properties/Settings.Designer.cs +++ b/FModel/Properties/Settings.Designer.cs @@ -227,18 +227,6 @@ namespace FModel.Properties { } } - [global::System.Configuration.UserScopedSettingAttribute()] - [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] - [global::System.Configuration.DefaultSettingValueAttribute("False")] - public bool challengesDebug { - get { - return ((bool)(this["challengesDebug"])); - } - set { - this["challengesDebug"] = value; - } - } - [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] @@ -346,5 +334,53 @@ namespace FModel.Properties { this["UMParameters"] = value; } } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("False")] + public bool isChallengesTheme { + get { + return ((bool)(this["isChallengesTheme"])); + } + set { + this["isChallengesTheme"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("")] + public string challengesBannerFileName { + get { + return ((string)(this["challengesBannerFileName"])); + } + set { + this["challengesBannerFileName"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("1")] + public int challengesOpacity { + get { + return ((int)(this["challengesOpacity"])); + } + set { + this["challengesOpacity"] = value; + } + } + + [global::System.Configuration.UserScopedSettingAttribute()] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Configuration.DefaultSettingValueAttribute("50,50,50")] + public string challengesColors { + get { + return ((string)(this["challengesColors"])); + } + set { + this["challengesColors"] = value; + } + } } } diff --git a/FModel/Properties/Settings.settings b/FModel/Properties/Settings.settings index 81518611..fd53e25b 100644 --- a/FModel/Properties/Settings.settings +++ b/FModel/Properties/Settings.settings @@ -53,9 +53,6 @@ English - - False - @@ -83,5 +80,17 @@ + + False + + + + + + 1 + + + 50,50,50 + \ No newline at end of file diff --git a/FModel/Resources/cTemplate.png b/FModel/Resources/cTemplate.png new file mode 100644 index 00000000..d769ac30 Binary files /dev/null and b/FModel/Resources/cTemplate.png differ