15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/*
25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *           (C) 2000 Antti Koivisto (koivisto@kde.org)
45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *           (C) 2000 Dirk Mueller (mueller@kde.org)
5926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles) * Copyright (C) 2003, 2005, 2006, 2007, 2008, 2013 Apple Inc. All rights reserved.
65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is free software; you can redistribute it and/or
85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * modify it under the terms of the GNU Library General Public
95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * License as published by the Free Software Foundation; either
105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * version 2 of the License, or (at your option) any later version.
115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * This library is distributed in the hope that it will be useful,
135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * but WITHOUT ANY WARRANTY; without even the implied warranty of
145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Library General Public License for more details.
165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * You should have received a copy of the GNU Library General Public License
185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * along with this library; see the file COPYING.LIB.  If not, write to
195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) * Boston, MA 02110-1301, USA.
215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) *
225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) */
235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#include "config.h"
2553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/style/NinePieceImage.h"
265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
27323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "core/rendering/style/DataEquivalency.h"
28323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)
29c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
31926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)static DataRef<NinePieceImageData>& defaultData()
325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
33926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    static DataRef<NinePieceImageData>* data = new DataRef<NinePieceImageData>;
34926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    if (!data->get())
35926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        data->init();
36926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    return *data;
375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
39926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)NinePieceImage::NinePieceImage()
40926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    : m_data(defaultData())
415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles){
42926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
43926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
4451b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)NinePieceImage::NinePieceImage(PassRefPtr<StyleImage> image, LengthBox imageSlices, bool fill, const BorderImageLengthBox& borderSlices, const BorderImageLengthBox& outset, ENinePieceImageRule horizontalRule, ENinePieceImageRule verticalRule)
45926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
46926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    m_data.init();
47926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    m_data.access()->image = image;
48926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    m_data.access()->imageSlices = imageSlices;
49926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    m_data.access()->borderSlices = borderSlices;
50926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    m_data.access()->outset = outset;
51926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    m_data.access()->fill = fill;
52926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    m_data.access()->horizontalRule = horizontalRule;
53926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    m_data.access()->verticalRule = verticalRule;
54926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
55926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
56926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)NinePieceImageData::NinePieceImageData()
57926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    : fill(false)
58926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    , horizontalRule(StretchImageRule)
59926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    , verticalRule(StretchImageRule)
60d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    , image(nullptr)
61926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    , imageSlices(Length(100, Percent), Length(100, Percent), Length(100, Percent), Length(100, Percent))
6251b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    , borderSlices(1.0, 1.0, 1.0, 1.0)
6351b2906e11752df6c18351cf520e30522d3b53a1Torne (Richard Coles)    , outset(Length(0, Fixed), Length(0, Fixed), Length(0, Fixed), Length(0, Fixed))
64926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
65926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
66926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
67926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)NinePieceImageData::NinePieceImageData(const NinePieceImageData& other)
68926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    : RefCounted<NinePieceImageData>()
69926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    , fill(other.fill)
70926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    , horizontalRule(other.horizontalRule)
71926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    , verticalRule(other.verticalRule)
72926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    , image(other.image)
73926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    , imageSlices(other.imageSlices)
74926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    , borderSlices(other.borderSlices)
75926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)    , outset(other.outset)
76926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
77926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)}
78926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)
79926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)bool NinePieceImageData::operator==(const NinePieceImageData& other) const
80926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles){
81323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)    return dataEquivalent(image, other.image)
82926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        && imageSlices == other.imageSlices
83926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        && fill == other.fill
84926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        && borderSlices == other.borderSlices
85926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        && outset == other.outset
86926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        && horizontalRule == other.horizontalRule
87926b001d589ce2f10facb93dd4b87578ea35a855Torne (Richard Coles)        && verticalRule == other.verticalRule;
885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)
905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}
91