diff options
Diffstat (limited to 'Source/WebCore/dom/DocumentMarkerController.h')
-rw-r--r-- | Source/WebCore/dom/DocumentMarkerController.h | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/Source/WebCore/dom/DocumentMarkerController.h b/Source/WebCore/dom/DocumentMarkerController.h index 76946478b..2c2cd377a 100644 --- a/Source/WebCore/dom/DocumentMarkerController.h +++ b/Source/WebCore/dom/DocumentMarkerController.h @@ -24,16 +24,17 @@ * */ -#ifndef DocumentMarkerController_h -#define DocumentMarkerController_h +#pragma once #include "DocumentMarker.h" #include "IntRect.h" +#include <memory> #include <wtf/HashMap.h> #include <wtf/Vector.h> namespace WebCore { +class Document; class LayoutPoint; class LayoutRect; class Node; @@ -44,17 +45,17 @@ class DocumentMarkerController { WTF_MAKE_NONCOPYABLE(DocumentMarkerController); WTF_MAKE_FAST_ALLOCATED; public: - DocumentMarkerController(); + DocumentMarkerController(Document&); ~DocumentMarkerController(); void detach(); void addMarker(Range*, DocumentMarker::MarkerType); void addMarker(Range*, DocumentMarker::MarkerType, const String& description); void addMarkerToNode(Node*, unsigned startOffset, unsigned length, DocumentMarker::MarkerType); - void addMarkerToNode(Node*, unsigned startOffset, unsigned length, DocumentMarker::MarkerType, PassRefPtr<DocumentMarkerDetails>); - void addTextMatchMarker(const Range*, bool activeMatch); + void addMarkerToNode(Node*, unsigned startOffset, unsigned length, DocumentMarker::MarkerType, DocumentMarker::Data&&); + WEBCORE_EXPORT void addTextMatchMarker(const Range*, bool activeMatch); #if PLATFORM(IOS) - void addMarker(Range*, DocumentMarker::MarkerType, String description, const Vector<String>& interpretations, const RetainPtr<id>& metadata); + void addMarker(Range*, DocumentMarker::MarkerType, const String& description, const Vector<String>& interpretations, const RetainPtr<id>& metadata); void addDictationPhraseWithAlternativesMarker(Range*, const Vector<String>& interpretations); void addDictationResultMarker(Range*, const RetainPtr<id>& metadata); #endif @@ -74,21 +75,26 @@ public: void removeMarkers(Range*, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers(), RemovePartiallyOverlappingMarkerOrNot = DoNotRemovePartiallyOverlappingMarker); void removeMarkers(Node*, unsigned startOffset, int length, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers(), RemovePartiallyOverlappingMarkerOrNot = DoNotRemovePartiallyOverlappingMarker); - void removeMarkers(DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); + WEBCORE_EXPORT void removeMarkers(DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); void removeMarkers(Node*, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); void repaintMarkers(DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); - void invalidateRenderedRectsForMarkersInRect(const LayoutRect&); void shiftMarkers(Node*, unsigned startOffset, int delta); void setMarkersActive(Range*, bool); void setMarkersActive(Node*, unsigned startOffset, unsigned endOffset, bool); - DocumentMarker* markerContainingPoint(const LayoutPoint&, DocumentMarker::MarkerType); - Vector<DocumentMarker*> markersFor(Node*, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); - Vector<DocumentMarker*> markersInRange(Range*, DocumentMarker::MarkerTypes); - Vector<IntRect> renderedRectsForMarkers(DocumentMarker::MarkerType); + WEBCORE_EXPORT Vector<RenderedDocumentMarker*> markersFor(Node*, DocumentMarker::MarkerTypes = DocumentMarker::AllMarkers()); + WEBCORE_EXPORT Vector<RenderedDocumentMarker*> markersInRange(Range*, DocumentMarker::MarkerTypes); void clearDescriptionOnMarkersIntersectingRange(Range*, DocumentMarker::MarkerTypes); -#ifndef NDEBUG + WEBCORE_EXPORT void updateRectsForInvalidatedMarkersOfType(DocumentMarker::MarkerType); + + void invalidateRectsForAllMarkers(); + void invalidateRectsForMarkersInNode(Node&); + + DocumentMarker* markerContainingPoint(const LayoutPoint&, DocumentMarker::MarkerType); + WEBCORE_EXPORT Vector<FloatRect> renderedRectsForMarkers(DocumentMarker::MarkerType); + +#if ENABLE(TREE_DEBUGGING) void showMarkers() const; #endif @@ -96,19 +102,18 @@ private: void addMarker(Node*, const DocumentMarker&); typedef Vector<RenderedDocumentMarker> MarkerList; - typedef HashMap<RefPtr<Node>, OwnPtr<MarkerList>> MarkerMap; + typedef HashMap<RefPtr<Node>, std::unique_ptr<MarkerList>> MarkerMap; bool possiblyHasMarkers(DocumentMarker::MarkerTypes); void removeMarkersFromList(MarkerMap::iterator, DocumentMarker::MarkerTypes); MarkerMap m_markers; // Provide a quick way to determine whether a particular marker type is absent without going through the map. - DocumentMarker::MarkerTypes m_possiblyExistingMarkerTypes; + DocumentMarker::MarkerTypes m_possiblyExistingMarkerTypes { 0 }; + Document& m_document; }; } // namespace WebCore -#ifndef NDEBUG +#if ENABLE(TREE_DEBUGGING) void showDocumentMarkers(const WebCore::DocumentMarkerController*); #endif - -#endif // DocumentMarkerController_h |