]> git.saurik.com Git - wxWidgets.git/blame - src/xpm/Info.c
Fixed toolbar crash for MinGW/Cygwin
[wxWidgets.git] / src / xpm / Info.c
CommitLineData
e6ed776f
GRG
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 */
ea258ad3
DW
40#ifdef __OS2__
41/* Visual Age cannot deal with old, non-ansi, code */
42void
43xpmInitXpmInfo(XpmInfo* info)
44#else
e6ed776f
GRG
45void
46xpmInitXpmInfo(info)
47 XpmInfo *info;
ea258ad3 48#endif
e6ed776f
GRG
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 */
ea258ad3
DW
62#ifdef __OS2__
63/* Visual Age cannot deal with old, non-ansi, code */
64void
65XpmFreeXpmInfo(XpmInfo* info)
66#else
e6ed776f
GRG
67void
68XpmFreeXpmInfo(info)
69 XpmInfo *info;
ea258ad3 70#endif
e6ed776f
GRG
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 */
ea258ad3
DW
99#ifdef __OS2__
100/* Visual Age cannot deal with old, non-ansi, code */
101void xpmSetInfoMask(XpmInfo* info, XpmAttributes* attributes)
102#else
e6ed776f
GRG
103void
104xpmSetInfoMask(info, attributes)
105 XpmInfo *info;
106 XpmAttributes *attributes;
ea258ad3 107#endif
e6ed776f
GRG
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 */
ea258ad3
DW
119#ifdef __OS2__
120/* Visual Age cannot deal with old, non-ansi, code */
121void
122xpmSetInfo(XpmInfo* info, XpmAttributes* attributes)
123#else
e6ed776f
GRG
124void
125xpmSetInfo(info, attributes)
126 XpmInfo *info;
127 XpmAttributes *attributes;
ea258ad3 128#endif
e6ed776f
GRG
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}