18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 1999 Antti Koivisto (koivisto@kde.org) 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "FillLayer.h" 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectFillLayer::FillLayer(EFillLayerType type) 286c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen : m_next(0) 296c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , m_image(FillLayer::initialFillImage(type)) 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_xPosition(FillLayer::initialFillXPosition(type)) 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_yPosition(FillLayer::initialFillYPosition(type)) 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_attachment(FillLayer::initialFillAttachment(type)) 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_clip(FillLayer::initialFillClip(type)) 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_origin(FillLayer::initialFillOrigin(type)) 35231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_repeatX(FillLayer::initialFillRepeatX(type)) 36231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_repeatY(FillLayer::initialFillRepeatY(type)) 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_composite(FillLayer::initialFillComposite(type)) 38231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_sizeType(SizeNone) 39231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_sizeLength(FillLayer::initialFillSizeLength(type)) 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_imageSet(false) 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_attachmentSet(false) 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_clipSet(false) 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_originSet(false) 44231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_repeatXSet(false) 45231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_repeatYSet(false) 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_xPosSet(false) 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_yPosSet(false) 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_compositeSet(type == MaskFillLayer) 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_type(type) 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectFillLayer::FillLayer(const FillLayer& o) 546c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen : m_next(o.m_next ? new FillLayer(*o.m_next) : 0) 556c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen , m_image(o.m_image) 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_xPosition(o.m_xPosition) 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_yPosition(o.m_yPosition) 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_attachment(o.m_attachment) 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_clip(o.m_clip) 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_origin(o.m_origin) 61231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_repeatX(o.m_repeatX) 62231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_repeatY(o.m_repeatY) 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_composite(o.m_composite) 64231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_sizeType(o.m_sizeType) 65231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_sizeLength(o.m_sizeLength) 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_imageSet(o.m_imageSet) 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_attachmentSet(o.m_attachmentSet) 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_clipSet(o.m_clipSet) 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_originSet(o.m_originSet) 70231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_repeatXSet(o.m_repeatXSet) 71231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block , m_repeatYSet(o.m_repeatYSet) 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_xPosSet(o.m_xPosSet) 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_yPosSet(o.m_yPosSet) 748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_compositeSet(o.m_compositeSet) 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project , m_type(o.m_type) 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectFillLayer::~FillLayer() 808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete m_next; 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectFillLayer& FillLayer::operator=(const FillLayer& o) 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (m_next != o.m_next) { 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete m_next; 888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_next = o.m_next ? new FillLayer(*o.m_next) : 0; 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_image = o.m_image; 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_xPosition = o.m_xPosition; 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_yPosition = o.m_yPosition; 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_attachment = o.m_attachment; 958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_clip = o.m_clip; 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_composite = o.m_composite; 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_origin = o.m_origin; 98231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_repeatX = o.m_repeatX; 99231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_repeatY = o.m_repeatY; 100231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_sizeType = o.m_sizeType; 101231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_sizeLength = o.m_sizeLength; 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_imageSet = o.m_imageSet; 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_attachmentSet = o.m_attachmentSet; 1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_clipSet = o.m_clipSet; 1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_compositeSet = o.m_compositeSet; 1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_originSet = o.m_originSet; 108231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_repeatXSet = o.m_repeatXSet; 109231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_repeatYSet = o.m_repeatYSet; 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_xPosSet = o.m_xPosSet; 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_yPosSet = o.m_yPosSet; 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_type = o.m_type; 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return *this; 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool FillLayer::operator==(const FillLayer& o) const 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We do not check the "isSet" booleans for each property, since those are only used during initial construction 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // to propagate patterns into layers. All layer comparisons happen after values have all been filled in anyway. 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return StyleImage::imagesEquivalent(m_image.get(), o.m_image.get()) && m_xPosition == o.m_xPosition && m_yPosition == o.m_yPosition && 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project m_attachment == o.m_attachment && m_clip == o.m_clip && 124231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_composite == o.m_composite && m_origin == o.m_origin && m_repeatX == o.m_repeatX && 125231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_repeatY == o.m_repeatY && m_sizeType == o.m_sizeType && m_sizeLength == o.m_sizeLength && 126231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block m_type == o.m_type && ((m_next && o.m_next) ? *m_next == *o.m_next : m_next == o.m_next); 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid FillLayer::fillUnsetProperties() 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FillLayer* curr; 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (curr = this; curr && curr->isXPositionSet(); curr = curr->next()) { } 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (curr && curr != this) { 1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We need to fill in the remaining values with the pattern specified. 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (FillLayer* pattern = this; curr; curr = curr->next()) { 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project curr->m_xPosition = pattern->m_xPosition; 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = pattern->next(); 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (pattern == curr || !pattern) 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = this; 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (curr = this; curr && curr->isYPositionSet(); curr = curr->next()) { } 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (curr && curr != this) { 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We need to fill in the remaining values with the pattern specified. 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (FillLayer* pattern = this; curr; curr = curr->next()) { 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project curr->m_yPosition = pattern->m_yPosition; 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = pattern->next(); 1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (pattern == curr || !pattern) 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = this; 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (curr = this; curr && curr->isAttachmentSet(); curr = curr->next()) { } 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (curr && curr != this) { 1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We need to fill in the remaining values with the pattern specified. 1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (FillLayer* pattern = this; curr; curr = curr->next()) { 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project curr->m_attachment = pattern->m_attachment; 1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = pattern->next(); 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (pattern == curr || !pattern) 1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = this; 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (curr = this; curr && curr->isClipSet(); curr = curr->next()) { } 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (curr && curr != this) { 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We need to fill in the remaining values with the pattern specified. 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (FillLayer* pattern = this; curr; curr = curr->next()) { 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project curr->m_clip = pattern->m_clip; 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = pattern->next(); 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (pattern == curr || !pattern) 1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = this; 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (curr = this; curr && curr->isCompositeSet(); curr = curr->next()) { } 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (curr && curr != this) { 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We need to fill in the remaining values with the pattern specified. 1798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (FillLayer* pattern = this; curr; curr = curr->next()) { 1808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project curr->m_composite = pattern->m_composite; 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = pattern->next(); 1828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (pattern == curr || !pattern) 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = this; 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (curr = this; curr && curr->isOriginSet(); curr = curr->next()) { } 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (curr && curr != this) { 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We need to fill in the remaining values with the pattern specified. 1908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (FillLayer* pattern = this; curr; curr = curr->next()) { 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project curr->m_origin = pattern->m_origin; 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = pattern->next(); 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (pattern == curr || !pattern) 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = this; 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 198231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block for (curr = this; curr && curr->isRepeatXSet(); curr = curr->next()) { } 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (curr && curr != this) { 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We need to fill in the remaining values with the pattern specified. 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (FillLayer* pattern = this; curr; curr = curr->next()) { 202231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block curr->m_repeatX = pattern->m_repeatX; 203231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block pattern = pattern->next(); 204231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (pattern == curr || !pattern) 205231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block pattern = this; 206231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 207231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block } 208231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block 209231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block for (curr = this; curr && curr->isRepeatYSet(); curr = curr->next()) { } 210231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block if (curr && curr != this) { 211231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block // We need to fill in the remaining values with the pattern specified. 212231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block for (FillLayer* pattern = this; curr; curr = curr->next()) { 213231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block curr->m_repeatY = pattern->m_repeatY; 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = pattern->next(); 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (pattern == curr || !pattern) 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = this; 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (curr = this; curr && curr->isSizeSet(); curr = curr->next()) { } 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (curr && curr != this) { 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project // We need to fill in the remaining values with the pattern specified. 2238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (FillLayer* pattern = this; curr; curr = curr->next()) { 224231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block curr->m_sizeType = pattern->m_sizeType; 225231d4e3152a9c27a73b6ac7badbe6be673aa3ddfSteve Block curr->m_sizeLength = pattern->m_sizeLength; 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = pattern->next(); 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (pattern == curr || !pattern) 2288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pattern = this; 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid FillLayer::cullEmptyLayers() 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project FillLayer* next; 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (FillLayer* p = this; p; p = next) { 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project next = p->m_next; 2382bde8e466a4451c7319e3a072d118917957d6554Steve Block if (next && !next->isImageSet()) { 2398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project delete next; 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project p->m_next = 0; 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project break; 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectbool FillLayer::containsImage(StyleImage* s) const 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!s) 2498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 2508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (m_image && *s == *m_image) 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return true; 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (m_next) 2538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return m_next->containsImage(s); 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return false; 2558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 257d0825bca7fe65beaee391d30da42e937db621564Steve Blockbool FillLayer::imagesAreLoaded() const 258d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 259d0825bca7fe65beaee391d30da42e937db621564Steve Block const FillLayer* curr; 260d0825bca7fe65beaee391d30da42e937db621564Steve Block for (curr = this; curr; curr = curr->next()) { 261d0825bca7fe65beaee391d30da42e937db621564Steve Block if (curr->m_image && !curr->m_image->isLoaded()) 262d0825bca7fe65beaee391d30da42e937db621564Steve Block return false; 263d0825bca7fe65beaee391d30da42e937db621564Steve Block } 264d0825bca7fe65beaee391d30da42e937db621564Steve Block 265d0825bca7fe65beaee391d30da42e937db621564Steve Block return true; 266d0825bca7fe65beaee391d30da42e937db621564Steve Block} 267d0825bca7fe65beaee391d30da42e937db621564Steve Block 2688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} // namespace WebCore 269