diff options
Diffstat (limited to 'views/ime/ime_context.h')
-rw-r--r-- | views/ime/ime_context.h | 240 |
1 files changed, 0 insertions, 240 deletions
diff --git a/views/ime/ime_context.h b/views/ime/ime_context.h deleted file mode 100644 index 7261b4e..0000000 --- a/views/ime/ime_context.h +++ /dev/null @@ -1,240 +0,0 @@ -// Copyright (c) 2011 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 VIEWS_IME_IME_CONTEXT_H_ -#define VIEWS_IME_IME_CONTEXT_H_ -#pragma once - -#include <vector> - -#include "base/basictypes.h" -#include "base/string16.h" -#include "third_party/skia/include/core/SkColor.h" - -namespace gfx { -class Rect; -} - -namespace views { - -class IMEContext; -class KeyEvent; -class View; - -// Duplicate WebKit::WebCompositionUnderline -struct CompositionUnderline { - CompositionUnderline() - : start_offset(0), - end_offset(0), - color(0), - thick(false) {} - - CompositionUnderline(uint32 s, uint32 e, SkColor c, bool t) - : start_offset(s), - end_offset(e), - color(c), - thick(t) {} - - uint32 start_offset; - uint32 end_offset; - SkColor color; - bool thick; -}; - -// WebKit only supports underline attribue for composition, so we use -// CompositionUnderline as CompositionAttribute right now. -typedef struct CompositionUnderline CompositionAttribute; -typedef std::vector<CompositionAttribute> CompositionAttributeList; - -// TODO(penghuang) more attributes (background, foreground color and etc) -// class CompositionAttribute { -// public: -// enum CompositionAttributeType{ -// CAT_UNDERLINE = 1, -// CAT_FORGROUND = 2, -// CAT_BACKGRUND = 3, -// }; -// -// CompositionAttributeType GetType() const { return type_; } -// unsigned GetStartOffset() const { return start_offset_; } -// unsigned GetEndOffset() const { return end_offset_; } -// unsigned GetValue() const { return value_; } -// -// private: -// CompositionAttributeType type_; -// unsigned start_offset_; -// unsigned end_offset_; -// unsigned value_; -// }; - -// CommitTextListener is notified when a text is commited from the context. -class CommitTextListener { - public: - virtual void OnCommitText(IMEContext* sender, - const string16& text) = 0; - - protected: - virtual ~CommitTextListener() {} -}; - -// CompositionListener is notified when composition of the context is changed. -class CompositionListener { - public: - virtual void OnStartComposition(IMEContext* sender) = 0; - virtual void OnEndComposition(IMEContext* sender) = 0; - virtual void OnSetComposition(IMEContext* sender, - const string16& text, - const CompositionAttributeList& attributes, - uint32 cursor_pos) = 0; - - protected: - virtual ~CompositionListener() {} -}; - -// CompositionListener is notified when a key event is forwarded from -// the context. -class ForwardKeyEventListener { - public: - virtual void OnForwardKeyEvent(IMEContext* sender, - const KeyEvent& event) = 0; - - protected: - virtual ~ForwardKeyEventListener() {} -}; - -// SurroundingListener is notified when an input method context needs to -// manipulate the text surround the input cursor. If associated view supports -// surrounding, it should set the listener to input method context. Some input -// methods generate different result depends on the chars before or after the -// input cursor. -// -// For example: -// Some Korean input method: -// Key events Unicode char -// 1 'C' +U314a -// 2 'K' +U314f -// 3 'C' 'K' +Ucc28 -// -// In case 2 and 3, when users press 'K', the input method will check the char -// before input cursor. If the char is +U314a, it will remove the char and -// insert a new char +Ucc28. If no char before input cursor, it will insert char -// +U314f. -// -// See also OnSetSurroundingActive() and OnDeleteSurrounding(). -class SurroundingListener { - public: - // Activate or inactivate surrounding support. When surrounding is activated, - // The assoicated view should call SetSurrounding() to notify any changes of - // text surround the input cursor. - // Return true if associated view can support surrounding. - virtual bool OnSetSurroundingActive(IMEContext* sender, - bool activate) = 0; - - // Delete a picse of text surround the input cursor. - // Return true if associated view delete the surrounding text successfully. - virtual bool OnDeleteSurrounding(IMEContext* sender, - int offset, - int chars) = 0; - protected: - virtual ~SurroundingListener() {} -}; - -class IMEContext { - public: - virtual ~IMEContext() {} - - // Set associated view. - void set_view(View* view) { view_ = view; } - - // Get associated view. - const View* view() const { return view_; } - - // Set a listener to receive a callback when im context commits a text. - void set_commit_text_listener(CommitTextListener* listener) { - commit_text_listener_ = listener; - } - - // Set a listener to receive a callback when im context changes composition. - void set_composition_listener(CompositionListener* listener) { - composition_listener_ = listener; - } - - // Set a listener to receive a callback when im context forwards a key event. - void set_forward_key_event_listener(ForwardKeyEventListener* listener) { - forward_key_event_listener_ = listener; - } - - // Set a listener to receive a callback when im context need operater - // surrounding. - void set_surrounding_listener(SurroundingListener* listener) { - surrounding_listener_ = listener; - } - - // Tell the context it got/lost focus. - virtual void Focus() = 0; - virtual void Blur() = 0; - - // Reset context, context will be reset to initial state. - virtual void Reset() = 0; - - // Filter key event, returns true, if the key event is handled, - // associated widget should ignore it. - virtual bool FilterKeyEvent(const views::KeyEvent& event) = 0; - - // Set text input cursor location on screen. - virtual void SetCursorLocation(const gfx::Rect& caret_rect) = 0; - - // Set surrounding context. - virtual void SetSurrounding(const string16& text, - int cursor_pos) = 0; - - // Create an im context. - static IMEContext* Create(View* view); - - protected: - explicit IMEContext(View* view); - - // Commit text. - void CommitText(const string16& text); - - // Start compostion. - void StartComposition(); - - // End composition. - void EndComposition(); - - // Set composition. - void SetComposition(const string16& text, - const CompositionAttributeList& attributes, - uint32 cursor_pos); - - // Forward key event. - void ForwardKeyEvent(const KeyEvent& event); - - // Notify the associated view whether or not the input context needs - // surrounding. When surrounding is activated, associated view should - // call SetSurrounding() to update any changes of text arround the input - // cursor. - // Return true if associated view can support surrounding. - bool SetSurroundingActive(bool activate); - - // Delete surrouding arround cursor. Return true, if it is handled. - bool DeleteSurrounding(int offset, int nchars); - - private: - // Client view. - View* view_; - - // Listeners: - CommitTextListener* commit_text_listener_; - CompositionListener* composition_listener_; - ForwardKeyEventListener* forward_key_event_listener_; - SurroundingListener* surrounding_listener_; - - DISALLOW_COPY_AND_ASSIGN(IMEContext); -}; - -} // namespace views - -#endif // VIEWS_IME_IM_CONTEXT_H_ |