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];
166 DefaultState = 0x0000,
167 EscapeState = 0x0001,
169 FormerImageState = 0x0004,
170 ModifierState = 0x0008,
171 MontageImageState = 0x0010,
172 NextImageState = 0x0020,
173 RetainColorsState = 0x0040,
175 UpdateConfigurationState = 0x0080,
176 UpdateRegionState = 0x0100
179 typedef struct _XAnnotateInfo
202 geometry[MaxTextExtent];
204 struct _XAnnotateInfo
209 typedef struct _XPixelInfo
228 pen_colors[MaxNumberPens];
240 typedef struct _XResourceInfo
284 *font_name[MaxNumberFonts],
311 *pen_colors[MaxNumberPens];
343 home_directory[MaxTextExtent];
346 typedef struct _XWindowInfo
451 typedef struct _XWindows
508 extern MagickPrivate Cursor
509 XMakeCursor(Display *,Window,Colormap,char *,char *);
511 extern MagickPrivate int
512 XCheckDefineCursor(Display *,Window,Cursor);
514 extern MagickPrivate MagickBooleanType
515 XAnnotateImage(Display *,const XPixelInfo *,XAnnotateInfo *,Image *),
516 XComponentGenesis(void),
517 XDrawImage(Display *,const XPixelInfo *,XDrawInfo *,Image *),
518 XGetWindowColor(Display *,XWindows *,char *),
519 XMagickProgressMonitor(const char *,const MagickOffsetType,
520 const MagickSizeType,void *),
521 XMakeImage(Display *,const XResourceInfo *,XWindowInfo *,Image *,unsigned int,
522 unsigned int,ExceptionInfo *),
523 XQueryColorDatabase(const char *,XColor *);
525 extern MagickPrivate void
526 XBestIconSize(Display *,XWindowInfo *,Image *),
527 XBestPixel(Display *,const Colormap,XColor *,unsigned int,XColor *),
528 XCheckRefreshWindows(Display *,XWindows *),
529 XClientMessage(Display *,const Window,const Atom,const Atom,const Time),
530 XComponentTerminus(void),
531 XConfigureImageColormap(Display *,XResourceInfo *,XWindows *,Image *),
532 XConstrainWindowPosition(Display *,XWindowInfo *),
533 XDelay(Display *,const size_t),
534 XDisplayImageInfo(Display *,const XResourceInfo *,XWindows *,Image *,Image *),
535 XDestroyWindowColors(Display *,Window),
536 XFreeResources(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
537 XFontStruct *,XResourceInfo *,XWindowInfo *),
538 XFreeStandardColormap(Display *,const XVisualInfo *,XStandardColormap *,
540 XHighlightEllipse(Display *,Window,GC,const RectangleInfo *),
541 XHighlightLine(Display *,Window,GC,const XSegment *),
542 XHighlightRectangle(Display *,Window,GC,const RectangleInfo *),
543 XGetAnnotateInfo(XAnnotateInfo *),
544 XGetPixelInfo(Display *,const XVisualInfo *,const XStandardColormap *,
545 const XResourceInfo *,Image *,XPixelInfo *),
546 XGetMapInfo(const XVisualInfo *,const Colormap,XStandardColormap *),
547 XGetWindowInfo(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
548 XFontStruct *,XResourceInfo *,XWindowInfo *),
549 XMakeMagnifyImage(Display *,XWindows *),
550 XMakeStandardColormap(Display *,XVisualInfo *,XResourceInfo *,Image *,
551 XStandardColormap *,XPixelInfo *),
552 XMakeWindow(Display *,Window,char **,int,XClassHint *,XWMHints *,
554 XQueryPosition(Display *,const Window,int *,int *),
555 XRefreshWindow(Display *,const XWindowInfo *,const XEvent *),
556 XSetCursorState(Display *,XWindows *,const MagickStatusType),
557 XUserPreferences(XResourceInfo *),
558 XWarning(const ExceptionType,const char *,const char *);
560 extern MagickPrivate Window
561 XWindowByID(Display *,const Window,const size_t),
562 XWindowByName(Display *,const Window,const char *),
563 XWindowByProperty(Display *,const Window,const Atom);
565 extern MagickPrivate XFontStruct
566 *XBestFont(Display *,const XResourceInfo *,const MagickBooleanType);
568 extern MagickPrivate XVisualInfo
569 *XBestVisualInfo(Display *,XStandardColormap *,XResourceInfo *);
571 extern MagickPrivate XWindows
572 *XInitializeWindows(Display *,XResourceInfo *),
573 *XSetWindows(XWindows *);
575 extern MagickExport char
576 *XGetResourceClass(XrmDatabase,const char *,const char *,char *),
577 *XGetResourceInstance(XrmDatabase,const char *,const char *,const char *),
578 *XGetScreenDensity(Display *);
580 extern MagickExport int
581 XError(Display *,XErrorEvent *);
583 extern MagickExport MagickBooleanType
584 XRemoteCommand(Display *,const char *,const char *);
586 extern MagickExport void
587 DestroyXResources(void),
588 XDestroyResourceInfo(XResourceInfo *),
589 XGetResourceInfo(const ImageInfo *,XrmDatabase,const char *,XResourceInfo *),
590 XRetainWindowColors(Display *,const Window);
592 extern MagickExport XrmDatabase
593 XGetResourceDatabase(Display *,const char *);
595 static inline MagickRealType XPixelIntensity(const XColor *pixel)
600 intensity=0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue;
606 #if defined(__cplusplus) || defined(c_plusplus)