本文整理汇总了C++中nsRect::Empty方法的典型用法代码示例。如果您正苦于以下问题:C++ nsRect::Empty方法的具体用法?C++ nsRect::Empty怎么用?C++ nsRect::Empty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类nsRect
的用法示例。
在下文中一共展示了nsRect::Empty方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: while
nsresult
nsBoxObject::GetOffsetRect(nsRect& aRect)
{
aRect.x = aRect.y = 0;
aRect.Empty();
if (!mContent)
return NS_ERROR_NOT_INITIALIZED;
nsresult res = NS_OK;
nsCOMPtr<nsIDocument> doc = mContent->GetDocument();
if (doc) {
// Flush all pending notifications so that our frames are uptodate. Must
// do this before we get the presshell, since this can destroy presshells.
doc->FlushPendingNotifications(Flush_Layout);
// Get Presentation shell 0
nsIPresShell *presShell = doc->GetShellAt(0);
if(presShell) {
// Get the Frame for our content
nsIFrame* frame = nsnull;
presShell->GetPrimaryFrameFor(mContent, &frame);
if(frame != nsnull) {
// Get its origin
nsPoint origin = frame->GetPosition();
// Get the union of all rectangles in this and continuation frames
nsRect rcFrame;
nsIFrame* next = frame;
do {
rcFrame.UnionRect(rcFrame, next->GetRect());
next = next->GetNextInFlow();
} while (nsnull != next);
// Find the frame parent whose content's tagName either matches
// the tagName passed in or is the document element.
nsIContent *docElement = doc->GetRootContent();
nsIFrame* parent = frame->GetParent();
while (parent) {
// If we've hit the document element, break here
if (parent->GetContent() == docElement) {
break;
}
// Add the parent's origin to our own to get to the
// right coordinate system
origin += parent->GetPosition();
parent = parent->GetParent();
}
// For the origin, add in the border for the frame
const nsStyleBorder* border = frame->GetStyleBorder();
origin.x += border->GetBorderWidth(NS_SIDE_LEFT);
origin.y += border->GetBorderWidth(NS_SIDE_TOP);
// And subtract out the border for the parent
if (parent) {
const nsStyleBorder* parentBorder = parent->GetStyleBorder();
origin.x -= parentBorder->GetBorderWidth(NS_SIDE_LEFT);
origin.y -= parentBorder->GetBorderWidth(NS_SIDE_TOP);
}
// Get the Presentation Context from the Shell
nsPresContext *context = presShell->GetPresContext();
if (context) {
// Get the scale from that Presentation Context
float scale;
scale = context->TwipsToPixels();
// Convert to pixels using that scale
aRect.x = NSTwipsToIntPixels(origin.x, scale);
aRect.y = NSTwipsToIntPixels(origin.y, scale);
aRect.width = NSTwipsToIntPixels(rcFrame.width, scale);
aRect.height = NSTwipsToIntPixels(rcFrame.height, scale);
}
}
}
}
return res;
}
示例2: autoSpaceManager
//.........这里部分代码省略.........
if (mLegendRect.height > border.top) {
// center the border on the legend
mLegendSpace = mLegendRect.height - border.top;
} else {
mLegendRect.y = (border.top - mLegendRect.height)/2;
}
// if the legend space changes then we need to reflow the
// content area as well.
if (mLegendSpace != oldSpace) {
if (reflowContent == PR_FALSE || reason == eReflowReason_Dirty) {
reflowContent = PR_TRUE;
reason = eReflowReason_Resize;
}
}
// if we are contrained then remove the legend from our available height.
if (NS_INTRINSICSIZE != availSize.height) {
if (availSize.height >= mLegendSpace)
availSize.height -= mLegendSpace;
}
// don't get any smaller than the legend
if (NS_INTRINSICSIZE != availSize.width) {
if (availSize.width < mLegendRect.width)
availSize.width = mLegendRect.width;
}
FinishReflowChild(mLegendFrame, aPresContext, &legendReflowState,
legendDesiredSize, 0, 0, NS_FRAME_NO_MOVE_FRAME);
}
} else {
mLegendRect.Empty();
mLegendSpace = 0;
}
nsRect contentRect;
// reflow the content frame only if needed
if (mContentFrame) {
if (reflowContent) {
availSize.width = aReflowState.mComputedWidth;
nsHTMLReflowState kidReflowState(aPresContext, aReflowState, mContentFrame,
availSize, reason);
nsHTMLReflowMetrics kidDesiredSize(aDesiredSize.mComputeMEW, aDesiredSize.mFlags);
// Reflow the frame
ReflowChild(mContentFrame, aPresContext, kidDesiredSize, kidReflowState,
borderPadding.left + kidReflowState.mComputedMargin.left,
borderPadding.top + mLegendSpace + kidReflowState.mComputedMargin.top,
0, aStatus);
// set the rect. make sure we add the margin back in.
contentRect.SetRect(borderPadding.left,borderPadding.top + mLegendSpace,kidDesiredSize.width ,kidDesiredSize.height);
if (aReflowState.mComputedHeight != NS_INTRINSICSIZE &&
borderPadding.top + mLegendSpace+kidDesiredSize.height > aReflowState.mComputedHeight) {
kidDesiredSize.height = aReflowState.mComputedHeight-(borderPadding.top + mLegendSpace);
}
FinishReflowChild(mContentFrame, aPresContext, &kidReflowState,
kidDesiredSize, contentRect.x, contentRect.y, 0);
if (aDesiredSize.mComputeMEW) {
aDesiredSize.mMaxElementWidth = kidDesiredSize.mMaxElementWidth;
if (eStyleUnit_Coord == aReflowState.mStylePosition->mWidth.GetUnit() &&