Enlightenment CVS committal
Author : raster
Project : e17
Module : libs/edje
Dir : e17/libs/edje/src/lib
Modified Files:
Edje_Edit.h edje_calc.c edje_data.c
Log Message:
just when you thoguht all was stable in edje land... i added a tag and field!
never fear. its backwards compatible. this lets you choose how aspect is
calculated and confined :)
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/Edje_Edit.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -3 -r1.9 -r1.10
--- Edje_Edit.h 27 Apr 2004 08:16:12 -0000 1.9
+++ Edje_Edit.h 24 May 2004 07:58:37 -0000 1.10
@@ -128,6 +128,10 @@
#define EDJE_VAR_FLOAT 2
#define EDJE_VAR_STRING 3
+#define EDJE_ASPECT_PREFER_NONE 0
+#define EDJE_ASPECT_PREFER_VERTICAL 1
+#define EDJE_ASPECT_PREFER_HORIZONTAL 2
+
#define EDJE_VAR_MAGIC_BASE 0x12fe84ba
/*----------*/
@@ -304,6 +308,7 @@
struct {
double min, max; /* aspect = w/h */
+ unsigned char prefer; /* NEITHER = 0, VERTICAL = 1, HORIZONTAL = 2 */
} aspect;
struct {
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_calc.c,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -3 -r1.28 -r1.29
--- edje_calc.c 27 Apr 2004 08:16:13 -0000 1.28
+++ edje_calc.c 24 May 2004 07:58:37 -0000 1.29
@@ -316,6 +316,7 @@
params->y + 1;
/* aspect */
+#if 0
if (params->h > 0)
{
double aspect;
@@ -368,7 +369,122 @@
}
}
}
-
+#else
+ if (params->h > 0)
+ {
+ double aspect;
+ double new_w, new_h;
+
+ new_h = params->h;
+ new_w = params->w;
+ aspect = (double)params->w / (double)params->h;
+ if (desc->aspect.prefer == EDJE_ASPECT_PREFER_NONE) /* keep both dimensions in
check */
+ {
+ /* adjust for max aspect (width / height) */
+ if ((desc->aspect.max > 0.0) && (aspect > desc->aspect.max))
+ {
+ new_h = (params->w / desc->aspect.max);
+ new_w = (params->h * desc->aspect.max);
+ }
+ printf("[a] %s [%3.3f -> %3.3f] (%ix%i) -> (%3.3fx%3.3f)\n",
+ ep->part->name,
+ desc->aspect.min, desc->aspect.max,
+ params->w, params->h,
+ new_w, new_h);
+ /* adjust for min aspect (width / height) */
+ if ((desc->aspect.min > 0.0) && (aspect < desc->aspect.min))
+ {
+ new_h = (params->w / desc->aspect.min);
+ new_w = (params->h * desc->aspect.min);
+ }
+ printf(" [b] %s [%3.3f -> %3.3f] (%ix%i) -> (%3.3fx%3.3f)\n",
+ ep->part->name,
+ desc->aspect.min, desc->aspect.max,
+ params->w, params->h,
+ new_w, new_h);
+ } /* prefer vertical size as determiner */
+ else if (desc->aspect.prefer == EDJE_ASPECT_PREFER_VERTICAL) /* keep both
dimensions in check */
+ {
+ /* adjust for max aspect (width / height) */
+ if ((desc->aspect.max > 0.0) && (aspect > desc->aspect.max))
+ {
+ new_w = (params->h * desc->aspect.max);
+ }
+ printf("[a] %s [%3.3f -> %3.3f] (%ix%i) -> (%3.3fx%3.3f)\n",
+ ep->part->name,
+ desc->aspect.min, desc->aspect.max,
+ params->w, params->h,
+ new_w, new_h);
+ /* adjust for min aspect (width / height) */
+ if ((desc->aspect.min > 0.0) && (aspect < desc->aspect.min))
+ {
+ new_w = (params->h * desc->aspect.min);
+ }
+ printf(" [b] %s [%3.3f -> %3.3f] (%ix%i) -> (%3.3fx%3.3f)\n",
+ ep->part->name,
+ desc->aspect.min, desc->aspect.max,
+ params->w, params->h,
+ new_w, new_h);
+ } /* prefer horizontal size as determiner */
+ else if (desc->aspect.prefer == EDJE_ASPECT_PREFER_HORIZONTAL) /* keep both
dimensions in check */
+ {
+ /* adjust for max aspect (width / height) */
+ if ((desc->aspect.max > 0.0) && (aspect > desc->aspect.max))
+ {
+ new_h = (params->w / desc->aspect.max);
+ }
+ printf("[a] %s [%3.3f -> %3.3f] (%ix%i) -> (%3.3fx%3.3f)\n",
+ ep->part->name,
+ desc->aspect.min, desc->aspect.max,
+ params->w, params->h,
+ new_w, new_h);
+ /* adjust for min aspect (width / height) */
+ if ((desc->aspect.min > 0.0) && (aspect < desc->aspect.min))
+ {
+ new_h = (params->w / desc->aspect.min);
+ }
+ printf(" [b] %s [%3.3f -> %3.3f] (%ix%i) -> (%3.3fx%3.3f)\n",
+ ep->part->name,
+ desc->aspect.min, desc->aspect.max,
+ params->w, params->h,
+ new_w, new_h);
+ }
+ /* do real adjustment */
+ if ((params->h - new_h) > (params->w - new_w))
+ {
+ if (params->h < new_h)
+ {
+ params->y = params->y +
+ ((params->h - new_h) * (1.0 - desc->align.y));
+ params->h = new_h;
+ }
+ else if (params->h > new_h)
+ {
+ params->y = params->y +
+ ((params->h - new_h) * desc->align.y);
+ params->h = new_h;
+ }
+ params->w = new_w;
+ }
+ else
+ {
+ if (params->w < new_w)
+ {
+ params->x = params->x +
+ ((params->w - new_w) * (1.0 - desc->align.x));
+ params->w = new_w;
+ }
+ else if (params->w > new_w)
+ {
+ params->x = params->x +
+ ((params->w - new_w) * desc->align.x);
+ params->w = new_w;
+ }
+ params->h = new_h;
+ }
+ }
+#endif
+
/* size step */
if (desc->step.x > 0)
{
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_data.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -3 -r1.16 -r1.17
--- edje_data.c 8 Mar 2004 02:43:48 -0000 1.16
+++ edje_data.c 24 May 2004 07:58:37 -0000 1.17
@@ -146,6 +146,7 @@
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "step.y", step.y, EET_T_INT);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "aspect.min", aspect.min, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "aspect.max", aspect.max, EET_T_DOUBLE);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "aspect.prefer", aspect.prefer, EET_T_CHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "rel1.relative_x", rel1.relative_x, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "rel1.relative_y", rel1.relative_y, EET_T_DOUBLE);
EET_DATA_DESCRIPTOR_ADD_BASIC(_edje_edd_edje_part_description,
Edje_Part_Description, "rel1.offset_x", rel1.offset_x, EET_T_INT);
-------------------------------------------------------
This SF.Net email is sponsored by: Oracle 10g
Get certified on the hottest thing ever to hit the market... Oracle 10g.
Take an Oracle 10g class now, and we'll give you the exam FREE.
http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs