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 "magick/exception.h"
35 #include "magick/geometry.h"
36 #include "magick/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 XComponentGenesis(void),
523 XDrawImage(Display *,const XPixelInfo *,XDrawInfo *,Image *),
524 XGetWindowColor(Display *,XWindows *,char *),
525 XMagickProgressMonitor(const char *,const MagickOffsetType,
526 const MagickSizeType,void *),
527 XMakeImage(Display *,const XResourceInfo *,XWindowInfo *,Image *,unsigned int,
529 XQueryColorDatabase(const char *,XColor *),
530 XRemoteCommand(Display *,const char *,const char *);
532 extern MagickExport void
533 DestroyXResources(void),
534 XBestIconSize(Display *,XWindowInfo *,Image *),
535 XBestPixel(Display *,const Colormap,XColor *,unsigned int,XColor *),
536 XCheckRefreshWindows(Display *,XWindows *),
537 XClientMessage(Display *,const Window,const Atom,const Atom,const Time),
538 XComponentTerminus(void),
539 XConfigureImageColormap(Display *,XResourceInfo *,XWindows *,Image *),
540 XConstrainWindowPosition(Display *,XWindowInfo *),
541 XDelay(Display *,const size_t),
542 XDisplayImageInfo(Display *,const XResourceInfo *,XWindows *,Image *,Image *),
543 XDestroyResourceInfo(XResourceInfo *),
544 XDestroyWindowColors(Display *,Window),
545 XFreeResources(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
546 XFontStruct *,XResourceInfo *,XWindowInfo *),
547 XFreeStandardColormap(Display *,const XVisualInfo *,XStandardColormap *,
549 XHighlightEllipse(Display *,Window,GC,const RectangleInfo *),
550 XHighlightLine(Display *,Window,GC,const XSegment *),
551 XHighlightRectangle(Display *,Window,GC,const RectangleInfo *),
552 XGetAnnotateInfo(XAnnotateInfo *),
553 XGetPixelPacket(Display *,const XVisualInfo *,const XStandardColormap *,
554 const XResourceInfo *,Image *,XPixelInfo *),
555 XGetMapInfo(const XVisualInfo *,const Colormap,XStandardColormap *),
556 XGetResourceInfo(const ImageInfo *,XrmDatabase,const char *,XResourceInfo *),
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 XRetainWindowColors(Display *,const Window),
567 XSetCursorState(Display *,XWindows *,const MagickStatusType),
568 XUserPreferences(XResourceInfo *),
569 XWarning(const ExceptionType,const char *,const char *);
571 extern MagickExport Window
572 XWindowByID(Display *,const Window,const size_t),
573 XWindowByName(Display *,const Window,const char *),
574 XWindowByProperty(Display *,const Window,const Atom);
576 extern MagickExport XFontStruct
577 *XBestFont(Display *,const XResourceInfo *,const MagickBooleanType);
579 extern MagickExport XrmDatabase
580 XGetResourceDatabase(Display *,const char *);
582 extern MagickExport XVisualInfo
583 *XBestVisualInfo(Display *,XStandardColormap *,XResourceInfo *);
585 extern MagickExport XWindows
586 *XInitializeWindows(Display *,XResourceInfo *),
587 *XSetWindows(XWindows *);
589 static inline MagickRealType XPixelIntensity(const XColor *pixel)
594 intensity=0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue;
600 #if defined(__cplusplus) || defined(c_plusplus)