Enlightenment CVS committal Author : leviathan Project : e17 Module : libs/engrave
Dir : e17/libs/engrave/src/lib Modified Files: engrave_canvas.c engrave_part.c engrave_part.h engrave_part_state.c engrave_part_state.h Log Message: Canvas patch from DaveMDS =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_canvas.c,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- engrave_canvas.c 6 Jan 2007 21:33:48 -0000 1.6 +++ engrave_canvas.c 14 Jan 2007 15:48:53 -0000 1.7 @@ -32,25 +32,20 @@ static void engrave_canvas_redraw(Evas_Object *o, Engrave_Canvas *ec); static void engrave_canvas_part_redraw(Engrave_Part *ep, void *data); -static void engrave_canvas_part_state_redraw(Engrave_Part_State *eps, - Engrave_Part *ep, void *data); -static void engrave_canvas_part_state_recalc(Engrave_Canvas *ec, - Engrave_Part_State *eps, + +static void engrave_canvas_part_recalc(Engrave_Canvas *ec, + Engrave_Part *ep, Engrave_Part_State *rel1_to_x, Engrave_Part_State *rel1_to_y, Engrave_Part_State *rel2_to_x, Engrave_Part_State *rel2_to_y, Engrave_Part_State *confine); -static Evas_Object *engrave_canvas_part_state_image_setup(Evas *evas, Engrave_File *ef, - Engrave_Part_State *eps); -static Evas_Object *engrave_canvas_part_state_text_setup(Evas *evas, - Engrave_Part_State *eps); -static Evas_Object *engrave_canvas_part_state_rect_setup(Evas *evas, - Engrave_Part_State *eps); +static void engrave_canvas_part_state_text_setup(Engrave_Part_State *eps); +static void engrave_canvas_part_state_rect_setup(Engrave_Part_State *eps); +static void engrave_canvas_part_state_image_setup(Engrave_Part_State *eps); static void engrave_canvas_part_hide(Engrave_Part *ep, void *data); -static void engrave_canvas_part_state_hide(Engrave_Part_State *eps, void *data); /** * engrave_canvas_new - create a new cavnas @@ -126,15 +121,9 @@ static void engrave_canvas_part_hide(Engrave_Part *ep, void *data) { - engrave_part_state_foreach(ep, engrave_canvas_part_state_hide, NULL); -} - -static void -engrave_canvas_part_state_hide(Engrave_Part_State *eps, void *data) -{ - evas_object_hide(eps->object); + evas_object_hide(ep->object); } - + static void engrave_canvas_redraw(Evas_Object *o, Engrave_Canvas *ec) { @@ -144,168 +133,113 @@ static void engrave_canvas_part_redraw(Engrave_Part *ep, void *data) { - Engrave_Part_State *eps; - - /* - * only want to draw one state for a part. The default one for now. - * XXX need to fix this tho to draw the selected visible state ... - */ - eps = engrave_part_state_by_name_value_find(ep, "default", 0.0); - engrave_canvas_part_state_redraw(eps, ep, data); -} - -static void -engrave_canvas_part_state_redraw(Engrave_Part_State *eps, - Engrave_Part *ep, void *data) -{ - Engrave_Group *eg; - Evas_Object *o, *eps_object; - Engrave_Canvas *ec; - Engrave_Part *rel1_to_x = NULL, *rel1_to_y = NULL; - Engrave_Part *rel2_to_x = NULL, *rel2_to_y = NULL, *confine = NULL; - - if (!eps) return; - - o = data; - ec = evas_object_smart_data_get(o); - if (!ec) return; - - if (!(eps_object = engrave_part_state_evas_object_get(eps))) { - Evas *evas; - - evas = evas_object_evas_get(o); - switch(engrave_part_type_get(ep)) { - case ENGRAVE_PART_TYPE_IMAGE: - eps_object = engrave_canvas_part_state_image_setup(evas, - ec->engrave_file, eps); - break; - - case ENGRAVE_PART_TYPE_TEXT: - eps_object = engrave_canvas_part_state_text_setup(evas, eps); - break; - - case ENGRAVE_PART_TYPE_RECT: - eps_object = engrave_canvas_part_state_rect_setup(evas, eps); - break; - - case ENGRAVE_PART_TYPE_SWALLOW: - /* XXX ?? */ - break; - - default: - break; - } - engrave_part_state_evas_object_set(eps, eps_object); - evas_object_clip_set(eps_object, ec->clip); + Engrave_Part_State *eps = NULL; + Evas_Object *o, *ep_object; + Engrave_Group *eg; + Engrave_Canvas *ec; + Engrave_Part *rel1_to_x = NULL, *rel1_to_y = NULL; + Engrave_Part *rel2_to_x = NULL, *rel2_to_y = NULL, *confine = NULL; + + + if (!ep) return; + + o = data; + ec = evas_object_smart_data_get(o); + if (!ec) return; + + eps = engrave_part_current_state_get(ep); + + if (!eps) + eps = engrave_part_state_by_name_value_find(ep,"default", 0.0); + + if (!(ep_object = engrave_part_evas_object_get(ep))) { + Evas *evas = evas_object_evas_get(o); + + if (engrave_part_type_get(ep) == ENGRAVE_PART_TYPE_IMAGE) + ep_object = evas_object_image_add(evas); + if (engrave_part_type_get(ep) == ENGRAVE_PART_TYPE_TEXT) + ep_object = evas_object_text_add(evas); + if (engrave_part_type_get(ep) == ENGRAVE_PART_TYPE_RECT) + ep_object = evas_object_rectangle_add(evas); + /*if (engrave_part_type_get(ep) == ENGRAVE_PART_TYPE_SWALLOW) + ep_object = XXX ?? */ + + engrave_part_evas_object_set(ep, ep_object); + evas_object_clip_set(ep_object, ec->clip); } - + eg = engrave_part_parent_get(ep); if (engrave_part_state_rel1_to_x_get(eps)) { rel1_to_x = engrave_group_part_by_name_find(eg, engrave_part_state_rel1_to_x_get(eps)); - engrave_canvas_part_state_redraw(engrave_part_current_state_get(rel1_to_x), - rel1_to_x, data); + engrave_canvas_part_redraw(rel1_to_x, data); } if (engrave_part_state_rel1_to_y_get(eps)) { rel1_to_y = engrave_group_part_by_name_find(eg, engrave_part_state_rel1_to_y_get(eps)); - engrave_canvas_part_state_redraw(engrave_part_current_state_get(rel1_to_y), - rel1_to_y, data); + engrave_canvas_part_redraw(rel1_to_y, data); } if (engrave_part_state_rel2_to_x_get(eps)) { rel2_to_x = engrave_group_part_by_name_find(eg, engrave_part_state_rel2_to_x_get(eps)); - engrave_canvas_part_state_redraw(engrave_part_current_state_get(rel2_to_x), - rel2_to_x, data); + engrave_canvas_part_redraw(rel2_to_x, data); } if (engrave_part_state_rel2_to_y_get(eps)) { rel2_to_y = engrave_group_part_by_name_find(eg, engrave_part_state_rel2_to_y_get(eps)); - engrave_canvas_part_state_redraw(engrave_part_current_state_get(rel2_to_y), - rel2_to_y, data); + engrave_canvas_part_redraw(rel2_to_y, data); } if (engrave_part_dragable_confine_get(ep)) { confine = engrave_group_part_by_name_find(eg, engrave_part_dragable_confine_get(ep)); - engrave_canvas_part_state_redraw(engrave_part_current_state_get(confine), - confine, data); + engrave_canvas_part_redraw(confine, data); } - engrave_canvas_part_state_recalc(ec, eps, + engrave_canvas_part_recalc(ec, ep, engrave_part_current_state_get(rel1_to_x), engrave_part_current_state_get(rel1_to_y), engrave_part_current_state_get(rel2_to_x), engrave_part_current_state_get(rel2_to_y), engrave_part_current_state_get(confine)); - - if (engrave_part_type_get(ep) == ENGRAVE_PART_TYPE_RECT) { - int r, g, b, a; - - evas_object_move(eps_object, ec->x + eps->pos.x, - ec->y + eps->pos.y); - evas_object_resize(eps_object, eps->pos.w, eps->pos.h); - - engrave_part_state_color_get(eps, &r, &g, &b, &a); - evas_object_color_set(eps_object, r, g, b, a); - - } else if (engrave_part_type_get(ep) == ENGRAVE_PART_TYPE_TEXT) { - int r, g, b, a; - int offset_x = 0, offset_y = 0; - - /* XXX this needs a lot of work ... */ - evas_object_move(eps_object, ec->x + eps->pos.x + offset_x, - ec->y + eps->pos.y + offset_y); - engrave_part_state_color_get(eps, &r, &g, &b, &a); - evas_object_color_set(eps_object, r, g, b, a); - - } else if (engrave_part_type_get(ep) == ENGRAVE_PART_TYPE_IMAGE) { - double pos_rel_x, pos_rel_y, rel_x, rel_y; - int pos_abs_x, pos_abs_y, abs_x, abs_y; - double fill_x, fill_y, fill_w, fill_h; - int l, r, t, b; - - engrave_part_state_fill_origin_relative_get(eps, - &pos_rel_x, &pos_rel_y); - engrave_part_state_fill_size_relative_get(eps, &rel_x, &rel_y); - engrave_part_state_fill_origin_offset_get(eps, - &pos_abs_x, &pos_abs_y); - engrave_part_state_fill_size_offset_get(eps, &abs_x, &abs_y); - - fill_x = pos_abs_x + (eps->pos.w * pos_rel_x); - fill_y = pos_abs_y + (eps->pos.w * pos_rel_y); - fill_w = abs_x + (eps->pos.w * rel_x); - fill_h = abs_y + (eps->pos.h * rel_y); - - evas_object_move(eps_object, ec->x + eps->pos.x, - ec->y + eps->pos.y); - evas_object_resize(eps_object, eps->pos.w, eps->pos.h); - evas_object_image_fill_set(eps_object, fill_x, fill_y, fill_w, fill_h); - evas_object_image_smooth_scale_set(eps_object, - engrave_part_state_fill_smooth_get(eps)); - - engrave_part_state_image_border_get(eps, &l, &r, &t, &b); - evas_object_image_border_set(eps_object, l, r, t, b); - - engrave_part_state_color_get(eps, &l, &r, &t, &b); - evas_object_color_set(eps_object, l, r, t, b); - - } else if (engrave_part_type_get(ep) == ENGRAVE_PART_TYPE_SWALLOW) { - evas_object_move(eps_object, ec->x + eps->pos.x, ec->y + eps->pos.y); - evas_object_resize(eps_object, eps->pos.w, eps->pos.h); - } - - if (engrave_part_state_visible_get(eps)) - evas_object_show(eps_object); - else - evas_object_hide(eps_object); + + switch (engrave_part_type_get(ep)) + { + case ENGRAVE_PART_TYPE_RECT: + engrave_canvas_part_state_rect_setup(eps); + evas_object_move(ep_object, ec->x + ep->pos.x, ec->y + ep->pos.y); + evas_object_resize(ep_object, ep->pos.w, ep->pos.h); + break; + + case ENGRAVE_PART_TYPE_TEXT: + engrave_canvas_part_state_text_setup(eps); + evas_object_move(ep_object, ec->x + ep->pos.x, + ec->y + ep->pos.y); + break; + + case ENGRAVE_PART_TYPE_IMAGE: + engrave_canvas_part_state_image_setup(eps); + evas_object_move(ep_object, ec->x + ep->pos.x, ec->y + ep->pos.y); + evas_object_resize(ep_object, ep->pos.w, ep->pos.h); + break; + + case ENGRAVE_PART_TYPE_SWALLOW: + evas_object_move(ep_object, ec->x + ep->pos.x, ec->y + ep->pos.y); + evas_object_resize(ep_object, ep->pos.w, ep->pos.h); + break; + } + + if (engrave_part_state_visible_get(eps)) + evas_object_show(ep_object); + else + evas_object_hide(ep_object); } static void -engrave_canvas_part_state_recalc(Engrave_Canvas *ec, Engrave_Part_State *eps, +engrave_canvas_part_recalc(Engrave_Canvas *ec, Engrave_Part *ep, Engrave_Part_State *rel1_to_x, Engrave_Part_State *rel1_to_y, Engrave_Part_State *rel2_to_x, @@ -314,116 +248,116 @@ { int minw = 0, minh = 0, maxw = 0, maxh = 0; double align_x, align_y; - Engrave_Part *ep = engrave_part_state_parent_get(eps); + Engrave_Part_State *eps = engrave_part_current_state_get(ep); if (rel1_to_x) - eps->pos.x = eps->rel1.offset.x + rel1_to_x->pos.x - + (eps->rel1.relative.x * rel1_to_x->pos.w); + ep->pos.x = eps->rel1.offset.x + ((Engrave_Part*)(rel1_to_x->parent))->pos.x + + (eps->rel1.relative.x * ((Engrave_Part*)(rel1_to_x->parent))->pos.w); else - eps->pos.x = eps->rel1.offset.x + (eps->rel1.relative.x * ec->w); + ep->pos.x = eps->rel1.offset.x + (eps->rel1.relative.x * ec->w); if (rel2_to_x) - eps->pos.w = eps->rel2.offset.x + rel2_to_x->pos.x - + (eps->rel2.relative.x * rel2_to_x->pos.y) - - eps->pos.x + 1; + ep->pos.w = eps->rel2.offset.x + ((Engrave_Part*)(rel2_to_x->parent))->pos.x + + (eps->rel2.relative.x * ((Engrave_Part*)(rel2_to_x->parent))->pos.y) + - ep->pos.x + 1; else - eps->pos.w = eps->rel2.offset.x + (eps->rel2.relative.x * ec->w) - - eps->pos.x + 1; + ep->pos.w = eps->rel2.offset.x + (eps->rel2.relative.x * ec->w) + - ep->pos.x + 1; if (rel1_to_y) - eps->pos.y = eps->rel1.offset.y + rel1_to_y->pos.y - + (eps->rel1.relative.y * rel1_to_y->pos.h); + ep->pos.y = eps->rel1.offset.y + ((Engrave_Part*)(rel1_to_y->parent))->pos.y + + (eps->rel1.relative.y * ((Engrave_Part*)(rel1_to_y->parent))->pos.h); else - eps->pos.y = eps->rel1.offset.y + (eps->rel1.relative.y * ec->h); + ep->pos.y = eps->rel1.offset.y + (eps->rel1.relative.y * ec->h); if (rel2_to_y) - eps->pos.h = eps->rel2.offset.y + rel2_to_y->pos.y - + (eps->rel2.relative.y * rel2_to_y->pos.h) - - eps->pos.y + 1; + ep->pos.h = eps->rel2.offset.y + ((Engrave_Part*)(rel2_to_y->parent))->pos.y + + (eps->rel2.relative.y * ((Engrave_Part*)(rel2_to_y->parent))->pos.h) + - ep->pos.y + 1; else - eps->pos.h = eps->rel2.offset.y + (eps->rel2.relative.y * ec->h) - - eps->pos.y + 1; + ep->pos.h = eps->rel2.offset.y + (eps->rel2.relative.y * ec->h) + - ep->pos.y + 1; /* aspect */ engrave_part_state_align_get(eps, &align_x, &align_y); - if (eps->pos.h > 0) { + if (ep->pos.h > 0) { double aspect; double aspect_max, aspect_min; double new_w, new_h, want_x, want_y, want_w, want_h; Engrave_Aspect_Preference prefer; - want_x = eps->pos.x; - want_w = new_w = eps->pos.w; + want_x = ep->pos.x; + want_w = new_w = ep->pos.w; - want_y = eps->pos.y; - want_h = new_h = eps->pos.h; + want_y = ep->pos.y; + want_h = new_h = ep->pos.h; - aspect = (double)eps->pos.w / (double)eps->pos.h; + aspect = (double)ep->pos.w / (double)ep->pos.h; engrave_part_state_aspect_get(eps, &aspect_min, &aspect_max); prefer = engrave_part_state_aspect_preference_get(eps); if (prefer == ENGRAVE_ASPECT_PREFERENCE_NONE) { if ((aspect_max > 0.0) && (aspect > aspect_max)) { - new_h = (eps->pos.w / aspect_max); - new_w = (eps->pos.h * aspect_max); + new_h = (ep->pos.w / aspect_max); + new_w = (ep->pos.h * aspect_max); } if ((aspect_min > 0.0) && (aspect < aspect_min)) { - new_h = (eps->pos.w / aspect_min); - new_w = (eps->pos.h * aspect_min); + new_h = (ep->pos.w / aspect_min); + new_w = (ep->pos.h * aspect_min); } } else if (prefer == ENGRAVE_ASPECT_PREFERENCE_VERTICAL) { if ((aspect_max > 0.0) && (aspect > aspect_max)) - new_w = (eps->pos.h * aspect_max); + new_w = (ep->pos.h * aspect_max); if ((aspect_min > 0.0) && (aspect < aspect_min)) - new_w = (eps->pos.h * aspect_min); + new_w = (ep->pos.h * aspect_min); } else if (prefer == ENGRAVE_ASPECT_PREFERENCE_HORIZONTAL) { if ((aspect_max > 0.0) && (aspect > aspect_max)) - new_h = (eps->pos.w / aspect_max); + new_h = (ep->pos.w / aspect_max); if ((aspect_min > 0.0) && (aspect < aspect_min)) - new_h = (eps->pos.w / aspect_min); + new_h = (ep->pos.w / aspect_min); } else if (prefer == ENGRAVE_ASPECT_PREFERENCE_BOTH) { if ((aspect_max > 0.0) && (aspect > aspect_max)) { - new_w = (eps->pos.h * aspect_max); - new_h = (eps->pos.w / aspect_max); + new_w = (ep->pos.h * aspect_max); + new_h = (ep->pos.w / aspect_max); } if ((aspect_min > 0.0) && (aspect < aspect_min)) { - new_w = (eps->pos.h * aspect_min); - new_h = (eps->pos.w / aspect_min); + new_w = (ep->pos.h * aspect_min); + new_h = (ep->pos.w / aspect_min); } } if (prefer == ENGRAVE_ASPECT_PREFERENCE_BOTH) { - if (new_w > eps->pos.w) - eps->pos.w = new_w; + if (new_w > ep->pos.w) + ep->pos.w = new_w; else - eps->pos.h = new_h; + ep->pos.h = new_h; } else { - if ((eps->pos.h - new_h) > (eps->pos.w - new_w)) { - if (eps->pos.h != new_h) - eps->pos.h = new_h; + if ((ep->pos.h - new_h) > (ep->pos.w - new_w)) { + if (ep->pos.h != new_h) + ep->pos.h = new_h; if (prefer == ENGRAVE_ASPECT_PREFERENCE_VERTICAL) - eps->pos.w = new_w; + ep->pos.w = new_w; } else { - if (eps->pos.w != new_w) - eps->pos.w = new_w; + if (ep->pos.w != new_w) + ep->pos.w = new_w; if (prefer == ENGRAVE_ASPECT_PREFERENCE_HORIZONTAL) - eps->pos.h = new_h; + ep->pos.h = new_h; } } - eps->pos.x = want_x + ((want_w - eps->pos.w) * align_x); - eps->pos.y = want_y + ((want_h - eps->pos.h) * align_y); + ep->pos.x = want_x + ((want_w - ep->pos.w) * align_x); + ep->pos.y = want_y + ((want_h - ep->pos.h) * align_y); } /* size step */ @@ -435,11 +369,11 @@ int steps; int new_w; - steps = eps->pos.w / step_x; + steps = ep->pos.w / step_x; new_w = step_x * steps; - if (eps->pos.w > new_w) { - eps->pos.x = eps->pos.x + ((eps->pos.w - new_w) * align_x); - eps->pos.w = new_w; + if (ep->pos.w > new_w) { + ep->pos.x = ep->pos.x + ((ep->pos.w - new_w) * align_x); + ep->pos.w = new_w; } } @@ -447,11 +381,11 @@ int steps; int new_h; - steps = eps->pos.h / step_y; + steps = ep->pos.h / step_y; new_h = step_y * steps; - if (eps->pos.h > new_h) { - eps->pos.y = eps->pos.y + ((eps->pos.h - new_h) * align_y); - eps->pos.h = new_h; + if (ep->pos.h > new_h) { + ep->pos.y = ep->pos.y + ((ep->pos.h - new_h) * align_y); + ep->pos.h = new_h; } } } @@ -467,31 +401,31 @@ /* adjust for min size */ if (minw >= 0) { - if (eps->pos.w < minw) { - eps->pos.x += ((eps->pos.w - minw) * align_x); - eps->pos.w = minw; + if (ep->pos.w < minw) { + ep->pos.x += ((ep->pos.w - minw) * align_x); + ep->pos.w = minw; } } if (minh >= 0) { - if (eps->pos.h < minh) { - eps->pos.y += ((eps->pos.h - minh) * align_y); - eps->pos.h = minh; + if (ep->pos.h < minh) { + ep->pos.y += ((ep->pos.h - minh) * align_y); + ep->pos.h = minh; } } /* adjust for max size */ if (maxw >= 0) { - if (eps->pos.w > maxw) { - eps->pos.x += ((eps->pos.w - maxw) * align_x); - eps->pos.w = maxw; + if (ep->pos.w > maxw) { + ep->pos.x += ((ep->pos.w - maxw) * align_x); + ep->pos.w = maxw; } } if (maxh >= 0) { - if (eps->pos.h > maxh) { - eps->pos.y += ((eps->pos.h - maxh) * align_y); - eps->pos.h = maxh; + if (ep->pos.h > maxh) { + ep->pos.y += ((ep->pos.h - maxh) * align_y); + ep->pos.h = maxh; } } @@ -500,34 +434,16 @@ } } -static Evas_Object * -engrave_canvas_part_state_image_setup(Evas *evas, Engrave_File *ef, - Engrave_Part_State *eps) -{ - Evas_Object *o; - char path[PATH_MAX]; - Engrave_Image *ei; - - ei = engrave_part_state_image_normal_get(eps); - snprintf(path, PATH_MAX, "%s/%s", - engrave_file_image_dir_get(ef), - engrave_image_name_get(ei)); - - o = evas_object_image_add(evas); - evas_object_image_file_set(o, path, NULL); - return o; -} - -static Evas_Object * -engrave_canvas_part_state_text_setup(Evas *evas, Engrave_Part_State *eps) +static void +engrave_canvas_part_state_text_setup(Engrave_Part_State *eps) { - Evas_Object *o; + int r, g, b, a; const char *font_key; const char *font_name; Engrave_Part *ep = (eps ? eps->parent : NULL); Engrave_Group *eg = (ep ? ep->parent : NULL); Engrave_File *ef = (eg ? eg->parent : NULL); - + // XXX this needs a lot of work ... if (ef) { Engrave_Font * efont; @@ -538,21 +454,69 @@ } else font_name = "Vera.ttf"; - o = evas_object_text_add(evas); - evas_object_text_text_set(o, engrave_part_state_text_text_get(eps)); - evas_object_text_font_set(o, font_name, + evas_object_text_text_set(ep->object, engrave_part_state_text_text_get(eps)); + evas_object_text_font_set(ep->object, font_name, engrave_part_state_text_size_get(eps)); - return o; + engrave_part_state_color_get(eps, &r, &g, &b, &a); + evas_object_color_set(ep->object, r, g, b, a); } -static Evas_Object * -engrave_canvas_part_state_rect_setup(Evas *evas, Engrave_Part_State *eps) +static void +engrave_canvas_part_state_rect_setup(Engrave_Part_State *eps) { - Evas_Object *o; - o = evas_object_rectangle_add(evas); - return o; + int r, g, b, a; + Engrave_Part *ep = (eps ? eps->parent : NULL); + + if (!ep) return; + + engrave_part_state_color_get(eps, &r, &g, &b, &a); + evas_object_color_set(ep->object, r, g, b, a); } +static void +engrave_canvas_part_state_image_setup(Engrave_Part_State *eps) +{ + double pos_rel_x, pos_rel_y, rel_x, rel_y; + int pos_abs_x, pos_abs_y, abs_x, abs_y; + double fill_x, fill_y, fill_w, fill_h; + int l, r, b, t; + char path[PATH_MAX]; + Engrave_Image *ei; + Engrave_Part *ep = (eps ? eps->parent : NULL); + Engrave_Group *eg = (ep ? ep->parent : NULL); + + + + if (!ep || !eg) return; + + if ((ei = engrave_part_state_image_normal_get(eps))) + { + snprintf(path, PATH_MAX, "%s/%s", + engrave_file_image_dir_get(engrave_group_parent_get(eg)), + engrave_image_name_get(ei)); + evas_object_image_file_set(ep->object, path, NULL); + } + + + engrave_part_state_fill_origin_relative_get(eps, &pos_rel_x, &pos_rel_y); + engrave_part_state_fill_size_relative_get(eps, &rel_x, &rel_y); + engrave_part_state_fill_origin_offset_get(eps, &pos_abs_x, &pos_abs_y); + engrave_part_state_fill_size_offset_get(eps, &abs_x, &abs_y); + fill_x = pos_abs_x + (ep->pos.w * pos_rel_x); + fill_y = pos_abs_y + (ep->pos.w * pos_rel_y); + fill_w = abs_x + (ep->pos.w * rel_x); + fill_h = abs_y + (ep->pos.h * rel_y); + evas_object_image_fill_set(ep->object, fill_x, fill_y, fill_w, fill_h); + evas_object_image_smooth_scale_set(ep->object, + engrave_part_state_fill_smooth_get(eps)); + + engrave_part_state_image_border_get(eps, &l, &r, &t, &b); + evas_object_image_border_set(ep->object, l, r, t, b); + + engrave_part_state_color_get(eps, &l, &r, &t, &b); + evas_object_color_set(ep->object, l, r, t, b); + +} static Evas_Object * engrave_canvas_object_new(Evas *evas) { =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_part.c,v retrieving revision 1.17 retrieving revision 1.18 diff -u -3 -r1.17 -r1.18 --- engrave_part.c 10 Jan 2007 01:58:30 -0000 1.17 +++ engrave_part.c 14 Jan 2007 15:48:57 -0000 1.18 @@ -551,3 +551,29 @@ + +/** + * engrave_part_evas_object_get - get the evas object for this part + * @param ep: The Engrave_Part to get the evas object from + * + * @return Returns the evas object that displays this part + */ +EAPI Evas_Object * +engrave_part_evas_object_get(Engrave_Part *ep) +{ + return (ep ? ep->object : NULL); +} + +/** + * engrave_part_evas_object_set - set the evas object for this part + * @param ep: The Engrave_Part to set the evas object into + * @param o: The Evas_Object to set into the part + * + * @return Returns no value. + */ +EAPI void +engrave_part_evas_object_set(Engrave_Part *ep, Evas_Object *o) +{ + if (!ep) return; + ep->object = o; +} \ No newline at end of file =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_part.h,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- engrave_part.h 6 Sep 2006 07:31:31 -0000 1.12 +++ engrave_part.h 14 Jan 2007 15:48:57 -0000 1.13 @@ -1,6 +1,8 @@ #ifndef ENGRAVE_PART_H #define ENGRAVE_PART_H + + /** * @file engrave_part.h Engrave_Part object functions. * @brief Contains all functions to maniuplate the Engrave_Part object. @@ -52,6 +54,16 @@ Evas_List *states; /**< The list of states assocated with the part */ Engrave_Part_State *current_state; /**< The current state */ + struct + { + Evas_Coord x; /**< The x position to place the object */ + Evas_Coord y; /**< The y position to place the object */ + Evas_Coord w; /**< The width of the object */ + Evas_Coord h; /**< The height of the object */ + } pos; + + Evas_Object *object; /**< The evas object used to display this state */ + void *parent; /**< Pointer to parent */ }; @@ -96,6 +108,9 @@ EAPI void engrave_part_state_foreach(Engrave_Part *ep, void (*func)(Engrave_Part_State *, Engrave_Part *, void *), void *data); + +EAPI Evas_Object *engrave_part_evas_object_get(Engrave_Part *ep); +EAPI void engrave_part_evas_object_set(Engrave_Part *ep, Evas_Object *o); /** * @} =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_part_state.c,v retrieving revision 1.20 retrieving revision 1.21 diff -u -3 -r1.20 -r1.21 --- engrave_part_state.c 30 Dec 2006 08:10:46 -0000 1.20 +++ engrave_part_state.c 14 Jan 2007 15:48:57 -0000 1.21 @@ -1476,31 +1476,7 @@ } } -/** - * engrave_part_state_evas_object_get - get the object for this state - * @param eps: The Engrave_Part_State to get the object from - * - * @return Returns the evas object that displays this state - */ -EAPI Evas_Object * -engrave_part_state_evas_object_get(Engrave_Part_State *eps) -{ - return (eps ? eps->object : NULL); -} -/** - * engrave_part_state_evas_object_set - set the evas object for this state - * @param eps: The Engrave_Part_State to set the object into - * @param o: The Evas_Object to set into the state - * - * @return Returns no value. - */ -EAPI void -engrave_part_state_evas_object_set(Engrave_Part_State *eps, Evas_Object *o) -{ - if (!eps) return; - eps->object = o; -} /** * engrave_part_state_parent_set - set the parent part on this state =================================================================== RCS file: /cvs/e/e17/libs/engrave/src/lib/engrave_part_state.h,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- engrave_part_state.h 30 Dec 2006 08:10:46 -0000 1.14 +++ engrave_part_state.h 14 Jan 2007 15:48:57 -0000 1.15 @@ -193,16 +193,6 @@ } align; } text; - struct - { - Evas_Coord x; /**< The x position to place the object */ - Evas_Coord y; /**< The y position to place the object */ - Evas_Coord w; /**< The width of the object */ - Evas_Coord h; /**< The hight of the object */ - } pos; - - Evas_Object *object; /**< The evas object used to display this state */ - void *parent; /**< Pointer to parent */ }; @@ -353,10 +343,6 @@ EAPI int engrave_part_state_tweens_count(Engrave_Part_State *eps); EAPI void engrave_part_state_tween_foreach(Engrave_Part_State *eps, void (*func)(Engrave_Image *, void *), void *data); - -EAPI Evas_Object *engrave_part_state_evas_object_get(Engrave_Part_State *eps); -EAPI void engrave_part_state_evas_object_set(Engrave_Part_State *eps, - Evas_Object *o); EAPI void engrave_part_state_gradient_spectrum_set(Engrave_Part_State *eps, const char *spec); EAPI const char * engrave_part_state_gradient_spectrum_get(Engrave_Part_State *eps); ------------------------------------------------------------------------- Take Surveys. Earn Cash. Influence the Future of IT Join SourceForge.net's Techsay panel and you'll get the chance to share your opinions on IT & business topics through brief surveys - and earn cash http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs