www.pudn.com > PtOpenGuiSourceCode.zip > xwindow.h


/* 
  X11 Utility Methods for ImageMagick. 
*/ 
#ifndef _MAGICK_XWINDOW_H 
#define _MAGICK_XWINDOW_H 
 
#if defined(__cplusplus) || defined(c_plusplus) 
extern "C" { 
#endif 
 
#if defined(HasX11) 
 
#undef False 
#undef True 
#define XLIB_ILLEGAL_ACCESS  1 
#if !defined(macintosh) 
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#if !defined(vms) 
#include  
#else 
#include "XWDFile.h" 
#endif 
#else 
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#endif 
#if defined(HasShape) 
#include  
#endif 
#if defined(HasSharedMemory) 
#include  
#include  
#include  
#endif 
#if defined(HasDPS) 
# include  
# include  
#endif 
#include "quantize.h" 
#include "PreRvIcccm.h" 
 
#undef index 
#if defined(hpux9) 
#define XFD_SET  int 
#else 
#define XFD_SET  fd_set 
#endif 
 
/* 
  Define declarations. 
*/ 
#define MaxNumberPens  11 
#define MaxNumberFonts  11 
#define MaxIconSize  96 
 
/* 
  Enumeration declarations. 
*/ 
typedef enum 
{ 
#undef DoRed 
  DoRed = 0x0001, 
#undef DoGreen 
  DoGreen = 0x0002, 
#undef DoBlue 
  DoBlue = 0x0004, 
  DoMatte = 0x0008 
} XColorFlags; 
 
typedef enum 
{ 
  ForegroundStencil, 
  BackgroundStencil, 
  OpaqueStencil, 
  TransparentStencil 
} AnnotationStencil; 
 
typedef enum 
{ 
  UndefinedElement = 0, 
  PointElement, 
  LineElement, 
  RectangleElement, 
  FillRectangleElement, 
  CircleElement, 
  FillCircleElement, 
  EllipseElement, 
  FillEllipseElement, 
  PolygonElement, 
  FillPolygonElement, 
  ColorElement, 
  MatteElement, 
  TextElement, 
  ImageElement 
} ElementType; 
 
typedef enum 
{ 
  UndefinedColormap, 
  PrivateColormap, 
  SharedColormap 
} XColormapType; 
 
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 declarations. 
*/ 
typedef struct _DiversityPacket 
{ 
  Quantum 
    red, 
    green, 
    blue; 
 
  unsigned short 
    index; 
 
  unsigned long 
    count; 
} DiversityPacket; 
 
typedef struct _XAnnotateInfo 
{ 
  struct _XAnnotateInfo 
    *previous, 
    *next; 
 
  int 
    x, 
    y; 
 
  unsigned int 
    width, 
    height; 
 
  double 
    degrees; 
 
  XFontStruct 
    *font_info; 
 
  char 
    *text; 
 
  AnnotationStencil 
    stencil; 
 
  char 
    geometry[MaxTextExtent]; 
} XAnnotateInfo; 
 
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 struct _XImportInfo 
{ 
  unsigned int 
    frame, 
    borders, 
    screen, 
    descend, 
    silent; 
} XImportInfo; 
 
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; 
 
  unsigned int 
    close_server, 
    backdrop; 
 
  char 
    *background_color, 
    *border_color; 
 
  char 
    *client_name; 
 
  XColormapType 
    colormap; 
 
  unsigned int 
    border_width, 
    color_recovery, 
    confirm_exit, 
    delay; 
 
  char 
    *display_gamma; 
 
  char 
    *font, 
    *font_name[MaxNumberFonts], 
    *foreground_color; 
 
  unsigned int 
    display_warnings, 
    gamma_correct; 
 
  char 
    *icon_geometry; 
 
  unsigned int 
    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, 
    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; 
 
  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, 
    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; 
 
#if defined(HasSharedMemory) 
  XShmSegmentInfo 
    segment_info[2]; 
#endif 
 
  int 
    mask; 
 
  unsigned int 
    orphan, 
    mapped, 
    stasis; 
 
  Image 
    *image; 
 
  unsigned int 
    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; 
 
/* 
  X utilities methods. 
*/ 
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 Image 
  *XAnimateImages(Display *,XResourceInfo *,char **,const int,Image *), 
  *XDisplayImage(Display *,XResourceInfo *,char **,int,Image **, 
    unsigned long *), 
  *XImportImage(const ImageInfo *,XImportInfo *); 
 
extern MagickExport int 
  XError(Display *,XErrorEvent *); 
 
extern MagickExport unsigned int 
  IsTrue(const char *), 
  XAnnotateImage(Display *,const XPixelInfo *,XAnnotateInfo *,Image *), 
  XDisplayBackgroundImage(Display *,XResourceInfo *,Image *), 
  XDrawImage(Display *,const XPixelInfo *,XDrawInfo *,Image *), 
  XGetWindowColor(Display *,XWindows *,char *), 
  XMakeImage(Display *,const XResourceInfo *,XWindowInfo *,Image *, 
    unsigned int,unsigned int), 
  XMagickMonitor(const char *,const ExtendedSignedIntegralType, 
    const ExtendedUnsignedIntegralType,ExceptionInfo *), 
  XQueryColorDatabase(const char *,XColor *), 
  XRemoteCommand(Display *,const char *,const char *); 
 
extern MagickExport void 
  XAnimateBackgroundImage(Display *,XResourceInfo *,Image *), 
  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), 
  XDestroyWindowColors(Display *,Window), 
  XDisplayImageInfo(Display *,const XResourceInfo *,XWindows *,Image *,Image *), 
  XFreeResources(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *, 
    XFontStruct *,XResourceInfo *,XWindowInfo *), 
  XFreeStandardColormap(Display *,const XVisualInfo *,XStandardColormap *, 
    XPixelInfo *), 
  XGetAnnotateInfo(XAnnotateInfo *), 
  XGetImportInfo(XImportInfo *), 
  XGetMapInfo(const XVisualInfo *,const Colormap,XStandardColormap *), 
  XGetPixelPacket(Display *,const XVisualInfo *,const XStandardColormap *, 
    const XResourceInfo *,Image *,XPixelInfo *), 
  XGetResourceInfo(XrmDatabase,char *,XResourceInfo *), 
  XGetWindowInfo(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *, 
    XFontStruct *,XResourceInfo *,XWindowInfo *), 
  XHighlightEllipse(Display *,Window,GC,const RectangleInfo *), 
  XHighlightLine(Display *,Window,GC,const XSegment *), 
  XHighlightRectangle(Display *,Window,GC,const RectangleInfo *), 
  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), 
  XSignalHandler(int), 
  XSetCursorState(Display *,XWindows *,const unsigned int), 
  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 unsigned int); 
 
extern MagickExport XrmDatabase 
  XGetResourceDatabase(Display *,const char *); 
 
extern MagickExport XVisualInfo 
  *XBestVisualInfo(Display *,XStandardColormap *,XResourceInfo *); 
 
extern MagickExport XWindows 
  *XInitializeWindows(Display *,XResourceInfo *), 
  *XSetWindows(XWindows *); 
 
/* 
  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 
#include "widget.h" 
 
#endif 
 
#if defined(__cplusplus) || defined(c_plusplus) 
} 
#endif 
 
#endif