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 MagickExport char
509 *XGetResourceClass(XrmDatabase,const char *,const char *,char *),
510 *XGetResourceInstance(XrmDatabase,const char *,const char *,const char *),
511 *XGetScreenDensity(Display *);
513 extern MagickExport Cursor
514 XMakeCursor(Display *,Window,Colormap,char *,char *);
516 extern MagickExport int
517 XCheckDefineCursor(Display *,Window,Cursor),
518 XError(Display *,XErrorEvent *);
520 extern MagickExport MagickBooleanType
521 XAnnotateImage(Display *,const XPixelInfo *,XAnnotateInfo *,Image *),
522 XDrawImage(Display *,const XPixelInfo *,XDrawInfo *,Image *),
523 XGetWindowColor(Display *,XWindows *,char *),
524 XMagickProgressMonitor(const char *,const MagickOffsetType,
525 const MagickSizeType,void *),
526 XMakeImage(Display *,const XResourceInfo *,XWindowInfo *,Image *,unsigned int,
527 unsigned int,ExceptionInfo *),
528 XQueryColorDatabase(const char *,XColor *),
529 XRemoteCommand(Display *,const char *,const char *);
531 extern MagickPrivate MagickBooleanType
532 XComponentGenesis(void);
534 extern MagickExport void
535 DestroyXResources(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 XConfigureImageColormap(Display *,XResourceInfo *,XWindows *,Image *),
541 XConstrainWindowPosition(Display *,XWindowInfo *),
542 XDelay(Display *,const size_t),
543 XDisplayImageInfo(Display *,const XResourceInfo *,XWindows *,Image *,Image *),
544 XDestroyResourceInfo(XResourceInfo *),
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 XGetResourceInfo(const ImageInfo *,XrmDatabase,const char *,XResourceInfo *),
558 XGetWindowInfo(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
559 XFontStruct *,XResourceInfo *,XWindowInfo *),
560 XMakeMagnifyImage(Display *,XWindows *),
561 XMakeStandardColormap(Display *,XVisualInfo *,XResourceInfo *,Image *,
562 XStandardColormap *,XPixelInfo *),
563 XMakeWindow(Display *,Window,char **,int,XClassHint *,XWMHints *,
565 XQueryPosition(Display *,const Window,int *,int *),
566 XRefreshWindow(Display *,const XWindowInfo *,const XEvent *),
567 XRetainWindowColors(Display *,const Window),
568 XSetCursorState(Display *,XWindows *,const MagickStatusType),
569 XUserPreferences(XResourceInfo *),
570 XWarning(const ExceptionType,const char *,const char *);
572 extern MagickPrivate void
573 XComponentTerminus(void);
575 extern MagickExport Window
576 XWindowByID(Display *,const Window,const size_t),
577 XWindowByName(Display *,const Window,const char *),
578 XWindowByProperty(Display *,const Window,const Atom);
580 extern MagickExport XFontStruct
581 *XBestFont(Display *,const XResourceInfo *,const MagickBooleanType);
583 extern MagickExport XrmDatabase
584 XGetResourceDatabase(Display *,const char *);
586 extern MagickExport XVisualInfo
587 *XBestVisualInfo(Display *,XStandardColormap *,XResourceInfo *);
589 extern MagickExport XWindows
590 *XInitializeWindows(Display *,XResourceInfo *),
591 *XSetWindows(XWindows *);
593 static inline MagickRealType XPixelIntensity(const XColor *pixel)
598 intensity=0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue;
604 #if defined(__cplusplus) || defined(c_plusplus)