| // Copyright 2010-2015, Google Inc. |
| // All rights reserved. |
| // |
| // 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. |
| // * Neither the name of Google Inc. nor the names of its |
| // contributors may be used to endorse or promote products derived from |
| // this software without specific prior written permission. |
| // |
| // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| // "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. |
| |
| // Protocol messages of candidates to be used for mozc client/server |
| // communication and client/renderer communication. |
| |
| syntax = "proto2"; |
| |
| package mozc.commands; |
| |
| option java_outer_classname = "ProtoCandidates"; |
| option java_package = "org.mozc.android.inputmethod.japanese.protobuf"; |
| |
| // Annotation against a candidate. |
| message Annotation { |
| // Annotation prepended to the value. |
| optional string prefix = 1; |
| // Annotation appended to the value. |
| optional string suffix = 2; |
| // Type of the candidate such as [HALF][KATAKANA], [GREEK], |
| // [Black square], etc... |
| optional string description = 3; |
| // Shortcut key to select this candidate. |
| optional string shortcut = 4; |
| // Set to true if this candidate can be deleted from history. |
| optional bool deletable = 5 [default = false]; |
| }; |
| |
| // Additional information to a candidate word. This message is |
| // used for describing a word usage for instance. |
| message Information { |
| // Unique number specifying the information. |
| optional int32 id = 1; |
| |
| // Title string of the information. For usage, this value is |
| // probably equal to Candidate::value or its canonicalized value. |
| optional string title = 2; |
| |
| // The content of the information. For usage, this value actually |
| // describes how to use the word. |
| optional string description = 3; |
| |
| // The IDs of candidates which connect with the information. |
| repeated int32 candidate_id = 4; |
| }; |
| |
| // Category describes the attribute of the words. |
| enum Category { |
| CONVERSION = 0; |
| PREDICTION = 1; |
| SUGGESTION = 2; |
| TRANSLITERATION = 3; |
| USAGE = 4; |
| }; |
| |
| // DisplayType is a hint to UI renderers describing how the words are |
| // displayed. |
| enum DisplayType { |
| MAIN = 0; |
| CASCADE = 1; |
| }; |
| |
| // TODO(nona): merge to RendererCommand::Rectangle |
| message Rectangle { |
| required int32 x = 1; |
| required int32 y = 2; |
| required int32 width = 3; |
| required int32 height = 4; |
| } |
| |
| message InformationList { |
| optional uint32 focused_index = 1; |
| repeated Information information = 2; |
| // Category of the infolist. |
| optional Category category = 3 [default = CONVERSION]; |
| |
| // Information to be used for rendering. |
| optional DisplayType display_type = 4 [default = CASCADE]; |
| |
| // How long rendere needs to wait before the infolist is displayed. |
| // the default setting is 500 msec. |
| optional uint32 delay = 5 [ default = 500 ]; |
| }; |
| |
| // Message representing the footer part of the candidate window. |
| message Footer { |
| // Message shown like a status bar. |
| optional string label = 1; |
| // Whether index (e.g. 10/120) is visible or not. |
| optional bool index_visible = 2 [default = false]; |
| // Whether the logo image is visible or not. |
| optional bool logo_visible = 3 [default = false]; |
| // Message modestly shown. It is used for displaying the version on |
| // dev-channel now. |
| optional string sub_label = 4; |
| }; |
| |
| message CandidateWord { |
| // Unique number specifing the candidate. This may be a negative value. |
| optional int32 id = 1; |
| // The first index should be zero and index numbers should increase by one. |
| optional uint32 index = 2; |
| // Reading of the value. The value is only used when the key is |
| // different from the input composition (e.g. suggestion/prediction). |
| optional string key = 3; |
| // Converted value. (e.g. Kanji value). |
| optional string value = 4; |
| optional Annotation annotation = 5; |
| }; |
| |
| message CandidateList { |
| // This value represents the focused position of the next |
| // |candidates|. If the |candidates| is a part of the whole |
| // candidate words (as a result of paging), this value indicates the |
| // position from the beginning of that part. (ex. where |
| // |candidates| contatins 10th to 18th candidates, focused_index=0 |
| // means the 10th candidate, but not 1st candidate. |
| // |
| // The existense of |focused_index| does not represents whether this |
| // candidate list is a 'suggestion' or not. |category| represents |
| // it. |
| optional uint32 focused_index = 1; |
| repeated CandidateWord candidates = 2; |
| // Category of the candidates. |
| optional Category category = 3 [default = CONVERSION]; |
| }; |
| |
| // TODO(komatsu) rename it to CandidateWindow. |
| message Candidates { |
| // TODO(komatsu): Use CandidateList. |
| // When has_focused_index() is true, this message contains predicted and |
| // normally converted candidates. Otherwise, when the field is not set, |
| // this message contains a 'suggestion'. |
| optional uint32 focused_index = 1; |
| |
| // The size of the total candidates in this candidate list. The |
| // value does not include the size of subcandidate lists. Note, the |
| // next repeated-Candidate=3 may not contain all candidates. |
| // all_candidates contains the values of subcandidate lists. |
| required uint32 size = 2; |
| |
| // TODO(komatsu): Use CandidateList. |
| repeated group Candidate = 3 { |
| // The first index should be zero and index numbers should increase by one. |
| required uint32 index = 4; |
| required string value = 5; |
| optional int32 id = 9; // Unique number specifing the candidate. |
| optional Annotation annotation = 7; |
| optional int32 information_id = 10; |
| }; |
| // The position on the composition in character counted by Util::CharsLen. |
| // The number represents the left edge of the candidate window. For example, |
| // if the composition is "あいう" and the cursor is the position is between |
| // "あ" and "い" (e.g. "あ|いう"), the number should be 1. |
| // Note, Util::CharsLen does not take care of IVS or combining character |
| // so much. Thus CharsLen's behavoir on those characters might be changed. |
| required uint32 position = 6; |
| |
| // Nested candidates aka cascading window. |
| optional Candidates subcandidates = 8; |
| |
| // Usages of candidates. |
| optional InformationList usages = 10; |
| |
| // TODO(komatsu): Use CandidateList. |
| // Category of the candidates |
| optional Category category = 11 [default = CONVERSION]; |
| |
| // Information to be used for rendering. |
| optional DisplayType display_type = 12 [default = MAIN]; |
| |
| // Footer of the GUI window. |
| optional Footer footer = 13; |
| |
| // The direction of candidates in the window. This is just a |
| // suggestion from the server and client does not have to follow. |
| enum Direction { |
| VERTICAL = 0; |
| HORIZONTAL = 1; |
| }; |
| optional Direction direction = 14 [ default = VERTICAL ]; |
| |
| // This position is used for suggest window position. |
| optional Rectangle composition_rectangle = 15; |
| optional Rectangle caret_rectangle = 16; |
| |
| enum CandidateWindowLocation{ |
| // Shows candidate window under the caret. This is used for prediction and |
| // conversion |
| CARET = 0; |
| // Shows candidate window aligned with composition area. This is used for |
| // suggestion. |
| COMPOSITION = 1; |
| } |
| optional CandidateWindowLocation window_location = 17; |
| |
| // The number of candidates per page. |
| optional uint32 page_size = 18 [ default = 9 ]; |
| }; |