pjs/layout/base/src/nsPresContext.h

145 строки
6.1 KiB
C++

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsPresContext_h___
#define nsPresContext_h___
#include "nsIPresContext.h"
#include "nsIDeviceContext.h"
#include "nsVoidArray.h"
#include "nsFont.h"
#include "nsCRT.h"
#include "nsCOMPtr.h"
#include "nsIImageGroup.h"
#include "nsIPref.h"
#include "nsIURL.h"
#include "nsIEventStateManager.h"
// Base class for concrete presentation context classes
class nsPresContext : public nsIPresContext {
public:
NS_DECL_AND_IMPL_ZEROING_OPERATOR_NEW
// nsISupports methods
NS_DECL_ISUPPORTS
// nsIPresContext methods
NS_IMETHOD Init(nsIDeviceContext* aDeviceContext, nsIPref* aPrefs);
NS_IMETHOD Stop(void);
NS_IMETHOD SetShell(nsIPresShell* aShell);
NS_IMETHOD GetShell(nsIPresShell** aResult);
NS_IMETHOD GetPrefs(nsIPref** aPrefsResult);
NS_IMETHOD GetCompatibilityMode(nsCompatibility* aModeResult);
NS_IMETHOD SetCompatibilityMode(nsCompatibility aMode);
NS_IMETHOD GetWidgetRenderingMode(nsWidgetRendering* aModeResult);
NS_IMETHOD SetWidgetRenderingMode(nsWidgetRendering aMode);
NS_IMETHOD GetBaseURL(nsIURL** aURLResult);
NS_IMETHOD GetMedium(nsIAtom** aMediumResult) = 0;
NS_IMETHOD ResolveStyleContextFor(nsIContent* aContent,
nsIStyleContext* aParentContext,
PRBool aForceUnique,
nsIStyleContext** aResult);
NS_IMETHOD ResolvePseudoStyleContextFor(nsIContent* aParentContent,
nsIAtom* aPseudoTag,
nsIStyleContext* aParentContext,
PRBool aForceUnique,
nsIStyleContext** aResult);
NS_IMETHOD ProbePseudoStyleContextFor(nsIContent* aParentContent,
nsIAtom* aPseudoTag,
nsIStyleContext* aParentContext,
PRBool aForceUnique,
nsIStyleContext** aResult);
NS_IMETHOD GetMetricsFor(const nsFont& aFont, nsIFontMetrics** aResult);
NS_IMETHOD GetDefaultFont(nsFont& aResult);
virtual const nsFont& GetDefaultFontDeprecated();
NS_IMETHOD GetDefaultFixedFont(nsFont& aResult);
virtual const nsFont& GetDefaultFixedFontDeprecated();
NS_IMETHOD GetFontScaler(PRInt32* aResult);
NS_IMETHOD SetFontScaler(PRInt32 aScaler);
NS_IMETHOD GetDefaultColor(nscolor* aColor);
NS_IMETHOD GetDefaultBackgroundColor(nscolor* aColor);
NS_IMETHOD SetDefaultColor(nscolor aColor);
NS_IMETHOD SetDefaultBackgroundColor(nscolor aColor);
NS_IMETHOD GetImageGroup(nsIImageGroup** aGroupResult);
NS_IMETHOD StartLoadImage(const nsString& aURL,
const nscolor* aBackgroundColor,
const nsSize* aDesiredSize,
nsIFrame* aTargetFrame,
nsIFrameImageLoaderCB aCallBack,
void* aClosure,
nsIFrameImageLoader** aResult);
NS_IMETHOD StopLoadImage(nsIFrame* aForFrame, nsIFrameImageLoader* aLoader);
NS_IMETHOD StopAllLoadImagesFor(nsIFrame* aForFrame);
NS_IMETHOD SetContainer(nsISupports* aContainer);
NS_IMETHOD GetContainer(nsISupports** aResult);
NS_IMETHOD SetLinkHandler(nsILinkHandler* aHandler);
NS_IMETHOD GetLinkHandler(nsILinkHandler** aResult);
NS_IMETHOD GetVisibleArea(nsRect& aResult);
NS_IMETHOD SetVisibleArea(const nsRect& r);
NS_IMETHOD IsPaginated(PRBool* aResult) = 0;
NS_IMETHOD GetPageWidth(nscoord* aResult) = 0;
NS_IMETHOD GetPageHeight(nscoord* aResult) = 0;
NS_IMETHOD GetPixelsToTwips(float* aResult) const;
NS_IMETHOD GetTwipsToPixels(float* aResult) const;
NS_IMETHOD GetScaledPixelsToTwips(float* aScale) const;
NS_IMETHOD GetDeviceContext(nsIDeviceContext** aResult) const;
NS_IMETHOD GetEventStateManager(nsIEventStateManager** aManager);
protected:
nsPresContext();
virtual ~nsPresContext();
// IMPORTANT: The ownership implicit in the following member variables has been
// explicitly checked and set using nsCOMPtr for owning pointers and raw COM interface
// pointers for weak (ie, non owning) references. If you add any members to this
// class, please make the ownership explicit (pinkerton, scc).
nsIPresShell* mShell; // [WEAK]
nsCOMPtr<nsIPref> mPrefs;
nsRect mVisibleArea;
nsCOMPtr<nsIDeviceContext> mDeviceContext; // could be weak, but better safe than sorry. Cannot reintroduce cycles
// since there is no dependency from gfx back to layout.
nsCOMPtr<nsIImageGroup> mImageGroup;
nsILinkHandler* mLinkHandler; // [WEAK]
nsISupports* mContainer; // [WEAK]
nsFont mDefaultFont;
nsFont mDefaultFixedFont;
PRInt32 mFontScaler;
nscolor mDefaultColor;
nscolor mDefaultBackgroundColor;
nsVoidArray mImageLoaders;
nsCOMPtr<nsIEventStateManager> mEventManager;
nsCompatibility mCompatibilityMode;
nsWidgetRendering mWidgetRenderingMode;
nsCOMPtr<nsIURL> mBaseURL;
PRBool mStopped;
#ifdef DEBUG
PRBool mInitialized;
#endif
protected:
void GetUserPreferences();
private:
friend int PrefChangedCallback(const char*, void*);
void PreferenceChanged(const char* aPrefName);
};
#endif /* nsPresContext_h___ */