diff options
Diffstat (limited to 'Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp')
-rw-r--r-- | Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp b/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp new file mode 100644 index 0000000..42cf966 --- /dev/null +++ b/Source/WebCore/rendering/style/StyleRareNonInheritedData.cpp @@ -0,0 +1,203 @@ +/* + * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) + * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public License + * along with this library; see the file COPYING.LIB. If not, write to + * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + * Boston, MA 02110-1301, USA. + * + */ + +#include "config.h" +#include "StyleRareNonInheritedData.h" + +#include "CSSStyleSelector.h" +#include "ContentData.h" +#include "RenderCounter.h" +#include "RenderStyle.h" +#include "StyleImage.h" + +namespace WebCore { + +StyleRareNonInheritedData::StyleRareNonInheritedData() + : lineClamp(RenderStyle::initialLineClamp()) + , opacity(RenderStyle::initialOpacity()) + , m_content(0) + , m_counterDirectives(0) + , userDrag(RenderStyle::initialUserDrag()) + , textOverflow(RenderStyle::initialTextOverflow()) + , marginBeforeCollapse(MCOLLAPSE) + , marginAfterCollapse(MCOLLAPSE) + , matchNearestMailBlockquoteColor(RenderStyle::initialMatchNearestMailBlockquoteColor()) + , m_appearance(RenderStyle::initialAppearance()) + , m_borderFit(RenderStyle::initialBorderFit()) + , m_textCombine(RenderStyle::initialTextCombine()) + , m_counterIncrement(0) + , m_counterReset(0) +#if USE(ACCELERATED_COMPOSITING) + , m_runningAcceleratedAnimation(false) +#endif + , m_boxShadow(0) + , m_animations(0) + , m_transitions(0) + , m_mask(FillLayer(MaskFillLayer)) + , m_transformStyle3D(RenderStyle::initialTransformStyle3D()) + , m_backfaceVisibility(RenderStyle::initialBackfaceVisibility()) + , m_perspective(RenderStyle::initialPerspective()) + , m_perspectiveOriginX(RenderStyle::initialPerspectiveOriginX()) + , m_perspectiveOriginY(RenderStyle::initialPerspectiveOriginY()) + , m_pageSize() + , m_pageSizeType(PAGE_SIZE_AUTO) +{ +} + +StyleRareNonInheritedData::StyleRareNonInheritedData(const StyleRareNonInheritedData& o) + : RefCounted<StyleRareNonInheritedData>() + , lineClamp(o.lineClamp) + , opacity(o.opacity) + , flexibleBox(o.flexibleBox) + , marquee(o.marquee) + , m_multiCol(o.m_multiCol) + , m_transform(o.m_transform) + , m_content(0) + , m_counterDirectives(0) + , userDrag(o.userDrag) + , textOverflow(o.textOverflow) + , marginBeforeCollapse(o.marginBeforeCollapse) + , marginAfterCollapse(o.marginAfterCollapse) + , matchNearestMailBlockquoteColor(o.matchNearestMailBlockquoteColor) + , m_appearance(o.m_appearance) + , m_borderFit(o.m_borderFit) + , m_textCombine(o.m_textCombine) + , m_counterIncrement(o.m_counterIncrement) + , m_counterReset(o.m_counterReset) +#if USE(ACCELERATED_COMPOSITING) + , m_runningAcceleratedAnimation(o.m_runningAcceleratedAnimation) +#endif + , m_boxShadow(o.m_boxShadow ? new ShadowData(*o.m_boxShadow) : 0) + , m_boxReflect(o.m_boxReflect) + , m_animations(o.m_animations ? new AnimationList(*o.m_animations) : 0) + , m_transitions(o.m_transitions ? new AnimationList(*o.m_transitions) : 0) + , m_mask(o.m_mask) + , m_maskBoxImage(o.m_maskBoxImage) + , m_transformStyle3D(o.m_transformStyle3D) + , m_backfaceVisibility(o.m_backfaceVisibility) + , m_perspective(o.m_perspective) + , m_perspectiveOriginX(o.m_perspectiveOriginX) + , m_perspectiveOriginY(o.m_perspectiveOriginY) + , m_pageSize(o.m_pageSize) + , m_pageSizeType(o.m_pageSizeType) +{ +} + +StyleRareNonInheritedData::~StyleRareNonInheritedData() +{ +} + +bool StyleRareNonInheritedData::operator==(const StyleRareNonInheritedData& o) const +{ + return lineClamp == o.lineClamp +#if ENABLE(DASHBOARD_SUPPORT) + && m_dashboardRegions == o.m_dashboardRegions +#endif + && opacity == o.opacity + && flexibleBox == o.flexibleBox + && marquee == o.marquee + && m_multiCol == o.m_multiCol + && m_transform == o.m_transform + && contentDataEquivalent(o) + && m_counterDirectives == o.m_counterDirectives + && userDrag == o.userDrag + && textOverflow == o.textOverflow + && marginBeforeCollapse == o.marginBeforeCollapse + && marginAfterCollapse == o.marginAfterCollapse + && matchNearestMailBlockquoteColor == o.matchNearestMailBlockquoteColor + && m_appearance == o.m_appearance + && m_borderFit == o.m_borderFit + && m_textCombine == o.m_textCombine + && m_counterIncrement == o.m_counterIncrement + && m_counterReset == o.m_counterReset +#if USE(ACCELERATED_COMPOSITING) + && !m_runningAcceleratedAnimation && !o.m_runningAcceleratedAnimation +#endif + && shadowDataEquivalent(o) + && reflectionDataEquivalent(o) + && animationDataEquivalent(o) + && transitionDataEquivalent(o) + && m_mask == o.m_mask + && m_maskBoxImage == o.m_maskBoxImage + && (m_transformStyle3D == o.m_transformStyle3D) + && (m_backfaceVisibility == o.m_backfaceVisibility) + && (m_perspective == o.m_perspective) + && (m_perspectiveOriginX == o.m_perspectiveOriginX) + && (m_perspectiveOriginY == o.m_perspectiveOriginY) + && (m_pageSize == o.m_pageSize) + && (m_pageSizeType == o.m_pageSizeType) + ; +} + +bool StyleRareNonInheritedData::contentDataEquivalent(const StyleRareNonInheritedData& o) const +{ + ContentData* c1 = m_content.get(); + ContentData* c2 = o.m_content.get(); + + while (c1 && c2) { + if (!c1->dataEquivalent(*c2)) + return false; + c1 = c1->next(); + c2 = c2->next(); + } + + return !c1 && !c2; +} + +bool StyleRareNonInheritedData::shadowDataEquivalent(const StyleRareNonInheritedData& o) const +{ + if ((!m_boxShadow && o.m_boxShadow) || (m_boxShadow && !o.m_boxShadow)) + return false; + if (m_boxShadow && o.m_boxShadow && (*m_boxShadow != *o.m_boxShadow)) + return false; + return true; +} + +bool StyleRareNonInheritedData::reflectionDataEquivalent(const StyleRareNonInheritedData& o) const +{ + if (m_boxReflect != o.m_boxReflect) { + if (!m_boxReflect || !o.m_boxReflect) + return false; + return *m_boxReflect == *o.m_boxReflect; + } + return true; + +} + +bool StyleRareNonInheritedData::animationDataEquivalent(const StyleRareNonInheritedData& o) const +{ + if ((!m_animations && o.m_animations) || (m_animations && !o.m_animations)) + return false; + if (m_animations && o.m_animations && (*m_animations != *o.m_animations)) + return false; + return true; +} + +bool StyleRareNonInheritedData::transitionDataEquivalent(const StyleRareNonInheritedData& o) const +{ + if ((!m_transitions && o.m_transitions) || (m_transitions && !o.m_transitions)) + return false; + if (m_transitions && o.m_transitions && (*m_transitions != *o.m_transitions)) + return false; + return true; +} + +} // namespace WebCore |