using System; using System.Collections.Generic; using System.IO; using System.Text; namespace MigraDocCore.DocumentObjectModel.MigraDoc.DocumentObjectModel.Shapes { public abstract class ImageSource { /// /// Gets or sets the image source implementation to use for reading images. /// /// The image source impl. public static ImageSource ImageSourceImpl { get; set; } public interface IImageSource { int Width { get; } int Height { get; } string Name { get; } void SaveAsJpeg(MemoryStream ms); bool Transparent { get; } void SaveAsPdfBitmap(MemoryStream ms); } protected abstract IImageSource FromFileImpl(string path, int? quality = 75); protected abstract IImageSource FromBinaryImpl(string name, Func imageSource, int? quality = 75); protected abstract IImageSource FromStreamImpl(string name, Func imageStream, int? quality = 75); public static IImageSource FromFile(string path, int? quality = 75) { return ImageSourceImpl.FromFileImpl(path, quality); } public static IImageSource FromBinary(string name, Func imageSource, int? quality = 75) { return ImageSourceImpl.FromBinaryImpl(name, imageSource, quality); } public static IImageSource FromStream(string name, Func imageStream, int? quality = 75) { return ImageSourceImpl.FromStreamImpl(name, imageStream, quality); } } }