2019-07-26 04:35:27 -07:00
|
|
|
interface @beta Evas.Ector.Buffer
|
2015-12-08 00:29:54 -08:00
|
|
|
{
|
evas filters: Refactor ector and gfx filters A LOT
Alright, so this is a massive patch that is the result of
trying to get rid of unused or poorly implemented classes in
ector. Originally ector was meant to support VG but extend to
things like filters as well. At the moment, ector's design
makes it quite hard to plug in the filters.
For now I think it's easier to implement the GL support for
the filters directly in the engine, where I hope to interfere
as little as possible.
This massive patch keeps only the required minimum to support
a versatile gl buffer that can be mapped, drawn or rendered to (FBO).
It's extremely inefficient as it relies on glReadPixels and lots
of texture uploads, as well as conversions between ARGB and Alpha.
Another type of GL buffer is a wrap around an existing GL image,
but that one is read-only (map or draw: no write map, no FBO).
No, all the filters run fine, and the high-level implementation
(evas_filters.c) does not need to know whether the underlying engine
is SW or GL. One problem though appears with the blending or blurring
of some Alpha buffers, the colors are wrong.
This patch removes more lines than it adds so it must be good ;)
2017-01-17 18:47:25 -08:00
|
|
|
[[Binding layer between ector buffers and evas images.
|
|
|
|
|
|
|
|
Subclasses implement support for RGBA_Image for SW & GL,
|
|
|
|
and Evas_GL_Image for GL.
|
|
|
|
|
|
|
|
Note: Internal class, not API stable.
|
|
|
|
]]
|
2015-12-08 00:29:54 -08:00
|
|
|
methods {
|
evas filters: Refactor ector and gfx filters A LOT
Alright, so this is a massive patch that is the result of
trying to get rid of unused or poorly implemented classes in
ector. Originally ector was meant to support VG but extend to
things like filters as well. At the moment, ector's design
makes it quite hard to plug in the filters.
For now I think it's easier to implement the GL support for
the filters directly in the engine, where I hope to interfere
as little as possible.
This massive patch keeps only the required minimum to support
a versatile gl buffer that can be mapped, drawn or rendered to (FBO).
It's extremely inefficient as it relies on glReadPixels and lots
of texture uploads, as well as conversions between ARGB and Alpha.
Another type of GL buffer is a wrap around an existing GL image,
but that one is read-only (map or draw: no write map, no FBO).
No, all the filters run fine, and the high-level implementation
(evas_filters.c) does not need to know whether the underlying engine
is SW or GL. One problem though appears with the blending or blurring
of some Alpha buffers, the colors are wrong.
This patch removes more lines than it adds so it must be good ;)
2017-01-17 18:47:25 -08:00
|
|
|
engine_image_set {
|
|
|
|
[[Attach this ector buffer to an existing engine image.]]
|
|
|
|
params {
|
2017-04-25 16:15:37 -07:00
|
|
|
@in engine: void_ptr; [[The current Evas.]]
|
evas filters: Refactor ector and gfx filters A LOT
Alright, so this is a massive patch that is the result of
trying to get rid of unused or poorly implemented classes in
ector. Originally ector was meant to support VG but extend to
things like filters as well. At the moment, ector's design
makes it quite hard to plug in the filters.
For now I think it's easier to implement the GL support for
the filters directly in the engine, where I hope to interfere
as little as possible.
This massive patch keeps only the required minimum to support
a versatile gl buffer that can be mapped, drawn or rendered to (FBO).
It's extremely inefficient as it relies on glReadPixels and lots
of texture uploads, as well as conversions between ARGB and Alpha.
Another type of GL buffer is a wrap around an existing GL image,
but that one is read-only (map or draw: no write map, no FBO).
No, all the filters run fine, and the high-level implementation
(evas_filters.c) does not need to know whether the underlying engine
is SW or GL. One problem though appears with the blending or blurring
of some Alpha buffers, the colors are wrong.
This patch removes more lines than it adds so it must be good ;)
2017-01-17 18:47:25 -08:00
|
|
|
@in image: void_ptr; [[The RGBA_Image or Evas_GL_Image.]]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
drawable_image_get {
|
|
|
|
[[Fetch an engine image from this ector buffer as a drawable.]]
|
|
|
|
return: void_ptr; [[The engine image (RGBA_Image or Evas_GL_Image).]]
|
|
|
|
}
|
|
|
|
render_image_get {
|
|
|
|
[[Fetch an engine image from this ector buffer as a render target.]]
|
|
|
|
return: void_ptr; [[The engine image (RGBA_Image or Evas_GL_Image).]]
|
|
|
|
}
|
|
|
|
engine_image_release {
|
|
|
|
[[Release an image from @.drawable_image_get or @.render_image_get.]]
|
|
|
|
params {
|
|
|
|
@in image: void_ptr; [[Return value of @.drawable_image_get or @.render_image_get.]]
|
2015-12-13 22:52:02 -08:00
|
|
|
}
|
evas filters: Refactor ector and gfx filters A LOT
Alright, so this is a massive patch that is the result of
trying to get rid of unused or poorly implemented classes in
ector. Originally ector was meant to support VG but extend to
things like filters as well. At the moment, ector's design
makes it quite hard to plug in the filters.
For now I think it's easier to implement the GL support for
the filters directly in the engine, where I hope to interfere
as little as possible.
This massive patch keeps only the required minimum to support
a versatile gl buffer that can be mapped, drawn or rendered to (FBO).
It's extremely inefficient as it relies on glReadPixels and lots
of texture uploads, as well as conversions between ARGB and Alpha.
Another type of GL buffer is a wrap around an existing GL image,
but that one is read-only (map or draw: no write map, no FBO).
No, all the filters run fine, and the high-level implementation
(evas_filters.c) does not need to know whether the underlying engine
is SW or GL. One problem though appears with the blending or blurring
of some Alpha buffers, the colors are wrong.
This patch removes more lines than it adds so it must be good ;)
2017-01-17 18:47:25 -08:00
|
|
|
return: bool; [[$false in case of error.]]
|
2015-12-08 00:29:54 -08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|