diff --git a/magick/xwindow-private.h b/magick/xwindow-private.h
new file mode 100644
index 0000000..c11231e
--- /dev/null
+++ b/magick/xwindow-private.h
@@ -0,0 +1,600 @@
+/*
+  Copyright 1999-2009 ImageMagick Studio LLC, a non-profit organization
+  dedicated to making software imaging solutions freely available.
+  
+  You may not use this file except in compliance with the License.
+  obtain a copy of the License at
+  
+    http://www.imagemagick.org/script/license.php
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+  MagickCore X11 window methods.
+*/
+#ifndef _MAGICKCORE_XWINDOW_PRIVATE_H
+#define _MAGICKCORE_XWINDOW_PRIVATE_H
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+#if defined(MAGICKCORE_X11_DELEGATE)
+
+#include <X11/Xos.h>
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/cursorfont.h>
+#include <X11/keysym.h>
+#include <X11/Xresource.h>
+#include <X11/Xutil.h>
+#include "magick/exception.h"
+#include "magick/geometry.h"
+#include "magick/quantize.h"
+
+#if defined(__cplusplus) || defined(c_plusplus)
+# define klass  c_class
+#else
+# define klass  class
+#endif
+
+/*
+  Invoke pre-X11R6 ICCCM routines if XlibSpecificationRelease is not 6.
+*/
+#if XlibSpecificationRelease < 6
+#if !defined(PRE_R6_ICCCM)
+#define PRE_R6_ICCCM
+#endif
+#endif
+/*
+  Invoke pre-X11R5 ICCCM routines if XlibSpecificationRelease is not defined.
+*/
+#if !defined(XlibSpecificationRelease)
+#define PRE_R5_ICCCM
+#endif
+/*
+  Invoke pre-X11R4 ICCCM routines if PWinGravity is not defined.
+*/
+#if !defined(PWinGravity)
+#define PRE_R4_ICCCM
+#endif
+
+#define MaxIconSize  96
+#define MaxNumberPens  11
+#define MaxNumberFonts  11
+#define MaxXWindows  12
+#undef index
+
+#define ThrowXWindowException(severity,tag,context) \
+{ \
+  ExceptionInfo \
+    exception; \
+ \
+  GetExceptionInfo(&exception); \
+  (void) ThrowMagickException(&exception,GetMagickModule(),severity, \
+    tag == (const char *) NULL ? "unknown" : tag,"`%s': %s",context, \
+    strerror(errno)); \
+  CatchException(&exception); \
+  (void) DestroyExceptionInfo(&exception); \
+}
+#define ThrowXWindowFatalException(severity,tag,context) \
+{ \
+   ThrowXWindowException(severity,tag,context); \
+  _exit(1); \
+}
+
+typedef enum
+{
+  ForegroundStencil,
+  BackgroundStencil,
+  OpaqueStencil,
+  TransparentStencil
+} AnnotationStencil;
+
+typedef enum
+{
+  UndefinedElement,
+  PointElement,
+  LineElement,
+  RectangleElement,
+  FillRectangleElement,
+  CircleElement,
+  FillCircleElement,
+  EllipseElement,
+  FillEllipseElement,
+  PolygonElement,
+  FillPolygonElement,
+  ColorElement,
+  MatteElement,
+  TextElement,
+  ImageElement
+} ElementType;
+
+typedef enum
+{
+  UndefinedColormap,
+  PrivateColormap,
+  SharedColormap
+} XColormapType;
+
+typedef struct _XDrawInfo
+{
+  int
+    x,
+    y;
+
+  unsigned int
+    width,
+    height;
+
+  double
+    degrees;
+
+  AnnotationStencil
+    stencil;
+
+  ElementType
+    element;
+
+  Pixmap
+    stipple;
+
+  unsigned int
+    line_width;
+
+  XSegment
+    line_info;
+
+  unsigned int
+    number_coordinates;
+
+  RectangleInfo
+    rectangle_info;
+
+  XPoint
+    *coordinate_info;
+
+  char
+    geometry[MaxTextExtent];
+} XDrawInfo;
+
+typedef enum
+{
+  DefaultState = 0x0000,
+  EscapeState = 0x0001,
+  ExitState = 0x0002,
+  FormerImageState = 0x0004,
+  ModifierState = 0x0008,
+  MontageImageState = 0x0010,
+  NextImageState = 0x0020,
+  RetainColorsState = 0x0040,
+  SuspendTime = 50,
+  UpdateConfigurationState = 0x0080,
+  UpdateRegionState = 0x0100
+} XState;
+
+typedef struct _XAnnotateInfo
+{
+  int
+    x,
+    y;
+
+  unsigned int
+    width,
+    height;
+
+  double
+    degrees;
+
+  XFontStruct
+    *font_info;
+
+  char
+    *text;
+
+  AnnotationStencil
+    stencil;
+
+  char
+    geometry[MaxTextExtent];
+
+  struct _XAnnotateInfo
+    *next,
+    *previous;
+} XAnnotateInfo;
+
+typedef struct _XPixelInfo
+{
+  unsigned long
+    colors,
+    *pixels;
+
+  XColor
+    foreground_color,
+    background_color,
+    border_color,
+    matte_color,
+    highlight_color,
+    shadow_color,
+    depth_color,
+    trough_color,
+    box_color,
+    pen_color,
+    pen_colors[MaxNumberPens];
+
+  GC
+    annotate_context,
+    highlight_context,
+    widget_context;
+
+  unsigned short
+    box_index,
+    pen_index;
+} XPixelInfo;
+
+typedef struct _XResourceInfo
+{
+  XrmDatabase
+    resource_database;
+
+  ImageInfo
+    *image_info;
+
+  QuantizeInfo
+    *quantize_info;
+
+  unsigned long
+    colors;
+
+  MagickBooleanType
+    close_server,
+    backdrop;
+
+  char
+    *background_color,
+    *border_color;
+
+  char
+    *client_name;
+
+  XColormapType
+    colormap;
+
+  unsigned int
+    border_width;
+
+  unsigned long
+    delay;
+
+  MagickBooleanType
+    color_recovery,
+    confirm_exit,
+    confirm_edit;
+
+  char
+    *display_gamma;
+
+  char
+    *font,
+    *font_name[MaxNumberFonts],
+    *foreground_color;
+
+  MagickBooleanType
+    display_warnings,
+    gamma_correct;
+
+  char
+    *icon_geometry;
+
+  MagickBooleanType
+    iconic,
+    immutable;
+
+  char
+    *image_geometry;
+
+  char
+    *map_type,
+    *matte_color,
+    *name;
+
+  unsigned int
+    magnify,
+    pause;
+
+  char
+    *pen_colors[MaxNumberPens];
+
+  char
+    *text_font,
+    *title;
+
+  int
+    quantum;
+
+  unsigned int
+    update;
+
+  MagickBooleanType
+    use_pixmap,
+    use_shared_memory;
+
+  unsigned long
+    undo_cache;
+
+  char
+    *visual_type,
+    *window_group,
+    *window_id,
+    *write_filename;
+
+  Image
+    *copy_image;
+
+  int
+    gravity;
+
+  char
+    home_directory[MaxTextExtent];
+} XResourceInfo;
+
+typedef struct _XWindowInfo
+{
+  Window
+    id;
+
+  Window
+    root;
+
+  Visual
+    *visual;
+
+  unsigned int
+    storage_class,
+    depth;
+
+  XVisualInfo
+    *visual_info;
+
+  XStandardColormap
+    *map_info;
+
+  XPixelInfo
+    *pixel_info;
+
+  XFontStruct
+    *font_info;
+
+  GC
+    annotate_context,
+    highlight_context,
+    widget_context;
+
+  Cursor
+    cursor,
+    busy_cursor;
+
+  char
+    *name,
+    *geometry,
+    *icon_name,
+    *icon_geometry,
+    *crop_geometry;
+
+  unsigned long
+    data,
+    flags;
+
+  int
+    x,
+    y;
+
+  unsigned int
+    width,
+    height,
+    min_width,
+    min_height,
+    width_inc,
+    height_inc,
+    border_width;
+
+  MagickBooleanType
+    use_pixmap,
+    immutable,
+    shape,
+    shared_memory;
+
+  int
+    screen;
+
+  XImage
+    *ximage,
+    *matte_image;
+
+  Pixmap
+    highlight_stipple,
+    shadow_stipple,
+    pixmap,
+    *pixmaps,
+    matte_pixmap,
+    *matte_pixmaps;
+
+  XSetWindowAttributes
+    attributes;
+
+  XWindowChanges
+    window_changes;
+
+  void
+    *segment_info;
+
+  unsigned long
+    mask;
+
+  MagickBooleanType
+    orphan,
+    mapped,
+    stasis;
+
+  Image
+    *image;
+
+  MagickBooleanType
+    destroy;
+} XWindowInfo;
+
+typedef struct _XWindows
+{
+  Display
+    *display;
+
+  XStandardColormap
+    *map_info,
+    *icon_map;
+
+  XVisualInfo
+    *visual_info,
+    *icon_visual;
+
+  XPixelInfo
+    *pixel_info,
+    *icon_pixel;
+
+  XFontStruct
+    *font_info;
+
+  XResourceInfo
+    *icon_resources;
+
+  XClassHint
+    *class_hints;
+
+  XWMHints
+    *manager_hints;
+
+  XWindowInfo
+    context,
+    group_leader,
+    backdrop,
+    icon,
+    image,
+    info,
+    magnify,
+    pan,
+    command,
+    widget,
+    popup;
+
+  Atom
+    wm_protocols,
+    wm_delete_window,
+    wm_take_focus,
+    im_protocols,
+    im_remote_command,
+    im_update_widget,
+    im_update_colormap,
+    im_former_image,
+    im_retain_colors,
+    im_next_image,
+    im_exit,
+    dnd_protocols;
+} XWindows;
+
+extern MagickExport char
+  *XGetResourceClass(XrmDatabase,const char *,const char *,char *),
+  *XGetResourceInstance(XrmDatabase,const char *,const char *,const char *),
+  *XGetScreenDensity(Display *);
+
+extern MagickExport Cursor
+  XMakeCursor(Display *,Window,Colormap,char *,char *);
+
+extern MagickExport int
+  XCheckDefineCursor(Display *,Window,Cursor),
+  XError(Display *,XErrorEvent *);
+
+extern MagickExport MagickBooleanType
+  XAnnotateImage(Display *,const XPixelInfo *,XAnnotateInfo *,Image *),
+  XDrawImage(Display *,const XPixelInfo *,XDrawInfo *,Image *),
+  XGetWindowColor(Display *,XWindows *,char *),
+  XMagickProgressMonitor(const char *,const MagickOffsetType,
+    const MagickSizeType,void *),
+  XMakeImage(Display *,const XResourceInfo *,XWindowInfo *,Image *,unsigned int,
+    unsigned int),
+  XQueryColorDatabase(const char *,XColor *),
+  XRemoteCommand(Display *,const char *,const char *);
+
+extern MagickExport void
+  DestroyXResources(void),
+  XBestIconSize(Display *,XWindowInfo *,Image *),
+  XBestPixel(Display *,const Colormap,XColor *,unsigned int,XColor *),
+  XCheckRefreshWindows(Display *,XWindows *),
+  XClientMessage(Display *,const Window,const Atom,const Atom,const Time),
+  XConfigureImageColormap(Display *,XResourceInfo *,XWindows *,Image *),
+  XConstrainWindowPosition(Display *,XWindowInfo *),
+  XDelay(Display *,const unsigned long),
+  XDestroyResourceInfo(XResourceInfo *),
+  XDestroyWindowColors(Display *,Window),
+  XDisplayImageInfo(Display *,const XResourceInfo *,XWindows *,Image *,Image *),
+  XFreeResources(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
+    XFontStruct *,XResourceInfo *,XWindowInfo *),
+  XFreeStandardColormap(Display *,const XVisualInfo *,XStandardColormap *,
+    XPixelInfo *),
+  XHighlightEllipse(Display *,Window,GC,const RectangleInfo *),
+  XHighlightLine(Display *,Window,GC,const XSegment *),
+  XHighlightRectangle(Display *,Window,GC,const RectangleInfo *),
+  XGetAnnotateInfo(XAnnotateInfo *),
+  XGetPixelPacket(Display *,const XVisualInfo *,const XStandardColormap *,
+    const XResourceInfo *,Image *,XPixelInfo *),
+  XGetMapInfo(const XVisualInfo *,const Colormap,XStandardColormap *),
+  XGetResourceInfo(const ImageInfo *,XrmDatabase,const char *,XResourceInfo *),
+  XGetWindowInfo(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *,
+    XFontStruct *,XResourceInfo *,XWindowInfo *),
+  XMakeMagnifyImage(Display *,XWindows *),
+  XMakeStandardColormap(Display *,XVisualInfo *,XResourceInfo *,Image *,
+    XStandardColormap *,XPixelInfo *),
+  XMakeWindow(Display *,Window,char **,int,XClassHint *,XWMHints *,
+    XWindowInfo *),
+  XQueryPosition(Display *,const Window,int *,int *),
+  XRefreshWindow(Display *,const XWindowInfo *,const XEvent *),
+  XRetainWindowColors(Display *,const Window),
+  XSetCursorState(Display *,XWindows *,const MagickStatusType),
+  XUserPreferences(XResourceInfo *),
+  XWarning(const ExceptionType,const char *,const char *);
+
+extern MagickExport Window
+  XWindowByID(Display *,const Window,const unsigned long),
+  XWindowByName(Display *,const Window,const char *),
+  XWindowByProperty(Display *,const Window,const Atom);
+
+extern MagickExport XFontStruct
+  *XBestFont(Display *,const XResourceInfo *,const MagickBooleanType);
+
+extern MagickExport XrmDatabase
+  XGetResourceDatabase(Display *,const char *);
+
+extern MagickExport XVisualInfo
+  *XBestVisualInfo(Display *,XStandardColormap *,XResourceInfo *);
+
+extern MagickExport XWindows
+  *XInitializeWindows(Display *,XResourceInfo *),
+  *XSetWindows(XWindows *);
+
+static inline MagickRealType XPixelIntensity(const XColor *pixel)
+{
+  MagickRealType
+    intensity;
+
+  intensity=0.299*pixel->red+0.587*pixel->green+0.114*pixel->blue;
+  return(intensity);
+}
+
+#endif
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#endif