void Widget::setSizePercent(const Vec2 &percent) { _sizePercent = percent; Size cSize = _customSize; if (_running) { Widget* widgetParent = getWidgetParent(); if (widgetParent) { cSize = Size(widgetParent->getContentSize().width * percent.x , widgetParent->getContentSize().height * percent.y); } else { cSize = Size(_parent->getContentSize().width * percent.x , _parent->getContentSize().height * percent.y); } } if (_ignoreSize) { this->setContentSize(getVirtualRendererSize()); } else { this->setContentSize(cSize); } _customSize = cSize; }
void Widget::ignoreContentAdaptWithSize(bool ignore) { if (_ignoreSize == ignore) { return; } _ignoreSize = ignore; if (_ignoreSize) { Size s = getVirtualRendererSize(); this->setContentSize(s); } else { this->setContentSize(_customSize); } }
void Widget::ignoreContentAdaptWithSize(bool ignore) { if (_ignoreSize == ignore) { return; } _ignoreSize = ignore; if (_ignoreSize) { Size s = getVirtualRendererSize(); _size = s; } else { _size = _customSize; } onSizeChanged(); }
void Button::updateContentSize() { if (_unifySize) { if (_scale9Enabled) { ProtectedNode::setContentSize(_customSize); } else { Size s = getNormalSize(); ProtectedNode::setContentSize(s); } onSizeChanged(); return; } if (_ignoreSize) { this->setContentSize(getVirtualRendererSize()); } }
void Widget::setContentSize(const cocos2d::Size &contentSize) { ProtectedNode::setContentSize(contentSize); _customSize = contentSize; if (_unifySize) { //unify Size logic } else if (_ignoreSize) { _contentSize = getVirtualRendererSize(); } if (!_usingLayoutComponent && _running) { Widget* widgetParent = getWidgetParent(); Size pSize; if (widgetParent) { pSize = widgetParent->getContentSize(); } else { pSize = _parent->getContentSize(); } float spx = 0.0f; float spy = 0.0f; if (pSize.width > 0.0f) { spx = _customSize.width / pSize.width; } if (pSize.height > 0.0f) { spy = _customSize.height / pSize.height; } _sizePercent.set(spx, spy); } onSizeChanged(); }
void Widget::setSize(const Size &size) { _customSize = size; if (_ignoreSize) { _size = getVirtualRendererSize(); } else { _size = size; } if (_running) { Widget* widgetParent = getWidgetParent(); Size pSize; if (widgetParent) { pSize = widgetParent->getSize(); } else { pSize = _parent->getContentSize(); } float spx = 0.0f; float spy = 0.0f; if (pSize.width > 0.0f) { spx = _customSize.width / pSize.width; } if (pSize.height > 0.0f) { spy = _customSize.height / pSize.height; } _sizePercent = Vec2(spx, spy); } onSizeChanged(); }
void Widget::setSizePercent(const Vec2 &percent) { if (_usingLayoutComponent) { auto component = this->getOrCreateLayoutComponent(); component->setUsingPercentContentSize(true); component->setPercentContentSize(percent); component->refreshLayout(); } else { _sizePercent = percent; Size cSize = _customSize; if (_running) { Widget* widgetParent = getWidgetParent(); if (widgetParent) { cSize = Size(widgetParent->getContentSize().width * percent.x, widgetParent->getContentSize().height * percent.y); } else { cSize = Size(_parent->getContentSize().width * percent.x, _parent->getContentSize().height * percent.y); } } if (_ignoreSize) { this->setContentSize(getVirtualRendererSize()); } else { this->setContentSize(cSize); } _customSize = cSize; } }
void RichText::formarRenderers() { if (_ignoreSize) { float newContentSizeWidth = 0.0f; float newContentSizeHeight = 0.0f; Vector<Node*>* row = (_elementRenders[0]); float nextPosX = 0.0f; for (ssize_t j=0; j<row->size(); j++) { Node* l = row->at(j); l->setAnchorPoint(Vec2::ZERO); l->setPosition(Vec2(nextPosX, 0.0f)); _elementRenderersContainer->addChild(l, 1); Size iSize = l->getContentSize(); newContentSizeWidth += iSize.width; newContentSizeHeight = MAX(newContentSizeHeight, iSize.height); nextPosX += iSize.width; } _elementRenderersContainer->setContentSize(Size(newContentSizeWidth, newContentSizeHeight)); } else { float newContentSizeHeight = 0.0f; float *maxHeights = new float[_elementRenders.size()]; for (size_t i=0; i<_elementRenders.size(); i++) { Vector<Node*>* row = (_elementRenders[i]); float maxHeight = 0.0f; for (ssize_t j=0; j<row->size(); j++) { Node* l = row->at(j); maxHeight = MAX(l->getContentSize().height, maxHeight); } maxHeights[i] = maxHeight; newContentSizeHeight += maxHeights[i]; } float nextPosY = _customSize.height; for (size_t i=0; i<_elementRenders.size(); i++) { Vector<Node*>* row = (_elementRenders[i]); float nextPosX = 0.0f; nextPosY -= (maxHeights[i] + _verticalSpace); for (ssize_t j=0; j<row->size(); j++) { Node* l = row->at(j); l->setAnchorPoint(Vec2::ZERO); l->setPosition(Vec2(nextPosX, nextPosY)); _elementRenderersContainer->addChild(l, 1); nextPosX += l->getContentSize().width; } } _elementRenderersContainer->setContentSize(_contentSize); delete [] maxHeights; } size_t length = _elementRenders.size(); for (size_t i = 0; i<length; i++) { Vector<Node*>* l = _elementRenders[i]; l->clear(); delete l; } _elementRenders.clear(); if (_ignoreSize) { Size s = getVirtualRendererSize(); this->setContentSize(s); } else { this->setContentSize(_customSize); } updateContentSizeWithTextureSize(_contentSize); _elementRenderersContainer->setPosition(_contentSize.width / 2.0f, _contentSize.height / 2.0f); }
void Widget::updateSizeAndPosition(const cocos2d::Size &parentSize) { switch (_sizeType) { case SizeType::ABSOLUTE: { if (_ignoreSize) { this->setContentSize(getVirtualRendererSize()); } else { this->setContentSize(_customSize); } float spx = 0.0f; float spy = 0.0f; if (parentSize.width > 0.0f) { spx = _customSize.width / parentSize.width; } if (parentSize.height > 0.0f) { spy = _customSize.height / parentSize.height; } _sizePercent.set(spx, spy); break; } case SizeType::PERCENT: { Size cSize = Size(parentSize.width * _sizePercent.x , parentSize.height * _sizePercent.y); if (_ignoreSize) { this->setContentSize(getVirtualRendererSize()); } else { this->setContentSize(cSize); } _customSize = cSize; break; } default: break; } //update position & position percent Vec2 absPos = getPosition(); switch (_positionType) { case PositionType::ABSOLUTE: { if (parentSize.width <= 0.0f || parentSize.height <= 0.0f) { _positionPercent.setZero(); } else { _positionPercent.set(absPos.x / parentSize.width, absPos.y / parentSize.height); } break; } case PositionType::PERCENT: { absPos.set(parentSize.width * _positionPercent.x, parentSize.height * _positionPercent.y); break; } default: break; } setPosition(absPos); }
void Widget::updateSizeAndPosition(const cocos2d::Size &parentSize) { switch (_sizeType) { case SizeType::ABSOLUTE: { if (_ignoreSize) { _size = getVirtualRendererSize(); } else { _size = _customSize; } float spx = 0.0f; float spy = 0.0f; if (parentSize.width > 0.0f) { spx = _customSize.width / parentSize.width; } if (parentSize.height > 0.0f) { spy = _customSize.height / parentSize.height; } _sizePercent = Vec2(spx, spy); break; } case SizeType::PERCENT: { Size cSize = Size(parentSize.width * _sizePercent.x , parentSize.height * _sizePercent.y); if (_ignoreSize) { _size = getVirtualRendererSize(); } else { _size = cSize; } _customSize = cSize; break; } default: break; } onSizeChanged(); Vec2 absPos = getPosition(); switch (_positionType) { case PositionType::ABSOLUTE: { if (parentSize.width <= 0.0f || parentSize.height <= 0.0f) { _positionPercent = Vec2::ZERO; } else { _positionPercent = Vec2(absPos.x / parentSize.width, absPos.y / parentSize.height); } break; } case PositionType::PERCENT: { absPos = Vec2(parentSize.width * _positionPercent.x, parentSize.height * _positionPercent.y); break; } default: break; } setPosition(absPos); }