Fermat
contrib
cugar
image
tga.h
1
/*
2
* Copyright (c) 2010-2018, NVIDIA Corporation
3
* All rights reserved.
4
*
5
* Redistribution and use in source and binary forms, with or without
6
* modification, are permitted provided that the following conditions are met:
7
* * Redistributions of source code must retain the above copyright
8
* notice, this list of conditions and the following disclaimer.
9
* * Redistributions in binary form must reproduce the above copyright
10
* notice, this list of conditions and the following disclaimer in the
11
* documentation and/or other materials provided with the distribution.
12
* * Neither the name of NVIDIA Corporation nor the
13
* names of its contributors may be used to endorse or promote products
14
* derived from this software without specific prior written permission.
15
*
16
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19
* DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
20
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26
*/
27
28
/*
29
Very simple TGA reading/writing.
30
*/
31
32
33
#ifndef TGA_INCLUDED
34
#define TGA_INCLUDED
35
36
namespace
cugar
{
37
39
// TGA File Header
41
#pragma pack(push,1) // no alignment
42
struct
TGAHeader
43
{
44
unsigned
char
identsize;
// size of ID field that follows 18 byte header (0 usually)
45
unsigned
char
colourmaptype;
// type of colour map 0=none, 1=has palette
46
unsigned
char
imagetype;
// type of image 0=none,1=indexed,2=rgb,3=grey,+8=rle packed
47
48
unsigned
short
colourmapstart;
// first colour map entry in palette
49
unsigned
short
colourmaplength;
// number of colours in palette
50
unsigned
char
colourmapbits;
// number of bits per palette entry 15,16,24,32
51
52
unsigned
short
xstart;
// image x origin
53
unsigned
short
ystart;
// image y origin
54
unsigned
short
width;
// image width in pixels
55
unsigned
short
height;
// image height in pixels
56
unsigned
char
bits;
// image bits per pixel 8,16,24,32
57
unsigned
char
descriptor;
// image descriptor bits (vh flip bits)
58
};
59
#pragma pack(pop)
60
61
enum class
TGAPixels
62
{
63
RGB = 0,
64
BGR = 1,
65
RGBA = 2,
66
BW = 3
67
};
68
69
// Load an uncompressed tga image, 24 or 32 bpp. The pixel memory is allocated
70
// by the routine and must be freed by the caller using delete[].
71
unsigned
char
* load_tga(
const
char
*filename,
TGAHeader
*hdr);
72
73
// Write a TGA to file, 24 bpp, with the specified parameters. rgb indicates
74
// whether pixdata is in RGB or BGR format.
75
bool
write_tga(
const
char
* filename,
int
width,
int
height,
const
unsigned
char
*pixdata, TGAPixels input_type);
76
77
}
// namespace cugar
78
79
#endif
cugar::TGAHeader
Definition:
tga.h:42
cugar
Define a vector_view POD type and plain_view() for std::vector.
Definition:
diff.h:38
Generated by
1.8.13