]> git.saurik.com Git - wxWidgets.git/blob - src/mac/xpm/Info.c
Added wxYieldIfNeeded
[wxWidgets.git] / src / mac / 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 void
41 xpmInitXpmInfo(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 */
56 void
57 XpmFreeXpmInfo(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 */
87 void
88 xpmSetInfoMask(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 */
102 void
103 xpmSetInfo(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 }