forked from ImpulseAdventure/JPEGsnoop
-
Notifications
You must be signed in to change notification settings - Fork 0
/
FileTiff.h
93 lines (74 loc) · 2.89 KB
/
FileTiff.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
// JPEGsnoop - JPEG Image Decoder & Analysis Utility
// Copyright (C) 2017 - Calvin Hass
// http://www.impulseadventure.com/photo/jpeg-snoop.html
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>.
//
// ==========================================================================
// CLASS DESCRIPTION:
// - TIFF file export routines
//
// ==========================================================================
#pragma once
#include "snoop.h"
#define TIFF_TYPE_BYTE 0x00
#define TIFF_TYPE_ASCII 0x01
#define TIFF_TYPE_SHORT 0x03
#define TIFF_TYPE_LONG 0x04
#define TIFF_TYPE_RATIONAL 0x05
#define TIFF_TAG_IMG_WIDTH 0x0100
#define TIFF_TAG_IMG_HEIGHT 0x0101
#define TIFF_TAG_BITS_PER_SAMP 0x0102
#define TIFF_TAG_COMPRESSION 0x0103
#define TIFF_TAG_PHOTOM_INTERP 0x0106
#define TIFF_TAG_STRIP_OFFSETS 0x0111
#define TIFF_TAG_ORIENTATION 0x0112
#define TIFF_TAG_SAMP_PER_PIX 0x0115
#define TIFF_TAG_ROWS_PER_STRIP 0x0116
#define TIFF_TAG_STRIP_BYTE_COUNTS 0x0117
#define TIFF_TAG_X_RESOLUTION 0x011A
#define TIFF_TAG_Y_RESOLUTION 0x011B
#define TIFF_TAG_PLANAR_CONFIG 0x011C
#define TIFF_TAG_RESOLUTION_UNIT 0x0128
// For YCC Images
#define TIFF_TAG_YCC_COEFFS 0x0211
#define TIFF_TAG_YCC_SUBSAMP 0x0212
#define TIFF_TAG_POSITIONING 0x0213
#define TIFF_TAG_REF_BLACK_WHITE 0x0214
class FileTiff
{
public:
FileTiff();
~FileTiff();
void WriteFile(CString sFnameOut,bool bModeYcc,bool bMode16b,void* pBitmap,unsigned nSizeX,unsigned nSizeY);
void WriteIfd(unsigned nSizeX,unsigned nSizeY,bool bModeYcc,bool bMode16b);
void WriteIfdEntrySingle(unsigned short nTag,unsigned short nType,unsigned nValOffset);
void WriteIfdEntryMult(unsigned short nTag,unsigned short nType,unsigned nNumVals,unsigned* nVals);
unsigned GetTypeLen(unsigned nType);
void WriteVal8(BYTE nVal);
void WriteVal16(unsigned short nVal);
void WriteVal32(unsigned int nVal);
void WriteIfdExtraBuf8(BYTE nVal);
void WriteIfdExtraBuf16(unsigned short nVal);
void WriteIfdExtraBuf32(unsigned int nVal);
private:
CFile* m_pFileOutput;
unsigned m_nPtrIfdExtra;
unsigned m_nPtrImg;
unsigned m_nPos;
bool m_bPreCalc;
unsigned short m_nNumIfd;
BYTE* m_pIfdExtraBuf;
unsigned m_nIfdExtraLen;
};