2 Copyright 1999-2011 ImageMagick Studio LLC, a non-profit organization
3 dedicated to making software imaging solutions freely available.
5 You may not use this file except in compliance with the License.
6 obtain a copy of the License at
8 http://www.imagemagick.org/script/license.php
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
16 MagickCore X11 window methods.
18 #ifndef _MAGICKCORE_XWINDOW_PRIVATE_H
19 #define _MAGICKCORE_XWINDOW_PRIVATE_H
21 #if defined(__cplusplus) || defined(c_plusplus)
25 #if defined(MAGICKCORE_X11_DELEGATE)
29 #include <X11/Xatom.h>
30 #include <X11/cursorfont.h>
31 #include <X11/keysym.h>
32 #include <X11/Xresource.h>
33 #include <X11/Xutil.h>
34 #include "MagickCore/exception.h"
35 #include "MagickCore/geometry.h"
36 #include "MagickCore/quantize.h"
38 #if defined(__cplusplus) || defined(c_plusplus)
39 # define klass c_class
45 Invoke pre-X11R6 ICCCM routines if XlibSpecificationRelease is not 6.
47 #if XlibSpecificationRelease < 6
48 #if !defined(PRE_R6_ICCCM)
53 Invoke pre-X11R5 ICCCM routines if XlibSpecificationRelease is not defined.
55 #if !defined(XlibSpecificationRelease)
59 Invoke pre-X11R4 ICCCM routines if PWinGravity is not defined.
61 #if !defined(PWinGravity)
65 #define MaxIconSize 96
66 #define MaxNumberPens 11
67 #define MaxNumberFonts 11
68 #define MaxXWindows 12
71 #define ThrowXWindowException(severity,tag,context) \
76 GetExceptionInfo(&exception); \
77 (void) ThrowMagickException(&exception,GetMagickModule(),severity, \
78 tag == (const char *) NULL ? "unknown" : tag,"`%s': %s",context, \
80 CatchException(&exception); \
81 (void) DestroyExceptionInfo(&exception); \
83 #define ThrowXWindowFatalException(severity,tag,context) \
85 ThrowXWindowException(severity,tag,context); \
103 FillRectangleElement,
123 typedef struct _XDrawInfo
161 geometry[MaxTextExtent];
176 DefaultState = 0x0000,
177 EscapeState = 0x0001,
179 FormerImageState = 0x0004,
180 ModifierState = 0x0008,
181 MontageImageState = 0x0010,
182 NextImageState = 0x0020,
183 RetainColorsState = 0x0040,
185 UpdateConfigurationState = 0x0080,
186 UpdateRegionState = 0x0100
189 typedef struct _XAnnotateInfo
212 geometry[MaxTextExtent];
214 struct _XAnnotateInfo
219 typedef struct _XPixelInfo
238 pen_colors[MaxNumberPens];
250 struct _XResourceInfo
294 *font_name[MaxNumberFonts],
321 *pen_colors[MaxNumberPens];
353 home_directory[MaxTextExtent];
356 typedef struct _XWindowInfo
461 typedef struct _XWindows
518 extern MagickPrivate Cursor
519 XMakeCursor(Display *,Window,Colormap,char *,char *);
521 extern MagickPrivate int
522 XCheckDefineCursor(Display *,Window,Cursor);
524 extern MagickPrivate MagickBooleanType
525 XAnnotateImage(Display *,const XPixelInfo *,XAnnotateInfo *,Image *),
526 XComponentGenesis(void),
527 XDrawImage(Display *,const XPixelInfo *,XDrawInfo *,Image *),
528 XGetWindowColor(Display *,XWindows *,char *),
529 XMagickProgressMonitor(const char *,const MagickOffsetType,
530 const MagickSizeType,void *),
531 XMakeImage(Display *,const XResourceInfo *,XWindowInfo *,Image *,unsigned int,
532 unsigned int,ExceptionInfo *),
533 XQueryColorDatabase(const char *,XColor *);
535 extern MagickPrivate void
536 XBestIconSize(Display *,XWindowInfo *,Image *),
537 XBestPixel(Display *,const Colormap,XColor *,unsigned int,XColor *),
538 XCheckRefreshWindows(Display *,XWindows *),
539 XClientMessage(Display *,const Window,const Atom,const Atom,const Time),
540 XComponentTerminus(void),
541 XConfigureImageColormap(Display *,XResourceInfo *,XWindows *,Image *),
542 XConstrainWindowPosition(Display *,XWindowInfo *),
543 XDelay(Display *,const size_t),
544 XDisplayImageInfo(Display *,const XResourceInfo *,XWindows *,Image *,Image *),
545 XDestroyWindowColors(Display *,Window),
546 XFreeResources(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
547 XFontStruct *,XResourceInfo *,XWindowInfo *),
548 XFreeStandardColormap(Display *,const XVisualInfo *,XStandardColormap *,
550 XHighlightEllipse(Display *,Window,GC,const RectangleInfo *),
551 XHighlightLine(Display *,Window,GC,const XSegment *),
552 XHighlightRectangle(Display *,Window,GC,const RectangleInfo *),
553 XGetAnnotateInfo(XAnnotateInfo *),
554 XGetPixelInfo(Display *,const XVisualInfo *,const XStandardColormap *,
555 const XResourceInfo *,Image *,XPixelInfo *),
556 XGetMapInfo(const XVisualInfo *,const Colormap,XStandardColormap *),
557 XGetWindowInfo(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
558 XFontStruct *,XResourceInfo *,XWindowInfo *),
559 XMakeMagnifyImage(Display *,XWindows *),
560 XMakeStandardColormap(Display *,XVisualInfo *,XResourceInfo *,Image *,
561 XStandardColormap *,XPixelInfo *),
562 XMakeWindow(Display *,Window,char **,int,XClassHint *,XWMHints *,
564 XQueryPosition(Display *,const Window,int *,int *),
565 XRefreshWindow(Display *,const XWindowInfo *,const XEvent *),
566 XSetCursorState(Display *,XWindows *,const MagickStatusType),
567 XUserPreferences(XResourceInfo *),
568 XWarning(const ExceptionType,const char *,const char *);
570 extern MagickPrivate Window
571 XWindowByID(Display *,const Window,const size_t),
572 XWindowByName(Display *,const Window,const char *),
573 XWindowByProperty(Display *,const Window,const Atom);
575 extern MagickPrivate XFontStruct
576 *XBestFont(Display *,const XResourceInfo *,const MagickBooleanType);
578 extern MagickPrivate XVisualInfo
579 *XBestVisualInfo(Display *,XStandardColormap *,XResourceInfo *);
581 extern MagickPrivate XWindows
582 *XInitializeWindows(Display *,XResourceInfo *),
583 *XSetWindows(XWindows *);
585 static inline MagickRealType XPixelIntensity(const XColor *pixel)
590 intensity=0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue;
596 #if defined(__cplusplus) || defined(c_plusplus)