mixin Evas.Filter (Efl.Gfx.Filter)
{
   // Evas internal implementation
   legacy_prefix: null;
   methods {
      @property changed @protected {
         set {
            [[Marks this filter as changed.]]
         }
         values {
            val: bool;
         }
      }
      @property invalid @protected {
         set {
            [[Marks this filter as invalid.]]
         }
         values {
            val: bool;
         }
      }
      constructor @protected {
         [[Initialize the Evas.Filter mixin.

           Should be called in a parent's class constructor.
         ]]
      }
      destructor @protected {
         [[Release all data held by this Evas.Filter.

           This may include image buffers allocated by the Evas engine.
           This should be called at the beginning of a parent's class destructor.
         ]]
      }
      input_alpha @protected {
         [[Called by Evas.Filter to determine whether the input is alpha or rgba.]]
         return: bool;
      }
      input_render @protected {
         [[Called by Evas.Filter when the parent class must render the input.
         ;
         ]]
         return: bool; [[Indicates success from the object render function.]]
         params {
            filter: void*; [[Evas_Filter_Context]]
            drawctx: void*;
            l: int;
            r: int;
            t: int;
            b: int;
            do_async: bool;
         }
      }
      dirty @protected {
         [[Called when the filter changes must trigger a redraw of the object.

           Virtual, to be implemented in the parent class.
         ]]
      }
   }
   implements {
      Efl.Gfx.Filter.program.set;
      Efl.Gfx.Filter.program.get;
      Efl.Gfx.Filter.state.set;
      Efl.Gfx.Filter.padding.get;
      Efl.Gfx.Filter.source_set;
      Efl.Gfx.Filter.source_get;
      Efl.Gfx.Filter.data_set;
      @virtual .input_alpha;
      @virtual .input_render;
      @virtual .dirty;
   }
}
