summaryrefslogtreecommitdiffstats
path: root/layout/forms/nsButtonFrameRenderer.h
diff options
context:
space:
mode:
authorMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
committerMatt A. Tobin <mattatobin@localhost.localdomain>2018-02-02 04:16:08 -0500
commit5f8de423f190bbb79a62f804151bc24824fa32d8 (patch)
tree10027f336435511475e392454359edea8e25895d /layout/forms/nsButtonFrameRenderer.h
parent49ee0794b5d912db1f95dce6eb52d781dc210db5 (diff)
downloadUXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.gz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.lz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.tar.xz
UXP-5f8de423f190bbb79a62f804151bc24824fa32d8.zip
Add m-esr52 at 52.6.0
Diffstat (limited to 'layout/forms/nsButtonFrameRenderer.h')
-rw-r--r--layout/forms/nsButtonFrameRenderer.h88
1 files changed, 88 insertions, 0 deletions
diff --git a/layout/forms/nsButtonFrameRenderer.h b/layout/forms/nsButtonFrameRenderer.h
new file mode 100644
index 000000000..8662c52e0
--- /dev/null
+++ b/layout/forms/nsButtonFrameRenderer.h
@@ -0,0 +1,88 @@
+/* -*- 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 nsButtonFrameRenderer_h___
+#define nsButtonFrameRenderer_h___
+
+#include "imgIContainer.h"
+#include "nsMargin.h"
+
+class nsIFrame;
+class nsFrame;
+class nsDisplayList;
+class nsDisplayListBuilder;
+class nsPresContext;
+class nsRenderingContext;
+struct nsRect;
+class nsStyleContext;
+
+
+#define NS_BUTTON_RENDERER_FOCUS_INNER_CONTEXT_INDEX 0
+#define NS_BUTTON_RENDERER_FOCUS_OUTER_CONTEXT_INDEX 1
+#define NS_BUTTON_RENDERER_LAST_CONTEXT_INDEX NS_BUTTON_RENDERER_FOCUS_OUTER_CONTEXT_INDEX
+
+class nsButtonFrameRenderer {
+ typedef mozilla::image::DrawResult DrawResult;
+
+public:
+
+ nsButtonFrameRenderer();
+ ~nsButtonFrameRenderer();
+
+ /**
+ * Create display list items for the button
+ */
+ nsresult DisplayButton(nsDisplayListBuilder* aBuilder,
+ nsDisplayList* aBackground, nsDisplayList* aForeground);
+
+
+ DrawResult PaintOutlineAndFocusBorders(nsDisplayListBuilder* aBuilder,
+ nsPresContext* aPresContext,
+ nsRenderingContext& aRenderingContext,
+ const nsRect& aDirtyRect,
+ const nsRect& aRect);
+
+ DrawResult PaintBorder(nsDisplayListBuilder* aBuilder,
+ nsPresContext* aPresContext,
+ nsRenderingContext& aRenderingContext,
+ const nsRect& aDirtyRect,
+ const nsRect& aRect);
+
+ void SetFrame(nsFrame* aFrame, nsPresContext* aPresContext);
+
+ void SetDisabled(bool aDisabled, bool notify);
+
+ bool isActive();
+ bool isDisabled();
+
+ void GetButtonOuterFocusRect(const nsRect& aRect, nsRect& aResult);
+ void GetButtonRect(const nsRect& aRect, nsRect& aResult);
+ void GetButtonInnerFocusRect(const nsRect& aRect, nsRect& aResult);
+ nsMargin GetButtonOuterFocusBorderAndPadding();
+ nsMargin GetButtonBorderAndPadding();
+ nsMargin GetButtonInnerFocusMargin();
+ nsMargin GetButtonInnerFocusBorderAndPadding();
+ nsMargin GetAddedButtonBorderAndPadding();
+
+ nsStyleContext* GetStyleContext(int32_t aIndex) const;
+ void SetStyleContext(int32_t aIndex, nsStyleContext* aStyleContext);
+ void ReResolveStyles(nsPresContext* aPresContext);
+
+ nsIFrame* GetFrame();
+
+protected:
+
+private:
+
+ // cached styles for focus and outline.
+ RefPtr<nsStyleContext> mInnerFocusStyle;
+ RefPtr<nsStyleContext> mOuterFocusStyle;
+
+ nsFrame* mFrame;
+};
+
+
+#endif
+