| 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 |