[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()); EWOL_ERROR("Can not load file : '" << m_name << "' = " << etk::FSNode(m_name).getFileSystemName());
return; return;
} }
std::shared_ptr<ejson::Array> baseArray = doc.getArray("color"); ejson::Array baseArray = doc["color"].toArray();
if (baseArray == nullptr) { if (baseArray.exist() == false) {
EWOL_ERROR("Can not get basic array : 'color'"); EWOL_ERROR("Can not get basic array : 'color'");
return; return;
} }
for (size_t iii = 0; iii < baseArray->size(); ++iii) { for (const auto it : baseArray) {
std::shared_ptr<ejson::Object> tmpObj = baseArray->getObject(iii); ejson::Object tmpObj = it.toObject();
if (tmpObj == nullptr) { if (tmpObj.exist() == false) {
EWOL_DEBUG(" can not get object in 'color' id=" << iii); EWOL_DEBUG(" can not get object in 'color' : " << it);
continue; continue;
} }
std::string name = tmpObj->getStringValue("name", ""); std::string name = tmpObj.getStringValue("name", "");
std::string color = tmpObj->getStringValue("color", m_errorColor.getHexString()); std::string color = tmpObj.getStringValue("color", m_errorColor.getHexString());
EWOL_DEBUG("find new color : '" << name << "' color='" << color << "'"); EWOL_DEBUG("find new color : '" << name << "' color='" << color << "'");
if (name.size() == 0) { if (name.size() == 0) {
EWOL_ERROR("Drop an empty name"); 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); std::unique_lock<std::recursive_mutex> lock(m_mutex);
// reset all parameters // reset all parameters
for (int32_t iii=0; iii<m_list.size(); iii++){ for (int32_t iii=0; iii<m_list.size(); iii++){
if (nullptr != m_list[iii]) { if (m_list[iii].exist() == true) {
m_list[iii] = nullptr; m_list[iii] = ejson::empty();
} }
} }
m_doc.load(m_name); m_doc.load(m_name);
for (auto elementName : m_list.getKeys()) { for (auto elementName : m_list.getKeys()) {
if (m_doc.exist(elementName) == true) { if (m_doc[elementName].exist() == true) {
m_list[elementName] = m_doc[elementName]; 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); std::unique_lock<std::recursive_mutex> lock(m_mutex);
// check if the parameters existed : // check if the parameters existed :
if (m_list.exist(_paramName) == false) { 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]; m_list[_paramName] = m_doc[_paramName];
} }
return m_list.getId(_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) { double ewol::resource::ConfigFile::getNumber(int32_t _id) {
std::unique_lock<std::recursive_mutex> lock(m_mutex); std::unique_lock<std::recursive_mutex> lock(m_mutex);
if ( _id < 0 if ( _id < 0
|| m_list[_id] == nullptr) { || m_list[_id].exist() == false) {
return 0.0; return 0.0;
} }
std::shared_ptr<ejson::Number> tmp = m_list[_id]->toNumber(); return m_list[_id].toNumber().get();
if (tmp == nullptr) {
return 0.0;
}
return tmp->get();
} }
const std::string& ewol::resource::ConfigFile::getString(int32_t _id) { const std::string& ewol::resource::ConfigFile::getString(int32_t _id) {
std::unique_lock<std::recursive_mutex> lock(m_mutex); std::unique_lock<std::recursive_mutex> lock(m_mutex);
static const std::string& errorString(""); static const std::string& errorString("");
if ( _id < 0 if ( _id < 0
|| m_list[_id] == nullptr) { || m_list[_id].exist() == false) {
return errorString; return errorString;
} }
std::shared_ptr<ejson::String> tmp = m_list[_id]->toString(); return m_list[_id].toString().get();
if (tmp == nullptr) {
return errorString;
}
return tmp->get();
} }
bool ewol::resource::ConfigFile::getBoolean(int32_t _id) { bool ewol::resource::ConfigFile::getBoolean(int32_t _id) {
std::unique_lock<std::recursive_mutex> lock(m_mutex); std::unique_lock<std::recursive_mutex> lock(m_mutex);
if ( _id < 0 if ( _id < 0
|| m_list[_id] == nullptr) { || m_list[_id].exist() == false) {
return false; return false;
} }
std::shared_ptr<ejson::Boolean> tmp = m_list[_id]->toBoolean(); return m_list[_id].toBoolean().get();
if (tmp == nullptr) {
return false;
}
return tmp->get();
} }

View File

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