tga.h
上传用户:tany51
上传日期:2013-06-12
资源大小:1397k
文件大小:4k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. /*
  2.     Copyright (C) 2000  Marco Ziech
  3.     Copyright (C) 2000  Ross Combs (rocombs@cs.nmsu.edu)
  4.     This program is free software; you can redistribute it and/or modify
  5.     it under the terms of the GNU General Public License as published by
  6.     the Free Software Foundation; either version 2 of the License, or
  7.     (at your option) any later version.
  8.     This program is distributed in the hope that it will be useful,
  9.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  10.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  11.     GNU General Public License for more details.
  12.     You should have received a copy of the GNU General Public License
  13.     along with this program; if not, write to the Free Software
  14.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  15. */
  16. #ifndef INCLUDED_TGA_H
  17. #define INCLUDED_TGA_H
  18. #ifdef JUST_NEED_TYPES
  19. # include "compat/uint.h"
  20. #else
  21. # define JUST_NEED_TYPES
  22. # include "compat/uint.h"
  23. # undef JUST_NEED_TYPES
  24. #endif
  25. typedef struct {
  26.         t_uint8  idlen; /* number of bytes in Field 6: 0==no id */
  27.         t_uint8  cmaptype; /* colormap: 0==none, 1==included, <128==TrueVision, >=128==developer */
  28.         t_uint8  imgtype; /* pixel format: <128==TrueVision, >=128==developer */
  29.         t_uint16 cmapfirst; /* first entry offset */
  30.         t_uint16 cmaplen; /* number of colormap entries */
  31.         t_uint8  cmapes; /* size of a single colormap entry in bits, 15 forces 1 attribute bit, 32 forces 8  */
  32.         t_uint16 xorigin; /* x coordinate of lower left hand corner with origin at left of screen */
  33.         t_uint16 yorigin; /* y coordinate of lower left hand corner with origin at bottom of screen */
  34.         t_uint16 width; /* width in pixels */
  35.         t_uint16 height; /* height in pixels */
  36.         t_uint8  bpp; /* bits per pixel, including attributes and alpha channel */
  37.         t_uint8  desc; /* image descriptor: bits 0,1,2,3==num attribute bits per pixel, bit 4==horizontal order, bit 5==vertical order, bits 6,7==interleaving */
  38.         /* field 6, optional */
  39.         /* field 7, colormap data in ARGB, optional, entries are (min(cmapes/3,8)*3+7)/8 bits wide */
  40. t_uint8 *data;
  41. /* field 9, developer area, optional */
  42. /* field 10, extension area, optional */
  43. t_uint32 extareaoff; /* extension area offset, 0==none */
  44. t_uint32 devareaoff; /* developer area offset, 0==none */
  45. /* magic, null terminated */
  46. } t_tgaimg;
  47. typedef enum {
  48. tgaimgtype_empty=0,
  49. tgaimgtype_uncompressed_mapped=1,
  50. tgaimgtype_uncompressed_truecolor=2,
  51. tgaimgtype_uncompressed_monochrome=3,
  52. tgaimgtype_rlecompressed_mapped=9,
  53. tgaimgtype_rlecompressed_truecolor=10,
  54. tgaimgtype_rlecompressed_monochrome=11,
  55. tgaimgtype_huffman_mapped=32,
  56. tgaimgtype_huffman_4pass_mapped=33
  57. } t_tgaimgtype;
  58. typedef enum {
  59. tgadesc_attrbits0=1,
  60. tgadesc_attrbits1=2,
  61. tgadesc_attrbits2=4,
  62. tgadesc_attrbits3=8,
  63. tgadesc_horz=16,
  64. tgadesc_vert=32,
  65. tgadesc_interleave1=64,
  66. tgadesc_interleave2=128
  67. } t_tgadesc;
  68. typedef enum {
  69. tgacmap_none=0,
  70. tgacmap_included=1
  71. } t_tgacmap;
  72. typedef enum {
  73. RLE,
  74. RAW
  75. } t_tgapkttype;
  76. /* "new" style TGA allowing for developer and extension areas must have this magic at
  77.    the end of the file */
  78. #define TGAMAGIC "TRUEVISION-XFILE."
  79. #include <stdio.h>
  80. extern t_tgaimg * new_tgaimg(unsigned int width, unsigned int height, unsigned int bpp, t_tgaimgtype imgtype);
  81. extern int getpixelsize(t_tgaimg const *img);
  82. extern t_tgaimg * load_tgaheader(void);
  83. extern t_tgaimg * load_tga(FILE *f);
  84. extern int write_tga(FILE *f, t_tgaimg *img);
  85. extern void destroy_img(t_tgaimg * img);
  86. extern void print_tga_info(t_tgaimg const * img, FILE * fp);
  87. #endif