class Evas.Text (Evas.Object, Efl.Text, Efl.Text_Properties, Evas.Filter)
{
   legacy_prefix: evas_object_text;
   eo_prefix: evas_obj_text;
   methods {
      @property shadow_color {
         [[Controls the shadow color for the given text object.

           Shadow effects, which are fading colors decorating the text
           underneath it, will just be shown if the object is set to one of
           the following styles:

           - @Evas.Text_Style_Type.shadow
           - @Evas.Text_Style_Type.outline_shadow
           - @Evas.Text_Style_Type.far_shadow
           - @Evas.Text_Style_Type.outline_soft_shadow
           - @Evas.Text_Style_Type.soft_shadow
           - @Evas.Text_Style_Type.far_soft_shadow

           One can also change the direction where the shadow grows to, with
           @.style

           See @.shadow_color]]
         set {
            [[
              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         get {
            [[Note: Use $NULL pointers on the color components you're not
            interested in: they'll be ignored by the function.

            \@if MOBILE \@since_tizen 2.3
            \@elseif WEARABLE \@since_tizen 2.3.1
            \@endif
          ]]
         }
         values {
            r: int; [[The red component of the given color.]]
            g: int; [[The green component of the given color.]]
            b: int; [[The blue component of the given color.]]
            a: int; [[The alpha component of the given color.]]
         }
      }
      @property ellipsis {
         [[Conttrols the ellipsis that should be used for the text object.

          This is a value between 0.0 and 1.0 indicating the position of the text
          to be shown. 0.0 means the start will be shown and the end trimmed, 1.0
          means the beginning will be trimmed and the end will be shown, and any value
          in between will cause ellipsis to be added in both end of the text and the
          requested part to be shown.
          -1.0 means ellipsis is turned off.

          @since 1.8]]
         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 {
            ellipsis: double(-1); [[the ellipsis. Allowed values: -1.0 or 0.0-1.0]]
         }
      }
      @property bidi_delimiters {
         [[Sets the BiDi delimiters used in the textblock.

           BiDi delimiters are use for in-paragraph separation of bidi segments. This
           is useful for example in recipients fields of e-mail clients where bidi
           oddities can occur when mixing RTL and LTR.

           @since 1.1]]
         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 {
            delim: const(char)*; [[A null terminated string of delimiters, e.g ",|".]]
         }
      }
      @property outline_color {
         [[Controlss the outline color for the given text object.

           Outline effects (colored lines around text glyphs) will just be
           shown if the object is set to one of the following styles:
           - @Evas.Text_Style_Type.outline
           - @Evas.Text_Style_Type.soft_outline
           - @Evas.Text_Style_Type.outline_shadow
           - @Evas.Text_Style_Type.outline_soft_shadow]]
         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 {
            r: int; [[The red component of the given color.]]
            g: int; [[The green component of the given color.]]
            b: int; [[The blue component of the given color.]]
            a: int; [[The alpha component of the given color.]]
         }
      }
      @property glow2_color {
         [[Sets the 'glow 2' color for the given text object.

           'Glow 2' effects, which are glowing colors decorating the text's
           (immediate) surroundings, will just be shown if the object is set
           to the @Evas.Text_Style_Type.glow style. See also
           @.glow_color.]]
         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 {
            r: int; [[The red component of the given color.]]
            g: int; [[The green component of the given color.]]
            b: int; [[The blue component of the given color.]]
            a: int; [[The alpha component of the given color.]]
         }
      }
      @property style {
            [[Controls the style to apply on the given text object.

              Text object styles are one of the values in @Evas.Text_Style_Type
              Some of those values are combinations of more than one style,
              and some account for the direction of the rendering of shadow effects.

              Note: One may use the helper macros #EVAS_TEXT_STYLE_BASIC_SET and
              #EVAS_TEXT_STYLE_SHADOW_DIRECTION_SET to assemble a style value.]]

            /* FIXME-doc:
            The following figure illustrates the text styles:

            @image html text-styles.png
            @image rtf text-styles.png
            @image latex text-styles.eps

            @see evas_object_text_style_get()
            @see evas_object_text_shadow_color_set()
            @see evas_object_text_outline_color_set()
            @see evas_object_text_glow_color_set()
            @see evas_object_text_glow2_color_set() */
         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 {
            style: Evas.Text_Style_Type; [[a style type.]]
         }
      }
      @property glow_color {
         [[Sets the glow color for the given text object.

           Glow effects, which are glowing colors decorating the text's
           surroundings, will just be shown if the object is set to the
           @Evas.Text_Style_Type.glow style.

           Note: Glow effects are placed from a short distance of the text
           itself, but no touching it. For glowing effects right on the
           borders of the glyphs, see 'glow 2' effects.]]
         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 {
            r: int; [[The red component of the given color.]]
            g: int; [[The green component of the given color.]]
            b: int; [[The blue component of the given color.]]
            a: int; [[The alpha component of the given color.]]
         }
      }
      @property max_descent {
         get {
            return: Evas.Coord;
               [[
                 \@if MOBILE \@since_tizen 3.0
                 \@elseif WEARABLE \@since_tizen 3.0
                 \@endif
               ]]
         }
      }
      @property style_pad {
         get {
            [[Gets the text style pad of a text object.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            l: int; [[The left pad (or $NULL).]]
            r: int; [[The right pad (or $NULL).]]
            t: int; [[The top pad (or $NULL).]]
            b: int; [[The bottom pad (or $NULL).]]
         }
      }
      @property direction {
         get {
            [[Retrieves the direction of the text currently being displayed in the
            text object.

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

            return: Evas.BiDi_Direction;
         }
      }
      @property ascent {
         get {
            return: Evas.Coord;
               [[
                 \@if MOBILE \@since_tizen 3.0
                 \@elseif WEARABLE \@since_tizen 3.0
                 \@endif
               ]]
         }
      }
      @property horiz_advance {
         get {
            return: Evas.Coord;
               [[
                 \@if MOBILE \@since_tizen 3.0
                 \@elseif WEARABLE \@since_tizen 3.0
                 \@endif
               ]]
         }
      }
      @property horiz_width_without_ellipsis {
         get {
            [[
            // TIZEN_ONLY(20160425): Fix Evas Text truncated text case and evas_object_text_horiz_width_get() is add ed.
            // horiz_advance_without_ellipsis is changed to horiz_width_without_ellipsis.
            ]]
            return: Evas.Coord;
         }
      }
      @property inset {
         get {
            return: Evas.Coord;
               [[
                 \@if MOBILE \@since_tizen 3.0
                 \@elseif WEARABLE \@since_tizen 3.0
                 \@endif
               ]]
         }
      }
      @property max_ascent {
         get {
            return: Evas.Coord;
               [[
                 \@if MOBILE \@since_tizen 3.0
                 \@elseif WEARABLE \@since_tizen 3.0
                 \@endif
               ]]
         }
      }
      @property vert_advance {
         get {
            return: Evas.Coord;
               [[
                 \@if MOBILE \@since_tizen 3.0
                 \@elseif WEARABLE \@since_tizen 3.0
                 \@endif
               ]]
         }
      }
      @property descent {
         get {
            return: Evas.Coord;
               [[
                 \@if MOBILE \@since_tizen 3.0
                 \@elseif WEARABLE \@since_tizen 3.0
                 \@endif
               ]]
         }
      }
      last_up_to_pos @const {
         [[Returns the logical position of the last char in the text up to the pos given. this is NOT the position of the last char because of the possibility of RTL in the text.

           \@if MOBILE \@since_tizen 2.3
           \@elseif WEARABLE \@since_tizen 2.3.1
           \@endif
         ]]
         return: int(-1);
         params {
            @in x: Evas.Coord;
            @in y: Evas.Coord;
         }
      }
      char_coords_get @const {
         return: int;
         params {
            @in x: Evas.Coord;
            @in y: Evas.Coord;
            @out cx: Evas.Coord;
            @out cy: Evas.Coord;
            @out cw: Evas.Coord;
            @out ch: Evas.Coord;
         }
      }
      char_pos_get @const {
         [[Retrieve position and dimension information of a character within a text @Evas.Object

         This function is used to obtain the X, Y, width and height of the character
         located at $pos within the @Evas.Object $obj. $obj must be a text object
         Any of the $Evas_Coord parameters ($cx, $cy, $cw, $ch) may be $NULL in which case no value will be assigned to that
         parameter.

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

         return: bool; [[$false on success, $true otherwise]]
         params {
            @in pos: int; [[The character position to request co-ordinates for.]]
            @out cx: Evas.Coord; [[A pointer to an @Evas.Coord to store the X value in (can be NULL).]]
            @out cy: Evas.Coord; [[A pointer to an @Evas.Coord to store the Y value in (can be NULL).]]
            @out cw: Evas.Coord; [[A pointer to an @Evas.Coord to store the Width value in (can be NULL).]]
            @out ch: Evas.Coord; [[A pointer to an @Evas.Coord to store the Height value in (can be NULL).]]
         }
      }
   }
   implements {
      Eo.Base.constructor;
      Eo.Base.destructor;
      Eo.Base.dbg_info_get;
      Efl.Gfx.Base.size.set;
      Efl.Text.text.set;
      Efl.Text.text.get;
      Efl.Text_Properties.font.get;
      Efl.Text_Properties.font.set;
      Efl.Text_Properties.font_source.get;
      Efl.Text_Properties.font_source.set;
      Efl.Gfx.Filter.program.set;
      Evas.Filter.input_alpha;
      Evas.Filter.input_render;
      Evas.Filter.dirty;
      Evas.Object.paragraph_direction.set;
      Evas.Object.paragraph_direction.get;
   }
}
