MagickCore  7.0.0
PreRvIcccm.c
Go to the documentation of this file.
1 /*
2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
3 % %
4 % %
5 % %
6 % %
7 % IIIII CCCC CCCC CCCC M M %
8 % I C C C MM MM %
9 % I C C C M M M %
10 % I C C C M M %
11 % IIIII CCCC CCCC CCCC M M %
12 % %
13 % MagickCore X11 Compatibility Methods %
14 % %
15 % Software Design %
16 % Cristy %
17 % December 1994 %
18 % %
19 % %
20 % Copyright 1999-2015 ImageMagick Studio LLC, a non-profit organization %
21 % dedicated to making software imaging solutions freely available. %
22 % %
23 % You may not use this file except in compliance with the License. You may %
24 % obtain a copy of the License at %
25 % %
26 % http://www.imagemagick.org/script/license.php %
27 % %
28 % Unless required by applicable law or agreed to in writing, software %
29 % distributed under the License is distributed on an "AS IS" BASIS, %
30 % WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. %
31 % See the License for the specific language governing permissions and %
32 % limitations under the License. %
33 % %
34 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
35 %
36 %
37 */
38 
39 #include "MagickCore/studio.h"
40 #if defined(MAGICKCORE_X11_DELEGATE)
42 
43 #if defined(PRE_R6_ICCCM)
44 /*
45  Compatibility methods for pre X11R6 ICCCM.
46 */
47 Status XInitImage(XImage *ximage)
48 {
49  Display
50  display;
51 
52  ScreenFormat
53  screen_format;
54 
55  XImage
56  *created_ximage,
57  target_ximage;
58 
59  /*
60  Initialize the X image.
61  */
62  screen_format.depth=ximage->depth;
63  screen_format.bits_per_pixel=(int) ximage->bits_per_pixel;
64  display.byte_order=ximage->byte_order;
65  display.bitmap_unit=ximage->bitmap_unit;
66  display.bitmap_bit_order=ximage->bitmap_bit_order;
67  display.pixmap_format=(&screen_format);
68  display.nformats=1;
69  created_ximage=XCreateImage(&display,(Visual *) NULL,ximage->depth,
70  ximage->format,ximage->xoffset,(char *) NULL,ximage->width,ximage->height,
71  ximage->bitmap_pad,ximage->bytes_per_line);
72  if (created_ximage == (XImage *) NULL)
73  return(0);
74  target_ximage=(*ximage);
75  *ximage=(*created_ximage);
76  created_ximage->data=(char *) NULL;
77  XDestroyImage(created_ximage);
78  ximage->red_mask=target_ximage.red_mask;
79  ximage->green_mask=target_ximage.green_mask;
80  ximage->blue_mask=target_ximage.blue_mask;
81  return(1);
82 }
83 #endif
84 
85 #if defined(PRE_R5_ICCCM)
86 /*
87  Compatibility methods for pre X11R5 ICCCM.
88 */
89 void XrmCombineDatabase(XrmDatabase source,XrmDatabase *target,
90  Bool override)
91 {
92  XrmMergeDatabases(source,target);
93 }
94 
95 Status XrmCombineFileDatabase(const char *filename,XrmDatabase *target,
96  Bool override)
97 {
98  XrmDatabase
99  *combined_database,
100  source;
101 
102  source=XrmGetFileDatabase(filename);
103  if (override == MagickFalse)
104  XrmMergeDatabases(source,target);
105  return(1);
106 }
107 
108 XrmDatabase XrmGetDatabase(Display *display)
109 {
110  return(display->db);
111 }
112 
113 char *XSetLocaleModifiers(char *modifiers)
114 {
115  return((char *) NULL);
116 }
117 
118 Bool XSupportsLocale()
119 {
120  return(0);
121 }
122 #endif
123 
124 #if defined(PRE_R4_ICCCM)
125 /*
126  Compatibility methods for pre X11R4 ICCCM.
127 */
128 XClassHint *XAllocClassHint)
129 {
130  return((XClassHint *) AcquireMagickMemory(sizeof(XClassHint)));
131 }
132 
133 XIconSize *XAllocIconSize)
134 {
135  return((XIconSize *) AcquireMagickMemory(sizeof(XIconSize)));
136 }
137 
138 XSizeHints *XAllocSizeHints)
139 {
140  return((XSizeHints *) AcquireMagickMemory(sizeof(XSizeHints)));
141 }
142 
143 Status XReconfigureWMWindow(Display *display,Window window,int screen_number,
144  unsigned int value_mask,XWindowChanges *values)
145 {
146  return(XConfigureWindow(display,window,value_mask,values));
147 }
148 
149 XStandardColormap *XAllocStandardColormap)
150 {
151  return((XStandardColormap *) AcquireMagickMemory(sizeof(XStandardColormap)));
152 }
153 
154 XWMHints *XAllocWMHints)
155 {
156  return((XWMHints *) AcquireMagickMemory(sizeof(XWMHints)));
157 }
158 
159 Status XGetGCValues(Display *display,GC gc,size_t mask,
160  XGCValues *values)
161 {
162  return(MagickTrue);
163 }
164 
165 Status XGetRGBColormaps(Display *display,Window window,
166  XStandardColormap **colormap,int *count,Atom property)
167 {
168  *count=1;
169  return(XGetStandardColormap(display,window,*colormap,property));
170 }
171 
172 Status XGetWMColormapWindows(Display *display,Window window,
173  Window **colormap_windows,int *number_windows)
174 {
175  Atom
176  actual_type,
177  *data,
178  property;
179 
180  int
181  actual_format,
182  status;
183 
184  size_t
185  leftover,
186  number_items;
187 
188  property=XInternAtom(display,"WM_COLORMAP_WINDOWS",MagickFalse);
189  if (property == None)
190  return(MagickFalse);
191  /*
192  Get the window property.
193  */
194  *data=(Atom) NULL;
195  status=XGetWindowProperty(display,window,property,0L,1000000L,MagickFalse,
196  XA_WINDOW,&actual_type,&actual_format,&number_items,&leftover,
197  (unsigned char **) &data);
198  if (status != Success)
199  return(MagickFalse);
200  if ((actual_type != XA_WINDOW) || (actual_format != 32))
201  {
202  if (data != (Atom *) NULL)
203  XFree((char *) data);
204  return(MagickFalse);
205  }
206  *colormap_windows=(Window *) data;
207  *number_windows=(int) number_items;
208  return(MagickTrue);
209 }
210 
211 Status XGetWMName(Display *display,Window window,XTextProperty *text_property)
212 {
213  char
214  *window_name;
215 
216  if (XFetchName(display,window,&window_name) == 0)
217  return(MagickFalse);
218  text_property->value=(unsigned char *) window_name;
219  text_property->encoding=XA_STRING;
220  text_property->format=8;
221  text_property->nitems=strlen(window_name);
222  return(MagickTrue);
223 }
224 
225 char *XResourceManagerString(Display *display)
226 {
227  return(display->xdefaults);
228 }
229 
230 void XrmDestroyDatabase(XrmDatabase database)
231 {
232 }
233 
234 void XSetWMIconName(Display *display,Window window,XTextProperty *property)
235 {
236  XSetIconName(display,window,property->value);
237 }
238 
239 void XSetWMName(Display *display,Window window,XTextProperty *property)
240 {
241  XStoreName(display,window,property->value);
242 }
243 
244 void XSetWMProperties(Display *display,Window window,
245  XTextProperty *window_name,XTextProperty *icon_name,char **argv,
246  int argc,XSizeHints *size_hints,XWMHints *manager_hints,
247  XClassHint *class_hint)
248 {
249  XSetStandardProperties(display,window,window_name->value,icon_name->value,
250  None,argv,argc,size_hints);
251  XSetWMHints(display,window,manager_hints);
252  XSetClassHint(display,window,class_hint);
253 }
254 
255 Status XSetWMProtocols(Display *display,Window window,Atom *protocols,
256  int count)
257 {
258  Atom
259  wm_protocols;
260 
261  wm_protocols=XInternAtom(display,"WM_PROTOCOLS",MagickFalse);
262  XChangeProperty(display,window,wm_protocols,XA_ATOM,32,PropModeReplace,
263  (unsigned char *) protocols,count);
264  return(MagickTrue);
265 }
266 
267 int XStringListToTextProperty(char **argv,int argc,XTextProperty *property)
268 {
269  register int
270  i;
271 
272  register unsigned int
273  number_bytes;
274 
275  XTextProperty
276  protocol;
277 
278  number_bytes=0;
279  for (i=0; i < (ssize_t) argc; i++)
280  number_bytes+=(unsigned int) ((argv[i] ? strlen(argv[i]) : 0)+1);
281  protocol.encoding=XA_STRING;
282  protocol.format=8;
283  protocol.nitems=0;
284  if (number_bytes)
285  protocol.nitems=number_bytes-1;
286  protocol.value=NULL;
287  if (number_bytes <= 0)
288  {
289  protocol.value=(unsigned char *) AcquireQuantumMemory(1UL,
290  sizeof(*protocol.value));
291  if (protocol.value == MagickFalse)
292  return(MagickFalse);
293  *protocol.value='\0';
294  }
295  else
296  {
297  register char
298  *buffer;
299 
300  buffer=(char *) AcquireQuantumMemory(number_bytes,sizeof(*buffer));
301  if (buffer == (char *) NULL)
302  return(MagickFalse);
303  protocol.value=(unsigned char *) buffer;
304  for (i=0; i < (ssize_t) argc; i++)
305  {
306  char
307  *argument;
308 
309  argument=argv[i];
310  if (argument == MagickFalse)
311  *buffer++='\0';
312  else
313  {
314  (void) CopyMagickString(buffer,argument,MagickPathExtent);
315  buffer+=(strlen(argument)+1);
316  }
317  }
318  }
319  *property=protocol;
320  return(MagickTrue);
321 }
322 
323 VisualID XVisualIDFromVisual(Visual *visual)
324 {
325  return(visual->visualid);
326 }
327 
328 Status XWithdrawWindow(Display *display,Window window,int screen)
329 {
330  return(XUnmapWindow(display,window));
331 }
332 
333 int XWMGeometry(Display *display,int screen,char *user_geometry,
334  char *default_geometry,unsigned int border_width,XSizeHints *size_hints,
335  int *x,int *y,int *width,int *height,int *gravity)
336 {
337  int
338  status;
339 
340  status=XGeometry(display,screen,user_geometry,default_geometry,border_width,
341  0,0,0,0,x,y,width,height);
342  *gravity=NorthWestGravity;
343  return(status);
344 }
345 #endif
346 
347 #endif
#define XSetWMProtocols
Definition: vms.h:299
#define XUnmapWindow
Definition: vms.h:330
#define XGetWMName
Definition: vms.h:177
#define XrmGetFileDatabase
Definition: vms.h:567
#define XAllocIconSize
Definition: vms.h:43
#define XWMGeometry
Definition: vms.h:334
#define XInternAtom
Definition: vms.h:189
#define XGetGCValues
Definition: vms.h:159
#define XSupportsLocale
Definition: vms.h:314
#define XrmDestroyDatabase
Definition: vms.h:565
#define XSetWMProperties
Definition: vms.h:298
#define XConfigureWindow
Definition: vms.h:70
#define XInitImage
Definition: vms.h:907
#define XVisualIDFromVisual
Definition: vms.h:333
#define XrmGetDatabase
Definition: vms.h:566
#define XAllocClassHint
Definition: vms.h:40
#define XGetRGBColormaps
Definition: vms.h:170
#define XAllocStandardColormap
Definition: vms.h:46
#define XReconfigureWMWindow
Definition: vms.h:240
#define XrmMergeDatabases
Definition: vms.h:571
#define XrmCombineFileDatabase
Definition: vms.h:564
#define XSetIconName
Definition: vms.h:277
#define XChangeProperty
Definition: vms.h:59
MagickExport void * AcquireQuantumMemory(const size_t count, const size_t quantum)
Definition: memory.c:528
#define XStringListToTextProperty
Definition: vms.h:311
#define XFree
Definition: vms.h:138
#define MagickPathExtent
#define XCreateImage
Definition: vms.h:82
#define XSetWMIconName
Definition: vms.h:295
#define XAllocWMHints
Definition: vms.h:47
#define XStoreName
Definition: vms.h:310
MagickExport size_t CopyMagickString(char *destination, const char *source, const size_t length)
Definition: string.c:740
#define XAllocSizeHints
Definition: vms.h:45
#define XrmCombineDatabase
Definition: vms.h:563
#define XGetWMColormapWindows
Definition: vms.h:175
#define XSetLocaleModifiers
Definition: vms.h:280
#define XSetClassHint
Definition: vms.h:260
#define XGetWindowProperty
Definition: vms.h:180
#define XSetStandardProperties
Definition: vms.h:286
#define XSetWMHints
Definition: vms.h:294
MagickExport void * AcquireMagickMemory(const size_t size)
Definition: memory.c:457
#define XWithdrawWindow
Definition: vms.h:339
#define XSetWMName
Definition: vms.h:296
#define XFetchName
Definition: vms.h:128
#define XResourceManagerString
Definition: vms.h:247