1/*
2 * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26#ifndef AWT_INPUTTEXTINFOR_H
27#define AWT_INPUTTEXTINFOR_H
28
29/***************************************************************
30 * AwtInputTextInfor
31 *
32 * A class encapsulating the composition string and result string
33 * used in windows input method implementation.
34 *
35 */
36#include <windows.h>
37#include <imm.h>
38#include <jni.h>
39
40class AwtInputTextInfor {
41 public:
42    /* Default constructor provided just for the clients who
43       want to use the SendInputMethodEvent service.
44    */
45    AwtInputTextInfor();
46
47    int GetContextData(HIMC hIMC, const LPARAM flags);
48
49    int GetCursorPosition() const;
50
51    int GetCommittedTextLength() const;
52
53    jstring GetText() const { return m_jtext; }
54
55    int GetClauseInfor(int*& lpBndClauseW, jstring*& lpReadingClauseW);
56    int GetAttributeInfor(int*& lpBndAttrW, BYTE*& lpValAttrW);
57
58    ~AwtInputTextInfor();
59 private:
60    /* helper function to return a java string.*/
61    static jstring MakeJavaString(JNIEnv* env, LPWSTR lpStrW, int cStrW);
62
63
64    LPARAM m_flags;            /* The message LPARAM. */
65    int m_cursorPosW;          /* the current cursor position of composition string */
66    jstring m_jtext;           /* Composing string/result string or merged one */
67    AwtInputTextInfor* m_pResultTextInfor; /* pointer to result string */
68
69    int m_cStrW;            /* size of the current composition/result string */
70    int m_cReadStrW;        /* size of the reading string */
71    int m_cClauseW;         /* size of the clause */
72    int m_cReadClauseW;     /* size of the read clause */
73    int m_cAttrW;           /* size of the attribute (composition only) */
74
75    LPWSTR  m_lpStrW;       /* pointer to the current composition/result string */
76    LPWSTR  m_lpReadStrW;   /* pointer to the reading string */
77    LPDWORD m_lpClauseW;    /* pointer to the clause information */
78    LPDWORD m_lpReadClauseW;/* pointer to the reading clause information */
79    LPBYTE  m_lpAttrW;      /* pointer to the attribute information (composition only) */
80
81    /* GCS_XXX index for result string */
82    static const DWORD GCS_INDEX[9];
83};
84
85#endif // AWT_INPUTTEXTINFOR_H
86