tif_extension.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. /*
  2. * Copyright (c) 1988-1997 Sam Leffler
  3. * Copyright (c) 1991-1997 Silicon Graphics, Inc.
  4. *
  5. * Permission to use, copy, modify, distribute, and sell this software and
  6. * its documentation for any purpose is hereby granted without fee, provided
  7. * that (i) the above copyright notices and this permission notice appear in
  8. * all copies of the software and related documentation, and (ii) the names of
  9. * Sam Leffler and Silicon Graphics may not be used in any advertising or
  10. * publicity relating to the software without the specific, prior written
  11. * permission of Sam Leffler and Silicon Graphics.
  12. *
  13. * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
  14. * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
  15. * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  16. *
  17. * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  18. * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  19. * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  20. * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
  21. * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
  22. * OF THIS SOFTWARE.
  23. */
  24. /*
  25. * TIFF Library.
  26. *
  27. * Various routines support external extension of the tag set, and other
  28. * application extension capabilities.
  29. */
  30. #include "tiffiop.h"
  31. int TIFFGetTagListCount( TIFF *tif )
  32. {
  33. TIFFDirectory* td = &tif->tif_dir;
  34. return td->td_customValueCount;
  35. }
  36. uint32 TIFFGetTagListEntry( TIFF *tif, int tag_index )
  37. {
  38. TIFFDirectory* td = &tif->tif_dir;
  39. if( tag_index < 0 || tag_index >= td->td_customValueCount )
  40. return (uint32)(-1);
  41. else
  42. return td->td_customValues[tag_index].info->field_tag;
  43. }
  44. /*
  45. ** This provides read/write access to the TIFFTagMethods within the TIFF
  46. ** structure to application code without giving access to the private
  47. ** TIFF structure.
  48. */
  49. TIFFTagMethods *TIFFAccessTagMethods( TIFF *tif )
  50. {
  51. return &(tif->tif_tagmethods);
  52. }
  53. void *TIFFGetClientInfo( TIFF *tif, const char *name )
  54. {
  55. TIFFClientInfoLink *psLink = tif->tif_clientinfo;
  56. while( psLink != NULL && strcmp(psLink->name,name) != 0 )
  57. psLink = psLink->next;
  58. if( psLink != NULL )
  59. return psLink->data;
  60. else
  61. return NULL;
  62. }
  63. void TIFFSetClientInfo( TIFF *tif, void *data, const char *name )
  64. {
  65. TIFFClientInfoLink *psLink = tif->tif_clientinfo;
  66. /*
  67. ** Do we have an existing link with this name? If so, just
  68. ** set it.
  69. */
  70. while( psLink != NULL && strcmp(psLink->name,name) != 0 )
  71. psLink = psLink->next;
  72. if( psLink != NULL )
  73. {
  74. psLink->data = data;
  75. return;
  76. }
  77. /*
  78. ** Create a new link.
  79. */
  80. psLink = (TIFFClientInfoLink *) _TIFFmalloc(sizeof(TIFFClientInfoLink));
  81. assert (psLink != NULL);
  82. psLink->next = tif->tif_clientinfo;
  83. psLink->name = (char *) _TIFFmalloc((tmsize_t)(strlen(name)+1));
  84. assert (psLink->name != NULL);
  85. strcpy(psLink->name, name);
  86. psLink->data = data;
  87. tif->tif_clientinfo = psLink;
  88. }
  89. /*
  90. * Local Variables:
  91. * mode: c
  92. * c-basic-offset: 8
  93. * fill-column: 78
  94. * End:
  95. */