Handle errors on pathologic photogrammetry input
[phoros.git] / imread.h
blob20cf8c55d79ad884c2e9f314b947194300afa3e4
1 /* PHOROS -- Photogrammetric Road Survey */
2 /* Copyright (C) 2017 Bert Burgemeister */
4 /* This program is free software; you can redistribute it and/or modify */
5 /* it under the terms of the GNU General Public License as published by */
6 /* the Free Software Foundation; either version 2 of the License, or */
7 /* (at your option) any later version. */
9 /* This program is distributed in the hope that it will be useful, */
10 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
11 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
12 /* GNU General Public License for more details. */
14 /* You should have received a copy of the GNU General Public License along */
15 /* with this program; if not, write to the Free Software Foundation, Inc., */
16 /* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */
18 #ifndef IMREAD_H
19 #define IMREAD_H
22 #include <malloc.h>
23 #include <math.h>
24 #include <stdbool.h>
25 #include <stdint.h>
26 #include <stdio.h>
27 #include <stdlib.h>
28 #include <string.h>
30 #include <png.h>
31 #include <jpeglib.h>
33 /* Storage for the in-memory PNG */
34 struct png_store
36 char *buffer;
37 size_t size;
40 /*
41 Put a width x height image from the .pictures file at pictures_path into png.
42 The data_size bytes (value of "dataSize=") of the original blob are read beginning at file position start (after PICTUREDATA_BEGIN).
45 int
46 png2mem(char *pictures_path, /* path to a *.pictures file */
47 long long int start, /* file position after "PICTUREDATA_BEGIN" */
48 int data_size, /* value of "dataSize=" */
49 unsigned int width, /* value of "width=" */
50 unsigned int height, /* value of "height=" */
51 unsigned int channels, /* value of "channels=" */
52 int *bayer_pattern,
53 bool demosaic_fast,
54 int compression_mode, /* value of "compressed=" */
55 struct png_store *png, /* result */
56 bool reversep,
57 bool brightenp,
58 double *color_raiser);
60 /*
61 Confirm presence of this library by returning n.
63 int
64 ping(int n);
67 #endif /* IMREAD_H */