1 /* GIMP - The GNU Image Manipulation Program
2  * Copyright (C) 1995 Spencer Kimball and Peter Mattis
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef __SCREENSHOT_H__
19 #define __SCREENSHOT_H__
20 
21 
22 typedef enum
23 {
24   SCREENSHOT_BACKEND_NONE,
25   SCREENSHOT_BACKEND_OSX,
26   SCREENSHOT_BACKEND_WIN32,
27   SCREENSHOT_BACKEND_FREEDESKTOP,
28   SCREENSHOT_BACKEND_GNOME_SHELL,
29   SCREENSHOT_BACKEND_KWIN,
30   SCREENSHOT_BACKEND_X11
31 } ScreenshotBackend;
32 
33 typedef enum
34 {
35   SCREENSHOT_CAN_SHOOT_DECORATIONS     = 0x1 << 0,
36   SCREENSHOT_CAN_SHOOT_POINTER         = 0x1 << 1,
37   SCREENSHOT_CAN_PICK_NONINTERACTIVELY = 0x1 << 2,
38   SCREENSHOT_CAN_SHOOT_REGION          = 0x1 << 3,
39   /* SHOOT_WINDOW mode only: it window selection requires active click. */
40   SCREENSHOT_CAN_PICK_WINDOW           = 0x1 << 4,
41   /* SHOOT_WINDOW + SCREENSHOT_CAN_PICK_WINDOW only: if a delay can be
42    * inserted in-between selection click and actual snapshot. */
43   SCREENSHOT_CAN_DELAY_WINDOW_SHOT     = 0x1 << 5,
44   SCREENSHOT_CAN_SHOOT_WINDOW          = 0x1 << 6
45 } ScreenshotCapabilities;
46 
47 typedef enum
48 {
49   SCREENSHOT_PROFILE_POLICY_MONITOR,
50   SCREENSHOT_PROFILE_POLICY_SRGB
51 } ScreenshotProfilePolicy;
52 
53 typedef enum
54 {
55   SHOOT_WINDOW,
56   SHOOT_ROOT,
57   SHOOT_REGION
58 } ShootType;
59 
60 typedef struct
61 {
62   ShootType               shoot_type;
63   gboolean                decorate;
64   guint                   window_id;
65   gint                    monitor;
66   guint                   select_delay;
67   guint                   screenshot_delay;
68   gint                    x1;
69   gint                    y1;
70   gint                    x2;
71   gint                    y2;
72   gboolean                show_cursor;
73   ScreenshotProfilePolicy profile_policy;
74 } ScreenshotValues;
75 
76 
77 void   screenshot_delay (gint seconds);
78 
79 
80 #endif /* __SCREENSHOT_H__ */
81