Move tiffread definitions to separate header files
This commit is contained in:
		
							
								
								
									
										87
									
								
								src/tiffread.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										87
									
								
								src/tiffread.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,87 @@ | ||||
| #ifndef TIFFREAD_H | ||||
| #define TIFFREAD_H | ||||
|  | ||||
| #include "aliases.h" | ||||
|  | ||||
| #define TAG_MAX_COUNT (UINT16_MAX * sizeof(const char *)) | ||||
| // Technically, the type parameter is 2-bytes long, but there aren't so many | ||||
| // types specified in the spec, so UINT8_MAX should be sufficient | ||||
| #define TYPE_MAX_COUNT (UINT8_MAX * sizeof(const char *)) | ||||
|  | ||||
| // clang-format off | ||||
| enum { | ||||
|   TIFF_ORDER_LITTLE_ENDIAN = 0x4949, | ||||
|   TIFF_ORDER_BIG_ENDIAN    = 0x4d4d, | ||||
| }; | ||||
| // clang-format on | ||||
|  | ||||
| typedef struct hdr TiffHdr; | ||||
| struct hdr { | ||||
|   u16 order; | ||||
|   u16 magic; | ||||
|   u32 first_ifd_offset; | ||||
| }; | ||||
|  | ||||
| // clang-format off | ||||
| enum tiff_public_tags { | ||||
|   #include "tiff_public_tags.inc" | ||||
| }; | ||||
|  | ||||
| const char *tag_names[TAG_MAX_COUNT] = { | ||||
|   #define TIFF_TAG_LOOKUP | ||||
|   #include "tiff_public_tags.inc" | ||||
|   #undef TIFF_TAG_LOOKUP | ||||
| }; | ||||
|  | ||||
| enum tiff_field_types { | ||||
|   #include "tiff_field_types.inc" | ||||
| }; | ||||
|  | ||||
| const char *filed_type_names[TYPE_MAX_COUNT] = { | ||||
|   #define TIFF_TYPE_LOOKUP | ||||
|   #include "tiff_field_types.inc" | ||||
|   #undef TIFF_TYPE_LOOKUP | ||||
| }; | ||||
| // clang-format on | ||||
|  | ||||
| typedef struct field TiffField; | ||||
| struct field { | ||||
|   u16 tag; | ||||
|   u16 type; | ||||
|   u32 count; | ||||
|   u32 value_offset; | ||||
| }; | ||||
|  | ||||
| typedef struct IFD TiffIFD; | ||||
| struct IFD { | ||||
|   u16 count; | ||||
|   TiffField *fields; | ||||
|   u32 next_ifd; | ||||
| }; | ||||
|  | ||||
| // clang-format off | ||||
| enum tiff_compression { | ||||
|   TIFF_COMPRESSION_UNCOMPRESSED = 0x0001, | ||||
|   TIFF_COMPRESSION_CCITT_1D     = 0x0002, | ||||
|   TIFF_COMPRESSION_GROUP_3_FAX  = 0x0003, | ||||
|   TIFF_COMPRESSION_GROUP_4_FAX  = 0x0004, | ||||
|   TIFF_COMPRESSION_LZW          = 0x0005, | ||||
|   TIFF_COMPRESSION_JPEG         = 0x0006, | ||||
|   TIFF_COMPRESSION_PACK_BITS    = 0x8005, | ||||
| }; | ||||
| // clang-format on | ||||
|  | ||||
| // clang-format off | ||||
| enum tiff_photometric_interpretation { | ||||
|   TIFF_PHOTOMETRIC_INTERPRETATION_WHITE_IS_ZERO     = 0x0000, | ||||
|   TIFF_PHOTOMETRIC_INTERPRETATION_BLACK_IS_ZERO     = 0x0001, | ||||
|   TIFF_PHOTOMETRIC_INTERPRETATION_RGB               = 0x0002, | ||||
|   TIFF_PHOTOMETRIC_INTERPRETATION_RGB_PALETTE       = 0x0003, | ||||
|   TIFF_PHOTOMETRIC_INTERPRETATION_TRANSPARENCY_MASK = 0x0004, | ||||
|   TIFF_PHOTOMETRIC_INTERPRETATION_CMYK              = 0x0005, | ||||
|   TIFF_PHOTOMETRIC_INTERPRETATION_YCbCr             = 0x0006, | ||||
|   TIFF_PHOTOMETRIC_INTERPRETATION_CIELab            = 0x0008, | ||||
| }; | ||||
| // clang-format on | ||||
|  | ||||
| #endif // !TIFFREAD_H | ||||
		Reference in New Issue
	
	Block a user