xwindow-private.h

Go to the documentation of this file.
00001 /*
00002   Copyright 1999-2008 ImageMagick Studio LLC, a non-profit organization
00003   dedicated to making software imaging solutions freely available.
00004   
00005   You may not use this file except in compliance with the License.
00006   obtain a copy of the License at
00007   
00008     http://www.imagemagick.org/script/license.php
00009   
00010   Unless required by applicable law or agreed to in writing, software
00011   distributed under the License is distributed on an "AS IS" BASIS,
00012   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
00013   See the License for the specific language governing permissions and
00014   limitations under the License.
00015 
00016   MagickCore X11 window methods.
00017 */
00018 #ifndef _MAGICKCORE_XWINDOW_PRIVATE_H
00019 #define _MAGICKCORE_XWINDOW_PRIVATE_H
00020 
00021 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024 
00025 #if defined(MAGICKCORE_X11_DELEGATE)
00026 
00027 #include <X11/Xos.h>
00028 #include <X11/Xlib.h>
00029 #include <X11/Xatom.h>
00030 #include <X11/cursorfont.h>
00031 #include <X11/keysym.h>
00032 #include <X11/Xresource.h>
00033 #include <X11/Xutil.h>
00034 #include "magick/exception.h"
00035 #include "magick/geometry.h"
00036 #include "magick/quantize.h"
00037 
00038 #if defined(__cplusplus) || defined(c_plusplus)
00039 # define klass  c_class
00040 #else
00041 # define klass  class
00042 #endif
00043 
00044 /*
00045   Invoke pre-X11R6 ICCCM routines if XlibSpecificationRelease is not 6.
00046 */
00047 #if XlibSpecificationRelease < 6
00048 #if !defined(PRE_R6_ICCCM)
00049 #define PRE_R6_ICCCM
00050 #endif
00051 #endif
00052 /*
00053   Invoke pre-X11R5 ICCCM routines if XlibSpecificationRelease is not defined.
00054 */
00055 #if !defined(XlibSpecificationRelease)
00056 #define PRE_R5_ICCCM
00057 #endif
00058 /*
00059   Invoke pre-X11R4 ICCCM routines if PWinGravity is not defined.
00060 */
00061 #if !defined(PWinGravity)
00062 #define PRE_R4_ICCCM
00063 #endif
00064 
00065 #define MaxIconSize  96
00066 #define MaxNumberPens  11
00067 #define MaxNumberFonts  11
00068 #define MaxXWindows  12
00069 #undef index
00070 
00071 #define ThrowXWindowException(severity,tag,context) \
00072 { \
00073   ExceptionInfo \
00074     exception; \
00075  \
00076   GetExceptionInfo(&exception); \
00077   (void) ThrowMagickException(&exception,GetMagickModule(),severity, \
00078     tag == (const char *) NULL ? "unknown" : tag,"`%s': %s",context, \
00079     strerror(errno)); \
00080   CatchException(&exception); \
00081   (void) DestroyExceptionInfo(&exception); \
00082 }
00083 #define ThrowXWindowFatalException(severity,tag,context) \
00084 { \
00085    ThrowXWindowException(severity,tag,context); \
00086   _exit(1); \
00087 }
00088 
00089 typedef enum
00090 {
00091   ForegroundStencil,
00092   BackgroundStencil,
00093   OpaqueStencil,
00094   TransparentStencil
00095 } AnnotationStencil;
00096 
00097 typedef enum
00098 {
00099   UndefinedElement,
00100   PointElement,
00101   LineElement,
00102   RectangleElement,
00103   FillRectangleElement,
00104   CircleElement,
00105   FillCircleElement,
00106   EllipseElement,
00107   FillEllipseElement,
00108   PolygonElement,
00109   FillPolygonElement,
00110   ColorElement,
00111   MatteElement,
00112   TextElement,
00113   ImageElement
00114 } ElementType;
00115 
00116 typedef enum
00117 {
00118   UndefinedColormap,
00119   PrivateColormap,
00120   SharedColormap
00121 } XColormapType;
00122 
00123 typedef struct _XDrawInfo
00124 {
00125   int
00126     x,
00127     y;
00128 
00129   unsigned int
00130     width,
00131     height;
00132 
00133   double
00134     degrees;
00135 
00136   AnnotationStencil
00137     stencil;
00138 
00139   ElementType
00140     element;
00141 
00142   Pixmap
00143     stipple;
00144 
00145   unsigned int
00146     line_width;
00147 
00148   XSegment
00149     line_info;
00150 
00151   unsigned int
00152     number_coordinates;
00153 
00154   RectangleInfo
00155     rectangle_info;
00156 
00157   XPoint
00158     *coordinate_info;
00159 
00160   char
00161     geometry[MaxTextExtent];
00162 } XDrawInfo;
00163 
00164 typedef enum
00165 {
00166   DefaultState = 0x0000,
00167   EscapeState = 0x0001,
00168   ExitState = 0x0002,
00169   FormerImageState = 0x0004,
00170   ModifierState = 0x0008,
00171   MontageImageState = 0x0010,
00172   NextImageState = 0x0020,
00173   RetainColorsState = 0x0040,
00174   SuspendTime = 50,
00175   UpdateConfigurationState = 0x0080,
00176   UpdateRegionState = 0x0100
00177 } XState;
00178 
00179 typedef struct _XAnnotateInfo
00180 {
00181   int
00182     x,
00183     y;
00184 
00185   unsigned int
00186     width,
00187     height;
00188 
00189   double
00190     degrees;
00191 
00192   XFontStruct
00193     *font_info;
00194 
00195   char
00196     *text;
00197 
00198   AnnotationStencil
00199     stencil;
00200 
00201   char
00202     geometry[MaxTextExtent];
00203 
00204   struct _XAnnotateInfo
00205     *next,
00206     *previous;
00207 } XAnnotateInfo;
00208 
00209 typedef struct _XPixelInfo
00210 {
00211   unsigned long
00212     colors,
00213     *pixels;
00214 
00215   XColor
00216     foreground_color,
00217     background_color,
00218     border_color,
00219     matte_color,
00220     highlight_color,
00221     shadow_color,
00222     depth_color,
00223     trough_color,
00224     box_color,
00225     pen_color,
00226     pen_colors[MaxNumberPens];
00227 
00228   GC
00229     annotate_context,
00230     highlight_context,
00231     widget_context;
00232 
00233   unsigned short
00234     box_index,
00235     pen_index;
00236 } XPixelInfo;
00237 
00238 typedef struct _XResourceInfo
00239 {
00240   XrmDatabase
00241     resource_database;
00242 
00243   ImageInfo
00244     *image_info;
00245 
00246   QuantizeInfo
00247     *quantize_info;
00248 
00249   unsigned long
00250     colors;
00251 
00252   MagickBooleanType
00253     close_server,
00254     backdrop;
00255 
00256   char
00257     *background_color,
00258     *border_color;
00259 
00260   char
00261     *client_name;
00262 
00263   XColormapType
00264     colormap;
00265 
00266   unsigned int
00267     border_width;
00268 
00269   unsigned long
00270     delay;
00271 
00272   MagickBooleanType
00273     color_recovery,
00274     confirm_exit,
00275     confirm_edit;
00276 
00277   char
00278     *display_gamma;
00279 
00280   char
00281     *font,
00282     *font_name[MaxNumberFonts],
00283     *foreground_color;
00284 
00285   MagickBooleanType
00286     display_warnings,
00287     gamma_correct;
00288 
00289   char
00290     *icon_geometry;
00291 
00292   MagickBooleanType
00293     iconic,
00294     immutable;
00295 
00296   char
00297     *image_geometry;
00298 
00299   char
00300     *map_type,
00301     *matte_color,
00302     *name;
00303 
00304   unsigned int
00305     magnify,
00306     pause;
00307 
00308   char
00309     *pen_colors[MaxNumberPens];
00310 
00311   char
00312     *text_font,
00313     *title;
00314 
00315   int
00316     quantum;
00317 
00318   unsigned int
00319     update;
00320 
00321   MagickBooleanType
00322     use_pixmap,
00323     use_shared_memory;
00324 
00325   unsigned long
00326     undo_cache;
00327 
00328   char
00329     *visual_type,
00330     *window_group,
00331     *window_id,
00332     *write_filename;
00333 
00334   Image
00335     *copy_image;
00336 
00337   int
00338     gravity;
00339 
00340   char
00341     home_directory[MaxTextExtent];
00342 } XResourceInfo;
00343 
00344 typedef struct _XWindowInfo
00345 {
00346   Window
00347     id;
00348 
00349   Window
00350     root;
00351 
00352   Visual
00353     *visual;
00354 
00355   unsigned int
00356     storage_class,
00357     depth;
00358 
00359   XVisualInfo
00360     *visual_info;
00361 
00362   XStandardColormap
00363     *map_info;
00364 
00365   XPixelInfo
00366     *pixel_info;
00367 
00368   XFontStruct
00369     *font_info;
00370 
00371   GC
00372     annotate_context,
00373     highlight_context,
00374     widget_context;
00375 
00376   Cursor
00377     cursor,
00378     busy_cursor;
00379 
00380   char
00381     *name,
00382     *geometry,
00383     *icon_name,
00384     *icon_geometry,
00385     *crop_geometry;
00386 
00387   unsigned long
00388     data,
00389     flags;
00390 
00391   int
00392     x,
00393     y;
00394 
00395   unsigned int
00396     width,
00397     height,
00398     min_width,
00399     min_height,
00400     width_inc,
00401     height_inc,
00402     border_width;
00403 
00404   MagickBooleanType
00405     use_pixmap,
00406     immutable,
00407     shape,
00408     shared_memory;
00409 
00410   int
00411     screen;
00412 
00413   XImage
00414     *ximage,
00415     *matte_image;
00416 
00417   Pixmap
00418     highlight_stipple,
00419     shadow_stipple,
00420     pixmap,
00421     *pixmaps,
00422     matte_pixmap,
00423     *matte_pixmaps;
00424 
00425   XSetWindowAttributes
00426     attributes;
00427 
00428   XWindowChanges
00429     window_changes;
00430 
00431   void
00432     *segment_info;
00433 
00434   unsigned long
00435     mask;
00436 
00437   MagickBooleanType
00438     orphan,
00439     mapped,
00440     stasis;
00441 
00442   Image
00443     *image;
00444 
00445   MagickBooleanType
00446     destroy;
00447 } XWindowInfo;
00448 
00449 typedef struct _XWindows
00450 {
00451   Display
00452     *display;
00453 
00454   XStandardColormap
00455     *map_info,
00456     *icon_map;
00457 
00458   XVisualInfo
00459     *visual_info,
00460     *icon_visual;
00461 
00462   XPixelInfo
00463     *pixel_info,
00464     *icon_pixel;
00465 
00466   XFontStruct
00467     *font_info;
00468 
00469   XResourceInfo
00470     *icon_resources;
00471 
00472   XClassHint
00473     *class_hints;
00474 
00475   XWMHints
00476     *manager_hints;
00477 
00478   XWindowInfo
00479     context,
00480     group_leader,
00481     backdrop,
00482     icon,
00483     image,
00484     info,
00485     magnify,
00486     pan,
00487     command,
00488     widget,
00489     popup;
00490 
00491   Atom
00492     wm_protocols,
00493     wm_delete_window,
00494     wm_take_focus,
00495     im_protocols,
00496     im_remote_command,
00497     im_update_widget,
00498     im_update_colormap,
00499     im_former_image,
00500     im_retain_colors,
00501     im_next_image,
00502     im_exit,
00503     dnd_protocols;
00504 } XWindows;
00505 
00506 extern MagickExport char
00507   *XGetResourceClass(XrmDatabase,const char *,const char *,char *),
00508   *XGetResourceInstance(XrmDatabase,const char *,const char *,const char *),
00509   *XGetScreenDensity(Display *);
00510 
00511 extern MagickExport Cursor
00512   XMakeCursor(Display *,Window,Colormap,char *,char *);
00513 
00514 extern MagickExport int
00515   XCheckDefineCursor(Display *,Window,Cursor),
00516   XError(Display *,XErrorEvent *);
00517 
00518 extern MagickExport MagickBooleanType
00519   XAnnotateImage(Display *,const XPixelInfo *,XAnnotateInfo *,Image *),
00520   XDrawImage(Display *,const XPixelInfo *,XDrawInfo *,Image *),
00521   XGetWindowColor(Display *,XWindows *,char *),
00522   XMagickProgressMonitor(const char *,const MagickOffsetType,
00523     const MagickSizeType,void *),
00524   XMakeImage(Display *,const XResourceInfo *,XWindowInfo *,Image *,unsigned int,
00525     unsigned int),
00526   XQueryColorDatabase(const char *,XColor *),
00527   XRemoteCommand(Display *,const char *,const char *);
00528 
00529 extern MagickExport void
00530   DestroyXResources(void),
00531   XBestIconSize(Display *,XWindowInfo *,Image *),
00532   XBestPixel(Display *,const Colormap,XColor *,unsigned int,XColor *),
00533   XCheckRefreshWindows(Display *,XWindows *),
00534   XClientMessage(Display *,const Window,const Atom,const Atom,const Time),
00535   XConfigureImageColormap(Display *,XResourceInfo *,XWindows *,Image *),
00536   XConstrainWindowPosition(Display *,XWindowInfo *),
00537   XDelay(Display *,const unsigned long),
00538   XDestroyResourceInfo(XResourceInfo *),
00539   XDestroyWindowColors(Display *,Window),
00540   XDisplayImageInfo(Display *,const XResourceInfo *,XWindows *,Image *,Image *),
00541   XFreeResources(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
00542     XFontStruct *,XResourceInfo *,XWindowInfo *),
00543   XFreeStandardColormap(Display *,const XVisualInfo *,XStandardColormap *,
00544     XPixelInfo *),
00545   XHighlightEllipse(Display *,Window,GC,const RectangleInfo *),
00546   XHighlightLine(Display *,Window,GC,const XSegment *),
00547   XHighlightRectangle(Display *,Window,GC,const RectangleInfo *),
00548   XGetAnnotateInfo(XAnnotateInfo *),
00549   XGetPixelPacket(Display *,const XVisualInfo *,const XStandardColormap *,
00550     const XResourceInfo *,Image *,XPixelInfo *),
00551   XGetMapInfo(const XVisualInfo *,const Colormap,XStandardColormap *),
00552   XGetResourceInfo(XrmDatabase,const char *,XResourceInfo *),
00553   XGetWindowInfo(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
00554     XFontStruct *,XResourceInfo *,XWindowInfo *),
00555   XMakeMagnifyImage(Display *,XWindows *),
00556   XMakeStandardColormap(Display *,XVisualInfo *,XResourceInfo *,Image *,
00557     XStandardColormap *,XPixelInfo *),
00558   XMakeWindow(Display *,Window,char **,int,XClassHint *,XWMHints *,
00559     XWindowInfo *),
00560   XQueryPosition(Display *,const Window,int *,int *),
00561   XRefreshWindow(Display *,const XWindowInfo *,const XEvent *),
00562   XRetainWindowColors(Display *,const Window),
00563   XSetCursorState(Display *,XWindows *,const MagickStatusType),
00564   XUserPreferences(XResourceInfo *),
00565   XWarning(const ExceptionType,const char *,const char *);
00566 
00567 extern MagickExport Window
00568   XWindowByID(Display *,const Window,const unsigned long),
00569   XWindowByName(Display *,const Window,const char *),
00570   XWindowByProperty(Display *,const Window,const Atom);
00571 
00572 extern MagickExport XFontStruct
00573   *XBestFont(Display *,const XResourceInfo *,const MagickBooleanType);
00574 
00575 extern MagickExport XrmDatabase
00576   XGetResourceDatabase(Display *,const char *);
00577 
00578 extern MagickExport XVisualInfo
00579   *XBestVisualInfo(Display *,XStandardColormap *,XResourceInfo *);
00580 
00581 extern MagickExport XWindows
00582   *XInitializeWindows(Display *,XResourceInfo *),
00583   *XSetWindows(XWindows *);
00584 
00585 static inline MagickRealType XPixelIntensity(const XColor *pixel)
00586 {
00587   MagickRealType
00588     intensity;
00589 
00590   intensity=0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue;
00591   return(intensity);
00592 }
00593 
00594 #endif
00595 
00596 #if defined(__cplusplus) || defined(c_plusplus)
00597 }
00598 #endif
00599 
00600 #endif

Generated on Sat Jan 26 14:50:29 2008 for MagickCore by  doxygen 1.5.4