abstract Efl.VG.Base (Eo.Base, Efl.Gfx.Base, Efl.Gfx.Stack)
{
   eo_prefix: efl_vg;
   legacy_prefix: evas_vg_node;
   methods {
      @property transformation {
         set {
            [[Sets the transformation matrix to be used for this node object.

              Note: Pass $null to cancel the applied transformation.

              @since 1.14]]
         }
         get {
            [[Gets the transformation matrix used for this node object.

              @since 1.14]]
         }
         values {
            m: const(Eina_Matrix3) *; [[transformation matrix.]]
         }
      }
      @property origin {
         set {
            [[Sets the origin position of this node object.

              This origin position affects to node transformation.

              @since 1.14]]
         }
         get {
            [[Gets the origin position of this node object.

              @since 1.14]]
         }
         values {
            x: double; [[$origin x position.]]
            y: double; [[$origin y position.]]
         }
      }
      @property mask {
         set {
	 }
	 get {
	 }
	 values {
	    m: Efl_VG *;
	 }
      }
/*      quality {
         set {
	 }
	 get {
	 }
	 values {
	    Evas_VG_Quality q;
	 }
      } */
      bounds_get {
         [[Give the bounding box in screen coordinate as being drawn.

           It will start as the control box until it is refined once the shape
           is computed.

           @since 1.14]]
         params {
            @out r: Eina.Rectangle; [[bounding box to be returned.]]
         }
      }
   }
   implements {
      Eo.Base.parent.set;
      Eo.Base.constructor;
      Eo.Base.destructor;
      Efl.Gfx.Base.visible.set;
      Efl.Gfx.Base.visible.get;
      Efl.Gfx.Base.color.set;
      Efl.Gfx.Base.color.get;
      Efl.Gfx.Base.color_part.set;
      Efl.Gfx.Base.color_part.get;
      Efl.Gfx.Base.size.get;
      Efl.Gfx.Base.position.set;
      Efl.Gfx.Base.position.get;
      Efl.Gfx.Stack.below.get;
      Efl.Gfx.Stack.above.get;
      Efl.Gfx.Stack.stack_below;
      Efl.Gfx.Stack.stack_above;
      Efl.Gfx.Stack.raise;
      Efl.Gfx.Stack.lower;
      @virtual .bounds_get;
   }
}
