2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * (C) 2000 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2013 Apple Inc. All rights reserved.
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
17 * You should have received a copy of the GNU Library General Public License
18 * along with this library; see the file COPYING.LIB. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301, USA.
25 #include "core/style/NinePieceImage.h"
27 #include "core/style/DataEquivalency.h"
31 static DataRef
<NinePieceImageData
>& defaultData()
33 static DataRef
<NinePieceImageData
>* data
= new DataRef
<NinePieceImageData
>;
39 NinePieceImage::NinePieceImage()
40 : m_data(defaultData())
44 NinePieceImage::NinePieceImage(PassRefPtrWillBeRawPtr
<StyleImage
> image
, LengthBox imageSlices
, bool fill
, const BorderImageLengthBox
& borderSlices
, const BorderImageLengthBox
& outset
, ENinePieceImageRule horizontalRule
, ENinePieceImageRule verticalRule
)
47 m_data
.access()->image
= image
;
48 m_data
.access()->imageSlices
= imageSlices
;
49 m_data
.access()->borderSlices
= borderSlices
;
50 m_data
.access()->outset
= outset
;
51 m_data
.access()->fill
= fill
;
52 m_data
.access()->horizontalRule
= horizontalRule
;
53 m_data
.access()->verticalRule
= verticalRule
;
56 NinePieceImageData::NinePieceImageData()
58 , horizontalRule(StretchImageRule
)
59 , verticalRule(StretchImageRule
)
61 , imageSlices(Length(100, Percent
), Length(100, Percent
), Length(100, Percent
), Length(100, Percent
))
62 , borderSlices(1.0, 1.0, 1.0, 1.0)
63 , outset(Length(0, Fixed
), Length(0, Fixed
), Length(0, Fixed
), Length(0, Fixed
))
67 NinePieceImageData::NinePieceImageData(const NinePieceImageData
& other
)
68 : RefCounted
<NinePieceImageData
>()
70 , horizontalRule(other
.horizontalRule
)
71 , verticalRule(other
.verticalRule
)
73 , imageSlices(other
.imageSlices
)
74 , borderSlices(other
.borderSlices
)
75 , outset(other
.outset
)
79 bool NinePieceImageData::operator==(const NinePieceImageData
& other
) const
81 return dataEquivalent(image
, other
.image
)
82 && imageSlices
== other
.imageSlices
84 && borderSlices
== other
.borderSlices
85 && outset
== other
.outset
86 && horizontalRule
== other
.horizontalRule
87 && verticalRule
== other
.verticalRule
;