Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(77)

Side by Side Diff: Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.h

Issue 10443073: Merge 117225 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1132/
Patch Set: Created 8 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) Research In Motion Limited 2010-2012. All rights reserved. 2 * Copyright (C) Research In Motion Limited 2010-2012. All rights reserved.
3 * 3 *
4 * This library is free software; you can redistribute it and/or 4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Library General Public 5 * modify it under the terms of the GNU Library General Public
6 * License as published by the Free Software Foundation; either 6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version. 7 * version 2 of the License, or (at your option) any later version.
8 * 8 *
9 * This library is distributed in the hope that it will be useful, 9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
(...skipping 25 matching lines...) Expand all
36 // It extracts the x/y/dx/dy/rotate values from the SVGTextPositioningElements i n the DOM. 36 // It extracts the x/y/dx/dy/rotate values from the SVGTextPositioningElements i n the DOM.
37 // These values are propagated to the corresponding RenderSVGInlineText renderer s. 37 // These values are propagated to the corresponding RenderSVGInlineText renderer s.
38 // The first layout phase only extracts the relevant information needed in Rende rBlockLineLayout 38 // The first layout phase only extracts the relevant information needed in Rende rBlockLineLayout
39 // to create the InlineBox tree based on text chunk boundaries & BiDi informatio n. 39 // to create the InlineBox tree based on text chunk boundaries & BiDi informatio n.
40 // The second layout phase is carried out by SVGTextLayoutEngine. 40 // The second layout phase is carried out by SVGTextLayoutEngine.
41 41
42 class SVGTextLayoutAttributesBuilder { 42 class SVGTextLayoutAttributesBuilder {
43 WTF_MAKE_NONCOPYABLE(SVGTextLayoutAttributesBuilder); 43 WTF_MAKE_NONCOPYABLE(SVGTextLayoutAttributesBuilder);
44 public: 44 public:
45 SVGTextLayoutAttributesBuilder(); 45 SVGTextLayoutAttributesBuilder();
46 void buildLayoutAttributesForWholeTree(RenderSVGText*); 46 bool buildLayoutAttributesForForSubtree(RenderSVGText*);
47 void buildLayoutAttributesForTextRenderer(RenderSVGInlineText*); 47 void buildLayoutAttributesForTextRenderer(RenderSVGInlineText*);
48 48
49 void rebuildMetricsForWholeTree(RenderSVGText*);
50 void rebuildMetricsForTextRenderer(RenderSVGInlineText*); 49 void rebuildMetricsForTextRenderer(RenderSVGInlineText*);
51 50
52 // Invoked whenever the underlying DOM tree changes, so that m_textPositions is rebuild. 51 // Invoked whenever the underlying DOM tree changes, so that m_textPositions is rebuild.
53 void clearTextPositioningElements() { m_textPositions.clear(); } 52 void clearTextPositioningElements() { m_textPositions.clear(); }
53 unsigned numberOfTextPositioningElements() const { return m_textPositions.si ze(); }
54 54
55 private: 55 private:
56 struct TextPosition { 56 struct TextPosition {
57 TextPosition(SVGTextPositioningElement* newElement = 0, unsigned newStar t = 0, unsigned newLength = 0) 57 TextPosition(SVGTextPositioningElement* newElement = 0, unsigned newStar t = 0, unsigned newLength = 0)
58 : element(newElement) 58 : element(newElement)
59 , start(newStart) 59 , start(newStart)
60 , length(newLength) 60 , length(newLength)
61 { 61 {
62 } 62 }
63 63
64 SVGTextPositioningElement* element; 64 SVGTextPositioningElement* element;
65 unsigned start; 65 unsigned start;
66 unsigned length; 66 unsigned length;
67 }; 67 };
68 68
69 bool buildLayoutAttributesIfNeeded(RenderSVGText*); 69 void buildCharacterDataMap(RenderSVGText*);
70 void collectTextPositioningElements(RenderObject*, const UChar*& lastCharact er); 70 void collectTextPositioningElements(RenderObject*, const UChar*& lastCharact er);
71 void buildLayoutAttributes(RenderSVGText*);
72 void fillCharacterDataMap(const TextPosition&); 71 void fillCharacterDataMap(const TextPosition&);
73 72
74 private: 73 private:
75 unsigned m_textLength; 74 unsigned m_textLength;
76 Vector<TextPosition> m_textPositions; 75 Vector<TextPosition> m_textPositions;
77 SVGCharacterDataMap m_characterDataMap; 76 SVGCharacterDataMap m_characterDataMap;
78 SVGTextMetricsBuilder m_metricsBuilder; 77 SVGTextMetricsBuilder m_metricsBuilder;
79 }; 78 };
80 79
81 } // namespace WebCore 80 } // namespace WebCore
82 81
83 #endif // ENABLE(SVG) 82 #endif // ENABLE(SVG)
84 #endif 83 #endif
OLDNEW
« no previous file with comments | « Source/WebCore/rendering/svg/SVGRootInlineBox.cpp ('k') | Source/WebCore/rendering/svg/SVGTextLayoutAttributesBuilder.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698