home *** CD-ROM | disk | FTP | other *** search
/ PC-Online 1996 May / PCOnline_05_1996.bin / linux / source / x / x11r6-ch / xpm-3.4 / xpm-3 / xpm-3.4c / lib / Info.c < prev    next >
C/C++ Source or Header  |  1994-06-06  |  4KB  |  125 lines

  1. /*
  2.  * Copyright (C) 1989-94 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 "xpmP.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. }
  125.