Coverage Report

Created: 2023-12-08 06:53

/src/freeimage-svn/FreeImage/trunk/Source/OpenEXR/IlmImf/ImfGenericOutputFile.cpp
Line
Count
Source (jump to first uncovered line)
1
///////////////////////////////////////////////////////////////////////////
2
//
3
// Copyright (c) 2011, 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
#include "ImfGenericOutputFile.h"
36
37
#include <ImfBoxAttribute.h>
38
#include <ImfFloatAttribute.h>
39
#include <ImfTimeCodeAttribute.h>
40
#include <ImfChromaticitiesAttribute.h>
41
42
#include <ImfMisc.h>
43
#include <ImfPartType.h>
44
45
#include "ImfNamespace.h"
46
47
48
OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_ENTER
49
50
    
51
using namespace std;
52
53
54
    
55
void
56
GenericOutputFile::writeMagicNumberAndVersionField (OPENEXR_IMF_INTERNAL_NAMESPACE::OStream& os,
57
                                                    const Header& header)
58
0
{
59
0
    OPENEXR_IMF_INTERNAL_NAMESPACE::Xdr::write <OPENEXR_IMF_INTERNAL_NAMESPACE::StreamIO> (os, MAGIC);
60
61
0
    int version = EXR_VERSION;
62
63
0
    if (header.hasType() && isDeepData(header.type()))
64
0
    {
65
0
        version |= NON_IMAGE_FLAG;
66
0
    }
67
0
    else
68
0
    {
69
        // (TODO) we may want to check something else in function signature
70
        // instead of hasTileDescription()?
71
0
        if (header.hasTileDescription())
72
0
            version |= TILED_FLAG;
73
0
    }
74
75
0
    if (usesLongNames (header))
76
0
        version |= LONG_NAMES_FLAG;
77
78
0
    OPENEXR_IMF_INTERNAL_NAMESPACE::Xdr::write <OPENEXR_IMF_INTERNAL_NAMESPACE::StreamIO> (os, version);
79
0
}
80
81
void
82
GenericOutputFile::writeMagicNumberAndVersionField (OPENEXR_IMF_INTERNAL_NAMESPACE::OStream& os,
83
                                                    const Header * headers,
84
                                                    int parts)
85
0
{
86
0
    OPENEXR_IMF_INTERNAL_NAMESPACE::Xdr::write <OPENEXR_IMF_INTERNAL_NAMESPACE::StreamIO> (os, MAGIC);
87
88
0
    int version = EXR_VERSION;
89
90
0
    if (parts == 1)
91
0
    {
92
0
        if (headers[0].type() == TILEDIMAGE)
93
0
            version |= TILED_FLAG;
94
0
    }
95
0
    else
96
0
    {
97
0
        version |= MULTI_PART_FILE_FLAG;
98
0
    }
99
    
100
0
    for (int i = 0; i < parts; i++)
101
0
    {
102
0
        if (usesLongNames (headers[i]))
103
0
            version |= LONG_NAMES_FLAG;
104
105
0
        if (headers[i].hasType() && isImage(headers[i].type()) == false)
106
0
            version |= NON_IMAGE_FLAG;
107
0
    }
108
109
0
    OPENEXR_IMF_INTERNAL_NAMESPACE::Xdr::write <OPENEXR_IMF_INTERNAL_NAMESPACE::StreamIO> (os, version);
110
0
}
111
112
OPENEXR_IMF_INTERNAL_NAMESPACE_SOURCE_EXIT