ee::SprPtr LoadFromPSD::LoadGroup(const Json::Value& value, const std::string& dir, int tw, int th) { std::string name = value[ee::SYM_GROUP_TAG].asString(); bool visible = value["visible"].asBool(); std::string _dir = dir + "\\" + name; auto sym = std::make_shared<Symbol>(); auto spr = std::make_shared<Sprite>(sym); const Json::Value& cval = value["children"]; // for (int i = 0, n = cval.size(); i < n; ++i) { for (int i = cval.size() - 1; i >= 0; --i) { ee::SprPtr cspr = LoadItem(cval[i], _dir, tw, th); if (cspr) { sym->Add(cspr); } } // sym->InitBounding(); spr->UpdateBounding(); spr->SetVisible(visible); return spr; }
void UIScrollView::AddChild(UIWidget* pkWidget, VeInt32 i32ZOrder) { VE_ASSERT(pkWidget); pkWidget->SetParent(this); m_kChildren.AttachBack(*pkWidget); m_pkInnerNode->addChild(pkWidget, i32ZOrder); UpdateBounding(); }
void ChainShape::LoadFromFile(const Json::Value& value, const std::string& dir) { ee::Shape::LoadFromFile(value, dir); int num = value["vertices"]["x"].size(); m_vertices.resize(num); for (int i = 0; i < num; ++i) { m_vertices[i].x = value["vertices"]["x"][i].asDouble(); m_vertices[i].y = value["vertices"]["y"][i].asDouble(); } m_closed = value["closed"].asBool(); m_draw_dir = !m_closed; UpdateBounding(); }
void ChainShape::SetVertices(const CU_VEC<sm::vec2>& vertices) { m_vertices = vertices; UpdateBounding(); }
void ExportBodymovin::FixFontLayer(const std::string& filepath, const std::string& dir) { Json::Value val; Json::Reader reader; std::locale::global(std::locale("")); std::ifstream fin(filepath.c_str()); std::locale::global(std::locale("C")); reader.parse(fin, val); fin.close(); Json::Value dst_val; dst_val["fps"] = val["fps"]; dst_val["name"] = val["name"]; int IDX0 = 0; auto layer_name = gum::FilepathHelper::Filename(filepath.c_str()); layer_name = layer_name.substr(0, layer_name.size() - 10); bool dirty = false; for (int i = 0, n = val["layer"].size(); i < n; ++i) { const Json::Value& layer_val = val["layer"][i]; assert(layer_val.size() > 0 && layer_val["frame"].size() > 0); const Json::Value& frame_val = layer_val["frame"][IDX0]; assert(frame_val.size() > 0 && frame_val["actor"].size() > 0); const Json::Value& actor_val = frame_val["actor"][IDX0]; std::string filename = actor_val["filepath"].asString(); filename = gum::FilepathHelper::Filename(filename.c_str()).c_str(); int sz = dst_val["layer"].size(); dst_val["layer"][sz] = val["layer"][i]; if (filename.size() != 6 || filename[0] != '0' || filename.substr(2) != ".png") { continue; } auto t_sym = ee::SymbolFactory::Create(s2::SYM_TEXTBOX); s2::Textbox tb; tb.width = 200; tb.height = 200; tb.font_type = 0; tb.font_size = 40; tb.font_color = pt2::Color(0, 0, 0); tb.has_edge = false; tb.align_hori = s2::Textbox::HA_LEFT; tb.align_vert = s2::Textbox::VA_CENTER; std::dynamic_pointer_cast<etext::Symbol>(t_sym)->SetTextbox(tb); auto t_spr = ee::SpriteFactory::Instance()->Create(t_sym); t_spr->UpdateBounding(); auto text_spr = std::dynamic_pointer_cast<etext::Sprite>(t_spr); text_spr->SetExport(true); auto c_sym = ee::SymbolFactory::Create(s2::SYM_COMPLEX); std::dynamic_pointer_cast<ecomplex::Symbol>(c_sym)->Add(t_spr); CU_STR text_path = layer_name + "_" + gum::StringHelper::ToString(i) + "_text_complex.json"; c_sym->SetFilepath(dir + "\\" + std::string(text_path.c_str())); auto c_spr = ee::SpriteFactory::Instance()->Create(c_sym); c_spr->UpdateBounding(); ecomplex::FileStorer::Store(c_sym->GetFilepath(), *std::dynamic_pointer_cast<ecomplex::Symbol>(c_sym), dir, false); Json::Value new_layer = layer_val; for (int j = 0, m = new_layer["frame"].size(); j < m; ++j) { Json::Value& frame_val = new_layer["frame"][j]; assert(frame_val["actor"].size() == 1); const Json::Value& src_val = frame_val["actor"][IDX0]; ee::SpriteIO spr_io; spr_io.Load(src_val, dir.c_str()); sm::vec2 anchor = spr_io.m_position + spr_io.m_offset; spr_io.m_position = spr_io.m_position + sm::rotate_vector(-spr_io.m_offset, spr_io.m_angle) + spr_io.m_offset; spr_io.m_angle = 0; float scale = std::min(fabs(spr_io.m_scale.x), fabs(spr_io.m_scale.y)); spr_io.m_scale.x = scale; spr_io.m_scale.y = scale; spr_io.m_offset = anchor - spr_io.m_position; Json::Value dst_val; dst_val["filepath"] = text_path.c_str(); spr_io.Store(dst_val, dir.c_str()); frame_val["actor"][IDX0] = dst_val; } dst_val["layer"][sz + 1] = new_layer; dirty = true; } if (dirty) { Json::StyledStreamWriter writer; std::locale::global(std::locale("")); std::ofstream fout(filepath.c_str()); std::locale::global(std::locale("C")); writer.write(fout, dst_val); fout.close(); } }