Enlightenment CVS committal
Author : rephorm
Project : e17
Module : libs/edje
Dir : e17/libs/edje/src/lib
Modified Files:
edje_calc.c edje_data.c edje_private.h
Log Message:
add linear gradient specific fill options
used (inside a part description) as follows:
Horizontal from left to right filling entire part:
gradient {
spectrum: "black_to_white";
rel1 {
relative: 0 0.5;
offset: 0 0;
}
rel2 {
relative: 1 0.5;
offset: -1 0;
}
}
Diagonal from top left to bottom right:
gradient {
spectrum: "black_to_white";
rel1 {
relative: 0 0;
offset: 0 0;
}
rel2 {
relative: 1 1;
offset: -1 -1;
}
}
If either rel1 or rel2 is present in the gradient block of a linear gradient,
these will override any angle/origin/size specified in the fill block ('spread'
is still honored).
===================================================================
RCS file: /cvs/e/e17/libs/edje/src/lib/edje_calc.c,v
retrieving revision 1.87
retrieving revision 1.88
diff -u -3 -r1.87 -r1.88
--- edje_calc.c 8 Aug 2006 20:25:24 -0000 1.87
+++ edje_calc.c 21 Aug 2006 03:00:01 -0000 1.88
@@ -906,19 +906,69 @@
}
}
/* fill */
- params->smooth = desc->fill.smooth;
- if (flags & FLAG_X)
+
+ if (ep->part->type == EDJE_PART_TYPE_GRADIENT && desc->gradient.use_rel &&
(!desc->gradient.type || !strcmp(desc->gradient.type, "linear")))
{
- params->fill.x = desc->fill.pos_abs_x + (params->w *
desc->fill.pos_rel_x);
- params->fill.w = desc->fill.abs_x + (params->w * desc->fill.rel_x);
+ int x2, y2;
+ int dx, dy;
+ double m;
+ int angle;
+
+ params->fill.x = desc->gradient.rel1.offset_x + (params->w *
desc->gradient.rel1.relative_x);
+ params->fill.y = desc->gradient.rel1.offset_y + (params->h *
desc->gradient.rel1.relative_y);
+
+ x2 = desc->gradient.rel2.offset_x + (params->w *
desc->gradient.rel2.relative_x);
+ y2 = desc->gradient.rel2.offset_y + (params->h *
desc->gradient.rel2.relative_y);
+
+ params->fill.w = 1; /* doesn't matter for linear grads */
+
+ dy = y2 - params->fill.y;
+ dx = x2 - params->fill.x;
+ params->fill.h = sqrt(dx * dx + dy * dy);
+
+ params->fill.spread = desc->fill.spread;
+
+ if (dx == 0 && dy == 0)
+ {
+ angle = 0;
+ }
+ else if (dx == 0)
+ {
+ if (dy > 0) angle = 0;
+ else angle = 180;
+ }
+ else if (dy == 0)
+ {
+ if (dx > 0) angle = 270;
+ else angle = 90;
+ }
+ else
+ {
+ m = (double)dx / (double)dy;
+ angle = atan(m) * 180 / M_PI;
+ if (dy < 0)
+ angle = 180 - angle;
+ else
+ angle = 360 - angle;
+ }
+ params->fill.angle = angle;
}
- if (flags & FLAG_Y)
+ else
{
- params->fill.y = desc->fill.pos_abs_y + (params->h *
desc->fill.pos_rel_y);
- params->fill.h = desc->fill.abs_y + (params->h * desc->fill.rel_y);
+ params->smooth = desc->fill.smooth;
+ if (flags & FLAG_X)
+ {
+ params->fill.x = desc->fill.pos_abs_x + (params->w *
desc->fill.pos_rel_x);
+ params->fill.w = desc->fill.abs_x + (params->w * desc->fill.rel_x);
+ }
+ if (flags & FLAG_Y)
+ {
+ params->fill.y = desc->fill.pos_abs_y + (params->h *
desc->fill.pos_rel_y);
+ params->fill.h = desc->fill.abs_y + (params->h * desc->fill.rel_y);
+ }
+ params->fill.angle = desc->fill.angle;
+ params->fill.spread = desc->fill.spread;
}
- params->fill.angle = desc->fill.angle;
- params->fill.spread = desc->fill.spread;
/* colors */
params->color.r = desc->color.r;
===================================================================
RCS file: /cvs/e/e17/libs/edje/src/lib/edje_data.c,v
retrieving revision 1.32
retrieving revision 1.33
diff -u -3 -r1.32 -r1.33
--- edje_data.c 2 Aug 2006 10:52:44 -0000 1.32
+++ edje_data.c 21 Aug 2006 03:00:01 -0000 1.33
@@ -322,6 +322,15 @@
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "text.elipsis", text.elipsis, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "gradient.id", gradient.id, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "gradient.type", gradient.type, EET_T_STRING);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "gradient.use_rel", gradient.use_rel, EET_T_INT);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "gradient.rel1.relative_x", gradient.rel1.relative_x,
EET_T_DOUBLE);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "gradient.rel1.relative_y", gradient.rel1.relative_y,
EET_T_DOUBLE);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "gradient.rel1.offset_x", gradient.rel1.offset_x,
EET_T_INT);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "gradient.rel1.offset_y", gradient.rel1.offset_y,
EET_T_INT);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "gradient.rel2.relative_x", gradient.rel2.relative_x,
EET_T_DOUBLE);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "gradient.rel2.relative_y", gradient.rel2.relative_y,
EET_T_DOUBLE);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "gradient.rel2.offset_x", gradient.rel2.offset_x,
EET_T_INT);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "gradient.rel2.offset_y", gradient.rel2.offset_y,
EET_T_INT);
NEWD("Edje_Part",
Edje_Part);
===================================================================
RCS file: /cvs/e/e17/libs/edje/src/lib/edje_private.h,v
retrieving revision 1.113
retrieving revision 1.114
diff -u -3 -r1.113 -r1.114
--- edje_private.h 2 Aug 2006 10:52:44 -0000 1.113
+++ edje_private.h 21 Aug 2006 03:00:01 -0000 1.114
@@ -468,9 +468,16 @@
} image;
struct {
- int id; /* the spectrum id to use */
- char *type; /* type of spectrum - 'linear', 'radial', etc */
- char *params; /* params for spectrum type */
+ int id; /* the spectrum id to use */
+ char *type; /* type of spectrum - 'linear', 'radial', etc */
+ char *params; /* params for spectrum type */
+ int use_rel; /* 1 - use rel1,rel2; 0 - use fill */
+ struct {
+ double relative_x;
+ double relative_y;
+ int offset_x;
+ int offset_y;
+ } rel1, rel2; /* linear gradient fill options */
} gradient;
struct {
-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs