[DEV] update new ejson interface

This commit is contained in:
Edouard DUPIN 2016-04-20 21:19:11 +02:00
parent f5a50d26a6
commit 06842eeafb
4 changed files with 44 additions and 63 deletions

View File

@ -44,19 +44,19 @@ void ewol::resource::ColorFile::reload() {
EWOL_ERROR("Can not load file : '" << m_name << "' = " << etk::FSNode(m_name).getFileSystemName());
return;
}
std::shared_ptr<ejson::Array> baseArray = doc.getArray("color");
if (baseArray == nullptr) {
ejson::Array baseArray = doc["color"].toArray();
if (baseArray.exist() == false) {
EWOL_ERROR("Can not get basic array : 'color'");
return;
}
for (size_t iii = 0; iii < baseArray->size(); ++iii) {
std::shared_ptr<ejson::Object> tmpObj = baseArray->getObject(iii);
if (tmpObj == nullptr) {
EWOL_DEBUG(" can not get object in 'color' id=" << iii);
for (const auto it : baseArray) {
ejson::Object tmpObj = it.toObject();
if (tmpObj.exist() == false) {
EWOL_DEBUG(" can not get object in 'color' : " << it);
continue;
}
std::string name = tmpObj->getStringValue("name", "");
std::string color = tmpObj->getStringValue("color", m_errorColor.getHexString());
std::string name = tmpObj.getStringValue("name", "");
std::string color = tmpObj.getStringValue("color", m_errorColor.getHexString());
EWOL_DEBUG("find new color : '" << name << "' color='" << color << "'");
if (name.size() == 0) {
EWOL_ERROR("Drop an empty name");

View File

@ -36,14 +36,14 @@ void ewol::resource::ConfigFile::reload() {
std::unique_lock<std::recursive_mutex> lock(m_mutex);
// reset all parameters
for (int32_t iii=0; iii<m_list.size(); iii++){
if (nullptr != m_list[iii]) {
m_list[iii] = nullptr;
if (m_list[iii].exist() == true) {
m_list[iii] = ejson::empty();
}
}
m_doc.load(m_name);
for (auto elementName : m_list.getKeys()) {
if (m_doc.exist(elementName) == true) {
if (m_doc[elementName].exist() == true) {
m_list[elementName] = m_doc[elementName];
}
}
@ -54,9 +54,9 @@ int32_t ewol::resource::ConfigFile::request(const std::string& _paramName) {
std::unique_lock<std::recursive_mutex> lock(m_mutex);
// check if the parameters existed :
if (m_list.exist(_paramName) == false) {
m_list.add(_paramName, nullptr);
m_list.add(_paramName, ejson::empty());
}
if (m_doc.exist(_paramName) == true) {
if (m_doc[_paramName].exist() == true) {
m_list[_paramName] = m_doc[_paramName];
}
return m_list.getId(_paramName);
@ -66,39 +66,27 @@ int32_t ewol::resource::ConfigFile::request(const std::string& _paramName) {
double ewol::resource::ConfigFile::getNumber(int32_t _id) {
std::unique_lock<std::recursive_mutex> lock(m_mutex);
if ( _id < 0
|| m_list[_id] == nullptr) {
|| m_list[_id].exist() == false) {
return 0.0;
}
std::shared_ptr<ejson::Number> tmp = m_list[_id]->toNumber();
if (tmp == nullptr) {
return 0.0;
}
return tmp->get();
return m_list[_id].toNumber().get();
}
const std::string& ewol::resource::ConfigFile::getString(int32_t _id) {
std::unique_lock<std::recursive_mutex> lock(m_mutex);
static const std::string& errorString("");
if ( _id < 0
|| m_list[_id] == nullptr) {
|| m_list[_id].exist() == false) {
return errorString;
}
std::shared_ptr<ejson::String> tmp = m_list[_id]->toString();
if (tmp == nullptr) {
return errorString;
}
return tmp->get();
return m_list[_id].toString().get();
}
bool ewol::resource::ConfigFile::getBoolean(int32_t _id) {
std::unique_lock<std::recursive_mutex> lock(m_mutex);
if ( _id < 0
|| m_list[_id] == nullptr) {
|| m_list[_id].exist() == false) {
return false;
}
std::shared_ptr<ejson::Boolean> tmp = m_list[_id]->toBoolean();
if (tmp == nullptr) {
return false;
}
return tmp->get();
return m_list[_id].toBoolean().get();
}

View File

@ -18,7 +18,7 @@ namespace ewol {
class ConfigFile : public gale::Resource {
private:
ejson::Document m_doc;
etk::Hash<std::shared_ptr<ejson::Value>> m_list;
etk::Hash<ejson::Value> m_list;
protected:
ConfigFile();
void init(const std::string& _filename);

View File

@ -351,25 +351,18 @@ void ewol::resource::DistanceFieldFont::exportOnFile() {
std::unique_lock<std::recursive_mutex> lock(m_mutex);
EWOL_DEBUG("EXPORT: DistanceFieldFont : file : '" << m_fileName << ".json'");
ejson::Document doc;
std::shared_ptr<ejson::Array> tmpList = ejson::Array::create();
if (tmpList == nullptr) {
EWOL_ERROR("nullptr pointer");
return;
}
ejson::Array tmpList;
for (size_t iii=0; iii<m_listElement.size(); ++iii) {
std::shared_ptr<ejson::Object> tmpObj = ejson::Object::create();
if (tmpObj == nullptr) {
continue;
}
tmpObj->addString("m_UVal", etk::to_string(m_listElement[iii].m_UVal));
tmpObj->addNumber("m_glyphIndex", m_listElement[iii].m_glyphIndex);
tmpObj->addString("m_sizeTexture", (std::string)m_listElement[iii].m_sizeTexture);
tmpObj->addString("m_bearing", (std::string)m_listElement[iii].m_bearing);
tmpObj->addString("m_advance", (std::string)m_listElement[iii].m_advance);
tmpObj->addString("m_texturePosStart", (std::string)m_listElement[iii].m_texturePosStart);
tmpObj->addString("m_texturePosSize", (std::string)m_listElement[iii].m_texturePosSize);
tmpObj->addBoolean("m_exist", m_listElement[iii].m_exist);
tmpList->add(tmpObj);
ejson::Object tmpObj;
tmpObj.addString("m_UVal", etk::to_string(m_listElement[iii].m_UVal));
tmpObj.addNumber("m_glyphIndex", m_listElement[iii].m_glyphIndex);
tmpObj.addString("m_sizeTexture", (std::string)m_listElement[iii].m_sizeTexture);
tmpObj.addString("m_bearing", (std::string)m_listElement[iii].m_bearing);
tmpObj.addString("m_advance", (std::string)m_listElement[iii].m_advance);
tmpObj.addString("m_texturePosStart", (std::string)m_listElement[iii].m_texturePosStart);
tmpObj.addString("m_texturePosSize", (std::string)m_listElement[iii].m_texturePosSize);
tmpObj.addBoolean("m_exist", m_listElement[iii].m_exist);
tmpList.add(tmpObj);
}
doc.add("m_listElement", tmpList);
doc.addNumber("m_sizeRatio", m_sizeRatio);
@ -401,26 +394,26 @@ bool ewol::resource::DistanceFieldFont::importFromFile() {
m_lastRawHeigh = doc.getNumberValue("m_lastRawHeigh", 0);
m_borderSize = doc.getNumberValue("m_borderSize", 2);
m_textureBorderSize = doc.addString("m_textureBorderSize", "0,0");
std::shared_ptr<ejson::Array> tmpList = doc.getArray("m_listElement");
if (tmpList == nullptr) {
ejson::Array tmpList = doc["m_listElement"].toArray();
if (tmpList.exist() == false) {
EWOL_ERROR("nullptr pointer array");
return false;
}
m_listElement.clear();
for (size_t iii=0; iii<tmpList->size(); ++iii) {
std::shared_ptr<ejson::Object> tmpObj = tmpList->getObject(iii);
if (tmpObj == nullptr) {
for (const auto it : tmpList) {
const ejson::Object tmpObj = it.toObject();
if (tmpObj.exist() == false) {
continue;
}
GlyphProperty prop;
prop.m_UVal = etk::string_to_int32_t(tmpObj->getStringValue("m_UVal", "0"));
prop.m_glyphIndex = tmpObj->getNumberValue("m_glyphIndex", 0);
prop.m_sizeTexture = tmpObj->getStringValue("m_sizeTexture", "0,0");
prop.m_bearing = tmpObj->getStringValue("m_bearing", "0,0");
prop.m_advance = tmpObj->getStringValue("m_advance", "0,0");
prop.m_texturePosStart = tmpObj->getStringValue("m_texturePosStart", "0,0");
prop.m_texturePosSize = tmpObj->getStringValue("m_texturePosSize", "0,0");
prop.m_exist = tmpObj->getBooleanValue("m_exist", false);
prop.m_UVal = etk::string_to_int32_t(tmpObj.getStringValue("m_UVal", "0"));
prop.m_glyphIndex = tmpObj.getNumberValue("m_glyphIndex", 0);
prop.m_sizeTexture = tmpObj.getStringValue("m_sizeTexture", "0,0");
prop.m_bearing = tmpObj.getStringValue("m_bearing", "0,0");
prop.m_advance = tmpObj.getStringValue("m_advance", "0,0");
prop.m_texturePosStart = tmpObj.getStringValue("m_texturePosStart", "0,0");
prop.m_texturePosSize = tmpObj.getStringValue("m_texturePosSize", "0,0");
prop.m_exist = tmpObj.getBooleanValue("m_exist", false);
m_listElement.push_back(prop);
}
egami::load(m_data, m_fileName + ".bmp");