Skip to content

Commit 0dbb285

Browse files
committed
Add float type as value and parameter type.
1 parent 6ba5527 commit 0dbb285

9 files changed

Lines changed: 146 additions & 5 deletions

File tree

Sources/NodeEngine/NE_SingleValues.cpp

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ namespace NE
66
{
77

88
DynamicSerializationInfo IntValue::serializationInfo (ObjectId ("{FE348A6B-C5B8-42E2-9AD1-167BE291AEE8}"), ObjectVersion (1), IntValue::CreateSerializableInstance);
9+
DynamicSerializationInfo FloatValue::serializationInfo (ObjectId ("{D7FB2FE0-90E3-4A85-9C0F-9D90AFC8CD8A}"), ObjectVersion (1), FloatValue::CreateSerializableInstance);
910
DynamicSerializationInfo DoubleValue::serializationInfo (ObjectId ("{4D6581DC-7A20-4F2A-A1A3-95BF6DDFFDB6}"), ObjectVersion (1), DoubleValue::CreateSerializableInstance);
1011
DynamicSerializationInfo StringValue::serializationInfo (ObjectId ("{FABFAA20-48F4-4F15-A9FB-FD8F05581F31}"), ObjectVersion (1), StringValue::CreateSerializableInstance);
1112

@@ -29,6 +30,16 @@ int NumberValue::ToInteger (Value* val)
2930
return Value::Cast<NumberValue> (val)->ToInteger ();
3031
}
3132

33+
float NumberValue::ToFloat (const ValuePtr& val)
34+
{
35+
return Value::Cast<NumberValue> (val)->ToFloat ();
36+
}
37+
38+
float NumberValue::ToFloat (Value* val)
39+
{
40+
return Value::Cast<NumberValue> (val)->ToFloat ();
41+
}
42+
3243
double NumberValue::ToDouble (const ValuePtr& val)
3344
{
3445
return Value::Cast<NumberValue> (val)->ToDouble ();
@@ -72,9 +83,14 @@ int IntValue::ToInteger () const
7283
return val;
7384
}
7485

86+
float IntValue::ToFloat () const
87+
{
88+
return (float) val;
89+
}
90+
7591
double IntValue::ToDouble () const
7692
{
77-
return val;
93+
return (float) val;
7894
}
7995

8096
Stream::Status IntValue::Read (InputStream& inputStream)
@@ -93,6 +109,65 @@ Stream::Status IntValue::Write (OutputStream& outputStream) const
93109
return outputStream.GetStatus ();
94110
}
95111

112+
FloatValue::FloatValue () :
113+
FloatValue (0.0f)
114+
{
115+
116+
}
117+
118+
FloatValue::FloatValue (float val) :
119+
NumberValue (),
120+
GenericValue<float> (val)
121+
{
122+
123+
}
124+
125+
FloatValue::~FloatValue ()
126+
{
127+
128+
}
129+
130+
ValuePtr FloatValue::Clone () const
131+
{
132+
return ValuePtr (new FloatValue (val));
133+
}
134+
135+
std::wstring FloatValue::ToString (const StringSettings& stringSettings) const
136+
{
137+
return DoubleToString (val, stringSettings);
138+
}
139+
140+
int FloatValue::ToInteger () const
141+
{
142+
return (int) val;
143+
}
144+
145+
float FloatValue::ToFloat () const
146+
{
147+
return val;
148+
}
149+
150+
double FloatValue::ToDouble () const
151+
{
152+
return (double) val;
153+
}
154+
155+
Stream::Status FloatValue::Read (InputStream& inputStream)
156+
{
157+
ObjectHeader header (inputStream);
158+
SingleValue::Read (inputStream);
159+
inputStream.Read (val);
160+
return inputStream.GetStatus ();
161+
}
162+
163+
Stream::Status FloatValue::Write (OutputStream& outputStream) const
164+
{
165+
ObjectHeader header (outputStream, serializationInfo);
166+
SingleValue::Write (outputStream);
167+
outputStream.Write (val);
168+
return outputStream.GetStatus ();
169+
}
170+
96171
DoubleValue::DoubleValue () :
97172
DoubleValue (0.0)
98173
{
@@ -126,6 +201,11 @@ int DoubleValue::ToInteger () const
126201
return (int) val;
127202
}
128203

204+
float DoubleValue::ToFloat () const
205+
{
206+
return (float) val;
207+
}
208+
129209
double DoubleValue::ToDouble () const
130210
{
131211
return val;

Sources/NodeEngine/NE_SingleValues.hpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,10 +14,13 @@ class NumberValue
1414
virtual ~NumberValue ();
1515

1616
virtual int ToInteger () const = 0;
17+
virtual float ToFloat () const = 0;
1718
virtual double ToDouble () const = 0;
1819

1920
static int ToInteger (const ValuePtr& val);
2021
static int ToInteger (Value* val);
22+
static float ToFloat (const ValuePtr& val);
23+
static float ToFloat (Value* val);
2124
static double ToDouble (const ValuePtr& val);
2225
static double ToDouble (Value* val);
2326
};
@@ -36,6 +39,28 @@ class IntValue : public NumberValue,
3639
virtual std::wstring ToString (const StringSettings& stringSettings) const override;
3740

