本文整理汇总了C++中UIControl::GetRect方法的典型用法代码示例。如果您正苦于以下问题:C++ UIControl::GetRect方法的具体用法?C++ UIControl::GetRect怎么用?C++ UIControl::GetRect使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UIControl
的用法示例。
在下文中一共展示了UIControl::GetRect方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: AlignLeftTop
ControlsPositionData BaseAlignHandler::AlignLeftTop(const List<UIControl*>& controlsList, bool isLeft)
{
ControlsPositionData resultData;
// Find the reference position. All the alignment is to be done in absolute coords.
float32 referencePos = FLT_MAX;
for (List<UIControl*>::const_iterator iter = controlsList.begin(); iter != controlsList.end(); iter ++)
{
UIControl* uiControl = *iter;
if (!uiControl)
{
continue;
}
resultData.AddControl(uiControl);
Rect absoluteRect = uiControl->GetRect(true);
float32 currentPos = isLeft ? absoluteRect.x : absoluteRect.y;
if (currentPos < referencePos)
{
referencePos = currentPos;
}
}
// Second pass - update.
for (List<UIControl*>::const_iterator iter = controlsList.begin(); iter != controlsList.end(); iter ++)
{
UIControl* uiControl = *iter;
if (!uiControl)
{
continue;
}
Rect absoluteRect = uiControl->GetRect(true);
if (isLeft)
{
float32 offsetX = absoluteRect.x - referencePos;
absoluteRect.x -= offsetX;
}
else
{
float32 offsetY = absoluteRect.y - referencePos;
absoluteRect.y -= offsetY;
}
uiControl->SetRect(absoluteRect, true);
}
return resultData;
}
示例2: AlignRightBottom
ControlsPositionData BaseAlignHandler::AlignRightBottom(const List<UIControl*>& controlsList, bool isRight)
{
ControlsPositionData resultData;
// Find the bottom/right position. All the alignment is to be done in absolute coords.
float32 referencePos = FLT_MIN;
for (List<UIControl*>::const_iterator iter = controlsList.begin(); iter != controlsList.end(); iter ++)
{
UIControl* uiControl = *iter;
if (!uiControl)
{
continue;
}
resultData.AddControl(uiControl);
Rect absoluteRect = uiControl->GetRect(true);
float32 controlSize = isRight ? (absoluteRect.x + absoluteRect.dx) : (absoluteRect.y + absoluteRect.dy);
if (controlSize > referencePos)
{
referencePos = controlSize;
}
}
// Second pass - update.
for (List<UIControl*>::const_iterator iter = controlsList.begin(); iter != controlsList.end(); iter ++)
{
UIControl* uiControl = *iter;
if (!uiControl)
{
continue;
}
Rect absoluteRect = uiControl->GetRect(true);
if (isRight)
{
float32 offsetX = referencePos - (absoluteRect.x + absoluteRect.dx);
absoluteRect.x += offsetX;
}
else
{
float32 offsetY = referencePos - (absoluteRect.y + absoluteRect.dy);
absoluteRect.y += offsetY;
}
uiControl->SetRect(absoluteRect, true);
}
return resultData;
}
示例3: AlignCenter
ControlsPositionData BaseAlignHandler::AlignCenter(const List<UIControl*>& controlsList, bool isHorizontal)
{
ControlsPositionData resultData;
for (List<UIControl*>::const_iterator iter = controlsList.begin(); iter != controlsList.end(); iter ++)
{
UIControl* uiControl = *iter;
if (!uiControl)
{
continue;
}
resultData.AddControl(uiControl);
}
// Perform the alignment on the first or last control, depending on the flag.
UIControl* referenceControl = GetReferenceControl(controlsList);
Vector2 referenceCenter = referenceControl->GetRect(true).GetCenter();
// Second pass - update.
for (List<UIControl*>::const_iterator iter = controlsList.begin(); iter != controlsList.end(); iter ++)
{
UIControl* uiControl = *iter;
if (!uiControl)
{
continue;
}
Rect absoluteRect = uiControl->GetRect(true);
Vector2 currentCenter = absoluteRect.GetCenter();
if (isHorizontal)
{
absoluteRect.x -= (currentCenter.x - referenceCenter.x);
}
else
{
absoluteRect.y -= (currentCenter.y - referenceCenter.y);
}
uiControl->SetRect(absoluteRect, true);
}
return resultData;
}
示例4: ApplyAjustedSize
ControlsPositionData ControlsAdjustSizeCommand::ApplyAjustedSize(HierarchyTreeController::SELECTEDCONTROLNODES& controls)
{
ControlsPositionData resultData;
for (HierarchyTreeController::SELECTEDCONTROLNODES::iterator iter = controls.begin(); iter != controls.end(); ++iter)
{
HierarchyTreeControlNode* control = (*iter);
UIControl* uiControl = control->GetUIObject();
int32 nodeId = control->GetId();
if (uiControl)
{
// Get sprite
Sprite* sprite = uiControl->GetSprite();
Rect prevRect = uiControl->GetRect();
Rect updatedRect = prevRect;
if (sprite)
{
// Save control size data for undo
resultData.AddControl(uiControl);
// Set new size of updated rect
updatedRect.dx = sprite->GetWidth();
updatedRect.dy = sprite->GetHeight();
BaseMetadata* baseMetadata = GetMetadataForTreeNode(nodeId);
// This command is NOT state-aware and contains one and only param.
baseMetadata->SetActiveParamID(0);
baseMetadata->ApplyResize(prevRect, updatedRect);
SAFE_DELETE(baseMetadata);
}
}
}
return resultData;
}
示例5: SetParent
void HierarchyTreeControlNode::SetParent(HierarchyTreeNode* node, HierarchyTreeNode* insertAfter)
{
if (this == insertAfter)
return;
if (parent)
parent->RemoveTreeNode(this, false, false);
HierarchyTreeControlNode* newParentControl = dynamic_cast<HierarchyTreeControlNode* >(node);
HierarchyTreeScreenNode* newParentScreen = dynamic_cast<HierarchyTreeScreenNode* >(node);
DVASSERT(newParentControl || newParentScreen);
if (!newParentControl && !newParentScreen)
return;
UIControl* afterControl = NULL;
HierarchyTreeControlNode* insertAfterControl = dynamic_cast<HierarchyTreeControlNode* >(insertAfter);
if (insertAfterControl)
afterControl = insertAfterControl->GetUIObject();
UIControl* newParentUI = NULL;
if (newParentControl)
newParentUI = newParentControl->GetUIObject();
else if (newParentScreen)
newParentUI = newParentScreen->GetScreen();
node->AddTreeNode(this, insertAfter);
if (newParentUI && uiObject)
{
Rect controlAbsoluteRect = uiObject->GetRect(true);
Rect parentAbsoluteRect = newParentUI->GetRect(true);
if (insertAfter != node)
{
newParentUI->InsertChildAbove(uiObject, afterControl);
}
else
{
UIControl* belowControl = NULL;
const List<UIControl*> & controls = newParentUI->GetChildren();
if (controls.size())
{
belowControl = *controls.begin();
}
newParentUI->InsertChildBelow(uiObject, belowControl);
}
// Recalculate the relative coords of the moved object to don't change its position.
Vector2 newControlOffset = controlAbsoluteRect.GetPosition() - parentAbsoluteRect.GetPosition();
uiObject->SetRect(Rect(newControlOffset, uiObject->GetRect().GetSize()));
// Fix
// DF-2395 - Recalculate scrollContainer content each time we add controls to it
UIScrollViewContainer *container = dynamic_cast<UIScrollViewContainer*>(newParentUI);
if (container)
{
UIScrollView *scroll = dynamic_cast<UIScrollView*>(container->GetParent());
if (scroll)
{
scroll->RecalculateContentSize();
}
}
}
parent = node;
}