| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
| 4 * (C) 2007 David Smith (catfish.man@gmail.com) | 4 * (C) 2007 David Smith (catfish.man@gmail.com) |
| 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. | 5 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc.
All rights reserved. |
| 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| (...skipping 6068 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6079 // Replace the old renderer with the new one. | 6079 // Replace the old renderer with the new one. |
| 6080 remainingText->setFirstLetter(newFirstLetter); | 6080 remainingText->setFirstLetter(newFirstLetter); |
| 6081 toRenderBoxModelObject(newFirstLetter)->setFirstLetterRemainingText(
remainingText); | 6081 toRenderBoxModelObject(newFirstLetter)->setFirstLetterRemainingText(
remainingText); |
| 6082 } | 6082 } |
| 6083 // To prevent removal of single anonymous block in RenderBlock::removeCh
ild and causing | 6083 // To prevent removal of single anonymous block in RenderBlock::removeCh
ild and causing |
| 6084 // |nextSibling| to go stale, we remove the old first letter using remov
eChildNode first. | 6084 // |nextSibling| to go stale, we remove the old first letter using remov
eChildNode first. |
| 6085 firstLetterContainer->virtualChildren()->removeChildNode(firstLetterCont
ainer, firstLetter); | 6085 firstLetterContainer->virtualChildren()->removeChildNode(firstLetterCont
ainer, firstLetter); |
| 6086 firstLetter->destroy(); | 6086 firstLetter->destroy(); |
| 6087 firstLetter = newFirstLetter; | 6087 firstLetter = newFirstLetter; |
| 6088 firstLetterContainer->addChild(firstLetter, nextSibling); | 6088 firstLetterContainer->addChild(firstLetter, nextSibling); |
| 6089 } | 6089 } else |
| 6090 | 6090 firstLetter->setStyle(pseudoStyle); |
| 6091 firstLetter->setAnimatableStyle(pseudoStyle); | |
| 6092 | 6091 |
| 6093 for (RenderObject* genChild = firstLetter->firstChild(); genChild; genChild
= genChild->nextSibling()) { | 6092 for (RenderObject* genChild = firstLetter->firstChild(); genChild; genChild
= genChild->nextSibling()) { |
| 6094 if (genChild->isText()) | 6093 if (genChild->isText()) |
| 6095 genChild->setStyle(firstLetter->style()); | 6094 genChild->setStyle(pseudoStyle); |
| 6096 } | 6095 } |
| 6097 } | 6096 } |
| 6098 | 6097 |
| 6099 void RenderBlock::createFirstLetterRenderer(RenderObject* firstLetterBlock, Rend
erObject* currentChild) | 6098 void RenderBlock::createFirstLetterRenderer(RenderObject* firstLetterBlock, Rend
erObject* currentChild) |
| 6100 { | 6099 { |
| 6101 RenderObject* firstLetterContainer = currentChild->parent(); | 6100 RenderObject* firstLetterContainer = currentChild->parent(); |
| 6102 RenderStyle* pseudoStyle = styleForFirstLetter(firstLetterBlock, firstLetter
Container); | 6101 RenderStyle* pseudoStyle = styleForFirstLetter(firstLetterBlock, firstLetter
Container); |
| 6103 RenderObject* firstLetter = 0; | 6102 RenderObject* firstLetter = 0; |
| 6104 if (pseudoStyle->display() == INLINE) | 6103 if (pseudoStyle->display() == INLINE) |
| 6105 firstLetter = new (renderArena()) RenderInline(document()); | 6104 firstLetter = new (renderArena()) RenderInline(document()); |
| 6106 else | 6105 else |
| 6107 firstLetter = new (renderArena()) RenderBlock(document()); | 6106 firstLetter = new (renderArena()) RenderBlock(document()); |
| 6108 | 6107 firstLetter->setStyle(pseudoStyle); |
| 6109 RefPtr<RenderStyle> temporaryStyle = RenderStyle::create(); | |
| 6110 temporaryStyle->inheritFrom(firstLetterBlock->style()); | |
| 6111 firstLetter->setStyle(temporaryStyle); | |
| 6112 firstLetterContainer->addChild(firstLetter, currentChild); | 6108 firstLetterContainer->addChild(firstLetter, currentChild); |
| 6113 | |
| 6114 firstLetter->setAnimatableStyle(pseudoStyle); | |
| 6115 | 6109 |
| 6116 RenderText* textObj = toRenderText(currentChild); | 6110 RenderText* textObj = toRenderText(currentChild); |
| 6117 | 6111 |
| 6118 // The original string is going to be either a generated content string or a
DOM node's | 6112 // The original string is going to be either a generated content string or a
DOM node's |
| 6119 // string. We want the original string before it got transformed in case fi
rst-letter has | 6113 // string. We want the original string before it got transformed in case fi
rst-letter has |
| 6120 // no text-transform or a different text-transform applied to it. | 6114 // no text-transform or a different text-transform applied to it. |
| 6121 RefPtr<StringImpl> oldText = textObj->originalText(); | 6115 RefPtr<StringImpl> oldText = textObj->originalText(); |
| 6122 ASSERT(oldText); | 6116 ASSERT(oldText); |
| 6123 | 6117 |
| 6124 if (oldText && oldText->length() > 0) { | 6118 if (oldText && oldText->length() > 0) { |
| (...skipping 27 matching lines...) Expand all Loading... |
| 6152 remainingText->node()->setRenderer(remainingText); | 6146 remainingText->node()->setRenderer(remainingText); |
| 6153 | 6147 |
| 6154 firstLetterContainer->addChild(remainingText, textObj); | 6148 firstLetterContainer->addChild(remainingText, textObj); |
| 6155 firstLetterContainer->removeChild(textObj); | 6149 firstLetterContainer->removeChild(textObj); |
| 6156 remainingText->setFirstLetter(firstLetter); | 6150 remainingText->setFirstLetter(firstLetter); |
| 6157 toRenderBoxModelObject(firstLetter)->setFirstLetterRemainingText(remaini
ngText); | 6151 toRenderBoxModelObject(firstLetter)->setFirstLetterRemainingText(remaini
ngText); |
| 6158 | 6152 |
| 6159 // construct text fragment for the first letter | 6153 // construct text fragment for the first letter |
| 6160 RenderTextFragment* letter = | 6154 RenderTextFragment* letter = |
| 6161 new (renderArena()) RenderTextFragment(remainingText->node() ? remai
ningText->node() : remainingText->document(), oldText.get(), 0, length); | 6155 new (renderArena()) RenderTextFragment(remainingText->node() ? remai
ningText->node() : remainingText->document(), oldText.get(), 0, length); |
| 6162 letter->setStyle(firstLetter->style()); | 6156 letter->setStyle(pseudoStyle); |
| 6163 firstLetter->addChild(letter); | 6157 firstLetter->addChild(letter); |
| 6164 | 6158 |
| 6165 textObj->destroy(); | 6159 textObj->destroy(); |
| 6166 } | 6160 } |
| 6167 } | 6161 } |
| 6168 | 6162 |
| 6169 void RenderBlock::updateFirstLetter() | 6163 void RenderBlock::updateFirstLetter() |
| 6170 { | 6164 { |
| 6171 if (!document()->usesFirstLetterRules()) | 6165 if (!document()->usesFirstLetterRules()) |
| 6172 return; | 6166 return; |
| (...skipping 1097 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 7270 } | 7264 } |
| 7271 | 7265 |
| 7272 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) | 7266 String ValueToString<RenderBlock::FloatingObject*>::string(const RenderBlock::Fl
oatingObject* floatingObject) |
| 7273 { | 7267 { |
| 7274 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr
ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating
Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped
MaxY()); | 7268 return String::format("%p (%dx%d %dx%d)", floatingObject, floatingObject->fr
ameRect().pixelSnappedX(), floatingObject->frameRect().pixelSnappedY(), floating
Object->frameRect().pixelSnappedMaxX(), floatingObject->frameRect().pixelSnapped
MaxY()); |
| 7275 } | 7269 } |
| 7276 | 7270 |
| 7277 #endif | 7271 #endif |
| 7278 | 7272 |
| 7279 } // namespace WebCore | 7273 } // namespace WebCore |
| OLD | NEW |