summaryrefslogtreecommitdiffstats
path: root/Source/WebKit/android/nav/SelectText.h
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2011-05-13 16:40:46 +0100
committerBen Murdoch <benm@google.com>2011-05-16 11:35:03 +0100
commita2c606d1d8312a5d063e4a11e5911d9c8e4a3d19 (patch)
tree614d69ba96a23bc057e539a3c8a7d4961a68254b /Source/WebKit/android/nav/SelectText.h
parent65f03d4f644ce73618e5f4f50dd694b26f55ae12 (diff)
downloadexternal_webkit-a2c606d1d8312a5d063e4a11e5911d9c8e4a3d19.zip
external_webkit-a2c606d1d8312a5d063e4a11e5911d9c8e4a3d19.tar.gz
external_webkit-a2c606d1d8312a5d063e4a11e5911d9c8e4a3d19.tar.bz2
Merge WebKit at r75993: Move WebKit/android files to Source
Change-Id: Ifa871f8320bdb3a09fe189fffecc23f702c394b9
Diffstat (limited to 'Source/WebKit/android/nav/SelectText.h')
-rw-r--r--Source/WebKit/android/nav/SelectText.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/Source/WebKit/android/nav/SelectText.h b/Source/WebKit/android/nav/SelectText.h
new file mode 100644
index 0000000..42239cf
--- /dev/null
+++ b/Source/WebKit/android/nav/SelectText.h
@@ -0,0 +1,116 @@
+/*
+ * Copyright 2008, The Android Open Source Project
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef SELECT_TEXT_H
+#define SELECT_TEXT_H
+
+#include "DrawExtra.h"
+#include "IntPoint.h"
+#include "IntRect.h"
+#include "PlatformString.h"
+#include "SkPath.h"
+#include "SkPicture.h"
+#include "SkRect.h"
+#include "SkRegion.h"
+
+namespace android {
+
+class CachedRoot;
+
+class SelectText : public DrawExtra {
+public:
+ SelectText();
+ virtual ~SelectText();
+ virtual void draw(SkCanvas* , LayerAndroid* , IntRect* );
+ void extendSelection(const IntRect& vis, int x, int y);
+ const String getSelection();
+ bool hitSelection(int x, int y) const;
+ void moveSelection(const IntRect& vis, int x, int y);
+ void reset();
+ IntPoint selectableText(const CachedRoot* );
+ void selectAll();
+ int selectionX() const;
+ int selectionY() const;
+ void setDrawPointer(bool drawPointer) { m_drawPointer = drawPointer; }
+ void setExtendSelection(bool extend) { m_extendSelection = extend; }
+ bool startSelection(const CachedRoot* , const IntRect& vis, int x, int y);
+ bool wordSelection(const CachedRoot* , const IntRect& vis, int x, int y);
+public:
+ float m_inverseScale; // inverse scale, x, y used for drawing select path
+ int m_selectX;
+ int m_selectY;
+private:
+ class FirstCheck;
+ class EdgeCheck;
+ void drawSelectionPointer(SkCanvas* , IntRect* );
+ void drawSelectionRegion(SkCanvas* , IntRect* );
+ SkIRect findClosest(FirstCheck& , const SkPicture& , int* base);
+ SkIRect findEdge(const SkPicture& , const SkIRect& area,
+ int x, int y, bool left, int* base);
+ SkIRect findLeft(const SkPicture& picture, const SkIRect& area,
+ int x, int y, int* base);
+ SkIRect findRight(const SkPicture& picture, const SkIRect& area,
+ int x, int y, int* base);
+ static void getSelectionArrow(SkPath* );
+ void getSelectionCaret(SkPath* );
+ bool hitCorner(int cx, int cy, int x, int y) const;
+ void setVisibleRect(const IntRect& );
+ void swapAsNeeded();
+ SkIPoint m_original; // computed start of extend selection
+ SkIPoint m_startOffset; // difference from global to layer
+ SkIRect m_selStart;
+ SkIRect m_selEnd;
+ SkIRect m_lastStart;
+ SkIRect m_lastEnd;
+ SkIRect m_lastDrawnStart;
+ SkIRect m_lastDrawnEnd;
+ SkIRect m_wordBounds;
+ int m_startBase;
+ int m_endBase;
+ int m_layerId;
+ SkIRect m_visibleRect; // constrains picture computations to visible area
+ SkRegion m_lastSelRegion;
+ SkRegion m_selRegion; // computed from sel start, end
+ SkPicture m_startControl;
+ SkPicture m_endControl;
+ const SkPicture* m_picture;
+ bool m_drawPointer;
+ bool m_extendSelection; // false when trackball is moving pointer
+ bool m_flipped;
+ bool m_hitTopLeft;
+ bool m_startSelection;
+ bool m_wordSelection;
+ bool m_outsideWord;
+};
+
+}
+
+namespace WebCore {
+
+void ReverseBidi(UChar* chars, int len);
+
+}
+
+#endif