1/* 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. 6 * 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. 11 * 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. 16 * 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. 21 * 22 */ 23 24#include "config.h" 25#include "core/rendering/style/NinePieceImage.h" 26 27namespace WebCore { 28 29static DataRef<NinePieceImageData>& defaultData() 30{ 31 static DataRef<NinePieceImageData>* data = new DataRef<NinePieceImageData>; 32 if (!data->get()) 33 data->init(); 34 return *data; 35} 36 37NinePieceImage::NinePieceImage() 38 : m_data(defaultData()) 39{ 40} 41 42NinePieceImage::NinePieceImage(PassRefPtr<StyleImage> image, LengthBox imageSlices, bool fill, LengthBox borderSlices, LengthBox outset, ENinePieceImageRule horizontalRule, ENinePieceImageRule verticalRule) 43{ 44 m_data.init(); 45 m_data.access()->image = image; 46 m_data.access()->imageSlices = imageSlices; 47 m_data.access()->borderSlices = borderSlices; 48 m_data.access()->outset = outset; 49 m_data.access()->fill = fill; 50 m_data.access()->horizontalRule = horizontalRule; 51 m_data.access()->verticalRule = verticalRule; 52} 53 54NinePieceImageData::NinePieceImageData() 55 : fill(false) 56 , horizontalRule(StretchImageRule) 57 , verticalRule(StretchImageRule) 58 , image(0) 59 , imageSlices(Length(100, Percent), Length(100, Percent), Length(100, Percent), Length(100, Percent)) 60 , borderSlices(Length(1, Relative), Length(1, Relative), Length(1, Relative), Length(1, Relative)) 61 , outset(0) 62{ 63} 64 65NinePieceImageData::NinePieceImageData(const NinePieceImageData& other) 66 : RefCounted<NinePieceImageData>() 67 , fill(other.fill) 68 , horizontalRule(other.horizontalRule) 69 , verticalRule(other.verticalRule) 70 , image(other.image) 71 , imageSlices(other.imageSlices) 72 , borderSlices(other.borderSlices) 73 , outset(other.outset) 74{ 75} 76 77bool NinePieceImageData::operator==(const NinePieceImageData& other) const 78{ 79 return StyleImage::imagesEquivalent(image.get(), other.image.get()) 80 && imageSlices == other.imageSlices 81 && fill == other.fill 82 && borderSlices == other.borderSlices 83 && outset == other.outset 84 && horizontalRule == other.horizontalRule 85 && verticalRule == other.verticalRule; 86} 87 88} 89