]> git.saurik.com Git - wxWidgets.git/blame - src/mac/xpm/Info.c
Added wxYieldIfNeeded
[wxWidgets.git] / src / mac / xpm / Info.c
CommitLineData
0240e8b1
SC
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
2f1ae414 35#include "XpmI.h"
0240e8b1
SC
36
37/*
38 * Init returned data to free safely later on
39 */
40void
41xpmInitXpmInfo(info)
42 XpmInfo *info;
43{
44 if (info) {
45 info->hints_cmt = NULL;
46 info->colors_cmt = NULL;
47 info->pixels_cmt = NULL;
48 info->extensions = NULL;
49 info->nextensions = 0;
50 }
51}
52
53/*
54 * Free the XpmInfo data which have been allocated
55 */
56void
57XpmFreeXpmInfo(info)
58 XpmInfo *info;
59{
60 if (info) {
61 if (info->valuemask & XpmComments) {
62 if (info->hints_cmt) {
63 XpmFree(info->hints_cmt);
64 info->hints_cmt = NULL;
65 }
66 if (info->colors_cmt) {
67 XpmFree(info->colors_cmt);
68 info->colors_cmt = NULL;
69 }
70 if (info->pixels_cmt) {
71 XpmFree(info->pixels_cmt);
72 info->pixels_cmt = NULL;
73 }
74 }
75 if (info->valuemask & XpmReturnExtensions && info->nextensions) {
76 XpmFreeExtensions(info->extensions, info->nextensions);
77 info->extensions = NULL;
78 info->nextensions = 0;
79 }
80 info->valuemask = 0;
81 }
82}
83
84/*
85 * Set the XpmInfo valuemask to retrieve required info
86 */
87void
88xpmSetInfoMask(info, attributes)
89 XpmInfo *info;
90 XpmAttributes *attributes;
91{
92 info->valuemask = 0;
93 if (attributes->valuemask & XpmReturnInfos)
94 info->valuemask |= XpmReturnComments;
95 if (attributes->valuemask & XpmReturnExtensions)
96 info->valuemask |= XpmReturnExtensions;
97}
98
99/*
100 * Fill in the XpmInfo with the XpmAttributes
101 */
102void
103xpmSetInfo(info, attributes)
104 XpmInfo *info;
105 XpmAttributes *attributes;
106{
107 info->valuemask = 0;
108 if (attributes->valuemask & XpmInfos) {
109 info->valuemask |= XpmComments | XpmColorTable;
110 info->hints_cmt = attributes->hints_cmt;
111 info->colors_cmt = attributes->colors_cmt;
112 info->pixels_cmt = attributes->pixels_cmt;
113 }
114 if (attributes->valuemask & XpmExtensions) {
115 info->valuemask |= XpmExtensions;
116 info->extensions = attributes->extensions;
117 info->nextensions = attributes->nextensions;
118 }
119 if (attributes->valuemask & XpmHotspot) {
120 info->valuemask |= XpmHotspot;
121 info->x_hotspot = attributes->x_hotspot;
122 info->y_hotspot = attributes->y_hotspot;
123 }
124}