class Elm.Thumb (Elm.Layout, Efl.File, Evas.Clickable_Interface)
{
   eo_prefix: elm_obj_thumb;
   methods {
      @property compress {
         set @internal {
            [[Set the compression for the thumb object.

              @since 1.8
            ]]
         }
         get @internal {
            [[Get the compression of the thumb object.

              @since 1.8
            ]]
            return: void; [[Force the return type to be sure the argument
                            doesn't become the return]]
         }
         values {
            compress: int; [[The compression of the thumb.]]
         }
      }
      @property format {
         set @internal {
            [[Set the format for the thumb object.

              @since 1.8
            ]]
         }
         get @internal {
            [[Get the format of the thumb object.

              @since 1.8
            ]]
         }
         values {
            format: Ethumb_Thumb_Format; [[The format setting.]]
         }
      }
      @property animate {
         set @internal {
            [[Set the animation state for the thumb object.

              If its content is an animated video, you may start/stop the
              animation or tell it o play continuously and looping.
            ]]
         }
         get @internal {
            [[Get the animation state for the thumb object.]]
         }
         values {
            setting: Elm_Thumb_Animation_Setting; [[The animation setting or
                                                    #ELM_THUMB_ANIMATION_LAST]]
         }
      }
      @property fdo_size {
         set @internal {
            [[Set the FDO size for the thumb object.

              @since 1.8
            ]]
         }
         get @internal {
            [[Get the fdo size of the thumb object.

              @since 1.8
            ]]
         }
         values {
            size: Ethumb_Thumb_FDO_Size; [[The FDO size setting.]]
         }
      }
      @property orientation {
         set @internal {
            [[Set the orientation for the thumb object.

              @since 1.8
            ]]
         }
         get @internal {
            [[Get the orientation of the thumb object.

              @since 1.8
            ]]
         }
         values {
            orient: Ethumb_Thumb_Orientation; [[The orientation setting.]]
         }
      }
      @property editable {
         set @internal {
            [[Make the thumbnail 'editable'.

              This means the thumbnail is a valid drag target for drag and
              drop, and can be cut or pasted too.
            ]]
            return: bool;
         }
         get @internal {
            [[Get whether the thumbnail is editable.

              This means the thumbnail is a valid drag target for drag and
              drop, and can be cut or pasted too.
            ]]
         }
         values {
            edit: bool; [[The editable state, default is $false.]]
         }
      }
      @property aspect {
         set @internal {
            [[Set the aspect for the thumb object.

              @since 1.8
            ]]
         }
         get @internal {
            [[Get the aspect of the thumb object.

              @since 1.8
            ]]
         }
         values {
            aspect: Ethumb_Thumb_Aspect; [[The aspect setting.]]
         }
      }
      @property quality {
         set @internal {
            [[Set the quality for the thumb object.

              @since 1.8
            ]]
         }
         get @internal {
            [[Get the quality of the thumb object.

              @since 1.8
            ]]
            return: void;
         }
         values {
            quality: int; [[The quality of the thumb.]]
         }
      }
      @property size {
         set @internal {
            [[Set the size for the thumb object.

              @since 1.8
            ]]
         }
         get @internal {
            [[Get the size of the thumb object.

              @since 1.8
            ]]
         }
         values {
            tw: int; [[The width of the thumb.]]
            th: int; [[The height of the thumb.]]
         }
      }
      @property crop_align {
         set @internal {
            [[Set the crop alignment for the thumb object.

              @since 1.8
            ]]
         }
         get @internal {
            [[Get the crop alignment of the thumb object.

              @since 1.8
            ]]
         }
         values {
            cropx: double; [[The x coordinate of the crop.]]
            cropy: double; [[The y coordinate of the crop.]]
         }
      }
      @property path {
         get @internal {
            [[Get the path and key to the image or video thumbnail generated
              by ethumb.

              One just needs to make sure that the thumbnail was generated
              before getting its path; otherwise, the path will be $null.
              One way to do that is by asking for the path when/after the
              "generate,stop" smart callback is called.
            ]]
         }
         values {
            file: const(char)* @optional; [[Pointer to thumb path.]]
            key: const(char)* @optional; [[Pointer to thumb key.]]
         }
      }
      reload @internal {
         [[Reload thumbnail if it was generated before.

           This is useful if the ethumb client configuration changed, like its
           size, aspect or any other property one set in the handle returned
           by elm_thumb_ethumb_client_get().

           If the options didn't change, the thumbnail won't be generated
           again, but the old one will still be used.
         ]]
      }
   }
   implements {
      class.constructor;
      Eo.Base.constructor;
      Efl.File.file.set;
      Efl.File.file.get;
      Evas.Object_Smart.hide;
      Evas.Object_Smart.add;
      Evas.Object_Smart.del;
      Evas.Object_Smart.show;
   }
   events {
      generate,error;
      generate,start;
      generate,stop;
      load,error;
      press;
   }

}
