void separarIndividuo( vector<Mat> Exemplos, vector<int> Labels, int individuo, vector<Mat>& ExemploSemIndividuo, vector<int>& LabelsSemIndividuo, vector<Mat>& ExemploIndividuo, vector<int>& LabelsIndividuo, map<string, int> Individuos) { int atual = 0; for(int i = 0; i < Individuos.size(); i++) { if(i != individuo) { for(int j = 0; j < getValueAtIndex(i, Individuos);j++ ){ ExemploSemIndividuo.push_back(Exemplos[atual]); LabelsSemIndividuo.push_back(Labels[atual]); atual++; } } else { for(int j = 0; j < getValueAtIndex(i, Individuos);j++ ){ ExemploIndividuo.push_back(Exemplos[atual]); LabelsIndividuo.push_back(Labels[atual]); atual++; } } } }
double List::operator[](int index) const { return getValueAtIndex(index); }
bool StyleContext::evalStyle(FunctionID _id, StyleParamKey _key, StyleParam::Value& _val) { _val = none_type{}; JSScope jsScope(*m_jsContext); auto jsValue = jsScope.getFunctionResult(_id); if (!jsValue) { return false; } if (jsValue.isString()) { std::string value = jsValue.toString(); switch (_key) { case StyleParamKey::outline_style: case StyleParamKey::repeat_group: case StyleParamKey::sprite: case StyleParamKey::sprite_default: case StyleParamKey::style: case StyleParamKey::text_align: case StyleParamKey::text_repeat_group: case StyleParamKey::text_source: case StyleParamKey::text_source_left: case StyleParamKey::text_source_right: case StyleParamKey::text_transform: case StyleParamKey::texture: _val = value; break; case StyleParamKey::color: case StyleParamKey::outline_color: case StyleParamKey::text_font_fill: case StyleParamKey::text_font_stroke_color: { Color result; if (StyleParam::parseColor(value, result)) { _val = result.abgr; } else { LOGW("Invalid color value: %s", value.c_str()); } break; } default: _val = StyleParam::parseString(_key, value); break; } } else if (jsValue.isBoolean()) { bool value = jsValue.toBool(); switch (_key) { case StyleParamKey::interactive: case StyleParamKey::text_interactive: case StyleParamKey::visible: _val = value; break; case StyleParamKey::extrude: _val = value ? glm::vec2(NAN, NAN) : glm::vec2(0.0f, 0.0f); break; default: break; } } else if (jsValue.isArray()) { auto len = jsValue.getLength(); switch (_key) { case StyleParamKey::extrude: { if (len != 2) { LOGW("Wrong array size for extrusion: '%d'.", len); break; } double v1 = jsValue.getValueAtIndex(0).toDouble(); double v2 = jsValue.getValueAtIndex(1).toDouble(); _val = glm::vec2(v1, v2); break; } case StyleParamKey::color: case StyleParamKey::outline_color: case StyleParamKey::text_font_fill: case StyleParamKey::text_font_stroke_color: { if (len < 3 || len > 4) { LOGW("Wrong array size for color: '%d'.", len); break; } double r = jsValue.getValueAtIndex(0).toDouble(); double g = jsValue.getValueAtIndex(1).toDouble(); double b = jsValue.getValueAtIndex(2).toDouble(); double a = 1.0; if (len == 4) { a = jsValue.getValueAtIndex(3).toDouble(); } _val = ColorF(r, g, b, a).toColor().abgr; break; } default: break; } } else if (jsValue.isNumber()) { double number = jsValue.toDouble(); if (std::isnan(number)) { LOGD("duk evaluates JS method to NAN.\n"); } switch (_key) { case StyleParamKey::text_source: case StyleParamKey::text_source_left: case StyleParamKey::text_source_right: _val = doubleToString(number); break; case StyleParamKey::extrude: _val = glm::vec2(0.f, number); break; case StyleParamKey::placement_spacing: { _val = StyleParam::Width{static_cast<float>(number), Unit::pixel}; break; } case StyleParamKey::width: case StyleParamKey::outline_width: { // TODO more efficient way to return pixels. // atm this only works by return value as string _val = StyleParam::Width{static_cast<float>(number)}; break; } case StyleParamKey::angle: case StyleParamKey::priority: case StyleParamKey::text_priority: case StyleParamKey::text_font_stroke_width: case StyleParamKey::placement_min_length_ratio: { _val = static_cast<float>(number); break; } case StyleParamKey::size: { StyleParam::SizeValue vec; vec.x.value = static_cast<float>(number); _val = vec; break; } case StyleParamKey::order: case StyleParamKey::outline_order: case StyleParamKey::color: case StyleParamKey::outline_color: case StyleParamKey::text_font_fill: case StyleParamKey::text_font_stroke_color: { _val = static_cast<uint32_t>(number); break; } default: break; } } else if (jsValue.isUndefined()) { // Explicitly set value as 'undefined'. This is important for some styling rules. _val = Undefined(); } else { LOGW("Unhandled return type from Javascript style function for %d.", _key); } return !_val.is<none_type>(); }