class Elm.Mapbuf (Elm.Container)
{
   eo_prefix: elm_obj_mapbuf;
   methods {
      @property auto {
         set {
            [[Set or unset auto flag for map rendering.

              When a ampbuf object has "auto mode" enabled, then it will
              enable and disable map mode based on current visibility.
              Mapbuf will track if you show or hide it AND if the object
              is inside the canvas viewport or not when it is moved or
              resized. Note that if you turn automode off, then map mode
              will be in a disabled state at this point. When you turn it
              on for the first time, the current state will be evaluated
              base on current properties of the mapbuf object.

              Auto mode is disabled by default.

              \@if MOBILE \@since_tizen 3.0
              \@elseif WEARABLE \@since_tizen 3.0
              \@endif
            ]]
         }
         get {
            [[Get a value whether auto mode is enabled or not.

              \@if MOBILE \@since_tizen 3.0
              \@elseif WEARABLE \@since_tizen 3.0
              \@endif
            ]]
         }
         values {
            on: bool; [[The auto mode state.]]
         }
      }
      @property smooth {
         set {
            [[Enable or disable smooth map rendering.

              This sets smoothing for map rendering. If the object is a
              type that has its own smoothing settings, then both the
              smooth settings for this object and the map must be turned off.

              By default smooth maps are enabled.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         get {
            [[Get a value whether smooth map rendering is enabled or not.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            smooth: bool; [[The smooth mode state.]]
         }
      }
      @property alpha {
         set {
            [[Set or unset alpha flag for map rendering.

              This sets alpha flag for map rendering. If the object is a
              type that has its own alpha settings, then this will take
              precedence. Only image objects have this currently. It stops
              alpha blending of the map area, and is useful if you know the
              object and/or all sub-objects is 100% solid.

              Alpha is enabled by default.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         get {
            [[Get a value whether alpha blending is enabled or not.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            alpha: bool; [[The alpha state.]]
         }
      }
      @property enabled {
         set {
            [[Enable or disable the map.

              This enables the map that is set or disables it. On enable,
              the object geometry will be saved, and the new geometry will
              change (position and size) to reflect the map geometry set.

              Also, when enabled, alpha and smooth states will be used, so
              if the content isn't solid, alpha should be enabled, for
              example, otherwise a black rectangle will fill the content.

              When disabled, the stored map will be freed and geometry prior
              to enabling the map will be restored.

              It's disabled by default.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         get {
            [[Get a value whether map is enabled or not.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            enabled: bool; [[The enabled state.]]
         }
      }
      point_color_set {
         [[Set the color of a vertex in the mapbuf

           This sets the color of the vertex in the mapbuf. Colors will be
           linearly interpolated between vertex points through the mapbuf.
           Color will multiply the "texture" pixels (like GL_MODULATE in
           OpenGL). The default color of a vertex in a mapbuf is white
           solid (255, 255, 255, 255) which means it will have no affect
           on modifying the texture pixels.

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

           @since 1.9
         ]]
         params {
            @in idx: int; [[Index of point to change. Must be smaller than mapbuf size.]]
            @in r: int; [[Red (0 - 255)]]
            @in g: int; [[Green (0 - 255)]]
            @in b: int; [[Blue (0 - 255)]]
            @in a: int; [[Alpha (0 - 255)]]
         }
      }
      point_color_get {
         [[Get the color set on a vertex in the mapbuf

           This gets the color set by @.point_color_set on the given vertex
           of the mapbuf.

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

           @since 1.9
         ]]
         params {
            @in idx: int; [[Index of point get. Must be smaller than map size.]]
            @out r: int; [[Pointer to red return.]]
            @out g: int; [[Pointer to green return.]]
            @out b: int; [[Pointer to blue return.]]
            @out a: int; [[Pointer to alpha return.]]
         }
      }
   }
   implements {
      class.constructor;
      Eo.Base.constructor;
      Evas.Object_Smart.hide;
      Evas.Object_Smart.show;
      Evas.Object_Smart.move;
      Evas.Object_Smart.add;
      Evas.Object_Smart.del;
      Evas.Object_Smart.resize;
      Elm.Widget.theme_apply;
      Elm.Widget.sub_object_del;
      Elm.Container.content_get;
      Elm.Container.content_set;
      Elm.Container.content_unset;
   }

}
