WebSurroundingText.cpp [plain text]
#include "config.h"
#include "WebSurroundingText.h"
#include "Element.h"
#include "Node.h"
#include "Range.h"
#include "RenderObject.h"
#include "SurroundingText.h"
#include "Text.h"
#include "VisiblePosition.h"
#include "WebHitTestResult.h"
#include "platform/WebPoint.h"
using namespace WebCore;
namespace WebKit {
void WebSurroundingText::initialize(const WebHitTestResult& hitTestInfo, size_t maxLength)
{
Node* node = hitTestInfo.node().unwrap<Node>();
if (!node || !node->renderer())
return;
VisiblePosition visiblePosition(node->renderer()->positionForPoint(static_cast<IntPoint>(hitTestInfo.localPoint())));
if (visiblePosition.isNull())
return;
m_private.reset(new SurroundingText(visiblePosition, maxLength));
}
void WebSurroundingText::initialize(WebNode textNode, size_t offset, size_t maxLength)
{
Node* node = textNode.unwrap<Node>();
if (!node || !node->isTextNode() || offset >= node->nodeValue().length())
return;
m_private.reset(new SurroundingText(VisiblePosition(Position(toText(node), offset).parentAnchoredEquivalent(), DOWNSTREAM), maxLength));
}
WebString WebSurroundingText::textContent() const
{
return m_private->content();
}
size_t WebSurroundingText::hitOffsetInTextContent() const
{
return m_private->positionOffsetInContent();
}
WebRange WebSurroundingText::rangeFromContentOffsets(size_t startOffsetInContent, size_t endOffsetInContent)
{
return m_private->rangeFromContentOffsets(startOffsetInContent, endOffsetInContent);
}
bool WebSurroundingText::isNull() const
{
return !m_private.get();
}
void WebSurroundingText::reset()
{
m_private.reset(0);
}
}