// 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 to be used for mozc client/renderer communication.
//
// The RendererCommand message contains all the rendering informatioin
// sent from client to renderer.  The messages structure of
// RendererCommand and its child messages are here:

syntax = "proto2";

import "session/commands.proto";

package mozc.commands;

message RendererCommand {
  message Rectangle {
    optional int32 left   = 1;
    optional int32 top    = 2;
    optional int32 right  = 3;
    optional int32 bottom = 4;
  };
  message Point {
    optional int32 x = 1;
    optional int32 y = 2;
  };

  enum CommandType {
    NOOP = 0;      // No operation
    UPDATE = 1;    // Update the current window
    SHUTDOWN = 2;  // shutdown renderer
  };

  optional CommandType type = 1 [ default = NOOP ];

  // set visibility
  // if visible is false, the content of output
  // is basically ignored.
  optional bool visible = 2 [ default = false ];

  optional Output output = 3;

  // Preedit rectangle
  optional Rectangle preedit_rectangle = 4;

  // TODO(yukawa): make a common font format for all platforms.
  message WinLogFont {
    optional int32 height         = 1 [ default = 0 ];
    optional int32 width          = 2 [ default = 0 ];
    optional int32 escapement     = 3 [ default = 0 ];
    optional int32 orientation    = 4 [ default = 0 ];
    optional int32 weight         = 5 [ default = 0 ];   // FW_DONTCARE
    optional bool  italic         = 6 [ default = false ];
    optional bool  underline      = 7 [ default = false ];
    optional bool  strike_out     = 8 [ default = false ];
    optional int32 char_set       = 9 [ default = 1 ];   // DEFAULT_CHARSET
    optional int32 out_precision  = 10 [ default = 0 ];  // OUT_DEFAULT_PRECIS
    optional int32 clip_precision = 11 [ default = 0 ];  // CLIP_DEFAULT_PRECIS
    optional int32 quality        = 12 [ default = 0 ];  // DEFAULT_QUALITY
    optional int32 pitch_and_family = 13 [ default = 0 ];  // DEFAULT_PITCH
    optional string face_name = 14;  // should be within 32 TCHARs (w/ '\0')
  };

  // An equivalent to COMPOSITIONFORM in IMM32. (For Windows only)
  // TODO(yukawa): make a common composition form format for all platforms.
  message CompositionForm {
    // These constants correspond to CFS_* in Imm.h
    enum Style {
      DEFAULT = 0;          // CFS_DEFAULT
      RECT = 1;             // CFS_RECT
      POINT = 2;            // CFS_POINT
      FORCE_POSITION = 32;  // CFS_FORCE_POSITION
    };
    // Use |style_bits| instead because there are some applications which
    // specify a combination of style bits like CFS_RECT + CFS_POINT.
    optional Style DEPRECATED_style = 1;
    optional Point current_position = 2;
    optional Rectangle area = 3;
    optional uint32 style_bits = 4 [ default = 0 ];  // 0 means Style::DEFAULT
  };

  // An equivalent to CANDIDATEFORM in IMM32. (For Windows only)
  // TODO(yukawa): make a common candidate form format for all platforms.
  message CandidateForm {
    // These constants correspond to CFS_* in Imm.h
    enum Style {
      DEFAULT = 0;        // CFS_DEFAULT
      CANDIDATEPOS = 64;  // CFS_CANDIDATEPOS
      EXCLUDE = 128;      // CFS_EXCLUDE
    };
    // Use |style_bits| instead in case there is an applications which
    // specifies a combination of style bits.
    optional Style DEPRECATED_style = 1;
    optional Point current_position = 2;
    optional Rectangle area = 3;
    optional uint32 style_bits = 4 [ default = 0 ];  // 0 means Style::DEFAULT
  };

  // An equivalent to IMECHARPOSITION in IMM32. (For Windows only)
  // TODO(yukawa): make a common candidate form format for all platforms.
  message CharacterPosition {
    optional uint32 position = 1;
    optional Point top_left = 2;
    optional uint32 line_height = 3;
    optional Rectangle document_area = 4;
  }

  // This message is a subset of Win32 GUITHREADINFO. (For Windows only)
  // TODO(yukawa): make a common candidate form format for all platforms.
  message CaretInfo {
    optional bool blinking = 1 [ default = false ];
    optional Rectangle caret_rect = 2;
    optional uint32 target_window_handle = 3;
  }

  // Visual information about mode indicator.
  message IndicatorInfo {
    optional Status status = 1;
  };

  // Application information Mozc UI is attaching
  message ApplicationInfo {
    optional uint32 process_id = 1;
    optional uint32 thread_id = 2;
    // used in Windows:
    // WHND of the message-only window:
    optional uint32 receiver_handle = 3;
    // used in Windows:
    // HWND of the window where composition is displayed.
    optional uint32 target_window_handle = 4;
    // used in Windows:
    // Preffered font for composition string.
    optional WinLogFont composition_font = 5;

    // Represents IM Framework used in the client.
    // Currently only Windows IM frameworks are supported.
    enum InputFrameworkType {
      UNKNOWN_FRAMEWORK = 0;   // Default. For backward compatibility.
      TSF = 1;
      IMM32 = 2;
      IMKit = 3;
      IBus = 4;
    };
    // Specifies which IM Framework is used in the client.
    optional InputFrameworkType input_framework = 6
        [ default = UNKNOWN_FRAMEWORK ];

    // used in Windows:
    // Specifies where and how the renderer process shows the composition
    // window (if necessary).
    optional CompositionForm composition_form = 7;

    // used in Windows:
    // Specifies where and how the renderer process shows the candidate
    // window (if necessary).
    // Currently only one candidate window is supported.
    // TODO(yukawa): support multiple candidate windows.
    optional CandidateForm candidate_form = 8;

    // used in Windows:
    // Indicates if a UI element is expected to be displayed or not.  Note
    // taht |RendererCommand::visible| should be prior to these flags, that is,
    // you should hide all UI elements if |RendererCommand::visible| is false
    // regardless of the visibility specified in this field.
    enum UIVisibility {
      ShowUIDefault = 0;
      ShowCompositionWindow = 1;
      ShowCandidateWindow = 2;
      ShowSuggestWindow = 4;
    };
    // used in Windows:
    optional int32 ui_visibilities = 9 [ default = 0 ];  // ShowUIDefault

    // used in Windows:
    // Specifies the target position in composition window.
    optional CharacterPosition composition_target = 10;

    // used in Windows:
    // Represents caret information.
    optional CaretInfo caret_info = 11;

    // A string representation of PangoFontDescription
    // http://developer.gnome.org/pango/stable/pango-Fonts.html#pango-font-description-from-string
    // This field is not application specific information but temporaly locate
    // here.
    // TODO(nona): Make new message if necessary.
    optional string pango_font_description = 13;

    // used in Windows:
    optional IndicatorInfo indicator_info = 14;
  };

  optional ApplicationInfo application_info = 5;
};
