RenderView::RenderView(Node* node, FrameView* view) : RenderBlock(node) , m_frameView(view) , m_selectionStart(0) , m_selectionEnd(0) , m_selectionStartPos(-1) , m_selectionEndPos(-1) , m_printImages(true) , m_maximalOutlineSize(0) , m_layoutState(0) , m_layoutStateDisableCount(0) { // Clear our anonymous bit, set because RenderObject assumes // any renderer with document as the node is anonymous. setIsAnonymous(false); // init RenderObject attributes setInline(false); m_minPrefWidth = 0; m_maxPrefWidth = 0; setPrefWidthsDirty(true, false); setPositioned(true); // to 0,0 :) // Create a new root layer for our layer hierarchy. m_layer = new (node->document()->renderArena()) RenderLayer(this); setHasLayer(true); }
void RenderScrollbarPart::calcPrefWidths() { if (!prefWidthsDirty()) return; m_minPrefWidth = m_maxPrefWidth = 0; setPrefWidthsDirty(false); }
void RenderReplaced::calcPrefWidths() { ASSERT(prefWidthsDirty()); int width = calcReplacedWidth() + paddingLeft() + paddingRight() + borderLeft() + borderRight(); if (style()->width().isPercent() || (style()->width().isAuto() && style()->height().isPercent())) { m_minPrefWidth = 0; m_maxPrefWidth = width; } else m_minPrefWidth = m_maxPrefWidth = width; setPrefWidthsDirty(false); }
void RenderSVGRoot::calcPrefWidths() { ASSERT(prefWidthsDirty()); int paddingAndBorders = paddingLeft() + paddingRight() + borderLeft() + borderRight(); int width = calcReplacedWidth(false) + paddingAndBorders; if (style()->maxWidth().isFixed() && style()->maxWidth().value() != undefinedLength) width = min(width, style()->maxWidth().value() + (style()->boxSizing() == CONTENT_BOX ? paddingAndBorders : 0)); if (style()->width().isPercent() || (style()->width().isAuto() && style()->height().isPercent())) { m_minPrefWidth = 0; m_maxPrefWidth = width; } else m_minPrefWidth = m_maxPrefWidth = width; setPrefWidthsDirty(false); }
void RenderReplaced::calcPrefWidths() { ASSERT(prefWidthsDirty()); int borderAndPadding = borderAndPaddingWidth(); int width = calcReplacedWidth(false) + borderAndPadding; if (style()->maxWidth().isFixed() && style()->maxWidth().value() != undefinedLength) width = min(width, style()->maxWidth().value() + (style()->boxSizing() == CONTENT_BOX ? borderAndPadding : 0)); if (style()->width().isPercent() || (style()->width().isAuto() && style()->height().isPercent())) { m_minPrefWidth = 0; m_maxPrefWidth = width; } else m_minPrefWidth = m_maxPrefWidth = width; setPrefWidthsDirty(false); }
void RenderListMarker::calcPrefWidths() { ASSERT(prefWidthsDirty()); m_text = ""; if (isImage()) { m_minPrefWidth = m_maxPrefWidth = m_image->image()->width(); setPrefWidthsDirty(false); updateMargins(); return; } const Font& font = style()->font(); int width = 0; EListStyleType type = style()->listStyleType(); switch (type) { case LNONE: break; case CIRCLE: case DISC: case SQUARE: m_text = listMarkerText(type, 0); // value is ignored for these types width = (font.ascent() * 2 / 3 + 1) / 2 + 2; break; case ARMENIAN: case CJK_IDEOGRAPHIC: case DECIMAL_LEADING_ZERO: case GEORGIAN: case HEBREW: case HIRAGANA: case HIRAGANA_IROHA: case KATAKANA: case KATAKANA_IROHA: case LDECIMAL: case LOWER_ALPHA: case LOWER_GREEK: case LOWER_LATIN: case LOWER_ROMAN: case UPPER_ALPHA: case UPPER_LATIN: case UPPER_ROMAN: m_text = listMarkerText(type, m_listItem->value()); if (m_text.isEmpty()) width = 0; else { int itemWidth = font.width(m_text); const UChar periodSpace[2] = { '.', ' ' }; int periodSpaceWidth = font.width(TextRun(periodSpace, 2)); width = itemWidth + periodSpaceWidth; } break; } m_minPrefWidth = width; m_maxPrefWidth = width; setPrefWidthsDirty(false); updateMargins(); }