X-Git-Url: http://git.hungrycats.org/cgi-bin/gitweb.cgi?p=xscreensaver;a=blobdiff_plain;f=utils%2Fgrabscreen.h;h=f0d7a0b653f37ba8c19728777fee791629ebfc6b;hp=19d01e2aa2e165df4add8aeb37cf9426d1e98875;hb=4361b69d3178d7fc98d0388f9a223af6c2651aba;hpb=ffd8c0873576a9e3065696a624dce6b766b77062 diff --git a/utils/grabscreen.h b/utils/grabscreen.h index 19d01e2a..f0d7a0b6 100644 --- a/utils/grabscreen.h +++ b/utils/grabscreen.h @@ -1,5 +1,4 @@ -/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997, 2001, 2003, 2004 - * Jamie Zawinski +/* xscreensaver, Copyright (c) 1992-2014 Jamie Zawinski * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that @@ -25,27 +24,39 @@ desktop, or from the system's video input, depending on user preferences. - If it is from a file, then it will be returned in `filename_return'. - filename_return may be NULL; also, NULL may be returned (e.g., if - it's a screenshot or video capture.) + When the callback is called, the image data will have been loaded + into the given drawable. Copy `name' if you want to keep it. + + If it is from a file, then the `filename' argument will be the name + of the file. It may be NULL. If you want to keep this string, copy it. + + The size and position of the image is in the `geometry' arg. + The image will generally have been scaled up to fit the window, but + if a loaded file had a different aspect ratio than the window, it + will have been centered, and the returned coords will describe that. Many colors may be allocated from the window's colormap. */ -extern void load_random_image (Screen *screen, - Window top_level_window, - Drawable target_window_or_pixmap, - char **filename_return); +extern void load_image_async (Screen *, Window, Drawable, + void (*callback) (Screen *, Window, + Drawable, + const char *name, + XRectangle *geometry, + void *closure), + void *closure); -/* Like the above, but loads the image in the background and runs the - given callback once it has been loaded. +/* A utility wrapper around load_image_async() that is simpler if you + are only loading a single image at a time: just keep calling it + periodically until it returns NULL. When it does, the image has + been loaded. */ -extern void fork_load_random_image (Screen *screen, Window window, - Drawable drawable, - void (*callback) (Screen *, Window, - Drawable, - const char *name, - void *closure), - void *closure); +typedef struct async_load_state async_load_state; +extern async_load_state *load_image_async_simple (async_load_state *, + Screen *, + Window top_level, + Drawable target, + char **filename_ret, + XRectangle *geometry_ret); /* Whether one should use GCSubwindowMode when drawing on this window @@ -65,8 +76,35 @@ extern Bool top_level_window_p(Screen *screen, Window window); /* Don't call this: this is for the "xscreensaver-getimage" program only. */ extern void grab_screen_image_internal (Screen *, Window); -/* Don't use this: this is how "xscreensaver-getimage" and "grabclient.c" +/* Don't use these: this is how "xscreensaver-getimage" and "grabclient.c" pass the file name around. */ #define XA_XSCREENSAVER_IMAGE_FILENAME "_SCREENSAVER_IMAGE_FILENAME" +#define XA_XSCREENSAVER_IMAGE_GEOMETRY "_SCREENSAVER_IMAGE_GEOMETRY" + +/* For debugging: turn on verbosity. */ +extern void grabscreen_verbose (void); + +#ifdef HAVE_JWXYZ +/* Don't use these: internal interface of grabclient.c. */ +extern Bool osx_grab_desktop_image (Screen *, Window, Drawable, + XRectangle *geom_ret); +extern Bool osx_load_image_file (Screen *, Window, Drawable, + const char *filename, XRectangle *geom_ret); +#endif /* HAVE_JWXYZ */ + +#ifdef USE_IPHONE +extern void ios_load_random_image (void (*callback) (void *uiimage, + const char *filename, + int w, int h, + void *closure), + void *closure, + int width, int height); +#endif /* USE_IPHONE */ + +#ifdef HAVE_ANDROID +char *jwxyz_load_random_image (Display *dpy, /* utils/grabclient.c */ + int *width_ret, int *height_ret, + char **name_ret); +#endif #endif /* __GRABSCREEN_H__ */