mirror of
https://github.com/ShareX/ShareX.git
synced 2024-09-29 17:02:05 +13:00
fixed #4918: Added hotkey for QR code decode from screen
This commit is contained in:
parent
8d7e1f0744
commit
2a89a63baf
7 changed files with 78 additions and 28 deletions
|
@ -509,7 +509,7 @@ public static Bitmap Outline(Bitmap bmp, int borderSize, Color borderColor, int
|
|||
}
|
||||
}
|
||||
|
||||
public static Bitmap MakeOutline(Bitmap bmp, int min_radius, int max_radius, Color color)
|
||||
public static Bitmap MakeOutline(Bitmap bmp, int minRadius, int maxRadius, Color color)
|
||||
{
|
||||
Bitmap bmpResult = bmp.CreateEmptyBitmap();
|
||||
|
||||
|
@ -520,19 +520,19 @@ public static Bitmap MakeOutline(Bitmap bmp, int min_radius, int max_radius, Col
|
|||
{
|
||||
for (int y = 0; y < source.Height; y++)
|
||||
{
|
||||
float dist = DistanceToThreshold(source, x, y, max_radius, 255);
|
||||
float dist = DistanceToThreshold(source, x, y, maxRadius, 255);
|
||||
|
||||
if (dist > min_radius && dist < max_radius)
|
||||
if (dist > minRadius && dist < maxRadius)
|
||||
{
|
||||
byte alpha = 255;
|
||||
|
||||
if (dist - min_radius < 1)
|
||||
if (dist - minRadius < 1)
|
||||
{
|
||||
alpha = (byte)(255 * (dist - min_radius));
|
||||
alpha = (byte)(255 * (dist - minRadius));
|
||||
}
|
||||
else if (max_radius - dist < 1)
|
||||
else if (maxRadius - dist < 1)
|
||||
{
|
||||
alpha = (byte)(255 * (max_radius - dist));
|
||||
alpha = (byte)(255 * (maxRadius - dist));
|
||||
}
|
||||
|
||||
ColorBgra bgra = new ColorBgra(color.B, color.G, color.R, alpha);
|
||||
|
|
18
ShareX.HelpersLib/Properties/Resources.Designer.cs
generated
18
ShareX.HelpersLib/Properties/Resources.Designer.cs
generated
|
@ -1626,6 +1626,24 @@ internal static string HotkeyType_QRCode_Category {
|
|||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to QR code (Decode from screen).
|
||||
/// </summary>
|
||||
internal static string HotkeyType_QRCodeDecodeFromScreen {
|
||||
get {
|
||||
return ResourceManager.GetString("HotkeyType_QRCodeDecodeFromScreen", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Tools.
|
||||
/// </summary>
|
||||
internal static string HotkeyType_QRCodeDecodeFromScreen_Category {
|
||||
get {
|
||||
return ResourceManager.GetString("HotkeyType_QRCodeDecodeFromScreen_Category", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Capture region (Light).
|
||||
/// </summary>
|
||||
|
|
|
@ -1250,4 +1250,10 @@ Would you like to download and install it?</value>
|
|||
<data name="DrawImageSizeMode_PercentageOfWatermark" xml:space="preserve">
|
||||
<value>Percentage of image</value>
|
||||
</data>
|
||||
<data name="HotkeyType_QRCodeDecodeFromScreen" xml:space="preserve">
|
||||
<value>QR code (Decode from screen)</value>
|
||||
</data>
|
||||
<data name="HotkeyType_QRCodeDecodeFromScreen_Category" xml:space="preserve">
|
||||
<value>Tools</value>
|
||||
</data>
|
||||
</root>
|
|
@ -210,6 +210,7 @@ public enum HotkeyType // Localized + Category
|
|||
HashCheck,
|
||||
DNSChanger,
|
||||
QRCode,
|
||||
QRCodeDecodeFromScreen,
|
||||
Ruler,
|
||||
IndexFolder,
|
||||
ImageCombiner,
|
||||
|
|
|
@ -65,7 +65,7 @@ public static QRCodeForm EncodeClipboard()
|
|||
return new QRCodeForm();
|
||||
}
|
||||
|
||||
public static QRCodeForm DecodeFile(string filePath)
|
||||
public static QRCodeForm OpenFormDecodeFromFile(string filePath)
|
||||
{
|
||||
QRCodeForm form = new QRCodeForm();
|
||||
form.tcMain.SelectedTab = form.tpDecode;
|
||||
|
@ -73,6 +73,14 @@ public static QRCodeForm DecodeFile(string filePath)
|
|||
return form;
|
||||
}
|
||||
|
||||
public static QRCodeForm OpenFormDecodeFromScreen()
|
||||
{
|
||||
QRCodeForm form = new QRCodeForm();
|
||||
form.tcMain.SelectedTab = form.tpDecode;
|
||||
form.DecodeFromScreen();
|
||||
return form;
|
||||
}
|
||||
|
||||
private void QRCodeForm_Shown(object sender, EventArgs e)
|
||||
{
|
||||
isReady = true;
|
||||
|
@ -132,6 +140,32 @@ private void DecodeFromFile(string filePath)
|
|||
}
|
||||
}
|
||||
|
||||
private void DecodeFromScreen()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (Visible)
|
||||
{
|
||||
Hide();
|
||||
Thread.Sleep(250);
|
||||
}
|
||||
|
||||
TaskSettings taskSettings = TaskSettings.GetDefaultTaskSettings();
|
||||
|
||||
using (Bitmap bmp = RegionCaptureTasks.GetRegionImage(taskSettings.CaptureSettings.SurfaceOptions))
|
||||
{
|
||||
if (bmp != null)
|
||||
{
|
||||
DecodeImage(bmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.ForceActivate();
|
||||
}
|
||||
}
|
||||
|
||||
private void QRCodeForm_Resize(object sender, EventArgs e)
|
||||
{
|
||||
EncodeText(txtQRCode.Text);
|
||||
|
@ -211,25 +245,7 @@ private void tsmiDecode_Click(object sender, EventArgs e)
|
|||
|
||||
private void btnDecodeFromScreen_Click(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
Hide();
|
||||
Thread.Sleep(250);
|
||||
|
||||
TaskSettings taskSettings = TaskSettings.GetDefaultTaskSettings();
|
||||
|
||||
using (Bitmap bmp = RegionCaptureTasks.GetRegionImage(taskSettings.CaptureSettings.SurfaceOptions))
|
||||
{
|
||||
if (bmp != null)
|
||||
{
|
||||
DecodeImage(bmp);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
this.ForceActivate();
|
||||
}
|
||||
DecodeFromScreen();
|
||||
}
|
||||
|
||||
private void btnDecodeFromFile_Click(object sender, EventArgs e)
|
||||
|
|
|
@ -195,6 +195,9 @@ public static void ExecuteJob(TaskSettings taskSettings, HotkeyType job, CLIComm
|
|||
case HotkeyType.QRCode:
|
||||
OpenQRCode();
|
||||
break;
|
||||
case HotkeyType.QRCodeDecodeFromScreen:
|
||||
OpenQRCodeDecodeFromScreen();
|
||||
break;
|
||||
case HotkeyType.Ruler:
|
||||
OpenRuler(safeTaskSettings);
|
||||
break;
|
||||
|
@ -1135,6 +1138,11 @@ public static void OpenQRCode()
|
|||
QRCodeForm.EncodeClipboard().Show();
|
||||
}
|
||||
|
||||
public static void OpenQRCodeDecodeFromScreen()
|
||||
{
|
||||
QRCodeForm.OpenFormDecodeFromScreen();
|
||||
}
|
||||
|
||||
public static void OpenRuler(TaskSettings taskSettings = null)
|
||||
{
|
||||
if (taskSettings == null) taskSettings = TaskSettings.GetDefaultTaskSettings();
|
||||
|
@ -1542,6 +1550,7 @@ public static Image FindMenuIcon<T>(T value) where T : Enum
|
|||
case HotkeyType.HashCheck: return Resources.application_task;
|
||||
case HotkeyType.DNSChanger: return Resources.network_ip;
|
||||
case HotkeyType.QRCode: return ShareXResources.IsDarkTheme ? Resources.barcode_2d_white : Resources.barcode_2d;
|
||||
case HotkeyType.QRCodeDecodeFromScreen: return ShareXResources.IsDarkTheme ? Resources.barcode_2d_white : Resources.barcode_2d;
|
||||
case HotkeyType.Ruler: return Resources.ruler_triangle;
|
||||
case HotkeyType.IndexFolder: return Resources.folder_tree;
|
||||
case HotkeyType.ImageCombiner: return Resources.document_break;
|
||||
|
|
|
@ -751,7 +751,7 @@ private void DoFileJobs()
|
|||
|
||||
if (Info.TaskSettings.AfterCaptureJob.HasFlag(AfterCaptureTasks.ScanQRCode) && Info.DataType == EDataType.Image)
|
||||
{
|
||||
QRCodeForm.DecodeFile(Info.FilePath).ShowDialog();
|
||||
QRCodeForm.OpenFormDecodeFromFile(Info.FilePath).ShowDialog();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue