PageRenderTime 11ms CodeModel.GetById 2ms app.highlight 7ms RepoModel.GetById 1ms app.codeStats 0ms

/src/Info.c

#
C | 125 lines | 75 code | 6 blank | 44 comment | 13 complexity | 5ebdcfe04894430bdea0b08521ea6db7 MD5 | raw file
  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#ifdef HAVE_CONFIG_H
 36#include <config.h>
 37#endif
 38#include "XpmI.h"
 39
 40/*
 41 * Init returned data to free safely later on
 42 */
 43void
 44xpmInitXpmInfo(XpmInfo *info)
 45{
 46    if (info) {
 47	info->hints_cmt = NULL;
 48	info->colors_cmt = NULL;
 49	info->pixels_cmt = NULL;
 50	info->extensions = NULL;
 51	info->nextensions = 0;
 52    }
 53}
 54
 55/*
 56 * Free the XpmInfo data which have been allocated
 57 */
 58void
 59XpmFreeXpmInfo(XpmInfo *info)
 60{
 61    if (info) {
 62	if (info->valuemask & XpmComments) {
 63	    if (info->hints_cmt) {
 64		XpmFree(info->hints_cmt);
 65		info->hints_cmt = NULL;
 66	    }
 67	    if (info->colors_cmt) {
 68		XpmFree(info->colors_cmt);
 69		info->colors_cmt = NULL;
 70	    }
 71	    if (info->pixels_cmt) {
 72		XpmFree(info->pixels_cmt);
 73		info->pixels_cmt = NULL;
 74	    }
 75	}
 76	if (info->valuemask & XpmReturnExtensions && info->nextensions) {
 77	    XpmFreeExtensions(info->extensions, info->nextensions);
 78	    info->extensions = NULL;
 79	    info->nextensions = 0;
 80	}
 81	info->valuemask = 0;
 82    }
 83}
 84
 85/*
 86 * Set the XpmInfo valuemask to retrieve required info
 87 */
 88void
 89xpmSetInfoMask(
 90    XpmInfo		*info,
 91    XpmAttributes	*attributes)
 92{
 93    info->valuemask = 0;
 94    if (attributes->valuemask & XpmReturnInfos)
 95	info->valuemask |= XpmReturnComments;
 96    if (attributes->valuemask & XpmReturnExtensions)
 97	info->valuemask |= XpmReturnExtensions;
 98}
 99
100/*
101 * Fill in the XpmInfo with the XpmAttributes
102 */
103void
104xpmSetInfo(
105    XpmInfo		*info,
106    XpmAttributes	*attributes)
107{
108    info->valuemask = 0;
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;
114    }
115    if (attributes->valuemask & XpmExtensions) {
116	info->valuemask |= XpmExtensions;
117	info->extensions = attributes->extensions;
118	info->nextensions = attributes->nextensions;
119    }
120    if (attributes->valuemask & XpmHotspot) {
121	info->valuemask |= XpmHotspot;
122	info->x_hotspot = attributes->x_hotspot;
123	info->y_hotspot = attributes->y_hotspot;
124    }
125}