1998-04-14 00:24:54 +04:00
|
|
|
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
|
|
|
*
|
1999-11-06 06:40:37 +03: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-04-14 00:24:54 +04:00
|
|
|
*
|
1999-11-06 06:40:37 +03: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-04-14 00:24:54 +04:00
|
|
|
*
|
1999-11-06 06:40:37 +03:00
|
|
|
* The Original Code is mozilla.org code.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is Netscape
|
1998-04-14 00:24:54 +04:00
|
|
|
* Communications Corporation. Portions created by Netscape are
|
1999-11-06 06:40:37 +03:00
|
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
|
|
* Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
1998-04-14 00:24:54 +04:00
|
|
|
*/
|
|
|
|
#ifndef nsPageFrame_h___
|
|
|
|
#define nsPageFrame_h___
|
|
|
|
|
2001-01-27 17:09:34 +03:00
|
|
|
#include "nsContainerFrame.h"
|
|
|
|
#include "nsIPrintOptions.h"
|
1998-04-14 00:24:54 +04:00
|
|
|
|
1998-11-05 02:21:50 +03:00
|
|
|
// Page frame class used by the simple page sequence frame
|
1998-05-28 06:37:37 +04:00
|
|
|
class nsPageFrame : public nsContainerFrame {
|
1998-04-14 00:24:54 +04:00
|
|
|
public:
|
1999-12-05 02:49:50 +03:00
|
|
|
friend nsresult NS_NewPageFrame(nsIPresShell* aPresShell, nsIFrame** aResult);
|
1999-02-19 01:23:36 +03:00
|
|
|
|
2001-01-27 17:09:34 +03:00
|
|
|
// nsIFrame
|
1999-11-24 09:03:41 +03:00
|
|
|
NS_IMETHOD Reflow(nsIPresContext* aPresContext,
|
1998-10-01 08:46:11 +04:00
|
|
|
nsHTMLReflowMetrics& aDesiredSize,
|
1998-10-02 08:10:00 +04:00
|
|
|
const nsHTMLReflowState& aMaxSize,
|
1998-05-25 21:31:49 +04:00
|
|
|
nsReflowStatus& aStatus);
|
2001-01-27 17:09:34 +03:00
|
|
|
|
|
|
|
NS_IMETHOD Paint(nsIPresContext* aPresContext,
|
|
|
|
nsIRenderingContext& aRenderingContext,
|
|
|
|
const nsRect& aDirtyRect,
|
|
|
|
nsFramePaintLayer aWhichLayer);
|
|
|
|
|
1999-03-05 07:28:07 +03:00
|
|
|
NS_IMETHOD IsPercentageBase(PRBool& aBase) const;
|
1998-04-14 00:24:54 +04:00
|
|
|
|
1999-02-14 06:47:33 +03:00
|
|
|
/**
|
|
|
|
* Get the "type" of the frame
|
|
|
|
*
|
|
|
|
* @see nsLayoutAtoms::pageFrame
|
|
|
|
*/
|
|
|
|
NS_IMETHOD GetFrameType(nsIAtom** aType) const;
|
|
|
|
|
2001-04-12 17:04:29 +04:00
|
|
|
#ifdef NS_DEBUG
|
1998-04-14 00:24:54 +04:00
|
|
|
// Debugging
|
1998-11-19 20:22:29 +03:00
|
|
|
NS_IMETHOD GetFrameName(nsString& aResult) const;
|
2001-04-12 17:04:29 +04:00
|
|
|
void SetDebugFD(FILE* aFD) { mDebugFD = aFD; }
|
|
|
|
FILE * mDebugFD;
|
1999-11-02 01:12:45 +03:00
|
|
|
#endif
|
1999-02-19 01:23:36 +03:00
|
|
|
|
2001-01-27 17:09:34 +03:00
|
|
|
//////////////////
|
|
|
|
// For Printing
|
|
|
|
//////////////////
|
|
|
|
|
|
|
|
// Set the print options object into the page for printing
|
|
|
|
virtual void SetPrintOptions(nsIPrintOptions * aPrintOptions);
|
|
|
|
|
|
|
|
// Tell the page which page number it is out of how many
|
|
|
|
virtual void SetPageNumInfo(PRInt32 aPageNumber, PRInt32 aTotalPages);
|
|
|
|
|
2001-04-12 17:04:29 +04:00
|
|
|
virtual void SuppressHeadersAndFooters(PRBool aDoSup) { mSupressHF = aDoSup; }
|
|
|
|
virtual void SetClipRect(nsRect* aClipRect) { mClipRect = *aClipRect; }
|
|
|
|
|
2001-01-27 17:09:34 +03:00
|
|
|
// This is class is now responsible for freeing the memory
|
|
|
|
static void SetPageNumberFormat(PRUnichar * aFormatStr);
|
|
|
|
|
1999-02-19 01:23:36 +03:00
|
|
|
protected:
|
|
|
|
nsPageFrame();
|
2001-01-27 17:09:34 +03:00
|
|
|
virtual ~nsPageFrame();
|
|
|
|
|
|
|
|
typedef enum {
|
|
|
|
eHeader,
|
|
|
|
eFooter
|
|
|
|
} nsHeaderFooterEnum;
|
|
|
|
|
|
|
|
nscoord GetXPosition(nsIRenderingContext& aRenderingContext,
|
|
|
|
const nsRect& aRect,
|
|
|
|
PRInt32 aJust,
|
|
|
|
const nsString& aStr);
|
|
|
|
|
|
|
|
void DrawHeaderFooter(nsIRenderingContext& aRenderingContext,
|
|
|
|
nsIFrame * aFrame,
|
|
|
|
nsHeaderFooterEnum aHeaderFooter,
|
|
|
|
PRInt32 aJust,
|
|
|
|
const nsString& sStr,
|
|
|
|
const nsRect& aRect,
|
|
|
|
nscoord aHeight,
|
|
|
|
PRBool aUseHalfThePage = PR_TRUE);
|
|
|
|
|
|
|
|
|
|
|
|
nsCOMPtr<nsIPrintOptions> mPrintOptions;
|
|
|
|
PRInt32 mPageNum;
|
|
|
|
PRInt32 mTotNumPages;
|
|
|
|
nsMargin mMargin;
|
|
|
|
nsFont * mHeadFootFont;
|
|
|
|
|
2001-04-12 17:04:29 +04:00
|
|
|
PRPackedBool mSupressHF;
|
|
|
|
nsRect mClipRect;
|
|
|
|
|
2001-01-27 17:09:34 +03:00
|
|
|
static PRUnichar * mPageNumFormat;
|
|
|
|
|
1998-04-14 00:24:54 +04:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif /* nsPageFrame_h___ */
|
|
|
|
|