1/*M///////////////////////////////////////////////////////////////////////////////////////
2//
3//  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
4//
5//  By downloading, copying, installing or using the software you agree to this license.
6//  If you do not agree to this license, do not download, install,
7//  copy or use the software.
8//
9//
10//                           License Agreement
11//                For Open Source Computer Vision Library
12//
13// Copyright (C) 2000-2008, Intel Corporation, all rights reserved.
14// Copyright (C) 2009, Willow Garage Inc., all rights reserved.
15// Third party copyrights are property of their respective owners.
16//
17// Redistribution and use in source and binary forms, with or without modification,
18// are permitted provided that the following conditions are met:
19//
20//   * Redistribution's of source code must retain the above copyright notice,
21//     this list of conditions and the following disclaimer.
22//
23//   * Redistribution's in binary form must reproduce the above copyright notice,
24//     this list of conditions and the following disclaimer in the documentation
25//     and/or other materials provided with the distribution.
26//
27//   * The name of the copyright holders may not be used to endorse or promote products
28//     derived from this software without specific prior written permission.
29//
30// This software is provided by the copyright holders and contributors "as is" and
31// any express or implied warranties, including, but not limited to, the implied
32// warranties of merchantability and fitness for a particular purpose are disclaimed.
33// In no event shall the Intel Corporation or contributors be liable for any direct,
34// indirect, incidental, special, exemplary, or consequential damages
35// (including, but not limited to, procurement of substitute goods or services;
36// loss of use, data, or profits; or business interruption) however caused
37// and on any theory of liability, whether in contract, strict liability,
38// or tort (including negligence or otherwise) arising in any way out of
39// the use of this software, even if advised of the possibility of such damage.
40//
41//M*/
42
43#ifndef _RGBE_HDR_H_
44#define _RGBE_HDR_H_
45
46// posted to http://www.graphics.cornell.edu/~bjw/
47// written by Bruce Walter  (bjw@graphics.cornell.edu)  5/26/95
48// based on code written by Greg Ward
49
50#include <stdio.h>
51
52typedef struct {
53  int valid;            /* indicate which fields are valid */
54  char programtype[16]; /* listed at beginning of file to identify it
55                         * after "#?".  defaults to "RGBE" */
56  float gamma;          /* image has already been gamma corrected with
57                         * given gamma.  defaults to 1.0 (no correction) */
58  float exposure;       /* a value of 1.0 in an image corresponds to
59       * <exposure> watts/steradian/m^2.
60       * defaults to 1.0 */
61} rgbe_header_info;
62
63/* flags indicating which fields in an rgbe_header_info are valid */
64#define RGBE_VALID_PROGRAMTYPE 0x01
65#define RGBE_VALID_GAMMA       0x02
66#define RGBE_VALID_EXPOSURE    0x04
67
68/* return codes for rgbe routines */
69#define RGBE_RETURN_SUCCESS 0
70#define RGBE_RETURN_FAILURE -1
71
72/* read or write headers */
73/* you may set rgbe_header_info to null if you want to */
74int RGBE_WriteHeader(FILE *fp, int width, int height, rgbe_header_info *info);
75int RGBE_ReadHeader(FILE *fp, int *width, int *height, rgbe_header_info *info);
76
77/* read or write pixels */
78/* can read or write pixels in chunks of any size including single pixels*/
79int RGBE_WritePixels(FILE *fp, float *data, int numpixels);
80int RGBE_ReadPixels(FILE *fp, float *data, int numpixels);
81
82/* read or write run length encoded files */
83/* must be called to read or write whole scanlines */
84int RGBE_WritePixels_RLE(FILE *fp, float *data, int scanline_width,
85       int num_scanlines);
86int RGBE_ReadPixels_RLE(FILE *fp, float *data, int scanline_width,
87      int num_scanlines);
88
89#endif/*_RGBE_HDR_H_*/
90