Misc intermediate fixes, more work on these to follow.

--Bug fixes:
-Fix crash when using smooth interpolation in EmberGenome.
-Print error and exit EmberGenome when sequencing if times are not
sorted.

--Code changes:
-Another attempt at Singleton. This reverts the design to what it was
before with a fix to the code that was causing it not to behave like a
singleton should.
This commit is contained in:
Matt Feemster
2016-04-21 15:33:00 -07:00
parent d639921d68
commit cac7308776
9 changed files with 45 additions and 57 deletions

View File

@ -339,7 +339,7 @@ bool EmberGenome(EmberOptions& opt)
{
if (i > 0 && embers[i].m_Time <= embers[i - 1].m_Time)
{
cerr << "Error: control points must be sorted by time, but " << embers[i].m_Time << " <= " << embers[i - 1].m_Time << ", index " << i << ".\n";
cerr << "Error: control points must be sorted by time, but time " << embers[i].m_Time << " <= " << embers[i - 1].m_Time << ", index " << i << ".\n";
return false;
}
@ -405,6 +405,15 @@ bool EmberGenome(EmberOptions& opt)
return false;
}
for (i = 0; i < embers.size(); i++)
{
if (i > 0 && embers[i].m_Time <= embers[i - 1].m_Time)
{
cerr << "Error: control points must be sorted by time, but time " << embers[i].m_Time << " <= " << embers[i - 1].m_Time << ", index " << i << ".\n";
return false;
}
}
if (opt.Enclosed())
cout << "<sequence version=\"EMBER-" << EmberVersion() << "\">\n";
@ -529,8 +538,8 @@ bool EmberGenome(EmberOptions& opt)
oldY = embers[i].m_CenterY;
embers[i].m_FinalRasH = size_t(T(embers[i].m_FinalRasH) / T(opt.Frames()));
embers[i].m_CenterY = embers[i].m_CenterY - ((opt.Frames() - 1) * embers[i].m_FinalRasH) /
(2 * embers[i].m_PixelsPerUnit * pow(T(2.0), embers[i].m_Zoom));
embers[i].m_CenterY += embers[i].m_FinalRasH * opt.Frame() / (embers[i].m_PixelsPerUnit * pow(T(2.0), embers[i].m_Zoom));
(2 * embers[i].m_PixelsPerUnit * std::pow(T(2.0), embers[i].m_Zoom));
embers[i].m_CenterY += embers[i].m_FinalRasH * opt.Frame() / (embers[i].m_PixelsPerUnit * std::pow(T(2.0), embers[i].m_Zoom));
tools.RotateOldCenterBy(embers[i].m_CenterX, embers[i].m_CenterY, oldX, oldY, embers[i].m_Rotate);
if (pTemplate)