Skip to content

Commit e28268c

Browse files
committed
Reject all input with sampling != 1
Subsampling is rare, and exrmultiview not commonly used, so this solution seems cleaner: just don't handle subsampling at all. Signed-off-by: Cary Phillips <cary@ilm.com>
1 parent fe22b9b commit e28268c

1 file changed

Lines changed: 8 additions & 73 deletions

File tree

src/bin/exrmultiview/makeMultiView.cpp

Lines changed: 8 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -28,77 +28,6 @@ using namespace IMF;
2828
using namespace IMATH_NAMESPACE;
2929
using namespace std;
3030

31-
namespace {
32-
33-
void
34-
validateDataWindowForChannel (
35-
const Box2i& dataWindow, const Channel& channel, const string& chanName)
36-
{
37-
if (dataWindow.min.x % channel.xSampling)
38-
{
39-
THROW (
40-
IEX_NAMESPACE::ArgExc,
41-
"The minimum x coordinate of the "
42-
"image's data window is not a multiple "
43-
"of the x subsampling factor of "
44-
"the \""
45-
<< chanName << "\" channel.");
46-
}
47-
48-
if (dataWindow.min.y % channel.ySampling)
49-
{
50-
THROW (
51-
IEX_NAMESPACE::ArgExc,
52-
"The minimum y coordinate of the "
53-
"image's data window is not a multiple "
54-
"of the y subsampling factor of "
55-
"the \""
56-
<< chanName << "\" channel.");
57-
}
58-
59-
if ((dataWindow.max.x - dataWindow.min.x + 1) % channel.xSampling)
60-
{
61-
THROW (
62-
IEX_NAMESPACE::ArgExc,
63-
"Number of pixels per row in the "
64-
"image's data window is not a multiple "
65-
"of the x subsampling factor of "
66-
"the \""
67-
<< chanName << "\" channel.");
68-
}
69-
70-
if ((dataWindow.max.y - dataWindow.min.y + 1) % channel.ySampling)
71-
{
72-
THROW (
73-
IEX_NAMESPACE::ArgExc,
74-
"Number of pixels per column in the "
75-
"image's data window is not a multiple "
76-
"of the y subsampling factor of "
77-
"the \""
78-
<< chanName << "\" channel.");
79-
}
80-
}
81-
82-
void
83-
validateUnionDataWindowForInputs (
84-
const Box2i& dataWindow, const vector<const char*>& inFileNames)
85-
{
86-
for (const char* fileName : inFileNames)
87-
{
88-
InputFile in (fileName);
89-
90-
for (ChannelList::ConstIterator j = in.header ().channels ().begin ();
91-
j != in.header ().channels ().end ();
92-
++j)
93-
{
94-
validateDataWindowForChannel (
95-
dataWindow, j.channel (), j.name ());
96-
}
97-
}
98-
}
99-
100-
} // namespace
101-
10231
void
10332
makeMultiView (
10433
const vector<string>& viewNames,
@@ -145,8 +74,6 @@ makeMultiView (
14574
else { d.extendBy (header.dataWindow ()); }
14675
}
14776

148-
validateUnionDataWindowForInputs (d, inFileNames);
149-
15077
image.resize (d);
15178

15279
header.dataWindow () = d;
@@ -180,6 +107,14 @@ makeMultiView (
180107
string inChanName = j.name ();
181108
string outChanName = insertViewName (inChanName, viewNames, i);
182109

110+
if (inChannel.xSampling != 1 || inChannel.ySampling != 1)
111+
THROW (IEX_NAMESPACE::ArgExc,
112+
"no support for subsampling:"
113+
<< " channel " << inChanName
114+
<< " of " << inFileNames[i]
115+
<< " has subsampling " << inChannel.xSampling
116+
<< ", " << inChannel.ySampling);
117+
183118
image.addChannel (outChanName, inChannel);
184119
image.channel (outChanName).black ();
185120

0 commit comments

Comments
 (0)