3841
virtual int ToInteger () const override;
42+
virtual float ToFloat () const override;
43+
virtual double ToDouble () const override;
44+
45+
virtual Stream::Status Read (InputStream& inputStream) override;
46+
virtual Stream::Status Write (OutputStream& outputStream) const override;
47+
};
48+
49+
class FloatValue : public NumberValue,
50+
public GenericValue<float>
51+
{
52+
DYNAMIC_SERIALIZABLE (FloatValue);
53+
54+
public:
55+
FloatValue ();
56+
FloatValue (float val);
57+
virtual ~FloatValue ();
58+
59+
virtual ValuePtr Clone () const override;
60+
virtual std::wstring ToString (const StringSettings& stringSettings) const override;
61+
62+
virtual int ToInteger () const override;
63+
virtual float ToFloat () const override;
3964
virtual double ToDouble () const override;
4065

4166
virtual Stream::Status Read (InputStream& inputStream) override;
@@ -56,6 +81,7 @@ class DoubleValue : public NumberValue,
5681
virtual std::wstring ToString (const StringSettings& stringSettings) const override;
5782

5883
virtual int ToInteger () const override;
84+
virtual float ToFloat () const override;
5985
virtual double ToDouble () const override;
6086

6187
virtual Stream::Status Read (InputStream& inputStream) override;

Sources/NodeEngineTest/SerializableTest.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,12 @@ TEST (ValueTest)
261261
ASSERT (Value::IsType<IntValue> (newIntVal));
262262
ASSERT (IntValue::Get (intVal) == IntValue::Get (newIntVal));
263263

264-
ValuePtr doubleVal (new DoubleValue (16.0));
264+
ValuePtr floatVal (new FloatValue (16.0f));
265+
ValuePtr newFloatVal (WriteAndReadValue (floatVal));
266+
ASSERT (Value::IsType<FloatValue> (newFloatVal));
267+
ASSERT (FloatValue::Get (floatVal) == FloatValue::Get (newFloatVal));
268+
269+
ValuePtr doubleVal (new DoubleValue (17.0));
265270
ValuePtr newDoubleVal (WriteAndReadValue (doubleVal));
266271
ASSERT (Value::IsType<DoubleValue> (newDoubleVal));
267272
ASSERT (DoubleValue::Get (doubleVal) == DoubleValue::Get (newDoubleVal));

Sources/NodeUIEngine/NUIE_NodeCommonParameters.hpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,17 @@ class PositiveIntegerNodeParameter : public TypedNodeParameter<NodeType, NE::Int
131131
}
132132
};
133133

