<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
#ifndef __TGA_H
#define __TGA_H	1

#include "gd.h"
#include "gdhelpers.h"

#include "gd_intern.h"

typedef struct oTga_ {
	uint8_t  identsize;	// size of ID field that follows 18 uint8_t header (0 usually)
	uint8_t  colormaptype;	// type of colour map 0=none, 1=has palette					[IGNORED] Adrian requested no support
	uint8_t  imagetype;	// type of image 0=none,1=indexed,2=rgb,3=grey,+8=rle packed

	int colormapstart;	// first colour map entry in palette						[IGNORED] Adrian requested no support
	int colormaplength;	// number of colours in palette								[IGNORED] Adrian requested no support
	uint8_t  colormapbits;	// number of bits per palette entry 15,16,24,32				[IGNORED] Adrian requested no support

	int xstart;			// image x origin
	int ystart;			// image y origin
	int width;			// image width in pixels
	int height;			// image height in pixels
	uint8_t  bits;			// image bits per pixel 8,16,24,32
	uint8_t alphabits;		// alpha bits (low 4bits of header 17)
	uint8_t fliph;			// horizontal or vertical
	uint8_t flipv;			// flip
	char *ident;		// identifcation tag string
	int *bitmap;		// bitmap data

} oTga;

#define TGA_TYPE_NO_IMAGE						0
#define TGA_TYPE_INDEXED						1
#define TGA_TYPE_RGB							2
#define TGA_TYPE_GREYSCALE						3
#define TGA_TYPE_INDEXED_RLE					9
#define TGA_TYPE_RGB_RLE						10
#define TGA_TYPE_GREYSCALE_RLE					11
#define TGA_TYPE_INDEXED_HUFFMAN_DELTA_RLE		32
#define TGA_TYPE_RGB_HUFFMAN_DELTA_QUADTREE_RLE	33

#define TGA_BPP_8	8
#define TGA_BPP_16	16
#define TGA_BPP_24	24
#define TGA_BPP_32	32

#define TGA_RLE_FLAG	128

int read_header_tga(gdIOCtx *ctx, oTga *tga);
int read_image_tga(gdIOCtx *ctx, oTga *tga);
void free_tga(oTga *tga);

#endif //__TGA_H
