mirror of
https://github.com/greenshot/greenshot
synced 2025-08-21 05:53:27 -07:00
Trying to replace the Gripper (which is a Label/Control) with adorners (custom code). This should prevent the slow cleanup, reduce resources and speedup the editor. Also we should have better "UI" feedback. This is still very experimental.
This commit is contained in:
parent
e9ab99c5ac
commit
31db071394
15 changed files with 643 additions and 349 deletions
81
GreenshotPlugin/Interfaces/Drawing/Adorners/IAdorner.cs
Normal file
81
GreenshotPlugin/Interfaces/Drawing/Adorners/IAdorner.cs
Normal file
|
@ -0,0 +1,81 @@
|
|||
/*
|
||||
* Greenshot - a free and open source screenshot tool
|
||||
* Copyright (C) 2007-2015 Thomas Braun, Jens Klingen, Robin Krom
|
||||
*
|
||||
* For more information see: http://getgreenshot.org/
|
||||
* The Greenshot project is hosted on Sourceforge: http://sourceforge.net/projects/greenshot/
|
||||
*
|
||||
* 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 1 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, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
using System.Drawing;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace Greenshot.Plugin.Drawing.Adorners
|
||||
{
|
||||
public interface IAdorner
|
||||
{
|
||||
/// <summary>
|
||||
/// The owner of this adorner
|
||||
/// </summary>
|
||||
IDrawableContainer Owner { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Is the current point "over" the Adorner?
|
||||
/// If this is the case, the
|
||||
/// </summary>
|
||||
/// <param name="point">Point to test</param>
|
||||
/// <returns>true if so</returns>
|
||||
bool HitTest(Point point);
|
||||
|
||||
/// <summary>
|
||||
/// Handle the MouseDown event
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="mouseEventArgs">MouseEventArgs</param>
|
||||
void MouseDown(object sender, MouseEventArgs mouseEventArgs);
|
||||
|
||||
/// <summary>
|
||||
/// Handle the MouseUp event
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="mouseEventArgs">MouseEventArgs</param>
|
||||
void MouseUp(object sender, MouseEventArgs mouseEventArgs);
|
||||
|
||||
/// <summary>
|
||||
/// Handle the MouseMove event
|
||||
/// </summary>
|
||||
/// <param name="sender"></param>
|
||||
/// <param name="mouseEventArgs">MouseEventArgs</param>
|
||||
void MouseMove(object sender, MouseEventArgs mouseEventArgs);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the cursor that should be displayed for this behavior.
|
||||
/// </summary>
|
||||
Cursor Cursor { get; }
|
||||
|
||||
/// <summary>
|
||||
/// Draw the adorner
|
||||
/// </summary>
|
||||
/// <param name="paintEventArgs">PaintEventArgs</param>
|
||||
void Paint(PaintEventArgs paintEventArgs);
|
||||
|
||||
/// <summary>
|
||||
/// Called if the owner is transformed
|
||||
/// </summary>
|
||||
/// <param name="matrix">Matrix</param>
|
||||
void Transform(Matrix matrix);
|
||||
}
|
||||
}
|
|
@ -24,6 +24,8 @@ using System.Drawing.Drawing2D;
|
|||
using System.Drawing.Imaging;
|
||||
using System.Windows.Forms;
|
||||
using System.ComponentModel;
|
||||
using System.Collections.Generic;
|
||||
using Greenshot.Plugin.Drawing.Adorners;
|
||||
|
||||
namespace Greenshot.Plugin.Drawing {
|
||||
public enum RenderMode {EDIT, EXPORT};
|
||||
|
@ -73,7 +75,11 @@ namespace Greenshot.Plugin.Drawing {
|
|||
Rectangle DrawingBounds {
|
||||
get;
|
||||
}
|
||||
|
||||
|
||||
void ApplyBounds(RectangleF newBounds);
|
||||
|
||||
void DoLayout();
|
||||
|
||||
bool hasFilters {
|
||||
get;
|
||||
}
|
||||
|
@ -85,8 +91,6 @@ namespace Greenshot.Plugin.Drawing {
|
|||
void AlignToParent(HorizontalAlignment horizontalAlignment, VerticalAlignment verticalAlignment);
|
||||
void Invalidate();
|
||||
bool ClickableAt(int x, int y);
|
||||
void HideGrippers();
|
||||
void ShowGrippers();
|
||||
void MoveBy(int x, int y);
|
||||
void Transform(Matrix matrix);
|
||||
bool HandleMouseDown(int x, int y);
|
||||
|
@ -97,6 +101,11 @@ namespace Greenshot.Plugin.Drawing {
|
|||
EditStatus DefaultEditMode {
|
||||
get;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Available adorners for the DrawableContainer
|
||||
/// </summary>
|
||||
IList<IAdorner> Adorners { get; }
|
||||
}
|
||||
|
||||
public interface ITextContainer: IDrawableContainer {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue