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

Side by Side Diff: Source/core/svg/SVGDocumentExtensions.h

Issue 1296353004: Store SVGResourcesCache inline in SVGDocumentExtensions (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 4 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | Source/core/svg/SVGDocumentExtensions.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006 Apple Inc. All rights reserved. 2 * Copyright (C) 2006 Apple Inc. All rights reserved.
3 * Copyright (C) 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org> 3 * Copyright (C) 2006, 2008 Nikolas Zimmermann <zimmermann@kde.org>
4 * 4 *
5 * This library is free software; you can redistribute it and/or 5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public 6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either 7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version. 8 * version 2 of the License, or (at your option) any later version.
9 * 9 *
10 * This library is distributed in the hope that it will be useful, 10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details. 13 * Library General Public License for more details.
14 * 14 *
15 * You should have received a copy of the GNU Library General Public License 15 * You should have received a copy of the GNU Library General Public License
16 * along with this library; see the file COPYING.LIB. If not, write to 16 * along with this library; see the file COPYING.LIB. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA. 18 * Boston, MA 02110-1301, USA.
19 */ 19 */
20 20
21 #ifndef SVGDocumentExtensions_h 21 #ifndef SVGDocumentExtensions_h
22 #define SVGDocumentExtensions_h 22 #define SVGDocumentExtensions_h
23 23
24 #include "core/layout/svg/SVGResourcesCache.h"
24 #include "platform/geometry/FloatPoint.h" 25 #include "platform/geometry/FloatPoint.h"
25 #include "platform/heap/Handle.h" 26 #include "platform/heap/Handle.h"
26 #include "wtf/Forward.h" 27 #include "wtf/Forward.h"
27 #include "wtf/HashMap.h" 28 #include "wtf/HashMap.h"
28 #include "wtf/HashSet.h" 29 #include "wtf/HashSet.h"
29 #include "wtf/text/AtomicStringHash.h" 30 #include "wtf/text/AtomicStringHash.h"
30 31
31 namespace blink { 32 namespace blink {
32 33
33 class Document; 34 class Document;
34 class LayoutSVGResourceContainer; 35 class LayoutSVGResourceContainer;
35 class SubtreeLayoutScope; 36 class SubtreeLayoutScope;
36 class SVGResourcesCache;
37 class SVGSVGElement; 37 class SVGSVGElement;
38 class Element; 38 class Element;
39 39
40 class SVGDocumentExtensions : public NoBaseWillBeGarbageCollectedFinalized<SVGDo cumentExtensions> { 40 class SVGDocumentExtensions : public NoBaseWillBeGarbageCollectedFinalized<SVGDo cumentExtensions> {
41 WTF_MAKE_NONCOPYABLE(SVGDocumentExtensions); WTF_MAKE_FAST_ALLOCATED_WILL_BE _REMOVED(SVGDocumentExtensions); 41 WTF_MAKE_NONCOPYABLE(SVGDocumentExtensions); WTF_MAKE_FAST_ALLOCATED_WILL_BE _REMOVED(SVGDocumentExtensions);
42 public: 42 public:
43 typedef WillBeHeapHashSet<RawPtrWillBeMember<Element>> SVGPendingElements; 43 typedef WillBeHeapHashSet<RawPtrWillBeMember<Element>> SVGPendingElements;
44 explicit SVGDocumentExtensions(Document*); 44 explicit SVGDocumentExtensions(Document*);
45 ~SVGDocumentExtensions(); 45 ~SVGDocumentExtensions();
46 46
47 void addTimeContainer(SVGSVGElement*); 47 void addTimeContainer(SVGSVGElement*);
48 void removeTimeContainer(SVGSVGElement*); 48 void removeTimeContainer(SVGSVGElement*);
49 49
50 void addResource(const AtomicString& id, LayoutSVGResourceContainer*); 50 void addResource(const AtomicString& id, LayoutSVGResourceContainer*);
51 void removeResource(const AtomicString& id); 51 void removeResource(const AtomicString& id);
52 LayoutSVGResourceContainer* resourceById(const AtomicString& id) const; 52 LayoutSVGResourceContainer* resourceById(const AtomicString& id) const;
53 53
54 static void serviceOnAnimationFrame(Document&, double monotonicAnimationStar tTime); 54 static void serviceOnAnimationFrame(Document&, double monotonicAnimationStar tTime);
55 55
56 void startAnimations(); 56 void startAnimations();
57 void pauseAnimations(); 57 void pauseAnimations();
58 void dispatchSVGLoadEventToOutermostSVGElements(); 58 void dispatchSVGLoadEventToOutermostSVGElements();
59 59
60 void reportWarning(const String&); 60 void reportWarning(const String&);
61 void reportError(const String&); 61 void reportError(const String&);
62 62
63 SVGResourcesCache& resourcesCache() const { return *m_resourcesCache; } 63 SVGResourcesCache& resourcesCache() { return m_resourcesCache; }
64 64
65 void addSVGRootWithRelativeLengthDescendents(SVGSVGElement*); 65 void addSVGRootWithRelativeLengthDescendents(SVGSVGElement*);
66 void removeSVGRootWithRelativeLengthDescendents(SVGSVGElement*); 66 void removeSVGRootWithRelativeLengthDescendents(SVGSVGElement*);
67 bool isSVGRootWithRelativeLengthDescendents(SVGSVGElement*) const; 67 bool isSVGRootWithRelativeLengthDescendents(SVGSVGElement*) const;
68 void invalidateSVGRootsWithRelativeLengthDescendents(SubtreeLayoutScope*); 68 void invalidateSVGRootsWithRelativeLengthDescendents(SubtreeLayoutScope*);
69 69
70 bool zoomAndPanEnabled() const; 70 bool zoomAndPanEnabled() const;
71 71
72 void startPan(const FloatPoint& start); 72 void startPan(const FloatPoint& start);
73 void updatePan(const FloatPoint& pos) const; 73 void updatePan(const FloatPoint& pos) const;
74 74
75 static SVGSVGElement* rootElement(const Document&); 75 static SVGSVGElement* rootElement(const Document&);
76 SVGSVGElement* rootElement() const; 76 SVGSVGElement* rootElement() const;
77 77
78 DECLARE_TRACE(); 78 DECLARE_TRACE();
79 79
80 private: 80 private:
81 RawPtrWillBeMember<Document> m_document; 81 RawPtrWillBeMember<Document> m_document;
82 WillBeHeapHashSet<RawPtrWillBeMember<SVGSVGElement>> m_timeContainers; // Fo r SVG 1.2 support this will need to be made more general. 82 WillBeHeapHashSet<RawPtrWillBeMember<SVGSVGElement>> m_timeContainers; // Fo r SVG 1.2 support this will need to be made more general.
83 HashMap<AtomicString, LayoutSVGResourceContainer*> m_resources; 83 HashMap<AtomicString, LayoutSVGResourceContainer*> m_resources;
84 WillBeHeapHashMap<AtomicString, OwnPtrWillBeMember<SVGPendingElements>> m_pe ndingResources; // Resources that are pending. 84 WillBeHeapHashMap<AtomicString, OwnPtrWillBeMember<SVGPendingElements>> m_pe ndingResources; // Resources that are pending.
85 WillBeHeapHashMap<AtomicString, OwnPtrWillBeMember<SVGPendingElements>> m_pe ndingResourcesForRemoval; // Resources that are pending and scheduled for remova l. 85 WillBeHeapHashMap<AtomicString, OwnPtrWillBeMember<SVGPendingElements>> m_pe ndingResourcesForRemoval; // Resources that are pending and scheduled for remova l.
86 OwnPtr<SVGResourcesCache> m_resourcesCache; 86 SVGResourcesCache m_resourcesCache;
87 WillBeHeapHashSet<RawPtrWillBeMember<SVGSVGElement>> m_relativeLengthSVGRoot s; // Root SVG elements with relative length descendants. 87 WillBeHeapHashSet<RawPtrWillBeMember<SVGSVGElement>> m_relativeLengthSVGRoot s; // Root SVG elements with relative length descendants.
88 FloatPoint m_translate; 88 FloatPoint m_translate;
89 #if ENABLE(ASSERT) 89 #if ENABLE(ASSERT)
90 bool m_inRelativeLengthSVGRootsInvalidation; 90 bool m_inRelativeLengthSVGRootsInvalidation;
91 #endif 91 #endif
92 92
93 public: 93 public:
94 // This HashMap contains a list of pending resources. Pending resources, are such 94 // This HashMap contains a list of pending resources. Pending resources, are such
95 // which are referenced by any object in the SVG document, but do NOT exist yet. 95 // which are referenced by any object in the SVG document, but do NOT exist yet.
96 // For instance, dynamically build gradients / patterns / clippers... 96 // For instance, dynamically build gradients / patterns / clippers...
(...skipping 11 matching lines...) Expand all
108 void markPendingResourcesForRemoval(const AtomicString&); 108 void markPendingResourcesForRemoval(const AtomicString&);
109 Element* removeElementFromPendingResourcesForRemoval(const AtomicString&); 109 Element* removeElementFromPendingResourcesForRemoval(const AtomicString&);
110 110
111 private: 111 private:
112 PassOwnPtrWillBeRawPtr<SVGPendingElements> removePendingResourceForRemoval(c onst AtomicString&); 112 PassOwnPtrWillBeRawPtr<SVGPendingElements> removePendingResourceForRemoval(c onst AtomicString&);
113 }; 113 };
114 114
115 } 115 }
116 116
117 #endif 117 #endif
OLDNEW
« no previous file with comments | « no previous file | Source/core/svg/SVGDocumentExtensions.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698