mirror of
https://github.com/ShareX/ShareX.git
synced 2024-10-01 09:47:22 +13:00
Merge branch 'master' of github.com:ShareX/ShareX
This commit is contained in:
commit
85d20a0673
39 changed files with 500 additions and 231 deletions
|
@ -289,4 +289,26 @@ public enum ColorFormat
|
||||||
{
|
{
|
||||||
RGB, RGBA, ARGB
|
RGB, RGBA, ARGB
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public enum PositionType
|
||||||
|
{
|
||||||
|
[Description("Top - Left")]
|
||||||
|
Top_Left,
|
||||||
|
[Description("Top - Center")]
|
||||||
|
Top,
|
||||||
|
[Description("Top - Right")]
|
||||||
|
Top_Right,
|
||||||
|
[Description("Center - Left")]
|
||||||
|
Left,
|
||||||
|
[Description("Center")]
|
||||||
|
Center,
|
||||||
|
[Description("Center - Right")]
|
||||||
|
Right,
|
||||||
|
[Description("Bottom - Left")]
|
||||||
|
Bottom_Left,
|
||||||
|
[Description("Bottom - Center")]
|
||||||
|
Bottom,
|
||||||
|
[Description("Bottom - Right")]
|
||||||
|
Bottom_Right
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -440,5 +440,11 @@ public static float Remap(this float value, float from1, float to1, float from2,
|
||||||
{
|
{
|
||||||
return (value - from1) / (to1 - from1) * (to2 - from2) + from2;
|
return (value - from1) / (to1 - from1) * (to2 - from2) + from2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static string GetDescription(this Type type)
|
||||||
|
{
|
||||||
|
DescriptionAttribute[] attributes = (DescriptionAttribute[])type.GetCustomAttributes(typeof(DescriptionAttribute), false);
|
||||||
|
return (attributes.Length > 0) ? attributes[0].Description : type.Name;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -31,15 +31,23 @@ namespace HelpersLib
|
||||||
public static class GraphicsExtensions
|
public static class GraphicsExtensions
|
||||||
{
|
{
|
||||||
public static void DrawRectangleProper(this Graphics g, Pen pen, Rectangle rect)
|
public static void DrawRectangleProper(this Graphics g, Pen pen, Rectangle rect)
|
||||||
|
{
|
||||||
|
if (pen.Width == 1)
|
||||||
{
|
{
|
||||||
rect = rect.SizeOffset(-1);
|
rect = rect.SizeOffset(-1);
|
||||||
|
}
|
||||||
|
|
||||||
if (rect.Width > 1 && rect.Height > 1)
|
if (rect.Width > 0 && rect.Height > 0)
|
||||||
{
|
{
|
||||||
g.DrawRectangle(pen, rect);
|
g.DrawRectangle(pen, rect);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void DrawRectangleProper(this Graphics g, Pen pen, int x, int y, int width, int height)
|
||||||
|
{
|
||||||
|
DrawRectangleProper(g, pen, new Rectangle(x, y, width, height));
|
||||||
|
}
|
||||||
|
|
||||||
public static void DrawCrossRectangle(this Graphics g, Pen pen, Rectangle rect, int crossSize)
|
public static void DrawCrossRectangle(this Graphics g, Pen pen, Rectangle rect, int crossSize)
|
||||||
{
|
{
|
||||||
rect = rect.SizeOffset(-1);
|
rect = rect.SizeOffset(-1);
|
||||||
|
|
|
@ -38,7 +38,8 @@ public override object EditValue(ITypeDescriptorContext context, IServiceProvide
|
||||||
{
|
{
|
||||||
return base.EditValue(context, provider, value);
|
return base.EditValue(context, provider, value);
|
||||||
}
|
}
|
||||||
OpenFileDialog dlg = new OpenFileDialog();
|
using (OpenFileDialog dlg = new OpenFileDialog())
|
||||||
|
{
|
||||||
dlg.FileName = "Default.css";
|
dlg.FileName = "Default.css";
|
||||||
dlg.Title = "Browse for a Cascading Style Sheet...";
|
dlg.Title = "Browse for a Cascading Style Sheet...";
|
||||||
dlg.Filter = "Cascading Style Sheets (*.css)|*.css";
|
dlg.Filter = "Cascading Style Sheets (*.css)|*.css";
|
||||||
|
@ -46,6 +47,7 @@ public override object EditValue(ITypeDescriptorContext context, IServiceProvide
|
||||||
{
|
{
|
||||||
value = dlg.FileName;
|
value = dlg.FileName;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,13 +38,15 @@ public override object EditValue(ITypeDescriptorContext context, IServiceProvide
|
||||||
{
|
{
|
||||||
return base.EditValue(context, provider, value);
|
return base.EditValue(context, provider, value);
|
||||||
}
|
}
|
||||||
OpenFileDialog dlg = new OpenFileDialog();
|
using (OpenFileDialog dlg = new OpenFileDialog())
|
||||||
|
{
|
||||||
dlg.Title = "Browse for executable...";
|
dlg.Title = "Browse for executable...";
|
||||||
dlg.Filter = "Applications (*.exe)|*.exe";
|
dlg.Filter = "Applications (*.exe)|*.exe";
|
||||||
if (dlg.ShowDialog() == DialogResult.OK)
|
if (dlg.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
value = dlg.FileName;
|
value = dlg.FileName;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,25 +23,31 @@ You should have received a copy of the GNU General Public License
|
||||||
|
|
||||||
#endregion License Information (GPL v3)
|
#endregion License Information (GPL v3)
|
||||||
|
|
||||||
using HelpersLib;
|
using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Drawing;
|
using System.Windows.Forms;
|
||||||
|
using System.Windows.Forms.Design;
|
||||||
|
|
||||||
namespace ImageEffectsLib
|
namespace HelpersLib
|
||||||
{
|
{
|
||||||
internal class Background : ImageEffect
|
public class ImageFileNameEditor : FileNameEditor
|
||||||
{
|
{
|
||||||
[DefaultValue(typeof(Color), "White")]
|
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value)
|
||||||
public Color Color { get; set; }
|
|
||||||
|
|
||||||
public Background()
|
|
||||||
{
|
{
|
||||||
this.ApplyDefaultPropertyValues();
|
if (context == null || provider == null)
|
||||||
|
{
|
||||||
|
return base.EditValue(context, provider, value);
|
||||||
}
|
}
|
||||||
|
using (OpenFileDialog dlg = new OpenFileDialog())
|
||||||
public override Image Apply(Image img)
|
|
||||||
{
|
{
|
||||||
return ImageHelpers.FillImageBackground(img, Color);
|
dlg.Title = "Browse for images...";
|
||||||
|
dlg.Filter = "Image files (*.jpg, *.jpeg, *.png, *.gif, *.bmp)|*.jpg;*.jpeg;*.png;*.gif;*.bmp";
|
||||||
|
if (dlg.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
value = dlg.FileName;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -724,5 +724,32 @@ public static string HtmlEncode(string text)
|
||||||
|
|
||||||
return result.ToString();
|
return result.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Point GetPosition(PositionType positionType, int offset, Size img, Size img2, int add = 0)
|
||||||
|
{
|
||||||
|
switch (positionType)
|
||||||
|
{
|
||||||
|
case PositionType.Top_Left:
|
||||||
|
return new Point(offset, offset);
|
||||||
|
case PositionType.Top:
|
||||||
|
return new Point(img.Width / 2 - img2.Width / 2 - add, offset);
|
||||||
|
case PositionType.Top_Right:
|
||||||
|
return new Point(img.Width - img2.Width - offset - add, offset);
|
||||||
|
case PositionType.Left:
|
||||||
|
return new Point(offset, img.Height / 2 - img2.Height / 2 - add);
|
||||||
|
case PositionType.Center:
|
||||||
|
return new Point(img.Width / 2 - img2.Width / 2 - add, img.Height / 2 - img2.Height / 2 - add);
|
||||||
|
case PositionType.Right:
|
||||||
|
return new Point(img.Width - img2.Width - offset - add, img.Height / 2 - img2.Height / 2 - add);
|
||||||
|
case PositionType.Bottom_Left:
|
||||||
|
return new Point(offset, img.Height - img2.Height - offset - add);
|
||||||
|
case PositionType.Bottom:
|
||||||
|
return new Point(img.Width / 2 - img2.Width / 2 - add, img.Height - img2.Height - offset - add);
|
||||||
|
case PositionType.Bottom_Right:
|
||||||
|
return new Point(img.Width - img2.Width - offset - add, img.Height - img2.Height - offset - add);
|
||||||
|
default:
|
||||||
|
return Point.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -201,38 +201,6 @@ public static Image CropImage(Image img, Rectangle rect, GraphicsPath gp)
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Image DrawBorder(Image img, BorderType borderType, Color borderColor, int borderSize)
|
|
||||||
{
|
|
||||||
Bitmap bmp;
|
|
||||||
|
|
||||||
using (Pen borderPen = new Pen(borderColor, borderSize) { Alignment = PenAlignment.Inset })
|
|
||||||
{
|
|
||||||
if (borderType == BorderType.Inside)
|
|
||||||
{
|
|
||||||
bmp = (Bitmap)img;
|
|
||||||
|
|
||||||
using (Graphics g = Graphics.FromImage(bmp))
|
|
||||||
{
|
|
||||||
g.DrawRectangleProper(borderPen, new Rectangle(0, 0, img.Width, img.Height));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
bmp = img.CreateEmptyBitmap(borderSize * 2, borderSize * 2);
|
|
||||||
|
|
||||||
using (Graphics g = Graphics.FromImage(bmp))
|
|
||||||
using (img)
|
|
||||||
{
|
|
||||||
g.SetHighQuality();
|
|
||||||
g.DrawImage(img, borderSize, borderSize, img.Width, img.Height);
|
|
||||||
g.DrawRectangleProper(borderPen, new Rectangle(0, 0, img.Width + borderSize * 2, img.Height + borderSize * 2));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return bmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Image DrawOutline(Image img, GraphicsPath gp)
|
public static Image DrawOutline(Image img, GraphicsPath gp)
|
||||||
{
|
{
|
||||||
if (img != null && gp != null)
|
if (img != null && gp != null)
|
||||||
|
@ -345,27 +313,83 @@ public static Bitmap AddReflection(Image img, int percentage, int maxAlpha, int
|
||||||
return reflection;
|
return reflection;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Bitmap FillImageBackground(Image img, Color color)
|
public static Image DrawBorder(Image img, Color borderColor, int borderSize, BorderType borderType)
|
||||||
{
|
{
|
||||||
Bitmap result = img.CreateEmptyBitmap();
|
using (Pen borderPen = new Pen(borderColor, borderSize) { Alignment = PenAlignment.Inset })
|
||||||
|
{
|
||||||
|
return DrawBorder(img, borderPen, borderType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
using (Graphics g = Graphics.FromImage(result))
|
public static Image DrawBorder(Image img, Color fromBorderColor, Color toBorderColor, LinearGradientMode gradientType, int borderSize, BorderType borderType)
|
||||||
|
{
|
||||||
|
int width = img.Width;
|
||||||
|
int height = img.Height;
|
||||||
|
|
||||||
|
if (borderType == BorderType.Outside)
|
||||||
|
{
|
||||||
|
width += borderSize * 2;
|
||||||
|
height += borderSize * 2;
|
||||||
|
}
|
||||||
|
|
||||||
|
using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, width, height), fromBorderColor, toBorderColor, gradientType))
|
||||||
|
using (Pen borderPen = new Pen(brush, borderSize) { Alignment = PenAlignment.Inset })
|
||||||
|
{
|
||||||
|
return DrawBorder(img, borderPen, borderType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Image DrawBorder(Image img, Pen borderPen, BorderType borderType)
|
||||||
|
{
|
||||||
|
Bitmap bmp;
|
||||||
|
|
||||||
|
if (borderType == BorderType.Inside)
|
||||||
|
{
|
||||||
|
bmp = (Bitmap)img;
|
||||||
|
|
||||||
|
using (Graphics g = Graphics.FromImage(bmp))
|
||||||
|
{
|
||||||
|
g.DrawRectangleProper(borderPen, 0, 0, img.Width, img.Height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int borderSize = (int)borderPen.Width;
|
||||||
|
bmp = img.CreateEmptyBitmap(borderSize * 2, borderSize * 2, PixelFormat.Format32bppArgb);
|
||||||
|
|
||||||
|
using (Graphics g = Graphics.FromImage(bmp))
|
||||||
using (img)
|
using (img)
|
||||||
{
|
{
|
||||||
g.Clear(color);
|
g.DrawRectangleProper(borderPen, 0, 0, bmp.Width, bmp.Height);
|
||||||
g.SetHighQuality();
|
g.SetHighQuality();
|
||||||
g.DrawImage(img, 0, 0, result.Width, result.Height);
|
g.DrawImage(img, borderSize, borderSize, img.Width, img.Height);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return bmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Bitmap FillImageBackground(Image img, Color fromColor, Color toColor, LinearGradientMode gradientType)
|
public static Bitmap FillBackground(Image img, Color color)
|
||||||
{
|
{
|
||||||
Bitmap result = img.CreateEmptyBitmap();
|
using (Brush brush = new SolidBrush(color))
|
||||||
|
{
|
||||||
|
return FillBackground(img, brush);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Bitmap FillBackground(Image img, Color fromColor, Color toColor, LinearGradientMode gradientType)
|
||||||
|
{
|
||||||
|
using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, img.Width, img.Height), fromColor, toColor, gradientType))
|
||||||
|
{
|
||||||
|
return FillBackground(img, brush);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Bitmap FillBackground(Image img, Brush brush)
|
||||||
|
{
|
||||||
|
Bitmap result = img.CreateEmptyBitmap(PixelFormat.Format32bppArgb);
|
||||||
|
|
||||||
using (Graphics g = Graphics.FromImage(result))
|
using (Graphics g = Graphics.FromImage(result))
|
||||||
using (LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, result.Width, result.Height), fromColor, toColor, gradientType))
|
|
||||||
using (img)
|
using (img)
|
||||||
{
|
{
|
||||||
g.FillRectangle(brush, 0, 0, result.Width, result.Height);
|
g.FillRectangle(brush, 0, 0, result.Width, result.Height);
|
||||||
|
|
|
@ -86,6 +86,7 @@
|
||||||
<Compile Include="Colors\RGBA.cs" />
|
<Compile Include="Colors\RGBA.cs" />
|
||||||
<Compile Include="ConvolutionMatrix.cs" />
|
<Compile Include="ConvolutionMatrix.cs" />
|
||||||
<Compile Include="ConvolutionMatrixManager.cs" />
|
<Compile Include="ConvolutionMatrixManager.cs" />
|
||||||
|
<Compile Include="FileNameEditors\ImageFileNameEditor.cs" />
|
||||||
<Compile Include="Helpers\ClipboardHelpers.cs" />
|
<Compile Include="Helpers\ClipboardHelpers.cs" />
|
||||||
<Compile Include="ColorBgra.cs" />
|
<Compile Include="ColorBgra.cs" />
|
||||||
<Compile Include="Cryptographic\Crc32.cs" />
|
<Compile Include="Cryptographic\Crc32.cs" />
|
||||||
|
|
|
@ -31,10 +31,10 @@ namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
internal class Alpha : ImageEffect
|
internal class Alpha : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(1f)]
|
[DefaultValue(1f), Description("Pixel alpha = Pixel alpha * Value\r\nExample 0.5 will decrease alpha of pixel 50%")]
|
||||||
public float Value { get; set; }
|
public float Value { get; set; }
|
||||||
|
|
||||||
[DefaultValue(0f)]
|
[DefaultValue(0f), Description("Pixel alpha = Pixel alpha + Addition\r\nExample 0.5 will increase alpha of pixel 127.5")]
|
||||||
public float Addition { get; set; }
|
public float Addition { get; set; }
|
||||||
|
|
||||||
public Alpha()
|
public Alpha()
|
||||||
|
|
|
@ -29,6 +29,7 @@ You should have received a copy of the GNU General Public License
|
||||||
|
|
||||||
namespace ImageEffectsLib
|
namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
|
[Description("Black & white")]
|
||||||
internal class BlackWhite : ImageEffect
|
internal class BlackWhite : ImageEffect
|
||||||
{
|
{
|
||||||
public override Image Apply(Image img)
|
public override Image Apply(Image img)
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
internal class Brightness : ImageEffect
|
internal class Brightness : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(0f)]
|
[DefaultValue(0f), Description("Pixel color = Pixel color + Value\r\nExample 0.5 will increase color of pixel 127.5")]
|
||||||
public float Value { get; set; }
|
public float Value { get; set; }
|
||||||
|
|
||||||
public Brightness()
|
public Brightness()
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
internal class Contrast : ImageEffect
|
internal class Contrast : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(1f)]
|
[DefaultValue(1f), Description("Pixel color = Pixel color * Value\r\nExample 1.5 will increase color of pixel 50%")]
|
||||||
public float Value { get; set; }
|
public float Value { get; set; }
|
||||||
|
|
||||||
public Contrast()
|
public Contrast()
|
||||||
|
|
|
@ -31,7 +31,7 @@ namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
internal class Hue : ImageEffect
|
internal class Hue : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(0f)]
|
[DefaultValue(0f), Description("From 0 to 360")]
|
||||||
public float Angle { get; set; }
|
public float Angle { get; set; }
|
||||||
|
|
||||||
public Hue()
|
public Hue()
|
||||||
|
|
|
@ -30,6 +30,7 @@ You should have received a copy of the GNU General Public License
|
||||||
|
|
||||||
namespace ImageEffectsLib
|
namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
|
[Description("Color matrix")]
|
||||||
internal class MatrixColor : ImageEffect
|
internal class MatrixColor : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(1f), Description("Red = (Red * Rr) + (Green * Rg) + (Blue * Rb) + (Alpha * Ra) + Ro")]
|
[DefaultValue(1f), Description("Red = (Red * Rr) + (Green * Rg) + (Blue * Rb) + (Alpha * Ra) + Ro")]
|
||||||
|
|
|
@ -30,10 +30,14 @@ You should have received a copy of the GNU General Public License
|
||||||
|
|
||||||
namespace ImageEffectsLib
|
namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
internal class BackgroundGradient : ImageEffect
|
[Description("Background")]
|
||||||
|
internal class DrawBackground : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(typeof(Color), "White")]
|
[DefaultValue(typeof(Color), "White")]
|
||||||
public Color FromColor { get; set; }
|
public Color Color { get; set; }
|
||||||
|
|
||||||
|
[DefaultValue(false)]
|
||||||
|
public bool UseGradient { get; set; }
|
||||||
|
|
||||||
[DefaultValue(typeof(Color), "Black")]
|
[DefaultValue(typeof(Color), "Black")]
|
||||||
public Color ToColor { get; set; }
|
public Color ToColor { get; set; }
|
||||||
|
@ -41,14 +45,21 @@ internal class BackgroundGradient : ImageEffect
|
||||||
[DefaultValue(LinearGradientMode.ForwardDiagonal)]
|
[DefaultValue(LinearGradientMode.ForwardDiagonal)]
|
||||||
public LinearGradientMode GradientType { get; set; }
|
public LinearGradientMode GradientType { get; set; }
|
||||||
|
|
||||||
public BackgroundGradient()
|
public DrawBackground()
|
||||||
{
|
{
|
||||||
this.ApplyDefaultPropertyValues();
|
this.ApplyDefaultPropertyValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Image Apply(Image img)
|
public override Image Apply(Image img)
|
||||||
{
|
{
|
||||||
return ImageHelpers.FillImageBackground(img, FromColor, ToColor, GradientType);
|
if (UseGradient)
|
||||||
|
{
|
||||||
|
return ImageHelpers.FillBackground(img, Color, ToColor, GradientType);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return ImageHelpers.FillBackground(img, Color);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -26,28 +26,46 @@ You should have received a copy of the GNU General Public License
|
||||||
using HelpersLib;
|
using HelpersLib;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Drawing.Drawing2D;
|
||||||
|
|
||||||
namespace ImageEffectsLib
|
namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
internal class Border : ImageEffect
|
[Description("Border")]
|
||||||
|
internal class DrawBorder : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(BorderType.Outside)]
|
[DefaultValue(BorderType.Outside)]
|
||||||
public BorderType Type { get; set; }
|
public BorderType Type { get; set; }
|
||||||
|
|
||||||
[DefaultValue(typeof(Color), "DodgerBlue")]
|
|
||||||
public Color Color { get; set; }
|
|
||||||
|
|
||||||
[DefaultValue(1)]
|
[DefaultValue(1)]
|
||||||
public int Size { get; set; }
|
public int Size { get; set; }
|
||||||
|
|
||||||
public Border()
|
[DefaultValue(typeof(Color), "DodgerBlue")]
|
||||||
|
public Color Color { get; set; }
|
||||||
|
|
||||||
|
[DefaultValue(false)]
|
||||||
|
public bool UseGradient { get; set; }
|
||||||
|
|
||||||
|
[DefaultValue(typeof(Color), "Black")]
|
||||||
|
public Color ToColor { get; set; }
|
||||||
|
|
||||||
|
[DefaultValue(LinearGradientMode.ForwardDiagonal)]
|
||||||
|
public LinearGradientMode GradientType { get; set; }
|
||||||
|
|
||||||
|
public DrawBorder()
|
||||||
{
|
{
|
||||||
this.ApplyDefaultPropertyValues();
|
this.ApplyDefaultPropertyValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override Image Apply(Image img)
|
public override Image Apply(Image img)
|
||||||
{
|
{
|
||||||
return ImageHelpers.DrawBorder(img, Type, Color, Size);
|
if (UseGradient)
|
||||||
|
{
|
||||||
|
return ImageHelpers.DrawBorder(img, Color, ToColor, GradientType, Size, Type);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return ImageHelpers.DrawBorder(img, Color, Size, Type);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
79
ImageEffectsLib/Drawings/DrawImage.cs
Normal file
79
ImageEffectsLib/Drawings/DrawImage.cs
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
#region License Information (GPL v3)
|
||||||
|
|
||||||
|
/*
|
||||||
|
ShareX - A program that allows you to take screenshots and share any file type
|
||||||
|
Copyright (C) 2008-2013 ShareX Developers
|
||||||
|
|
||||||
|
This program is free software; you can redistribute it and/or
|
||||||
|
modify it under the terms of the GNU General Public License
|
||||||
|
as published by the Free Software Foundation; either version 2
|
||||||
|
of the License, or (at your option) any later version.
|
||||||
|
|
||||||
|
This program is distributed in the hope that it will be useful,
|
||||||
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
GNU General Public License for more details.
|
||||||
|
|
||||||
|
You should have received a copy of the GNU General Public License
|
||||||
|
along with this program; if not, write to the Free Software
|
||||||
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
|
||||||
|
Optionally you can also view the license at <http://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#endregion License Information (GPL v3)
|
||||||
|
|
||||||
|
using HelpersLib;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Design;
|
||||||
|
using System.Drawing.Drawing2D;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
|
namespace ImageEffectsLib
|
||||||
|
{
|
||||||
|
[Description("Image")]
|
||||||
|
internal class DrawImage : ImageEffect
|
||||||
|
{
|
||||||
|
[DefaultValue(""), Editor(typeof(ImageFileNameEditor), typeof(UITypeEditor))]
|
||||||
|
public string ImageLocation { get; set; }
|
||||||
|
|
||||||
|
[DefaultValue(PositionType.Bottom_Right)]
|
||||||
|
public PositionType Position { get; set; }
|
||||||
|
|
||||||
|
[DefaultValue(5)]
|
||||||
|
public int Offset { get; set; }
|
||||||
|
|
||||||
|
[DefaultValue(false), Description("If image size bigger than source image then don't draw it.")]
|
||||||
|
public bool AutoHide { get; set; }
|
||||||
|
|
||||||
|
public DrawImage()
|
||||||
|
{
|
||||||
|
this.ApplyDefaultPropertyValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Image Apply(Image img)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrEmpty(ImageLocation) && File.Exists(ImageLocation))
|
||||||
|
{
|
||||||
|
using (Image img2 = Helpers.GetImageFromFile(ImageLocation))
|
||||||
|
{
|
||||||
|
if (AutoHide && ((img2.Width + Offset > img.Width) || (img2.Height + Offset > img.Height)))
|
||||||
|
{
|
||||||
|
return img;
|
||||||
|
}
|
||||||
|
|
||||||
|
Point pos = Helpers.GetPosition(Position, Offset, img.Size, img2.Size);
|
||||||
|
|
||||||
|
using (Graphics g = Graphics.FromImage(img))
|
||||||
|
{
|
||||||
|
g.SetHighQuality();
|
||||||
|
g.DrawImage(img2, pos.X, pos.Y, img2.Width, img2.Height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return img;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -29,6 +29,7 @@ You should have received a copy of the GNU General Public License
|
||||||
|
|
||||||
namespace ImageEffectsLib
|
namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
|
[Description("Edge detect")]
|
||||||
internal class EdgeDetect : ImageEffect
|
internal class EdgeDetect : ImageEffect
|
||||||
{
|
{
|
||||||
public override Image Apply(Image img)
|
public override Image Apply(Image img)
|
||||||
|
|
|
@ -29,21 +29,14 @@ You should have received a copy of the GNU General Public License
|
||||||
|
|
||||||
namespace ImageEffectsLib
|
namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
|
[Description("Gaussian blur")]
|
||||||
internal class GaussianBlur : ImageEffect
|
internal class GaussianBlur : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(4)]
|
|
||||||
public int Weight { get; set; }
|
|
||||||
|
|
||||||
public GaussianBlur()
|
|
||||||
{
|
|
||||||
this.ApplyDefaultPropertyValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override Image Apply(Image img)
|
public override Image Apply(Image img)
|
||||||
{
|
{
|
||||||
using (img)
|
using (img)
|
||||||
{
|
{
|
||||||
return ConvolutionMatrixManager.GaussianBlur(Weight).Apply(img);
|
return ConvolutionMatrixManager.GaussianBlur().Apply(img);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ You should have received a copy of the GNU General Public License
|
||||||
|
|
||||||
namespace ImageEffectsLib
|
namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
|
[Description("Convolution matrix")]
|
||||||
internal class MatrixConvolution : ImageEffect
|
internal class MatrixConvolution : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(0)]
|
[DefaultValue(0)]
|
||||||
|
|
|
@ -29,21 +29,14 @@ You should have received a copy of the GNU General Public License
|
||||||
|
|
||||||
namespace ImageEffectsLib
|
namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
|
[Description("Mean removal")]
|
||||||
internal class MeanRemoval : ImageEffect
|
internal class MeanRemoval : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(9)]
|
|
||||||
public int Weight { get; set; }
|
|
||||||
|
|
||||||
public MeanRemoval()
|
|
||||||
{
|
|
||||||
this.ApplyDefaultPropertyValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override Image Apply(Image img)
|
public override Image Apply(Image img)
|
||||||
{
|
{
|
||||||
using (img)
|
using (img)
|
||||||
{
|
{
|
||||||
return ConvolutionMatrixManager.MeanRemoval(Weight).Apply(img);
|
return ConvolutionMatrixManager.MeanRemoval().Apply(img);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,21 +31,13 @@ namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
internal class Sharpen : ImageEffect
|
internal class Sharpen : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(11)]
|
|
||||||
public int Weight { get; set; }
|
|
||||||
|
|
||||||
public Sharpen()
|
|
||||||
{
|
|
||||||
this.ApplyDefaultPropertyValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override Image Apply(Image img)
|
public override Image Apply(Image img)
|
||||||
{
|
{
|
||||||
//return ImageHelpers.Sharpen(img, Strength);
|
//return ImageHelpers.Sharpen(img, Strength);
|
||||||
|
|
||||||
using (img)
|
using (img)
|
||||||
{
|
{
|
||||||
return ConvolutionMatrixManager.Sharpen(Weight).Apply(img);
|
return ConvolutionMatrixManager.Sharpen().Apply(img);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,19 +31,11 @@ namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
internal class Smooth : ImageEffect
|
internal class Smooth : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(1)]
|
|
||||||
public int Weight { get; set; }
|
|
||||||
|
|
||||||
public Smooth()
|
|
||||||
{
|
|
||||||
this.ApplyDefaultPropertyValues();
|
|
||||||
}
|
|
||||||
|
|
||||||
public override Image Apply(Image img)
|
public override Image Apply(Image img)
|
||||||
{
|
{
|
||||||
using (img)
|
using (img)
|
||||||
{
|
{
|
||||||
return ConvolutionMatrixManager.Smooth(Weight).Apply(img);
|
return ConvolutionMatrixManager.Smooth().Apply(img);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,6 +29,7 @@ You should have received a copy of the GNU General Public License
|
||||||
|
|
||||||
namespace ImageEffectsLib
|
namespace ImageEffectsLib
|
||||||
{
|
{
|
||||||
|
[Description("Torn edge")]
|
||||||
internal class TornEdge : ImageEffect
|
internal class TornEdge : ImageEffect
|
||||||
{
|
{
|
||||||
[DefaultValue(12)]
|
[DefaultValue(12)]
|
||||||
|
|
38
ImageEffectsLib/ImageEffectsForm.Designer.cs
generated
38
ImageEffectsLib/ImageEffectsForm.Designer.cs
generated
|
@ -41,10 +41,10 @@ private void InitializeComponent()
|
||||||
this.btnMoveDown = new System.Windows.Forms.Button();
|
this.btnMoveDown = new System.Windows.Forms.Button();
|
||||||
this.btnDuplicate = new System.Windows.Forms.Button();
|
this.btnDuplicate = new System.Windows.Forms.Button();
|
||||||
this.lblStatus = new System.Windows.Forms.Label();
|
this.lblStatus = new System.Windows.Forms.Label();
|
||||||
this.btnTest = new System.Windows.Forms.Button();
|
|
||||||
this.btnRefresh = new System.Windows.Forms.Button();
|
this.btnRefresh = new System.Windows.Forms.Button();
|
||||||
this.btnLoadImage = new System.Windows.Forms.Button();
|
this.btnLoadImage = new System.Windows.Forms.Button();
|
||||||
this.pbResult = new HelpersLib.MyPictureBox();
|
this.pbResult = new HelpersLib.MyPictureBox();
|
||||||
|
this.btnSaveImage = new System.Windows.Forms.Button();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// tvEffects
|
// tvEffects
|
||||||
|
@ -189,18 +189,6 @@ private void InitializeComponent()
|
||||||
this.lblStatus.TabIndex = 12;
|
this.lblStatus.TabIndex = 12;
|
||||||
this.lblStatus.Text = "Status";
|
this.lblStatus.Text = "Status";
|
||||||
//
|
//
|
||||||
// btnTest
|
|
||||||
//
|
|
||||||
this.btnTest.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.btnTest.Location = new System.Drawing.Point(708, 734);
|
|
||||||
this.btnTest.Name = "btnTest";
|
|
||||||
this.btnTest.Size = new System.Drawing.Size(72, 24);
|
|
||||||
this.btnTest.TabIndex = 13;
|
|
||||||
this.btnTest.Text = "Test";
|
|
||||||
this.btnTest.UseVisualStyleBackColor = true;
|
|
||||||
this.btnTest.Visible = false;
|
|
||||||
this.btnTest.Click += new System.EventHandler(this.btnTest_Click);
|
|
||||||
//
|
|
||||||
// btnRefresh
|
// btnRefresh
|
||||||
//
|
//
|
||||||
this.btnRefresh.Location = new System.Drawing.Point(408, 8);
|
this.btnRefresh.Location = new System.Drawing.Point(408, 8);
|
||||||
|
@ -214,11 +202,12 @@ private void InitializeComponent()
|
||||||
//
|
//
|
||||||
// btnLoadImage
|
// btnLoadImage
|
||||||
//
|
//
|
||||||
this.btnLoadImage.Location = new System.Drawing.Point(618, 734);
|
this.btnLoadImage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnLoadImage.Location = new System.Drawing.Point(576, 734);
|
||||||
this.btnLoadImage.Name = "btnLoadImage";
|
this.btnLoadImage.Name = "btnLoadImage";
|
||||||
this.btnLoadImage.Size = new System.Drawing.Size(84, 24);
|
this.btnLoadImage.Size = new System.Drawing.Size(99, 24);
|
||||||
this.btnLoadImage.TabIndex = 15;
|
this.btnLoadImage.TabIndex = 15;
|
||||||
this.btnLoadImage.Text = "Load image";
|
this.btnLoadImage.Text = "Load image...";
|
||||||
this.btnLoadImage.UseVisualStyleBackColor = true;
|
this.btnLoadImage.UseVisualStyleBackColor = true;
|
||||||
this.btnLoadImage.Visible = false;
|
this.btnLoadImage.Visible = false;
|
||||||
this.btnLoadImage.Click += new System.EventHandler(this.btnLoadImage_Click);
|
this.btnLoadImage.Click += new System.EventHandler(this.btnLoadImage_Click);
|
||||||
|
@ -231,20 +220,33 @@ private void InitializeComponent()
|
||||||
this.pbResult.BackColor = System.Drawing.Color.White;
|
this.pbResult.BackColor = System.Drawing.Color.White;
|
||||||
this.pbResult.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
this.pbResult.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||||
this.pbResult.DrawCheckeredBackground = true;
|
this.pbResult.DrawCheckeredBackground = true;
|
||||||
|
this.pbResult.EnableRightClickMenu = true;
|
||||||
this.pbResult.FullscreenOnClick = true;
|
this.pbResult.FullscreenOnClick = true;
|
||||||
this.pbResult.Location = new System.Drawing.Point(248, 280);
|
this.pbResult.Location = new System.Drawing.Point(248, 280);
|
||||||
this.pbResult.Name = "pbResult";
|
this.pbResult.Name = "pbResult";
|
||||||
this.pbResult.Size = new System.Drawing.Size(688, 448);
|
this.pbResult.Size = new System.Drawing.Size(688, 448);
|
||||||
this.pbResult.TabIndex = 11;
|
this.pbResult.TabIndex = 11;
|
||||||
//
|
//
|
||||||
|
// btnSaveImage
|
||||||
|
//
|
||||||
|
this.btnSaveImage.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.btnSaveImage.Location = new System.Drawing.Point(681, 734);
|
||||||
|
this.btnSaveImage.Name = "btnSaveImage";
|
||||||
|
this.btnSaveImage.Size = new System.Drawing.Size(99, 24);
|
||||||
|
this.btnSaveImage.TabIndex = 16;
|
||||||
|
this.btnSaveImage.Text = "Save image...";
|
||||||
|
this.btnSaveImage.UseVisualStyleBackColor = true;
|
||||||
|
this.btnSaveImage.Visible = false;
|
||||||
|
this.btnSaveImage.Click += new System.EventHandler(this.btnSaveImage_Click);
|
||||||
|
//
|
||||||
// ImageEffectsForm
|
// ImageEffectsForm
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.ClientSize = new System.Drawing.Size(944, 766);
|
this.ClientSize = new System.Drawing.Size(944, 766);
|
||||||
|
this.Controls.Add(this.btnSaveImage);
|
||||||
this.Controls.Add(this.btnLoadImage);
|
this.Controls.Add(this.btnLoadImage);
|
||||||
this.Controls.Add(this.btnRefresh);
|
this.Controls.Add(this.btnRefresh);
|
||||||
this.Controls.Add(this.btnTest);
|
|
||||||
this.Controls.Add(this.lblStatus);
|
this.Controls.Add(this.lblStatus);
|
||||||
this.Controls.Add(this.btnDuplicate);
|
this.Controls.Add(this.btnDuplicate);
|
||||||
this.Controls.Add(this.btnMoveDown);
|
this.Controls.Add(this.btnMoveDown);
|
||||||
|
@ -283,9 +285,9 @@ private void InitializeComponent()
|
||||||
private System.Windows.Forms.Button btnMoveDown;
|
private System.Windows.Forms.Button btnMoveDown;
|
||||||
private System.Windows.Forms.Button btnDuplicate;
|
private System.Windows.Forms.Button btnDuplicate;
|
||||||
private System.Windows.Forms.Label lblStatus;
|
private System.Windows.Forms.Label lblStatus;
|
||||||
private System.Windows.Forms.Button btnTest;
|
|
||||||
private System.Windows.Forms.Button btnRefresh;
|
private System.Windows.Forms.Button btnRefresh;
|
||||||
private System.Windows.Forms.Button btnLoadImage;
|
private System.Windows.Forms.Button btnLoadImage;
|
||||||
|
private System.Windows.Forms.Button btnSaveImage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ You should have received a copy of the GNU General Public License
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
@ -54,19 +55,21 @@ public ImageEffectsForm(Image img, List<ImageEffect> effects = null)
|
||||||
UpdatePreview();
|
UpdatePreview();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Test()
|
public void EditorMode()
|
||||||
{
|
{
|
||||||
btnRefresh.Visible = true;
|
btnRefresh.Visible = true;
|
||||||
btnLoadImage.Visible = true;
|
btnLoadImage.Visible = true;
|
||||||
btnTest.Visible = true;
|
btnSaveImage.Visible = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddAllEffectsToTreeView()
|
private void AddAllEffectsToTreeView()
|
||||||
{
|
{
|
||||||
|
AddEffectToTreeView("Drawings",
|
||||||
|
typeof(DrawBackground),
|
||||||
|
typeof(DrawBorder),
|
||||||
|
typeof(DrawImage));
|
||||||
|
|
||||||
AddEffectToTreeView("Manipulations",
|
AddEffectToTreeView("Manipulations",
|
||||||
typeof(Background),
|
|
||||||
typeof(BackgroundGradient),
|
|
||||||
typeof(Border),
|
|
||||||
typeof(Crop),
|
typeof(Crop),
|
||||||
typeof(Canvas),
|
typeof(Canvas),
|
||||||
typeof(Flip),
|
typeof(Flip),
|
||||||
|
@ -113,7 +116,7 @@ private void AddEffectToTreeView(string groupName, params Type[] imageEffects)
|
||||||
|
|
||||||
foreach (Type imageEffect in imageEffects)
|
foreach (Type imageEffect in imageEffects)
|
||||||
{
|
{
|
||||||
TreeNode childNode = parentNode.Nodes.Add(imageEffect.Name);
|
TreeNode childNode = parentNode.Nodes.Add(imageEffect.GetDescription());
|
||||||
childNode.Tag = imageEffect;
|
childNode.Tag = imageEffect;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -178,7 +181,7 @@ private void ClearEffects()
|
||||||
|
|
||||||
private void AddEffect(ImageEffect imageEffect)
|
private void AddEffect(ImageEffect imageEffect)
|
||||||
{
|
{
|
||||||
ListViewItem lvi = new ListViewItem(imageEffect.GetType().Name);
|
ListViewItem lvi = new ListViewItem(imageEffect.GetType().GetDescription());
|
||||||
lvi.Tag = imageEffect;
|
lvi.Tag = imageEffect;
|
||||||
|
|
||||||
if (lvEffects.SelectedIndices.Count > 0)
|
if (lvEffects.SelectedIndices.Count > 0)
|
||||||
|
@ -320,11 +323,21 @@ private void btnLoadImage_Click(object sender, EventArgs e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnTest_Click(object sender, EventArgs e)
|
private void btnSaveImage_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
AddEffect(new Background { Color = Color.Black });
|
using (SaveFileDialog sfd = new SaveFileDialog())
|
||||||
AddEffect(new Border { Color = Color.Red });
|
{
|
||||||
UpdatePreview();
|
sfd.DefaultExt = ".png";
|
||||||
|
sfd.Filter = "PNG image (*.png)|*.png";
|
||||||
|
|
||||||
|
if (sfd.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
using (Image preview = ApplyEffects())
|
||||||
|
{
|
||||||
|
preview.Save(sfd.FileName, ImageFormat.Png);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnOK_Click(object sender, EventArgs e)
|
private void btnOK_Click(object sender, EventArgs e)
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
|
<Reference Include="System.Design" />
|
||||||
<Reference Include="System.Drawing" />
|
<Reference Include="System.Drawing" />
|
||||||
<Reference Include="System.Windows.Forms" />
|
<Reference Include="System.Windows.Forms" />
|
||||||
<Reference Include="System.Xml.Linq">
|
<Reference Include="System.Xml.Linq">
|
||||||
|
@ -75,6 +76,7 @@
|
||||||
<Compile Include="Adjustments\Polaroid.cs" />
|
<Compile Include="Adjustments\Polaroid.cs" />
|
||||||
<Compile Include="Adjustments\Sepia.cs" />
|
<Compile Include="Adjustments\Sepia.cs" />
|
||||||
<Compile Include="Adjustments\MatrixColor.cs" />
|
<Compile Include="Adjustments\MatrixColor.cs" />
|
||||||
|
<Compile Include="Drawings\DrawImage.cs" />
|
||||||
<Compile Include="Filters\EdgeDetect.cs" />
|
<Compile Include="Filters\EdgeDetect.cs" />
|
||||||
<Compile Include="Filters\Emboss.cs" />
|
<Compile Include="Filters\Emboss.cs" />
|
||||||
<Compile Include="Filters\GaussianBlur.cs" />
|
<Compile Include="Filters\GaussianBlur.cs" />
|
||||||
|
@ -84,7 +86,6 @@
|
||||||
<Compile Include="Filters\Sharpen.cs" />
|
<Compile Include="Filters\Sharpen.cs" />
|
||||||
<Compile Include="Filters\Smooth.cs" />
|
<Compile Include="Filters\Smooth.cs" />
|
||||||
<Compile Include="ImageEffectManager.cs" />
|
<Compile Include="ImageEffectManager.cs" />
|
||||||
<Compile Include="Manipulations\BackgroundGradient.cs" />
|
|
||||||
<Compile Include="Adjustments\Brightness.cs" />
|
<Compile Include="Adjustments\Brightness.cs" />
|
||||||
<Compile Include="Adjustments\Colorize.cs" />
|
<Compile Include="Adjustments\Colorize.cs" />
|
||||||
<Compile Include="Adjustments\Contrast.cs" />
|
<Compile Include="Adjustments\Contrast.cs" />
|
||||||
|
@ -99,7 +100,7 @@
|
||||||
<Compile Include="Filters\Shadow.cs" />
|
<Compile Include="Filters\Shadow.cs" />
|
||||||
<Compile Include="Filters\TornEdge.cs" />
|
<Compile Include="Filters\TornEdge.cs" />
|
||||||
<Compile Include="Manipulations\Canvas.cs" />
|
<Compile Include="Manipulations\Canvas.cs" />
|
||||||
<Compile Include="Manipulations\Background.cs" />
|
<Compile Include="Drawings\DrawBackground.cs" />
|
||||||
<Compile Include="Manipulations\Flip.cs" />
|
<Compile Include="Manipulations\Flip.cs" />
|
||||||
<Compile Include="Manipulations\Scale.cs" />
|
<Compile Include="Manipulations\Scale.cs" />
|
||||||
<Compile Include="ImageEffect.cs" />
|
<Compile Include="ImageEffect.cs" />
|
||||||
|
@ -109,7 +110,7 @@
|
||||||
<Compile Include="ImageEffectsForm.Designer.cs">
|
<Compile Include="ImageEffectsForm.Designer.cs">
|
||||||
<DependentUpon>ImageEffectsForm.cs</DependentUpon>
|
<DependentUpon>ImageEffectsForm.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Manipulations\Border.cs" />
|
<Compile Include="Drawings\DrawBorder.cs" />
|
||||||
<Compile Include="Filters\Reflection.cs" />
|
<Compile Include="Filters\Reflection.cs" />
|
||||||
<Compile Include="Manipulations\Resize.cs" />
|
<Compile Include="Manipulations\Resize.cs" />
|
||||||
<Compile Include="Manipulations\Rotate.cs" />
|
<Compile Include="Manipulations\Rotate.cs" />
|
||||||
|
|
39
ShareX/Forms/MainForm.Designer.cs
generated
39
ShareX/Forms/MainForm.Designer.cs
generated
|
@ -91,6 +91,7 @@ private void InitializeComponent()
|
||||||
this.tsmiScreenColorPicker = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsmiScreenColorPicker = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsmiHashCheck = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsmiHashCheck = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsmiIndexFolder = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsmiIndexFolder = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiImageEffects = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsbScreenshotsFolder = new System.Windows.Forms.ToolStripButton();
|
this.tsbScreenshotsFolder = new System.Windows.Forms.ToolStripButton();
|
||||||
this.tsbHistory = new System.Windows.Forms.ToolStripButton();
|
this.tsbHistory = new System.Windows.Forms.ToolStripButton();
|
||||||
this.tsbImageHistory = new System.Windows.Forms.ToolStripButton();
|
this.tsbImageHistory = new System.Windows.Forms.ToolStripButton();
|
||||||
|
@ -105,7 +106,6 @@ private void InitializeComponent()
|
||||||
this.tsmiTestURLShortener = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsmiTestURLShortener = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsmiTestUploaders = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsmiTestUploaders = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsmiTestShapeCapture = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsmiTestShapeCapture = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsmiTestImageEffects = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.scMain = new HelpersLib.SplitContainerCustomSplitter();
|
this.scMain = new HelpersLib.SplitContainerCustomSplitter();
|
||||||
this.lblDragAndDropTip = new System.Windows.Forms.Label();
|
this.lblDragAndDropTip = new System.Windows.Forms.Label();
|
||||||
this.lblSplitter = new System.Windows.Forms.Label();
|
this.lblSplitter = new System.Windows.Forms.Label();
|
||||||
|
@ -208,6 +208,7 @@ private void InitializeComponent()
|
||||||
this.tssTray3 = new System.Windows.Forms.ToolStripSeparator();
|
this.tssTray3 = new System.Windows.Forms.ToolStripSeparator();
|
||||||
this.tsmiTrayExit = new System.Windows.Forms.ToolStripMenuItem();
|
this.tsmiTrayExit = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.ssToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.ssToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
|
this.tsmiTrayImageEffects = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.tsMain.SuspendLayout();
|
this.tsMain.SuspendLayout();
|
||||||
this.scMain.Panel1.SuspendLayout();
|
this.scMain.Panel1.SuspendLayout();
|
||||||
this.scMain.Panel2.SuspendLayout();
|
this.scMain.Panel2.SuspendLayout();
|
||||||
|
@ -530,7 +531,8 @@ private void InitializeComponent()
|
||||||
this.tsddbTools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.tsddbTools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.tsmiScreenColorPicker,
|
this.tsmiScreenColorPicker,
|
||||||
this.tsmiHashCheck,
|
this.tsmiHashCheck,
|
||||||
this.tsmiIndexFolder});
|
this.tsmiIndexFolder,
|
||||||
|
this.tsmiImageEffects});
|
||||||
this.tsddbTools.Image = global::ShareX.Properties.Resources.toolbox;
|
this.tsddbTools.Image = global::ShareX.Properties.Resources.toolbox;
|
||||||
this.tsddbTools.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
this.tsddbTools.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
this.tsddbTools.ImageTransparentColor = System.Drawing.Color.Magenta;
|
this.tsddbTools.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
@ -562,6 +564,14 @@ private void InitializeComponent()
|
||||||
this.tsmiIndexFolder.Text = "Index folder...";
|
this.tsmiIndexFolder.Text = "Index folder...";
|
||||||
this.tsmiIndexFolder.Click += new System.EventHandler(this.tsmiIndexFolder_Click);
|
this.tsmiIndexFolder.Click += new System.EventHandler(this.tsmiIndexFolder_Click);
|
||||||
//
|
//
|
||||||
|
// tsmiImageEffects
|
||||||
|
//
|
||||||
|
this.tsmiImageEffects.Image = global::ShareX.Properties.Resources.image_saturation;
|
||||||
|
this.tsmiImageEffects.Name = "tsmiImageEffects";
|
||||||
|
this.tsmiImageEffects.Size = new System.Drawing.Size(183, 22);
|
||||||
|
this.tsmiImageEffects.Text = "Image effects...";
|
||||||
|
this.tsmiImageEffects.Click += new System.EventHandler(this.tsmiImageEffects_Click);
|
||||||
|
//
|
||||||
// tsbScreenshotsFolder
|
// tsbScreenshotsFolder
|
||||||
//
|
//
|
||||||
this.tsbScreenshotsFolder.Image = global::ShareX.Properties.Resources.folder_open_image;
|
this.tsbScreenshotsFolder.Image = global::ShareX.Properties.Resources.folder_open_image;
|
||||||
|
@ -634,8 +644,7 @@ private void InitializeComponent()
|
||||||
this.tsmiTestFileUpload,
|
this.tsmiTestFileUpload,
|
||||||
this.tsmiTestURLShortener,
|
this.tsmiTestURLShortener,
|
||||||
this.tsmiTestUploaders,
|
this.tsmiTestUploaders,
|
||||||
this.tsmiTestShapeCapture,
|
this.tsmiTestShapeCapture});
|
||||||
this.tsmiTestImageEffects});
|
|
||||||
this.tsmiDebug.Image = global::ShareX.Properties.Resources.block;
|
this.tsmiDebug.Image = global::ShareX.Properties.Resources.block;
|
||||||
this.tsmiDebug.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
this.tsmiDebug.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft;
|
||||||
this.tsmiDebug.ImageTransparentColor = System.Drawing.Color.Magenta;
|
this.tsmiDebug.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||||
|
@ -699,14 +708,6 @@ private void InitializeComponent()
|
||||||
this.tsmiTestShapeCapture.Text = "Test shape capture...";
|
this.tsmiTestShapeCapture.Text = "Test shape capture...";
|
||||||
this.tsmiTestShapeCapture.Click += new System.EventHandler(this.tsmiTestShapeCapture_Click);
|
this.tsmiTestShapeCapture.Click += new System.EventHandler(this.tsmiTestShapeCapture_Click);
|
||||||
//
|
//
|
||||||
// tsmiTestImageEffects
|
|
||||||
//
|
|
||||||
this.tsmiTestImageEffects.Image = global::ShareX.Properties.Resources.image_saturation;
|
|
||||||
this.tsmiTestImageEffects.Name = "tsmiTestImageEffects";
|
|
||||||
this.tsmiTestImageEffects.Size = new System.Drawing.Size(182, 22);
|
|
||||||
this.tsmiTestImageEffects.Text = "Test image effects...";
|
|
||||||
this.tsmiTestImageEffects.Click += new System.EventHandler(this.tsmiTestImageEffects_Click);
|
|
||||||
//
|
|
||||||
// scMain
|
// scMain
|
||||||
//
|
//
|
||||||
this.scMain.Dock = System.Windows.Forms.DockStyle.Fill;
|
this.scMain.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||||
|
@ -1463,7 +1464,8 @@ private void InitializeComponent()
|
||||||
this.tsmiTrayTools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
this.tsmiTrayTools.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||||
this.tsmiTrayScreenColorPicker,
|
this.tsmiTrayScreenColorPicker,
|
||||||
this.tsmiTrayHashCheck,
|
this.tsmiTrayHashCheck,
|
||||||
this.tsmiTrayIndexFolder});
|
this.tsmiTrayIndexFolder,
|
||||||
|
this.tsmiTrayImageEffects});
|
||||||
this.tsmiTrayTools.Image = global::ShareX.Properties.Resources.toolbox;
|
this.tsmiTrayTools.Image = global::ShareX.Properties.Resources.toolbox;
|
||||||
this.tsmiTrayTools.Name = "tsmiTrayTools";
|
this.tsmiTrayTools.Name = "tsmiTrayTools";
|
||||||
this.tsmiTrayTools.Size = new System.Drawing.Size(188, 22);
|
this.tsmiTrayTools.Size = new System.Drawing.Size(188, 22);
|
||||||
|
@ -1552,6 +1554,14 @@ private void InitializeComponent()
|
||||||
this.ssToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
this.ssToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
|
||||||
this.ssToolStripMenuItem.Text = "ss";
|
this.ssToolStripMenuItem.Text = "ss";
|
||||||
//
|
//
|
||||||
|
// tsmiTrayImageEffects
|
||||||
|
//
|
||||||
|
this.tsmiTrayImageEffects.Image = global::ShareX.Properties.Resources.image_saturation;
|
||||||
|
this.tsmiTrayImageEffects.Name = "tsmiTrayImageEffects";
|
||||||
|
this.tsmiTrayImageEffects.Size = new System.Drawing.Size(183, 22);
|
||||||
|
this.tsmiTrayImageEffects.Text = "Image effects...";
|
||||||
|
this.tsmiTrayImageEffects.Click += new System.EventHandler(this.tsmiImageEffects_Click);
|
||||||
|
//
|
||||||
// MainForm
|
// MainForm
|
||||||
//
|
//
|
||||||
this.AllowDrop = true;
|
this.AllowDrop = true;
|
||||||
|
@ -1736,7 +1746,8 @@ private void InitializeComponent()
|
||||||
private System.Windows.Forms.ToolStripSeparator tssTray3;
|
private System.Windows.Forms.ToolStripSeparator tssTray3;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsmiIndexFolder;
|
private System.Windows.Forms.ToolStripMenuItem tsmiIndexFolder;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsmiTrayIndexFolder;
|
private System.Windows.Forms.ToolStripMenuItem tsmiTrayIndexFolder;
|
||||||
private System.Windows.Forms.ToolStripMenuItem tsmiTestImageEffects;
|
|
||||||
public System.Windows.Forms.Label lblDragAndDropTip;
|
public System.Windows.Forms.Label lblDragAndDropTip;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiImageEffects;
|
||||||
|
private System.Windows.Forms.ToolStripMenuItem tsmiTrayImageEffects;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -679,13 +679,6 @@ private void tsmiTestShapeCapture_Click(object sender, EventArgs e)
|
||||||
new RegionCapturePreview(Program.DefaultTaskSettings.CaptureSettings.SurfaceOptions).Show();
|
new RegionCapturePreview(Program.DefaultTaskSettings.CaptureSettings.SurfaceOptions).Show();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tsmiTestImageEffects_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
ImageEffectsForm form = new ImageEffectsForm(ShareXResources.Logo);
|
|
||||||
form.Test();
|
|
||||||
form.Show();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void tsmiScreenRecorderGIF_Click(object sender, EventArgs e)
|
private void tsmiScreenRecorderGIF_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
DoScreenRecorder();
|
DoScreenRecorder();
|
||||||
|
@ -762,6 +755,13 @@ private void tsmiIndexFolder_Click(object sender, EventArgs e)
|
||||||
OpenIndexFolder();
|
OpenIndexFolder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void tsmiImageEffects_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
ImageEffectsForm form = new ImageEffectsForm(ShareXResources.Logo);
|
||||||
|
form.EditorMode();
|
||||||
|
form.Show();
|
||||||
|
}
|
||||||
|
|
||||||
private void tsbScreenshotsFolder_Click(object sender, EventArgs e)
|
private void tsbScreenshotsFolder_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Helpers.OpenFolder(Program.ScreenshotsPath);
|
Helpers.OpenFolder(Program.ScreenshotsPath);
|
||||||
|
|
|
@ -135,31 +135,30 @@
|
||||||
</data>
|
</data>
|
||||||
<data name="tsmiIndexFolder.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="tsmiIndexFolder.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||||
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABcElEQVQ4T5WSvUsDQRDFZysr
|
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFwSURBVDhPlZK9SwNBEMVnKyv/gRARAxbBTm0EMSgp
|
||||||
/4EQEQMWwU5tBDEoKUWsBC0C50cUrDzxAxQ0xV0MFiJRSFDQQkGQQCBoI1jYCIkg2iiIgoWFFoFIiGjA
|
RawELQLnRxSsPPEDFDTFXQwWIlFIUNBCQZBAIGgjWNgIiSDaKIiChYUWgUiIaMBxZi8n53rF5cFvZ5nl
|
||||||
cWYvJ+d6xeXBb2eZ5T22eICIEtIkH7bycYvCGsCVAu/4TfocAT7pJE2E/wRoRExBcwuYlu6a2gMAl4bE
|
PbZ4gIgS0iQftvJxi8IawJUC7/hN+hwBPukkTYT/BGhETEFzC5iW7praAwCXhsTAcha/SxkJ33nHb2qA
|
||||||
wHIWv0sZCd95x29qgF86HdJ6AS5isF59O8Svl30J33l3vgINasAMwSG/MxIC/9kybH4872D5YQsrTyl8
|
Xzod0noBLmKwXn07xK+XfQnfeXe+Ag1qwAzBIb8zEgL/2TJsfjzvYPlhCytPKXwtmMg7Yk4NaOLDKXMY
|
||||||
LZjIO2JODWjiwylzGCC3AKn3uw0s3sSR5/2pjp/VKvJeDViUrpraKO5Yl+yVbhNYvDaQZ/5oHJOPFeS9
|
ILcAqfe7DSzexJHn/amOn9Uq8l4NWJSumtoo7liX7JVuE1i8NpBn/mgck48V5L0a0CydpIFOgN0pi3QU
|
||||||
GtAsnaSBToDdKYt0FMztMThRoX2PGrAq3TXl6D9Mdh4gM/sfCrF8joAWPoQQEA2L+ntAxgSbbToCor4e
|
zO0xOFGhfY8asCrdNeXoP0x2HiAz+x8KsXyOgBY+hBAQDYv6e0DGBJttOgKivh6QqdUZwIz2Ce89IMMS
|
||||||
kKnVGcCM9gnvPSDDEhEkDuwZCYmg5x64MdItvPfADVKj5x64QfLp/ZBUO8AMdcEgIsIPf0PbCdPaFycA
|
ESQO7BkJiaDnHrgx0i2898ANUqPnHrhB8un9kFQ7wAx1wSAiwg9/Q9sJ09oXJwAAAABJRU5ErkJggg==
|
||||||
AAAASUVORK5CYII=
|
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="tsmiShowDebugLog.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="tsmiShowDebugLog.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||||
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAACQUlEQVQ4T6WTTWsaURiFBf+A
|
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAJBSURBVDhPpZNNaxpRGIUF/4D4E7Jxn00UGrVEHJ04
|
||||||
+BOycZ9NFBq1RBydOGZmdMRvMX7Exqh1rLHQTaHtulDopohIpSIIIggiuuimMZZYqBBpA3bbZbddnr53
|
ZmZ0xG8xfsTGqHWssdBNoe26UOimiEilIggiCCK66KYxllioEGkDdttlt12evnemKRSyaNLFmfty7z3P
|
||||||
pikUsmjSxZn7cu89z33P3BkDgP+SQVGULVKElL+lmGfLIMtybD6fX242G1xdfcV6vcZq9RnL5RKLxQK0
|
fc/cGQOA/5JBUZQtUoSUv6WYZ8sgy3JsPp9fbjYbXF19xXq9xmr1GcvlEovFArSGszOmj1R/wvn5ChcX
|
||||||
hrMzpo9Uf8L5+QoXF18wmXy4ZF6DKIoPZrMZptMpTU4wHo8xGo0wHA4xGAzQ7/fR6/XQ7XbR6XTQbrfR
|
XzCZfLhkXoMoig9msxmm0ylNTjAejzEajTAcDjEYDNDv99Hr9dDtdtHpdNBut9FqtdBsNmE0GvMswpHV
|
||||||
arXQbDZhNBrzLMKR1WqFIAiafD4feJ6H1+uFx+OB2+2Gy+WCw+HAzo4NNtsudnfv03hPB0iSVGDGRqOB
|
aoUgCJp8Ph94nofX64XH44Hb7YbL5YLD4cDOjg022y52d+/TeE8HSJJUYMZGo4F6vQ5VVVEul3HUeYVs
|
||||||
er0OVVVRLpdx1HmFbDaLVCoFSZKxt8dgDC7D7w8TlNcBZD5mp9ZqNVQqFRSLReTzeeTev0M8HqfNorbZ
|
NotUKgVJkrG3x2AMLsPvDxOU1wFkPman1mo1VCoVFItF5PN55N6/Qzwep82ittnjEanDEMHiCIXS1KGo
|
||||||
4xGpwxDB4giF0tShqAOo1RPWcqlUQqFQQCaTQTKZRP7bDAcHEjhOwP5+gOoIgsEUwuEcgY8JrOgAylfm
|
A6jVE9ZyqVRCoVBAJpNBMplE/tsMBwcSOE7A/n6A6giCwRTC4RyBjwms6ADKV+Y4DrlcDtn2S8RiMToh
|
||||||
OA65XA7Z9kvEYjE6IaQBeF5CoFrR6tQbtlagSCUcHlYhy1EdYLfbq9wzFelpG9HXz7XN1wrVVG0MBpO0
|
pAF4XkKgWtHq1Bu2VqBIJRweViHLUR1gt9ur3DMV6Wkb0dfPtc3XCtVUbQwGk7T+Vquffl9i9PMHzSV0
|
||||||
/larn35fYvTzB80ldADdQI294UAgQPmk3zfAI6iWNUOkUadTyxTrBInEMY26FCWpA7a3t0+dTidl8mtm
|
AN1Ajb3hQCBA+aTfN8AjqJY1Q6RRp1PLFOsEicQxjboUJakDtre3T51OJ2Xya2YWRxACiEaPEH18inT6
|
||||||
FkcQAohGjxB9fIp0+iHdxiN6sY2/9AdgsViesO+AdUFxNHGcjyBBiGKYssao3TgZEprpWoIgwWw2qwZ6
|
Id3GI3qxjb/0B2CxWJ6w74B1QXE0cZyPIEGIYpiyxqjdOBkSmulagiDBbDarBnpkTSbTi7uIeW/8w26j
|
||||||
ZE0m04u7iHlv/MNuoxsn/10w/AIK+CkgW3XoRQAAAABJRU5ErkJggg==
|
Gyf/XTD8Agr4KSBbdehFAAAAAElFTkSuQmCC
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="cmsUploadInfo.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="cmsUploadInfo.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
@ -173,15 +172,14 @@
|
||||||
</metadata>
|
</metadata>
|
||||||
<data name="tsmiTrayIndexFolder.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="tsmiTrayIndexFolder.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
|
||||||
YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAABcElEQVQ4T5WSvUsDQRDFZysr
|
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAFwSURBVDhPlZK9SwNBEMVnKyv/gRARAxbBTm0EMSgp
|
||||||
/4EQEQMWwU5tBDEoKUWsBC0C50cUrDzxAxQ0xV0MFiJRSFDQQkGQQCBoI1jYCIkg2iiIgoWFFoFIiGjA
|
RawELQLnRxSsPPEDFDTFXQwWIlFIUNBCQZBAIGgjWNgIiSDaKIiChYUWgUiIaMBxZi8n53rF5cFvZ5nl
|
||||||
cWYvJ+d6xeXBb2eZ5T22eICIEtIkH7bycYvCGsCVAu/4TfocAT7pJE2E/wRoRExBcwuYlu6a2gMAl4bE
|
PbZ4gIgS0iQftvJxi8IawJUC7/hN+hwBPukkTYT/BGhETEFzC5iW7praAwCXhsTAcha/SxkJ33nHb2qA
|
||||||
wHIWv0sZCd95x29qgF86HdJ6AS5isF59O8Svl30J33l3vgINasAMwSG/MxIC/9kybH4872D5YQsrTyl8
|
Xzod0noBLmKwXn07xK+XfQnfeXe+Ag1qwAzBIb8zEgL/2TJsfjzvYPlhCytPKXwtmMg7Yk4NaOLDKXMY
|
||||||
LZjIO2JODWjiwylzGCC3AKn3uw0s3sSR5/2pjp/VKvJeDViUrpraKO5Yl+yVbhNYvDaQZ/5oHJOPFeS9
|
ILcAqfe7DSzexJHn/amOn9Uq8l4NWJSumtoo7liX7JVuE1i8NpBn/mgck48V5L0a0CydpIFOgN0pi3QU
|
||||||
GtAsnaSBToDdKYt0FMztMThRoX2PGrAq3TXl6D9Mdh4gM/sfCrF8joAWPoQQEA2L+ntAxgSbbToCor4e
|
zO0xOFGhfY8asCrdNeXoP0x2HiAz+x8KsXyOgBY+hBAQDYv6e0DGBJttOgKivh6QqdUZwIz2Ce89IMMS
|
||||||
kKnVGcCM9gnvPSDDEhEkDuwZCYmg5x64MdItvPfADVKj5x64QfLp/ZBUO8AMdcEgIsIPf0PbCdPaFycA
|
ESQO7BkJiaDnHrgx0i2898ANUqPnHrhB8un9kFQ7wAx1wSAiwg9/Q9sJ09oXJwAAAABJRU5ErkJggg==
|
||||||
AAAASUVORK5CYII=
|
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
|
34
ShareX/Forms/TaskSettingsForm.Designer.cs
generated
34
ShareX/Forms/TaskSettingsForm.Designer.cs
generated
|
@ -44,6 +44,8 @@ private void InitializeComponent()
|
||||||
this.cmsTask = new System.Windows.Forms.ContextMenuStrip(this.components);
|
this.cmsTask = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
this.tcHotkeySettings = new System.Windows.Forms.TabControl();
|
this.tcHotkeySettings = new System.Windows.Forms.TabControl();
|
||||||
this.tpTask = new System.Windows.Forms.TabPage();
|
this.tpTask = new System.Windows.Forms.TabPage();
|
||||||
|
this.chkOverrideFTP = new System.Windows.Forms.CheckBox();
|
||||||
|
this.cboFTPaccounts = new System.Windows.Forms.ComboBox();
|
||||||
this.btnAfterCapture = new HelpersLib.MenuButton();
|
this.btnAfterCapture = new HelpersLib.MenuButton();
|
||||||
this.btnAfterUpload = new HelpersLib.MenuButton();
|
this.btnAfterUpload = new HelpersLib.MenuButton();
|
||||||
this.btnImageUploaders = new HelpersLib.MenuButton();
|
this.btnImageUploaders = new HelpersLib.MenuButton();
|
||||||
|
@ -224,7 +226,7 @@ private void InitializeComponent()
|
||||||
// cbUseDefaultAfterCaptureSettings
|
// cbUseDefaultAfterCaptureSettings
|
||||||
//
|
//
|
||||||
this.cbUseDefaultAfterCaptureSettings.AutoSize = true;
|
this.cbUseDefaultAfterCaptureSettings.AutoSize = true;
|
||||||
this.cbUseDefaultAfterCaptureSettings.Location = new System.Drawing.Point(6, 69);
|
this.cbUseDefaultAfterCaptureSettings.Location = new System.Drawing.Point(6, 70);
|
||||||
this.cbUseDefaultAfterCaptureSettings.Name = "cbUseDefaultAfterCaptureSettings";
|
this.cbUseDefaultAfterCaptureSettings.Name = "cbUseDefaultAfterCaptureSettings";
|
||||||
this.cbUseDefaultAfterCaptureSettings.Size = new System.Drawing.Size(193, 17);
|
this.cbUseDefaultAfterCaptureSettings.Size = new System.Drawing.Size(193, 17);
|
||||||
this.cbUseDefaultAfterCaptureSettings.TabIndex = 3;
|
this.cbUseDefaultAfterCaptureSettings.TabIndex = 3;
|
||||||
|
@ -235,7 +237,7 @@ private void InitializeComponent()
|
||||||
// cbUseDefaultAfterUploadSettings
|
// cbUseDefaultAfterUploadSettings
|
||||||
//
|
//
|
||||||
this.cbUseDefaultAfterUploadSettings.AutoSize = true;
|
this.cbUseDefaultAfterUploadSettings.AutoSize = true;
|
||||||
this.cbUseDefaultAfterUploadSettings.Location = new System.Drawing.Point(6, 125);
|
this.cbUseDefaultAfterUploadSettings.Location = new System.Drawing.Point(6, 126);
|
||||||
this.cbUseDefaultAfterUploadSettings.Name = "cbUseDefaultAfterUploadSettings";
|
this.cbUseDefaultAfterUploadSettings.Name = "cbUseDefaultAfterUploadSettings";
|
||||||
this.cbUseDefaultAfterUploadSettings.Size = new System.Drawing.Size(189, 17);
|
this.cbUseDefaultAfterUploadSettings.Size = new System.Drawing.Size(189, 17);
|
||||||
this.cbUseDefaultAfterUploadSettings.TabIndex = 5;
|
this.cbUseDefaultAfterUploadSettings.TabIndex = 5;
|
||||||
|
@ -246,7 +248,7 @@ private void InitializeComponent()
|
||||||
// cbUseDefaultDestinationSettings
|
// cbUseDefaultDestinationSettings
|
||||||
//
|
//
|
||||||
this.cbUseDefaultDestinationSettings.AutoSize = true;
|
this.cbUseDefaultDestinationSettings.AutoSize = true;
|
||||||
this.cbUseDefaultDestinationSettings.Location = new System.Drawing.Point(6, 181);
|
this.cbUseDefaultDestinationSettings.Location = new System.Drawing.Point(6, 182);
|
||||||
this.cbUseDefaultDestinationSettings.Name = "cbUseDefaultDestinationSettings";
|
this.cbUseDefaultDestinationSettings.Name = "cbUseDefaultDestinationSettings";
|
||||||
this.cbUseDefaultDestinationSettings.Size = new System.Drawing.Size(185, 17);
|
this.cbUseDefaultDestinationSettings.Size = new System.Drawing.Size(185, 17);
|
||||||
this.cbUseDefaultDestinationSettings.TabIndex = 7;
|
this.cbUseDefaultDestinationSettings.TabIndex = 7;
|
||||||
|
@ -296,6 +298,8 @@ private void InitializeComponent()
|
||||||
//
|
//
|
||||||
// tpTask
|
// tpTask
|
||||||
//
|
//
|
||||||
|
this.tpTask.Controls.Add(this.chkOverrideFTP);
|
||||||
|
this.tpTask.Controls.Add(this.cboFTPaccounts);
|
||||||
this.tpTask.Controls.Add(this.tbDescription);
|
this.tpTask.Controls.Add(this.tbDescription);
|
||||||
this.tpTask.Controls.Add(this.btnAfterCapture);
|
this.tpTask.Controls.Add(this.btnAfterCapture);
|
||||||
this.tpTask.Controls.Add(this.btnAfterUpload);
|
this.tpTask.Controls.Add(this.btnAfterUpload);
|
||||||
|
@ -317,6 +321,28 @@ private void InitializeComponent()
|
||||||
this.tpTask.Text = "Task";
|
this.tpTask.Text = "Task";
|
||||||
this.tpTask.UseVisualStyleBackColor = true;
|
this.tpTask.UseVisualStyleBackColor = true;
|
||||||
//
|
//
|
||||||
|
// chkOverrideFTP
|
||||||
|
//
|
||||||
|
this.chkOverrideFTP.AutoSize = true;
|
||||||
|
this.chkOverrideFTP.Location = new System.Drawing.Point(6, 332);
|
||||||
|
this.chkOverrideFTP.Name = "chkOverrideFTP";
|
||||||
|
this.chkOverrideFTP.Size = new System.Drawing.Size(169, 17);
|
||||||
|
this.chkOverrideFTP.TabIndex = 14;
|
||||||
|
this.chkOverrideFTP.Text = "Override default FTP account:";
|
||||||
|
this.chkOverrideFTP.UseVisualStyleBackColor = true;
|
||||||
|
this.chkOverrideFTP.CheckedChanged += new System.EventHandler(this.chkOverrideFTP_CheckedChanged);
|
||||||
|
//
|
||||||
|
// cboFTPaccounts
|
||||||
|
//
|
||||||
|
this.cboFTPaccounts.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.cboFTPaccounts.Enabled = false;
|
||||||
|
this.cboFTPaccounts.FormattingEnabled = true;
|
||||||
|
this.cboFTPaccounts.Location = new System.Drawing.Point(181, 330);
|
||||||
|
this.cboFTPaccounts.Name = "cboFTPaccounts";
|
||||||
|
this.cboFTPaccounts.Size = new System.Drawing.Size(330, 21);
|
||||||
|
this.cboFTPaccounts.TabIndex = 13;
|
||||||
|
this.cboFTPaccounts.SelectedIndexChanged += new System.EventHandler(this.cboFTPaccounts_SelectedIndexChanged);
|
||||||
|
//
|
||||||
// btnAfterCapture
|
// btnAfterCapture
|
||||||
//
|
//
|
||||||
this.btnAfterCapture.Location = new System.Drawing.Point(6, 93);
|
this.btnAfterCapture.Location = new System.Drawing.Point(6, 93);
|
||||||
|
@ -1799,6 +1825,8 @@ private void InitializeComponent()
|
||||||
private System.Windows.Forms.CheckBox cbImageEffectOnlyRegionCapture;
|
private System.Windows.Forms.CheckBox cbImageEffectOnlyRegionCapture;
|
||||||
private System.Windows.Forms.GroupBox gbImageEffects;
|
private System.Windows.Forms.GroupBox gbImageEffects;
|
||||||
private System.Windows.Forms.CheckBox chkShowImageEffectsWindowAfterCapture;
|
private System.Windows.Forms.CheckBox chkShowImageEffectsWindowAfterCapture;
|
||||||
|
private System.Windows.Forms.CheckBox chkOverrideFTP;
|
||||||
|
private System.Windows.Forms.ComboBox cboFTPaccounts;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,18 @@ public TaskSettingsForm(TaskSettings hotkeySetting, bool isDefault = false)
|
||||||
SetEnumChecked(TaskSettings.URLShortenerDestination, cmsURLShorteners);
|
SetEnumChecked(TaskSettings.URLShortenerDestination, cmsURLShorteners);
|
||||||
SetEnumChecked(TaskSettings.SocialNetworkingServiceDestination, cmsSocialNetworkingServices);
|
SetEnumChecked(TaskSettings.SocialNetworkingServiceDestination, cmsSocialNetworkingServices);
|
||||||
|
|
||||||
|
// FTP
|
||||||
|
if (Program.UploadersConfig != null)
|
||||||
|
{
|
||||||
|
chkOverrideFTP.Checked = TaskSettings.OverrideFTP;
|
||||||
|
cboFTPaccounts.Items.Clear();
|
||||||
|
if (Program.UploadersConfig.FTPAccountList.Count > 0)
|
||||||
|
{
|
||||||
|
cboFTPaccounts.Items.AddRange(Program.UploadersConfig.FTPAccountList.ToArray());
|
||||||
|
cboFTPaccounts.SelectedIndex = TaskSettings.FTPIndex.BetweenOrDefault(0, Program.UploadersConfig.FTPAccountList.Count);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
UpdateDestinationStates();
|
UpdateDestinationStates();
|
||||||
UpdateUploaderMenuNames();
|
UpdateUploaderMenuNames();
|
||||||
|
|
||||||
|
@ -210,6 +222,7 @@ private void UpdateDestinationStates()
|
||||||
EnableDisableToolStripMenuItems<FileDestination>(cmsFileUploaders);
|
EnableDisableToolStripMenuItems<FileDestination>(cmsFileUploaders);
|
||||||
EnableDisableToolStripMenuItems<UrlShortenerType>(cmsURLShorteners);
|
EnableDisableToolStripMenuItems<UrlShortenerType>(cmsURLShorteners);
|
||||||
EnableDisableToolStripMenuItems<SocialNetworkingService>(cmsSocialNetworkingServices);
|
EnableDisableToolStripMenuItems<SocialNetworkingService>(cmsSocialNetworkingServices);
|
||||||
|
chkOverrideFTP.Visible = cboFTPaccounts.Visible = Program.UploadersConfig.FTPAccountList.Count > 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -361,6 +374,17 @@ private void cbUseDefaultDestinationSettings_CheckedChanged(object sender, Event
|
||||||
btnSocialNetworkingServices.Enabled = !TaskSettings.UseDefaultDestinations;
|
btnSocialNetworkingServices.Enabled = !TaskSettings.UseDefaultDestinations;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void chkOverrideFTP_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
TaskSettings.OverrideFTP = chkOverrideFTP.Checked;
|
||||||
|
cboFTPaccounts.Enabled = TaskSettings.OverrideFTP;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void cboFTPaccounts_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
TaskSettings.FTPIndex = cboFTPaccounts.SelectedIndex;
|
||||||
|
}
|
||||||
|
|
||||||
#endregion Task
|
#endregion Task
|
||||||
|
|
||||||
#region General
|
#region General
|
||||||
|
|
|
@ -48,7 +48,7 @@ public static ImageData PrepareImage(Image img, TaskSettings taskSettings)
|
||||||
|
|
||||||
if (taskSettings.ImageSettings.ImageFormat == EImageFormat.JPEG)
|
if (taskSettings.ImageSettings.ImageFormat == EImageFormat.JPEG)
|
||||||
{
|
{
|
||||||
img = ImageHelpers.FillImageBackground(img, Color.White);
|
img = ImageHelpers.FillBackground(img, Color.White);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImageHelpers.AddMetadata(img, PropertyTagSoftwareUsed, Program.ApplicationName);
|
ImageHelpers.AddMetadata(img, PropertyTagSoftwareUsed, Program.ApplicationName);
|
||||||
|
@ -61,7 +61,7 @@ public static ImageData PrepareImage(Image img, TaskSettings taskSettings)
|
||||||
{
|
{
|
||||||
if (taskSettings.ImageSettings.ImageFormat2 == EImageFormat.JPEG)
|
if (taskSettings.ImageSettings.ImageFormat2 == EImageFormat.JPEG)
|
||||||
{
|
{
|
||||||
img = ImageHelpers.FillImageBackground(img, Color.White);
|
img = ImageHelpers.FillBackground(img, Color.White);
|
||||||
}
|
}
|
||||||
|
|
||||||
imageData.ImageStream = SaveImage(img, taskSettings.ImageSettings.ImageFormat2, taskSettings);
|
imageData.ImageStream = SaveImage(img, taskSettings.ImageSettings.ImageFormat2, taskSettings);
|
||||||
|
|
|
@ -51,6 +51,8 @@ public class TaskSettings
|
||||||
public FileDestination FileDestination = FileDestination.Dropbox;
|
public FileDestination FileDestination = FileDestination.Dropbox;
|
||||||
public UrlShortenerType URLShortenerDestination = UrlShortenerType.BITLY;
|
public UrlShortenerType URLShortenerDestination = UrlShortenerType.BITLY;
|
||||||
public SocialNetworkingService SocialNetworkingServiceDestination = SocialNetworkingService.Twitter;
|
public SocialNetworkingService SocialNetworkingServiceDestination = SocialNetworkingService.Twitter;
|
||||||
|
public bool OverrideFTP = false;
|
||||||
|
public int FTPIndex = 0;
|
||||||
|
|
||||||
public bool UseDefaultGeneralSettings = true;
|
public bool UseDefaultGeneralSettings = true;
|
||||||
public TaskSettingsGeneral GeneralSettings = new TaskSettingsGeneral();
|
public TaskSettingsGeneral GeneralSettings = new TaskSettingsGeneral();
|
||||||
|
|
|
@ -755,7 +755,7 @@ public UploadResult UploadFile(Stream stream, string fileName)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case FileDestination.FTP:
|
case FileDestination.FTP:
|
||||||
int index = Program.UploadersConfig.GetFTPIndex(Info.DataType);
|
int index = Info.TaskSettings.OverrideFTP ? Info.TaskSettings.FTPIndex : Program.UploadersConfig.GetFTPIndex(Info.DataType);
|
||||||
|
|
||||||
FTPAccount account = Program.UploadersConfig.FTPAccountList.ReturnIfValidIndex(index);
|
FTPAccount account = Program.UploadersConfig.FTPAccountList.ReturnIfValidIndex(index);
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ public class Jira : FileUploader, IOAuth
|
||||||
|
|
||||||
private static readonly X509Certificate2 _jiraCertificate;
|
private static readonly X509Certificate2 _jiraCertificate;
|
||||||
|
|
||||||
private readonly Uri _jiraHost;
|
private readonly string _jiraBaseAddress;
|
||||||
private readonly string _jiraIssuePrefix;
|
private readonly string _jiraIssuePrefix;
|
||||||
|
|
||||||
private Uri _jiraRequestToken;
|
private Uri _jiraRequestToken;
|
||||||
|
@ -150,9 +150,9 @@ private static void CalculateAndAppendLength(ref List<byte> binaryData)
|
||||||
|
|
||||||
#endregion Keypair
|
#endregion Keypair
|
||||||
|
|
||||||
public Jira(string jiraHost, OAuthInfo oauth, string jiraIssuePrefix = null)
|
public Jira(string jiraBaseAddress, OAuthInfo oauth, string jiraIssuePrefix = null)
|
||||||
{
|
{
|
||||||
_jiraHost = new Uri(jiraHost);
|
_jiraBaseAddress = jiraBaseAddress;
|
||||||
AuthInfo = oauth;
|
AuthInfo = oauth;
|
||||||
_jiraIssuePrefix = jiraIssuePrefix;
|
_jiraIssuePrefix = jiraIssuePrefix;
|
||||||
|
|
||||||
|
@ -200,7 +200,7 @@ public override UploadResult Upload(Stream stream, string fileName)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
Uri uri = new Uri(_jiraHost, string.Format(PathIssueAttachments, up.IssueId));
|
Uri uri = this.Combine(_jiraBaseAddress, string.Format(PathIssueAttachments, up.IssueId));
|
||||||
string query = OAuthManager.GenerateQuery(uri.ToString(), null, HttpMethod.Post, AuthInfo);
|
string query = OAuthManager.GenerateQuery(uri.ToString(), null, HttpMethod.Post, AuthInfo);
|
||||||
|
|
||||||
NameValueCollection headers = new NameValueCollection();
|
NameValueCollection headers = new NameValueCollection();
|
||||||
|
@ -217,7 +217,7 @@ public override UploadResult Upload(Stream stream, string fileName)
|
||||||
var anonType = new[] { new { thumbnail = "" } };
|
var anonType = new[] { new { thumbnail = "" } };
|
||||||
var anonObject = JsonConvert.DeserializeAnonymousType(res.Response, anonType);
|
var anonObject = JsonConvert.DeserializeAnonymousType(res.Response, anonType);
|
||||||
res.ThumbnailURL = anonObject[0].thumbnail;
|
res.ThumbnailURL = anonObject[0].thumbnail;
|
||||||
res.URL = new Uri(_jiraHost, string.Format(PathBrowseIssue, up.IssueId)).ToString();
|
res.URL = this.Combine(_jiraBaseAddress, string.Format(PathBrowseIssue, up.IssueId)).ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
|
@ -248,10 +248,15 @@ private string GetSummary(string issueId)
|
||||||
|
|
||||||
private void InitUris()
|
private void InitUris()
|
||||||
{
|
{
|
||||||
_jiraRequestToken = new Uri(_jiraHost, PathRequestToken);
|
_jiraRequestToken = this.Combine(_jiraBaseAddress, PathRequestToken);
|
||||||
_jiraAuthorize = new Uri(_jiraHost, PathAuthorize);
|
_jiraAuthorize = this.Combine(_jiraBaseAddress, PathAuthorize);
|
||||||
_jiraAccessToken = new Uri(_jiraHost, PathAccessToken);
|
_jiraAccessToken = this.Combine(_jiraBaseAddress, PathAccessToken);
|
||||||
_jiraPathSearch = new Uri(_jiraHost, PathSearch);
|
_jiraPathSearch = this.Combine(_jiraBaseAddress, PathSearch);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Uri Combine(string path1, string path2)
|
||||||
|
{
|
||||||
|
return new Uri(path1.TrimEnd('/') + path2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -38,13 +38,15 @@ public override object EditValue(ITypeDescriptorContext context, IServiceProvide
|
||||||
{
|
{
|
||||||
return base.EditValue(context, provider, value);
|
return base.EditValue(context, provider, value);
|
||||||
}
|
}
|
||||||
OpenFileDialog dlg = new OpenFileDialog();
|
using (OpenFileDialog dlg = new OpenFileDialog())
|
||||||
|
{
|
||||||
dlg.Title = "Browse for a certificate file...";
|
dlg.Title = "Browse for a certificate file...";
|
||||||
dlg.Filter = "Certification (*.cer)|*.cer";
|
dlg.Filter = "Certification (*.cer)|*.cer";
|
||||||
if (dlg.ShowDialog() == DialogResult.OK)
|
if (dlg.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
value = dlg.FileName;
|
value = dlg.FileName;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -38,13 +38,15 @@ public override object EditValue(ITypeDescriptorContext context, IServiceProvide
|
||||||
{
|
{
|
||||||
return base.EditValue(context, provider, value);
|
return base.EditValue(context, provider, value);
|
||||||
}
|
}
|
||||||
OpenFileDialog dlg = new OpenFileDialog();
|
using (OpenFileDialog dlg = new OpenFileDialog())
|
||||||
|
{
|
||||||
dlg.Title = "Browse for a key File...";
|
dlg.Title = "Browse for a key File...";
|
||||||
dlg.Filter = "Keyfile (*.*)|*.*";
|
dlg.Filter = "Keyfile (*.*)|*.*";
|
||||||
if (dlg.ShowDialog() == DialogResult.OK)
|
if (dlg.ShowDialog() == DialogResult.OK)
|
||||||
{
|
{
|
||||||
value = dlg.FileName;
|
value = dlg.FileName;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue