/* * Greenshot - a free and open source screenshot tool * Copyright (C) 2007-2010 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 . */ using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using Greenshot.Plugin; namespace Greenshot.Capturing { /// /// The capture mode for Greenshot /// public enum CaptureMode { None, Region, FullScreen, ActiveWindow, Window, LastRegion, Clipboard, File }; /// /// The destinations for the capture, these will be set during capture and can be modified by plugins /// public enum CaptureDestination {File, FileWithDialog, Clipboard, Printer, Editor, EMail}; /// /// Handler for the MakeCapture in ICaptureHost /// public delegate void CaptureHandler(object sender, CaptureTakenEventArgs e); /// /// The ICaptureHost is more or less the Interface that "Greenshot" itself implements (the MainForm) /// over this Interface it is possible to register to the main ContextMenu or pass a Bitmap for processing /// public interface ICaptureHost { /// /// Process a bitmap like it was captured /// void HandleCapture(Bitmap bitmap); /// /// Make Capture with default destinations /// /// CaptureMode /// bool false if the mouse should not be captured, true if the configuration should be checked void MakeCapture(CaptureMode mode, bool captureMouseCursor); /// /// Make Capture with specified destinations /// /// CaptureMode /// bool false if the mouse should not be captured, true if the configuration should be checked /// List with destinations void MakeCapture(CaptureMode mode, bool captureMouseCursor, List captureDestinations); /// /// Make Capture with specified Handler /// /// /// bool false if the mouse should not be captured, true if the configuration should be checked /// CaptureHandler delegate void MakeCapture(CaptureMode mode, bool captureMouseCursor, CaptureHandler captureHandler); } /// /// Details for the capture, like the window title and date/time etc. /// public interface ICaptureDetails { string Filename { get; set; } string Title { get; set; } DateTime DateTime { get; set; } List CaptureDestinations { get; set; } void ClearDestinations(); void RemoveDestination(CaptureDestination captureDestination); void AddDestination(CaptureDestination captureDestination); CaptureHandler CaptureHandler { get; set; } CaptureMode CaptureMode { get; set; } } /// /// The interface to the Capture object, so Plugins can use it. /// public interface ICapture : IDisposable { // The Capture Details ICaptureDetails CaptureDetails { get; set; } // The captured Image Image Image { get; set; } Rectangle ScreenBounds { get; set; } Icon Cursor { get; set; } // Boolean to specify if the cursor is available bool CursorVisible { get; set; } Point CursorLocation { get; set; } Point Location { get; set; } /// /// Crops the capture to the specified rectangle (with Bitmap coordinates!) /// /// Rectangle with bitmap coordinates void Crop(Rectangle cropRectangle); /// /// Crops the capture to the specified rectangle (with screen coordinates!) /// /// Rectangle with screen coordinates void CropWithScreenCoordinates(Rectangle cropRectangle); /// /// Apply a translate to the mouse location. /// e.g. needed for crop /// /// x coordinates to move the mouse /// y coordinates to move the mouse void MoveMouseLocation(int x, int y); } }