OLD | NEW |
| (Empty) |
1 /* | |
2 * Copyright (C) 2008 Apple Inc. All Rights Reserved. | |
3 * | |
4 * Redistribution and use in source and binary forms, with or without | |
5 * modification, are permitted provided that the following conditions | |
6 * are met: | |
7 * 1. Redistributions of source code must retain the above copyright | |
8 * notice, this list of conditions and the following disclaimer. | |
9 * 2. Redistributions in binary form must reproduce the above copyright | |
10 * notice, this list of conditions and the following disclaimer in the | |
11 * documentation and/or other materials provided with the distribution. | |
12 * | |
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY | |
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | |
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR | |
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR | |
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | |
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, | |
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR | |
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY | |
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | |
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | |
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | |
24 */ | |
25 | |
26 #ifndef RenderScrollbarPart_h | |
27 #define RenderScrollbarPart_h | |
28 | |
29 #include "core/rendering/RenderBlock.h" | |
30 #include "platform/scroll/ScrollTypes.h" | |
31 | |
32 namespace blink { | |
33 | |
34 class RenderScrollbar; | |
35 | |
36 class RenderScrollbarPart final : public RenderBlock { | |
37 public: | |
38 static RenderScrollbarPart* createAnonymous(Document*, RenderScrollbar* = 0,
ScrollbarPart = NoPart); | |
39 | |
40 virtual ~RenderScrollbarPart(); | |
41 | |
42 virtual const char* renderName() const override { return "RenderScrollbarPar
t"; } | |
43 | |
44 virtual LayerType layerTypeRequired() const override { return NoLayer; } | |
45 | |
46 virtual void layout() override; | |
47 | |
48 // Scrollbar parts needs to be rendered at device pixel boundaries. | |
49 virtual LayoutRectOutsets marginBoxOutsets() const override | |
50 { | |
51 ASSERT(isIntegerValue(RenderBlock::marginBoxOutsets().top())); | |
52 return RenderBlock::marginBoxOutsets(); | |
53 } | |
54 virtual LayoutUnit marginTop() const override | |
55 { | |
56 ASSERT(isIntegerValue(RenderBlock::marginTop())); | |
57 return RenderBlock::marginTop(); | |
58 } | |
59 virtual LayoutUnit marginBottom() const override | |
60 { | |
61 ASSERT(isIntegerValue(RenderBlock::marginBottom())); | |
62 return RenderBlock::marginBottom(); | |
63 } | |
64 virtual LayoutUnit marginLeft() const override | |
65 { | |
66 ASSERT(isIntegerValue(RenderBlock::marginLeft())); | |
67 return RenderBlock::marginLeft(); | |
68 } | |
69 virtual LayoutUnit marginRight() const override | |
70 { | |
71 ASSERT(isIntegerValue(RenderBlock::marginRight())); | |
72 return RenderBlock::marginRight(); | |
73 } | |
74 | |
75 virtual bool isOfType(LayoutObjectType type) const override { return type ==
LayoutObjectRenderScrollbarPart || RenderBlock::isOfType(type); } | |
76 LayoutObject* rendererOwningScrollbar() const; | |
77 | |
78 protected: | |
79 virtual void styleWillChange(StyleDifference, const LayoutStyle& newStyle) o
verride; | |
80 virtual void styleDidChange(StyleDifference, const LayoutStyle* oldStyle) ov
erride; | |
81 virtual void imageChanged(WrappedImagePtr, const IntRect* = 0) override; | |
82 | |
83 private: | |
84 RenderScrollbarPart(RenderScrollbar*, ScrollbarPart); | |
85 | |
86 virtual void computePreferredLogicalWidths() override; | |
87 | |
88 // Have all padding getters return 0. The important point here is to avoid r
esolving percents | |
89 // against the containing block, since scroll bar corners don't always have
one (so it would | |
90 // crash). Scroll bar corners are not actually laid out, and they don't have
child content, so | |
91 // what we return here doesn't really matter. | |
92 virtual LayoutUnit paddingTop() const override { return LayoutUnit(); } | |
93 virtual LayoutUnit paddingBottom() const override { return LayoutUnit(); } | |
94 virtual LayoutUnit paddingLeft() const override { return LayoutUnit(); } | |
95 virtual LayoutUnit paddingRight() const override { return LayoutUnit(); } | |
96 virtual LayoutUnit paddingBefore() const override { return LayoutUnit(); } | |
97 virtual LayoutUnit paddingAfter() const override { return LayoutUnit(); } | |
98 virtual LayoutUnit paddingStart() const override { return LayoutUnit(); } | |
99 virtual LayoutUnit paddingEnd() const override { return LayoutUnit(); } | |
100 | |
101 void layoutHorizontalPart(); | |
102 void layoutVerticalPart(); | |
103 | |
104 void computeScrollbarWidth(); | |
105 void computeScrollbarHeight(); | |
106 | |
107 RenderScrollbar* m_scrollbar; | |
108 ScrollbarPart m_part; | |
109 }; | |
110 | |
111 DEFINE_LAYOUT_OBJECT_TYPE_CASTS(RenderScrollbarPart, isRenderScrollbarPart()); | |
112 | |
113 } // namespace blink | |
114 | |
115 #endif // RenderScrollbarPart_h | |
OLD | NEW |