1999-02-19 21:23:02 +03: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/
|
1999-02-19 21:23:02 +03: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.
|
1999-02-19 21:23:02 +03:00
|
|
|
*
|
|
|
|
* The Original Code is Mozilla Communicator client code.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is Netscape Communications
|
1999-11-06 06:40:37 +03:00
|
|
|
* Corporation. Portions created by Netscape are
|
|
|
|
* Copyright (C) 1998 Netscape Communications Corporation. All
|
|
|
|
* Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
1999-02-19 21:23:02 +03:00
|
|
|
*/
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
|
|
|
|
**/
|
|
|
|
|
|
|
|
#ifndef nsButtonFrameRenderer_h___
|
|
|
|
#define nsButtonFrameRenderer_h___
|
|
|
|
|
|
|
|
#include "nsCoord.h"
|
|
|
|
#include "nsIStyleContext.h"
|
|
|
|
#include "nsCOMPtr.h"
|
|
|
|
#include "nsFrame.h"
|
|
|
|
|
1999-06-16 10:17:21 +04:00
|
|
|
class nsStyleChangeList;
|
|
|
|
|
1999-11-12 04:45:53 +03:00
|
|
|
|
|
|
|
#define NS_BUTTON_RENDERER_FOCUS_INNER_CONTEXT_INDEX 0
|
|
|
|
#define NS_BUTTON_RENDERER_FOCUS_OUTER_CONTEXT_INDEX 1
|
1999-09-04 03:36:32 +04:00
|
|
|
#define NS_BUTTON_RENDERER_LAST_CONTEXT_INDEX NS_BUTTON_RENDERER_FOCUS_OUTER_CONTEXT_INDEX
|
|
|
|
|
1999-02-19 21:23:02 +03:00
|
|
|
class nsButtonFrameRenderer {
|
|
|
|
public:
|
|
|
|
|
|
|
|
nsButtonFrameRenderer();
|
1999-02-26 09:41:10 +03:00
|
|
|
virtual ~nsButtonFrameRenderer();
|
1999-02-19 21:23:02 +03:00
|
|
|
|
|
|
|
|
1999-11-24 09:03:41 +03:00
|
|
|
virtual void PaintButton(nsIPresContext* aPresContext,
|
1999-02-26 09:41:10 +03:00
|
|
|
nsIRenderingContext& aRenderingContext,
|
|
|
|
const nsRect& aDirtyRect,
|
|
|
|
nsFramePaintLayer aWhichLayer,
|
|
|
|
const nsRect& aRect);
|
1999-02-19 21:23:02 +03:00
|
|
|
|
1999-11-24 09:03:41 +03:00
|
|
|
virtual void PaintOutlineAndFocusBorders(nsIPresContext* aPresContext,
|
1999-02-26 09:41:10 +03:00
|
|
|
nsIRenderingContext& aRenderingContext,
|
|
|
|
const nsRect& aDirtyRect,
|
|
|
|
nsFramePaintLayer aWhichLayer,
|
|
|
|
const nsRect& aRect);
|
1999-02-19 21:23:02 +03:00
|
|
|
|
1999-11-24 09:03:41 +03:00
|
|
|
virtual void PaintBorderAndBackground(nsIPresContext* aPresContext,
|
1999-02-26 09:41:10 +03:00
|
|
|
nsIRenderingContext& aRenderingContext,
|
|
|
|
const nsRect& aDirtyRect,
|
|
|
|
nsFramePaintLayer aWhichLayer,
|
|
|
|
const nsRect& aRect);
|
1999-02-19 21:23:02 +03:00
|
|
|
|
1999-02-26 09:41:10 +03:00
|
|
|
virtual void SetNameSpace(PRInt32 aNameSpace);
|
1999-11-24 09:03:41 +03:00
|
|
|
virtual void SetFrame(nsFrame* aFrame, nsIPresContext* aPresContext);
|
1999-02-26 11:48:24 +03:00
|
|
|
|
|
|
|
virtual void SetDisabled(PRBool aDisabled, PRBool notify);
|
1999-02-19 21:23:02 +03:00
|
|
|
|
1999-03-06 22:43:13 +03:00
|
|
|
PRBool isActive();
|
1999-02-26 11:48:24 +03:00
|
|
|
PRBool isDisabled();
|
1999-02-19 21:23:02 +03:00
|
|
|
|
1999-02-26 09:41:10 +03: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 03:58:29 +03: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 21:23:02 +03:00
|
|
|
|
1999-09-04 03:36:32 +04:00
|
|
|
virtual nsresult GetStyleContext(PRInt32 aIndex, nsIStyleContext** aStyleContext) const;
|
|
|
|
virtual nsresult SetStyleContext(PRInt32 aIndex, nsIStyleContext* aStyleContext);
|
1999-11-24 09:03:41 +03:00
|
|
|
virtual void ReResolveStyles(nsIPresContext* aPresContext);
|
1999-02-19 21:23:02 +03:00
|
|
|
|
1999-10-26 08:44:41 +04:00
|
|
|
virtual void Redraw(nsIPresContext* aPresContext);
|
1999-02-19 21:23:02 +03:00
|
|
|
|
1999-09-15 02:17:19 +04:00
|
|
|
virtual nsIFrame* GetFrame();
|
|
|
|
virtual PRInt32 GetNameSpace();
|
|
|
|
|
1999-02-26 09:41:10 +03:00
|
|
|
protected:
|
1999-02-19 21:23:02 +03:00
|
|
|
|
1999-02-26 11:48:24 +03:00
|
|
|
private:
|
1999-02-19 21:23:02 +03:00
|
|
|
|
1999-02-26 09:41:10 +03:00
|
|
|
// cached styles for focus and outline.
|
|
|
|
nsCOMPtr<nsIStyleContext> mBorderStyle;
|
|
|
|
nsCOMPtr<nsIStyleContext> mInnerFocusStyle;
|
|
|
|
nsCOMPtr<nsIStyleContext> mOuterFocusStyle;
|
1999-02-19 21:23:02 +03:00
|
|
|
|
1999-02-26 09:41:10 +03:00
|
|
|
PRInt32 mNameSpace;
|
1999-03-27 03:58:29 +03:00
|
|
|
nsFrame* mFrame;
|
|
|
|
|
|
|
|
nsRect mOutlineRect;
|
1999-02-19 21:23:02 +03:00
|
|
|
};
|
|
|
|
|
1999-02-26 09:41:10 +03:00
|
|
|
|
1999-02-19 21:23:02 +03:00
|
|
|
#endif
|
|
|
|
|