2 * Copyright (C) 1989-95 GROUPE BULL
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:
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
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.
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.
26 /*****************************************************************************\
30 * Functions related to the XpmInfo structure. *
32 * Developed by Arnaud Le Hors *
33 \*****************************************************************************/
41 * Init returned data to free safely later on
44 xpmInitXpmInfo(XpmInfo *info)
47 info->hints_cmt = NULL;
48 info->colors_cmt = NULL;
49 info->pixels_cmt = NULL;
50 info->extensions = NULL;
51 info->nextensions = 0;
56 * Free the XpmInfo data which have been allocated
59 XpmFreeXpmInfo(XpmInfo *info)
62 if (info->valuemask & XpmComments) {
63 if (info->hints_cmt) {
64 XpmFree(info->hints_cmt);
65 info->hints_cmt = NULL;
67 if (info->colors_cmt) {
68 XpmFree(info->colors_cmt);
69 info->colors_cmt = NULL;
71 if (info->pixels_cmt) {
72 XpmFree(info->pixels_cmt);
73 info->pixels_cmt = NULL;
76 if (info->valuemask & XpmReturnExtensions && info->nextensions) {
77 XpmFreeExtensions(info->extensions, info->nextensions);
78 info->extensions = NULL;
79 info->nextensions = 0;
86 * Set the XpmInfo valuemask to retrieve required info
91 XpmAttributes *attributes)
94 if (attributes->valuemask & XpmReturnInfos)
95 info->valuemask |= XpmReturnComments;
96 if (attributes->valuemask & XpmReturnExtensions)
97 info->valuemask |= XpmReturnExtensions;
101 * Fill in the XpmInfo with the XpmAttributes
106 XpmAttributes *attributes)
109 if (attributes->valuemask & XpmInfos) {
110 info->valuemask |= XpmComments | XpmColorTable;
111 info->hints_cmt = attributes->hints_cmt;
112 info->colors_cmt = attributes->colors_cmt;
113 info->pixels_cmt = attributes->pixels_cmt;
115 if (attributes->valuemask & XpmExtensions) {
116 info->valuemask |= XpmExtensions;
117 info->extensions = attributes->extensions;
118 info->nextensions = attributes->nextensions;
120 if (attributes->valuemask & XpmHotspot) {
121 info->valuemask |= XpmHotspot;
122 info->x_hotspot = attributes->x_hotspot;
123 info->y_hotspot = attributes->y_hotspot;