Example #1
0
bool StyleData::parse(const Value& v, unsigned long projectId)
{
    std::string typeStr = getJSONString(v, "type");
    type = _getType(typeStr);
    
    zoom_level_min = atoi(getJSONString(v, "zoom_level_min", "2").c_str());
    zoom_level_max = atoi(getJSONString(v, "zoom_level_max", "20").c_str());
    icon = getJSONString(v, "icon-mobile", "point");
    transform = getJSONString(v, "transform", "");
    transormValid = _parseTransform(transform);
    
    dasharray = getJSONString(v, "dasharray", "");
    if(dasharray.empty())
        dasharray = getJSONString(v, "outline-dasharray", "");
    
    color = _parseColor( getJSONString(v, "color"), colorValid );
    color.v[3] = atof(getJSONString(v, "opacity", "1.0").c_str());
    size = atof(getJSONString(v, "size", "0").c_str());
    outline_color = _parseColor( getJSONString(v, "outline-color"), outlineColorValid );
    outline_color.v[3] = atof(getJSONString(v, "outline-opacity", "1.0").c_str());
    outline_size = atof(getJSONString(v, "outline-size", "0").c_str());
    filter = getJSONString(v, "filter");
    filter_hash = getJSONString(v, "filter_hash");

    // Font style
    field_name = getJSONString(v, "field-name");
    font_name = getJSONString(v, "font-name");
    font_filename = getJSONString(v, "font-filename");
    font_size = atof(getJSONString(v, "font-size", "0").c_str());
    font_opacity = atof(getJSONString(v, "font-opacity", "1").c_str());

    font_color = _parseColor( getJSONString(v, "font-color"), fontColorValid);
    font_halo_color = _parseColor( getJSONString(v, "font-halo-color"), fontHaloColorValid);
    font_halo_size = atof(getJSONString(v, "font-halo-size", "0").c_str());
    offset_x = atof(getJSONString(v, "offset-x", "0").c_str());
    offset_y = atof(getJSONString(v, "offset-y", "0").c_str());
    mode = getJSONString(v, "mode");
    modeType = _getType(mode);
    allow_overlap = getJSONBool(v, "allow-overlap", false);

    if(type==ICON)
    {
        fullIconPath = SupportFiles::getFullPath(projectId) + icon;
    }
    return true;
}
Example #2
0
void OptionManager::callOptionHandler (const char* name, const char* value) {
   if (!typeMap.find(name))
      throw Error("Property \"%s\" not defined", name);
   OPTION_TYPE type = typeMap.at(name);
   int x = 0, y = 0;
   float f = 0, r = 0, g = 0, b = 0;
   switch (type)
   {
   case OPTION_STRING:
      stringSetters.at(name)(value);
      break;
   case OPTION_INT:
      if (_parseInt(value, x) < 0)
         throw Error("Cannot recognize \"%s\" as an integer value", value);
      intSetters.at(name)(x);
      break;
   case OPTION_BOOL:
      if (_parseBool(value, x) < 0)
         throw Error("Cannot recognize \"%s\" as a boolean value", value);
      boolSetters.at(name)(x);
      break;
   case OPTION_FLOAT:
      if (_parseFloat(value, f) < 0)
         throw Error("Cannot recognize \"%s\" as a float value", value);
      floatSetters.at(name)(f);
      break;
   case OPTION_COLOR:
      if (_parseColor(value, r, g, b) < 0)
         throw Error("Cannot recognize \"%s\" as a color value", value);
      colorSetters.at(name)(r, g, b);
      break;
   case OPTION_XY:
      if (_parseSize(value, x, y) < 0)
         throw Error("Cannot recognize \"%s\" as a pair of integers", value);
      xySetters.at(name)(x, y);
      break;
   default:
      throw Error("Option type not supported");
   }
}