本文整理汇总了C++中dom::Element::getShape方法的典型用法代码示例。如果您正苦于以下问题:C++ Element::getShape方法的具体用法?C++ Element::getShape怎么用?C++ Element::getShape使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类dom::Element
的用法示例。
在下文中一共展示了Element::getShape方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: align
//.........这里部分代码省略.........
case JustifyContent::SPACE_BETWEEN:
spacingMainAxisBetween = totalSpaceMainAxis.at(i)/(lines.at(i).size()-1);
break;
default:break;
}
}
currentMainPos = spacingMainAxisStart;
for(unsigned int j = 0; j < lines.at(i).size(); j++){
// set cross size of item
DOM::Element* element = lines.at(i).at(j);
AlignSelf alignSelf = getAlignSelf(element);
if(alignSelf == AlignSelf::STRETCH ||
((alignSelf == AlignSelf::AUTO) && (alignItems == AlignItems::STRETCH))){
if(horizontal){
element->setSizeByParent(element->getSizeByParent().x, lineSizes.at(i));
setLayoutHeightMinusMargin(element, lineSizes.at(i));
}else{
element->setSizeByParent(lineSizes.at(i), element->getSizeByParent().y);
setLayoutWidthMinusMargin(element, lineSizes.at(i));
}
}
//align item
float elementMainPos = currentMainPos;
float elementCrossPos = currentCrossPos;
float elementMainSize = horizontal ? getWidthPlusMargin(element) : getHeightPlusMargin(element);
float elementCrossSize = horizontal ? getHeightPlusMargin(element) : getWidthPlusMargin(element);
//align item on cross axis
AlignItems alignItem = alignItems;
if(alignSelf != AlignSelf::AUTO){
switch(alignSelf){
case AlignSelf::CENTER:
alignItem = AlignItems::CENTER;
break;
case AlignSelf::STRETCH:
case AlignSelf::FLEX_START:
alignItem = AlignItems::FLEX_START;
break;
case AlignSelf::FLEX_END:
alignItem = AlignItems::FLEX_END;
break;
default:
break;
}
}
switch(alignItem){
case AlignItems::FLEX_END:
elementCrossPos += lineSizes.at(i)-elementCrossSize;
break;
case AlignItems::CENTER:
elementCrossPos += (lineSizes.at(i)-elementCrossSize)/2.;
break;
default:
break;
}
//set final element position
if(horizontal){
DOMLH::setPosition(element, ofPoint(elementMainPos, elementCrossPos));
}else{
DOMLH::setPosition(element, ofPoint(elementCrossPos, elementMainPos));
}
totalWidth = max(totalWidth, element->getShape().getRight()+DOMLH::getMarginRight(element)+DOMLH::getPaddingRight(_parent));
totalHeight = max(totalHeight, element->getShape().getBottom()+DOMLH::getMarginBottom(element)+DOMLH::getPaddingBottom(_parent));
currentMainPos += elementMainSize + spacingMainAxisBetween;
}
currentCrossPos += lineSizes.at(i) + spacingCrossAxisBetween;
}
//make sure parent element contains all child elements on the main axis
// maxX += DOMLH::getPaddingRight(_parent);
// maxY += DOMLH::getPaddingBottom(_parent);
// if(horizontal){
// _parent->setLayoutSize(max(maxX,_parent->getWidth()), max(maxY,_parent->getHeight()));
// }else{
// _parent->setLayoutSize(max(maxX,_parent->getWidth()), max(maxY,_parent->getHeight()));
// }
// if(ofxGuiElement* el = dynamic_cast<ofxGuiElement*>(_parent)){
// cout << el->getName() << " total size end: " << totalWidth << " " << totalHeight << endl;
// }
_parent->setLayoutSize(totalWidth, totalHeight, false);
_parent->setNeedsRedraw();
}