http://slackware.bholcomb.com/slackware/slackware-11.0/source/xap/xscreensaver/xscree...
[xscreensaver] / utils / grabscreen.h
index 5193eea643efce4effd2b39164bb7fc5d28fb151..2f680e0fc5214b0b1d2ec0ab85d362097330d920 100644 (file)
@@ -1,5 +1,4 @@
-/* xscreensaver, Copyright (c) 1992, 1993, 1994, 1997, 2001, 2003, 2004, 2005
- *  Jamie Zawinski <jwz@jwz.org>
+/* xscreensaver, Copyright (c) 1992-2006 Jamie Zawinski <jwz@jwz.org>
  *
  * Permission to use, copy, modify, distribute, and sell this software and its
  * documentation for any purpose is hereby granted without fee, provided that
    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.)  You are responsible for
-   freeing this string.
+   When the callback is called, the image data will have been loaded
+   into the given drawable.  Copy `name' if you want to keep it.
 
-   The size and position of the image is returned in `geometry_return'.
+   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,
-                               XRectangle *geometry_return);
-
-/* Like the above, but loads the image in the background and runs the
-   given callback once it has been loaded.  Copy `name' if you want
-   to keep it.
+extern void load_image_async (Screen *, Window, Drawable,
+                              void (*callback) (Screen *, Window,
+                                                Drawable,
+                                                const char *name,
+                                                XRectangle *geometry,
+                                                void *closure),
+                              void *closure);
+
+/* 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,
-                                                      XRectangle *geometry,
-                                                      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
@@ -79,4 +81,14 @@ extern void grab_screen_image_internal (Screen *, Window);
 #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_COCOA
+/* Don't use these: internal interface of grabclient.c. */
+extern void osx_grab_desktop_image (Screen *, Window, Drawable);
+extern Bool osx_load_image_file (Screen *, Window, Drawable,
+                                 const char *filename, XRectangle *geom_ret);
+#endif /* HAVE_COCOA */
+
 #endif /* __GRABSCREEN_H__ */