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 *,
517 XComponentGenesis(void),
518 XDrawImage(Display *,const XPixelInfo *,XDrawInfo *,Image *),
519 XGetWindowColor(Display *,XWindows *,char *),
520 XMagickProgressMonitor(const char *,const MagickOffsetType,
521 const MagickSizeType,void *),
522 XMakeImage(Display *,const XResourceInfo *,XWindowInfo *,Image *,unsigned int,
523 unsigned int,ExceptionInfo *),
524 XQueryColorCompliance(const char *,XColor *);
526 extern MagickPrivate void
527 XBestIconSize(Display *,XWindowInfo *,Image *),
528 XBestPixel(Display *,const Colormap,XColor *,unsigned int,XColor *),
529 XCheckRefreshWindows(Display *,XWindows *),
530 XClientMessage(Display *,const Window,const Atom,const Atom,const Time),
531 XComponentTerminus(void),
532 XConfigureImageColormap(Display *,XResourceInfo *,XWindows *,Image *),
533 XConstrainWindowPosition(Display *,XWindowInfo *),
534 XDelay(Display *,const size_t),
535 XDisplayImageInfo(Display *,const XResourceInfo *,XWindows *,Image *,Image *),
536 XDestroyWindowColors(Display *,Window),
537 XFreeResources(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
538 XFontStruct *,XResourceInfo *,XWindowInfo *),
539 XFreeStandardColormap(Display *,const XVisualInfo *,XStandardColormap *,
541 XHighlightEllipse(Display *,Window,GC,const RectangleInfo *),
542 XHighlightLine(Display *,Window,GC,const XSegment *),
543 XHighlightRectangle(Display *,Window,GC,const RectangleInfo *),
544 XGetAnnotateInfo(XAnnotateInfo *),
545 XGetPixelInfo(Display *,const XVisualInfo *,const XStandardColormap *,
546 const XResourceInfo *,Image *,XPixelInfo *),
547 XGetMapInfo(const XVisualInfo *,const Colormap,XStandardColormap *),
548 XGetWindowInfo(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
549 XFontStruct *,XResourceInfo *,XWindowInfo *),
550 XMakeMagnifyImage(Display *,XWindows *),
551 XMakeStandardColormap(Display *,XVisualInfo *,XResourceInfo *,Image *,
552 XStandardColormap *,XPixelInfo *),
553 XMakeWindow(Display *,Window,char **,int,XClassHint *,XWMHints *,
555 XQueryPosition(Display *,const Window,int *,int *),
556 XRefreshWindow(Display *,const XWindowInfo *,const XEvent *),
557 XSetCursorState(Display *,XWindows *,const MagickStatusType),
558 XUserPreferences(XResourceInfo *),
559 XWarning(const ExceptionType,const char *,const char *);
561 extern MagickPrivate Window
562 XWindowByID(Display *,const Window,const size_t),
563 XWindowByName(Display *,const Window,const char *),
564 XWindowByProperty(Display *,const Window,const Atom);
566 extern MagickPrivate XFontStruct
567 *XBestFont(Display *,const XResourceInfo *,const MagickBooleanType);
569 extern MagickPrivate XVisualInfo
570 *XBestVisualInfo(Display *,XStandardColormap *,XResourceInfo *);
572 extern MagickPrivate XWindows
573 *XInitializeWindows(Display *,XResourceInfo *),
574 *XSetWindows(XWindows *);
576 extern MagickExport char
577 *XGetResourceClass(XrmDatabase,const char *,const char *,char *),
578 *XGetResourceInstance(XrmDatabase,const char *,const char *,const char *),
579 *XGetScreenDensity(Display *);
581 extern MagickExport int
582 XError(Display *,XErrorEvent *);
584 extern MagickExport MagickBooleanType
585 XRemoteCommand(Display *,const char *,const char *);
587 extern MagickExport void
588 DestroyXResources(void),
589 XDestroyResourceInfo(XResourceInfo *),
590 XGetResourceInfo(const ImageInfo *,XrmDatabase,const char *,XResourceInfo *),
591 XRetainWindowColors(Display *,const Window);
593 extern MagickExport XrmDatabase
594 XGetResourceDatabase(Display *,const char *);
596 static inline MagickRealType XPixelIntensity(const XColor *pixel)
601 intensity=0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue;
607 #if defined(__cplusplus) || defined(c_plusplus)