Large numbers now being handled correctly...
- long long ints being used where necessary - Commas being added to numbers larger than 999 - No more values being rendered as 1.5332e+012
This commit is contained in:
@@ -116,7 +116,25 @@ void DataManager::onMessage( Spacebrew::Message & m )
|
||||
}
|
||||
if (data[i].substr(0, 6) == "value:")
|
||||
{
|
||||
dataObject.value = ofToFloat(data[i].substr(6, -1).c_str());
|
||||
string valString = data[i].substr(6, -1).c_str();
|
||||
dataObject.value = ofToFloat(valString);
|
||||
|
||||
if (dataObject.value > 1000000000)
|
||||
{
|
||||
// create long long int
|
||||
stringstream sstr(valString);
|
||||
__int64 val;
|
||||
sstr >> val;
|
||||
dataObject.longlongIntValue = val;
|
||||
dataObject.stringValue = addCommasToNumberString(valString);
|
||||
}
|
||||
else
|
||||
{
|
||||
dataObject.longlongIntValue = 0;
|
||||
dataObject.stringValue = (dataObject.value > 999) ? addCommasToNumberString(valString) : valString;
|
||||
}
|
||||
|
||||
printf("\ndataObject.longlongValue = %llli \n\n",dataObject.longlongIntValue);
|
||||
}
|
||||
if (data[i].substr(0, 4) == "min:")
|
||||
{
|
||||
@@ -129,7 +147,6 @@ void DataManager::onMessage( Spacebrew::Message & m )
|
||||
if (data[i].substr(0, 5) == "unit:")
|
||||
{
|
||||
dataObject.unitMeasure = data[i].substr(5, -1).c_str();
|
||||
printf("------------ dataObject.unitMeasure = %s", data[i].substr(5, -1).c_str());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -180,4 +197,40 @@ vector<string> DataManager::explode(const string &delimiter, const string &str)
|
||||
}
|
||||
arr.push_back( str.substr(k, i-k) );
|
||||
return arr;
|
||||
}
|
||||
|
||||
|
||||
string DataManager::addCommasToNumberString(string num)
|
||||
{
|
||||
printf("adding commas \n");
|
||||
string temp;
|
||||
string integral = num;
|
||||
string fractional;
|
||||
int decimalLocation = integral.find('.');
|
||||
|
||||
if (decimalLocation != -1)
|
||||
{
|
||||
integral = integral.substr(0 , decimalLocation);
|
||||
fractional = integral.substr(decimalLocation);
|
||||
}
|
||||
else
|
||||
{
|
||||
integral = num;
|
||||
fractional = "";
|
||||
}
|
||||
|
||||
int endstring = integral.length();
|
||||
int i;
|
||||
for(i = endstring - 3; i >= 0; i -= 3) {
|
||||
if (i > 0) {
|
||||
temp = ","+ integral.substr(i, 3) + temp;
|
||||
} else {
|
||||
temp = integral.substr(i, 3) + temp;
|
||||
}
|
||||
}
|
||||
if (i < 0) {
|
||||
temp = integral.substr(0, 3+i) + temp;
|
||||
}
|
||||
printf("adding commas - temp = %s\n", temp.c_str());
|
||||
return temp + fractional;
|
||||
}
|
||||
@@ -13,6 +13,8 @@ struct DataObject
|
||||
{
|
||||
string info;
|
||||
float value;
|
||||
string stringValue;
|
||||
long long int longlongIntValue;
|
||||
float min;
|
||||
float max;
|
||||
string unitMeasure;
|
||||
@@ -27,6 +29,7 @@ class DataManager
|
||||
void update();
|
||||
void draw();
|
||||
vector<string> explode( const string &delimiter, const string &str);
|
||||
string addCommasToNumberString(string num);
|
||||
|
||||
// listen to spacebrew Messages
|
||||
void onMessage( Spacebrew::Message & m );
|
||||
|
||||
@@ -82,11 +82,11 @@ void Scene::drawGraphValues()
|
||||
ofSetColor(graphTextColour[0], graphTextColour[1], graphTextColour[2], graphTextColour[3]);
|
||||
text.setSize(graphTextSize);
|
||||
text.drawString(
|
||||
ofToString(activeGraph->publisher0Data.back().value) + " " + activeGraph->publisher0Data[activeGraph->publisher0Data.size() - 1].unitMeasure,
|
||||
activeGraph->publisher0Data.back().stringValue + " " + activeGraph->publisher0Data.back().unitMeasure,
|
||||
val0.x + 10,
|
||||
val0.y);
|
||||
text.drawString(
|
||||
ofToString(activeGraph->publisher1Data.back().value) + " " + activeGraph->publisher1Data[activeGraph->publisher1Data.size() - 1].unitMeasure,
|
||||
activeGraph->publisher1Data.back().stringValue + " " + activeGraph->publisher1Data.back().unitMeasure,
|
||||
val1.x + 10,
|
||||
val1.y);
|
||||
ofPopStyle();
|
||||
@@ -156,30 +156,70 @@ void Scene::drawHUDCopy()
|
||||
vector<DataObject> *p0Data = &activeGraph->publisher0Data;
|
||||
vector<DataObject> *p1Data = &activeGraph->publisher1Data;
|
||||
|
||||
|
||||
|
||||
|
||||
int amountToAverage = MIN(p0Data->size(), averageAmount);
|
||||
if (p0Data->size() > 2)
|
||||
{
|
||||
float average0 = 0;
|
||||
for (int i = 0; i < (int)amountToAverage; i++)
|
||||
average0 += p0Data->at(p0Data->size() - i - 1).value;
|
||||
average0 /= (int)amountToAverage;
|
||||
if (p0Data->back().longlongIntValue > 0)
|
||||
{
|
||||
long long int average0 = 0;
|
||||
for (int i = 0; i < (int)amountToAverage; i++)
|
||||
average0 += p0Data->at(p0Data->size() - i - 1).value;
|
||||
average0 /= (int)amountToAverage;
|
||||
|
||||
// (p0Data->back() + p0Data->at(p0Data->size() - 2) + p0Data->at(p0Data->size() - 2))
|
||||
blStr = "Increase: " + ofToString(p0Data->back().value - p0Data->at(p0Data->size() - 2).value) + "\n" +
|
||||
"Current Value: " + ofToString(p0Data->back().value) + "\n" +
|
||||
"Running average: " + ofToString(average0);
|
||||
drawTextBox(blStr, "BOTTOM LEFT");
|
||||
|
||||
string valueWithCommas = addCommasToNumberString(ofToString(average0));
|
||||
|
||||
float average1 = 0;
|
||||
for (int i = 0; i < (int)amountToAverage; i++)
|
||||
average1 += p1Data->at(p1Data->size() - i - 1).value;
|
||||
average1 /= (int)amountToAverage;
|
||||
blStr = "Increase: " + ofToString(p0Data->back().value - p0Data->at(p0Data->size() - 2).value) + "\n" +
|
||||
"Current Value: " + p0Data->back().stringValue + "\n" +
|
||||
"Running average: " + valueWithCommas;
|
||||
drawTextBox(blStr, "BOTTOM LEFT");
|
||||
}
|
||||
else
|
||||
{
|
||||
float average0 = 0;
|
||||
for (int i = 0; i < (int)amountToAverage; i++)
|
||||
average0 += p0Data->at(p0Data->size() - i - 1).value;
|
||||
average0 /= (int)amountToAverage;
|
||||
|
||||
string valueWithCommas = (average0 > 999) ? addCommasToNumberString(ofToString(average0)) : ofToString(average0);
|
||||
|
||||
brStr = "Increase: " + ofToString(p1Data->back().value - p1Data->at(p1Data->size() - 2).value) + "\n" +
|
||||
"Current Value: " + ofToString(p1Data->back().value) + "\n" +
|
||||
"Running average: " + ofToString(average1);
|
||||
drawTextBox(brStr, "BOTTOM RIGHT");
|
||||
blStr = "Increase: " + ofToString(p0Data->back().value - p0Data->at(p0Data->size() - 2).value) + "\n" +
|
||||
"Current Value: " + p0Data->back().stringValue + "\n" +
|
||||
"Running average: " + valueWithCommas;
|
||||
drawTextBox(blStr, "BOTTOM LEFT");
|
||||
}
|
||||
|
||||
|
||||
if (p1Data->back().longlongIntValue > 0)
|
||||
{
|
||||
float average1 = 0;
|
||||
for (int i = 0; i < (int)amountToAverage; i++)
|
||||
average1 += p1Data->at(p1Data->size() - i - 1).value;
|
||||
average1 /= (int)amountToAverage;
|
||||
|
||||
string valueWithCommas = addCommasToNumberString(ofToString(average1));
|
||||
|
||||
brStr = "Increase: " + ofToString(p1Data->back().value - p1Data->at(p1Data->size() - 2).value) + "\n" +
|
||||
"Current Value: " + p1Data->back().stringValue + "\n" +
|
||||
"Running average: " + valueWithCommas;
|
||||
drawTextBox(brStr, "BOTTOM RIGHT");
|
||||
}
|
||||
else
|
||||
{
|
||||
long long int average1 = 0;
|
||||
for (int i = 0; i < (int)amountToAverage; i++)
|
||||
average1 += p1Data->at(p1Data->size() - i - 1).value;
|
||||
average1 /= (int)amountToAverage;
|
||||
|
||||
string valueWithCommas = (average1 > 999) ? addCommasToNumberString(ofToString(average1)) : ofToString(average1);
|
||||
|
||||
brStr = "Increase: " + ofToString(p1Data->back().value - p1Data->at(p1Data->size() - 2).value) + "\n" +
|
||||
"Current Value: " + p1Data->back().stringValue + "\n" +
|
||||
"Running average: " + valueWithCommas;
|
||||
drawTextBox(brStr, "BOTTOM RIGHT");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -247,14 +287,13 @@ void Scene::addNewData(vector<DataObject> newData)
|
||||
bodyGraph.addNewData(newData);
|
||||
separateBodyGraph.addNewData(newData);
|
||||
|
||||
tlStr = newData[0].info + newData[0].unitMeasure + "\n" + ofToString(newData[0].value);
|
||||
trStr = newData[1].info + newData[1].unitMeasure + "\n" + ofToString(newData[1].value);
|
||||
tlStr = newData[0].info + newData[0].unitMeasure + "\n" + ofToString(newData[0].stringValue);
|
||||
trStr = newData[1].info + newData[1].unitMeasure + "\n" + ofToString(newData[1].stringValue);
|
||||
}
|
||||
|
||||
|
||||
void Scene::keyPressed(int key)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -263,4 +302,44 @@ void Scene::clearGraphData()
|
||||
barGraph.clear();
|
||||
bodyGraph.clear();
|
||||
separateBodyGraph.clear();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
string Scene::addCommasToNumberString(string num)
|
||||
{
|
||||
string temp;
|
||||
string integral = num;
|
||||
string fractional;
|
||||
int decimalLocation = integral.find('.');
|
||||
|
||||
if (decimalLocation != -1)
|
||||
{
|
||||
integral = integral.substr(0 , decimalLocation);
|
||||
fractional = integral.substr(decimalLocation);
|
||||
}
|
||||
else
|
||||
{
|
||||
integral = num;
|
||||
fractional = "";
|
||||
}
|
||||
|
||||
int endstring = integral.length();
|
||||
int i;
|
||||
for(i = endstring - 3; i >= 0; i -= 3) {
|
||||
if (i > 0) {
|
||||
temp = ","+ integral.substr(i, 3) + temp;
|
||||
} else {
|
||||
temp = integral.substr(i, 3) + temp;
|
||||
}
|
||||
}
|
||||
if (i < 0) {
|
||||
temp = integral.substr(0, 3+i) + temp;
|
||||
}
|
||||
return temp + fractional;
|
||||
}
|
||||
@@ -1,10 +1,4 @@
|
||||
//
|
||||
// GUI.h
|
||||
// emptyExample
|
||||
//
|
||||
// Created by James Alliban on 25/06/2013.
|
||||
//
|
||||
//
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
@@ -33,7 +27,7 @@ public:
|
||||
void addNewData(vector<DataObject> newData);
|
||||
void clearGraphData();
|
||||
void keyPressed(int key);
|
||||
|
||||
string addCommasToNumberString(string num);
|
||||
|
||||
BarGraph barGraph;
|
||||
BodyGraph bodyGraph;
|
||||
|
||||
Reference in New Issue
Block a user