Merge branch 'feature/iSWA' of github.com:OpenSpace/OpenSpace-Development into feature/iSWA

This commit is contained in:
Michael Nilsson
2016-06-10 15:48:46 -04:00
16 changed files with 77 additions and 36 deletions

View File

@@ -48,7 +48,6 @@ DataCygnet::DataCygnet(const ghoul::Dictionary& dictionary)
DataCygnet::~DataCygnet(){}
bool DataCygnet::updateTexture(){
std::vector<float*> data = textureData();
if(data.empty())
@@ -202,7 +201,7 @@ void DataCygnet::readTransferFunctions(std::string tfPath){
}
void DataCygnet::fillOptions(std::string& source){
std::vector<std::string> options = _dataProcessor->readMetadata(source);
std::vector<std::string> options = _dataProcessor->readMetadata(source, _textureDimensions);
for(int i=0; i<options.size(); i++){
_dataOptions.addOption({i, options[i]});

View File

@@ -191,8 +191,8 @@ std::vector<float*> DataPlane::textureData(){
return std::vector<float*>();
}
}
_textureDimensions = _dataProcessor->dimensions();
return _dataProcessor->processData(_dataBuffer, _dataOptions);
// _textureDimensions = _dataProcessor->dimensions();
return _dataProcessor->processData(_dataBuffer, _dataOptions, _textureDimensions);
}
void DataPlane::subscribeToGroup(){

View File

@@ -159,8 +159,8 @@ std::vector<float*> DataSphere::textureData(){
return std::vector<float*>();
}
}
_textureDimensions = _dataProcessor->dimensions();
return _dataProcessor->processData(_dataBuffer, _dataOptions);
// _textureDimensions = _dataProcessor->dimensions();
return _dataProcessor->processData(_dataBuffer, _dataOptions, _textureDimensions);
}
void DataSphere::setUniforms(){

View File

@@ -52,6 +52,7 @@ IswaCygnet::IswaCygnet(const ghoul::Dictionary& dictionary)
// dict.getValue can only set strings in _data directly
float renderableId;
float updateTime;
float xOffset;
glm::vec3 min, max;
glm::vec4 spatialScale;
@@ -62,6 +63,7 @@ IswaCygnet::IswaCygnet(const ghoul::Dictionary& dictionary)
dictionary.getValue("GridMax", max);
dictionary.getValue("Frame",_data->frame);
dictionary.getValue("CoordinateType", _data->coordinateType);
dictionary.getValue("XOffset", xOffset);
_data->id = (int) renderableId;
_data->updateTime = (int) updateTime;
@@ -79,8 +81,9 @@ IswaCygnet::IswaCygnet(const ghoul::Dictionary& dictionary)
(max.z - min.z)
);
offset = glm::vec3(
(min.x + (std::abs(min.x)+std::abs(max.x))/2.0f),
(min.x + (std::abs(min.x)+std::abs(max.x))/2.0f)+xOffset,
(min.y + (std::abs(min.y)+std::abs(max.y))/2.0f),
(min.z + (std::abs(min.z)+std::abs(max.z))/2.0f)
);

View File

@@ -249,7 +249,7 @@ void KameleonPlane::renderGeometry() const {
}
std::vector<float*> KameleonPlane::textureData() {
return std::dynamic_pointer_cast<DataProcessorKameleon>(_dataProcessor)->processData(_kwPath, _dataOptions, _slice, _dimensions);
return std::dynamic_pointer_cast<DataProcessorKameleon>(_dataProcessor)->processData(_kwPath, _dataOptions, _dimensions, _slice);
};
bool KameleonPlane::updateTextureResource(){

View File

@@ -40,9 +40,9 @@ public:
DataProcessor();
~DataProcessor();
virtual std::vector<std::string> readMetadata(std::string data) = 0;
virtual std::vector<std::string> readMetadata(std::string data, glm::size3_t& dimensions) = 0;
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) = 0;
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions) = 0;
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) = 0;
void useLog(bool useLog);
void useHistogram(bool useHistogram);

View File

