123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
- #ifndef nsPageFrame_h___
- #define nsPageFrame_h___
- #include "mozilla/Attributes.h"
- #include "nsContainerFrame.h"
- #include "nsLeafFrame.h"
- class nsFontMetrics;
- class nsSharedPageData;
- // Page frame class used by the simple page sequence frame
- class nsPageFrame final : public nsContainerFrame {
- public:
- NS_DECL_QUERYFRAME_TARGET(nsPageFrame)
- NS_DECL_QUERYFRAME
- NS_DECL_FRAMEARENA_HELPERS
- friend nsPageFrame* NS_NewPageFrame(nsIPresShell* aPresShell,
- nsStyleContext* aContext);
- virtual void Reflow(nsPresContext* aPresContext,
- ReflowOutput& aDesiredSize,
- const ReflowInput& aMaxSize,
- nsReflowStatus& aStatus) override;
- virtual void BuildDisplayList(nsDisplayListBuilder* aBuilder,
- const nsDisplayListSet& aLists) override;
- /**
- * Get the "type" of the frame
- *
- * @see nsGkAtoms::pageFrame
- */
- virtual nsIAtom* GetType() const override;
-
- #ifdef DEBUG_FRAME_DUMP
- virtual nsresult GetFrameName(nsAString& aResult) const override;
- #endif
- //////////////////
- // For Printing
- //////////////////
- // Tell the page which page number it is out of how many
- virtual void SetPageNumInfo(int32_t aPageNumber, int32_t aTotalPages);
- virtual void SetSharedPageData(nsSharedPageData* aPD);
- // We must allow Print Preview UI to have a background, no matter what the
- // user's settings
- virtual bool HonorPrintBackgroundSettings() override { return false; }
- void PaintHeaderFooter(nsRenderingContext& aRenderingContext,
- nsPoint aPt, bool aSubpixelAA);
- protected:
- explicit nsPageFrame(nsStyleContext* aContext);
- virtual ~nsPageFrame();
- typedef enum {
- eHeader,
- eFooter
- } nsHeaderFooterEnum;
- nscoord GetXPosition(nsRenderingContext& aRenderingContext,
- nsFontMetrics& aFontMetrics,
- const nsRect& aRect,
- int32_t aJust,
- const nsString& aStr);
- void DrawHeaderFooter(nsRenderingContext& aRenderingContext,
- nsFontMetrics& aFontMetrics,
- nsHeaderFooterEnum aHeaderFooter,
- int32_t aJust,
- const nsString& sStr,
- const nsRect& aRect,
- nscoord aHeight,
- nscoord aAscent,
- nscoord aWidth);
- void DrawHeaderFooter(nsRenderingContext& aRenderingContext,
- nsFontMetrics& aFontMetrics,
- nsHeaderFooterEnum aHeaderFooter,
- const nsString& aStrLeft,
- const nsString& aStrRight,
- const nsString& aStrCenter,
- const nsRect& aRect,
- nscoord aAscent,
- nscoord aHeight);
- void ProcessSpecialCodes(const nsString& aStr, nsString& aNewStr);
- int32_t mPageNum;
- int32_t mTotNumPages;
- nsSharedPageData* mPD;
- nsMargin mPageContentMargin;
- };
- class nsPageBreakFrame : public nsLeafFrame
- {
- NS_DECL_FRAMEARENA_HELPERS
- explicit nsPageBreakFrame(nsStyleContext* aContext);
- ~nsPageBreakFrame();
- virtual void Reflow(nsPresContext* aPresContext,
- ReflowOutput& aDesiredSize,
- const ReflowInput& aReflowInput,
- nsReflowStatus& aStatus) override;
- virtual nsIAtom* GetType() const override;
- #ifdef DEBUG_FRAME_DUMP
- virtual nsresult GetFrameName(nsAString& aResult) const override;
- #endif
- protected:
- virtual nscoord GetIntrinsicISize() override;
- virtual nscoord GetIntrinsicBSize() override;
- bool mHaveReflowed;
- friend nsIFrame* NS_NewPageBreakFrame(nsIPresShell* aPresShell, nsStyleContext* aContext);
- };
- #endif /* nsPageFrame_h___ */
|