134+
template <typename NodeType>
135+
class FloatNodeParameter : public TypedNodeParameter<NodeType, NE::FloatValue>
136+
{
137+
public:
138+
FloatNodeParameter (const std::wstring& name) :
139+
TypedNodeParameter<NodeType, NE::FloatValue> (name, ParameterType::Float)
140+
{
141+
142+
}
143+
};
144+
134145
template <typename NodeType>
135146
class DoubleNodeParameter : public TypedNodeParameter<NodeType, NE::DoubleValue>
136147
{

Sources/NodeUIEngine/NUIE_NodeParameters.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,10 @@ std::wstring ParameterValueToString (const NE::ValuePtr& value, const ParameterT
8585
if (DBGVERIFY (NE::Value::IsType<NE::IntValue> (value))) {
8686
result = std::to_wstring (NE::IntValue::Get (value));
8787
}
88+
} else if (type == ParameterType::Float) {
89+
if (DBGVERIFY (NE::Value::IsType<NE::FloatValue> (value))) {
90+
result = std::to_wstring (NE::FloatValue::Get (value));
91+
}
8892
} else if (type == ParameterType::Double) {
8993
if (DBGVERIFY (NE::Value::IsType<NE::DoubleValue> (value))) {
9094
result = std::to_wstring (NE::DoubleValue::Get (value));
@@ -103,6 +107,8 @@ NE::ValuePtr StringToParameterValue (const std::wstring& str, const ParameterTyp
103107
result.reset (new NE::StringValue (str));
104108
} else if (type == ParameterType::Integer) {
105109
result.reset (new NE::IntValue (std::stoi (str)));
110+
} else if (type == ParameterType::Float) {
111+
result.reset (new NE::FloatValue (std::stof (str)));
106112
} else if (type == ParameterType::Double) {
107113
result.reset (new NE::DoubleValue (std::stod (str)));
108114
} else {

Sources/NodeUIEngine/NUIE_ParameterInterface.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ ParameterInterface::~ParameterInterface ()
3737
ParameterType ParameterType::Undefined ("undefined");
3838
ParameterType ParameterType::String ("string");
3939
ParameterType ParameterType::Integer ("integer");
40+
ParameterType ParameterType::Float ("float");
4041
ParameterType ParameterType::Double ("double");
4142
ParameterType ParameterType::Enumeration ("enumeration");
4243

Sources/NodeUIEngine/NUIE_ParameterInterface.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class ParameterType
1818
static ParameterType Undefined;
1919
static ParameterType String;
2020
static ParameterType Integer;
21+
static ParameterType Float;
2122
static ParameterType Double;
2223
static ParameterType Enumeration;
2324

Sources/WindowsAppSupport/WAS_ParameterDialog.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,11 @@ bool ParameterDialog::Show (HWND parent, WORD x, WORD y)
127127
std::wstring controlText = NUIE::ParameterValueToString (value, type);
128128
dialog.AddEdit (controlText.c_str (), staticWidth + 2 * padding, currentY, editWidth, controlHeight, controlId);
129129
}
130+
} else if (type == NUIE::ParameterType::Float) {
131+
if (DBGVERIFY (NE::Value::IsType<NE::FloatValue> (value))) {
132+
std::wstring controlText = NUIE::ParameterValueToString (value, type);
133+
dialog.AddEdit (controlText.c_str (), staticWidth + 2 * padding, currentY, editWidth, controlHeight, controlId);
134+
}
130135
} else if (type == NUIE::ParameterType::Double) {
131136
if (DBGVERIFY (NE::Value::IsType<NE::DoubleValue> (value))) {
132137
std::wstring controlText = NUIE::ParameterValueToString (value, type);
@@ -186,7 +191,7 @@ bool ParameterDialog::CollectChangedValues (HWND hwnd)
186191
NUIE::ParameterType type = paramInterface->GetParameterType (paramId);
187192

188193
NE::ValuePtr value;
189-
if (type == NUIE::ParameterType::String || type == NUIE::ParameterType::Integer || type == NUIE::ParameterType::Double) {
194+
if (type == NUIE::ParameterType::String || type == NUIE::ParameterType::Integer || type == NUIE::ParameterType::Float || type == NUIE::ParameterType::Double) {
190195
wchar_t itemText[1024];
191196
GetDlgItemText (hwnd, controlId, itemText, 1024);
192197
value = NUIE::StringToParameterValue (std::wstring (itemText), type);

Sources/wxWidgetsAppSupport/WXAS_ParameterDialog.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,12 @@ ParameterDialog::ParameterDialog (wxWindow* parent, NUIE::ParameterInterfacePtr&
5656
SetTextValidator (textControl, L"0123456789-");
5757
control = textControl;
5858
}
59+
} else if (type == NUIE::ParameterType::Float) {
60+
if (DBGVERIFY (NE::Value::IsType<NE::FloatValue> (value))) {
61+
wxTextCtrl* textControl = new wxTextCtrl (this, controlId, NUIE::ParameterValueToString (value, type));
62+
SetTextValidator (textControl, L"0123456789.-");
63+
control = textControl;
64+
}
5965
} else if (type == NUIE::ParameterType::Double) {
6066
if (DBGVERIFY (NE::Value::IsType<NE::DoubleValue> (value))) {
6167
wxTextCtrl* textControl = new wxTextCtrl (this, controlId, NUIE::ParameterValueToString (value, type));
@@ -102,7 +108,7 @@ void ParameterDialog::OnOkButtonClick (wxCommandEvent& evt)
102108

103109
NUIE::ParameterType type = paramInterface->GetParameterType (i);
104110
NE::ValuePtr value = nullptr;
105-
if (type == NUIE::ParameterType::Integer || type == NUIE::ParameterType::Double || type == NUIE::ParameterType::String) {
111+
if (type == NUIE::ParameterType::Integer || type == NUIE::ParameterType::Float || type == NUIE::ParameterType::Double || type == NUIE::ParameterType::String) {
106112
value = NUIE::StringToParameterValue (uiData.GetStringValue (), type);
107113
} else if (type == NUIE::ParameterType::Enumeration) {
108114
value = NE::ValuePtr (new NE::IntValue (uiData.GetIntegerValue ()));
@@ -134,7 +140,7 @@ void ParameterDialog::OnOkButtonClick (wxCommandEvent& evt)
134140

135141
NUIE::ParameterType type = paramInterface->GetParameterType (i);
136142
NE::ValuePtr value = nullptr;
137-
if (type == NUIE::ParameterType::Integer || type == NUIE::ParameterType::Double || type == NUIE::ParameterType::String) {
143+
if (type == NUIE::ParameterType::Integer || type == NUIE::ParameterType::Float || type == NUIE::ParameterType::Double || type == NUIE::ParameterType::String) {
138144
value = NUIE::StringToParameterValue (uiData.GetStringValue (), type);
139145
} else if (type == NUIE::ParameterType::Enumeration) {
140146
value = NE::ValuePtr (new NE::IntValue (uiData.GetIntegerValue ()));

0 commit comments

Comments
 (0)