*/
-#include "lib/colour_conversion.h"
-#include "lib/safe_stringstream.h"
-#include "lib/raw_convert.h"
#include "wx_util.h"
#include "colour_conversion_editor.h"
+#include "lib/colour_conversion.h"
+#include <dcp/locale_convert.h>
#include <dcp/gamma_transfer_function.h>
#include <dcp/modified_gamma_transfer_function.h>
#include <wx/spinctrl.h>
using std::cout;
using boost::shared_ptr;
using boost::dynamic_pointer_cast;
+using dcp::locale_convert;
ColourConversionEditor::ColourConversionEditor (wxWindow* parent, bool yuv)
: wxPanel (parent, wxID_ANY)
_ignore_chromaticity_changed = true;
- SafeStringStream s;
- s.setf (std::ios::fixed, std::ios::floatfield);
- s.precision (6);
-
- s << conversion.red().x;
- _red_x->SetValue (std_to_wx (s.str ()));
-
- s.str ("");
- s << conversion.red().y;
- _red_y->SetValue (std_to_wx (s.str ()));
-
- s.str ("");
- s << conversion.green().x;
- _green_x->SetValue (std_to_wx (s.str ()));
-
- s.str ("");
- s << conversion.green().y;
- _green_y->SetValue (std_to_wx (s.str ()));
-
- s.str ("");
- s << conversion.blue().x;
- _blue_x->SetValue (std_to_wx (s.str ()));
-
- s.str ("");
- s << conversion.blue().y;
- _blue_y->SetValue (std_to_wx (s.str ()));
-
- s.str ("");
- s << conversion.white().x;
- _white_x->SetValue (std_to_wx (s.str ()));
-
- s.str ("");
- s << conversion.white().y;
- _white_y->SetValue (std_to_wx (s.str ()));
+ char buffer[256];
+ snprintf (buffer, sizeof (buffer), "%.6f", conversion.red().x);
+ _red_x->SetValue (std_to_wx (buffer));
+ snprintf (buffer, sizeof (buffer), "%.6f", conversion.red().y);
+ _red_y->SetValue (std_to_wx (buffer));
+ snprintf (buffer, sizeof (buffer), "%.6f", conversion.green().x);
+ _green_x->SetValue (std_to_wx (buffer));
+ snprintf (buffer, sizeof (buffer), "%.6f", conversion.green().y);
+ _green_y->SetValue (std_to_wx (buffer));
+ snprintf (buffer, sizeof (buffer), "%.6f", conversion.blue().x);
+ _blue_x->SetValue (std_to_wx (buffer));
+ snprintf (buffer, sizeof (buffer), "%.6f", conversion.blue().y);
+ _blue_y->SetValue (std_to_wx (buffer));
+ snprintf (buffer, sizeof (buffer), "%.6f", conversion.white().x);
+ _white_x->SetValue (std_to_wx (buffer));
+ snprintf (buffer, sizeof (buffer), "%.6f", conversion.white().y);
+ _white_y->SetValue (std_to_wx (buffer));
_ignore_chromaticity_changed = false;
if (conversion.adjusted_white ()) {
_adjust_white->SetValue (true);
- s.str ("");
- s << conversion.adjusted_white().get().x;
- _adjusted_white_x->SetValue (std_to_wx (s.str ()));
- s.str ("");
- s << conversion.adjusted_white().get().y;
- _adjusted_white_y->SetValue (std_to_wx (s.str ()));
+ snprintf (buffer, sizeof (buffer), "%.6f", conversion.adjusted_white().get().x);
+ _adjusted_white_x->SetValue (std_to_wx (buffer));
+ snprintf (buffer, sizeof (buffer), "%.6f", conversion.adjusted_white().get().y);
+ _adjusted_white_y->SetValue (std_to_wx (buffer));
} else {
_adjust_white->SetValue (false);
}
shared_ptr<dcp::ModifiedGammaTransferFunction> (
new dcp::ModifiedGammaTransferFunction (
_input_power->GetValue (),
- raw_convert<double> (wx_to_std (_input_threshold->GetValue ())),
- raw_convert<double> (wx_to_std (_input_A->GetValue ())),
- raw_convert<double> (wx_to_std (_input_B->GetValue ()))
+ locale_convert<double> (wx_to_std (_input_threshold->GetValue ())),
+ locale_convert<double> (wx_to_std (_input_A->GetValue ())),
+ locale_convert<double> (wx_to_std (_input_B->GetValue ()))
)
)
);
conversion.set_yuv_to_rgb (static_cast<dcp::YUVToRGB> (_yuv_to_rgb->GetSelection ()));
conversion.set_red (
- dcp::Chromaticity (raw_convert<double> (wx_to_std (_red_x->GetValue ())), raw_convert<double> (wx_to_std (_red_y->GetValue ())))
+ dcp::Chromaticity (locale_convert<double> (wx_to_std (_red_x->GetValue ())), locale_convert<double> (wx_to_std (_red_y->GetValue ())))
);
conversion.set_green (
- dcp::Chromaticity (raw_convert<double> (wx_to_std (_green_x->GetValue ())), raw_convert<double> (wx_to_std (_green_y->GetValue ())))
+ dcp::Chromaticity (locale_convert<double> (wx_to_std (_green_x->GetValue ())), locale_convert<double> (wx_to_std (_green_y->GetValue ())))
);
conversion.set_blue (
- dcp::Chromaticity (raw_convert<double> (wx_to_std (_blue_x->GetValue ())), raw_convert<double> (wx_to_std (_blue_y->GetValue ())))
+ dcp::Chromaticity (locale_convert<double> (wx_to_std (_blue_x->GetValue ())), locale_convert<double> (wx_to_std (_blue_y->GetValue ())))
);
conversion.set_white (
- dcp::Chromaticity (raw_convert<double> (wx_to_std (_white_x->GetValue ())), raw_convert<double> (wx_to_std (_white_y->GetValue ())))
+ dcp::Chromaticity (locale_convert<double> (wx_to_std (_white_x->GetValue ())), locale_convert<double> (wx_to_std (_white_y->GetValue ())))
);
if (_adjust_white->GetValue ()) {
conversion.set_adjusted_white (
dcp::Chromaticity (
- raw_convert<double> (wx_to_std (_adjusted_white_x->GetValue ())),
- raw_convert<double> (wx_to_std (_adjusted_white_y->GetValue ()))
+ locale_convert<double> (wx_to_std (_adjusted_white_x->GetValue ())),
+ locale_convert<double> (wx_to_std (_adjusted_white_y->GetValue ()))
)
);
} else {
boost::numeric::ublas::matrix<double> m = get().bradford ();
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
- SafeStringStream s;
- s.setf (std::ios::fixed, std::ios::floatfield);
- s.precision (7);
- s << m (i, j);
- _bradford[i][j]->SetLabel (std_to_wx (s.str ()));
+ char buffer[256];
+ snprintf (buffer, sizeof (buffer), "%.7f", m (i, j));
+ _bradford[i][j]->SetLabel (std_to_wx (buffer));
}
}
}
boost::numeric::ublas::matrix<double> m = get().rgb_to_xyz ();
for (int i = 0; i < 3; ++i) {
for (int j = 0; j < 3; ++j) {
- SafeStringStream s;
- s.setf (std::ios::fixed, std::ios::floatfield);
- s.precision (7);
- s << m (i, j);
- _rgb_to_xyz[i][j]->SetLabel (std_to_wx (s.str ()));
+ char buffer[256];
+ snprintf (buffer, sizeof (buffer), "%.7f", m (i, j));
+ _rgb_to_xyz[i][j]->SetLabel (std_to_wx (buffer));
}
}
}
void
ColourConversionEditor::set_text_ctrl (wxTextCtrl* control, double value)
{
- SafeStringStream s;
- s.precision (7);
- s << value;
- control->SetValue (std_to_wx (s.str ()));
+ char buffer[256];
+ snprintf (buffer, sizeof (buffer), "%.7f", value);
+ control->SetValue (std_to_wx (buffer));
}