]> git.saurik.com Git - wxWidgets.git/blob - src/xpm/Info.c
Updates for Y positioning
[wxWidgets.git] / src / xpm / Info.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 * Info.c: *
28 * *
29 * XPM library *
30 * Functions related to the XpmInfo structure. *
31 * *
32 * Developed by Arnaud Le Hors *
33 \*****************************************************************************/
34
35 #include "XpmI.h"
36
37 /*
38 * Init returned data to free safely later on
39 */
40 #ifdef __OS2__
41 /* Visual Age cannot deal with old, non-ansi, code */
42 void
43 xpmInitXpmInfo(XpmInfo* info)
44 #else
45 void
46 xpmInitXpmInfo(info)
47 XpmInfo *info;
48 #endif
49 {
50 if (info) {
51 info->hints_cmt = NULL;
52 info->colors_cmt = NULL;
53 info->pixels_cmt = NULL;
54 info->extensions = NULL;
55 info->nextensions = 0;
56 }
57 }
58
59 /*
60 * Free the XpmInfo data which have been allocated
61 */
62 #ifdef __OS2__
63 /* Visual Age cannot deal with old, non-ansi, code */
64 void
65 XpmFreeXpmInfo(XpmInfo* info)
66 #else
67 void
68 XpmFreeXpmInfo(info)
69 XpmInfo *info;
70 #endif
71 {
72 if (info) {
73 if (info->valuemask & XpmComments) {
74 if (info->hints_cmt) {
75 XpmFree(info->hints_cmt);
76 info->hints_cmt = NULL;
77 }
78 if (info->colors_cmt) {
79 XpmFree(info->colors_cmt);
80 info->colors_cmt = NULL;
81 }
82 if (info->pixels_cmt) {
83 XpmFree(info->pixels_cmt);
84 info->pixels_cmt = NULL;
85 }
86 }
87 if (info->valuemask & XpmReturnExtensions && info->nextensions) {
88 XpmFreeExtensions(info->extensions, info->nextensions);
89 info->extensions = NULL;
90 info->nextensions = 0;
91 }
92 info->valuemask = 0;
93 }
94 }
95
96 /*
97 * Set the XpmInfo valuemask to retrieve required info
98 */
99 #ifdef __OS2__
100 /* Visual Age cannot deal with old, non-ansi, code */
101 void xpmSetInfoMask(XpmInfo* info, XpmAttributes* attributes)
102 #else
103 void
104 xpmSetInfoMask(info, attributes)
105 XpmInfo *info;
106 XpmAttributes *attributes;
107 #endif
108 {
109 info->valuemask = 0;
110 if (attributes->valuemask & XpmReturnInfos)
111 info->valuemask |= XpmReturnComments;
112 if (attributes->valuemask & XpmReturnExtensions)
113 info->valuemask |= XpmReturnExtensions;
114 }
115
116 /*
117 * Fill in the XpmInfo with the XpmAttributes
118 */
119 #ifdef __OS2__
120 /* Visual Age cannot deal with old, non-ansi, code */
121 void
122 xpmSetInfo(XpmInfo* info, XpmAttributes* attributes)
123 #else
124 void
125 xpmSetInfo(info, attributes)
126 XpmInfo *info;
127 XpmAttributes *attributes;
128 #endif
129 {
130 info->valuemask = 0;
131 if (attributes->valuemask & XpmInfos) {
132 info->valuemask |= XpmComments | XpmColorTable;
133 info->hints_cmt = attributes->hints_cmt;
134 info->colors_cmt = attributes->colors_cmt;
135 info->pixels_cmt = attributes->pixels_cmt;
136 }
137 if (attributes->valuemask & XpmExtensions) {
138 info->valuemask |= XpmExtensions;
139 info->extensions = attributes->extensions;
140 info->nextensions = attributes->nextensions;
141 }
142 if (attributes->valuemask & XpmHotspot) {
143 info->valuemask |= XpmHotspot;
144 info->x_hotspot = attributes->x_hotspot;
145 info->y_hotspot = attributes->y_hotspot;
146 }
147 }