Bug 1746870: part 1) Minorly extend documentation in <jsactors.rst>. r=hsivonen
[gecko.git] / widget / ScrollbarDrawingCocoa.h
blob475571533de92d43ac240e43ab3cd1c4800972eb
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef mozilla_widget_ScrollbarDrawingCocoa_h
8 #define mozilla_widget_ScrollbarDrawingCocoa_h
10 #include "ScrollbarDrawing.h"
12 #include "mozilla/Array.h"
13 #include "nsNativeBasicTheme.h"
15 namespace mozilla::widget {
17 class ScrollbarDrawingCocoa final : public ScrollbarDrawing {
18 public:
19 ScrollbarDrawingCocoa() = default;
20 virtual ~ScrollbarDrawingCocoa() = default;
22 struct FillRectType {
23 gfx::Rect mRect;
24 nscolor mColor;
27 // The caller can draw this rectangle with rounded corners as appropriate.
28 struct ThumbRect {
29 gfx::Rect mRect;
30 nscolor mFillColor;
31 nscolor mStrokeColor;
32 float mStrokeWidth;
33 float mStrokeOutset;
36 using ScrollbarTrackRects = Array<FillRectType, 4>;
37 using ScrollCornerRects = Array<FillRectType, 7>;
39 LayoutDeviceIntSize GetMinimumWidgetSize(nsPresContext*,
40 StyleAppearance aAppearance,
41 nsIFrame* aFrame) override;
43 static CSSIntCoord GetScrollbarSize(StyleScrollbarWidth aWidth,
44 bool aOverlay);
45 static LayoutDeviceIntCoord GetScrollbarSize(StyleScrollbarWidth aWidth,
46 bool aOverlay,
47 DPIRatio aDpiRatio);
48 ScrollbarSizes GetScrollbarSizes(nsPresContext*, StyleScrollbarWidth,
49 Overlay) override;
51 static ThumbRect GetThumbRect(const gfx::Rect& aRect,
52 const ScrollbarParams& aParams, float aScale);
53 static bool GetScrollbarTrackRects(const gfx::Rect& aRect,
54 const ScrollbarParams& aParams,
55 float aScale, ScrollbarTrackRects& aRects);
56 static bool GetScrollCornerRects(const gfx::Rect& aRect,
57 const ScrollbarParams& aParams, float aScale,
58 ScrollCornerRects& aRects);
60 template <typename PaintBackendData>
61 void DoPaintScrollbarThumb(PaintBackendData&, const LayoutDeviceRect& aRect,
62 bool aHorizontal, nsIFrame* aFrame,
63 const ComputedStyle& aStyle,
64 const EventStates& aElementState,
65 const EventStates& aDocumentState,
66 const DPIRatio&);
67 bool PaintScrollbarThumb(DrawTarget&, const LayoutDeviceRect&,
68 bool aHorizontal, nsIFrame*, const ComputedStyle&,
69 const EventStates& aElementState,
70 const EventStates& aDocumentState, const Colors&,
71 const DPIRatio&) override;
72 bool PaintScrollbarThumb(WebRenderBackendData&, const LayoutDeviceRect&,
73 bool aHorizontal, nsIFrame*, const ComputedStyle&,
74 const EventStates& aElementState,
75 const EventStates& aDocumentState, const Colors&,
76 const DPIRatio&) override;
78 template <typename PaintBackendData>
79 void DoPaintScrollbarTrack(PaintBackendData&, const LayoutDeviceRect&, bool,
80 nsIFrame*, const ComputedStyle&,
81 const EventStates&, const DPIRatio&);
82 bool PaintScrollbarTrack(DrawTarget&, const LayoutDeviceRect& aRect,
83 bool aHorizontal, nsIFrame* aFrame,
84 const ComputedStyle& aStyle,
85 const EventStates& aDocumentState, const Colors&,
86 const DPIRatio&) override;
87 bool PaintScrollbarTrack(WebRenderBackendData&, const LayoutDeviceRect& aRect,
88 bool aHorizontal, nsIFrame* aFrame,
89 const ComputedStyle& aStyle,
90 const EventStates& aDocumentState, const Colors&,
91 const DPIRatio&) override;
93 template <typename PaintBackendData>
94 void DoPaintScrollCorner(PaintBackendData&, const LayoutDeviceRect&,
95 nsIFrame*, const ComputedStyle&, const EventStates&,
96 const DPIRatio&);
97 bool PaintScrollCorner(DrawTarget&, const LayoutDeviceRect& aRect,
98 nsIFrame* aFrame, const ComputedStyle& aStyle,
99 const EventStates& aDocumentState, const Colors&,
100 const DPIRatio&) override;
101 bool PaintScrollCorner(WebRenderBackendData&, const LayoutDeviceRect& aRect,
102 nsIFrame* aFrame, const ComputedStyle& aStyle,
103 const EventStates& aDocumentState, const Colors&,
104 const DPIRatio&) override;
106 void RecomputeScrollbarParams() override;
108 bool ShouldDrawScrollbarButtons() override { return false; }
111 } // namespace mozilla::widget
113 #endif