void BackgroundLayer::cullEmptyLayers() { BackgroundLayer *next; for (BackgroundLayer *p = this; p; p = next) { next = p->m_next; if (next && !next->isBackgroundImageSet() && !next->isBackgroundXPositionSet() && !next->isBackgroundYPositionSet() && !next->isBackgroundAttachmentSet() && !next->isBackgroundClipSet() && !next->isBackgroundOriginSet() && !next->isBackgroundRepeatSet() && !next->isBackgroundSizeSet()) { delete next; p->m_next = 0; break; } } }
void BackgroundLayer::fillUnsetProperties() { BackgroundLayer* curr; for (curr = this; curr && curr->isBackgroundImageSet(); curr = curr->next()); if (curr && curr != this) { // We need to fill in the remaining values with the pattern specified. for (BackgroundLayer* pattern = this; curr; curr = curr->next()) { curr->m_image = pattern->m_image; pattern = pattern->next(); if (pattern == curr || !pattern) pattern = this; } } for (curr = this; curr && curr->isBackgroundXPositionSet(); curr = curr->next()); if (curr && curr != this) { // We need to fill in the remaining values with the pattern specified. for (BackgroundLayer* pattern = this; curr; curr = curr->next()) { curr->m_xPosition = pattern->m_xPosition; pattern = pattern->next(); if (pattern == curr || !pattern) pattern = this; } } for (curr = this; curr && curr->isBackgroundYPositionSet(); curr = curr->next()); if (curr && curr != this) { // We need to fill in the remaining values with the pattern specified. for (BackgroundLayer* pattern = this; curr; curr = curr->next()) { curr->m_yPosition = pattern->m_yPosition; pattern = pattern->next(); if (pattern == curr || !pattern) pattern = this; } } for (curr = this; curr && curr->isBackgroundAttachmentSet(); curr = curr->next()); if (curr && curr != this) { // We need to fill in the remaining values with the pattern specified. for (BackgroundLayer* pattern = this; curr; curr = curr->next()) { curr->m_bgAttachment = pattern->m_bgAttachment; pattern = pattern->next(); if (pattern == curr || !pattern) pattern = this; } } for (curr = this; curr && curr->isBackgroundClipSet(); curr = curr->next()); if (curr && curr != this) { // We need to fill in the remaining values with the pattern specified. for (BackgroundLayer* pattern = this; curr; curr = curr->next()) { curr->m_bgClip = pattern->m_bgClip; pattern = pattern->next(); if (pattern == curr || !pattern) pattern = this; } } for (curr = this; curr && curr->isBackgroundOriginSet(); curr = curr->next()); if (curr && curr != this) { // We need to fill in the remaining values with the pattern specified. for (BackgroundLayer* pattern = this; curr; curr = curr->next()) { curr->m_bgOrigin = pattern->m_bgOrigin; pattern = pattern->next(); if (pattern == curr || !pattern) pattern = this; } } for (curr = this; curr && curr->isBackgroundRepeatSet(); curr = curr->next()); if (curr && curr != this) { // We need to fill in the remaining values with the pattern specified. for (BackgroundLayer* pattern = this; curr; curr = curr->next()) { curr->m_bgRepeat = pattern->m_bgRepeat; pattern = pattern->next(); if (pattern == curr || !pattern) pattern = this; } } for (curr = this; curr && curr->isBackgroundSizeSet(); curr = curr->next()); if (curr && curr != this) { // We need to fill in the remaining values with the pattern specified. for (BackgroundLayer* pattern = this; curr; curr = curr->next()) { curr->m_backgroundSize = pattern->m_backgroundSize; pattern = pattern->next(); if (pattern == curr || !pattern) pattern = this; } } }