/*
* 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 "RenderStyle.h"
namespace WebCore {
StyleRareNonInheritedData::StyleRareNonInheritedData()
: lineClamp(RenderStyle::initialLineClamp())
, opacity(RenderStyle::initialOpacity())
, m_content(0)
, m_counterDirectives(0)
, userDrag(RenderStyle::initialUserDrag())
, textOverflow(RenderStyle::initialTextOverflow())
, marginTopCollapse(MCOLLAPSE)
, marginBottomCollapse(MCOLLAPSE)
, matchNearestMailBlockquoteColor(RenderStyle::initialMatchNearestMailBlockquoteColor())
, m_appearance(RenderStyle::initialAppearance())
, m_borderFit(RenderStyle::initialBorderFit())
, m_boxShadow(0)
, m_animations(0)
, m_transitions(0)
, m_mask(FillLayer(MaskFillLayer))
#if ENABLE(XBL)
, bindingURI(0)
#endif
{
}
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)
, marginTopCollapse(o.marginTopCollapse)
, marginBottomCollapse(o.marginBottomCollapse)
, matchNearestMailBlockquoteColor(o.matchNearestMailBlockquoteColor)
, m_appearance(o.m_appearance)
, m_borderFit(o.m_borderFit)
, 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)
#if ENABLE(XBL)
, bindingURI(o.bindingURI ? o.bindingURI->copy() : 0)
#endif
{
}
StyleRareNonInheritedData::~StyleRareNonInheritedData()
{
}
#if ENABLE(XBL)
bool StyleRareNonInheritedData::bindingsEquivalent(const StyleRareNonInheritedData& o) const
{
if (this == &o) return true;
if (!bindingURI && o.bindingURI || bindingURI && !o.bindingURI)
return false;
if (bindingURI && o.bindingURI && (*bindingURI != *o.bindingURI))
return false;
return true;
}
#endif
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
&& m_content == o.m_content
&& m_counterDirectives == o.m_counterDirectives
&& userDrag == o.userDrag
&& textOverflow == o.textOverflow
&& marginTopCollapse == o.marginTopCollapse
&& marginBottomCollapse == o.marginBottomCollapse
&& matchNearestMailBlockquoteColor == o.matchNearestMailBlockquoteColor
&& m_appearance == o.m_appearance
&& m_borderFit == o.m_borderFit
&& shadowDataEquivalent(o)
&& reflectionDataEquivalent(o)
&& animationDataEquivalent(o)
&& transitionDataEquivalent(o)
&& m_mask == o.m_mask
&& m_maskBoxImage == o.m_maskBoxImage
#if ENABLE(XBL)
&& bindingsEquivalent(o)
#endif
;
}
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