1999-02-19 18:23:02 +00:00
|
|
|
/* -*- 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 "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/
|
|
|
|
*
|
|
|
|
* 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.
|
|
|
|
*
|
|
|
|
* The Original Code is Mozilla Communicator client code.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is Netscape Communications
|
|
|
|
* Corporation. Portions created by Netscape are Copyright (C) 1998
|
|
|
|
* Netscape Communications Corporation. All Rights Reserved.
|
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
#ifndef nsButtonFrameRenderer_h___
|
|
|
|
#define nsButtonFrameRenderer_h___
|
|
|
|
|
|
|
|
#include "nsCoord.h"
|
|
|
|
#include "nsIStyleContext.h"
|
|
|
|
#include "nsCOMPtr.h"
|
|
|
|
#include "nsFrame.h"
|
|
|
|
|
1999-06-16 06:17:21 +00:00
|
|
|
class nsStyleChangeList;
|
|
|
|
|
1999-09-03 23:36:32 +00:00
|
|
|
#define NS_BUTTON_RENDERER_OUTLINE_CONTEXT_INDEX 0
|
|
|
|
#define NS_BUTTON_RENDERER_FOCUS_INNER_CONTEXT_INDEX 1
|
|
|
|
#define NS_BUTTON_RENDERER_FOCUS_OUTER_CONTEXT_INDEX 2
|
|
|
|
#define NS_BUTTON_RENDERER_LAST_CONTEXT_INDEX NS_BUTTON_RENDERER_FOCUS_OUTER_CONTEXT_INDEX
|
|
|
|
|
1999-02-19 18:23:02 +00:00
|
|
|
class nsButtonFrameRenderer {
|
|
|
|
public:
|
|
|
|
|
|
|
|
nsButtonFrameRenderer();
|
1999-02-26 06:41:10 +00:00
|
|
|
virtual ~nsButtonFrameRenderer();
|
1999-02-19 18:23:02 +00:00
|
|
|
|
|
|
|
|
1999-02-26 06:41:10 +00:00
|
|
|
virtual void PaintButton(nsIPresContext& aPresContext,
|
|
|
|
nsIRenderingContext& aRenderingContext,
|
|
|
|
const nsRect& aDirtyRect,
|
|
|
|
nsFramePaintLayer aWhichLayer,
|
|
|
|
const nsRect& aRect);
|
1999-02-19 18:23:02 +00:00
|
|
|
|
1999-02-26 06:41:10 +00:00
|
|
|
virtual void PaintOutlineAndFocusBorders(nsIPresContext& aPresContext,
|
|
|
|
nsIRenderingContext& aRenderingContext,
|
|
|
|
const nsRect& aDirtyRect,
|
|
|
|
nsFramePaintLayer aWhichLayer,
|
|
|
|
const nsRect& aRect);
|
1999-02-19 18:23:02 +00:00
|
|
|
|
1999-02-26 06:41:10 +00:00
|
|
|
virtual void PaintBorderAndBackground(nsIPresContext& aPresContext,
|
|
|
|
nsIRenderingContext& aRenderingContext,
|
|
|
|
const nsRect& aDirtyRect,
|
|
|
|
nsFramePaintLayer aWhichLayer,
|
|
|
|
const nsRect& aRect);
|
1999-02-19 18:23:02 +00:00
|
|
|
|
1999-02-26 06:41:10 +00:00
|
|
|
virtual void SetNameSpace(PRInt32 aNameSpace);
|
1999-03-27 00:58:29 +00:00
|
|
|
virtual void SetFrame(nsFrame* aFrame, nsIPresContext& aPresContext);
|
1999-02-26 08:48:24 +00:00
|
|
|
|
|
|
|
virtual void SetDisabled(PRBool aDisabled, PRBool notify);
|
1999-02-19 18:23:02 +00:00
|
|
|
|
1999-03-06 19:43:13 +00:00
|
|
|
PRBool isActive();
|
1999-02-26 08:48:24 +00:00
|
|
|
PRBool isDisabled();
|
1999-02-19 18:23:02 +00:00
|
|
|
|
1999-02-26 06:41:10 +00:00
|
|
|
virtual void GetButtonOutlineRect(const nsRect& aRect, nsRect& aResult);
|
|
|
|
virtual void GetButtonOuterFocusRect(const nsRect& aRect, nsRect& aResult);
|
|
|
|
virtual void GetButtonRect(const nsRect& aRect, nsRect& aResult);
|
|
|
|
virtual void GetButtonInnerFocusRect(const nsRect& aRect, nsRect& aResult);
|
|
|
|
virtual void GetButtonContentRect(const nsRect& aRect, nsRect& aResult);
|
1999-03-27 00:58:29 +00:00
|
|
|
virtual nsMargin GetButtonOuterFocusBorderAndPadding();
|
|
|
|
virtual nsMargin GetButtonBorderAndPadding();
|
|
|
|
virtual nsMargin GetButtonInnerFocusMargin();
|
|
|
|
virtual nsMargin GetButtonInnerFocusBorderAndPadding();
|
|
|
|
virtual nsMargin GetButtonOutlineBorderAndPadding();
|
|
|
|
virtual nsMargin GetFullButtonBorderAndPadding();
|
|
|
|
virtual nsMargin GetAddedButtonBorderAndPadding();
|
1999-02-19 18:23:02 +00:00
|
|
|
|
1999-09-03 23:36:32 +00:00
|
|
|
virtual nsresult GetStyleContext(PRInt32 aIndex, nsIStyleContext** aStyleContext) const;
|
|
|
|
virtual nsresult SetStyleContext(PRInt32 aIndex, nsIStyleContext* aStyleContext);
|
1999-06-16 06:17:21 +00:00
|
|
|
virtual void ReResolveStyles(nsIPresContext& aPresContext,
|
|
|
|
PRInt32 aParentChange,
|
|
|
|
nsStyleChangeList* aChangeList,
|
|
|
|
PRInt32* aLocalChange);
|
1999-02-19 18:23:02 +00:00
|
|
|
|
1999-03-27 00:58:29 +00:00
|
|
|
virtual void Redraw();
|
1999-02-19 18:23:02 +00:00
|
|
|
|
1999-02-26 06:41:10 +00:00
|
|
|
protected:
|
1999-02-19 18:23:02 +00:00
|
|
|
|
1999-02-26 08:48:24 +00:00
|
|
|
private:
|
1999-02-19 18:23:02 +00:00
|
|
|
|
1999-02-26 06:41:10 +00:00
|
|
|
// cached styles for focus and outline.
|
|
|
|
nsCOMPtr<nsIStyleContext> mBorderStyle;
|
|
|
|
nsCOMPtr<nsIStyleContext> mInnerFocusStyle;
|
|
|
|
nsCOMPtr<nsIStyleContext> mOuterFocusStyle;
|
|
|
|
nsCOMPtr<nsIStyleContext> mOutlineStyle;
|
1999-02-19 18:23:02 +00:00
|
|
|
|
1999-02-26 06:41:10 +00:00
|
|
|
PRInt32 mNameSpace;
|
1999-03-27 00:58:29 +00:00
|
|
|
nsFrame* mFrame;
|
|
|
|
|
|
|
|
nsRect mOutlineRect;
|
1999-02-19 18:23:02 +00:00
|
|
|
};
|
|
|
|
|
1999-02-26 06:41:10 +00:00
|
|
|
|
1999-02-19 18:23:02 +00:00
|
|
|
#endif
|
|
|
|
|