class Elm.Gesture_Layer (Elm.Widget)
{
   eo_prefix: elm_obj_gesture_layer;
   methods {
      @property zoom_step {
         [[Control step value for zoom action.]]
         set {
            [[
              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         get {
            [[
              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            step: double; [[The zoom step value.]]
         }
      }
      @property tap_finger_size {
         set {
            [[This function sets the gesture layer finger-size for taps.

              If not set, it's taken from elm_config.
              Set to 0 if you want GLayer to use the system finger size
              value (default).

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif

              @since 1.8
            ]]
         }
         get {
            [[This function returns the gesture layer finger-size for taps

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif

              @since 1.8
            ]]
         }
         values {
            sz: Evas.Coord; [[The finger size.]]
         }
      }
      @property hold_events {
         set {
            [[This function makes gesture-layer repeat events.

              Set this if you like to get the raw events only if gestures
              were not detected.

              Clear this if you like gesture layer to forward events as
              testing gestures.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         get {
            [[Get the repeat-events setting.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            hold_events: bool;
         }
      }
      @property rotate_step {
         set {
            [[This function sets the step value for rotate action.

              Set to 0 to cancel step setting.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         get {
            [[This function returns step-value for rotate action.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            step: double; [[New rotate step value.]]
         }
      }
      @property cb {
         set {
            [[Set the gesture state change callback.

              When all callbacks for the gesture are set to $null,
              it means this gesture is disabled.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            idx: Elm_Gesture_Type; [[The gesture you want to track state of.]]
            cb_type: Elm_Gesture_State; [[The event the callback tracks (START, MOVE, END, ABORT).]]
            cb: Elm_Gesture_Event_Cb; [[The callback itself.]]
            data: void * @optional; [[Custom data to be passed.]]
         }
      }
      attach {
         [[Attach a gesture layer widget to an Evas object (setting the
           widget's target).

           A gesture layer's target may be any Evas object. This object
           will be used to listen for mouse and key events.

           \@if MOBILE \@since_tizen 2.3
           \@elseif WEARABLE \@since_tizen 2.3.1
           \@endif
         ]]
         return: bool; [[$true on success, $false otherwise.]]
         params {
            @in target: Evas.Object *; [[The object to attach.]]
         }
      }
      cb_del {
         [[Remove a gesture callback.

           \@if MOBILE \@since_tizen 3.0
           \@elseif WEARABLE \@since_tizen 3.0
           \@endif
         ]]
         params {
            @in idx: Elm_Gesture_Type; [[The gesture you want to track state of.]]
            @in cb_type: Elm_Gesture_State; [[The event the callback tracks (START, MOVE, END, ABORT).]]
            @in cb: Elm_Gesture_Event_Cb; [[The callback itself.]]
            @in data: void * @nullable; [[Custom callback data.]]
         }
      }
      cb_add {
         [[Add a gesture state change callback.

           When all callbacks for the gesture are set to $null,
           it means this gesture is disabled.

           If a function was already set for this gesture/type/state, it
           will be replaced by the new one. For ABI compat, callbacks
           added by @.cb_add will be removed. It is recommended to
           use only one of these functions for a gesture object.

           \@if MOBILE \@since_tizen 3.0
           \@elseif WEARABLE \@since_tizen 3.0
           \@endif
         ]]
         params {
            @in idx: Elm_Gesture_Type; [[The gesture you want to track state of.]]
            @in cb_type: Elm_Gesture_State; [[The event the callback tracks (START, MOVE, END, ABORT).]]
            @in cb: Elm_Gesture_Event_Cb; [[The callback itself.]]
            @in data: void * @optional; [[Custom data to be passed.]]
         }
      }
   }
   implements {
      class.constructor;
      Eo.Base.constructor;
      Evas.Object_Smart.add;
      Evas.Object_Smart.del;
      Elm.Widget.disable;
   }

}
