void StateTextureControl::updateCoord() { MyGUI::UString value; if (getCurrentSkin() != nullptr) value = getCurrentSkin()->getPropertySet()->getPropertyValue("Coord"); MyGUI::IntCoord coord; if (MyGUI::utility::parseComplex(value, coord.left, coord.top, coord.width, coord.height)) { if (mSizeValue != coord.size()) { mSizeValue = coord.size(); updateSelectorsSize(); } } }
void IndexTextureController::updateCoords(const std::string& _value) { MyGUI::IntCoord coord; if (MyGUI::utility::parseComplex(_value, coord.left, coord.top, coord.width, coord.height)) mSize = coord.size(); else mSize.clear(); updateFrames(); }
void TestWindow::createSkin() { if (mSkinItem == nullptr) return; MyGUI::IntSize canvasSize = mBackgroundControl->getCanvas()->getSize(); generateSkin(); mSkinButton = mBackgroundControl->getCanvas()->createWidget<MyGUI::Button>(mSkinName, MyGUI::IntCoord(0, 0, canvasSize.width, canvasSize.height), MyGUI::Align::Stretch); mSkinButton->setFontName(mDefaultFontName); mSkinButton->setTextAlign(MyGUI::Align::Center); mSkinButton->setCaption("Caption"); mSkinButton->eventMouseButtonPressed += MyGUI::newDelegate(this, &TestWindow::notifyMouseButtonPressed); MyGUI::IntCoord coord = mSkinItem->getPropertyValue<MyGUI::IntCoord>("Size"); MyGUI::IntSize windowSize = coord.size() + mMainWidget->getSize() - canvasSize; MyGUI::IntSize parentSize = mMainWidget->getParentSize(); mMainWidget->setCoord((parentSize.width - windowSize.width) / 2, (parentSize.height - windowSize.height) / 2, windowSize.width, windowSize.height); }
void ExportManager::convertSkin(MyGUI::xml::Element* _from, MyGUI::xml::Element* _to) { _to->addAttribute("type", "ResourceSkin"); _to->addAttribute("name", _from->findAttribute("name")); MyGUI::xml::ElementEnumerator nodes = _from->getElementEnumerator(); while (nodes.next()) { MyGUI::UString coordValue; MyGUI::UString textureValue; MyGUI::xml::Element* node = nodes.current(); if (node->getName() == "PropertySet") { MyGUI::xml::ElementEnumerator propertyNodes = node->getElementEnumerator(); while (propertyNodes.next("Property")) { MyGUI::xml::Element* propertyNode = propertyNodes.current(); std::string name; if (propertyNode->findAttribute("name", name)) { if (name == "Coord") { MyGUI::IntCoord coord = MyGUI::IntCoord::parse(propertyNode->getContent()); coordValue = coord.size().print(); } else if (name == "Texture") { textureValue = propertyNode->getContent(); } } } _to->addAttribute("size", coordValue); _to->addAttribute("texture", textureValue); break; } else if (node->getName() == "RegionItem") { bool regionVisible = true; MyGUI::xml::ElementEnumerator regionNodes = node->getElementEnumerator(); while (regionNodes.next("PropertySet")) { MyGUI::xml::ElementEnumerator propertyNodes = regionNodes->getElementEnumerator(); while (propertyNodes.next("Property")) { MyGUI::xml::Element* propertyNode = propertyNodes.current(); std::string name; if (propertyNode->findAttribute("name", name)) { if (name == "Visible") { if (propertyNode->getContent() != "True") regionVisible = false; } else if (name == "Enabled") { if (propertyNode->getContent() != "True") regionVisible = false; } } } break; } if (!regionVisible) continue; MyGUI::xml::Element* region = _to->createChild("BasisSkin"); MyGUI::IntCoord regionCoord; MyGUI::UString regionTypeValue; MyGUI::UString regionOffsetValue; MyGUI::UString alignValue; regionNodes = node->getElementEnumerator(); while (regionNodes.next("PropertySet")) { MyGUI::xml::ElementEnumerator regionPropertyNode = regionNodes->getElementEnumerator(); while (regionPropertyNode.next("Property")) { std::string name; if (regionPropertyNode->findAttribute("name", name)) { if (name == "RegionType") { regionTypeValue = regionPropertyNode->getContent(); } else if (name == "Position") { regionCoord = MyGUI::IntCoord::parse(regionPropertyNode->getContent()); regionOffsetValue = regionCoord.print(); } else if (name == "Align") { alignValue = regionPropertyNode->getContent(); } } } bool tileHor = true; bool tileVer = true; if (regionTypeValue == "TileRect Hor") { regionTypeValue = "TileRect"; tileVer = false; } else if (regionTypeValue == "TileRect Ver") { regionTypeValue = "TileRect"; tileHor = false; } region->addAttribute("type", regionTypeValue); region->addAttribute("offset", regionOffsetValue); region->addAttribute("align", alignValue); MyGUI::xml::ElementEnumerator stateNodes = _from->getElementEnumerator(); while (stateNodes.next("StateItem")) { bool stateVisible = true; MyGUI::xml::ElementEnumerator propertySetNodes = stateNodes->getElementEnumerator(); while (propertySetNodes.next("PropertySet")) { MyGUI::xml::ElementEnumerator statePropertyNode = propertySetNodes->getElementEnumerator(); while (statePropertyNode.next("Property")) { std::string name; if (statePropertyNode->findAttribute("name", name)) { if (name == "Visible") { if (statePropertyNode->getContent() != "True") stateVisible = false; } } } break; } if (!stateVisible) continue; MyGUI::xml::Element* state = region->createChild("State"); MyGUI::UString stateOffsetValue; MyGUI::UString textColourValue; MyGUI::UString textShiftValue; propertySetNodes = stateNodes->getElementEnumerator(); while (propertySetNodes.next("PropertySet")) { MyGUI::xml::ElementEnumerator propertyNodes = propertySetNodes->getElementEnumerator(); while (propertyNodes.next("Property")) { MyGUI::xml::Element* propertyNode = propertyNodes.current(); std::string name; if (propertyNode->findAttribute("name", name)) { if (name == "Position") { MyGUI::IntCoord coord = regionCoord + MyGUI::IntPoint::parse(propertyNode->getContent()); stateOffsetValue = coord.print(); } else if (name == "TextColour") { textColourValue = propertyNode->getContent(); } else if (name == "TextShift") { textShiftValue = propertyNode->getContent(); } } } break; } MyGUI::UString stateNameValue = stateNodes->findAttribute("name"); state->addAttribute("name", convertStateName(stateNameValue)); if (regionTypeValue == "SimpleText" || regionTypeValue == "EditText") { state->addAttribute("colour", textColourValue); state->addAttribute("shift", textShiftValue); } else { state->addAttribute("offset", stateOffsetValue); if (stateNameValue == "Normal") { if (regionTypeValue == "TileRect") { MyGUI::xml::Element* prop = state->createChild("Property"); prop->addAttribute("key", "TileSize"); prop->addAttribute("value", regionCoord.size().print()); prop = state->createChild("Property"); prop->addAttribute("key", "TileH"); prop->addAttribute("value", MyGUI::utility::toString(tileHor)); prop = state->createChild("Property"); prop->addAttribute("key", "TileV"); prop->addAttribute("value", MyGUI::utility::toString(tileVer)); } } } } break; } } } }
size_t WobbleNodeAnimator::animate( bool _update, size_t _quad_count, MyGUI::VectorQuadData& _data, float _time, MyGUI::IVertexBuffer* _buffer, MyGUI::ITexture* _texture, const MyGUI::RenderTargetInfo& _info, const MyGUI::IntCoord& _coord, bool& _isAnimate ) { if (mDestroy) { return _quad_count; } // проверяем смещения виджета if (mOldCoord.empty()) { mOldCoord = _coord; } else if (mOldCoord.size() != _coord.size() && mOldCoord.point() != _coord.point()) { mInertiaPoint.set(0.5, 0.5); mInertiaMode = false; addInertia(MyGUI::FloatPoint(_coord.left-mOldCoord.left, _coord.top-mOldCoord.top)); } else if (mOldCoord.size() != _coord.size()) { mInertiaMode = true; addInertia(MyGUI::FloatPoint(_coord.width - mOldCoord.width, _coord.height-mOldCoord.height)); } else if (mOldCoord.point() != _coord.point()) { const MyGUI::IntPoint& point = MyGUI::InputManager::getInstance().getMousePosition(); mInertiaPoint = MyGUI::FloatPoint((float)(point.left - _coord.left) / (float)_coord.width , (float)(point.top - _coord.top) / (float)_coord.height); mInertiaMode = false; addInertia(MyGUI::FloatPoint(_coord.left-mOldCoord.left, _coord.top-mOldCoord.top)); } mOldCoord = _coord; addTime(_time); bool anim_update = squaredLength(mDragOffset) >= 0.3f; if (!anim_update) { return _quad_count; } _isAnimate = true; _quad_count = tesselation( _quad_count, _data, _texture, _info, _coord); buildQuadVertex(_data); return _quad_count; }
void SkinExportSerializer::writeRegion(pugi::xml_node _parent, DataPtr _parentData, DataPtr _data, bool _text) { bool isVisible = MyGUI::utility::parseValue<bool>(_data->getPropertyValue("Visible")) && MyGUI::utility::parseValue<bool>(_data->getPropertyValue("Enable")); if (!isVisible) return; MyGUI::IntCoord coord = MyGUI::IntCoord::parse(_data->getPropertyValue("Coord")); std::string type = _data->getPropertyValue("Type"); bool tileVert = true; bool tileHorz = true; if (type == "TileRect Vert") { type = "TileRect"; tileHorz = false; } else if (type == "TileRect Horz") { type = "TileRect"; tileVert = false; } pugi::xml_node node = _parent.append_child("BasisSkin"); node.append_attribute("type").set_value(type.c_str()); node.append_attribute("offset").set_value(coord.print().c_str()); node.append_attribute("align").set_value(convertEditorToExportAlign(_data->getPropertyValue("Name")).c_str()); for (Data::VectorData::const_iterator child = _parentData->getChilds().begin(); child != _parentData->getChilds().end(); child ++) { if ((*child)->getType()->getName() != "State") continue; bool visible = MyGUI::utility::parseValue<bool>((*child)->getPropertyValue("Visible")); if (!visible) continue; if (_text) { writeStateText(node, (*child), coord); } else { pugi::xml_node stateNode = writeState(node, (*child), coord); if (type == "TileRect") { pugi::xml_node propertyNode = stateNode.append_child("Property"); propertyNode.append_attribute("key").set_value("TileSize"); propertyNode.append_attribute("value").set_value(coord.size().print().c_str()); propertyNode = stateNode.append_child("Property"); propertyNode.append_attribute("key").set_value("TileH"); propertyNode.append_attribute("value").set_value(MyGUI::utility::toString(tileHorz).c_str()); propertyNode = stateNode.append_child("Property"); propertyNode.append_attribute("key").set_value("TileV"); propertyNode.append_attribute("value").set_value(MyGUI::utility::toString(tileVert).c_str()); } } } }