You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
602 lines
11 KiB
602 lines
11 KiB
/* |
|
Copyright 1999-2016 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 |
|
|
|
#include "MagickCore/draw.h" |
|
#include "MagickCore/exception.h" |
|
#include "MagickCore/geometry.h" |
|
#include "MagickCore/nt-base-private.h" |
|
#include "MagickCore/pixel-accessor.h" |
|
#include "MagickCore/quantize.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> |
|
|
|
#if defined(__cplusplus) || defined(c_plusplus) |
|
# define klass c_class |
|
#else |
|
# define klass class |
|
#endif |
|
|
|
#define MaxIconSize 96 |
|
#define MaxNumberPens 11 |
|
#define MaxNumberFonts 11 |
|
#define MaxXWindows 12 |
|
#undef index |
|
|
|
#define ThrowXWindowException(severity,tag,context) \ |
|
{ \ |
|
ExceptionInfo \ |
|
*exception; \ |
|
\ |
|
exception=AcquireExceptionInfo(); \ |
|
(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[MagickPathExtent]; |
|
} 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[MagickPathExtent]; |
|
|
|
struct _XAnnotateInfo |
|
*next, |
|
*previous; |
|
} XAnnotateInfo; |
|
|
|
typedef struct _XPixelInfo |
|
{ |
|
ssize_t |
|
colors; |
|
|
|
unsigned long |
|
*pixels; |
|
|
|
XColor |
|
alpha_color, |
|
foreground_color, |
|
background_color, |
|
border_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; |
|
|
|
size_t |
|
colors; |
|
|
|
MagickBooleanType |
|
close_server, |
|
backdrop; |
|
|
|
char |
|
*background_color, |
|
*border_color; |
|
|
|
char |
|
*client_name; |
|
|
|
XColormapType |
|
colormap; |
|
|
|
unsigned int |
|
border_width; |
|
|
|
size_t |
|
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 |
|
*alpha_color, |
|
*map_type, |
|
*name; |
|
|
|
unsigned int |
|
magnify, |
|
pause; |
|
|
|
char |
|
*pen_colors[MaxNumberPens]; |
|
|
|
char |
|
*text_font, |
|
*title; |
|
|
|
int |
|
quantum; |
|
|
|
unsigned int |
|
update; |
|
|
|
MagickBooleanType |
|
use_pixmap, |
|
use_shared_memory; |
|
|
|
size_t |
|
undo_cache; |
|
|
|
char |
|
*visual_type, |
|
*window_group, |
|
*window_id, |
|
*write_filename; |
|
|
|
Image |
|
*copy_image; |
|
|
|
int |
|
gravity; |
|
|
|
char |
|
home_directory[MagickPathExtent]; |
|
} 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; |
|
|
|
size_t |
|
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; |
|
|
|
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 MagickPrivate Cursor |
|
XMakeCursor(Display *,Window,Colormap,char *,char *); |
|
|
|
extern MagickPrivate int |
|
XCheckDefineCursor(Display *,Window,Cursor); |
|
|
|
extern MagickPrivate MagickBooleanType |
|
XAnnotateImage(Display *,const XPixelInfo *,XAnnotateInfo *,Image *, |
|
ExceptionInfo *), |
|
XComponentGenesis(void), |
|
XDrawImage(Display *,const XPixelInfo *,XDrawInfo *,Image *,ExceptionInfo *), |
|
XGetWindowColor(Display *,XWindows *,char *,ExceptionInfo *), |
|
XMagickProgressMonitor(const char *,const MagickOffsetType, |
|
const MagickSizeType,void *), |
|
XMakeImage(Display *,const XResourceInfo *,XWindowInfo *,Image *,unsigned int, |
|
unsigned int,ExceptionInfo *), |
|
XQueryColorCompliance(const char *,XColor *); |
|
|
|
extern MagickPrivate 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), |
|
XComponentTerminus(void), |
|
XConfigureImageColormap(Display *,XResourceInfo *,XWindows *,Image *, |
|
ExceptionInfo *), |
|
XConstrainWindowPosition(Display *,XWindowInfo *), |
|
XDelay(Display *,const size_t), |
|
XDisplayImageInfo(Display *,const XResourceInfo *,XWindows *,Image *,Image *, |
|
ExceptionInfo *), |
|
XDestroyWindowColors(Display *,Window), |
|
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 *), |
|
XGetPixelInfo(Display *,const XVisualInfo *,const XStandardColormap *, |
|
const XResourceInfo *,Image *,XPixelInfo *), |
|
XGetMapInfo(const XVisualInfo *,const Colormap,XStandardColormap *), |
|
XGetWindowInfo(Display *,XVisualInfo *,XStandardColormap *,XPixelInfo *, |
|
XFontStruct *,XResourceInfo *,XWindowInfo *), |
|
XMakeMagnifyImage(Display *,XWindows *,ExceptionInfo *), |
|
XMakeStandardColormap(Display *,XVisualInfo *,XResourceInfo *,Image *, |
|
XStandardColormap *,XPixelInfo *,ExceptionInfo *), |
|
XMakeWindow(Display *,Window,char **,int,XClassHint *,XWMHints *, |
|
XWindowInfo *), |
|
XQueryPosition(Display *,const Window,int *,int *), |
|
XRefreshWindow(Display *,const XWindowInfo *,const XEvent *), |
|
XSetCursorState(Display *,XWindows *,const MagickStatusType), |
|
XUserPreferences(XResourceInfo *), |
|
XWarning(const ExceptionType,const char *,const char *); |
|
|
|
extern MagickPrivate Window |
|
XWindowByID(Display *,const Window,const size_t), |
|
XWindowByName(Display *,const Window,const char *), |
|
XWindowByProperty(Display *,const Window,const Atom); |
|
|
|
extern MagickPrivate XFontStruct |
|
*XBestFont(Display *,const XResourceInfo *,const MagickBooleanType); |
|
|
|
extern MagickPrivate XVisualInfo |
|
*XBestVisualInfo(Display *,XStandardColormap *,XResourceInfo *); |
|
|
|
extern MagickPrivate XWindows |
|
*XInitializeWindows(Display *,XResourceInfo *), |
|
*XSetWindows(XWindows *); |
|
|
|
extern MagickExport char |
|
*XGetResourceClass(XrmDatabase,const char *,const char *,char *), |
|
*XGetResourceInstance(XrmDatabase,const char *,const char *,const char *), |
|
*XGetScreenDensity(Display *); |
|
|
|
extern MagickExport int |
|
XError(Display *,XErrorEvent *); |
|
|
|
extern MagickExport MagickBooleanType |
|
XRemoteCommand(Display *,const char *,const char *); |
|
|
|
extern MagickExport void |
|
DestroyXResources(void), |
|
XDestroyResourceInfo(XResourceInfo *), |
|
XGetResourceInfo(const ImageInfo *,XrmDatabase,const char *,XResourceInfo *), |
|
XRetainWindowColors(Display *,const Window); |
|
|
|
extern MagickExport XrmDatabase |
|
XGetResourceDatabase(Display *,const char *); |
|
|
|
static inline double XPixelIntensity(const XColor *pixel) |
|
{ |
|
double |
|
intensity; |
|
|
|
if ((pixel->red == pixel->green) && (pixel->green == pixel->blue)) |
|
return((double) pixel->red); |
|
intensity=0.212656*pixel->red+0.715158*pixel->green+0.072186*pixel->blue; |
|
return(intensity); |
|
} |
|
|
|
#endif |
|
|
|
extern MagickPrivate MagickBooleanType |
|
XRenderImage(Image *,const DrawInfo *,const PointInfo *,TypeMetric *, |
|
ExceptionInfo *); |
|
|
|
#if defined(__cplusplus) || defined(c_plusplus) |
|
} |
|
#endif |
|
|
|
#endif
|
|
|