nsBlockFrame::PlaceFloater(nsIPresContext*     aPresContext, nsIFrame*           aFloater, nsPlaceholderFrame* aPlaceholder, nsBlockReflowState& aState)
nsBlockReflowState::PlaceFloater(nsPlaceholderFrame* aPlaceholder, PRBool& aIsLeftFloater)
nsBlockFrame::PlaceFloater(nsIPresContext*     aPresContext,                           nsIFrame*           aFloater,                           nsPlaceholderFrame* aPlaceholder,                           nsBlockReflowState& aState){  nsISpaceManager* sm = aState.mSpaceManager;  // Get the type of floater  nsStyleDisplay* floaterDisplay;  aFloater->GetStyleData(eStyleStruct_Display, (nsStyleStruct*&)floaterDisplay);  // Commit some space in the space manager, and adjust our current  // band of available space.  nsRect region;  aFloater->GetRect(region);  region.y = aState.mY;  if (NS_STYLE_FLOAT_LEFT == floaterDisplay->mFloats) {    region.x = aState.mX;  } else {    NS_ASSERTION(NS_STYLE_FLOAT_RIGHT == floaterDisplay->mFloats,                 "bad float type");    region.x = aState.mCurrentBand.availSpace.XMost() - region.width;  }  // XXX Don't forget the floater's margins...  sm->Translate(aState.mBorderPadding.left, 0);  sm->AddRectRegion(aFloater, region);  // Set the origin of the floater in world coordinates  nscoord worldX, worldY;  sm->GetTranslation(worldX, worldY);  aFloater->MoveTo(region.x + worldX, region.y + worldY);  sm->Translate(-aState.mBorderPadding.left, 0);  // Update the band of available space to reflect space taken up by  // the floater  GetAvailableSpace(aState, aState.mY);  if (nsnull != aState.mCurrentLine) {    nsLineLayout& lineLayout = *aState.mCurrentLine;    lineLayout.SetReflowSpace(aState.mCurrentBand.availSpace);  }}