]> git.saurik.com Git - wxWidgets.git/blob - src/xpm/misc.c
Modified CaptureMouse to call DoReleaseMouse if necessary before
[wxWidgets.git] / src / xpm / misc.c
1 /*
2 * Copyright (C) 1989-95 GROUPE BULL
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to
6 * deal in the Software without restriction, including without limitation the
7 * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
8 * sell copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 * GROUPE BULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
18 * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
19 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
20 *
21 * Except as contained in this notice, the name of GROUPE BULL shall not be
22 * used in advertising or otherwise to promote the sale, use or other dealings
23 * in this Software without prior written authorization from GROUPE BULL.
24 */
25
26 /*****************************************************************************\
27 * misc.c: *
28 * *
29 * XPM library *
30 * Miscellaneous utilities *
31 * *
32 * Developed by Arnaud Le Hors *
33 \*****************************************************************************/
34
35 #include "XpmI.h"
36
37 #ifdef NEED_STRDUP
38 /*
39 * in case strdup is not provided by the system here is one
40 * which does the trick
41 */
42 #ifdef __OS2__
43 /* Visual Age cannot deal with old, non-ansi, code */
44 char* xpmstrdup(char* s1)
45 #else
46 char *
47 xpmstrdup(s1)
48 char *s1;
49 #endif
50 {
51 char *s2;
52 int l = strlen(s1) + 1;
53
54 if (s2 = (char *) XpmMalloc(l))
55 strcpy(s2, s1);
56 return s2;
57 }
58
59 #endif
60
61 #ifdef __OS2__
62 /* Visual Age cannot deal with old, non-ansi, code */
63 unsigned int
64 xpmatoui(
65 register char* p
66 , unsigned int l
67 , unsigned int* ui_return
68 )
69 #else
70 unsigned int
71 xpmatoui(p, l, ui_return)
72 register char *p;
73 unsigned int l;
74 unsigned int *ui_return;
75 #endif
76 {
77 register unsigned int n, i;
78
79 n = 0;
80 for (i = 0; i < l; i++)
81 if (*p >= '0' && *p <= '9')
82 n = n * 10 + *p++ - '0';
83 else
84 break;
85
86 if (i != 0 && i == l) {
87 *ui_return = n;
88 return 1;
89 } else
90 return 0;
91 }
92
93 /*
94 * Function returning a character string related to an error code.
95 */
96 #ifdef __OS2__
97 /* Visual Age cannot deal with old, non-ansi, code */
98 char* XpmGetErrorString(int errcode)
99 #else
100 char *
101 XpmGetErrorString(errcode)
102 int errcode;
103 #endif
104 {
105 switch (errcode) {
106 case XpmColorError:
107 return ("XpmColorError");
108 case XpmSuccess:
109 return ("XpmSuccess");
110 case XpmOpenFailed:
111 return ("XpmOpenFailed");
112 case XpmFileInvalid:
113 return ("XpmFileInvalid");
114 case XpmNoMemory:
115 return ("XpmNoMemory");
116 case XpmColorFailed:
117 return ("XpmColorFailed");
118 default:
119 return ("Invalid XpmError");
120 }
121 }
122
123 /*
124 * The following function provides a way to figure out if the linked library is
125 * newer or older than the one with which a program has been first compiled.
126 */
127 int
128 XpmLibraryVersion()
129 {
130 return XpmIncludeVersion;
131 }
132
133
134 /* The following should help people wanting to use their own functions */
135 #ifdef XpmFree
136 #undef XpmFree
137 #endif
138
139 #ifdef __OS2__
140 /* Visual Age cannot deal with old, non-ansi, code */
141 void
142 XpmFree(void* ptr)
143 #else
144 void
145 XpmFree(ptr)
146 void *ptr;
147 #endif
148 {
149 free(ptr);
150 }