1998-11-16 17:11:12 +00:00
|
|
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
|
|
*
|
1999-11-06 03:40:37 +00:00
|
|
|
* The contents of this file are subject to the Netscape Public
|
|
|
|
* License Version 1.1 (the "License"); you may not use this file
|
|
|
|
* except in compliance with the License. You may obtain a copy of
|
|
|
|
* the License at http://www.mozilla.org/NPL/
|
1998-11-16 17:11:12 +00:00
|
|
|
*
|
1999-11-06 03:40:37 +00:00
|
|
|
* Software distributed under the License is distributed on an "AS
|
|
|
|
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
|
|
|
* implied. See the License for the specific language governing
|
|
|
|
* rights and limitations under the License.
|
1998-11-16 17:11:12 +00:00
|
|
|
*
|
|
|
|
* The Original Code is Mozilla Communicator client code.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is Netscape Communications
|
1999-11-06 03:40:37 +00:00
|
|
|
* Corporation. Portions created by Netscape are
|
|
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
|
|
* Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
1998-11-16 17:11:12 +00:00
|
|
|
*/
|
|
|
|
#ifndef nsBlockFrame_h___
|
|
|
|
#define nsBlockFrame_h___
|
|
|
|
|
|
|
|
#include "nsHTMLContainerFrame.h"
|
1999-11-03 00:42:12 +00:00
|
|
|
#include "nsHTMLParts.h"
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
class nsBlockReflowState;
|
|
|
|
class nsBulletFrame;
|
|
|
|
class nsLineBox;
|
|
|
|
class nsTextRun;
|
1999-04-20 00:27:43 +00:00
|
|
|
class nsFirstLineFrame;
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1998-11-18 06:13:58 +00:00
|
|
|
/**
|
|
|
|
* Child list name indices
|
|
|
|
* @see #GetAdditionalChildListName()
|
|
|
|
*/
|
|
|
|
#define NS_BLOCK_FRAME_FLOATER_LIST_INDEX 0
|
|
|
|
#define NS_BLOCK_FRAME_BULLET_LIST_INDEX 1
|
|
|
|
#define NS_BLOCK_FRAME_LAST_LIST_INDEX NS_BLOCK_FRAME_BULLET_LIST_INDEX
|
|
|
|
|
1999-02-18 22:22:55 +00:00
|
|
|
/**
|
1999-11-03 00:42:12 +00:00
|
|
|
* Additional frame-state bits. There are more of these bits
|
|
|
|
* defined in nsHTMLParts.h (XXX: note: this should be cleaned up)
|
1999-02-18 22:22:55 +00:00
|
|
|
*/
|
1999-04-20 00:27:43 +00:00
|
|
|
#define NS_BLOCK_FRAME_HAS_OUTSIDE_BULLET 0x80000000
|
|
|
|
#define NS_BLOCK_IS_HTML_PARAGRAPH 0x40000000
|
1999-11-03 00:42:12 +00:00
|
|
|
#define NS_BLOCK_HAS_FIRST_LETTER_STYLE 0x20000000
|
1999-02-18 22:22:55 +00:00
|
|
|
|
1999-02-09 17:31:33 +00:00
|
|
|
#define nsBlockFrameSuper nsHTMLContainerFrame
|
1998-12-05 16:02:08 +00:00
|
|
|
|
1999-03-27 01:21:21 +00:00
|
|
|
#define NS_BLOCK_FRAME_CID \
|
|
|
|
{ 0xa6cf90df, 0x15b3, 0x11d2,{0x93, 0x2e, 0x00, 0x80, 0x5f, 0x8a, 0xdd, 0x32}}
|
|
|
|
|
|
|
|
extern const nsIID kBlockFrameCID;
|
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
// Base class for block and inline frames
|
1999-02-09 17:31:33 +00:00
|
|
|
class nsBlockFrame : public nsBlockFrameSuper
|
1998-11-16 17:11:12 +00:00
|
|
|
{
|
|
|
|
public:
|
1999-12-04 23:49:50 +00:00
|
|
|
friend nsresult NS_NewBlockFrame(nsIPresShell* aPresShell, nsIFrame** aNewFrame, PRUint32 aFlags);
|
1999-02-09 17:31:33 +00:00
|
|
|
|
1998-11-16 17:11:12 +00:00
|
|
|
// nsISupports
|
|
|
|
NS_IMETHOD QueryInterface(const nsIID& aIID, void** aInstancePtr);
|
|
|
|
|
|
|
|
// nsIFrame
|
1999-11-24 06:03:41 +00:00
|
|
|
NS_IMETHOD Init(nsIPresContext* aPresContext,
|
1999-02-25 05:31:15 +00:00
|
|
|
nsIContent* aContent,
|
|
|
|
nsIFrame* aParent,
|
|
|
|
nsIStyleContext* aContext,
|
|
|
|
nsIFrame* aPrevInFlow);
|
1999-11-24 06:03:41 +00:00
|
|
|
NS_IMETHOD SetInitialChildList(nsIPresContext* aPresContext,
|
1998-11-16 17:11:12 +00:00
|
|
|
nsIAtom* aListName,
|
|
|
|
nsIFrame* aChildList);
|
1999-11-24 06:03:41 +00:00
|
|
|
NS_IMETHOD AppendFrames(nsIPresContext* aPresContext,
|
1999-02-02 17:31:09 +00:00
|
|
|
nsIPresShell& aPresShell,
|
|
|
|
nsIAtom* aListName,
|
|
|
|
nsIFrame* aFrameList);
|
1999-11-24 06:03:41 +00:00
|
|
|
NS_IMETHOD InsertFrames(nsIPresContext* aPresContext,
|
1999-02-02 17:31:09 +00:00
|
|
|
nsIPresShell& aPresShell,
|
|
|
|
nsIAtom* aListName,
|
|
|
|
nsIFrame* aPrevFrame,
|
|
|
|
nsIFrame* aFrameList);
|
1999-11-24 06:03:41 +00:00
|
|
|
NS_IMETHOD RemoveFrame(nsIPresContext* aPresContext,
|
1999-02-02 17:31:09 +00:00
|
|
|
nsIPresShell& aPresShell,
|
|
|
|
nsIAtom* aListName,
|
|
|
|
nsIFrame* aOldFrame);
|
2000-01-22 01:16:50 +00:00
|
|
|
NS_IMETHOD FirstChild(nsIPresContext* aPresContext,
|
|
|
|
nsIAtom* aListName,
|
|
|
|
nsIFrame** aFirstChild) const;
|
1999-02-09 17:31:33 +00:00
|
|
|
NS_IMETHOD GetAdditionalChildListName(PRInt32 aIndex,
|
1999-02-10 02:25:01 +00:00
|
|
|
nsIAtom** aListName) const;
|
1999-11-24 06:03:41 +00:00
|
|
|
NS_IMETHOD Destroy(nsIPresContext* aPresContext);
|
1998-11-16 17:11:12 +00:00
|
|
|
NS_IMETHOD IsSplittable(nsSplittableType& aIsSplittable) const;
|
1999-02-09 17:31:33 +00:00
|
|
|
NS_IMETHOD IsPercentageBase(PRBool& aBase) const;
|
1999-11-24 06:03:41 +00:00
|
|
|
NS_IMETHOD Paint(nsIPresContext* aPresContext,
|
1998-11-16 17:11:12 +00:00
|
|
|
nsIRenderingContext& aRenderingContext,
|
1998-12-18 15:54:23 +00:00
|
|
|
const nsRect& aDirtyRect,
|
|
|
|
nsFramePaintLayer aWhichLayer);
|
1999-02-12 17:45:58 +00:00
|
|
|
NS_IMETHOD GetFrameType(nsIAtom** aType) const;
|
1999-09-01 01:02:16 +00:00
|
|
|
#ifdef DEBUG
|
1999-11-01 22:12:45 +00:00
|
|
|
NS_IMETHOD List(nsIPresContext* aPresContext, FILE* out, PRInt32 aIndent) const;
|
|
|
|
NS_IMETHOD GetFrameName(nsString& aResult) const;
|
1999-08-31 03:09:40 +00:00
|
|
|
NS_IMETHOD SizeOf(nsISizeOfHandler* aHandler, PRUint32* aResult) const;
|
1998-11-16 17:11:12 +00:00
|
|
|
NS_IMETHOD VerifyTree() const;
|
1999-11-01 22:12:45 +00:00
|
|
|
#endif
|
1999-10-26 04:44:41 +00:00
|
|
|
NS_IMETHOD GetFrameForPoint(nsIPresContext* aPresContext, const nsPoint& aPoint, nsIFrame** aFrame);
|
1999-11-24 06:03:41 +00:00
|
|
|
NS_IMETHOD HandleEvent(nsIPresContext* aPresContext,
|
1999-04-13 21:29:08 +00:00
|
|
|
nsGUIEvent* aEvent,
|
1999-11-24 06:03:41 +00:00
|
|
|
nsEventStatus* aEventStatus);
|
2000-01-12 08:28:24 +00:00
|
|
|
NS_IMETHOD ReflowDirtyChild(nsIPresShell* aPresShell, nsIFrame* aChild);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
|
|
|
// nsIHTMLReflow
|
1999-11-24 06:03:41 +00:00
|
|
|
NS_IMETHOD Reflow(nsIPresContext* aPresContext,
|
1998-11-16 17:11:12 +00:00
|
|
|
nsHTMLReflowMetrics& aDesiredSize,
|
|
|
|
const nsHTMLReflowState& aReflowState,
|
|
|
|
nsReflowStatus& aStatus);
|
|
|
|
|
1999-02-23 19:18:12 +00:00
|
|
|
NS_IMETHOD AttributeChanged(nsIPresContext* aPresContext,
|
|
|
|
nsIContent* aChild,
|
1999-10-15 23:16:45 +00:00
|
|
|
PRInt32 aNameSpaceID,
|
1999-02-23 19:18:12 +00:00
|
|
|
nsIAtom* aAttribute,
|
|
|
|
PRInt32 aHint);
|
|
|
|
|
1998-11-16 17:11:12 +00:00
|
|
|
#ifdef DO_SELECTION
|
1999-11-24 06:03:41 +00:00
|
|
|
NS_IMETHOD HandleEvent(nsIPresContext* aPresContext,
|
1998-11-16 17:11:12 +00:00
|
|
|
nsGUIEvent* aEvent,
|
1999-11-24 06:03:41 +00:00
|
|
|
nsEventStatus* aEventStatus);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-11-24 06:03:41 +00:00
|
|
|
NS_IMETHOD HandleDrag(nsIPresContext* aPresContext,
|
1998-11-16 17:11:12 +00:00
|
|
|
nsGUIEvent* aEvent,
|
1999-11-24 06:03:41 +00:00
|
|
|
nsEventStatus* aEventStatus);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-02-09 17:31:33 +00:00
|
|
|
nsIFrame * FindHitFrame(nsBlockFrame * aBlockFrame,
|
1998-11-16 17:11:12 +00:00
|
|
|
const nscoord aX, const nscoord aY,
|
|
|
|
const nsPoint & aPoint);
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
1999-11-24 06:03:41 +00:00
|
|
|
virtual void DeleteChildsNextInFlow(nsIPresContext* aPresContext,
|
1999-01-15 22:53:39 +00:00
|
|
|
nsIFrame* aNextInFlow);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-03-27 01:21:21 +00:00
|
|
|
nsIFrame* GetTopBlockChild();
|
|
|
|
|
1999-09-15 00:28:10 +00:00
|
|
|
nsresult UpdateSpaceManager(nsIPresContext* aPresContext,
|
|
|
|
nsISpaceManager* aSpaceManager);
|
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
protected:
|
1999-02-09 17:31:33 +00:00
|
|
|
nsBlockFrame();
|
|
|
|
virtual ~nsBlockFrame();
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-04-27 22:11:05 +00:00
|
|
|
nsIStyleContext* GetFirstLetterStyle(nsIPresContext* aPresContext);
|
|
|
|
|
1998-11-16 17:11:12 +00:00
|
|
|
void SetFlags(PRUint32 aFlags) {
|
1999-11-03 00:42:12 +00:00
|
|
|
mState &= ~NS_BLOCK_FLAGS_MASK;
|
|
|
|
mState |= aFlags;
|
1998-11-16 17:11:12 +00:00
|
|
|
}
|
|
|
|
|
1999-02-18 22:22:55 +00:00
|
|
|
PRBool HaveOutsideBullet() const {
|
|
|
|
return 0 != (mState & NS_BLOCK_FRAME_HAS_OUTSIDE_BULLET);
|
|
|
|
}
|
|
|
|
|
1999-09-16 19:56:36 +00:00
|
|
|
void SlideLine(nsBlockReflowState& aState,
|
1999-04-03 18:59:01 +00:00
|
|
|
nsLineBox* aLine, nscoord aDY);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-10-26 04:44:41 +00:00
|
|
|
PRBool DrainOverflowLines(nsIPresContext* aPresContext);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
virtual PRIntn GetSkipSides() const;
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-03-05 04:21:32 +00:00
|
|
|
virtual void ComputeFinalSize(const nsHTMLReflowState& aReflowState,
|
|
|
|
nsBlockReflowState& aState,
|
1998-12-05 16:02:08 +00:00
|
|
|
nsHTMLReflowMetrics& aMetrics);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-04-20 00:27:43 +00:00
|
|
|
nsresult AddFrames(nsIPresContext* aPresContext,
|
|
|
|
nsIFrame* aFrameList,
|
|
|
|
nsIFrame* aPrevSibling);
|
|
|
|
|
1999-08-31 03:09:40 +00:00
|
|
|
void FixParentAndView(nsIPresContext* aPresContext, nsIFrame* aFrame);
|
|
|
|
|
|
|
|
nsresult DoRemoveFrame(nsIPresContext* aPresContext,
|
|
|
|
nsIFrame* aDeletedFrame);
|
|
|
|
|
1999-04-20 00:27:43 +00:00
|
|
|
|
1999-02-09 17:31:33 +00:00
|
|
|
nsresult PrepareInitialReflow(nsBlockReflowState& aState);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-02-09 17:31:33 +00:00
|
|
|
nsresult PrepareStyleChangedReflow(nsBlockReflowState& aState);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-02-09 17:31:33 +00:00
|
|
|
nsresult PrepareChildIncrementalReflow(nsBlockReflowState& aState);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-02-09 17:31:33 +00:00
|
|
|
nsresult PrepareResizeReflow(nsBlockReflowState& aState);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-02-09 17:31:33 +00:00
|
|
|
nsresult ReflowDirtyLines(nsBlockReflowState& aState);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-04-03 18:59:01 +00:00
|
|
|
void RecoverStateFrom(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine,
|
1999-07-14 15:16:56 +00:00
|
|
|
nscoord aDeltaY,
|
|
|
|
nsRect* aDamageRect);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
//----------------------------------------
|
|
|
|
// Methods for line reflow
|
1999-02-09 17:31:33 +00:00
|
|
|
// XXX nuke em
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-02-09 17:31:33 +00:00
|
|
|
nsresult ReflowLine(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine,
|
1999-07-14 15:16:56 +00:00
|
|
|
PRBool* aKeepReflowGoing,
|
1999-08-01 16:50:52 +00:00
|
|
|
PRBool aDamageDirtyArea = PR_FALSE);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
nsresult PlaceLine(nsBlockReflowState& aState,
|
1999-08-27 21:45:37 +00:00
|
|
|
nsLineLayout& aLineLayout,
|
1998-12-05 16:02:08 +00:00
|
|
|
nsLineBox* aLine,
|
2000-01-08 03:58:27 +00:00
|
|
|
PRBool* aKeepReflowGoing,
|
|
|
|
PRBool aUpdateMaximumWidth);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
2000-01-12 08:28:24 +00:00
|
|
|
nsresult MarkLineDirty (nsLineBox* aLine,
|
|
|
|
nsLineBox* aPrevLine);
|
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
// XXX blech
|
|
|
|
void PostPlaceLine(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine,
|
|
|
|
const nsSize& aMaxElementSize);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1998-12-17 18:52:10 +00:00
|
|
|
void ComputeLineMaxElementSize(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine,
|
|
|
|
nsSize* aMaxElementSize);
|
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
// XXX where to go
|
|
|
|
PRBool ShouldJustifyLine(nsBlockReflowState& aState, nsLineBox* aLine);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1998-12-07 22:28:23 +00:00
|
|
|
void DeleteLine(nsBlockReflowState& aState, nsLineBox* aLine);
|
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
//----------------------------------------
|
|
|
|
// Methods for individual frame reflow
|
|
|
|
|
1999-03-27 01:21:21 +00:00
|
|
|
PRBool ShouldApplyTopMargin(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine);
|
1998-12-05 16:02:08 +00:00
|
|
|
|
|
|
|
nsresult ReflowBlockFrame(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine,
|
1999-02-12 17:45:58 +00:00
|
|
|
PRBool* aKeepGoing);
|
1998-12-05 16:02:08 +00:00
|
|
|
|
1999-03-21 01:15:12 +00:00
|
|
|
nsresult ReflowInlineFrames(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine,
|
2000-01-08 03:58:27 +00:00
|
|
|
PRBool* aKeepLineGoing,
|
|
|
|
PRBool aUpdateMaximumWidth = PR_FALSE);
|
1999-03-21 01:15:12 +00:00
|
|
|
|
1999-08-27 21:45:37 +00:00
|
|
|
nsresult DoReflowInlineFrames(nsBlockReflowState& aState,
|
|
|
|
nsLineLayout& aLineLayout,
|
|
|
|
nsLineBox* aLine,
|
|
|
|
PRBool* aKeepReflowGoing,
|
2000-01-08 03:58:27 +00:00
|
|
|
PRUint8* aLineReflowStatus,
|
|
|
|
PRBool aUpdateMaximumWidth);
|
1999-08-27 21:45:37 +00:00
|
|
|
|
|
|
|
nsresult DoReflowInlineFramesAuto(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine,
|
|
|
|
PRBool* aKeepReflowGoing,
|
2000-01-08 03:58:27 +00:00
|
|
|
PRUint8* aLineReflowStatus,
|
|
|
|
PRBool aUpdateMaximumWidth);
|
1999-08-27 21:45:37 +00:00
|
|
|
|
|
|
|
nsresult DoReflowInlineFramesMalloc(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine,
|
|
|
|
PRBool* aKeepReflowGoing,
|
2000-01-08 03:58:27 +00:00
|
|
|
PRUint8* aLineReflowStatus,
|
|
|
|
PRBool aUpdateMaximumWidth);
|
1999-08-27 21:45:37 +00:00
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
nsresult ReflowInlineFrame(nsBlockReflowState& aState,
|
1999-08-27 21:45:37 +00:00
|
|
|
nsLineLayout& aLineLayout,
|
1998-12-05 16:02:08 +00:00
|
|
|
nsLineBox* aLine,
|
|
|
|
nsIFrame* aFrame,
|
1999-03-21 01:15:12 +00:00
|
|
|
PRUint8* aLineReflowStatus);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-04-01 01:37:36 +00:00
|
|
|
nsresult ReflowFloater(nsBlockReflowState& aState,
|
|
|
|
nsPlaceholderFrame* aPlaceholder,
|
|
|
|
nsRect& aCombinedRect,
|
1999-07-14 17:26:20 +00:00
|
|
|
nsMargin& aMarginResult,
|
|
|
|
nsMargin& aComputedOffsetsResult);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
//----------------------------------------
|
|
|
|
// Methods for pushing/pulling lines/frames
|
|
|
|
|
|
|
|
virtual nsresult CreateContinuationFor(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine,
|
|
|
|
nsIFrame* aFrame,
|
|
|
|
PRBool& aMadeNewFrame);
|
|
|
|
|
|
|
|
nsresult SplitLine(nsBlockReflowState& aState,
|
1999-08-27 21:45:37 +00:00
|
|
|
nsLineLayout& aLineLayout,
|
1998-12-05 16:02:08 +00:00
|
|
|
nsLineBox* aLine,
|
|
|
|
nsIFrame* aFrame);
|
|
|
|
|
1999-02-09 17:31:33 +00:00
|
|
|
nsBlockFrame* FindFollowingBlockFrame(nsIFrame* aFrame);
|
1998-12-05 16:02:08 +00:00
|
|
|
|
|
|
|
nsresult PullFrame(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine,
|
|
|
|
nsIFrame*& aFrameResult);
|
|
|
|
|
|
|
|
nsresult PullFrame(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aToLine,
|
|
|
|
nsLineBox** aFromList,
|
|
|
|
PRBool aUpdateGeometricParent,
|
|
|
|
nsIFrame*& aFrameResult,
|
|
|
|
PRBool& aStopPulling);
|
|
|
|
|
|
|
|
void PushLines(nsBlockReflowState& aState);
|
|
|
|
|
|
|
|
//----------------------------------------
|
|
|
|
//XXX
|
1999-11-24 06:03:41 +00:00
|
|
|
virtual void PaintChildren(nsIPresContext* aPresContext,
|
1998-12-18 15:54:23 +00:00
|
|
|
nsIRenderingContext& aRenderingContext,
|
|
|
|
const nsRect& aDirtyRect,
|
|
|
|
nsFramePaintLayer aWhichLayer);
|
|
|
|
|
1999-11-24 06:03:41 +00:00
|
|
|
void PaintFloaters(nsIPresContext* aPresContext,
|
1998-11-16 17:11:12 +00:00
|
|
|
nsIRenderingContext& aRenderingContext,
|
1999-03-26 00:39:04 +00:00
|
|
|
const nsRect& aDirtyRect);
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-04-21 19:58:38 +00:00
|
|
|
nsLineBox* FindLineFor(nsIFrame* aFrame, nsLineBox** aPrevLineResult,
|
|
|
|
PRBool* aIsFloaterResult);
|
1998-12-05 16:02:08 +00:00
|
|
|
|
|
|
|
void PropogateReflowDamage(nsBlockReflowState& aState,
|
|
|
|
nsLineBox* aLine,
|
1999-09-15 00:28:10 +00:00
|
|
|
const nsRect& aOldCombinedArea,
|
1998-12-05 16:02:08 +00:00
|
|
|
nscoord aDeltaY);
|
|
|
|
|
1999-04-20 00:27:43 +00:00
|
|
|
nsresult ComputeTextRuns(nsIPresContext* aPresContext);
|
1998-12-05 16:02:08 +00:00
|
|
|
|
|
|
|
void BuildFloaterList();
|
|
|
|
|
1999-07-14 17:26:20 +00:00
|
|
|
//----------------------------------------
|
|
|
|
// List handling kludge
|
|
|
|
|
2000-01-22 01:16:50 +00:00
|
|
|
void RenumberLists(nsIPresContext* aPresContext);
|
1998-12-05 16:02:08 +00:00
|
|
|
|
2000-01-22 01:16:50 +00:00
|
|
|
PRBool RenumberListsIn(nsIPresContext* aPresContext,
|
|
|
|
nsIFrame* aContainerFrame,
|
|
|
|
PRInt32* aOrdinal);
|
1999-09-17 23:16:43 +00:00
|
|
|
|
2000-01-22 01:16:50 +00:00
|
|
|
PRBool RenumberListsInBlock(nsIPresContext* aPresContext,
|
|
|
|
nsBlockFrame* aContainerFrame,
|
1999-09-17 23:16:43 +00:00
|
|
|
PRInt32* aOrdinal);
|
|
|
|
|
2000-01-22 01:16:50 +00:00
|
|
|
PRBool RenumberListsFor(nsIPresContext* aPresContext, nsIFrame* aKid, PRInt32* aOrdinal);
|
1999-07-14 17:26:20 +00:00
|
|
|
|
|
|
|
PRBool FrameStartsCounterScope(nsIFrame* aFrame);
|
|
|
|
|
1999-10-19 23:04:19 +00:00
|
|
|
nsresult UpdateBulletPosition(nsBlockReflowState& aState);
|
1999-03-05 04:21:32 +00:00
|
|
|
|
1999-02-18 22:22:55 +00:00
|
|
|
void ReflowBullet(nsBlockReflowState& aState,
|
|
|
|
nsHTMLReflowMetrics& aMetrics);
|
1998-12-05 16:02:08 +00:00
|
|
|
|
1999-07-14 17:26:20 +00:00
|
|
|
//----------------------------------------
|
|
|
|
|
1999-11-02 23:42:52 +00:00
|
|
|
nsLineBox* GetOverflowLines(nsIPresContext* aPresContext,
|
2000-01-22 01:16:50 +00:00
|
|
|
PRBool aRemoveProperty) const;
|
1999-11-02 23:42:52 +00:00
|
|
|
|
|
|
|
nsresult SetOverflowLines(nsIPresContext* aPresContext,
|
|
|
|
nsLineBox* aOverflowFrames);
|
|
|
|
|
1999-04-20 00:27:43 +00:00
|
|
|
nsIFrame* LastChild();
|
1998-12-05 16:02:08 +00:00
|
|
|
|
1999-02-09 17:31:33 +00:00
|
|
|
#ifdef NS_DEBUG
|
1999-11-02 23:42:52 +00:00
|
|
|
PRBool IsChild(nsIPresContext* aPresContext, nsIFrame* aFrame);
|
1999-04-20 00:27:43 +00:00
|
|
|
void VerifyLines(PRBool aFinalCheckOK);
|
1999-11-02 23:42:52 +00:00
|
|
|
void VerifyOverflowSituation(nsIPresContext* aPresContext);
|
1999-03-22 22:41:09 +00:00
|
|
|
PRInt32 GetDepth() const;
|
1999-02-09 17:31:33 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
nsLineBox* mLines;
|
|
|
|
|
1998-11-16 17:11:12 +00:00
|
|
|
// Text run information
|
|
|
|
nsTextRun* mTextRuns;
|
|
|
|
|
|
|
|
// List of all floaters in this block
|
1999-01-15 22:53:39 +00:00
|
|
|
nsFrameList mFloaters;
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1998-12-05 16:02:08 +00:00
|
|
|
// XXX_fix_me: subclass one more time!
|
|
|
|
// For list-item frames, this is the bullet frame.
|
|
|
|
nsBulletFrame* mBullet;
|
1998-11-16 17:11:12 +00:00
|
|
|
|
1999-02-09 17:31:33 +00:00
|
|
|
friend class nsBlockReflowState;
|
1998-11-16 17:11:12 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* nsBlockFrame_h___ */
|
|
|
|
|