⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 renderbox.h

📁 linux下开源浏览器WebKit的源码,市面上的很多商用浏览器都是移植自WebKit
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (C) 1999 Lars Knoll (knoll@kde.org) *           (C) 1999 Antti Koivisto (koivisto@kde.org) * Copyright (C) 2003, 2006, 2007 Apple Inc. All rights reserved. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Library General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Library General Public License for more details. * * You should have received a copy of the GNU Library General Public License * along with this library; see the file COPYING.LIB.  If not, write to * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, * Boston, MA 02110-1301, USA. * */#ifndef RenderBox_h#define RenderBox_h#include "RenderBoxModelObject.h"#include "ScrollTypes.h"namespace WebCore {enum WidthType { Width, MinWidth, MaxWidth };class RenderBox : public RenderBoxModelObject {public:    RenderBox(Node*);    virtual ~RenderBox();    // Use this with caution! No type checking is done!    RenderBox* firstChildBox() const;    RenderBox* lastChildBox() const;    int x() const { return m_frameRect.x(); }    int y() const { return m_frameRect.y(); }    int width() const { return m_frameRect.width(); }    int height() const { return m_frameRect.height(); }        void setX(int x) { m_frameRect.setX(x); }    void setY(int y) { m_frameRect.setY(y); }    void setWidth(int width) { m_frameRect.setWidth(width); }    void setHeight(int height) { m_frameRect.setHeight(height); }        IntPoint location() const { return m_frameRect.location(); }    IntSize size() const { return m_frameRect.size(); }    void setLocation(const IntPoint& location) { m_frameRect.setLocation(location); }    void setLocation(int x, int y) { setLocation(IntPoint(x, y)); }        void setSize(const IntSize& size) { m_frameRect.setSize(size); }    void move(int dx, int dy) { m_frameRect.move(dx, dy); }    IntRect frameRect() const { return m_frameRect; }    void setFrameRect(const IntRect& rect) { m_frameRect = rect; }    IntRect borderBoxRect() const { return IntRect(0, 0, width(), height()); }    virtual IntRect borderBoundingBox() const { return borderBoxRect(); }         // The content area of the box (excludes padding and border).    IntRect contentBoxRect() const { return IntRect(borderLeft() + paddingLeft(), borderTop() + paddingTop(), contentWidth(), contentHeight()); }    // The content box in absolute coords. Ignores transforms.    IntRect absoluteContentBox() const;    // The content box converted to absolute coords (taking transforms into account).    FloatQuad absoluteContentQuad() const;    // Bounds of the outline box in absolute coords. Respects transforms    virtual IntRect outlineBoundsForRepaint(RenderBoxModelObject* /*repaintContainer*/) const;    virtual void addFocusRingRects(GraphicsContext*, int tx, int ty);    // Use this with caution! No type checking is done!    RenderBox* previousSiblingBox() const;    RenderBox* nextSiblingBox() const;    RenderBox* parentBox() const;    // The height of a block when you include normal flow overflow spillage out of the bottom    // of the block (e.g., a <div style="height:25px"> that has a 100px tall image inside    // it would have an overflow height of borderTop() + paddingTop() + 100px.    virtual int overflowHeight(bool /*includeInterior*/ = true) const { return height(); }    virtual int overflowWidth(bool /*includeInterior*/ = true) const { return width(); }    virtual void setOverflowHeight(int) { }    virtual void setOverflowWidth(int) { }    virtual int overflowLeft(bool /*includeInterior*/ = true) const { return 0; }    virtual int overflowTop(bool /*includeInterior*/ = true) const { return 0; }    virtual IntRect overflowRect(bool /*includeInterior*/ = true) const { return borderBoxRect(); }    int contentWidth() const { return clientWidth() - paddingLeft() - paddingRight(); }    int contentHeight() const { return clientHeight() - paddingTop() - paddingBottom(); }    // IE extensions. Used to calculate offsetWidth/Height.  Overridden by inlines (RenderFlow)    // to return the remaining width on a given line (and the height of a single line).    virtual int offsetWidth() const { return width(); }    virtual int offsetHeight() const { return height(); }    // More IE extensions.  clientWidth and clientHeight represent the interior of an object    // excluding border and scrollbar.  clientLeft/Top are just the borderLeftWidth and borderTopWidth.    int clientLeft() const { return borderLeft(); }    int clientTop() const { return borderTop(); }    int clientWidth() const;    int clientHeight() const;    // scrollWidth/scrollHeight will be the same as clientWidth/clientHeight unless the    // object has overflow:hidden/scroll/auto specified and also has overflow.    // scrollLeft/Top return the current scroll position.  These methods are virtual so that objects like    // textareas can scroll shadow content (but pretend that they are the objects that are    // scrolling).    virtual int scrollLeft() const;    virtual int scrollTop() const;    virtual int scrollWidth() const;    virtual int scrollHeight() const;    virtual void setScrollLeft(int);    virtual void setScrollTop(int);    virtual int marginTop() const { return m_marginTop; }    virtual int marginBottom() const { return m_marginBottom; }    virtual int marginLeft() const { return m_marginLeft; }    virtual int marginRight() const { return m_marginRight; }    // The following five functions are used to implement collapsing margins.    // All objects know their maximal positive and negative margins.  The    // formula for computing a collapsed margin is |maxPosMargin| - |maxNegmargin|.    // For a non-collapsing box, such as a leaf element, this formula will simply return    // the margin of the element.  Blocks override the maxTopMargin and maxBottomMargin    // methods.    virtual bool isSelfCollapsingBlock() const { return false; }    int collapsedMarginTop() const { return maxTopMargin(true) - maxTopMargin(false); }    int collapsedMarginBottom() const { return maxBottomMargin(true) - maxBottomMargin(false); }    virtual int maxTopMargin(bool positive) const { return positive ? std::max(0, marginTop()) : -std::min(0, marginTop()); }    virtual int maxBottomMargin(bool positive) const { return positive ? std::max(0, marginBottom()) : -std::min(0, marginBottom()); }    virtual void absoluteRects(Vector<IntRect>&, int tx, int ty, bool topLevel = true);    virtual void absoluteQuads(Vector<FloatQuad>&, bool topLevel = true);        IntRect reflectionBox() const;    int reflectionOffset() const;    // Given a rect in the object's coordinate space, returns the corresponding rect in the reflection.    IntRect reflectedRect(const IntRect&) const;    virtual void layout();    virtual void paint(PaintInfo&, int tx, int ty);    virtual bool nodeAtPoint(const HitTestRequest&, HitTestResult&, int x, int y, int tx, int ty, HitTestAction);    virtual void destroy();    virtual int minPrefWidth() const;    virtual int maxPrefWidth() const;    int overrideSize() const;    int overrideWidth() const;    int overrideHeight() const;    virtual void setOverrideSize(int);    virtual IntSize offsetFromContainer(RenderObject*) const;        int calcBorderBoxWidth(int width) const;    int calcBorderBoxHeight(int height) const;    int calcContentBoxWidth(int width) const;    int calcContentBoxHeight(int height) const;    virtual void borderFitAdjust(int& /*x*/, int& /*w*/) const { } // Shrink the box in which the border paints if border-fit is set.    // This method is now public so that centered objects like tables that are    // shifted right by left-aligned floats can recompute their left and    // right margins (so that they can remain centered after being    // shifted. -dwh    void calcHorizontalMargins(const Length& marginLeft, const Length& marginRight, int containerWidth);    void positionLineBox(InlineBox*);    virtual InlineBox* createInlineBox();    void dirtyLineBoxes(bool fullLayout);    // For inline replaced elements, this function returns the inline box that owns us.  Enables    // the replaced RenderObject to quickly determine what line it is contained on and to easily    // iterate over structures on the line.    InlineBox* inlineBoxWrapper() const { return m_inlineBoxWrapper; }    void setInlineBoxWrapper(InlineBox* boxWrapper) { m_inlineBoxWrapper = boxWrapper; }    void deleteLineBoxWrapper();    virtual int lowestPosition(bool includeOverflowInterior = true, bool includeSelf = true) const;    virtual int rightmostPosition(bool includeOverflowInterior = true, bool includeSelf = true) const;    virtual int leftmostPosition(bool includeOverflowInterior = true, bool includeSelf = true) const;    virtual IntRect clippedOverflowRectForRepaint(RenderBoxModelObject* repaintContainer);    virtual void computeRectForRepaint(RenderBoxModelObject* repaintContainer, IntRect&, bool fixed = false);    virtual void repaintDuringLayoutIfMoved(const IntRect&);    virtual int containingBlockWidthForContent() const;    virtual void calcWidth();    virtual void calcHeight();    bool stretchesToViewHeight() const    {        return style()->htmlHacks() && style()->height().isAuto() && !isFloatingOrPositioned() && (isRoot() || isBody());

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -