1 /*
2  *  pttiff.h
3  *
4  *
5  *  Copyright Helmut Dersch and Max Lyons
6  *
7  *  May 2006
8  *
9  *  This program is free software; you can redistribute it and/or
10  *  modify it under the terms of the GNU General Public
11  *  License as published by the Free Software Foundation; either
12  *  version 2 of the License, or (at your option) any later version.
13  *
14  *  This software is distributed in the hope that it will be useful,
15  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
16  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
17  *  General Public License for more details.
18  *
19  *  You should have received a copy of the GNU General Public License
20  *  along with this software; see the file COPYING.  If not, a copy
21  *  can be downloaded from http://www.gnu.org/licenses/gpl.html, or
22  *  obtained by writing to the Free Software Foundation, Inc.,
23  *  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24  *
25  *
26  *  Author: Max Lyons
27  *
28  */
29 
30 #ifndef __PTtiff_h__
31 
32 #define __PTtiff_h__
33 
34 #include <tiffio.h>
35 #include <tiff.h>
36 #include "file.h"
37 
38 typedef struct
39 {
40     TIFF *tiff;
41 
42     pano_ImageMetadata metadata;
43 
44 } pano_Tiff;
45 
46 
47 void getCropInformationFromTiff(TIFF *tif, CropInfo *c);
48 void setCropInformationInTiff(TIFF *tiffFile, CropInfo *crop_info);
49 
50 //int TiffGetImageParameters(TIFF *tiffFile, pt_tiff_parms *tiffData);
51 //int TiffSetImageParameters(TIFF *tiffFile, pt_tiff_parms *tiffData);
52 
53 PANO13_IMPEX int panoTiffUnCrop(char *inputFile, char *outputFile, pano_cropping_parms *croppingParms);
54 PANO13_IMPEX int panoTiffCrop(char *inputFile, char *outputFile, pano_cropping_parms *croppingParms);
55 
56 PANO13_IMPEX int panoTiffGetCropInformation(pano_Tiff * file);
57 PANO13_IMPEX int panoTiffRowInsideROI(pano_Tiff * image, int row);
58 PANO13_IMPEX int panoTiffIsCropped(pano_Tiff * file);
59 PANO13_IMPEX int panoTiffBytesPerLine(pano_Tiff * file);
60 PANO13_IMPEX int panoTiffSamplesPerPixel(pano_Tiff * file);
61 PANO13_IMPEX int panoTiffBitsPerPixel(pano_Tiff * file);
62 PANO13_IMPEX int panoTiffBytesPerPixel(pano_Tiff * file);
63 PANO13_IMPEX int panoTiffImageHeight(pano_Tiff * file);
64 PANO13_IMPEX int panoTiffImageWidth(pano_Tiff * file);
65 PANO13_IMPEX int panoTiffXOffset(pano_Tiff * file);
66 PANO13_IMPEX int panoTiffYOffset(pano_Tiff * file);
67 PANO13_IMPEX pano_ImageMetadata *panoTiffImageMetadata(pano_Tiff * file);
68 PANO13_IMPEX int panoTiffFullImageWidth(pano_Tiff * file);
69 PANO13_IMPEX int panoTiffFullImageHeight(pano_Tiff * file);
70 PANO13_IMPEX int panoTiffReadScanLineFullSize(pano_Tiff * file, void *buffer, int row);
71 PANO13_IMPEX int panoTiffWriteScanLineFullSize(pano_Tiff * file, void *buffer, int row);
72 PANO13_IMPEX int panoTiffSetCropInformation(pano_Tiff * file);
73 PANO13_IMPEX int panoTiffGetImageProperties(pano_Tiff * tiff);
74 PANO13_IMPEX int panoTiffSetImageProperties(pano_Tiff * file);
75 PANO13_IMPEX void panoTiffClose(pano_Tiff * file);
76 PANO13_IMPEX pano_Tiff *panoTiffCreateUnCropped(char *fileName,
77                                    pano_ImageMetadata * metadata);
78 PANO13_IMPEX pano_Tiff *panoTiffCreate(char *fileName, pano_ImageMetadata * metadata);
79 PANO13_IMPEX pano_Tiff *panoTiffOpen(char *fileName);
80 PANO13_IMPEX int panoTiffReadData(Image * im, pano_Tiff * tif);
81 PANO13_IMPEX int panoTiffWrite(Image * im, char *fileName);
82 PANO13_IMPEX int panoTiffRead(Image * im, char *fileName);
83 
84 PANO13_IMPEX void panoTiffSetErrorHandler(void);
85 PANO13_IMPEX int panoTiffVerifyAreCompatible(fullPath * tiffFiles, int numberImages,
86 				int optionalCheck);
87 PANO13_IMPEX int panoTiffDisplayInfo(char *fileName);
88 
89 void panoImageDispose(Image *im) ;
90 
91 
92 #endif
93