Enlightenment CVS committal
Author : rbdpngn
Project : e17
Module : libs/edje
Dir : e17/libs/edje/src/lib
Modified Files:
Edje.h edje_calc.c edje_load.c edje_private.h edje_text.c
edje_util.c
Log Message:
Global text and color class manipulation. Settings on individual edje's will
override the global values.
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/Edje.h,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -3 -r1.22 -r1.23
--- Edje.h 20 Oct 2003 06:10:09 -0000 1.22
+++ Edje.h 4 Nov 2003 06:15:18 -0000 1.23
@@ -29,6 +29,9 @@
Evas_List *edje_file_collection_list (const char *file);
void edje_file_collection_list_free (Evas_List *lst);
char *edje_file_data_get (const char *file, const char *key);
+
+ void edje_color_class_set(const char *color_class, int r, int g, int b,
int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3);
+ void edje_text_class_set(const char *text_class, const char *font,
Evas_Font_Size size);
void edje_extern_object_min_size_set (Evas_Object *obj, Evas_Coord minw,
Evas_Coord minh);
void edje_extern_object_max_size_set (Evas_Object *obj, Evas_Coord maxw,
Evas_Coord maxh);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_calc.c,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -3 -r1.21 -r1.22
--- edje_calc.c 31 Oct 2003 05:07:39 -0000 1.21
+++ edje_calc.c 4 Nov 2003 06:15:19 -0000 1.22
@@ -418,8 +418,11 @@
Edje_Text_Class *tc;
tc = _edje_text_class_find(ed, chosen_desc->text.text_class);
- if (tc->font) font = tc->font;
- if (tc->size > 0) size = tc->size;
+ if (tc)
+ {
+ if (tc->font) font = tc->font;
+ if (tc->size > 0) size = tc->size;
+ }
}
if (ep->text.text) text = ep->text.text;
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_load.c,v
retrieving revision 1.31
retrieving revision 1.32
diff -u -3 -r1.31 -r1.32
--- edje_load.c 31 Oct 2003 05:07:39 -0000 1.31
+++ edje_load.c 4 Nov 2003 06:15:19 -0000 1.32
@@ -40,8 +40,17 @@
{
Edje_Part *ep;
Evas_List *hist = NULL;
-
+
+ /* Register any color classes in this parts descriptions. */
ep = l->data;
+ if ((ep->default_desc) && (ep->default_desc->color_class))
_edje_color_class_member_add(ed, ep->default_desc->color_class);
+ for (hist = ep->other_desc; hist; hist = hist->next)
+ {
+ Edje_Part_Description *desc;
+
+ desc = hist->data;
+ if (desc->color_class) _edje_color_class_member_add(ed,
desc->color_class);
+ }
hist = evas_list_append(hist, ep);
while (ep->dragable.confine_id >= 0)
{
@@ -459,6 +468,7 @@
EVAS_CALLBACK_MOUSE_WHEEL,
_edje_mouse_wheel_cb);
_edje_text_part_on_del(ed, rp);
+ _edje_color_class_on_del(ed, rp);
evas_object_del(rp->object);
if (rp->swallowed_object)
{
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_private.h,v
retrieving revision 1.49
retrieving revision 1.50
diff -u -3 -r1.49 -r1.50
--- edje_private.h 31 Oct 2003 05:07:39 -0000 1.49
+++ edje_private.h 4 Nov 2003 06:15:19 -0000 1.50
@@ -586,7 +586,12 @@
Edje_Real_Part *_edje_real_part_get(Edje *ed, char *part);
Edje_Color_Class *_edje_color_class_find(Edje *ed, char *color_class);
+void _edje_color_class_member_add(Edje *ed, char *color_class);
+void _edje_color_class_member_del(Edje *ed, char *color_class);
+void _edje_color_class_on_del(Edje *ed, Edje_Real_Part *rp);
Edje_Text_Class *_edje_text_class_find(Edje *ed, char *text_class);
+void _edje_text_class_member_add(Edje *ed, char *text_class);
+void _edje_text_class_member_del(Edje *ed, char *text_class);
Edje *_edje_fetch(Evas_Object *obj);
int _edje_glob_match(char *str, char *glob);
int _edje_freeze(Edje *ed);
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_text.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -3 -r1.8 -r1.9
--- edje_text.c 31 Oct 2003 05:07:39 -0000 1.8
+++ edje_text.c 4 Nov 2003 06:15:19 -0000 1.9
@@ -1,6 +1,8 @@
#include "Edje.h"
#include "edje_private.h"
+static Evas_Hash *_edje_text_class_hash = NULL;
+
Edje_Text_Style _edje_text_styles[EDJE_TEXT_EFFECT_LAST];
void
@@ -175,6 +177,8 @@
_edje_text_part_on_add(Edje *ed, Edje_Real_Part *ep)
{
int i;
+ Evas_List *tmp;
+ Edje_Part *pt = ep->part;
if (ep->part->type != EDJE_PART_TYPE_TEXT) return;
if (ep->part->effect >= EDJE_TEXT_EFFECT_LAST) return;
@@ -188,6 +192,16 @@
evas_object_clip_set(o, ed->clipper);
evas_object_show(o);
ep->extra_objects = evas_list_append(ep->extra_objects, o);
+
+ }
+
+ if ((pt->default_desc) && (pt->default_desc->text.text_class))
_edje_text_class_member_add(ed, pt->default_desc->text.text_class);
+ for (tmp = pt->other_desc; tmp; tmp = tmp->next)
+ {
+ Edje_Part_Description *desc;
+
+ desc = tmp->data;
+ if ((desc) && (desc->text.text_class)) _edje_text_class_member_add(ed,
desc->text.text_class);
}
}
@@ -217,6 +231,9 @@
void
_edje_text_part_on_del(Edje *ed, Edje_Real_Part *ep)
{
+ Evas_List *tmp;
+ Edje_Part *pt = ep->part;
+
while (ep->extra_objects)
{
Evas_Object *o;
@@ -225,8 +242,16 @@
ep->extra_objects = evas_list_remove(ep->extra_objects, o);
evas_object_del(o);
}
+
+ if ((pt->default_desc) && (pt->default_desc->text.text_class))
_edje_text_class_member_del(ed, pt->default_desc->text.text_class);
+ for (tmp = pt->other_desc; tmp; tmp = tmp->next)
+ {
+ Edje_Part_Description *desc;
+
+ desc = tmp->data;
+ if (desc->text.text_class) _edje_text_class_member_del(ed,
desc->text.text_class);
+ }
return;
- ed = NULL;
}
void
@@ -250,8 +275,11 @@
Edje_Text_Class *tc;
tc = _edje_text_class_find(ed, chosen_desc->text.text_class);
- if (tc->font) font = tc->font;
- if (tc->size > 0) size = tc->size;
+ if (tc)
+ {
+ if (tc->font) font = tc->font;
+ if (tc->size > 0) size = tc->size;
+ }
}
if (ep->text.text) text = ep->text.text;
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/edje/src/lib/edje_util.c,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -3 -r1.27 -r1.28
--- edje_util.c 30 Oct 2003 04:45:18 -0000 1.27
+++ edje_util.c 4 Nov 2003 06:15:19 -0000 1.28
@@ -1,6 +1,12 @@
#include "Edje.h"
#include "edje_private.h"
+Evas_Hash *_edje_color_class_hash = NULL;
+Evas_Hash *_edje_color_class_member_hash = NULL;
+
+Evas_Hash *_edje_text_class_hash = NULL;
+Evas_Hash *_edje_text_class_member_hash = NULL;
+
void
edje_freeze(void)
{
@@ -60,6 +66,75 @@
}
void
+edje_color_class_set(const char *color_class, int r, int g, int b, int a, int r2, int
g2, int b2, int a2, int r3, int g3, int b3, int a3)
+{
+ Evas_List *members;
+ Edje_Color_Class *cc;
+
+ if (!color_class) return;
+
+ cc = evas_hash_find(_edje_color_class_hash, color_class);
+ if (!cc)
+ {
+ cc = malloc(sizeof(Edje_Color_Class));
+ if (!cc) return;
+ cc->name = strdup(color_class);
+ if (!cc->name)
+ {
+ free(cc);
+ return;
+ }
+ _edje_color_class_hash = evas_hash_add(_edje_color_class_hash, color_class,
cc);
+ if (evas_hash_alloc_error())
+ {
+ free(cc->name);
+ free(cc);
+ return;
+ }
+
+ }
+
+ if (r < 0) r = 0;
+ if (r > 255) r = 255;
+ if (g < 0) g = 0;
+ if (g > 255) g = 255;
+ if (b < 0) b = 0;
+ if (b > 255) b = 255;
+ if (a < 0) a = 0;
+ if (a > 255) a = 255;
+ if ((cc->r == r) && (cc->g == g) &&
+ (cc->b == b) && (cc->a == a) &&
+ (cc->r2 == r2) && (cc->g2 == g2) &&
+ (cc->b2 == b2) && (cc->a2 == a2) &&
+ (cc->r3 == r3) && (cc->g3 == g3) &&
+ (cc->b3 == b3) && (cc->a3 == a3))
+ return;
+ cc->r = r;
+ cc->g = g;
+ cc->b = b;
+ cc->a = a;
+ cc->r2 = r2;
+ cc->g2 = g2;
+ cc->b2 = b2;
+ cc->a2 = a2;
+ cc->r3 = r3;
+ cc->g3 = g3;
+ cc->b3 = b3;
+ cc->a3 = a3;
+
+ members = evas_hash_find(_edje_color_class_member_hash, color_class);
+ while (members)
+ {
+ Edje *ed;
+
+ ed = members->data;
+ ed->dirty = 1;
+ _edje_recalc(ed);
+ members = members->next;
+ }
+}
+
+void
edje_object_color_class_set(Evas_Object *obj, const char *color_class, int r, int g,
int b, int a, int r2, int g2, int b2, int a2, int r3, int g3, int b3, int a3)
{
Edje *ed;
@@ -106,6 +181,7 @@
}
}
cc = malloc(sizeof(Edje_Color_Class));
+ if (!cc) return;
cc->name = strdup(color_class);
if (!cc->name)
{
@@ -130,6 +206,65 @@
}
void
+edje_text_class_set(const char *text_class, const char *font, Evas_Font_Size size)
+{
+ Evas_List *members;
+ Edje_Text_Class *tc;
+
+ if (!text_class) return;
+
+ if (size < 0) size = 0;
+ if (!font) font = "";
+
+ tc = evas_hash_find(_edje_text_class_hash, text_class);
+ if (!tc)
+ {
+ tc = calloc(1, sizeof(Edje_Text_Class));
+ if (!tc) return;
+ tc->name = strdup(text_class);
+ if (!tc->name)
+ {
+ free(tc);
+ return;
+ }
+ _edje_text_class_hash = evas_hash_add(_edje_text_class_hash, text_class, tc);
+ if (evas_hash_alloc_error())
+ {
+ free(tc->name);
+ free(tc);
+ return;
+ }
+
+ tc->font = strdup(font);
+ tc->size = size;
+ return;
+ }
+
+ if ((tc->size == size) && (!strcmp(tc->font, font)))
+ return;
+ free(tc->font);
+ tc->font = strdup(font);
+ if (!tc->font)
+ {
+ _edje_text_class_hash = evas_hash_del(_edje_text_class_hash, text_class, tc);
+ free(tc);
+ return;
+ }
+ tc->size = size;
+
+ members = evas_hash_find(_edje_text_class_member_hash, text_class);
+ while (members)
+ {
+ Edje *ed;
+
+ ed = members->data;
+ ed->dirty = 1;
+ _edje_recalc(ed);
+ members = members->next;
+ }
+}
+
+void
edje_object_text_class_set(Evas_Object *obj, const char *text_class, const char
*font, Evas_Font_Size size)
{
Edje *ed;
@@ -161,6 +296,7 @@
}
}
tc = malloc(sizeof(Edje_Text_Class));
+ if (!tc) return;
tc->name = strdup(text_class);
if (!tc->name)
{
@@ -876,7 +1012,7 @@
{
Evas_List *l;
- if (!color_class) return NULL;
+ if ((!ed) || (!color_class)) return;
for (l = ed->color_classes; l; l = l->next)
{
Edje_Color_Class *cc;
@@ -884,7 +1020,50 @@
cc = l->data;
if (!strcmp(color_class, cc->name)) return cc;
}
- return NULL;
+ return evas_hash_find(_edje_color_class_hash, color_class);
+}
+
+void
+_edje_color_class_member_add(Edje *ed, char *color_class)
+{
+ Evas_List *members;
+
+ if ((!ed) || (!color_class)) return;
+ members = evas_hash_find(_edje_color_class_member_hash, color_class);
+ if (members) _edje_color_class_member_hash =
evas_hash_del(_edje_color_class_member_hash, color_class, members);
+
+ members = evas_list_prepend(members, ed);
+ _edje_color_class_member_hash = evas_hash_add(_edje_color_class_member_hash,
color_class, members);
+}
+
+void
+_edje_color_class_member_del(Edje *ed, char *color_class)
+{
+ Evas_List *members, *tmp = NULL;
+
+ if ((!ed) || (!color_class)) return;
+ members = evas_hash_find(_edje_color_class_member_hash, color_class);
+ if (!members) return;
+
+ _edje_color_class_member_hash = evas_hash_del(_edje_color_class_member_hash,
color_class, members);
+ members = evas_list_remove(members, ed);
+ if (members) _edje_color_class_member_hash =
evas_hash_add(_edje_color_class_member_hash, color_class, members);
+}
+
+void
+_edje_color_class_on_del(Edje *ed, Edje_Real_Part *rp)
+{
+ Evas_List *tmp;
+ Edje_Part *ep = rp->part;
+
+ if ((ep->default_desc) && (ep->default_desc->color_class))
_edje_color_class_member_del(ed, ep->default_desc->color_class);
+ for (tmp = ep->other_desc; tmp; tmp = tmp->next)
+ {
+ Edje_Part_Description *desc;
+
+ desc = tmp->data;
+ if (desc->color_class) _edje_color_class_member_del(ed, desc->color_class);
+ }
}
Edje_Text_Class *
@@ -892,7 +1071,7 @@
{
Evas_List *l;
- if (!text_class) return NULL;
+ if ((!ed) || (!text_class)) return;
for (l = ed->text_classes; l; l = l->next)
{
Edje_Text_Class *tc;
@@ -900,7 +1079,34 @@
tc = l->data;
if (!strcmp(text_class, tc->name)) return tc;
}
- return NULL;
+ return evas_hash_find(_edje_text_class_hash, text_class);
+}
+
+void
+_edje_text_class_member_add(Edje *ed, char *text_class)
+{
+ Evas_List *members;
+
+ if ((!ed) || (!text_class)) return;
+ members = evas_hash_find(_edje_text_class_member_hash, text_class);
+ if (members) _edje_text_class_member_hash =
evas_hash_del(_edje_text_class_member_hash, text_class, members);
+
+ members = evas_list_prepend(members, ed);
+ _edje_text_class_member_hash = evas_hash_add(_edje_text_class_member_hash,
text_class, members);
+}
+
+void
+_edje_text_class_member_del(Edje *ed, char *text_class)
+{
+ Evas_List *members, *tmp = NULL;
+
+ if ((!ed) || (!text_class)) return;
+ members = evas_hash_find(_edje_text_class_member_hash, text_class);
+ if (!members) return;
+
+ _edje_text_class_member_hash = evas_hash_del(_edje_text_class_member_hash,
text_class, members);
+ members = evas_list_remove(members, ed);
+ if (members) _edje_text_class_member_hash =
evas_hash_add(_edje_text_class_member_hash, text_class, members);
}
Edje *
-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
Does SourceForge.net help you be more productive? Does it
help you create better code? SHARE THE LOVE, and help us help
YOU! Click Here: http://sourceforge.net/donate/
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs