enum Elm.Bg.Option
{
   [[
     Identifiers on how a background widget is to display its image --
     if it was set to use an image file.

     See also @Elm.Bg.option.set, @Elm.Bg.option.get.
   ]]
  center, [[Center the background image.]]
  scale, [[Scale the background image, retaining aspect ratio (default).]]
  stretch, [[Stretch the background image to fill the widget's area.]]
  tile, [[Tile background image at its original size.]]
  last [[Sentinel value, also used to indicate errors.]]
}

class Elm.Bg (Elm.Layout, Efl.File)
{
   eo_prefix: elm_obj_bg;
   methods {
      @property option {
         set {
            [[Sets the mode of display for a given background widget's image

              This sets how the background widget will display its image. This
              will only work if the @Efl.File.file.set was previously called with
              an image file on $obj. The image can be display tiled, scaled,
              centered or stretched. @Elm.Bg.Option.scale by default.

              See also @.option.get.

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

         }
         get {
            [[Gets the mode of display for a given background widget's image.

              See also @.option.set for more details

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            option: Elm.Bg.Option; [[The desired background option(See @Elm.Bg.Option)]]
         }
      }
      @property color {
         set {
            [[Sets the color on a given background widget

              This sets the color used for the background rectangle, in RGB
              format. Each color component's range is from 0 to 255.

              Note: You probably only want to use this function if you haven't
              previously called @Efl.File.file.set, so that you just want a solid
              color background.

              Note: You can reset the color by setting $r, $g, $b as -1, -1, -1.

              See also @.color.get

            ]]
            legacy: null; /* legacy doesn't have 'a' param */
         }
         get {
            [[Gets the color set on a given background widget

              Note: Use $null pointers on the file components you're not
              interested in: they'll be ignored by the function.

              See also @.color.get for more details

            ]]
            legacy: null; /* legacy doesn't have 'a' param */

         }
         values {
            r: int; [[The red color component's value]]
            g: int; [[The green color component's value]]
            b: int; [[The blue color component's value]]
            a: int; [[The blue color component's value]]
         }
      }
      @property load_size {
         set {
            [[Sets the size of the pixmap representation of the image set on a
              given background widget.

              Warning: This function just makes sense if an image file was set on
              $obj, with @Efl.File.file.set

              This function sets a new size for pixmap representation of the
              given bg image. It allows for the image to be loaded already in the
              specified size, reducing the memory usage and load time (for
              example, when loading a big image file with its load size set to a
              smaller size)

              Note: This is just a hint for the underlying system. The real size
              of the pixmap may differ depending on the type of image being
              loaded, being bigger than requested.

              \@if MOBILE \@since_tizen 2.3
              \@elseif WEARABLE \@since_tizen 2.3.1
              \@endif
            ]]
         }
         values {
            w: Evas.Coord; [[The new width of the image pixmap representation.]]
            h: Evas.Coord; [[The new height of the image pixmap representation.]]
         }
      }
   }
   implements {
      class.constructor;
      Eo.Base.constructor;
      Evas.Object_Smart.add;
      Elm.Layout.content_aliases.get;
      Elm.Layout.sizing_eval;
      Efl.File.file.set;
      Efl.File.file.get;
   }

}
