mirror of
https://github.com/greenshot/greenshot
synced 2025-07-14 17:13:44 -07:00
Made the supported image formats extendable, and supplied a SVG implementation right away with the jira addon.
This commit is contained in:
parent
9bf9c0e4e6
commit
fc192827f1
21 changed files with 1354 additions and 676 deletions
86
GreenshotPlugin/Core/ImageWrapper.cs
Normal file
86
GreenshotPlugin/Core/ImageWrapper.cs
Normal file
|
@ -0,0 +1,86 @@
|
|||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
|
||||
namespace GreenshotPlugin.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Wrap an image, make it resizeable
|
||||
/// </summary>
|
||||
public class ImageWrapper : IImage
|
||||
{
|
||||
// Underlying image, is used to generate a resized version of it when needed
|
||||
private readonly Image _image;
|
||||
private Image _imageClone;
|
||||
|
||||
/// <summary>
|
||||
/// Factory method
|
||||
/// </summary>
|
||||
/// <param name="image">Image</param>
|
||||
/// <returns>IImage</returns>
|
||||
public static IImage FromImage(Image image)
|
||||
{
|
||||
return image == null ? null : new ImageWrapper(image);
|
||||
}
|
||||
|
||||
public ImageWrapper(Image image)
|
||||
{
|
||||
// Make sure the orientation is set correctly so Greenshot can process the image correctly
|
||||
ImageHelper.Orientate(image);
|
||||
_image = image;
|
||||
Width = _image.Width;
|
||||
Height = _image.Height;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
_image.Dispose();
|
||||
_imageClone?.Dispose();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Height of the image, can be set to change
|
||||
/// </summary>
|
||||
public int Height { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Width of the image, can be set to change.
|
||||
/// </summary>
|
||||
public int Width { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Size of the image
|
||||
/// </summary>
|
||||
public Size Size => new Size(Width, Height);
|
||||
|
||||
/// <summary>
|
||||
/// Pixelformat of the underlying image
|
||||
/// </summary>
|
||||
public PixelFormat PixelFormat => Image.PixelFormat;
|
||||
|
||||
public float HorizontalResolution => Image.HorizontalResolution;
|
||||
public float VerticalResolution => Image.VerticalResolution;
|
||||
|
||||
public Image Image
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_imageClone == null)
|
||||
{
|
||||
if (_image.Height == Height && _image.Width == Width)
|
||||
{
|
||||
return _image;
|
||||
}
|
||||
}
|
||||
if (_imageClone?.Height == Height && _imageClone?.Width == Width)
|
||||
{
|
||||
return _imageClone;
|
||||
}
|
||||
// Calculate new image clone
|
||||
_imageClone?.Dispose();
|
||||
_imageClone = ImageHelper.ResizeImage(_image, false, Width, Height, null);
|
||||
return _imageClone;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue