summaryrefslogtreecommitdiff
path: root/chromium/win8/metro_driver/ime/text_store_delegate.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/win8/metro_driver/ime/text_store_delegate.h')
-rw-r--r--chromium/win8/metro_driver/ime/text_store_delegate.h55
1 files changed, 55 insertions, 0 deletions
diff --git a/chromium/win8/metro_driver/ime/text_store_delegate.h b/chromium/win8/metro_driver/ime/text_store_delegate.h
new file mode 100644
index 00000000000..af065164714
--- /dev/null
+++ b/chromium/win8/metro_driver/ime/text_store_delegate.h
@@ -0,0 +1,55 @@
+// Copyright 2013 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef WIN8_METRO_DRIVER_IME_TEXT_STORE_DELEGATE_H_
+#define WIN8_METRO_DRIVER_IME_TEXT_STORE_DELEGATE_H_
+
+#include <vector>
+
+#include <windows.h>
+
+#include "base/basictypes.h"
+#include "base/strings/string16.h"
+
+namespace metro_viewer {
+struct UnderlineInfo;
+}
+
+namespace metro_driver {
+
+// A delegate which works together with virtual text stores.
+// Objects that implement this delegate will receive notifications from a
+// virtual text store whenever an IME updates the composition or commits text.
+// Objects that implement this delegate are also responsible for calculating
+// the character position of composition and caret position upon request.
+class TextStoreDelegate {
+ public:
+ virtual ~TextStoreDelegate() {}
+
+ // Called when on-going composition is updated. An empty |text| represents
+ // that the composition is canceled.
+ virtual void OnCompositionChanged(
+ const string16& text,
+ int32 selection_start,
+ int32 selection_end,
+ const std::vector<metro_viewer::UnderlineInfo>& underlines) = 0;
+
+ // Called when |text| is committed.
+ virtual void OnTextCommitted(const string16& text) = 0;
+
+ // Called when an IME requests the caret position. Objects that implement
+ // this method must return the caret position in screen coordinates.
+ virtual RECT GetCaretBounds() = 0;
+
+ // Called when an IME requests the bounding box of an character whose
+ // index is |index| in the on-going composition. position. Objects that
+ // implement this method must return true and fill the character bounds into
+ // |rect| in screen coordinates.
+ // Should return false if |index| is invalid.
+ virtual bool GetCompositionCharacterBounds(uint32 index, RECT* rect) = 0;
+};
+
+} // namespace metro_driver
+
+#endif // WIN8_METRO_DRIVER_IME_TEXT_STORE_DELEGATE_H_