class Elm_Slider (Elm_Layout, Elm_Interface_Atspi_Value,
                  Elm_Interface_Atspi_Widget_Action)
{
   eo_prefix: elm_obj_slider;
   properties {
      horizontal {
         set {
            /*@
            @brief Set the orientation of a given slider widget.

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

            @remark Use this function to change how your slider is to be
            disposed: vertically or horizontally.

            @remark By default it's displayed horizontally.

            @see elm_slider_horizontal_get()

            @ingroup Slider */
         }
         get {
            /*@
            @brief Get the orientation of a given slider widget

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

            @return @c EINA_TRUE, if @p obj is set to be @b horizontal,
            @c EINA_FALSE if it's @b vertical (and on errors).

            @see elm_slider_horizontal_set() for more details.

            @ingroup Slider */
         }
         values {
            bool horizontal; /*@ Use @c EINA_TRUE to make @p obj to be
            @b horizontal, @c EINA_FALSE to make it @b vertical. */
         }
      }
      value {
         set {
            /*@
            @brief Set the value the slider displays.

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

            @remark Value will be presented on the unit label following format specified with
            elm_slider_unit_format_set() and on indicator with
            elm_slider_indicator_format_set().

            @warning The value must to be between min and max values. This values
            are set by elm_slider_min_max_set().

            @see elm_slider_value_get()
            @see elm_slider_unit_format_set()
            @see elm_slider_indicator_format_set()
            @see elm_slider_min_max_set()

            @ingroup Slider */
         }
         get {
            /*@
            @brief Get the value displayed by the slider.

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

            @return The value displayed.

            @see elm_slider_value_set() for details.

            @ingroup Slider */
         }
         values {
            double val; /*@ The value to be displayed. */
         }
      }
      indicator_format {
         set {
            /*@
            @brief Set the format string for the indicator label.

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

            @remark The slider may display its value somewhere else then unit label,
            for example, above the slider knob that is dragged around. This function
            sets the format string used for this.

            @remark If @c NULL, indicator label won't be visible. If not it sets the format
            string for the label text. To the label text is provided a floating point
            value, so the label text can display up to 1 floating point value.
            Note that this is optional.

            @remark Use a format string such as "%1.2f meters" for example, and it will
            display values like: "3.14 meters" for a value equal to 3.14159.

            @remark Default is indicator label disabled.

            @see elm_slider_indicator_format_get()

            @ingroup Slider */
         }
         get {
            /*@
            @brief Get the indicator label format of the slider.

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

            @return The indicator label format string in UTF-8.

            @remark The slider may display its value somewhere else then unit label,
            for example, above the slider knob that is dragged around. This function
            gets the format string used for this.

            @see elm_slider_indicator_format_set() for more
            information on how this works.

            @ingroup Slider */
         }
         values {
            const(char)* indicator; /*@ The format string for the indicator display. */
         }
      }
      inverted {
         set {
            /*@
            @brief Invert a given slider widget's displaying values order

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

            @remark A slider may be @b inverted, in which state it gets its
            values inverted, with high vales being on the left or top and
            low values on the right or bottom, as opposed to normally have
            the low values on the former and high values on the latter,
            respectively, for horizontal and vertical modes.

            @see elm_slider_inverted_get()

            @ingroup Slider */
         }
         get {
            /*@
            @brief Get whether a given slider widget's displaying values are
            inverted or not.

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

            @return @c EINA_TRUE, if @p obj has inverted values,
            @c EINA_FALSE otherwise (and on errors).

            @see elm_slider_inverted_set() for more details.

            @ingroup Slider */
         }
         values {
            bool inverted; /*@ Use @c EINA_TRUE to make @p obj inverted,
            @c EINA_FALSE to bring it back to default, non-inverted values. */
         }
      }
      indicator_show {
         set {
            /*@
            @brief Set whether to enlarge slider indicator (augmented knob) or not.

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

            @remark By default, indicator will be bigger while dragged by the user.

            @warning It won't display values set with
            elm_slider_indicator_format_set() if you disable indicator.

            @ingroup Slider */
         }
         get {
            /*@
            @brief Get whether a given slider widget's enlarging indicator or not.

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

            @return @c EINA_TRUE, if @p obj is enlarging indicator, or
            @c EINA_FALSE otherwise (and on errors).

            @see elm_slider_indicator_show_set() for details.

            @ingroup Slider */
         }
         values {
            bool show; /*@ @c EINA_TRUE will make it enlarge, @c EINA_FALSE will
            let the knob always at default size. */
         }
      }
      min_max {
         set {
            /*@
            @brief Set the minimum and maximum values for the slider.

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

            @remark Define the allowed range of values to be selected by the user.

            @remark If actual value is less than @p min, it will be updated to @p min. If it
            is bigger then @p max, will be updated to @p max. Actual value can be
            get with elm_slider_value_get().

            @remark By default, min is equal to 0.0, and max is equal to 1.0.

            @warning Maximum must be greater than minimum, otherwise behavior
            is undefined.

            @see elm_slider_min_max_get()

            @ingroup Slider */
         }
         get {
            /*@
            @brief Get the minimum and maximum values of the slider.

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

            @remark If only one value is needed, the other pointer can be passed
            as @c NULL.

            @see elm_slider_min_max_set() for details.

            @ingroup Slider */
         }
         values {
            double min; /*@ The minimum value. */
            double max; /*@ The maximum value. */
         }
      }
      unit_format {
         set {
            /*@
            @brief Set the format string for the unit label.

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

            @remark Unit label is displayed all the time, if set, after slider's bar.
            In horizontal mode, at right and in vertical mode, at bottom.

            @remark If @c NULL, unit label won't be visible. If not it sets the format
            string for the label text. To the label text is provided a floating point
            value, so the label text can display up to 1 floating point value.
            Note that this is optional.

            @remark Use a format string such as "%1.2f meters" for example, and it will
            display values like: "3.14 meters" for a value equal to 3.14159.

            @remark Default is unit label disabled.

            @see elm_slider_indicator_format_get()

            @ingroup Slider */
         }
         get {
            /*@
            @brief Get the unit label format of the slider.

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

            @return The unit label format string in UTF-8.

            @remark Unit label is displayed all the time, if set, after slider's bar.
            In horizontal mode, at right and in vertical mode, at bottom.

            @see elm_slider_unit_format_set() for more
            information on how this works.

            @ingroup Slider */
         }
         values {
            const(char)* units; /*@ The format string for the unit display. */
         }
      }
      indicator_show_on_focus {
         set {
            /*@
            @internal

            Show the indicator of slider on focus

            @ingroup Slider */
         }
         get {
            /*@
            @internal

            Get whether the indicator of the slider is set or not

            @return @c EINA_TRUE, if indicator is set
            @c EINA_FALSE otherwise.

            @ingroup Slider */
         }
         values {
            bool flag; /*@ @ EINA_TRUE sets the indicator visible */
         }
      }
      span_size {
         set {
            /*@
            @brief Set the (exact) length of the bar region of a given slider widget.

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

            @remark This sets the minimum width (when in horizontal mode) or height
            (when in vertical mode) of the actual bar area of the slider
            @p obj. This in turn affects the object's minimum size. Use
            this when you're not setting other size hints expanding on the
            given direction (like weight and alignment hints) and you would
            like it to have a specific size.

            @remark Icon, end, label, indicator and unit text around @p obj
            will require their
            own space, which will make @p obj to require more the @p size,
            actually.

            @see elm_slider_span_size_get()

            @ingroup Slider */
         }
         get {
            /*@
            @brief Get the length set for the bar region of a given slider widget

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

            @return The length of the slider's bar region.

            @remark If that size was not set previously, with
            elm_slider_span_size_set(), this call will return @c 0.

            @ingroup Slider */
         }
         values {
            Evas_Coord size; /*@ The length of the slider's bar region. */
         }
      }
      step {
         set {
            /*@
            @brief Set the step by which slider indicator will move.

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

            @remark This value is used when draggable object is moved automatically i.e., in case
            of key event when up/down/left/right key is pressed or in case when
            accessibility is set and flick event is used to inc/dec slider values.
            By default step value is equal to 0.05.

            @see elm_slider_step_get() for more details.

            @ingroup Slider
            @since 1.8 */
         }
         get {
            /*@
            @brief Get the step by which slider indicator moves.

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

            @return The step value.

            @see elm_slider_step_set() for more details.

            @ingroup Slider
            @since 1.8 */
         }
         values {
            double step; /*@ The step value. */
         }
      }
      indicator_visible_mode {
         set {
            /*@
            @brief Set the visible mode of indicator.

            @if MOBILE @since_tizen 2.4
            @elseif WEARABLE @since_tizen 2.4
            @endif

            @see elm_slider_indicator_visible_mode_get() for more details.

            @ingroup Slider
            */
         }
         get {
            /*@
            @brief Get the visible mode of indicator.

            @if MOBILE @since_tizen 2.4
            @elseif WEARABLE @since_tizen 2.4
            @endif

            @return The indicator visible mode.

            @see elm_slider_indicator_visible_mode_set() for more details.

            @ingroup Slider
            */
         }
         values {
            Elm_Slider_Indicator_Visible_Mode indicator_visible_mode; /*@ The indicator visible mode. */
         }
      }
      indicator_format_function {
         set {
            /*@
            @brief Set the format function pointer for the indicator label

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

            @remark Set the callback function to format the indicator string.

            @see elm_slider_indicator_format_set() for more info on how this works.

            @ingroup Slider */
         }
         values {
            slider_func_type func; /*@ The indicator format function. */
            slider_freefunc_type free_func; /*@ The freeing function for the format string. */
         }
      }
      units_format_function {
         set {
            /*@
            @brief Set the format function pointer for the units label

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

            @remark Set the callback function to format the units string.

            @see elm_slider_unit_format_set() for more info on how this works.

            @ingroup Slider */
         }
         values {
            slider_func_type func; /*@ The units format function. */
            slider_freefunc_type free_func; /*@ The freeing function for the format string. */
         }
      }
   }
   implements {
      class.constructor;
      Eo.Base.constructor;
      Evas.Object_Smart.calculate;
      Evas.Object_Smart.add;
      Evas.Object_Smart.del;
      Elm_Widget.theme_apply;
      Elm_Widget.activate;
      Elm_Widget.focus_next_manager_is;
      Elm_Widget.focus_direction_manager_is;
      Elm_Widget.on_focus;
      Elm_Widget.event;
      Elm_Layout.text_aliases.get;
      Elm_Layout.content_aliases.get;
      Elm_Layout.sizing_eval;
      Elm_Interface_Atspi_Value.value_and_text.get;
      Elm_Interface_Atspi_Value.value_and_text.set;
      Elm_Interface_Atspi_Value.range.get;
      Elm_Interface_Atspi_Value.increment.get;
      Elm_Interface_Atspi_Widget_Action.elm_actions.get;
   }
   events {
      changed;
      delay,changed;
      slider,drag,start;
      slider,drag,stop;
      language,changed;
      access,changed;
      focused;
      unfocused;
   }

}
