| Index: third_party/WebKit/WebCore/rendering/style/RenderStyle.h
|
| ===================================================================
|
| --- third_party/WebKit/WebCore/rendering/style/RenderStyle.h (revision 9383)
|
| +++ third_party/WebKit/WebCore/rendering/style/RenderStyle.h (working copy)
|
| @@ -1,1133 +1,1125 @@
|
| -/*
|
| - * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
|
| - * (C) 2000 Antti Koivisto (koivisto@kde.org)
|
| - * (C) 2000 Dirk Mueller (mueller@kde.org)
|
| - * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
|
| - * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
|
| - *
|
| - * 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 RenderStyle_h
|
| -#define RenderStyle_h
|
| -
|
| -#include "TransformationMatrix.h"
|
| -#include "AnimationList.h"
|
| -#include "BorderData.h"
|
| -#include "BorderValue.h"
|
| -#include "CSSHelper.h"
|
| -#include "CSSImageGeneratorValue.h"
|
| -#include "CSSPrimitiveValue.h"
|
| -#include "CSSReflectionDirection.h"
|
| -#include "CSSValueList.h"
|
| -#include "CachedImage.h"
|
| -#include "CollapsedBorderValue.h"
|
| -#include "Color.h"
|
| -#include "ContentData.h"
|
| -#include "CounterDirectives.h"
|
| -#include "CursorList.h"
|
| -#include "DataRef.h"
|
| -#include "FillLayer.h"
|
| -#include "FloatPoint.h"
|
| -#include "Font.h"
|
| -#include "GraphicsTypes.h"
|
| -#include "IntRect.h"
|
| -#include "Length.h"
|
| -#include "LengthBox.h"
|
| -#include "LengthSize.h"
|
| -#include "NinePieceImage.h"
|
| -#include "OutlineValue.h"
|
| -#include "Pair.h"
|
| -#include "RenderStyleConstants.h"
|
| -#include "ShadowData.h"
|
| -#include "StyleBackgroundData.h"
|
| -#include "StyleBoxData.h"
|
| -#include "StyleFlexibleBoxData.h"
|
| -#include "StyleInheritedData.h"
|
| -#include "StyleMarqueeData.h"
|
| -#include "StyleMultiColData.h"
|
| -#include "StyleRareInheritedData.h"
|
| -#include "StyleRareNonInheritedData.h"
|
| -#include "StyleReflection.h"
|
| -#include "StyleSurroundData.h"
|
| -#include "StyleTransformData.h"
|
| -#include "StyleVisualData.h"
|
| -#include "TextDirection.h"
|
| -#include "ThemeTypes.h"
|
| -#include "TimingFunction.h"
|
| -#include "TransformOperations.h"
|
| -#include <wtf/OwnPtr.h>
|
| -#include <wtf/RefCounted.h>
|
| -#include <wtf/StdLibExtras.h>
|
| -#include <wtf/Vector.h>
|
| -
|
| -#if ENABLE(DASHBOARD_SUPPORT)
|
| -#include "StyleDashboardRegion.h"
|
| -#endif
|
| -
|
| -#if ENABLE(SVG)
|
| -#include "SVGRenderStyle.h"
|
| -#endif
|
| -
|
| -#if ENABLE(XBL)
|
| -#include "BindingURI.h"
|
| -#endif
|
| -
|
| -template<typename T, typename U> inline bool compareEqual(const T& t, const U& u) { return t == static_cast<T>(u); }
|
| -
|
| -#define SET_VAR(group, variable, value) \
|
| - if (!compareEqual(group->variable, value)) \
|
| - group.access()->variable = value;
|
| -
|
| -namespace WebCore {
|
| -
|
| -using std::max;
|
| -
|
| -class CSSStyleSelector;
|
| -class CSSValueList;
|
| -class CachedImage;
|
| -class Pair;
|
| -class StringImpl;
|
| -class StyleImage;
|
| -
|
| -class RenderStyle: public RefCounted<RenderStyle> {
|
| - friend class CSSStyleSelector;
|
| -protected:
|
| -
|
| -// !START SYNC!: Keep this in sync with the copy constructor in RenderStyle.cpp
|
| -
|
| - // inherit
|
| - struct InheritedFlags {
|
| - bool operator==(const InheritedFlags& other) const
|
| - {
|
| - return (_empty_cells == other._empty_cells) &&
|
| - (_caption_side == other._caption_side) &&
|
| - (_list_style_type == other._list_style_type) &&
|
| - (_list_style_position == other._list_style_position) &&
|
| - (_visibility == other._visibility) &&
|
| - (_text_align == other._text_align) &&
|
| - (_text_transform == other._text_transform) &&
|
| - (_text_decorations == other._text_decorations) &&
|
| - (_text_transform == other._text_transform) &&
|
| - (_cursor_style == other._cursor_style) &&
|
| - (_direction == other._direction) &&
|
| - (_border_collapse == other._border_collapse) &&
|
| - (_white_space == other._white_space) &&
|
| - (_box_direction == other._box_direction) &&
|
| - (_visuallyOrdered == other._visuallyOrdered) &&
|
| - (_htmlHacks == other._htmlHacks) &&
|
| - (_force_backgrounds_to_white == other._force_backgrounds_to_white) &&
|
| - (_pointerEvents == other._pointerEvents);
|
| - }
|
| -
|
| - bool operator!=(const InheritedFlags& other) const { return !(*this == other); }
|
| -
|
| - unsigned _empty_cells : 1; // EEmptyCell
|
| - unsigned _caption_side : 2; // ECaptionSide
|
| - unsigned _list_style_type : 5 ; // EListStyleType
|
| - unsigned _list_style_position : 1; // EListStylePosition
|
| - unsigned _visibility : 2; // EVisibility
|
| - unsigned _text_align : 3; // ETextAlign
|
| - unsigned _text_transform : 2; // ETextTransform
|
| - unsigned _text_decorations : 4;
|
| - unsigned _cursor_style : 6; // ECursor
|
| - unsigned _direction : 1; // TextDirection
|
| - bool _border_collapse : 1 ;
|
| - unsigned _white_space : 3; // EWhiteSpace
|
| - unsigned _box_direction : 1; // EBoxDirection (CSS3 box_direction property, flexible box layout module)
|
| -
|
| - // non CSS2 inherited
|
| - bool _visuallyOrdered : 1;
|
| - bool _htmlHacks :1;
|
| - bool _force_backgrounds_to_white : 1;
|
| - unsigned _pointerEvents : 4; // EPointerEvents
|
| - } inherited_flags;
|
| -
|
| -// don't inherit
|
| - struct NonInheritedFlags {
|
| - bool operator==(const NonInheritedFlags& other) const
|
| - {
|
| - return (_effectiveDisplay == other._effectiveDisplay) &&
|
| - (_originalDisplay == other._originalDisplay) &&
|
| - (_overflowX == other._overflowX) &&
|
| - (_overflowY == other._overflowY) &&
|
| - (_vertical_align == other._vertical_align) &&
|
| - (_clear == other._clear) &&
|
| - (_position == other._position) &&
|
| - (_floating == other._floating) &&
|
| - (_table_layout == other._table_layout) &&
|
| - (_page_break_before == other._page_break_before) &&
|
| - (_page_break_after == other._page_break_after) &&
|
| - (_styleType == other._styleType) &&
|
| - (_affectedByHover == other._affectedByHover) &&
|
| - (_affectedByActive == other._affectedByActive) &&
|
| - (_affectedByDrag == other._affectedByDrag) &&
|
| - (_pseudoBits == other._pseudoBits) &&
|
| - (_unicodeBidi == other._unicodeBidi);
|
| - }
|
| -
|
| - bool operator!=(const NonInheritedFlags& other) const { return !(*this == other); }
|
| -
|
| - unsigned _effectiveDisplay : 5; // EDisplay
|
| - unsigned _originalDisplay : 5; // EDisplay
|
| - unsigned _overflowX : 3; // EOverflow
|
| - unsigned _overflowY : 3; // EOverflow
|
| - unsigned _vertical_align : 4; // EVerticalAlign
|
| - unsigned _clear : 2; // EClear
|
| - unsigned _position : 2; // EPosition
|
| - unsigned _floating : 2; // EFloat
|
| - unsigned _table_layout : 1; // ETableLayout
|
| -
|
| - unsigned _page_break_before : 2; // EPageBreak
|
| - unsigned _page_break_after : 2; // EPageBreak
|
| -
|
| - unsigned _styleType : 5; // PseudoId
|
| - bool _affectedByHover : 1;
|
| - bool _affectedByActive : 1;
|
| - bool _affectedByDrag : 1;
|
| - unsigned _pseudoBits : 7;
|
| - unsigned _unicodeBidi : 2; // EUnicodeBidi
|
| - } noninherited_flags;
|
| -
|
| - // non-inherited attributes
|
| - DataRef<StyleBoxData> box;
|
| - DataRef<StyleVisualData> visual;
|
| - DataRef<StyleBackgroundData> background;
|
| - DataRef<StyleSurroundData> surround;
|
| - DataRef<StyleRareNonInheritedData> rareNonInheritedData;
|
| -
|
| - // inherited attributes
|
| - DataRef<StyleRareInheritedData> rareInheritedData;
|
| - DataRef<StyleInheritedData> inherited;
|
| -
|
| - // list of associated pseudo styles
|
| - RefPtr<RenderStyle> m_cachedPseudoStyle;
|
| -
|
| - unsigned m_pseudoState : 3; // PseudoState
|
| - bool m_affectedByAttributeSelectors : 1;
|
| - bool m_unique : 1;
|
| -
|
| - // Bits for dynamic child matching.
|
| - bool m_affectedByEmpty : 1;
|
| - bool m_emptyState : 1;
|
| -
|
| - // We optimize for :first-child and :last-child. The other positional child selectors like nth-child or
|
| - // *-child-of-type, we will just give up and re-evaluate whenever children change at all.
|
| - bool m_childrenAffectedByFirstChildRules : 1;
|
| - bool m_childrenAffectedByLastChildRules : 1;
|
| - bool m_childrenAffectedByDirectAdjacentRules : 1;
|
| - bool m_childrenAffectedByForwardPositionalRules : 1;
|
| - bool m_childrenAffectedByBackwardPositionalRules : 1;
|
| - bool m_firstChildState : 1;
|
| - bool m_lastChildState : 1;
|
| - unsigned m_childIndex : 18; // Plenty of bits to cache an index.
|
| -
|
| -#if ENABLE(SVG)
|
| - DataRef<SVGRenderStyle> m_svgStyle;
|
| -#endif
|
| -
|
| -// !END SYNC!
|
| -
|
| -protected:
|
| - void setBitDefaults()
|
| - {
|
| - inherited_flags._empty_cells = initialEmptyCells();
|
| - inherited_flags._caption_side = initialCaptionSide();
|
| - inherited_flags._list_style_type = initialListStyleType();
|
| - inherited_flags._list_style_position = initialListStylePosition();
|
| - inherited_flags._visibility = initialVisibility();
|
| - inherited_flags._text_align = initialTextAlign();
|
| - inherited_flags._text_transform = initialTextTransform();
|
| - inherited_flags._text_decorations = initialTextDecoration();
|
| - inherited_flags._cursor_style = initialCursor();
|
| - inherited_flags._direction = initialDirection();
|
| - inherited_flags._border_collapse = initialBorderCollapse();
|
| - inherited_flags._white_space = initialWhiteSpace();
|
| - inherited_flags._visuallyOrdered = initialVisuallyOrdered();
|
| - inherited_flags._htmlHacks=false;
|
| - inherited_flags._box_direction = initialBoxDirection();
|
| - inherited_flags._force_backgrounds_to_white = false;
|
| - inherited_flags._pointerEvents = initialPointerEvents();
|
| -
|
| - noninherited_flags._effectiveDisplay = noninherited_flags._originalDisplay = initialDisplay();
|
| - noninherited_flags._overflowX = initialOverflowX();
|
| - noninherited_flags._overflowY = initialOverflowY();
|
| - noninherited_flags._vertical_align = initialVerticalAlign();
|
| - noninherited_flags._clear = initialClear();
|
| - noninherited_flags._position = initialPosition();
|
| - noninherited_flags._floating = initialFloating();
|
| - noninherited_flags._table_layout = initialTableLayout();
|
| - noninherited_flags._page_break_before = initialPageBreak();
|
| - noninherited_flags._page_break_after = initialPageBreak();
|
| - noninherited_flags._styleType = NOPSEUDO;
|
| - noninherited_flags._affectedByHover = false;
|
| - noninherited_flags._affectedByActive = false;
|
| - noninherited_flags._affectedByDrag = false;
|
| - noninherited_flags._pseudoBits = 0;
|
| - noninherited_flags._unicodeBidi = initialUnicodeBidi();
|
| - }
|
| -
|
| -protected:
|
| - RenderStyle();
|
| - // used to create the default style.
|
| - RenderStyle(bool);
|
| - RenderStyle(const RenderStyle&);
|
| -
|
| -public:
|
| - static PassRefPtr<RenderStyle> create();
|
| - static PassRefPtr<RenderStyle> createDefaultStyle();
|
| - static PassRefPtr<RenderStyle> clone(const RenderStyle*);
|
| -
|
| - ~RenderStyle();
|
| -
|
| - void inheritFrom(const RenderStyle* inheritParent);
|
| -
|
| - PseudoId styleType() { return static_cast<PseudoId>(noninherited_flags._styleType); }
|
| - void setStyleType(PseudoId styleType) { noninherited_flags._styleType = styleType; }
|
| -
|
| - RenderStyle* getCachedPseudoStyle(PseudoId);
|
| - RenderStyle* addCachedPseudoStyle(PassRefPtr<RenderStyle>);
|
| -
|
| - bool affectedByHoverRules() const { return noninherited_flags._affectedByHover; }
|
| - bool affectedByActiveRules() const { return noninherited_flags._affectedByActive; }
|
| - bool affectedByDragRules() const { return noninherited_flags._affectedByDrag; }
|
| -
|
| - void setAffectedByHoverRules(bool b) { noninherited_flags._affectedByHover = b; }
|
| - void setAffectedByActiveRules(bool b) { noninherited_flags._affectedByActive = b; }
|
| - void setAffectedByDragRules(bool b) { noninherited_flags._affectedByDrag = b; }
|
| -
|
| - bool operator==(const RenderStyle& other) const;
|
| - bool operator!=(const RenderStyle& other) const { return !(*this == other); }
|
| - bool isFloating() const { return !(noninherited_flags._floating == FNONE); }
|
| - bool hasMargin() const { return surround->margin.nonZero(); }
|
| - bool hasBorder() const { return surround->border.hasBorder(); }
|
| - bool hasPadding() const { return surround->padding.nonZero(); }
|
| - bool hasOffset() const { return surround->offset.nonZero(); }
|
| -
|
| - bool hasBackground() const
|
| - {
|
| - if (backgroundColor().isValid() && backgroundColor().alpha() > 0)
|
| - return true;
|
| - return background->m_background.hasImage();
|
| - }
|
| - bool hasFixedBackgroundImage() const { return background->m_background.hasFixedImage(); }
|
| - bool hasAppearance() const { return appearance() != NoControlPart; }
|
| -
|
| - bool visuallyOrdered() const { return inherited_flags._visuallyOrdered; }
|
| - void setVisuallyOrdered(bool b) { inherited_flags._visuallyOrdered = b; }
|
| -
|
| - bool isStyleAvailable() const;
|
| -
|
| - bool hasPseudoStyle(PseudoId pseudo) const;
|
| - void setHasPseudoStyle(PseudoId pseudo);
|
| -
|
| - // attribute getter methods
|
| -
|
| - EDisplay display() const { return static_cast<EDisplay>(noninherited_flags._effectiveDisplay); }
|
| - EDisplay originalDisplay() const { return static_cast<EDisplay>(noninherited_flags._originalDisplay); }
|
| -
|
| - Length left() const { return surround->offset.left(); }
|
| - Length right() const { return surround->offset.right(); }
|
| - Length top() const { return surround->offset.top(); }
|
| - Length bottom() const { return surround->offset.bottom(); }
|
| -
|
| - // Whether or not a positioned element requires normal flow x/y to be computed
|
| - // to determine its position.
|
| - bool hasStaticX() const { return (left().isAuto() && right().isAuto()) || left().isStatic() || right().isStatic(); }
|
| - bool hasStaticY() const { return (top().isAuto() && bottom().isAuto()) || top().isStatic(); }
|
| -
|
| - EPosition position() const { return static_cast<EPosition>(noninherited_flags._position); }
|
| - EFloat floating() const { return static_cast<EFloat>(noninherited_flags._floating); }
|
| -
|
| - Length width() const { return box->width; }
|
| - Length height() const { return box->height; }
|
| - Length minWidth() const { return box->min_width; }
|
| - Length maxWidth() const { return box->max_width; }
|
| - Length minHeight() const { return box->min_height; }
|
| - Length maxHeight() const { return box->max_height; }
|
| -
|
| - const BorderData& border() const { return surround->border; }
|
| - const BorderValue& borderLeft() const { return surround->border.left; }
|
| - const BorderValue& borderRight() const { return surround->border.right; }
|
| - const BorderValue& borderTop() const { return surround->border.top; }
|
| - const BorderValue& borderBottom() const { return surround->border.bottom; }
|
| -
|
| - const NinePieceImage& borderImage() const { return surround->border.image; }
|
| -
|
| - const IntSize& borderTopLeftRadius() const { return surround->border.topLeft; }
|
| - const IntSize& borderTopRightRadius() const { return surround->border.topRight; }
|
| - const IntSize& borderBottomLeftRadius() const { return surround->border.bottomLeft; }
|
| - const IntSize& borderBottomRightRadius() const { return surround->border.bottomRight; }
|
| - bool hasBorderRadius() const { return surround->border.hasBorderRadius(); }
|
| -
|
| - unsigned short borderLeftWidth() const { return surround->border.borderLeftWidth(); }
|
| - EBorderStyle borderLeftStyle() const { return surround->border.left.style(); }
|
| - const Color& borderLeftColor() const { return surround->border.left.color; }
|
| - bool borderLeftIsTransparent() const { return surround->border.left.isTransparent(); }
|
| - unsigned short borderRightWidth() const { return surround->border.borderRightWidth(); }
|
| - EBorderStyle borderRightStyle() const { return surround->border.right.style(); }
|
| - const Color& borderRightColor() const { return surround->border.right.color; }
|
| - bool borderRightIsTransparent() const { return surround->border.right.isTransparent(); }
|
| - unsigned short borderTopWidth() const { return surround->border.borderTopWidth(); }
|
| - EBorderStyle borderTopStyle() const { return surround->border.top.style(); }
|
| - const Color& borderTopColor() const { return surround->border.top.color; }
|
| - bool borderTopIsTransparent() const { return surround->border.top.isTransparent(); }
|
| - unsigned short borderBottomWidth() const { return surround->border.borderBottomWidth(); }
|
| - EBorderStyle borderBottomStyle() const { return surround->border.bottom.style(); }
|
| - const Color& borderBottomColor() const { return surround->border.bottom.color; }
|
| - bool borderBottomIsTransparent() const { return surround->border.bottom.isTransparent(); }
|
| -
|
| - unsigned short outlineSize() const { return max(0, outlineWidth() + outlineOffset()); }
|
| - unsigned short outlineWidth() const
|
| - {
|
| - if (background->m_outline.style() == BNONE)
|
| - return 0;
|
| - return background->m_outline.width;
|
| - }
|
| - bool hasOutline() const { return outlineWidth() > 0 && outlineStyle() > BHIDDEN; }
|
| - EBorderStyle outlineStyle() const { return background->m_outline.style(); }
|
| - bool outlineStyleIsAuto() const { return background->m_outline._auto; }
|
| - const Color& outlineColor() const { return background->m_outline.color; }
|
| -
|
| - EOverflow overflowX() const { return static_cast<EOverflow>(noninherited_flags._overflowX); }
|
| - EOverflow overflowY() const { return static_cast<EOverflow>(noninherited_flags._overflowY); }
|
| -
|
| - EVisibility visibility() const { return static_cast<EVisibility>(inherited_flags._visibility); }
|
| - EVerticalAlign verticalAlign() const { return static_cast<EVerticalAlign>(noninherited_flags._vertical_align); }
|
| - Length verticalAlignLength() const { return box->vertical_align; }
|
| -
|
| - Length clipLeft() const { return visual->clip.left(); }
|
| - Length clipRight() const { return visual->clip.right(); }
|
| - Length clipTop() const { return visual->clip.top(); }
|
| - Length clipBottom() const { return visual->clip.bottom(); }
|
| - LengthBox clip() const { return visual->clip; }
|
| - bool hasClip() const { return visual->hasClip; }
|
| -
|
| - EUnicodeBidi unicodeBidi() const { return static_cast<EUnicodeBidi>(noninherited_flags._unicodeBidi); }
|
| -
|
| - EClear clear() const { return static_cast<EClear>(noninherited_flags._clear); }
|
| - ETableLayout tableLayout() const { return static_cast<ETableLayout>(noninherited_flags._table_layout); }
|
| -
|
| - const Font& font() const { return inherited->font; }
|
| - const FontDescription& fontDescription() const { return inherited->font.fontDescription(); }
|
| - int fontSize() const { return inherited->font.pixelSize(); }
|
| -
|
| - const Color& color() const { return inherited->color; }
|
| - Length textIndent() const { return inherited->indent; }
|
| - ETextAlign textAlign() const { return static_cast<ETextAlign>(inherited_flags._text_align); }
|
| - ETextTransform textTransform() const { return static_cast<ETextTransform>(inherited_flags._text_transform); }
|
| - int textDecorationsInEffect() const { return inherited_flags._text_decorations; }
|
| - int textDecoration() const { return visual->textDecoration; }
|
| - int wordSpacing() const { return inherited->font.wordSpacing(); }
|
| - int letterSpacing() const { return inherited->font.letterSpacing(); }
|
| -
|
| - float zoom() const { return visual->m_zoom; }
|
| - float effectiveZoom() const { return inherited->m_effectiveZoom; }
|
| -
|
| - TextDirection direction() const { return static_cast<TextDirection>(inherited_flags._direction); }
|
| - Length lineHeight() const { return inherited->line_height; }
|
| - int computedLineHeight() const
|
| - {
|
| - Length lh = lineHeight();
|
| -
|
| - // Negative value means the line height is not set. Use the font's built-in spacing.
|
| - if (lh.isNegative())
|
| - return font().lineSpacing();
|
| -
|
| - if (lh.isPercent())
|
| - return lh.calcMinValue(fontSize());
|
| -
|
| - return lh.value();
|
| - }
|
| -
|
| - EWhiteSpace whiteSpace() const { return static_cast<EWhiteSpace>(inherited_flags._white_space); }
|
| - static bool autoWrap(EWhiteSpace ws)
|
| - {
|
| - // Nowrap and pre don't automatically wrap.
|
| - return ws != NOWRAP && ws != PRE;
|
| - }
|
| -
|
| - bool autoWrap() const
|
| - {
|
| - return autoWrap(whiteSpace());
|
| - }
|
| -
|
| - static bool preserveNewline(EWhiteSpace ws)
|
| - {
|
| - // Normal and nowrap do not preserve newlines.
|
| - return ws != NORMAL && ws != NOWRAP;
|
| - }
|
| -
|
| - bool preserveNewline() const
|
| - {
|
| - return preserveNewline(whiteSpace());
|
| - }
|
| -
|
| - static bool collapseWhiteSpace(EWhiteSpace ws)
|
| - {
|
| - // Pre and prewrap do not collapse whitespace.
|
| - return ws != PRE && ws != PRE_WRAP;
|
| - }
|
| -
|
| - bool collapseWhiteSpace() const
|
| - {
|
| - return collapseWhiteSpace(whiteSpace());
|
| - }
|
| -
|
| - bool isCollapsibleWhiteSpace(UChar c) const
|
| - {
|
| - switch (c) {
|
| - case ' ':
|
| - case '\t':
|
| - return collapseWhiteSpace();
|
| - case '\n':
|
| - return !preserveNewline();
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - bool breakOnlyAfterWhiteSpace() const
|
| - {
|
| - return whiteSpace() == PRE_WRAP || khtmlLineBreak() == AFTER_WHITE_SPACE;
|
| - }
|
| -
|
| - bool breakWords() const
|
| - {
|
| - return wordBreak() == BreakWordBreak || wordWrap() == BreakWordWrap;
|
| - }
|
| -
|
| - const Color& backgroundColor() const { return background->m_color; }
|
| - StyleImage* backgroundImage() const { return background->m_background.m_image.get(); }
|
| - EFillRepeat backgroundRepeat() const { return static_cast<EFillRepeat>(background->m_background.m_repeat); }
|
| - CompositeOperator backgroundComposite() const { return static_cast<CompositeOperator>(background->m_background.m_composite); }
|
| - bool backgroundAttachment() const { return background->m_background.m_attachment; }
|
| - EFillBox backgroundClip() const { return static_cast<EFillBox>(background->m_background.m_clip); }
|
| - EFillBox backgroundOrigin() const { return static_cast<EFillBox>(background->m_background.m_origin); }
|
| - Length backgroundXPosition() const { return background->m_background.m_xPosition; }
|
| - Length backgroundYPosition() const { return background->m_background.m_yPosition; }
|
| - LengthSize backgroundSize() const { return background->m_background.m_size; }
|
| - FillLayer* accessBackgroundLayers() { return &(background.access()->m_background); }
|
| - const FillLayer* backgroundLayers() const { return &(background->m_background); }
|
| -
|
| - StyleImage* maskImage() const { return rareNonInheritedData->m_mask.m_image.get(); }
|
| - EFillRepeat maskRepeat() const { return static_cast<EFillRepeat>(rareNonInheritedData->m_mask.m_repeat); }
|
| - CompositeOperator maskComposite() const { return static_cast<CompositeOperator>(rareNonInheritedData->m_mask.m_composite); }
|
| - bool maskAttachment() const { return rareNonInheritedData->m_mask.m_attachment; }
|
| - EFillBox maskClip() const { return static_cast<EFillBox>(rareNonInheritedData->m_mask.m_clip); }
|
| - EFillBox maskOrigin() const { return static_cast<EFillBox>(rareNonInheritedData->m_mask.m_origin); }
|
| - Length maskXPosition() const { return rareNonInheritedData->m_mask.m_xPosition; }
|
| - Length maskYPosition() const { return rareNonInheritedData->m_mask.m_yPosition; }
|
| - LengthSize maskSize() const { return rareNonInheritedData->m_mask.m_size; }
|
| - FillLayer* accessMaskLayers() { return &(rareNonInheritedData.access()->m_mask); }
|
| - const FillLayer* maskLayers() const { return &(rareNonInheritedData->m_mask); }
|
| - const NinePieceImage& maskBoxImage() const { return rareNonInheritedData->m_maskBoxImage; }
|
| -
|
| - // returns true for collapsing borders, false for separate borders
|
| - bool borderCollapse() const { return inherited_flags._border_collapse; }
|
| - short horizontalBorderSpacing() const { return inherited->horizontal_border_spacing; }
|
| - short verticalBorderSpacing() const { return inherited->vertical_border_spacing; }
|
| - EEmptyCell emptyCells() const { return static_cast<EEmptyCell>(inherited_flags._empty_cells); }
|
| - ECaptionSide captionSide() const { return static_cast<ECaptionSide>(inherited_flags._caption_side); }
|
| -
|
| - short counterIncrement() const { return visual->counterIncrement; }
|
| - short counterReset() const { return visual->counterReset; }
|
| -
|
| - EListStyleType listStyleType() const { return static_cast<EListStyleType>(inherited_flags._list_style_type); }
|
| - StyleImage* listStyleImage() const { return inherited->list_style_image.get(); }
|
| - EListStylePosition listStylePosition() const { return static_cast<EListStylePosition>(inherited_flags._list_style_position); }
|
| -
|
| - Length marginTop() const { return surround->margin.top(); }
|
| - Length marginBottom() const { return surround->margin.bottom(); }
|
| - Length marginLeft() const { return surround->margin.left(); }
|
| - Length marginRight() const { return surround->margin.right(); }
|
| -
|
| - LengthBox paddingBox() const { return surround->padding; }
|
| - Length paddingTop() const { return surround->padding.top(); }
|
| - Length paddingBottom() const { return surround->padding.bottom(); }
|
| - Length paddingLeft() const { return surround->padding.left(); }
|
| - Length paddingRight() const { return surround->padding.right(); }
|
| -
|
| - ECursor cursor() const { return static_cast<ECursor>(inherited_flags._cursor_style); }
|
| -
|
| - CursorList* cursors() const { return inherited->cursorData.get(); }
|
| -
|
| - short widows() const { return inherited->widows; }
|
| - short orphans() const { return inherited->orphans; }
|
| - EPageBreak pageBreakInside() const { return static_cast<EPageBreak>(inherited->page_break_inside); }
|
| - EPageBreak pageBreakBefore() const { return static_cast<EPageBreak>(noninherited_flags._page_break_before); }
|
| - EPageBreak pageBreakAfter() const { return static_cast<EPageBreak>(noninherited_flags._page_break_after); }
|
| -
|
| - // CSS3 Getter Methods
|
| -#if ENABLE(XBL)
|
| - BindingURI* bindingURIs() const { return rareNonInheritedData->bindingURI; }
|
| -#endif
|
| -
|
| - int outlineOffset() const
|
| - {
|
| - if (background->m_outline.style() == BNONE)
|
| - return 0;
|
| - return background->m_outline._offset;
|
| - }
|
| -
|
| - ShadowData* textShadow() const { return rareInheritedData->textShadow; }
|
| - const Color& textStrokeColor() const { return rareInheritedData->textStrokeColor; }
|
| - float textStrokeWidth() const { return rareInheritedData->textStrokeWidth; }
|
| - const Color& textFillColor() const { return rareInheritedData->textFillColor; }
|
| - float opacity() const { return rareNonInheritedData->opacity; }
|
| - ControlPart appearance() const { return static_cast<ControlPart>(rareNonInheritedData->m_appearance); }
|
| - EBoxAlignment boxAlign() const { return static_cast<EBoxAlignment>(rareNonInheritedData->flexibleBox->align); }
|
| - EBoxDirection boxDirection() const { return static_cast<EBoxDirection>(inherited_flags._box_direction); }
|
| - float boxFlex() { return rareNonInheritedData->flexibleBox->flex; }
|
| - unsigned int boxFlexGroup() const { return rareNonInheritedData->flexibleBox->flex_group; }
|
| - EBoxLines boxLines() { return static_cast<EBoxLines>(rareNonInheritedData->flexibleBox->lines); }
|
| - unsigned int boxOrdinalGroup() const { return rareNonInheritedData->flexibleBox->ordinal_group; }
|
| - EBoxOrient boxOrient() const { return static_cast<EBoxOrient>(rareNonInheritedData->flexibleBox->orient); }
|
| - EBoxAlignment boxPack() const { return static_cast<EBoxAlignment>(rareNonInheritedData->flexibleBox->pack); }
|
| - ShadowData* boxShadow() const { return rareNonInheritedData->m_boxShadow.get(); }
|
| - StyleReflection* boxReflect() const { return rareNonInheritedData->m_boxReflect.get(); }
|
| - EBoxSizing boxSizing() const { return static_cast<EBoxSizing>(box->boxSizing); }
|
| - Length marqueeIncrement() const { return rareNonInheritedData->marquee->increment; }
|
| - int marqueeSpeed() const { return rareNonInheritedData->marquee->speed; }
|
| - int marqueeLoopCount() const { return rareNonInheritedData->marquee->loops; }
|
| - EMarqueeBehavior marqueeBehavior() const { return static_cast<EMarqueeBehavior>(rareNonInheritedData->marquee->behavior); }
|
| - EMarqueeDirection marqueeDirection() const { return static_cast<EMarqueeDirection>(rareNonInheritedData->marquee->direction); }
|
| - EUserModify userModify() const { return static_cast<EUserModify>(rareInheritedData->userModify); }
|
| - EUserDrag userDrag() const { return static_cast<EUserDrag>(rareNonInheritedData->userDrag); }
|
| - EUserSelect userSelect() const { return static_cast<EUserSelect>(rareInheritedData->userSelect); }
|
| - bool textOverflow() const { return rareNonInheritedData->textOverflow; }
|
| - EMarginCollapse marginTopCollapse() const { return static_cast<EMarginCollapse>(rareNonInheritedData->marginTopCollapse); }
|
| - EMarginCollapse marginBottomCollapse() const { return static_cast<EMarginCollapse>(rareNonInheritedData->marginBottomCollapse); }
|
| - EWordBreak wordBreak() const { return static_cast<EWordBreak>(rareInheritedData->wordBreak); }
|
| - EWordWrap wordWrap() const { return static_cast<EWordWrap>(rareInheritedData->wordWrap); }
|
| - ENBSPMode nbspMode() const { return static_cast<ENBSPMode>(rareInheritedData->nbspMode); }
|
| - EKHTMLLineBreak khtmlLineBreak() const { return static_cast<EKHTMLLineBreak>(rareInheritedData->khtmlLineBreak); }
|
| - EMatchNearestMailBlockquoteColor matchNearestMailBlockquoteColor() const { return static_cast<EMatchNearestMailBlockquoteColor>(rareNonInheritedData->matchNearestMailBlockquoteColor); }
|
| - const AtomicString& highlight() const { return rareInheritedData->highlight; }
|
| - EBorderFit borderFit() const { return static_cast<EBorderFit>(rareNonInheritedData->m_borderFit); }
|
| - EResize resize() const { return static_cast<EResize>(rareInheritedData->resize); }
|
| - float columnWidth() const { return rareNonInheritedData->m_multiCol->m_width; }
|
| - bool hasAutoColumnWidth() const { return rareNonInheritedData->m_multiCol->m_autoWidth; }
|
| - unsigned short columnCount() const { return rareNonInheritedData->m_multiCol->m_count; }
|
| - bool hasAutoColumnCount() const { return rareNonInheritedData->m_multiCol->m_autoCount; }
|
| - float columnGap() const { return rareNonInheritedData->m_multiCol->m_gap; }
|
| - bool hasNormalColumnGap() const { return rareNonInheritedData->m_multiCol->m_normalGap; }
|
| - const Color& columnRuleColor() const { return rareNonInheritedData->m_multiCol->m_rule.color; }
|
| - EBorderStyle columnRuleStyle() const { return rareNonInheritedData->m_multiCol->m_rule.style(); }
|
| - unsigned short columnRuleWidth() const { return rareNonInheritedData->m_multiCol->ruleWidth(); }
|
| - bool columnRuleIsTransparent() const { return rareNonInheritedData->m_multiCol->m_rule.isTransparent(); }
|
| - EPageBreak columnBreakBefore() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakBefore); }
|
| - EPageBreak columnBreakInside() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakInside); }
|
| - EPageBreak columnBreakAfter() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakAfter); }
|
| - const TransformOperations& transform() const { return rareNonInheritedData->m_transform->m_operations; }
|
| - Length transformOriginX() const { return rareNonInheritedData->m_transform->m_x; }
|
| - Length transformOriginY() const { return rareNonInheritedData->m_transform->m_y; }
|
| - bool hasTransform() const { return !rareNonInheritedData->m_transform->m_operations.operations().isEmpty(); }
|
| -
|
| - enum ApplyTransformOrigin { IncludeTransformOrigin, ExcludeTransformOrigin };
|
| - void applyTransform(TransformationMatrix&, const IntSize& borderBoxSize, ApplyTransformOrigin = IncludeTransformOrigin) const;
|
| -
|
| - bool hasMask() const { return rareNonInheritedData->m_mask.hasImage() || rareNonInheritedData->m_maskBoxImage.hasImage(); }
|
| - // End CSS3 Getters
|
| -
|
| - // Apple-specific property getter methods
|
| - EPointerEvents pointerEvents() const { return static_cast<EPointerEvents>(inherited_flags._pointerEvents); }
|
| - const AnimationList* animations() const { return rareNonInheritedData->m_animations.get(); }
|
| - const AnimationList* transitions() const { return rareNonInheritedData->m_transitions.get(); }
|
| -
|
| - AnimationList* accessAnimations();
|
| - AnimationList* accessTransitions();
|
| -
|
| - bool hasAnimations() const { return rareNonInheritedData->m_animations && rareNonInheritedData->m_animations->size() > 0; }
|
| - bool hasTransitions() const { return rareNonInheritedData->m_transitions && rareNonInheritedData->m_transitions->size() > 0; }
|
| -
|
| - // return the first found Animation (including 'all' transitions)
|
| - const Animation* transitionForProperty(int property);
|
| -
|
| - int lineClamp() const { return rareNonInheritedData->lineClamp; }
|
| - bool textSizeAdjust() const { return rareInheritedData->textSizeAdjust; }
|
| - ETextSecurity textSecurity() const { return static_cast<ETextSecurity>(rareInheritedData->textSecurity); }
|
| -
|
| -// attribute setter methods
|
| -
|
| - void setDisplay(EDisplay v) { noninherited_flags._effectiveDisplay = v; }
|
| - void setOriginalDisplay(EDisplay v) { noninherited_flags._originalDisplay = v; }
|
| - void setPosition(EPosition v) { noninherited_flags._position = v; }
|
| - void setFloating(EFloat v) { noninherited_flags._floating = v; }
|
| -
|
| - void setLeft(Length v) { SET_VAR(surround, offset.m_left, v) }
|
| - void setRight(Length v) { SET_VAR(surround, offset.m_right, v) }
|
| - void setTop(Length v) { SET_VAR(surround, offset.m_top, v) }
|
| - void setBottom(Length v) { SET_VAR(surround, offset.m_bottom, v) }
|
| -
|
| - void setWidth(Length v) { SET_VAR(box, width, v) }
|
| - void setHeight(Length v) { SET_VAR(box, height, v) }
|
| -
|
| - void setMinWidth(Length v) { SET_VAR(box, min_width, v) }
|
| - void setMaxWidth(Length v) { SET_VAR(box, max_width, v) }
|
| - void setMinHeight(Length v) { SET_VAR(box, min_height, v) }
|
| - void setMaxHeight(Length v) { SET_VAR(box, max_height, v) }
|
| -
|
| -#if ENABLE(DASHBOARD_SUPPORT)
|
| - Vector<StyleDashboardRegion> dashboardRegions() const { return rareNonInheritedData->m_dashboardRegions; }
|
| - void setDashboardRegions(Vector<StyleDashboardRegion> regions) { SET_VAR(rareNonInheritedData, m_dashboardRegions, regions); }
|
| -
|
| - void setDashboardRegion(int type, const String& label, Length t, Length r, Length b, Length l, bool append)
|
| - {
|
| - StyleDashboardRegion region;
|
| - region.label = label;
|
| - region.offset.m_top = t;
|
| - region.offset.m_right = r;
|
| - region.offset.m_bottom = b;
|
| - region.offset.m_left = l;
|
| - region.type = type;
|
| - if (!append)
|
| - rareNonInheritedData.access()->m_dashboardRegions.clear();
|
| - rareNonInheritedData.access()->m_dashboardRegions.append(region);
|
| - }
|
| -#endif
|
| -
|
| - void resetBorder() { resetBorderImage(); resetBorderTop(); resetBorderRight(); resetBorderBottom(); resetBorderLeft(); resetBorderRadius(); }
|
| - void resetBorderTop() { SET_VAR(surround, border.top, BorderValue()) }
|
| - void resetBorderRight() { SET_VAR(surround, border.right, BorderValue()) }
|
| - void resetBorderBottom() { SET_VAR(surround, border.bottom, BorderValue()) }
|
| - void resetBorderLeft() { SET_VAR(surround, border.left, BorderValue()) }
|
| - void resetBorderImage() { SET_VAR(surround, border.image, NinePieceImage()) }
|
| - void resetBorderRadius() { resetBorderTopLeftRadius(); resetBorderTopRightRadius(); resetBorderBottomLeftRadius(); resetBorderBottomRightRadius(); }
|
| - void resetBorderTopLeftRadius() { SET_VAR(surround, border.topLeft, initialBorderRadius()) }
|
| - void resetBorderTopRightRadius() { SET_VAR(surround, border.topRight, initialBorderRadius()) }
|
| - void resetBorderBottomLeftRadius() { SET_VAR(surround, border.bottomLeft, initialBorderRadius()) }
|
| - void resetBorderBottomRightRadius() { SET_VAR(surround, border.bottomRight, initialBorderRadius()) }
|
| -
|
| - void resetOutline() { SET_VAR(background, m_outline, OutlineValue()) }
|
| -
|
| - void setBackgroundColor(const Color& v) { SET_VAR(background, m_color, v) }
|
| -
|
| - void setBorderImage(const NinePieceImage& b) { SET_VAR(surround, border.image, b) }
|
| -
|
| - void setBorderTopLeftRadius(const IntSize& s) { SET_VAR(surround, border.topLeft, s) }
|
| - void setBorderTopRightRadius(const IntSize& s) { SET_VAR(surround, border.topRight, s) }
|
| - void setBorderBottomLeftRadius(const IntSize& s) { SET_VAR(surround, border.bottomLeft, s) }
|
| - void setBorderBottomRightRadius(const IntSize& s) { SET_VAR(surround, border.bottomRight, s) }
|
| -
|
| - void setBorderRadius(const IntSize& s)
|
| - {
|
| - setBorderTopLeftRadius(s);
|
| - setBorderTopRightRadius(s);
|
| - setBorderBottomLeftRadius(s);
|
| - setBorderBottomRightRadius(s);
|
| - }
|
| -
|
| - void setBorderLeftWidth(unsigned short v) { SET_VAR(surround, border.left.width, v) }
|
| - void setBorderLeftStyle(EBorderStyle v) { SET_VAR(surround, border.left.m_style, v) }
|
| - void setBorderLeftColor(const Color& v) { SET_VAR(surround, border.left.color, v) }
|
| - void setBorderRightWidth(unsigned short v) { SET_VAR(surround, border.right.width, v) }
|
| - void setBorderRightStyle(EBorderStyle v) { SET_VAR(surround, border.right.m_style, v) }
|
| - void setBorderRightColor(const Color& v) { SET_VAR(surround, border.right.color, v) }
|
| - void setBorderTopWidth(unsigned short v) { SET_VAR(surround, border.top.width, v) }
|
| - void setBorderTopStyle(EBorderStyle v) { SET_VAR(surround, border.top.m_style, v) }
|
| - void setBorderTopColor(const Color& v) { SET_VAR(surround, border.top.color, v) }
|
| - void setBorderBottomWidth(unsigned short v) { SET_VAR(surround, border.bottom.width, v) }
|
| - void setBorderBottomStyle(EBorderStyle v) { SET_VAR(surround, border.bottom.m_style, v) }
|
| - void setBorderBottomColor(const Color& v) { SET_VAR(surround, border.bottom.color, v) }
|
| - void setOutlineWidth(unsigned short v) { SET_VAR(background, m_outline.width, v) }
|
| -
|
| - void setOutlineStyle(EBorderStyle v, bool isAuto = false)
|
| - {
|
| - SET_VAR(background, m_outline.m_style, v)
|
| - SET_VAR(background, m_outline._auto, isAuto)
|
| - }
|
| -
|
| - void setOutlineColor(const Color& v) { SET_VAR(background, m_outline.color, v) }
|
| -
|
| - void setOverflowX(EOverflow v) { noninherited_flags._overflowX = v; }
|
| - void setOverflowY(EOverflow v) { noninherited_flags._overflowY = v; }
|
| - void setVisibility(EVisibility v) { inherited_flags._visibility = v; }
|
| - void setVerticalAlign(EVerticalAlign v) { noninherited_flags._vertical_align = v; }
|
| - void setVerticalAlignLength(Length l) { SET_VAR(box, vertical_align, l ) }
|
| -
|
| - void setHasClip(bool b = true) { SET_VAR(visual, hasClip, b) }
|
| - void setClipLeft(Length v) { SET_VAR(visual, clip.m_left, v) }
|
| - void setClipRight(Length v) { SET_VAR(visual, clip.m_right, v) }
|
| - void setClipTop(Length v) { SET_VAR(visual, clip.m_top, v) }
|
| - void setClipBottom(Length v) { SET_VAR(visual, clip.m_bottom, v) }
|
| - void setClip(Length top, Length right, Length bottom, Length left);
|
| -
|
| - void setUnicodeBidi( EUnicodeBidi b ) { noninherited_flags._unicodeBidi = b; }
|
| -
|
| - void setClear(EClear v) { noninherited_flags._clear = v; }
|
| - void setTableLayout(ETableLayout v) { noninherited_flags._table_layout = v; }
|
| -
|
| - bool setFontDescription(const FontDescription& v)
|
| - {
|
| - if (inherited->font.fontDescription() != v) {
|
| - inherited.access()->font = Font(v, inherited->font.letterSpacing(), inherited->font.wordSpacing());
|
| - return true;
|
| - }
|
| - return false;
|
| - }
|
| -
|
| - // Only used for blending font sizes when animating.
|
| - void setBlendedFontSize(int);
|
| -
|
| - void setColor(const Color& v) { SET_VAR(inherited, color, v) }
|
| - void setTextIndent(Length v) { SET_VAR(inherited, indent, v) }
|
| - void setTextAlign(ETextAlign v) { inherited_flags._text_align = v; }
|
| - void setTextTransform(ETextTransform v) { inherited_flags._text_transform = v; }
|
| - void addToTextDecorationsInEffect(int v) { inherited_flags._text_decorations |= v; }
|
| - void setTextDecorationsInEffect(int v) { inherited_flags._text_decorations = v; }
|
| - void setTextDecoration(int v) { SET_VAR(visual, textDecoration, v); }
|
| - void setDirection(TextDirection v) { inherited_flags._direction = v; }
|
| - void setLineHeight(Length v) { SET_VAR(inherited, line_height, v) }
|
| - void setZoom(float f) { SET_VAR(visual, m_zoom, f); setEffectiveZoom(effectiveZoom() * zoom()); }
|
| - void setEffectiveZoom(float f) { SET_VAR(inherited, m_effectiveZoom, f) }
|
| -
|
| - void setWhiteSpace(EWhiteSpace v) { inherited_flags._white_space = v; }
|
| -
|
| - void setWordSpacing(int v) { inherited.access()->font.setWordSpacing(v); }
|
| - void setLetterSpacing(int v) { inherited.access()->font.setLetterSpacing(v); }
|
| -
|
| - void clearBackgroundLayers() { background.access()->m_background = FillLayer(BackgroundFillLayer); }
|
| - void inheritBackgroundLayers(const FillLayer& parent) { background.access()->m_background = parent; }
|
| -
|
| - void adjustBackgroundLayers()
|
| - {
|
| - if (backgroundLayers()->next()) {
|
| - accessBackgroundLayers()->cullEmptyLayers();
|
| - accessBackgroundLayers()->fillUnsetProperties();
|
| - }
|
| - }
|
| -
|
| - void clearMaskLayers() { rareNonInheritedData.access()->m_mask = FillLayer(MaskFillLayer); }
|
| - void inheritMaskLayers(const FillLayer& parent) { rareNonInheritedData.access()->m_mask = parent; }
|
| -
|
| - void adjustMaskLayers()
|
| - {
|
| - if (maskLayers()->next()) {
|
| - accessMaskLayers()->cullEmptyLayers();
|
| - accessMaskLayers()->fillUnsetProperties();
|
| - }
|
| - }
|
| -
|
| - void setMaskBoxImage(const NinePieceImage& b) { SET_VAR(rareNonInheritedData, m_maskBoxImage, b) }
|
| -
|
| - void setBorderCollapse(bool collapse) { inherited_flags._border_collapse = collapse; }
|
| - void setHorizontalBorderSpacing(short v) { SET_VAR(inherited, horizontal_border_spacing, v) }
|
| - void setVerticalBorderSpacing(short v) { SET_VAR(inherited, vertical_border_spacing, v) }
|
| - void setEmptyCells(EEmptyCell v) { inherited_flags._empty_cells = v; }
|
| - void setCaptionSide(ECaptionSide v) { inherited_flags._caption_side = v; }
|
| -
|
| - void setCounterIncrement(short v) { SET_VAR(visual, counterIncrement, v) }
|
| - void setCounterReset(short v) { SET_VAR(visual, counterReset, v) }
|
| -
|
| - void setListStyleType(EListStyleType v) { inherited_flags._list_style_type = v; }
|
| - void setListStyleImage(StyleImage* v) { if (inherited->list_style_image != v) inherited.access()->list_style_image = v; }
|
| - void setListStylePosition(EListStylePosition v) { inherited_flags._list_style_position = v; }
|
| -
|
| - void resetMargin() { SET_VAR(surround, margin, LengthBox(Fixed)) }
|
| - void setMarginTop(Length v) { SET_VAR(surround, margin.m_top, v) }
|
| - void setMarginBottom(Length v) { SET_VAR(surround, margin.m_bottom, v) }
|
| - void setMarginLeft(Length v) { SET_VAR(surround, margin.m_left, v) }
|
| - void setMarginRight(Length v) { SET_VAR(surround, margin.m_right, v) }
|
| -
|
| - void resetPadding() { SET_VAR(surround, padding, LengthBox(Auto)) }
|
| - void setPaddingBox(const LengthBox& b) { SET_VAR(surround, padding, b) }
|
| - void setPaddingTop(Length v) { SET_VAR(surround, padding.m_top, v) }
|
| - void setPaddingBottom(Length v) { SET_VAR(surround, padding.m_bottom, v) }
|
| - void setPaddingLeft(Length v) { SET_VAR(surround, padding.m_left, v) }
|
| - void setPaddingRight(Length v) { SET_VAR(surround, padding.m_right, v) }
|
| -
|
| - void setCursor( ECursor c ) { inherited_flags._cursor_style = c; }
|
| - void addCursor(CachedImage*, const IntPoint& = IntPoint());
|
| - void setCursorList(PassRefPtr<CursorList>);
|
| - void clearCursorList();
|
| -
|
| - bool forceBackgroundsToWhite() const { return inherited_flags._force_backgrounds_to_white; }
|
| - void setForceBackgroundsToWhite(bool b=true) { inherited_flags._force_backgrounds_to_white = b; }
|
| -
|
| - bool htmlHacks() const { return inherited_flags._htmlHacks; }
|
| - void setHtmlHacks(bool b=true) { inherited_flags._htmlHacks = b; }
|
| -
|
| - bool hasAutoZIndex() const { return box->z_auto; }
|
| - void setHasAutoZIndex() { SET_VAR(box, z_auto, true); SET_VAR(box, z_index, 0) }
|
| - int zIndex() const { return box->z_index; }
|
| - void setZIndex(int v) { SET_VAR(box, z_auto, false); SET_VAR(box, z_index, v) }
|
| -
|
| - void setWidows(short w) { SET_VAR(inherited, widows, w); }
|
| - void setOrphans(short o) { SET_VAR(inherited, orphans, o); }
|
| - void setPageBreakInside(EPageBreak b) { SET_VAR(inherited, page_break_inside, b); }
|
| - void setPageBreakBefore(EPageBreak b) { noninherited_flags._page_break_before = b; }
|
| - void setPageBreakAfter(EPageBreak b) { noninherited_flags._page_break_after = b; }
|
| -
|
| - // CSS3 Setters
|
| -#if ENABLE(XBL)
|
| - void deleteBindingURIs() { SET_VAR(rareNonInheritedData, bindingURI, static_cast<BindingURI*>(0)); }
|
| - void inheritBindingURIs(BindingURI* other) { SET_VAR(rareNonInheritedData, bindingURI, other->copy()); }
|
| - void addBindingURI(StringImpl* uri);
|
| -#endif
|
| -
|
| - void setOutlineOffset(int v) { SET_VAR(background, m_outline._offset, v) }
|
| - void setTextShadow(ShadowData* val, bool add=false);
|
| - void setTextStrokeColor(const Color& c) { SET_VAR(rareInheritedData, textStrokeColor, c) }
|
| - void setTextStrokeWidth(float w) { SET_VAR(rareInheritedData, textStrokeWidth, w) }
|
| - void setTextFillColor(const Color& c) { SET_VAR(rareInheritedData, textFillColor, c) }
|
| - void setOpacity(float f) { SET_VAR(rareNonInheritedData, opacity, f); }
|
| - void setAppearance(ControlPart a) { SET_VAR(rareNonInheritedData, m_appearance, a); }
|
| - void setBoxAlign(EBoxAlignment a) { SET_VAR(rareNonInheritedData.access()->flexibleBox, align, a); }
|
| - void setBoxDirection(EBoxDirection d) { inherited_flags._box_direction = d; }
|
| - void setBoxFlex(float f) { SET_VAR(rareNonInheritedData.access()->flexibleBox, flex, f); }
|
| - void setBoxFlexGroup(unsigned int fg) { SET_VAR(rareNonInheritedData.access()->flexibleBox, flex_group, fg); }
|
| - void setBoxLines(EBoxLines l) { SET_VAR(rareNonInheritedData.access()->flexibleBox, lines, l); }
|
| - void setBoxOrdinalGroup(unsigned int og) { SET_VAR(rareNonInheritedData.access()->flexibleBox, ordinal_group, og); }
|
| - void setBoxOrient(EBoxOrient o) { SET_VAR(rareNonInheritedData.access()->flexibleBox, orient, o); }
|
| - void setBoxPack(EBoxAlignment p) { SET_VAR(rareNonInheritedData.access()->flexibleBox, pack, p); }
|
| - void setBoxShadow(ShadowData* val, bool add=false);
|
| - void setBoxReflect(PassRefPtr<StyleReflection> reflect) { if (rareNonInheritedData->m_boxReflect != reflect) rareNonInheritedData.access()->m_boxReflect = reflect; }
|
| - void setBoxSizing(EBoxSizing s) { SET_VAR(box, boxSizing, s); }
|
| - void setMarqueeIncrement(const Length& f) { SET_VAR(rareNonInheritedData.access()->marquee, increment, f); }
|
| - void setMarqueeSpeed(int f) { SET_VAR(rareNonInheritedData.access()->marquee, speed, f); }
|
| - void setMarqueeDirection(EMarqueeDirection d) { SET_VAR(rareNonInheritedData.access()->marquee, direction, d); }
|
| - void setMarqueeBehavior(EMarqueeBehavior b) { SET_VAR(rareNonInheritedData.access()->marquee, behavior, b); }
|
| - void setMarqueeLoopCount(int i) { SET_VAR(rareNonInheritedData.access()->marquee, loops, i); }
|
| - void setUserModify(EUserModify u) { SET_VAR(rareInheritedData, userModify, u); }
|
| - void setUserDrag(EUserDrag d) { SET_VAR(rareNonInheritedData, userDrag, d); }
|
| - void setUserSelect(EUserSelect s) { SET_VAR(rareInheritedData, userSelect, s); }
|
| - void setTextOverflow(bool b) { SET_VAR(rareNonInheritedData, textOverflow, b); }
|
| - void setMarginTopCollapse(EMarginCollapse c) { SET_VAR(rareNonInheritedData, marginTopCollapse, c); }
|
| - void setMarginBottomCollapse(EMarginCollapse c) { SET_VAR(rareNonInheritedData, marginBottomCollapse, c); }
|
| - void setWordBreak(EWordBreak b) { SET_VAR(rareInheritedData, wordBreak, b); }
|
| - void setWordWrap(EWordWrap b) { SET_VAR(rareInheritedData, wordWrap, b); }
|
| - void setNBSPMode(ENBSPMode b) { SET_VAR(rareInheritedData, nbspMode, b); }
|
| - void setKHTMLLineBreak(EKHTMLLineBreak b) { SET_VAR(rareInheritedData, khtmlLineBreak, b); }
|
| - void setMatchNearestMailBlockquoteColor(EMatchNearestMailBlockquoteColor c) { SET_VAR(rareNonInheritedData, matchNearestMailBlockquoteColor, c); }
|
| - void setHighlight(const AtomicString& h) { SET_VAR(rareInheritedData, highlight, h); }
|
| - void setBorderFit(EBorderFit b) { SET_VAR(rareNonInheritedData, m_borderFit, b); }
|
| - void setResize(EResize r) { SET_VAR(rareInheritedData, resize, r); }
|
| - void setColumnWidth(float f) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoWidth, false); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_width, f); }
|
| - void setHasAutoColumnWidth() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoWidth, true); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_width, 0); }
|
| - void setColumnCount(unsigned short c) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoCount, false); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_count, c); }
|
| - void setHasAutoColumnCount() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoCount, true); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_count, 0); }
|
| - void setColumnGap(float f) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_normalGap, false); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_gap, f); }
|
| - void setHasNormalColumnGap() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_normalGap, true); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_gap, 0); }
|
| - void setColumnRuleColor(const Color& c) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule.color, c); }
|
| - void setColumnRuleStyle(EBorderStyle b) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule.m_style, b); }
|
| - void setColumnRuleWidth(unsigned short w) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule.width, w); }
|
| - void resetColumnRule() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule, BorderValue()) }
|
| - void setColumnBreakBefore(EPageBreak p) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakBefore, p); }
|
| - void setColumnBreakInside(EPageBreak p) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakInside, p); }
|
| - void setColumnBreakAfter(EPageBreak p) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakAfter, p); }
|
| - void setTransform(const TransformOperations& ops) { SET_VAR(rareNonInheritedData.access()->m_transform, m_operations, ops); }
|
| - void setTransformOriginX(Length l) { SET_VAR(rareNonInheritedData.access()->m_transform, m_x, l); }
|
| - void setTransformOriginY(Length l) { SET_VAR(rareNonInheritedData.access()->m_transform, m_y, l); }
|
| - // End CSS3 Setters
|
| -
|
| - // Apple-specific property setters
|
| - void setPointerEvents(EPointerEvents p) { inherited_flags._pointerEvents = p; }
|
| -
|
| - void clearAnimations()
|
| - {
|
| - rareNonInheritedData.access()->m_animations.clear();
|
| - }
|
| -
|
| - void clearTransitions()
|
| - {
|
| - rareNonInheritedData.access()->m_transitions.clear();
|
| - }
|
| -
|
| - void inheritAnimations(const AnimationList* parent) { rareNonInheritedData.access()->m_animations.set(parent ? new AnimationList(*parent) : 0); }
|
| - void inheritTransitions(const AnimationList* parent) { rareNonInheritedData.access()->m_transitions.set(parent ? new AnimationList(*parent) : 0); }
|
| - void adjustAnimations();
|
| - void adjustTransitions();
|
| -
|
| - void setLineClamp(int c) { SET_VAR(rareNonInheritedData, lineClamp, c); }
|
| - void setTextSizeAdjust(bool b) { SET_VAR(rareInheritedData, textSizeAdjust, b); }
|
| - void setTextSecurity(ETextSecurity aTextSecurity) { SET_VAR(rareInheritedData, textSecurity, aTextSecurity); }
|
| -
|
| -#if ENABLE(SVG)
|
| - const SVGRenderStyle* svgStyle() const { return m_svgStyle.get(); }
|
| - SVGRenderStyle* accessSVGStyle() { return m_svgStyle.access(); }
|
| -
|
| - float fillOpacity() const { return svgStyle()->fillOpacity(); }
|
| - void setFillOpacity(float f) { accessSVGStyle()->setFillOpacity(f); }
|
| -
|
| - float strokeOpacity() const { return svgStyle()->strokeOpacity(); }
|
| - void setStrokeOpacity(float f) { accessSVGStyle()->setStrokeOpacity(f); }
|
| -
|
| - float floodOpacity() const { return svgStyle()->floodOpacity(); }
|
| - void setFloodOpacity(float f) { accessSVGStyle()->setFloodOpacity(f); }
|
| -#endif
|
| -
|
| - const ContentData* contentData() const { return rareNonInheritedData->m_content.get(); }
|
| - bool contentDataEquivalent(const RenderStyle* otherStyle) const;
|
| - void clearContent();
|
| - void setContent(StringImpl*, bool add = false);
|
| - void setContent(PassRefPtr<StyleImage>, bool add = false);
|
| - void setContent(CounterContent*, bool add = false);
|
| -
|
| - const CounterDirectiveMap* counterDirectives() const;
|
| - CounterDirectiveMap& accessCounterDirectives();
|
| -
|
| - bool inheritedNotEqual(RenderStyle*) const;
|
| -
|
| - StyleDifference diff(const RenderStyle*) const;
|
| -
|
| - bool isDisplayReplacedType() const
|
| - {
|
| - return display() == INLINE_BLOCK || display() == INLINE_BOX || display() == INLINE_TABLE;
|
| - }
|
| -
|
| - bool isDisplayInlineType() const
|
| - {
|
| - return display() == INLINE || isDisplayReplacedType();
|
| - }
|
| -
|
| - bool isOriginalDisplayInlineType() const
|
| - {
|
| - return originalDisplay() == INLINE || originalDisplay() == INLINE_BLOCK ||
|
| - originalDisplay() == INLINE_BOX || originalDisplay() == INLINE_TABLE;
|
| - }
|
| -
|
| - // To obtain at any time the pseudo state for a given link.
|
| - PseudoState pseudoState() const { return static_cast<PseudoState>(m_pseudoState); }
|
| - void setPseudoState(PseudoState s) { m_pseudoState = s; }
|
| -
|
| - // To tell if this style matched attribute selectors. This makes it impossible to share.
|
| - bool affectedByAttributeSelectors() const { return m_affectedByAttributeSelectors; }
|
| - void setAffectedByAttributeSelectors() { m_affectedByAttributeSelectors = true; }
|
| -
|
| - bool unique() const { return m_unique; }
|
| - void setUnique() { m_unique = true; }
|
| -
|
| - // Methods for indicating the style is affected by dynamic updates (e.g., children changing, our position changing in our sibling list, etc.)
|
| - bool affectedByEmpty() const { return m_affectedByEmpty; }
|
| - bool emptyState() const { return m_emptyState; }
|
| - void setEmptyState(bool b) { m_affectedByEmpty = true; m_unique = true; m_emptyState = b; }
|
| - bool childrenAffectedByPositionalRules() const { return childrenAffectedByForwardPositionalRules() || childrenAffectedByBackwardPositionalRules(); }
|
| - bool childrenAffectedByFirstChildRules() const { return m_childrenAffectedByFirstChildRules; }
|
| - void setChildrenAffectedByFirstChildRules() { m_childrenAffectedByFirstChildRules = true; }
|
| - bool childrenAffectedByLastChildRules() const { return m_childrenAffectedByLastChildRules; }
|
| - void setChildrenAffectedByLastChildRules() { m_childrenAffectedByLastChildRules = true; }
|
| - bool childrenAffectedByDirectAdjacentRules() const { return m_childrenAffectedByDirectAdjacentRules; }
|
| - void setChildrenAffectedByDirectAdjacentRules() { m_childrenAffectedByDirectAdjacentRules = true; }
|
| - bool childrenAffectedByForwardPositionalRules() const { return m_childrenAffectedByForwardPositionalRules; }
|
| - void setChildrenAffectedByForwardPositionalRules() { m_childrenAffectedByForwardPositionalRules = true; }
|
| - bool childrenAffectedByBackwardPositionalRules() const { return m_childrenAffectedByBackwardPositionalRules; }
|
| - void setChildrenAffectedByBackwardPositionalRules() { m_childrenAffectedByBackwardPositionalRules = true; }
|
| - bool firstChildState() const { return m_firstChildState; }
|
| - void setFirstChildState() { m_firstChildState = true; }
|
| - bool lastChildState() const { return m_lastChildState; }
|
| - void setLastChildState() { m_lastChildState = true; }
|
| - unsigned childIndex() const { return m_childIndex; }
|
| - void setChildIndex(unsigned index) { m_childIndex = index; }
|
| -
|
| - // Initial values for all the properties
|
| - static bool initialBorderCollapse() { return false; }
|
| - static EBorderStyle initialBorderStyle() { return BNONE; }
|
| - static NinePieceImage initialNinePieceImage() { return NinePieceImage(); }
|
| - static IntSize initialBorderRadius() { return IntSize(0, 0); }
|
| - static ECaptionSide initialCaptionSide() { return CAPTOP; }
|
| - static EClear initialClear() { return CNONE; }
|
| - static TextDirection initialDirection() { return LTR; }
|
| - static EDisplay initialDisplay() { return INLINE; }
|
| - static EEmptyCell initialEmptyCells() { return SHOW; }
|
| - static EFloat initialFloating() { return FNONE; }
|
| - static EListStylePosition initialListStylePosition() { return OUTSIDE; }
|
| - static EListStyleType initialListStyleType() { return DISC; }
|
| - static EOverflow initialOverflowX() { return OVISIBLE; }
|
| - static EOverflow initialOverflowY() { return OVISIBLE; }
|
| - static EPageBreak initialPageBreak() { return PBAUTO; }
|
| - static EPosition initialPosition() { return StaticPosition; }
|
| - static ETableLayout initialTableLayout() { return TAUTO; }
|
| - static EUnicodeBidi initialUnicodeBidi() { return UBNormal; }
|
| - static ETextTransform initialTextTransform() { return TTNONE; }
|
| - static EVisibility initialVisibility() { return VISIBLE; }
|
| - static EWhiteSpace initialWhiteSpace() { return NORMAL; }
|
| - static short initialHorizontalBorderSpacing() { return 0; }
|
| - static short initialVerticalBorderSpacing() { return 0; }
|
| - static ECursor initialCursor() { return CURSOR_AUTO; }
|
| - static Color initialColor() { return Color::black; }
|
| - static StyleImage* initialListStyleImage() { return 0; }
|
| - static unsigned short initialBorderWidth() { return 3; }
|
| - static int initialLetterWordSpacing() { return 0; }
|
| - static Length initialSize() { return Length(); }
|
| - static Length initialMinSize() { return Length(0, Fixed); }
|
| - static Length initialMaxSize() { return Length(undefinedLength, Fixed); }
|
| - static Length initialOffset() { return Length(); }
|
| - static Length initialMargin() { return Length(Fixed); }
|
| - static Length initialPadding() { return Length(Fixed); }
|
| - static Length initialTextIndent() { return Length(Fixed); }
|
| - static EVerticalAlign initialVerticalAlign() { return BASELINE; }
|
| - static int initialWidows() { return 2; }
|
| - static int initialOrphans() { return 2; }
|
| - static Length initialLineHeight() { return Length(-100.0, Percent); }
|
| - static ETextAlign initialTextAlign() { return TAAUTO; }
|
| - static ETextDecoration initialTextDecoration() { return TDNONE; }
|
| - static float initialZoom() { return 1.0f; }
|
| - static int initialOutlineOffset() { return 0; }
|
| - static float initialOpacity() { return 1.0f; }
|
| - static EBoxAlignment initialBoxAlign() { return BSTRETCH; }
|
| - static EBoxDirection initialBoxDirection() { return BNORMAL; }
|
| - static EBoxLines initialBoxLines() { return SINGLE; }
|
| - static EBoxOrient initialBoxOrient() { return HORIZONTAL; }
|
| - static EBoxAlignment initialBoxPack() { return BSTART; }
|
| - static float initialBoxFlex() { return 0.0f; }
|
| - static int initialBoxFlexGroup() { return 1; }
|
| - static int initialBoxOrdinalGroup() { return 1; }
|
| - static EBoxSizing initialBoxSizing() { return CONTENT_BOX; }
|
| - static StyleReflection* initialBoxReflect() { return 0; }
|
| - static int initialMarqueeLoopCount() { return -1; }
|
| - static int initialMarqueeSpeed() { return 85; }
|
| - static Length initialMarqueeIncrement() { return Length(6, Fixed); }
|
| - static EMarqueeBehavior initialMarqueeBehavior() { return MSCROLL; }
|
| - static EMarqueeDirection initialMarqueeDirection() { return MAUTO; }
|
| - static EUserModify initialUserModify() { return READ_ONLY; }
|
| - static EUserDrag initialUserDrag() { return DRAG_AUTO; }
|
| - static EUserSelect initialUserSelect() { return SELECT_TEXT; }
|
| - static bool initialTextOverflow() { return false; }
|
| - static EMarginCollapse initialMarginTopCollapse() { return MCOLLAPSE; }
|
| - static EMarginCollapse initialMarginBottomCollapse() { return MCOLLAPSE; }
|
| - static EWordBreak initialWordBreak() { return NormalWordBreak; }
|
| - static EWordWrap initialWordWrap() { return NormalWordWrap; }
|
| - static ENBSPMode initialNBSPMode() { return NBNORMAL; }
|
| - static EKHTMLLineBreak initialKHTMLLineBreak() { return LBNORMAL; }
|
| - static EMatchNearestMailBlockquoteColor initialMatchNearestMailBlockquoteColor() { return BCNORMAL; }
|
| - static const AtomicString& initialHighlight() { return nullAtom; }
|
| - static EBorderFit initialBorderFit() { return BorderFitBorder; }
|
| - static EResize initialResize() { return RESIZE_NONE; }
|
| - static ControlPart initialAppearance() { return NoControlPart; }
|
| - static bool initialVisuallyOrdered() { return false; }
|
| - static float initialTextStrokeWidth() { return 0; }
|
| - static unsigned short initialColumnCount() { return 1; }
|
| - static const TransformOperations& initialTransform() { DEFINE_STATIC_LOCAL(TransformOperations, ops, ()); return ops; }
|
| - static Length initialTransformOriginX() { return Length(50.0, Percent); }
|
| - static Length initialTransformOriginY() { return Length(50.0, Percent); }
|
| - static EPointerEvents initialPointerEvents() { return PE_AUTO; }
|
| -
|
| - // Keep these at the end.
|
| - static int initialLineClamp() { return -1; }
|
| - static bool initialTextSizeAdjust() { return true; }
|
| - static ETextSecurity initialTextSecurity() { return TSNONE; }
|
| -#if ENABLE(DASHBOARD_SUPPORT)
|
| - static const Vector<StyleDashboardRegion>& initialDashboardRegions();
|
| - static const Vector<StyleDashboardRegion>& noneDashboardRegions();
|
| -#endif
|
| -};
|
| -
|
| -} // namespace WebCore
|
| -
|
| -#endif // RenderStyle_h
|
| -
|
| -
|
| +/*
|
| + * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
|
| + * (C) 2000 Antti Koivisto (koivisto@kde.org)
|
| + * (C) 2000 Dirk Mueller (mueller@kde.org)
|
| + * Copyright (C) 2003, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved.
|
| + * Copyright (C) 2006 Graham Dennis (graham.dennis@gmail.com)
|
| + *
|
| + * 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 RenderStyle_h
|
| +#define RenderStyle_h
|
| +
|
| +#include "TransformationMatrix.h"
|
| +#include "AnimationList.h"
|
| +#include "BorderData.h"
|
| +#include "BorderValue.h"
|
| +#include "CSSHelper.h"
|
| +#include "CSSImageGeneratorValue.h"
|
| +#include "CSSPrimitiveValue.h"
|
| +#include "CSSReflectionDirection.h"
|
| +#include "CSSValueList.h"
|
| +#include "CachedImage.h"
|
| +#include "CollapsedBorderValue.h"
|
| +#include "Color.h"
|
| +#include "ContentData.h"
|
| +#include "CounterDirectives.h"
|
| +#include "CursorList.h"
|
| +#include "DataRef.h"
|
| +#include "FillLayer.h"
|
| +#include "FloatPoint.h"
|
| +#include "Font.h"
|
| +#include "GraphicsTypes.h"
|
| +#include "IntRect.h"
|
| +#include "Length.h"
|
| +#include "LengthBox.h"
|
| +#include "LengthSize.h"
|
| +#include "NinePieceImage.h"
|
| +#include "OutlineValue.h"
|
| +#include "Pair.h"
|
| +#include "RenderStyleConstants.h"
|
| +#include "ShadowData.h"
|
| +#include "StyleBackgroundData.h"
|
| +#include "StyleBoxData.h"
|
| +#include "StyleFlexibleBoxData.h"
|
| +#include "StyleInheritedData.h"
|
| +#include "StyleMarqueeData.h"
|
| +#include "StyleMultiColData.h"
|
| +#include "StyleRareInheritedData.h"
|
| +#include "StyleRareNonInheritedData.h"
|
| +#include "StyleReflection.h"
|
| +#include "StyleSurroundData.h"
|
| +#include "StyleTransformData.h"
|
| +#include "StyleVisualData.h"
|
| +#include "TextDirection.h"
|
| +#include "ThemeTypes.h"
|
| +#include "TimingFunction.h"
|
| +#include "TransformOperations.h"
|
| +#include <wtf/OwnPtr.h>
|
| +#include <wtf/RefCounted.h>
|
| +#include <wtf/StdLibExtras.h>
|
| +#include <wtf/Vector.h>
|
| +
|
| +#if ENABLE(DASHBOARD_SUPPORT)
|
| +#include "StyleDashboardRegion.h"
|
| +#endif
|
| +
|
| +#if ENABLE(SVG)
|
| +#include "SVGRenderStyle.h"
|
| +#endif
|
| +
|
| +#if ENABLE(XBL)
|
| +#include "BindingURI.h"
|
| +#endif
|
| +
|
| +template<typename T, typename U> inline bool compareEqual(const T& t, const U& u) { return t == static_cast<T>(u); }
|
| +
|
| +#define SET_VAR(group, variable, value) \
|
| + if (!compareEqual(group->variable, value)) \
|
| + group.access()->variable = value;
|
| +
|
| +namespace WebCore {
|
| +
|
| +using std::max;
|
| +
|
| +class CSSStyleSelector;
|
| +class CSSValueList;
|
| +class CachedImage;
|
| +class Pair;
|
| +class StringImpl;
|
| +class StyleImage;
|
| +
|
| +class RenderStyle: public RefCounted<RenderStyle> {
|
| + friend class CSSStyleSelector;
|
| +protected:
|
| +
|
| +// !START SYNC!: Keep this in sync with the copy constructor in RenderStyle.cpp
|
| +
|
| + // inherit
|
| + struct InheritedFlags {
|
| + bool operator==(const InheritedFlags& other) const
|
| + {
|
| + return (_empty_cells == other._empty_cells) &&
|
| + (_caption_side == other._caption_side) &&
|
| + (_list_style_type == other._list_style_type) &&
|
| + (_list_style_position == other._list_style_position) &&
|
| + (_visibility == other._visibility) &&
|
| + (_text_align == other._text_align) &&
|
| + (_text_transform == other._text_transform) &&
|
| + (_text_decorations == other._text_decorations) &&
|
| + (_text_transform == other._text_transform) &&
|
| + (_cursor_style == other._cursor_style) &&
|
| + (_direction == other._direction) &&
|
| + (_border_collapse == other._border_collapse) &&
|
| + (_white_space == other._white_space) &&
|
| + (_box_direction == other._box_direction) &&
|
| + (_visuallyOrdered == other._visuallyOrdered) &&
|
| + (_htmlHacks == other._htmlHacks) &&
|
| + (_force_backgrounds_to_white == other._force_backgrounds_to_white) &&
|
| + (_pointerEvents == other._pointerEvents);
|
| + }
|
| +
|
| + bool operator!=(const InheritedFlags& other) const { return !(*this == other); }
|
| +
|
| + unsigned _empty_cells : 1; // EEmptyCell
|
| + unsigned _caption_side : 2; // ECaptionSide
|
| + unsigned _list_style_type : 5 ; // EListStyleType
|
| + unsigned _list_style_position : 1; // EListStylePosition
|
| + unsigned _visibility : 2; // EVisibility
|
| + unsigned _text_align : 3; // ETextAlign
|
| + unsigned _text_transform : 2; // ETextTransform
|
| + unsigned _text_decorations : 4;
|
| + unsigned _cursor_style : 6; // ECursor
|
| + unsigned _direction : 1; // TextDirection
|
| + bool _border_collapse : 1 ;
|
| + unsigned _white_space : 3; // EWhiteSpace
|
| + unsigned _box_direction : 1; // EBoxDirection (CSS3 box_direction property, flexible box layout module)
|
| +
|
| + // non CSS2 inherited
|
| + bool _visuallyOrdered : 1;
|
| + bool _htmlHacks :1;
|
| + bool _force_backgrounds_to_white : 1;
|
| + unsigned _pointerEvents : 4; // EPointerEvents
|
| + } inherited_flags;
|
| +
|
| +// don't inherit
|
| + struct NonInheritedFlags {
|
| + bool operator==(const NonInheritedFlags& other) const
|
| + {
|
| + return (_effectiveDisplay == other._effectiveDisplay) &&
|
| + (_originalDisplay == other._originalDisplay) &&
|
| + (_overflowX == other._overflowX) &&
|
| + (_overflowY == other._overflowY) &&
|
| + (_vertical_align == other._vertical_align) &&
|
| + (_clear == other._clear) &&
|
| + (_position == other._position) &&
|
| + (_floating == other._floating) &&
|
| + (_table_layout == other._table_layout) &&
|
| + (_page_break_before == other._page_break_before) &&
|
| + (_page_break_after == other._page_break_after) &&
|
| + (_styleType == other._styleType) &&
|
| + (_affectedByHover == other._affectedByHover) &&
|
| + (_affectedByActive == other._affectedByActive) &&
|
| + (_affectedByDrag == other._affectedByDrag) &&
|
| + (_pseudoBits == other._pseudoBits) &&
|
| + (_unicodeBidi == other._unicodeBidi);
|
| + }
|
| +
|
| + bool operator!=(const NonInheritedFlags& other) const { return !(*this == other); }
|
| +
|
| + unsigned _effectiveDisplay : 5; // EDisplay
|
| + unsigned _originalDisplay : 5; // EDisplay
|
| + unsigned _overflowX : 3; // EOverflow
|
| + unsigned _overflowY : 3; // EOverflow
|
| + unsigned _vertical_align : 4; // EVerticalAlign
|
| + unsigned _clear : 2; // EClear
|
| + unsigned _position : 2; // EPosition
|
| + unsigned _floating : 2; // EFloat
|
| + unsigned _table_layout : 1; // ETableLayout
|
| +
|
| + unsigned _page_break_before : 2; // EPageBreak
|
| + unsigned _page_break_after : 2; // EPageBreak
|
| +
|
| + unsigned _styleType : 5; // PseudoId
|
| + bool _affectedByHover : 1;
|
| + bool _affectedByActive : 1;
|
| + bool _affectedByDrag : 1;
|
| + unsigned _pseudoBits : 7;
|
| + unsigned _unicodeBidi : 2; // EUnicodeBidi
|
| + } noninherited_flags;
|
| +
|
| + // non-inherited attributes
|
| + DataRef<StyleBoxData> box;
|
| + DataRef<StyleVisualData> visual;
|
| + DataRef<StyleBackgroundData> background;
|
| + DataRef<StyleSurroundData> surround;
|
| + DataRef<StyleRareNonInheritedData> rareNonInheritedData;
|
| +
|
| + // inherited attributes
|
| + DataRef<StyleRareInheritedData> rareInheritedData;
|
| + DataRef<StyleInheritedData> inherited;
|
| +
|
| + // list of associated pseudo styles
|
| + RefPtr<RenderStyle> m_cachedPseudoStyle;
|
| +
|
| + unsigned m_pseudoState : 3; // PseudoState
|
| + bool m_affectedByAttributeSelectors : 1;
|
| + bool m_unique : 1;
|
| +
|
| + // Bits for dynamic child matching.
|
| + bool m_affectedByEmpty : 1;
|
| + bool m_emptyState : 1;
|
| +
|
| + // We optimize for :first-child and :last-child. The other positional child selectors like nth-child or
|
| + // *-child-of-type, we will just give up and re-evaluate whenever children change at all.
|
| + bool m_childrenAffectedByFirstChildRules : 1;
|
| + bool m_childrenAffectedByLastChildRules : 1;
|
| + bool m_childrenAffectedByDirectAdjacentRules : 1;
|
| + bool m_childrenAffectedByForwardPositionalRules : 1;
|
| + bool m_childrenAffectedByBackwardPositionalRules : 1;
|
| + bool m_firstChildState : 1;
|
| + bool m_lastChildState : 1;
|
| + unsigned m_childIndex : 18; // Plenty of bits to cache an index.
|
| +
|
| +#if ENABLE(SVG)
|
| + DataRef<SVGRenderStyle> m_svgStyle;
|
| +#endif
|
| +
|
| +// !END SYNC!
|
| +
|
| +protected:
|
| + void setBitDefaults()
|
| + {
|
| + inherited_flags._empty_cells = initialEmptyCells();
|
| + inherited_flags._caption_side = initialCaptionSide();
|
| + inherited_flags._list_style_type = initialListStyleType();
|
| + inherited_flags._list_style_position = initialListStylePosition();
|
| + inherited_flags._visibility = initialVisibility();
|
| + inherited_flags._text_align = initialTextAlign();
|
| + inherited_flags._text_transform = initialTextTransform();
|
| + inherited_flags._text_decorations = initialTextDecoration();
|
| + inherited_flags._cursor_style = initialCursor();
|
| + inherited_flags._direction = initialDirection();
|
| + inherited_flags._border_collapse = initialBorderCollapse();
|
| + inherited_flags._white_space = initialWhiteSpace();
|
| + inherited_flags._visuallyOrdered = initialVisuallyOrdered();
|
| + inherited_flags._htmlHacks=false;
|
| + inherited_flags._box_direction = initialBoxDirection();
|
| + inherited_flags._force_backgrounds_to_white = false;
|
| + inherited_flags._pointerEvents = initialPointerEvents();
|
| +
|
| + noninherited_flags._effectiveDisplay = noninherited_flags._originalDisplay = initialDisplay();
|
| + noninherited_flags._overflowX = initialOverflowX();
|
| + noninherited_flags._overflowY = initialOverflowY();
|
| + noninherited_flags._vertical_align = initialVerticalAlign();
|
| + noninherited_flags._clear = initialClear();
|
| + noninherited_flags._position = initialPosition();
|
| + noninherited_flags._floating = initialFloating();
|
| + noninherited_flags._table_layout = initialTableLayout();
|
| + noninherited_flags._page_break_before = initialPageBreak();
|
| + noninherited_flags._page_break_after = initialPageBreak();
|
| + noninherited_flags._styleType = NOPSEUDO;
|
| + noninherited_flags._affectedByHover = false;
|
| + noninherited_flags._affectedByActive = false;
|
| + noninherited_flags._affectedByDrag = false;
|
| + noninherited_flags._pseudoBits = 0;
|
| + noninherited_flags._unicodeBidi = initialUnicodeBidi();
|
| + }
|
| +
|
| +protected:
|
| + RenderStyle();
|
| + // used to create the default style.
|
| + RenderStyle(bool);
|
| + RenderStyle(const RenderStyle&);
|
| +
|
| +public:
|
| + static PassRefPtr<RenderStyle> create();
|
| + static PassRefPtr<RenderStyle> createDefaultStyle();
|
| + static PassRefPtr<RenderStyle> clone(const RenderStyle*);
|
| +
|
| + ~RenderStyle();
|
| +
|
| + void inheritFrom(const RenderStyle* inheritParent);
|
| +
|
| + PseudoId styleType() { return static_cast<PseudoId>(noninherited_flags._styleType); }
|
| + void setStyleType(PseudoId styleType) { noninherited_flags._styleType = styleType; }
|
| +
|
| + RenderStyle* getCachedPseudoStyle(PseudoId);
|
| + RenderStyle* addCachedPseudoStyle(PassRefPtr<RenderStyle>);
|
| +
|
| + bool affectedByHoverRules() const { return noninherited_flags._affectedByHover; }
|
| + bool affectedByActiveRules() const { return noninherited_flags._affectedByActive; }
|
| + bool affectedByDragRules() const { return noninherited_flags._affectedByDrag; }
|
| +
|
| + void setAffectedByHoverRules(bool b) { noninherited_flags._affectedByHover = b; }
|
| + void setAffectedByActiveRules(bool b) { noninherited_flags._affectedByActive = b; }
|
| + void setAffectedByDragRules(bool b) { noninherited_flags._affectedByDrag = b; }
|
| +
|
| + bool operator==(const RenderStyle& other) const;
|
| + bool operator!=(const RenderStyle& other) const { return !(*this == other); }
|
| + bool isFloating() const { return !(noninherited_flags._floating == FNONE); }
|
| + bool hasMargin() const { return surround->margin.nonZero(); }
|
| + bool hasBorder() const { return surround->border.hasBorder(); }
|
| + bool hasPadding() const { return surround->padding.nonZero(); }
|
| + bool hasOffset() const { return surround->offset.nonZero(); }
|
| +
|
| + bool hasBackground() const
|
| + {
|
| + if (backgroundColor().isValid() && backgroundColor().alpha() > 0)
|
| + return true;
|
| + return background->m_background.hasImage();
|
| + }
|
| + bool hasFixedBackgroundImage() const { return background->m_background.hasFixedImage(); }
|
| + bool hasAppearance() const { return appearance() != NoControlPart; }
|
| +
|
| + bool visuallyOrdered() const { return inherited_flags._visuallyOrdered; }
|
| + void setVisuallyOrdered(bool b) { inherited_flags._visuallyOrdered = b; }
|
| +
|
| + bool isStyleAvailable() const;
|
| +
|
| + bool hasPseudoStyle(PseudoId pseudo) const;
|
| + void setHasPseudoStyle(PseudoId pseudo);
|
| +
|
| + // attribute getter methods
|
| +
|
| + EDisplay display() const { return static_cast<EDisplay>(noninherited_flags._effectiveDisplay); }
|
| + EDisplay originalDisplay() const { return static_cast<EDisplay>(noninherited_flags._originalDisplay); }
|
| +
|
| + Length left() const { return surround->offset.left(); }
|
| + Length right() const { return surround->offset.right(); }
|
| + Length top() const { return surround->offset.top(); }
|
| + Length bottom() const { return surround->offset.bottom(); }
|
| +
|
| + EPosition position() const { return static_cast<EPosition>(noninherited_flags._position); }
|
| + EFloat floating() const { return static_cast<EFloat>(noninherited_flags._floating); }
|
| +
|
| + Length width() const { return box->width; }
|
| + Length height() const { return box->height; }
|
| + Length minWidth() const { return box->min_width; }
|
| + Length maxWidth() const { return box->max_width; }
|
| + Length minHeight() const { return box->min_height; }
|
| + Length maxHeight() const { return box->max_height; }
|
| +
|
| + const BorderData& border() const { return surround->border; }
|
| + const BorderValue& borderLeft() const { return surround->border.left; }
|
| + const BorderValue& borderRight() const { return surround->border.right; }
|
| + const BorderValue& borderTop() const { return surround->border.top; }
|
| + const BorderValue& borderBottom() const { return surround->border.bottom; }
|
| +
|
| + const NinePieceImage& borderImage() const { return surround->border.image; }
|
| +
|
| + const IntSize& borderTopLeftRadius() const { return surround->border.topLeft; }
|
| + const IntSize& borderTopRightRadius() const { return surround->border.topRight; }
|
| + const IntSize& borderBottomLeftRadius() const { return surround->border.bottomLeft; }
|
| + const IntSize& borderBottomRightRadius() const { return surround->border.bottomRight; }
|
| + bool hasBorderRadius() const { return surround->border.hasBorderRadius(); }
|
| +
|
| + unsigned short borderLeftWidth() const { return surround->border.borderLeftWidth(); }
|
| + EBorderStyle borderLeftStyle() const { return surround->border.left.style(); }
|
| + const Color& borderLeftColor() const { return surround->border.left.color; }
|
| + bool borderLeftIsTransparent() const { return surround->border.left.isTransparent(); }
|
| + unsigned short borderRightWidth() const { return surround->border.borderRightWidth(); }
|
| + EBorderStyle borderRightStyle() const { return surround->border.right.style(); }
|
| + const Color& borderRightColor() const { return surround->border.right.color; }
|
| + bool borderRightIsTransparent() const { return surround->border.right.isTransparent(); }
|
| + unsigned short borderTopWidth() const { return surround->border.borderTopWidth(); }
|
| + EBorderStyle borderTopStyle() const { return surround->border.top.style(); }
|
| + const Color& borderTopColor() const { return surround->border.top.color; }
|
| + bool borderTopIsTransparent() const { return surround->border.top.isTransparent(); }
|
| + unsigned short borderBottomWidth() const { return surround->border.borderBottomWidth(); }
|
| + EBorderStyle borderBottomStyle() const { return surround->border.bottom.style(); }
|
| + const Color& borderBottomColor() const { return surround->border.bottom.color; }
|
| + bool borderBottomIsTransparent() const { return surround->border.bottom.isTransparent(); }
|
| +
|
| + unsigned short outlineSize() const { return max(0, outlineWidth() + outlineOffset()); }
|
| + unsigned short outlineWidth() const
|
| + {
|
| + if (background->m_outline.style() == BNONE)
|
| + return 0;
|
| + return background->m_outline.width;
|
| + }
|
| + bool hasOutline() const { return outlineWidth() > 0 && outlineStyle() > BHIDDEN; }
|
| + EBorderStyle outlineStyle() const { return background->m_outline.style(); }
|
| + bool outlineStyleIsAuto() const { return background->m_outline._auto; }
|
| + const Color& outlineColor() const { return background->m_outline.color; }
|
| +
|
| + EOverflow overflowX() const { return static_cast<EOverflow>(noninherited_flags._overflowX); }
|
| + EOverflow overflowY() const { return static_cast<EOverflow>(noninherited_flags._overflowY); }
|
| +
|
| + EVisibility visibility() const { return static_cast<EVisibility>(inherited_flags._visibility); }
|
| + EVerticalAlign verticalAlign() const { return static_cast<EVerticalAlign>(noninherited_flags._vertical_align); }
|
| + Length verticalAlignLength() const { return box->vertical_align; }
|
| +
|
| + Length clipLeft() const { return visual->clip.left(); }
|
| + Length clipRight() const { return visual->clip.right(); }
|
| + Length clipTop() const { return visual->clip.top(); }
|
| + Length clipBottom() const { return visual->clip.bottom(); }
|
| + LengthBox clip() const { return visual->clip; }
|
| + bool hasClip() const { return visual->hasClip; }
|
| +
|
| + EUnicodeBidi unicodeBidi() const { return static_cast<EUnicodeBidi>(noninherited_flags._unicodeBidi); }
|
| +
|
| + EClear clear() const { return static_cast<EClear>(noninherited_flags._clear); }
|
| + ETableLayout tableLayout() const { return static_cast<ETableLayout>(noninherited_flags._table_layout); }
|
| +
|
| + const Font& font() const { return inherited->font; }
|
| + const FontDescription& fontDescription() const { return inherited->font.fontDescription(); }
|
| + int fontSize() const { return inherited->font.pixelSize(); }
|
| +
|
| + const Color& color() const { return inherited->color; }
|
| + Length textIndent() const { return inherited->indent; }
|
| + ETextAlign textAlign() const { return static_cast<ETextAlign>(inherited_flags._text_align); }
|
| + ETextTransform textTransform() const { return static_cast<ETextTransform>(inherited_flags._text_transform); }
|
| + int textDecorationsInEffect() const { return inherited_flags._text_decorations; }
|
| + int textDecoration() const { return visual->textDecoration; }
|
| + int wordSpacing() const { return inherited->font.wordSpacing(); }
|
| + int letterSpacing() const { return inherited->font.letterSpacing(); }
|
| +
|
| + float zoom() const { return visual->m_zoom; }
|
| + float effectiveZoom() const { return inherited->m_effectiveZoom; }
|
| +
|
| + TextDirection direction() const { return static_cast<TextDirection>(inherited_flags._direction); }
|
| + Length lineHeight() const { return inherited->line_height; }
|
| + int computedLineHeight() const
|
| + {
|
| + Length lh = lineHeight();
|
| +
|
| + // Negative value means the line height is not set. Use the font's built-in spacing.
|
| + if (lh.isNegative())
|
| + return font().lineSpacing();
|
| +
|
| + if (lh.isPercent())
|
| + return lh.calcMinValue(fontSize());
|
| +
|
| + return lh.value();
|
| + }
|
| +
|
| + EWhiteSpace whiteSpace() const { return static_cast<EWhiteSpace>(inherited_flags._white_space); }
|
| + static bool autoWrap(EWhiteSpace ws)
|
| + {
|
| + // Nowrap and pre don't automatically wrap.
|
| + return ws != NOWRAP && ws != PRE;
|
| + }
|
| +
|
| + bool autoWrap() const
|
| + {
|
| + return autoWrap(whiteSpace());
|
| + }
|
| +
|
| + static bool preserveNewline(EWhiteSpace ws)
|
| + {
|
| + // Normal and nowrap do not preserve newlines.
|
| + return ws != NORMAL && ws != NOWRAP;
|
| + }
|
| +
|
| + bool preserveNewline() const
|
| + {
|
| + return preserveNewline(whiteSpace());
|
| + }
|
| +
|
| + static bool collapseWhiteSpace(EWhiteSpace ws)
|
| + {
|
| + // Pre and prewrap do not collapse whitespace.
|
| + return ws != PRE && ws != PRE_WRAP;
|
| + }
|
| +
|
| + bool collapseWhiteSpace() const
|
| + {
|
| + return collapseWhiteSpace(whiteSpace());
|
| + }
|
| +
|
| + bool isCollapsibleWhiteSpace(UChar c) const
|
| + {
|
| + switch (c) {
|
| + case ' ':
|
| + case '\t':
|
| + return collapseWhiteSpace();
|
| + case '\n':
|
| + return !preserveNewline();
|
| + }
|
| + return false;
|
| + }
|
| +
|
| + bool breakOnlyAfterWhiteSpace() const
|
| + {
|
| + return whiteSpace() == PRE_WRAP || khtmlLineBreak() == AFTER_WHITE_SPACE;
|
| + }
|
| +
|
| + bool breakWords() const
|
| + {
|
| + return wordBreak() == BreakWordBreak || wordWrap() == BreakWordWrap;
|
| + }
|
| +
|
| + const Color& backgroundColor() const { return background->m_color; }
|
| + StyleImage* backgroundImage() const { return background->m_background.m_image.get(); }
|
| + EFillRepeat backgroundRepeat() const { return static_cast<EFillRepeat>(background->m_background.m_repeat); }
|
| + CompositeOperator backgroundComposite() const { return static_cast<CompositeOperator>(background->m_background.m_composite); }
|
| + bool backgroundAttachment() const { return background->m_background.m_attachment; }
|
| + EFillBox backgroundClip() const { return static_cast<EFillBox>(background->m_background.m_clip); }
|
| + EFillBox backgroundOrigin() const { return static_cast<EFillBox>(background->m_background.m_origin); }
|
| + Length backgroundXPosition() const { return background->m_background.m_xPosition; }
|
| + Length backgroundYPosition() const { return background->m_background.m_yPosition; }
|
| + LengthSize backgroundSize() const { return background->m_background.m_size; }
|
| + FillLayer* accessBackgroundLayers() { return &(background.access()->m_background); }
|
| + const FillLayer* backgroundLayers() const { return &(background->m_background); }
|
| +
|
| + StyleImage* maskImage() const { return rareNonInheritedData->m_mask.m_image.get(); }
|
| + EFillRepeat maskRepeat() const { return static_cast<EFillRepeat>(rareNonInheritedData->m_mask.m_repeat); }
|
| + CompositeOperator maskComposite() const { return static_cast<CompositeOperator>(rareNonInheritedData->m_mask.m_composite); }
|
| + bool maskAttachment() const { return rareNonInheritedData->m_mask.m_attachment; }
|
| + EFillBox maskClip() const { return static_cast<EFillBox>(rareNonInheritedData->m_mask.m_clip); }
|
| + EFillBox maskOrigin() const { return static_cast<EFillBox>(rareNonInheritedData->m_mask.m_origin); }
|
| + Length maskXPosition() const { return rareNonInheritedData->m_mask.m_xPosition; }
|
| + Length maskYPosition() const { return rareNonInheritedData->m_mask.m_yPosition; }
|
| + LengthSize maskSize() const { return rareNonInheritedData->m_mask.m_size; }
|
| + FillLayer* accessMaskLayers() { return &(rareNonInheritedData.access()->m_mask); }
|
| + const FillLayer* maskLayers() const { return &(rareNonInheritedData->m_mask); }
|
| + const NinePieceImage& maskBoxImage() const { return rareNonInheritedData->m_maskBoxImage; }
|
| +
|
| + // returns true for collapsing borders, false for separate borders
|
| + bool borderCollapse() const { return inherited_flags._border_collapse; }
|
| + short horizontalBorderSpacing() const { return inherited->horizontal_border_spacing; }
|
| + short verticalBorderSpacing() const { return inherited->vertical_border_spacing; }
|
| + EEmptyCell emptyCells() const { return static_cast<EEmptyCell>(inherited_flags._empty_cells); }
|
| + ECaptionSide captionSide() const { return static_cast<ECaptionSide>(inherited_flags._caption_side); }
|
| +
|
| + short counterIncrement() const { return visual->counterIncrement; }
|
| + short counterReset() const { return visual->counterReset; }
|
| +
|
| + EListStyleType listStyleType() const { return static_cast<EListStyleType>(inherited_flags._list_style_type); }
|
| + StyleImage* listStyleImage() const { return inherited->list_style_image.get(); }
|
| + EListStylePosition listStylePosition() const { return static_cast<EListStylePosition>(inherited_flags._list_style_position); }
|
| +
|
| + Length marginTop() const { return surround->margin.top(); }
|
| + Length marginBottom() const { return surround->margin.bottom(); }
|
| + Length marginLeft() const { return surround->margin.left(); }
|
| + Length marginRight() const { return surround->margin.right(); }
|
| +
|
| + LengthBox paddingBox() const { return surround->padding; }
|
| + Length paddingTop() const { return surround->padding.top(); }
|
| + Length paddingBottom() const { return surround->padding.bottom(); }
|
| + Length paddingLeft() const { return surround->padding.left(); }
|
| + Length paddingRight() const { return surround->padding.right(); }
|
| +
|
| + ECursor cursor() const { return static_cast<ECursor>(inherited_flags._cursor_style); }
|
| +
|
| + CursorList* cursors() const { return inherited->cursorData.get(); }
|
| +
|
| + short widows() const { return inherited->widows; }
|
| + short orphans() const { return inherited->orphans; }
|
| + EPageBreak pageBreakInside() const { return static_cast<EPageBreak>(inherited->page_break_inside); }
|
| + EPageBreak pageBreakBefore() const { return static_cast<EPageBreak>(noninherited_flags._page_break_before); }
|
| + EPageBreak pageBreakAfter() const { return static_cast<EPageBreak>(noninherited_flags._page_break_after); }
|
| +
|
| + // CSS3 Getter Methods
|
| +#if ENABLE(XBL)
|
| + BindingURI* bindingURIs() const { return rareNonInheritedData->bindingURI; }
|
| +#endif
|
| +
|
| + int outlineOffset() const
|
| + {
|
| + if (background->m_outline.style() == BNONE)
|
| + return 0;
|
| + return background->m_outline._offset;
|
| + }
|
| +
|
| + ShadowData* textShadow() const { return rareInheritedData->textShadow; }
|
| + const Color& textStrokeColor() const { return rareInheritedData->textStrokeColor; }
|
| + float textStrokeWidth() const { return rareInheritedData->textStrokeWidth; }
|
| + const Color& textFillColor() const { return rareInheritedData->textFillColor; }
|
| + float opacity() const { return rareNonInheritedData->opacity; }
|
| + ControlPart appearance() const { return static_cast<ControlPart>(rareNonInheritedData->m_appearance); }
|
| + EBoxAlignment boxAlign() const { return static_cast<EBoxAlignment>(rareNonInheritedData->flexibleBox->align); }
|
| + EBoxDirection boxDirection() const { return static_cast<EBoxDirection>(inherited_flags._box_direction); }
|
| + float boxFlex() { return rareNonInheritedData->flexibleBox->flex; }
|
| + unsigned int boxFlexGroup() const { return rareNonInheritedData->flexibleBox->flex_group; }
|
| + EBoxLines boxLines() { return static_cast<EBoxLines>(rareNonInheritedData->flexibleBox->lines); }
|
| + unsigned int boxOrdinalGroup() const { return rareNonInheritedData->flexibleBox->ordinal_group; }
|
| + EBoxOrient boxOrient() const { return static_cast<EBoxOrient>(rareNonInheritedData->flexibleBox->orient); }
|
| + EBoxAlignment boxPack() const { return static_cast<EBoxAlignment>(rareNonInheritedData->flexibleBox->pack); }
|
| + ShadowData* boxShadow() const { return rareNonInheritedData->m_boxShadow.get(); }
|
| + StyleReflection* boxReflect() const { return rareNonInheritedData->m_boxReflect.get(); }
|
| + EBoxSizing boxSizing() const { return static_cast<EBoxSizing>(box->boxSizing); }
|
| + Length marqueeIncrement() const { return rareNonInheritedData->marquee->increment; }
|
| + int marqueeSpeed() const { return rareNonInheritedData->marquee->speed; }
|
| + int marqueeLoopCount() const { return rareNonInheritedData->marquee->loops; }
|
| + EMarqueeBehavior marqueeBehavior() const { return static_cast<EMarqueeBehavior>(rareNonInheritedData->marquee->behavior); }
|
| + EMarqueeDirection marqueeDirection() const { return static_cast<EMarqueeDirection>(rareNonInheritedData->marquee->direction); }
|
| + EUserModify userModify() const { return static_cast<EUserModify>(rareInheritedData->userModify); }
|
| + EUserDrag userDrag() const { return static_cast<EUserDrag>(rareNonInheritedData->userDrag); }
|
| + EUserSelect userSelect() const { return static_cast<EUserSelect>(rareInheritedData->userSelect); }
|
| + bool textOverflow() const { return rareNonInheritedData->textOverflow; }
|
| + EMarginCollapse marginTopCollapse() const { return static_cast<EMarginCollapse>(rareNonInheritedData->marginTopCollapse); }
|
| + EMarginCollapse marginBottomCollapse() const { return static_cast<EMarginCollapse>(rareNonInheritedData->marginBottomCollapse); }
|
| + EWordBreak wordBreak() const { return static_cast<EWordBreak>(rareInheritedData->wordBreak); }
|
| + EWordWrap wordWrap() const { return static_cast<EWordWrap>(rareInheritedData->wordWrap); }
|
| + ENBSPMode nbspMode() const { return static_cast<ENBSPMode>(rareInheritedData->nbspMode); }
|
| + EKHTMLLineBreak khtmlLineBreak() const { return static_cast<EKHTMLLineBreak>(rareInheritedData->khtmlLineBreak); }
|
| + EMatchNearestMailBlockquoteColor matchNearestMailBlockquoteColor() const { return static_cast<EMatchNearestMailBlockquoteColor>(rareNonInheritedData->matchNearestMailBlockquoteColor); }
|
| + const AtomicString& highlight() const { return rareInheritedData->highlight; }
|
| + EBorderFit borderFit() const { return static_cast<EBorderFit>(rareNonInheritedData->m_borderFit); }
|
| + EResize resize() const { return static_cast<EResize>(rareInheritedData->resize); }
|
| + float columnWidth() const { return rareNonInheritedData->m_multiCol->m_width; }
|
| + bool hasAutoColumnWidth() const { return rareNonInheritedData->m_multiCol->m_autoWidth; }
|
| + unsigned short columnCount() const { return rareNonInheritedData->m_multiCol->m_count; }
|
| + bool hasAutoColumnCount() const { return rareNonInheritedData->m_multiCol->m_autoCount; }
|
| + float columnGap() const { return rareNonInheritedData->m_multiCol->m_gap; }
|
| + bool hasNormalColumnGap() const { return rareNonInheritedData->m_multiCol->m_normalGap; }
|
| + const Color& columnRuleColor() const { return rareNonInheritedData->m_multiCol->m_rule.color; }
|
| + EBorderStyle columnRuleStyle() const { return rareNonInheritedData->m_multiCol->m_rule.style(); }
|
| + unsigned short columnRuleWidth() const { return rareNonInheritedData->m_multiCol->ruleWidth(); }
|
| + bool columnRuleIsTransparent() const { return rareNonInheritedData->m_multiCol->m_rule.isTransparent(); }
|
| + EPageBreak columnBreakBefore() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakBefore); }
|
| + EPageBreak columnBreakInside() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakInside); }
|
| + EPageBreak columnBreakAfter() const { return static_cast<EPageBreak>(rareNonInheritedData->m_multiCol->m_breakAfter); }
|
| + const TransformOperations& transform() const { return rareNonInheritedData->m_transform->m_operations; }
|
| + Length transformOriginX() const { return rareNonInheritedData->m_transform->m_x; }
|
| + Length transformOriginY() const { return rareNonInheritedData->m_transform->m_y; }
|
| + bool hasTransform() const { return !rareNonInheritedData->m_transform->m_operations.operations().isEmpty(); }
|
| + void applyTransform(TransformationMatrix&, const IntSize& borderBoxSize, bool includeTransformOrigin = true) const;
|
| + bool hasMask() const { return rareNonInheritedData->m_mask.hasImage() || rareNonInheritedData->m_maskBoxImage.hasImage(); }
|
| + // End CSS3 Getters
|
| +
|
| + // Apple-specific property getter methods
|
| + EPointerEvents pointerEvents() const { return static_cast<EPointerEvents>(inherited_flags._pointerEvents); }
|
| + const AnimationList* animations() const { return rareNonInheritedData->m_animations.get(); }
|
| + const AnimationList* transitions() const { return rareNonInheritedData->m_transitions.get(); }
|
| +
|
| + AnimationList* accessAnimations();
|
| + AnimationList* accessTransitions();
|
| +
|
| + bool hasAnimations() const { return rareNonInheritedData->m_animations && rareNonInheritedData->m_animations->size() > 0; }
|
| + bool hasTransitions() const { return rareNonInheritedData->m_transitions && rareNonInheritedData->m_transitions->size() > 0; }
|
| +
|
| + // return the first found Animation (including 'all' transitions)
|
| + const Animation* transitionForProperty(int property);
|
| +
|
| + int lineClamp() const { return rareNonInheritedData->lineClamp; }
|
| + bool textSizeAdjust() const { return rareInheritedData->textSizeAdjust; }
|
| + ETextSecurity textSecurity() const { return static_cast<ETextSecurity>(rareInheritedData->textSecurity); }
|
| +
|
| +// attribute setter methods
|
| +
|
| + void setDisplay(EDisplay v) { noninherited_flags._effectiveDisplay = v; }
|
| + void setOriginalDisplay(EDisplay v) { noninherited_flags._originalDisplay = v; }
|
| + void setPosition(EPosition v) { noninherited_flags._position = v; }
|
| + void setFloating(EFloat v) { noninherited_flags._floating = v; }
|
| +
|
| + void setLeft(Length v) { SET_VAR(surround, offset.m_left, v) }
|
| + void setRight(Length v) { SET_VAR(surround, offset.m_right, v) }
|
| + void setTop(Length v) { SET_VAR(surround, offset.m_top, v) }
|
| + void setBottom(Length v) { SET_VAR(surround, offset.m_bottom, v) }
|
| +
|
| + void setWidth(Length v) { SET_VAR(box, width, v) }
|
| + void setHeight(Length v) { SET_VAR(box, height, v) }
|
| +
|
| + void setMinWidth(Length v) { SET_VAR(box, min_width, v) }
|
| + void setMaxWidth(Length v) { SET_VAR(box, max_width, v) }
|
| + void setMinHeight(Length v) { SET_VAR(box, min_height, v) }
|
| + void setMaxHeight(Length v) { SET_VAR(box, max_height, v) }
|
| +
|
| +#if ENABLE(DASHBOARD_SUPPORT)
|
| + Vector<StyleDashboardRegion> dashboardRegions() const { return rareNonInheritedData->m_dashboardRegions; }
|
| + void setDashboardRegions(Vector<StyleDashboardRegion> regions) { SET_VAR(rareNonInheritedData, m_dashboardRegions, regions); }
|
| +
|
| + void setDashboardRegion(int type, const String& label, Length t, Length r, Length b, Length l, bool append)
|
| + {
|
| + StyleDashboardRegion region;
|
| + region.label = label;
|
| + region.offset.m_top = t;
|
| + region.offset.m_right = r;
|
| + region.offset.m_bottom = b;
|
| + region.offset.m_left = l;
|
| + region.type = type;
|
| + if (!append)
|
| + rareNonInheritedData.access()->m_dashboardRegions.clear();
|
| + rareNonInheritedData.access()->m_dashboardRegions.append(region);
|
| + }
|
| +#endif
|
| +
|
| + void resetBorder() { resetBorderImage(); resetBorderTop(); resetBorderRight(); resetBorderBottom(); resetBorderLeft(); resetBorderRadius(); }
|
| + void resetBorderTop() { SET_VAR(surround, border.top, BorderValue()) }
|
| + void resetBorderRight() { SET_VAR(surround, border.right, BorderValue()) }
|
| + void resetBorderBottom() { SET_VAR(surround, border.bottom, BorderValue()) }
|
| + void resetBorderLeft() { SET_VAR(surround, border.left, BorderValue()) }
|
| + void resetBorderImage() { SET_VAR(surround, border.image, NinePieceImage()) }
|
| + void resetBorderRadius() { resetBorderTopLeftRadius(); resetBorderTopRightRadius(); resetBorderBottomLeftRadius(); resetBorderBottomRightRadius(); }
|
| + void resetBorderTopLeftRadius() { SET_VAR(surround, border.topLeft, initialBorderRadius()) }
|
| + void resetBorderTopRightRadius() { SET_VAR(surround, border.topRight, initialBorderRadius()) }
|
| + void resetBorderBottomLeftRadius() { SET_VAR(surround, border.bottomLeft, initialBorderRadius()) }
|
| + void resetBorderBottomRightRadius() { SET_VAR(surround, border.bottomRight, initialBorderRadius()) }
|
| +
|
| + void resetOutline() { SET_VAR(background, m_outline, OutlineValue()) }
|
| +
|
| + void setBackgroundColor(const Color& v) { SET_VAR(background, m_color, v) }
|
| +
|
| + void setBorderImage(const NinePieceImage& b) { SET_VAR(surround, border.image, b) }
|
| +
|
| + void setBorderTopLeftRadius(const IntSize& s) { SET_VAR(surround, border.topLeft, s) }
|
| + void setBorderTopRightRadius(const IntSize& s) { SET_VAR(surround, border.topRight, s) }
|
| + void setBorderBottomLeftRadius(const IntSize& s) { SET_VAR(surround, border.bottomLeft, s) }
|
| + void setBorderBottomRightRadius(const IntSize& s) { SET_VAR(surround, border.bottomRight, s) }
|
| +
|
| + void setBorderRadius(const IntSize& s)
|
| + {
|
| + setBorderTopLeftRadius(s);
|
| + setBorderTopRightRadius(s);
|
| + setBorderBottomLeftRadius(s);
|
| + setBorderBottomRightRadius(s);
|
| + }
|
| +
|
| + void setBorderLeftWidth(unsigned short v) { SET_VAR(surround, border.left.width, v) }
|
| + void setBorderLeftStyle(EBorderStyle v) { SET_VAR(surround, border.left.m_style, v) }
|
| + void setBorderLeftColor(const Color& v) { SET_VAR(surround, border.left.color, v) }
|
| + void setBorderRightWidth(unsigned short v) { SET_VAR(surround, border.right.width, v) }
|
| + void setBorderRightStyle(EBorderStyle v) { SET_VAR(surround, border.right.m_style, v) }
|
| + void setBorderRightColor(const Color& v) { SET_VAR(surround, border.right.color, v) }
|
| + void setBorderTopWidth(unsigned short v) { SET_VAR(surround, border.top.width, v) }
|
| + void setBorderTopStyle(EBorderStyle v) { SET_VAR(surround, border.top.m_style, v) }
|
| + void setBorderTopColor(const Color& v) { SET_VAR(surround, border.top.color, v) }
|
| + void setBorderBottomWidth(unsigned short v) { SET_VAR(surround, border.bottom.width, v) }
|
| + void setBorderBottomStyle(EBorderStyle v) { SET_VAR(surround, border.bottom.m_style, v) }
|
| + void setBorderBottomColor(const Color& v) { SET_VAR(surround, border.bottom.color, v) }
|
| + void setOutlineWidth(unsigned short v) { SET_VAR(background, m_outline.width, v) }
|
| +
|
| + void setOutlineStyle(EBorderStyle v, bool isAuto = false)
|
| + {
|
| + SET_VAR(background, m_outline.m_style, v)
|
| + SET_VAR(background, m_outline._auto, isAuto)
|
| + }
|
| +
|
| + void setOutlineColor(const Color& v) { SET_VAR(background, m_outline.color, v) }
|
| +
|
| + void setOverflowX(EOverflow v) { noninherited_flags._overflowX = v; }
|
| + void setOverflowY(EOverflow v) { noninherited_flags._overflowY = v; }
|
| + void setVisibility(EVisibility v) { inherited_flags._visibility = v; }
|
| + void setVerticalAlign(EVerticalAlign v) { noninherited_flags._vertical_align = v; }
|
| + void setVerticalAlignLength(Length l) { SET_VAR(box, vertical_align, l ) }
|
| +
|
| + void setHasClip(bool b = true) { SET_VAR(visual, hasClip, b) }
|
| + void setClipLeft(Length v) { SET_VAR(visual, clip.m_left, v) }
|
| + void setClipRight(Length v) { SET_VAR(visual, clip.m_right, v) }
|
| + void setClipTop(Length v) { SET_VAR(visual, clip.m_top, v) }
|
| + void setClipBottom(Length v) { SET_VAR(visual, clip.m_bottom, v) }
|
| + void setClip(Length top, Length right, Length bottom, Length left);
|
| +
|
| + void setUnicodeBidi( EUnicodeBidi b ) { noninherited_flags._unicodeBidi = b; }
|
| +
|
| + void setClear(EClear v) { noninherited_flags._clear = v; }
|
| + void setTableLayout(ETableLayout v) { noninherited_flags._table_layout = v; }
|
| +
|
| + bool setFontDescription(const FontDescription& v)
|
| + {
|
| + if (inherited->font.fontDescription() != v) {
|
| + inherited.access()->font = Font(v, inherited->font.letterSpacing(), inherited->font.wordSpacing());
|
| + return true;
|
| + }
|
| + return false;
|
| + }
|
| +
|
| + // Only used for blending font sizes when animating.
|
| + void setBlendedFontSize(int);
|
| +
|
| + void setColor(const Color& v) { SET_VAR(inherited, color, v) }
|
| + void setTextIndent(Length v) { SET_VAR(inherited, indent, v) }
|
| + void setTextAlign(ETextAlign v) { inherited_flags._text_align = v; }
|
| + void setTextTransform(ETextTransform v) { inherited_flags._text_transform = v; }
|
| + void addToTextDecorationsInEffect(int v) { inherited_flags._text_decorations |= v; }
|
| + void setTextDecorationsInEffect(int v) { inherited_flags._text_decorations = v; }
|
| + void setTextDecoration(int v) { SET_VAR(visual, textDecoration, v); }
|
| + void setDirection(TextDirection v) { inherited_flags._direction = v; }
|
| + void setLineHeight(Length v) { SET_VAR(inherited, line_height, v) }
|
| + void setZoom(float f) { SET_VAR(visual, m_zoom, f); setEffectiveZoom(effectiveZoom() * zoom()); }
|
| + void setEffectiveZoom(float f) { SET_VAR(inherited, m_effectiveZoom, f) }
|
| +
|
| + void setWhiteSpace(EWhiteSpace v) { inherited_flags._white_space = v; }
|
| +
|
| + void setWordSpacing(int v) { inherited.access()->font.setWordSpacing(v); }
|
| + void setLetterSpacing(int v) { inherited.access()->font.setLetterSpacing(v); }
|
| +
|
| + void clearBackgroundLayers() { background.access()->m_background = FillLayer(BackgroundFillLayer); }
|
| + void inheritBackgroundLayers(const FillLayer& parent) { background.access()->m_background = parent; }
|
| +
|
| + void adjustBackgroundLayers()
|
| + {
|
| + if (backgroundLayers()->next()) {
|
| + accessBackgroundLayers()->cullEmptyLayers();
|
| + accessBackgroundLayers()->fillUnsetProperties();
|
| + }
|
| + }
|
| +
|
| + void clearMaskLayers() { rareNonInheritedData.access()->m_mask = FillLayer(MaskFillLayer); }
|
| + void inheritMaskLayers(const FillLayer& parent) { rareNonInheritedData.access()->m_mask = parent; }
|
| +
|
| + void adjustMaskLayers()
|
| + {
|
| + if (maskLayers()->next()) {
|
| + accessMaskLayers()->cullEmptyLayers();
|
| + accessMaskLayers()->fillUnsetProperties();
|
| + }
|
| + }
|
| +
|
| + void setMaskBoxImage(const NinePieceImage& b) { SET_VAR(rareNonInheritedData, m_maskBoxImage, b) }
|
| +
|
| + void setBorderCollapse(bool collapse) { inherited_flags._border_collapse = collapse; }
|
| + void setHorizontalBorderSpacing(short v) { SET_VAR(inherited, horizontal_border_spacing, v) }
|
| + void setVerticalBorderSpacing(short v) { SET_VAR(inherited, vertical_border_spacing, v) }
|
| + void setEmptyCells(EEmptyCell v) { inherited_flags._empty_cells = v; }
|
| + void setCaptionSide(ECaptionSide v) { inherited_flags._caption_side = v; }
|
| +
|
| + void setCounterIncrement(short v) { SET_VAR(visual, counterIncrement, v) }
|
| + void setCounterReset(short v) { SET_VAR(visual, counterReset, v) }
|
| +
|
| + void setListStyleType(EListStyleType v) { inherited_flags._list_style_type = v; }
|
| + void setListStyleImage(StyleImage* v) { if (inherited->list_style_image != v) inherited.access()->list_style_image = v; }
|
| + void setListStylePosition(EListStylePosition v) { inherited_flags._list_style_position = v; }
|
| +
|
| + void resetMargin() { SET_VAR(surround, margin, LengthBox(Fixed)) }
|
| + void setMarginTop(Length v) { SET_VAR(surround, margin.m_top, v) }
|
| + void setMarginBottom(Length v) { SET_VAR(surround, margin.m_bottom, v) }
|
| + void setMarginLeft(Length v) { SET_VAR(surround, margin.m_left, v) }
|
| + void setMarginRight(Length v) { SET_VAR(surround, margin.m_right, v) }
|
| +
|
| + void resetPadding() { SET_VAR(surround, padding, LengthBox(Auto)) }
|
| + void setPaddingBox(const LengthBox& b) { SET_VAR(surround, padding, b) }
|
| + void setPaddingTop(Length v) { SET_VAR(surround, padding.m_top, v) }
|
| + void setPaddingBottom(Length v) { SET_VAR(surround, padding.m_bottom, v) }
|
| + void setPaddingLeft(Length v) { SET_VAR(surround, padding.m_left, v) }
|
| + void setPaddingRight(Length v) { SET_VAR(surround, padding.m_right, v) }
|
| +
|
| + void setCursor( ECursor c ) { inherited_flags._cursor_style = c; }
|
| + void addCursor(CachedImage*, const IntPoint& = IntPoint());
|
| + void setCursorList(PassRefPtr<CursorList>);
|
| + void clearCursorList();
|
| +
|
| + bool forceBackgroundsToWhite() const { return inherited_flags._force_backgrounds_to_white; }
|
| + void setForceBackgroundsToWhite(bool b=true) { inherited_flags._force_backgrounds_to_white = b; }
|
| +
|
| + bool htmlHacks() const { return inherited_flags._htmlHacks; }
|
| + void setHtmlHacks(bool b=true) { inherited_flags._htmlHacks = b; }
|
| +
|
| + bool hasAutoZIndex() const { return box->z_auto; }
|
| + void setHasAutoZIndex() { SET_VAR(box, z_auto, true); SET_VAR(box, z_index, 0) }
|
| + int zIndex() const { return box->z_index; }
|
| + void setZIndex(int v) { SET_VAR(box, z_auto, false); SET_VAR(box, z_index, v) }
|
| +
|
| + void setWidows(short w) { SET_VAR(inherited, widows, w); }
|
| + void setOrphans(short o) { SET_VAR(inherited, orphans, o); }
|
| + void setPageBreakInside(EPageBreak b) { SET_VAR(inherited, page_break_inside, b); }
|
| + void setPageBreakBefore(EPageBreak b) { noninherited_flags._page_break_before = b; }
|
| + void setPageBreakAfter(EPageBreak b) { noninherited_flags._page_break_after = b; }
|
| +
|
| + // CSS3 Setters
|
| +#if ENABLE(XBL)
|
| + void deleteBindingURIs() { SET_VAR(rareNonInheritedData, bindingURI, static_cast<BindingURI*>(0)); }
|
| + void inheritBindingURIs(BindingURI* other) { SET_VAR(rareNonInheritedData, bindingURI, other->copy()); }
|
| + void addBindingURI(StringImpl* uri);
|
| +#endif
|
| +
|
| + void setOutlineOffset(int v) { SET_VAR(background, m_outline._offset, v) }
|
| + void setTextShadow(ShadowData* val, bool add=false);
|
| + void setTextStrokeColor(const Color& c) { SET_VAR(rareInheritedData, textStrokeColor, c) }
|
| + void setTextStrokeWidth(float w) { SET_VAR(rareInheritedData, textStrokeWidth, w) }
|
| + void setTextFillColor(const Color& c) { SET_VAR(rareInheritedData, textFillColor, c) }
|
| + void setOpacity(float f) { SET_VAR(rareNonInheritedData, opacity, f); }
|
| + void setAppearance(ControlPart a) { SET_VAR(rareNonInheritedData, m_appearance, a); }
|
| + void setBoxAlign(EBoxAlignment a) { SET_VAR(rareNonInheritedData.access()->flexibleBox, align, a); }
|
| + void setBoxDirection(EBoxDirection d) { inherited_flags._box_direction = d; }
|
| + void setBoxFlex(float f) { SET_VAR(rareNonInheritedData.access()->flexibleBox, flex, f); }
|
| + void setBoxFlexGroup(unsigned int fg) { SET_VAR(rareNonInheritedData.access()->flexibleBox, flex_group, fg); }
|
| + void setBoxLines(EBoxLines l) { SET_VAR(rareNonInheritedData.access()->flexibleBox, lines, l); }
|
| + void setBoxOrdinalGroup(unsigned int og) { SET_VAR(rareNonInheritedData.access()->flexibleBox, ordinal_group, og); }
|
| + void setBoxOrient(EBoxOrient o) { SET_VAR(rareNonInheritedData.access()->flexibleBox, orient, o); }
|
| + void setBoxPack(EBoxAlignment p) { SET_VAR(rareNonInheritedData.access()->flexibleBox, pack, p); }
|
| + void setBoxShadow(ShadowData* val, bool add=false);
|
| + void setBoxReflect(PassRefPtr<StyleReflection> reflect) { if (rareNonInheritedData->m_boxReflect != reflect) rareNonInheritedData.access()->m_boxReflect = reflect; }
|
| + void setBoxSizing(EBoxSizing s) { SET_VAR(box, boxSizing, s); }
|
| + void setMarqueeIncrement(const Length& f) { SET_VAR(rareNonInheritedData.access()->marquee, increment, f); }
|
| + void setMarqueeSpeed(int f) { SET_VAR(rareNonInheritedData.access()->marquee, speed, f); }
|
| + void setMarqueeDirection(EMarqueeDirection d) { SET_VAR(rareNonInheritedData.access()->marquee, direction, d); }
|
| + void setMarqueeBehavior(EMarqueeBehavior b) { SET_VAR(rareNonInheritedData.access()->marquee, behavior, b); }
|
| + void setMarqueeLoopCount(int i) { SET_VAR(rareNonInheritedData.access()->marquee, loops, i); }
|
| + void setUserModify(EUserModify u) { SET_VAR(rareInheritedData, userModify, u); }
|
| + void setUserDrag(EUserDrag d) { SET_VAR(rareNonInheritedData, userDrag, d); }
|
| + void setUserSelect(EUserSelect s) { SET_VAR(rareInheritedData, userSelect, s); }
|
| + void setTextOverflow(bool b) { SET_VAR(rareNonInheritedData, textOverflow, b); }
|
| + void setMarginTopCollapse(EMarginCollapse c) { SET_VAR(rareNonInheritedData, marginTopCollapse, c); }
|
| + void setMarginBottomCollapse(EMarginCollapse c) { SET_VAR(rareNonInheritedData, marginBottomCollapse, c); }
|
| + void setWordBreak(EWordBreak b) { SET_VAR(rareInheritedData, wordBreak, b); }
|
| + void setWordWrap(EWordWrap b) { SET_VAR(rareInheritedData, wordWrap, b); }
|
| + void setNBSPMode(ENBSPMode b) { SET_VAR(rareInheritedData, nbspMode, b); }
|
| + void setKHTMLLineBreak(EKHTMLLineBreak b) { SET_VAR(rareInheritedData, khtmlLineBreak, b); }
|
| + void setMatchNearestMailBlockquoteColor(EMatchNearestMailBlockquoteColor c) { SET_VAR(rareNonInheritedData, matchNearestMailBlockquoteColor, c); }
|
| + void setHighlight(const AtomicString& h) { SET_VAR(rareInheritedData, highlight, h); }
|
| + void setBorderFit(EBorderFit b) { SET_VAR(rareNonInheritedData, m_borderFit, b); }
|
| + void setResize(EResize r) { SET_VAR(rareInheritedData, resize, r); }
|
| + void setColumnWidth(float f) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoWidth, false); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_width, f); }
|
| + void setHasAutoColumnWidth() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoWidth, true); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_width, 0); }
|
| + void setColumnCount(unsigned short c) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoCount, false); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_count, c); }
|
| + void setHasAutoColumnCount() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_autoCount, true); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_count, 0); }
|
| + void setColumnGap(float f) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_normalGap, false); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_gap, f); }
|
| + void setHasNormalColumnGap() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_normalGap, true); SET_VAR(rareNonInheritedData.access()->m_multiCol, m_gap, 0); }
|
| + void setColumnRuleColor(const Color& c) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule.color, c); }
|
| + void setColumnRuleStyle(EBorderStyle b) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule.m_style, b); }
|
| + void setColumnRuleWidth(unsigned short w) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule.width, w); }
|
| + void resetColumnRule() { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_rule, BorderValue()) }
|
| + void setColumnBreakBefore(EPageBreak p) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakBefore, p); }
|
| + void setColumnBreakInside(EPageBreak p) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakInside, p); }
|
| + void setColumnBreakAfter(EPageBreak p) { SET_VAR(rareNonInheritedData.access()->m_multiCol, m_breakAfter, p); }
|
| + void setTransform(const TransformOperations& ops) { SET_VAR(rareNonInheritedData.access()->m_transform, m_operations, ops); }
|
| + void setTransformOriginX(Length l) { SET_VAR(rareNonInheritedData.access()->m_transform, m_x, l); }
|
| + void setTransformOriginY(Length l) { SET_VAR(rareNonInheritedData.access()->m_transform, m_y, l); }
|
| + // End CSS3 Setters
|
| +
|
| + // Apple-specific property setters
|
| + void setPointerEvents(EPointerEvents p) { inherited_flags._pointerEvents = p; }
|
| +
|
| + void clearAnimations()
|
| + {
|
| + rareNonInheritedData.access()->m_animations.clear();
|
| + }
|
| +
|
| + void clearTransitions()
|
| + {
|
| + rareNonInheritedData.access()->m_transitions.clear();
|
| + }
|
| +
|
| + void inheritAnimations(const AnimationList* parent) { rareNonInheritedData.access()->m_animations.set(parent ? new AnimationList(*parent) : 0); }
|
| + void inheritTransitions(const AnimationList* parent) { rareNonInheritedData.access()->m_transitions.set(parent ? new AnimationList(*parent) : 0); }
|
| + void adjustAnimations();
|
| + void adjustTransitions();
|
| +
|
| + void setLineClamp(int c) { SET_VAR(rareNonInheritedData, lineClamp, c); }
|
| + void setTextSizeAdjust(bool b) { SET_VAR(rareInheritedData, textSizeAdjust, b); }
|
| + void setTextSecurity(ETextSecurity aTextSecurity) { SET_VAR(rareInheritedData, textSecurity, aTextSecurity); }
|
| +
|
| +#if ENABLE(SVG)
|
| + const SVGRenderStyle* svgStyle() const { return m_svgStyle.get(); }
|
| + SVGRenderStyle* accessSVGStyle() { return m_svgStyle.access(); }
|
| +
|
| + float fillOpacity() const { return svgStyle()->fillOpacity(); }
|
| + void setFillOpacity(float f) { accessSVGStyle()->setFillOpacity(f); }
|
| +
|
| + float strokeOpacity() const { return svgStyle()->strokeOpacity(); }
|
| + void setStrokeOpacity(float f) { accessSVGStyle()->setStrokeOpacity(f); }
|
| +
|
| + float floodOpacity() const { return svgStyle()->floodOpacity(); }
|
| + void setFloodOpacity(float f) { accessSVGStyle()->setFloodOpacity(f); }
|
| +#endif
|
| +
|
| + const ContentData* contentData() const { return rareNonInheritedData->m_content.get(); }
|
| + bool contentDataEquivalent(const RenderStyle* otherStyle) const;
|
| + void clearContent();
|
| + void setContent(StringImpl*, bool add = false);
|
| + void setContent(PassRefPtr<StyleImage>, bool add = false);
|
| + void setContent(CounterContent*, bool add = false);
|
| +
|
| + const CounterDirectiveMap* counterDirectives() const;
|
| + CounterDirectiveMap& accessCounterDirectives();
|
| +
|
| + bool inheritedNotEqual(RenderStyle*) const;
|
| +
|
| + StyleDifference diff(const RenderStyle*) const;
|
| +
|
| + bool isDisplayReplacedType() const
|
| + {
|
| + return display() == INLINE_BLOCK || display() == INLINE_BOX || display() == INLINE_TABLE;
|
| + }
|
| +
|
| + bool isDisplayInlineType() const
|
| + {
|
| + return display() == INLINE || isDisplayReplacedType();
|
| + }
|
| +
|
| + bool isOriginalDisplayInlineType() const
|
| + {
|
| + return originalDisplay() == INLINE || originalDisplay() == INLINE_BLOCK ||
|
| + originalDisplay() == INLINE_BOX || originalDisplay() == INLINE_TABLE;
|
| + }
|
| +
|
| + // To obtain at any time the pseudo state for a given link.
|
| + PseudoState pseudoState() const { return static_cast<PseudoState>(m_pseudoState); }
|
| + void setPseudoState(PseudoState s) { m_pseudoState = s; }
|
| +
|
| + // To tell if this style matched attribute selectors. This makes it impossible to share.
|
| + bool affectedByAttributeSelectors() const { return m_affectedByAttributeSelectors; }
|
| + void setAffectedByAttributeSelectors() { m_affectedByAttributeSelectors = true; }
|
| +
|
| + bool unique() const { return m_unique; }
|
| + void setUnique() { m_unique = true; }
|
| +
|
| + // Methods for indicating the style is affected by dynamic updates (e.g., children changing, our position changing in our sibling list, etc.)
|
| + bool affectedByEmpty() const { return m_affectedByEmpty; }
|
| + bool emptyState() const { return m_emptyState; }
|
| + void setEmptyState(bool b) { m_affectedByEmpty = true; m_unique = true; m_emptyState = b; }
|
| + bool childrenAffectedByPositionalRules() const { return childrenAffectedByForwardPositionalRules() || childrenAffectedByBackwardPositionalRules(); }
|
| + bool childrenAffectedByFirstChildRules() const { return m_childrenAffectedByFirstChildRules; }
|
| + void setChildrenAffectedByFirstChildRules() { m_childrenAffectedByFirstChildRules = true; }
|
| + bool childrenAffectedByLastChildRules() const { return m_childrenAffectedByLastChildRules; }
|
| + void setChildrenAffectedByLastChildRules() { m_childrenAffectedByLastChildRules = true; }
|
| + bool childrenAffectedByDirectAdjacentRules() const { return m_childrenAffectedByDirectAdjacentRules; }
|
| + void setChildrenAffectedByDirectAdjacentRules() { m_childrenAffectedByDirectAdjacentRules = true; }
|
| + bool childrenAffectedByForwardPositionalRules() const { return m_childrenAffectedByForwardPositionalRules; }
|
| + void setChildrenAffectedByForwardPositionalRules() { m_childrenAffectedByForwardPositionalRules = true; }
|
| + bool childrenAffectedByBackwardPositionalRules() const { return m_childrenAffectedByBackwardPositionalRules; }
|
| + void setChildrenAffectedByBackwardPositionalRules() { m_childrenAffectedByBackwardPositionalRules = true; }
|
| + bool firstChildState() const { return m_firstChildState; }
|
| + void setFirstChildState() { m_firstChildState = true; }
|
| + bool lastChildState() const { return m_lastChildState; }
|
| + void setLastChildState() { m_lastChildState = true; }
|
| + unsigned childIndex() const { return m_childIndex; }
|
| + void setChildIndex(unsigned index) { m_childIndex = index; }
|
| +
|
| + // Initial values for all the properties
|
| + static bool initialBorderCollapse() { return false; }
|
| + static EBorderStyle initialBorderStyle() { return BNONE; }
|
| + static NinePieceImage initialNinePieceImage() { return NinePieceImage(); }
|
| + static IntSize initialBorderRadius() { return IntSize(0, 0); }
|
| + static ECaptionSide initialCaptionSide() { return CAPTOP; }
|
| + static EClear initialClear() { return CNONE; }
|
| + static TextDirection initialDirection() { return LTR; }
|
| + static EDisplay initialDisplay() { return INLINE; }
|
| + static EEmptyCell initialEmptyCells() { return SHOW; }
|
| + static EFloat initialFloating() { return FNONE; }
|
| + static EListStylePosition initialListStylePosition() { return OUTSIDE; }
|
| + static EListStyleType initialListStyleType() { return DISC; }
|
| + static EOverflow initialOverflowX() { return OVISIBLE; }
|
| + static EOverflow initialOverflowY() { return OVISIBLE; }
|
| + static EPageBreak initialPageBreak() { return PBAUTO; }
|
| + static EPosition initialPosition() { return StaticPosition; }
|
| + static ETableLayout initialTableLayout() { return TAUTO; }
|
| + static EUnicodeBidi initialUnicodeBidi() { return UBNormal; }
|
| + static ETextTransform initialTextTransform() { return TTNONE; }
|
| + static EVisibility initialVisibility() { return VISIBLE; }
|
| + static EWhiteSpace initialWhiteSpace() { return NORMAL; }
|
| + static short initialHorizontalBorderSpacing() { return 0; }
|
| + static short initialVerticalBorderSpacing() { return 0; }
|
| + static ECursor initialCursor() { return CURSOR_AUTO; }
|
| + static Color initialColor() { return Color::black; }
|
| + static StyleImage* initialListStyleImage() { return 0; }
|
| + static unsigned short initialBorderWidth() { return 3; }
|
| + static int initialLetterWordSpacing() { return 0; }
|
| + static Length initialSize() { return Length(); }
|
| + static Length initialMinSize() { return Length(0, Fixed); }
|
| + static Length initialMaxSize() { return Length(undefinedLength, Fixed); }
|
| + static Length initialOffset() { return Length(); }
|
| + static Length initialMargin() { return Length(Fixed); }
|
| + static Length initialPadding() { return Length(Fixed); }
|
| + static Length initialTextIndent() { return Length(Fixed); }
|
| + static EVerticalAlign initialVerticalAlign() { return BASELINE; }
|
| + static int initialWidows() { return 2; }
|
| + static int initialOrphans() { return 2; }
|
| + static Length initialLineHeight() { return Length(-100.0, Percent); }
|
| + static ETextAlign initialTextAlign() { return TAAUTO; }
|
| + static ETextDecoration initialTextDecoration() { return TDNONE; }
|
| + static float initialZoom() { return 1.0f; }
|
| + static int initialOutlineOffset() { return 0; }
|
| + static float initialOpacity() { return 1.0f; }
|
| + static EBoxAlignment initialBoxAlign() { return BSTRETCH; }
|
| + static EBoxDirection initialBoxDirection() { return BNORMAL; }
|
| + static EBoxLines initialBoxLines() { return SINGLE; }
|
| + static EBoxOrient initialBoxOrient() { return HORIZONTAL; }
|
| + static EBoxAlignment initialBoxPack() { return BSTART; }
|
| + static float initialBoxFlex() { return 0.0f; }
|
| + static int initialBoxFlexGroup() { return 1; }
|
| + static int initialBoxOrdinalGroup() { return 1; }
|
| + static EBoxSizing initialBoxSizing() { return CONTENT_BOX; }
|
| + static StyleReflection* initialBoxReflect() { return 0; }
|
| + static int initialMarqueeLoopCount() { return -1; }
|
| + static int initialMarqueeSpeed() { return 85; }
|
| + static Length initialMarqueeIncrement() { return Length(6, Fixed); }
|
| + static EMarqueeBehavior initialMarqueeBehavior() { return MSCROLL; }
|
| + static EMarqueeDirection initialMarqueeDirection() { return MAUTO; }
|
| + static EUserModify initialUserModify() { return READ_ONLY; }
|
| + static EUserDrag initialUserDrag() { return DRAG_AUTO; }
|
| + static EUserSelect initialUserSelect() { return SELECT_TEXT; }
|
| + static bool initialTextOverflow() { return false; }
|
| + static EMarginCollapse initialMarginTopCollapse() { return MCOLLAPSE; }
|
| + static EMarginCollapse initialMarginBottomCollapse() { return MCOLLAPSE; }
|
| + static EWordBreak initialWordBreak() { return NormalWordBreak; }
|
| + static EWordWrap initialWordWrap() { return NormalWordWrap; }
|
| + static ENBSPMode initialNBSPMode() { return NBNORMAL; }
|
| + static EKHTMLLineBreak initialKHTMLLineBreak() { return LBNORMAL; }
|
| + static EMatchNearestMailBlockquoteColor initialMatchNearestMailBlockquoteColor() { return BCNORMAL; }
|
| + static const AtomicString& initialHighlight() { return nullAtom; }
|
| + static EBorderFit initialBorderFit() { return BorderFitBorder; }
|
| + static EResize initialResize() { return RESIZE_NONE; }
|
| + static ControlPart initialAppearance() { return NoControlPart; }
|
| + static bool initialVisuallyOrdered() { return false; }
|
| + static float initialTextStrokeWidth() { return 0; }
|
| + static unsigned short initialColumnCount() { return 1; }
|
| + static const TransformOperations& initialTransform() { DEFINE_STATIC_LOCAL(TransformOperations, ops, ()); return ops; }
|
| + static Length initialTransformOriginX() { return Length(50.0, Percent); }
|
| + static Length initialTransformOriginY() { return Length(50.0, Percent); }
|
| + static EPointerEvents initialPointerEvents() { return PE_AUTO; }
|
| +
|
| + // Keep these at the end.
|
| + static int initialLineClamp() { return -1; }
|
| + static bool initialTextSizeAdjust() { return true; }
|
| + static ETextSecurity initialTextSecurity() { return TSNONE; }
|
| +#if ENABLE(DASHBOARD_SUPPORT)
|
| + static const Vector<StyleDashboardRegion>& initialDashboardRegions();
|
| + static const Vector<StyleDashboardRegion>& noneDashboardRegions();
|
| +#endif
|
| +};
|
| +
|
| +} // namespace WebCore
|
| +
|
| +#endif // RenderStyle_h
|
| +
|
| +
|
|
|