Coverage Report

Created: 2023-12-08 06:53

/src/freeimage-svn/FreeImage/trunk/Source/OpenEXR/IlmImf/ImfPreviewImage.h
Line
Count
Source (jump to first uncovered line)
1
///////////////////////////////////////////////////////////////////////////
2
//
3
// Copyright (c) 2003, Industrial Light & Magic, a division of Lucas
4
// Digital Ltd. LLC
5
// 
6
// All rights reserved.
7
// 
8
// Redistribution and use in source and binary forms, with or without
9
// modification, are permitted provided that the following conditions are
10
// met:
11
// *       Redistributions of source code must retain the above copyright
12
// notice, this list of conditions and the following disclaimer.
13
// *       Redistributions in binary form must reproduce the above
14
// copyright notice, this list of conditions and the following disclaimer
15
// in the documentation and/or other materials provided with the
16
// distribution.
17
// *       Neither the name of Industrial Light & Magic nor the names of
18
// its contributors may be used to endorse or promote products derived
19
// from this software without specific prior written permission. 
20
// 
21
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32
//
33
///////////////////////////////////////////////////////////////////////////
34
35
36
#ifndef INCLUDED_IMF_PREVIEW_IMAGE_H
37
#define INCLUDED_IMF_PREVIEW_IMAGE_H
38
39
#include "ImfNamespace.h"
40
#include "ImfExport.h"
41
42
//-----------------------------------------------------------------------------
43
//
44
//  class PreviewImage -- a usually small, low-dynamic range image,
45
//  that is intended to be stored in an image file's header.
46
//
47
//  struct PreviewRgba -- holds the value of a PreviewImage pixel.
48
//
49
//-----------------------------------------------------------------------------
50
51
52
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_ENTER
53
54
55
struct IMF_EXPORT PreviewRgba
56
{
57
    unsigned char r;  // Red, green and blue components of
58
    unsigned char g;  // the pixel's color; intensity is
59
    unsigned char b;  // proportional to pow (x/255, 2.2),
60
            // where x is r, g, or b.
61
62
    unsigned char a;  // The pixel's alpha; 0 == transparent,
63
        // 255 == opaque.
64
65
    PreviewRgba (unsigned char r = 0,
66
     unsigned char g = 0,
67
     unsigned char b = 0,
68
     unsigned char a = 255)
69
0
  : r(r), g(g), b(b), a(a) {}
70
};
71
72
73
class IMF_EXPORT PreviewImage
74
{
75
  public:
76
77
    //--------------------------------------------------------------------
78
    // Constructor:
79
    //
80
    // PreviewImage(w,h,p) constructs a preview image with w by h pixels
81
    // whose initial values are specified in pixel array p.  The x and y
82
    // coordinates of the pixels in p go from 0 to w-1, and from 0 to h-1.
83
    // The pixel with coordinates (x, y) is at address p + y*w + x.
84
    // Pixel (0, 0) is in the upper left corner of the preview image.
85
    // If p is zero, the pixels in the preview image are initialized with
86
    // (r = 0, b = 0, g = 0, a = 255).
87
    //
88
    //--------------------------------------------------------------------
89
   
90
     PreviewImage (unsigned int width = 0,
91
       unsigned int height = 0,
92
       const PreviewRgba pixels[] = 0);
93
94
    //-----------------------------------------------------
95
    // Copy constructor, destructor and assignment operator
96
    //-----------------------------------------------------
97
98
     PreviewImage (const PreviewImage &other);
99
    ~PreviewImage ();
100
101
    PreviewImage &  operator = (const PreviewImage &other);
102
103
104
    //-----------------------------------------------
105
    // Access to width, height and to the pixel array
106
    //-----------------------------------------------
107
108
0
    unsigned int  width () const  {return _width;}
109
0
    unsigned int  height () const {return _height;}
110
111
0
    PreviewRgba * pixels () {return _pixels;}
112
0
    const PreviewRgba * pixels () const {return _pixels;}
113
114
115
    //----------------------------
116
    // Access to individual pixels
117
    //----------------------------
118
119
    PreviewRgba & pixel (unsigned int x, unsigned int y)
120
0
              {return _pixels[y * _width + x];}
121
122
    const PreviewRgba & pixel (unsigned int x, unsigned int y) const
123
0
              {return _pixels[y * _width + x];}
124
125
  private:
126
127
    unsigned int  _width;
128
    unsigned int  _height;
129
    PreviewRgba * _pixels;
130
};
131
132
133
OPENEXR_IMF_INTERNAL_NAMESPACE_HEADER_EXIT
134
135
#endif