From 3467f36b8d1c620091520026a1336eb5de583d0b Mon Sep 17 00:00:00 2001 From: Jaex Date: Thu, 15 Feb 2018 00:04:00 +0300 Subject: [PATCH] Added quick sticker mode --- .../Shapes/AnnotationOptions.cs | 1 + .../Shapes/Drawing/StickerDrawingShape.cs | 50 +++++++++++++------ .../Shapes/ShapeManager.cs | 1 + 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/ShareX.ScreenCaptureLib/Shapes/AnnotationOptions.cs b/ShareX.ScreenCaptureLib/Shapes/AnnotationOptions.cs index bf9d015dd..d26d1b017 100644 --- a/ShareX.ScreenCaptureLib/Shapes/AnnotationOptions.cs +++ b/ShareX.ScreenCaptureLib/Shapes/AnnotationOptions.cs @@ -87,6 +87,7 @@ public class AnnotationOptions public List StickerPacks = new List(); public int SelectedStickerPack = 0; public int StickerSize { get; set; } = 64; + public bool StickerQuickMode { get; set; } = false; // Blur effect public int BlurRadius { get; set; } = 15; diff --git a/ShareX.ScreenCaptureLib/Shapes/Drawing/StickerDrawingShape.cs b/ShareX.ScreenCaptureLib/Shapes/Drawing/StickerDrawingShape.cs index 4582b0601..6f477557c 100644 --- a/ShareX.ScreenCaptureLib/Shapes/Drawing/StickerDrawingShape.cs +++ b/ShareX.ScreenCaptureLib/Shapes/Drawing/StickerDrawingShape.cs @@ -63,23 +63,14 @@ private void OpenStickerForm(bool creating) AnnotationOptions.SelectedStickerPack = stickerForm.SelectedStickerPack; AnnotationOptions.StickerSize = stickerForm.StickerSize; - if (!string.IsNullOrEmpty(stickerForm.SelectedImageFile)) + if (LoadSticker(stickerForm.SelectedImageFile, stickerForm.StickerSize)) { - Image img = ImageHelpers.LoadImage(stickerForm.SelectedImageFile); - - if (img != null) + if (creating) { - img = ImageHelpers.ResizeImageLimit(img, stickerForm.StickerSize); - - SetImage(img, true); - - if (creating) - { - OnCreated(); - } - - return; + OnCreated(); } + + return; } } } @@ -95,12 +86,41 @@ private void OpenStickerForm(bool creating) } } + private bool LoadSticker(string filePath, int stickerSize) + { + if (!string.IsNullOrEmpty(filePath)) + { + Image img = ImageHelpers.LoadImage(filePath); + + if (img != null) + { + Manager.LastStickerPath = filePath; + + img = ImageHelpers.ResizeImageLimit(img, stickerSize); + + SetImage(img, true); + + return true; + } + } + + return false; + } + public override void OnCreating() { Point pos = InputManager.ClientMousePosition; Rectangle = new Rectangle(pos.X, pos.Y, 1, 1); - OpenStickerForm(true); + if (AnnotationOptions.StickerQuickMode && LoadSticker(Manager.LastStickerPath, AnnotationOptions.StickerSize)) + { + OnCreated(); + Manager.IsMoving = true; + } + else + { + OpenStickerForm(true); + } } public override void OnDoubleClicked() diff --git a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs index c10763024..11c536d08 100644 --- a/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs +++ b/ShareX.ScreenCaptureLib/Shapes/ShapeManager.cs @@ -217,6 +217,7 @@ public bool NodesVisible public event Action ShapeCreated; internal RegionCaptureForm Form { get; private set; } + internal string LastStickerPath { get; set; } private bool isLeftPressed, isRightPressed, isUpPressed, isDownPressed;