void PageViewReader::setPropsWithFlatBuffers(cocos2d::Node *node, const flatbuffers::Table *pageViewOptions) { PageView* pageView = static_cast<PageView*>(node); auto options = (PageViewOptions*)pageViewOptions; bool clipEnabled = options->clipEnabled(); pageView->setClippingEnabled(clipEnabled); bool backGroundScale9Enabled = options->backGroundScale9Enabled(); pageView->setBackGroundImageScale9Enabled(backGroundScale9Enabled); auto f_bgColor = options->bgColor(); Color3B bgColor(f_bgColor->r(), f_bgColor->g(), f_bgColor->b()); auto f_bgStartColor = options->bgStartColor(); Color3B bgStartColor(f_bgStartColor->r(), f_bgStartColor->g(), f_bgStartColor->b()); auto f_bgEndColor = options->bgEndColor(); Color3B bgEndColor(f_bgEndColor->r(), f_bgEndColor->g(), f_bgEndColor->b()); auto f_colorVecor = options->colorVector(); Vec2 colorVector(f_colorVecor->vectorX(), f_colorVecor->vectorY()); pageView->setBackGroundColorVector(colorVector); int bgColorOpacity = options->bgColorOpacity(); int colorType = options->colorType(); pageView->setBackGroundColorType(Layout::BackGroundColorType(colorType)); pageView->setBackGroundColor(bgStartColor, bgEndColor); pageView->setBackGroundColor(bgColor); pageView->setBackGroundColorOpacity(bgColorOpacity); bool fileExist = false; std::string errorFilePath = ""; auto imageFileNameDic = options->backGroundImageData(); int imageFileNameType = imageFileNameDic->resourceType(); std::string imageFileName = imageFileNameDic->path()->c_str(); if (imageFileName != "") { switch (imageFileNameType) { case 0: { if (FileUtils::getInstance()->isFileExist(imageFileName)) { fileExist = true; } else { errorFilePath = imageFileName; fileExist = false; } break; } case 1: { std::string plist = imageFileNameDic->plistFile()->c_str(); SpriteFrame* spriteFrame = SpriteFrameCache::getInstance()->getSpriteFrameByName(imageFileName); if (spriteFrame) { fileExist = true; } else { if (FileUtils::getInstance()->isFileExist(plist)) { ValueMap value = FileUtils::getInstance()->getValueMapFromFile(plist); ValueMap metadata = value["metadata"].asValueMap(); std::string textureFileName = metadata["textureFileName"].asString(); if (!FileUtils::getInstance()->isFileExist(textureFileName)) { errorFilePath = textureFileName; } } else { errorFilePath = plist; } fileExist = false; } break; } default: break; } if (fileExist) { pageView->setBackGroundImage(imageFileName, (Widget::TextureResType)imageFileNameType); } else { auto label = Label::create(); label->setString(__String::createWithFormat("%s missed", errorFilePath.c_str())->getCString()); pageView->addChild(label); } } auto widgetOptions = options->widgetOptions(); auto f_color = widgetOptions->color(); Color3B color(f_color->r(), f_color->g(), f_color->b()); pageView->setColor(color); int opacity = widgetOptions->alpha(); pageView->setOpacity(opacity); auto widgetReader = WidgetReader::getInstance(); widgetReader->setPropsWithFlatBuffers(node, (Table*)options->widgetOptions()); if (backGroundScale9Enabled) { auto f_capInsets = options->capInsets(); Rect capInsets(f_capInsets->x(), f_capInsets->y(), f_capInsets->width(), f_capInsets->height()); pageView->setBackGroundImageCapInsets(capInsets); auto f_scale9Size = options->scale9Size(); Size scale9Size(f_scale9Size->width(), f_scale9Size->height()); pageView->setContentSize(scale9Size); } else { if (!pageView->isIgnoreContentAdaptWithSize()) { Size contentSize(widgetOptions->size()->width(), widgetOptions->size()->height()); pageView->setContentSize(contentSize); } } }