@@ -39,7 +39,7 @@ DataProcessorJson::DataProcessorJson()
DataProcessorJson::~DataProcessorJson(){}
std::vector<std::string> DataProcessorJson::readMetadata(std::string data){
std::vector<std::string> DataProcessorJson::readMetadata(std::string data, glm::size3_t& dimensions){
std::vector<std::string> options = std::vector<std::string>();
if(!data.empty()){
json j = json::parse(data);
@@ -51,7 +51,7 @@ std::vector<std::string> DataProcessorJson::readMetadata(std::string data){
json row = it.value();
json col = row.at(0);
_dimensions = glm::size3_t(col.size(), row.size(), 1);
dimensions = glm::size3_t(col.size(), row.size(), 1);
}
if(_coordinateVariables.find(option) == _coordinateVariables.end()){
@@ -99,7 +99,7 @@ void DataProcessorJson::addDataValues(std::string data, properties::SelectionPro
}
}
std::vector<float*> DataProcessorJson::processData(std::string data, properties::SelectionProperty& dataOptions){
std::vector<float*> DataProcessorJson::processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions){
if(!data.empty()){
json j = json::parse(data);
json variables = j["variables"];
@@ -115,7 +115,7 @@ std::vector<float*> DataProcessorJson::processData(std::string data, properties:
std::vector<float*> dataOptions(numOptions, nullptr);
for(int option : selectedOptions){
dataOptions[option] = new float[_dimensions.x*_dimensions.y]{0.0f};
dataOptions[option] = new float[dimensions.x*dimensions.y]{0.0f};
json row = variables[options[option].description];
rowsize = row.size();

View File

@@ -33,9 +33,9 @@ public:
DataProcessorJson();
~DataProcessorJson();
virtual std::vector<std::string> readMetadata(std::string data) override;
virtual std::vector<std::string> readMetadata(std::string data, glm::size3_t& dimensions) override;
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) override;
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions) override;
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) override;
};
}// namespace

View File

@@ -42,7 +42,7 @@ DataProcessorKameleon::DataProcessorKameleon()
DataProcessorKameleon::~DataProcessorKameleon(){}
std::vector<std::string> DataProcessorKameleon::readMetadata(std::string path){
std::vector<std::string> DataProcessorKameleon::readMetadata(std::string path, glm::size3_t& dimensions){
if(!path.empty()){
if(path != _kwPath || !_kw){
@@ -98,13 +98,13 @@ void DataProcessorKameleon::addDataValues(std::string path, properties::Selectio
add(optionValues, sum);
}
}
std::vector<float*> DataProcessorKameleon::processData(std::string path, properties::SelectionProperty& dataOptions, float slice, glm::size3_t& dimensions){
std::vector<float*> DataProcessorKameleon::processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions, float slice){
_slice = slice;
_dimensions = dimensions;
return processData(path, dataOptions);
// _dimensions = dimensions;
return processData(path, dataOptions, dimensions);
}
std::vector<float*> DataProcessorKameleon::processData(std::string path, properties::SelectionProperty& dataOptions){
std::vector<float*> DataProcessorKameleon::processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions){
int numOptions = dataOptions.options().size();
if(!path.empty()){
@@ -117,13 +117,13 @@ std::vector<float*> DataProcessorKameleon::processData(std::string path, propert
auto options = dataOptions.options();
int numOptions = options.size();
int numValues = _dimensions.x*_dimensions.y*_dimensions.z;
int numValues = dimensions.x*dimensions.y*dimensions.z;
float value;
std::vector<float*> dataOptions(numOptions, nullptr);
for(int option : selectedOptions){
dataOptions[option] = _kw->getUniformSliceValues(options[option].description, _dimensions, _slice);
dataOptions[option] = _kw->getUniformSliceValues(options[option].description, dimensions, _slice);
for(int i=0; i<numValues; i++){
value = dataOptions[option][i];

View File

@@ -34,10 +34,10 @@ public:
DataProcessorKameleon();
~DataProcessorKameleon();
virtual std::vector<std::string> readMetadata(std::string path) override;
virtual std::vector<std::string> readMetadata(std::string path, glm::size3_t& dimensions) override;
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) override;
virtual std::vector<float*> processData(std::string path, properties::SelectionProperty& dataOptions) override;
virtual std::vector<float*> processData(std::string path, properties::SelectionProperty& dataOptions, float slice, glm::size3_t& dimensions);
virtual std::vector<float*> processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) override;
virtual std::vector<float*> processData(std::string path, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions, float slice);
void dimensions(glm::size3_t dimensions){_dimensions = dimensions;}
private:

View File

@@ -37,7 +37,7 @@ DataProcessorText::DataProcessorText()
DataProcessorText::~DataProcessorText(){}
std::vector<std::string> DataProcessorText::readMetadata(std::string data){
std::vector<std::string> DataProcessorText::readMetadata(std::string data, glm::size3_t& dimensions){
//The intresting part of the file looks like this:
//# Output data: field with 61x61=3721 elements
//# x y z N V_x B_x
@@ -60,7 +60,7 @@ std::vector<std::string> DataProcessorText::readMetadata(std::string data){
getline(ss, token, '=');
int y = std::stoi(token);
_dimensions = glm::size3_t(x, y, 1);
dimensions = glm::size3_t(x, y, 1);
getline(memorystream, line);
line = line.substr(1); //because of the # char
@@ -74,6 +74,7 @@ std::vector<std::string> DataProcessorText::readMetadata(std::string data){
}
}
}
return options;
}
@@ -118,7 +119,7 @@ void DataProcessorText::addDataValues(std::string data, properties::SelectionPro
}
}
std::vector<float*> DataProcessorText::processData(std::string data, properties::SelectionProperty& dataOptions){
std::vector<float*> DataProcessorText::processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions){
if(!data.empty()){
std::string line;
std::stringstream memorystream(data);
@@ -132,7 +133,7 @@ std::vector<float*> DataProcessorText::processData(std::string data, properties:
std::vector<float*> dataOptions(numOptions, nullptr);
for(int option : selectedOptions){
dataOptions[option] = new float[_dimensions.x*_dimensions.y]{0.0f};
dataOptions[option] = new float[dimensions.x*dimensions.y]{0.0f};
}
int numValues = 0;

View File

@@ -33,9 +33,9 @@ public:
DataProcessorText();
~DataProcessorText();
virtual std::vector<std::string> readMetadata(std::string data) override;
virtual std::vector<std::string> readMetadata(std::string data, glm::size3_t& dimensions) override;
virtual void addDataValues(std::string data, properties::SelectionProperty& dataOptions) override;
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions) override;
virtual std::vector<float*> processData(std::string data, properties::SelectionProperty& dataOptions, glm::size3_t& dimensions) override;
private:
// void initialize(int numOptions);

View File

@@ -157,7 +157,6 @@ void IswaManager::addIswaCygnet(int id, std::string type, std::string group){
void IswaManager::addKameleonCdf(std::string groupName, int pos){
// auto info = _cdfInformation[group][pos];
// std::cout << group << " " << pos << std::endl;
auto group = iswaGroup(groupName);
if(group){
std::dynamic_pointer_cast<IswaKameleonGroup>(group)->changeCdf(_cdfInformation[groupName][pos].path);
@@ -305,6 +304,13 @@ std::string IswaManager::jsonPlaneToLuaTable(std::shared_ptr<MetadataFuture> dat
spatialScale.w = 6;
}
float xOffset = 0.0f;
if(data->id == -7)
xOffset = -10.0f;
if(data->id == -8)
xOffset = -20.0f;
if(data->id == -9)
xOffset = -30.0f;
std::string table = "{"
"Name = '" + data->name +"' , "
@@ -319,6 +325,7 @@ std::string IswaManager::jsonPlaneToLuaTable(std::shared_ptr<MetadataFuture> dat
"UpdateTime = " + std::to_string(updateTime) + ", "
"CoordinateType = '" + coordinateType + "', "
"Group = '"+ data->group + "',"
"XOffset = "+ std::to_string(xOffset) + ","
"}"
"}";