Added missing newline in NEDsim error message.
[screensavers] / screenhack / grabscreen.h
CommitLineData
3144ee8a
AT
1/* xscreensaver, Copyright (c) 1992-2014 Jamie Zawinski <jwz@jwz.org>
2 *
3 * Permission to use, copy, modify, distribute, and sell this software and its
4 * documentation for any purpose is hereby granted without fee, provided that
5 * the above copyright notice appear in all copies and that both that
6 * copyright notice and this permission notice appear in supporting
7 * documentation. No representations are made about the suitability of this
8 * software for any purpose. It is provided "as is" without express or
9 * implied warranty.
10 */
11
12#ifndef __GRABSCREEN_H__
13#define __GRABSCREEN_H__
14
15/* This will write an image onto the given Drawable.
16 The Drawable (arg 3) may be a Window or a Pixmap.
17
18 The Window must be the top-level window. The image *may or may not*
19 be written to the window, though it will definitely be written to
20 the drawable. It's fine for args 2 and 3 to be the same window, or
21 for arg 2 to be a Window, and arg 3 to be a Pixmap.
22
23 The loaded image might be from a file, or from a screen shot of the
24 desktop, or from the system's video input, depending on user
25 preferences.
26
27 When the callback is called, the image data will have been loaded
28 into the given drawable. Copy `name' if you want to keep it.
29
30 If it is from a file, then the `filename' argument will be the name
31 of the file. It may be NULL. If you want to keep this string, copy it.
32
33 The size and position of the image is in the `geometry' arg.
34 The image will generally have been scaled up to fit the window, but
35 if a loaded file had a different aspect ratio than the window, it
36 will have been centered, and the returned coords will describe that.
37
38 Many colors may be allocated from the window's colormap.
39 */
40extern void load_image_async (Screen *, Window, Drawable,
41 void (*callback) (Screen *, Window,
42 Drawable,
43 const char *name,
44 XRectangle *geometry,
45 void *closure),
46 void *closure);
47
48/* A utility wrapper around load_image_async() that is simpler if you
49 are only loading a single image at a time: just keep calling it
50 periodically until it returns NULL. When it does, the image has
51 been loaded.
52 */
53typedef struct async_load_state async_load_state;
54extern async_load_state *load_image_async_simple (async_load_state *,
55 Screen *,
56 Window top_level,
57 Drawable target,
58 char **filename_ret,
59 XRectangle *geometry_ret);
60
61
62/* Whether one should use GCSubwindowMode when drawing on this window
63 (assuming a screen image has been grabbed onto it.) Yes, this is a
64 total kludge. */
65extern Bool use_subwindow_mode_p(Screen *screen, Window window);
66
67/* Whether the given window is:
68 - the real root window;
69 - the virtual root window;
70 - a direct child of the root window;
71 - a direct child of the window manager's decorations.
72 */
73extern Bool top_level_window_p(Screen *screen, Window window);
74
75
76/* Don't call this: this is for the "xscreensaver-getimage" program only. */
77extern void grab_screen_image_internal (Screen *, Window);
78
79/* Don't use these: this is how "xscreensaver-getimage" and "grabclient.c"
80 pass the file name around. */
81#define XA_XSCREENSAVER_IMAGE_FILENAME "_SCREENSAVER_IMAGE_FILENAME"
82#define XA_XSCREENSAVER_IMAGE_GEOMETRY "_SCREENSAVER_IMAGE_GEOMETRY"
83
84/* For debugging: turn on verbosity. */
85extern void grabscreen_verbose (void);
86
87#ifdef HAVE_JWXYZ
88/* Don't use these: internal interface of grabclient.c. */
89extern Bool osx_grab_desktop_image (Screen *, Window, Drawable,
90 XRectangle *geom_ret);
91extern Bool osx_load_image_file (Screen *, Window, Drawable,
92 const char *filename, XRectangle *geom_ret);
93#endif /* HAVE_JWXYZ */
94
95#ifdef HAVE_IPHONE
96extern void ios_load_random_image (void (*callback) (void *uiimage,
97 const char *filename,
98 int w, int h,
99 void *closure),
100 void *closure,
101 int width, int height);
102#endif /* HAVE_IPHONE */
103
104#ifdef HAVE_ANDROID
105char *jwxyz_draw_random_image (Display *dpy, /* utils/grabclient.c */
106 Drawable drawable, GC gc);
107#endif
108
109#endif /* __GRABSCREEN_H__ */