forked from enlightenment/efl
ector: add initial interface for Surface and Renderer.
This commit is contained in:
parent
5e75d607c6
commit
0510ea90bd
8
AUTHORS
8
AUTHORS
|
@ -77,6 +77,14 @@ Eo
|
||||||
--
|
--
|
||||||
|
|
||||||
Tom Hacohen <tom@stosb.com>
|
Tom Hacohen <tom@stosb.com>
|
||||||
|
Cedric Bail <cedric.bail@free.fr>
|
||||||
|
|
||||||
|
Ector
|
||||||
|
-----
|
||||||
|
|
||||||
|
Cedric Bail <cedric.bail@free.fr>
|
||||||
|
Jorge Luis Zapata Muga <jorgeluis.zapata@gmail.com>
|
||||||
|
Jose O Gonzalez <jose_ogp@juno.com>
|
||||||
|
|
||||||
Evas
|
Evas
|
||||||
----
|
----
|
||||||
|
|
|
@ -1,5 +1,19 @@
|
||||||
|
|
||||||
### Library
|
### Library
|
||||||
|
ector_eolian_files = \
|
||||||
|
lib/ector/ector_surface.eo \
|
||||||
|
lib/ector/ector_renderer.eo
|
||||||
|
|
||||||
|
ector_eolian_c = $(ector_eolian_files:%.eo=%.eo.c)
|
||||||
|
ector_eolian_h = $(ector_eolian_files:%.eo=%.eo.h)
|
||||||
|
|
||||||
|
BUILT_SOURCES += \
|
||||||
|
$(ector_eolian_c) \
|
||||||
|
$(ector_eolian_h)
|
||||||
|
|
||||||
|
CLEANFILES += \
|
||||||
|
$(ector_eolian_c) \
|
||||||
|
$(ector_eolian_h)
|
||||||
|
|
||||||
lib_LTLIBRARIES += lib/ector/libector.la
|
lib_LTLIBRARIES += lib/ector/libector.la
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
#include <Eina.h>
|
#include <Eina.h>
|
||||||
#include <Eo.h>
|
#include <Eo.h>
|
||||||
|
#include <Evas.h>
|
||||||
|
|
||||||
#ifdef EAPI
|
#ifdef EAPI
|
||||||
# undef EAPI
|
# undef EAPI
|
||||||
|
@ -103,6 +104,55 @@ typedef Eo Ector_Surface;
|
||||||
*/
|
*/
|
||||||
typedef Eo Ector_Renderer;
|
typedef Eo Ector_Renderer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @typedef Ector_Colorspace
|
||||||
|
* The definiton of colorspace.
|
||||||
|
*/
|
||||||
|
typedef Evas_Colorspace Ector_Colorspace;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Raster operations at pixel level
|
||||||
|
*/
|
||||||
|
typedef enum _Ector_Rop
|
||||||
|
{
|
||||||
|
ECTOR_ROP_BLEND, /**< D = S + D(1 - Sa) */
|
||||||
|
ECTOR_ROP_COPY, /**< D = S */
|
||||||
|
ECTOR_ROP_LAST
|
||||||
|
} Ector_Rop;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Quality values
|
||||||
|
*/
|
||||||
|
typedef enum _Ector_Quality
|
||||||
|
{
|
||||||
|
ECTOR_QUALITY_BEST, /**< Best quality */
|
||||||
|
ECTOR_QUALITY_GOOD, /**< Good quality */
|
||||||
|
ECTOR_QUALITY_FAST, /**< Lower quality, fastest */
|
||||||
|
ECTOR_QUALITY_LAST
|
||||||
|
} Ector_Quality;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Priorities
|
||||||
|
*/
|
||||||
|
typedef enum _Ector_Priority
|
||||||
|
{
|
||||||
|
ECTOR_PRIORITY_NONE = 0,
|
||||||
|
ECTOR_PRIORITY_MARGINAL = 64,
|
||||||
|
ECTOR_PRIORITY_SECONDARY = 128,
|
||||||
|
ECTOR_PRIORITY_PRIMARY = 256,
|
||||||
|
} Ector_Priority;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* What kind of update is being pushed
|
||||||
|
*/
|
||||||
|
typedef enum _Ector_Update_Type
|
||||||
|
{
|
||||||
|
ECTOR_UPDATE_BACKGROUND = 1, /* All the previous state in that area is reset to the new updated profile */
|
||||||
|
ECTOR_UPDATE_EMPTY = 2, /* Pushing empty area (no visible pixels at all, no need to read this surface to render it) */
|
||||||
|
ECTOR_UPDATE_ALPHA = 4, /* Pushing some transparent pixels (this impact the under layer and will require to read back the surface where this surface is blitted) */
|
||||||
|
ECTOR_UPDATE_OPAQUE = 8 /* Pushing some opaque pixels (this means that their is no need to read the under layer when blitting this surface) */
|
||||||
|
} Ector_Update_Type;
|
||||||
|
|
||||||
#ifdef EFL_BETA_API_SUPPORT
|
#ifdef EFL_BETA_API_SUPPORT
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -121,6 +171,9 @@ EAPI int ector_init(void);
|
||||||
*/
|
*/
|
||||||
EAPI int ector_shutdown(void);
|
EAPI int ector_shutdown(void);
|
||||||
|
|
||||||
|
#include "ector_surface.h"
|
||||||
|
#include "ector_renderer.h"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,114 @@
|
||||||
|
abstract Ector.Renderer (Eo.Base)
|
||||||
|
{
|
||||||
|
eo_prefix: ector_renderer;
|
||||||
|
legacy_prefix: null;
|
||||||
|
properties {
|
||||||
|
transformation {
|
||||||
|
set {
|
||||||
|
}
|
||||||
|
get {
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
Eina_Matrix3 m;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
origin {
|
||||||
|
set {
|
||||||
|
}
|
||||||
|
get {
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
double x;
|
||||||
|
double y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
visibility {
|
||||||
|
set {
|
||||||
|
/*@ Makes the given Ector renderer visible or invisible. */
|
||||||
|
}
|
||||||
|
get {
|
||||||
|
/*@ Retrieves whether or not the given Ector renderer is visible. */
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
bool v; /*@ @c EINA_TRUE if to make the object visible, @c EINA_FALSE otherwise */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
color {
|
||||||
|
set {
|
||||||
|
/*@
|
||||||
|
Sets the general/main color of the given Ector renderer to the given
|
||||||
|
one.
|
||||||
|
|
||||||
|
@note These color values are expected to be premultiplied by @p a.
|
||||||
|
|
||||||
|
@ingroup Ector_Renderer_Group_Basic */
|
||||||
|
}
|
||||||
|
get {
|
||||||
|
/*@
|
||||||
|
Retrieves the general/main color of the given Ector renderer.
|
||||||
|
|
||||||
|
Retrieves the “main” color's RGB component (and alpha channel)
|
||||||
|
values, <b>which range from 0 to 255</b>. For the alpha channel,
|
||||||
|
which defines the object's transparency level, 0 means totally
|
||||||
|
transparent, while 255 means opaque. These color values are
|
||||||
|
premultiplied by the alpha value.
|
||||||
|
|
||||||
|
@note Use @c NULL pointers on the components you're not interested
|
||||||
|
in: they'll be ignored by the function.
|
||||||
|
|
||||||
|
@ingroup Ector_Renderer_Group_Basic */
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
int r; /*@ The red component of the given color. */
|
||||||
|
int g; /*@ The green component of the given color. */
|
||||||
|
int b; /*@ The blue component of the given color. */
|
||||||
|
int a; /*@ The alpha component of the given color. */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
mask {
|
||||||
|
set {
|
||||||
|
}
|
||||||
|
get {
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
Ector_Renderer *r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
quality {
|
||||||
|
set {
|
||||||
|
}
|
||||||
|
get {
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
Ector_Quality q;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
methods {
|
||||||
|
bounds_get {
|
||||||
|
return: bool @warn_unused;
|
||||||
|
params {
|
||||||
|
@out Eina_Rectangle *r;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
draw {
|
||||||
|
return: bool @warn_unused;
|
||||||
|
params {
|
||||||
|
@in Ector_Surface *s;
|
||||||
|
@in Ector_Rop op;
|
||||||
|
@in array<Eina_Rectangle *> *clips; /*@ array of Eina_Rectangle clip */
|
||||||
|
@in int x;
|
||||||
|
@in int y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
prepare {
|
||||||
|
return: bool @warn_unused;
|
||||||
|
params {
|
||||||
|
@in Ector_Surface *s;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
done {
|
||||||
|
return: bool @warn_unused;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef ECTOR_RENDERER_H
|
||||||
|
#define ECTOR_RENDERER_H
|
||||||
|
|
||||||
|
#include "ector_renderer.eo.h"
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,40 @@
|
||||||
|
abstract Ector.Surface (Eo.Base)
|
||||||
|
{
|
||||||
|
eo_prefix: ector_surface;
|
||||||
|
properties {
|
||||||
|
size {
|
||||||
|
set {
|
||||||
|
/*@ Changes the size of the given Evas object. */
|
||||||
|
}
|
||||||
|
get {
|
||||||
|
/*@ Retrieves the (rectangular) size of the given Evas object. */
|
||||||
|
}
|
||||||
|
values {
|
||||||
|
int w; /*@ in */
|
||||||
|
int h; /*@ in */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
methods {
|
||||||
|
renderer_factory_new {
|
||||||
|
return: Ector_Renderer *;
|
||||||
|
params {
|
||||||
|
@in const(Eo_Class) * type @nonull;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
update_push {
|
||||||
|
return: bool;
|
||||||
|
params {
|
||||||
|
@in const(Eina_Rectangle) * r @nonull;
|
||||||
|
@in Ector_Update_Type type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
update_reset {
|
||||||
|
return: bool;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
implements {
|
||||||
|
@virtual .size.set;
|
||||||
|
@virtual .size.get;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
#ifndef ECTOR_SURFACE_H
|
||||||
|
#define ECTOR_SURFACE_H
|
||||||
|
|
||||||
|
#include "ector_surface.eo.h"
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in New Issue