Enlightenment CVS committal Author : moom Project : e17 Module : proto
Dir : e17/proto/etk/src/lib Modified Files: etk_argument.h etk_colorpicker.c etk_colorpicker.h etk_dnd.h etk_tree.h etk_tree_model.h etk_types.h etk_widget.c Log Message: * More work on the colorpicker * Do not typedef enums in Etk_Types.h anymore so g++ can compile Etk projects =================================================================== RCS file: /cvs/e/e17/proto/etk/src/lib/etk_argument.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- etk_argument.h 15 Mar 2006 12:38:41 -0000 1.5 +++ etk_argument.h 18 May 2006 13:13:33 -0000 1.6 @@ -9,23 +9,23 @@ * @{ */ -enum _Etk_Argument_Returns +typedef enum Etk_Argument_Returns { ETK_ARGUMENT_RETURN_OK = 1, /* no problems */ ETK_ARGUMENT_RETURN_OK_NONE_PARSED = 2, /* no problems, no arguments or no valid args */ ETK_ARGUMENT_RETURN_REQUIRED_NOT_FOUND = 3, /* required arg not found */ ETK_ARGUMENT_RETURN_REQUIRED_VALUE_NOT_FOUND = 4, /* required value for arg no found */ ETK_ARGUMENT_RETURN_MALFORMED = 5 /* malformed argument */ -}; +} Etk_Argument_Returns; -enum _Etk_Argument_Flags +typedef enum Etk_Argument_Flags { ETK_ARGUMENT_FLAG_REQUIRED = 1 << 0, /* argument itself is required */ ETK_ARGUMENT_FLAG_OPTIONAL = 1 << 1, /* argument itself is optional */ ETK_ARGUMENT_FLAG_VALUE_REQUIRED = 1 << 2, /* value of the argument is required */ ETK_ARGUMENT_FLAG_MULTIVALUE = 1 << 3, /* argument uses multi-valued args */ ETK_ARGUMENT_FLAG_NONE = 1 << 4 /* used when terminating options */ -}; +} Etk_Argument_Flags; struct _Etk_Argument { =================================================================== RCS file: /cvs/e/e17/proto/etk/src/lib/etk_colorpicker.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -3 -r1.12 -r1.13 --- etk_colorpicker.c 17 May 2006 22:45:57 -0000 1.12 +++ etk_colorpicker.c 18 May 2006 13:13:33 -0000 1.13 @@ -43,6 +43,8 @@ static void _etk_colorpicker_realize_cb(Etk_Object *object, void *data); static void _etk_colorpicker_unrealize_cb(Etk_Object *object, void *data); +static void _etk_colorpicker_slider_realize_cb(Etk_Object *object, void *data); +static void _etk_colorpicker_slider_unrealize_cb(Etk_Object *object, void *data); static void _etk_colorpicker_radio_toggled_cb(Etk_Object *object, void *data); static void _etk_colorpicker_sp_mouse_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info); @@ -72,6 +74,7 @@ static void _etk_colorpicker_sp_cursor_update(Etk_Colorpicker *cp); static void _etk_colorpicker_vp_image_update(Etk_Colorpicker *cp); static void _etk_colorpicker_vp_cursor_update(Etk_Colorpicker *cp); +static void _etk_colorpicker_sliders_update(Etk_Colorpicker *cp); static void _etk_colorpicker_sp_color_get(Etk_Colorpicker *cp, int i, int j, int *r, int *g, int *b); static void _etk_colorpicker_vp_color_get(Etk_Colorpicker *cp, int i, int *r, int *g, int *b); static void _etk_colorpicker_color_calc(Etk_Colorpicker_Mode mode, float sp_xpos, float sp_ypos, float vp_pos, int *r, int *g, int *b); @@ -262,12 +265,14 @@ cp->vp_res = 256; cp->vp_pos = 0.0; + cp->sliders_res = 256; cp->sp_dragging = ETK_FALSE; cp->vp_dragging = ETK_FALSE; cp->sp_image_needs_update = ETK_FALSE; cp->sp_cursor_needs_update = ETK_FALSE; cp->vp_image_needs_update = ETK_FALSE; cp->vp_cursor_needs_update = ETK_FALSE; + cp->sliders_need_update = ETK_FALSE; cp->table = etk_table_new(2, 6, ETK_FALSE); etk_widget_parent_set(cp->table, cp_widget); @@ -285,6 +290,7 @@ etk_widget_visibility_locked_set(cp->radios[i], ETK_TRUE); etk_widget_show(cp->radios[i]); + cp->sliders_image[i] = NULL; cp->sliders[i] = etk_hslider_new(0.0, 1.0, 0.0, 1.0 / 255, 10.0 / 255); etk_table_attach(ETK_TABLE(cp->table), cp->sliders[i], 1, 1, i, i, 0, 0, ETK_FILL_POLICY_HFILL | ETK_FILL_POLICY_HEXPAND | ETK_FILL_POLICY_VEXPAND); @@ -292,6 +298,8 @@ etk_widget_show(cp->sliders[i]); etk_signal_connect("toggled", ETK_OBJECT(cp->radios[i]), ETK_CALLBACK(_etk_colorpicker_radio_toggled_cb), cp); + etk_signal_connect("realize", ETK_OBJECT(cp->sliders[i]), ETK_CALLBACK(_etk_colorpicker_slider_realize_cb), cp); + etk_signal_connect("unrealize", ETK_OBJECT(cp->sliders[i]), ETK_CALLBACK(_etk_colorpicker_slider_unrealize_cb), cp); } cp_widget->size_request = _etk_colorpicker_size_request; @@ -366,6 +374,8 @@ _etk_colorpicker_vp_image_update(cp); if (cp->vp_cursor_needs_update) _etk_colorpicker_vp_cursor_update(cp); + if (cp->sliders_need_update) + _etk_colorpicker_sliders_update(cp); /* Then, moves and resizes the objects */ evas_object_move(cp->picker_theme_object, geometry.x, geometry.y); @@ -383,6 +393,7 @@ cp->sp_cursor_needs_update = ETK_FALSE; cp->vp_image_needs_update = ETK_FALSE; cp->vp_cursor_needs_update = ETK_FALSE; + cp->sliders_need_update = ETK_FALSE; } /************************** @@ -466,6 +477,7 @@ if (!(cp = ETK_COLORPICKER(object))) return; + /* TODO: delete objects! */ cp->sp_object = NULL; cp->sp_image = NULL; cp->sp_hcursor = NULL; @@ -475,6 +487,51 @@ cp->vp_cursor = NULL; } +/* Called when a slider of the colorpicker is realized */ +static void _etk_colorpicker_slider_realize_cb(Etk_Object *object, void *data) +{ + Etk_Widget *slider; + Etk_Colorpicker *cp; + Evas *evas; + int i; + + if (!(slider = ETK_WIDGET(object)) || !(cp = ETK_COLORPICKER(data)) || !(evas = etk_widget_toplevel_evas_get(slider))) + return; + + for (i = 0; i < 6; i++) + { + if (cp->sliders[i] == slider) + { + cp->sliders_image[i] = evas_object_image_add(evas); + evas_object_image_alpha_set(cp->sliders_image[i], 0); + evas_object_image_size_set(cp->sliders_image[i], cp->sliders_res, 1); + evas_object_show(cp->sliders_image[i]); + etk_widget_theme_object_swallow(slider, "slider_image", cp->sliders_image[i]); + + _etk_colorpicker_update(cp, ETK_FALSE, ETK_FALSE, ETK_FALSE, ETK_FALSE); + return; + } + } +} + +/* Called when a slider of the colorpicker is unrealized */ +static void _etk_colorpicker_slider_unrealize_cb(Etk_Object *object, void *data) +{ + /* TODO: del image */ + Etk_Widget *slider; + Etk_Colorpicker *cp; + int i; + + if (!(slider = ETK_WIDGET(object)) || !(cp = ETK_COLORPICKER(data))) + return; + + for (i = 0; i < 6; i++) + { + if (cp->sliders[i] == slider) + cp->sliders_image[i] = NULL; + } +} + /* Called when the color mode is changed with the radio buttons */ static void _etk_colorpicker_radio_toggled_cb(Etk_Object *object, void *data) { @@ -816,6 +873,7 @@ cp->sp_cursor_needs_update |= sp_cursor; cp->vp_image_needs_update |= vp_image; cp->vp_cursor_needs_update |= vp_cursor; + cp->sliders_need_update = ETK_TRUE; /* Updates the color */ _etk_colorpicker_color_calc(cp->mode, cp->sp_xpos, cp->sp_ypos, cp->vp_pos, &r, &g, &b); @@ -827,6 +885,8 @@ etk_signal_emit(_etk_colorpicker_signals[ETK_CP_COLOR_CHANGED_SIGNAL], ETK_OBJECT(cp), NULL); } + /* TODO: update slider value!! */ + etk_widget_redraw_queue(ETK_WIDGET(cp)); } @@ -924,6 +984,63 @@ _etk_colorpicker_vp_color_get(cp, cp->vp_res * (1.0 - cp->vp_pos), &r, &g, &b); evas_object_color_set(cp->vp_cursor, 255 - r, 255 - g, 255 - b, 255); +} + +/* Updates the images of the sliders */ +static void _etk_colorpicker_sliders_update(Etk_Colorpicker *cp) +{ + int i, j; + int r, g, b; + float h, s, v; + int r2, g2, b2; + uint32_t *data; + + r = cp->current_color.r; + g = cp->current_color.g; + b = cp->current_color.b; + evas_color_rgb_to_hsv(r, g, b, &h, &s, &v); + + for (i = 0; i < 6; i++) + { + if (cp->sliders_image[i] && (data = (uint32_t *)evas_object_image_data_get(cp->sliders_image[i], 1))) + { + for (j = 0; j < cp->sliders_res; j++) + { + switch (i) + { + case ETK_COLORPICKER_H: + evas_color_hsv_to_rgb(360.0 * ((float)j / cp->sliders_res), s, v, &r2, &g2, &b2); + break; + case ETK_COLORPICKER_S: + evas_color_hsv_to_rgb(h, (float)j / cp->sliders_res, v, &r2, &g2, &b2); + break; + case ETK_COLORPICKER_V: + evas_color_hsv_to_rgb(h, s, (float)j / cp->sliders_res, &r2, &g2, &b2); + break; + case ETK_COLORPICKER_R: + r2 = (255 * j) / cp->sliders_res; + g2 = g; + b2 = b; + break; + case ETK_COLORPICKER_G: + r2 = r; + g2 = (255 * j) / cp->sliders_res; + b2 = b; + break; + case ETK_COLORPICKER_B: + r2 = r; + g2 = g; + b2 = (255 * j) / cp->sliders_res; + break; + default: + break; + } + *data = ((r2 << 16) | (g2 << 8) | b2); + data++; + } + evas_object_image_data_update_add(cp->sliders_image[i], 0, 0, cp->sliders_res, 1); + } + } } /* Get the color of the square picker's image, at the point (i, j). (r, g, b) must not be NULL! */ =================================================================== RCS file: /cvs/e/e17/proto/etk/src/lib/etk_colorpicker.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -3 -r1.6 -r1.7 --- etk_colorpicker.h 17 May 2006 22:45:57 -0000 1.6 +++ etk_colorpicker.h 18 May 2006 13:13:33 -0000 1.7 @@ -63,9 +63,14 @@ Etk_Bool vp_image_needs_update; Etk_Bool vp_cursor_needs_update; + /* Sliders */ + int sliders_res; + Evas_Object *sliders_image[6]; + Etk_Widget *sliders[6]; + Etk_Bool sliders_need_update; + Etk_Widget *table; Etk_Widget *radios[6]; - Etk_Widget *sliders[6]; Etk_Widget *value_labels[6]; Etk_Colorpicker_Mode mode; =================================================================== RCS file: /cvs/e/e17/proto/etk/src/lib/etk_dnd.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- etk_dnd.h 15 Feb 2006 15:03:17 -0000 1.8 +++ etk_dnd.h 18 May 2006 13:13:33 -0000 1.9 @@ -12,14 +12,14 @@ #define ETK_SELECTION_TARGET_UTF8_STRING "UTF8_STRING" #define ETK_SELECTION_TARGET_FILENAME "FILENAME" -enum _Etk_Selection_Content +typedef enum Etk_Selection_Content { ETK_SELECTION_CONTENT_NONE, ETK_SELECTION_CONTENT_TEXT, ETK_SELECTION_CONTENT_FILES, ETK_SELECTION_CONTENT_TARGETS, ETK_SELECTION_CONTENT_CUSTOM -}; +} Etk_Selection_Content; struct _Etk_Event_Selection_Request { =================================================================== RCS file: /cvs/e/e17/proto/etk/src/lib/etk_tree.h,v retrieving revision 1.22 retrieving revision 1.23 diff -u -3 -r1.22 -r1.23 --- etk_tree.h 7 Apr 2006 15:36:11 -0000 1.22 +++ etk_tree.h 18 May 2006 13:13:33 -0000 1.23 @@ -30,11 +30,11 @@ * @enum Etk_Tree_Mode * @brief The mode of the tree: List (rows can not have children) or tree (rows can have children) */ -enum _Etk_Tree_Mode +typedef enum Etk_Tree_Mode { ETK_TREE_MODE_LIST, ETK_TREE_MODE_TREE -}; +} Etk_Tree_Mode; /** * @struct Etk_Tree_Row =================================================================== RCS file: /cvs/e/e17/proto/etk/src/lib/etk_tree_model.h,v retrieving revision 1.5 retrieving revision 1.6 diff -u -3 -r1.5 -r1.6 --- etk_tree_model.h 6 Apr 2006 00:29:21 -0000 1.5 +++ etk_tree_model.h 18 May 2006 13:13:33 -0000 1.6 @@ -15,11 +15,11 @@ * @enum Etk_Tree_Model_Image_Type * @brief The types of the images that you could have in an "image" or "icon_text" model */ -enum _Etk_Tree_Model_Image_Type +typedef enum Etk_Tree_Model_Image_Type { ETK_TREE_FROM_FILE, ETK_TREE_FROM_EDJE -}; +} Etk_Tree_Model_Image_Type; /** * @struct Etk_Tree_Model =================================================================== RCS file: /cvs/e/e17/proto/etk/src/lib/etk_types.h,v retrieving revision 1.40 retrieving revision 1.41 diff -u -3 -r1.40 -r1.41 --- etk_types.h 16 May 2006 22:03:00 -0000 1.40 +++ etk_types.h 18 May 2006 13:13:33 -0000 1.41 @@ -67,11 +67,9 @@ typedef struct Etk_Canvas Etk_Canvas; typedef struct Etk_Colorpicker Etk_Colorpicker; typedef struct _Etk_Tree Etk_Tree; -typedef enum _Etk_Tree_Mode Etk_Tree_Mode; typedef struct _Etk_Tree_Col Etk_Tree_Col; typedef struct _Etk_Tree_Row Etk_Tree_Row; typedef struct _Etk_Tree_Model Etk_Tree_Model; -typedef enum _Etk_Tree_Model_Image_Type Etk_Tree_Model_Image_Type; typedef struct _Etk_Range Etk_Range; typedef struct _Etk_Slider Etk_Slider; typedef struct _Etk_HSlider Etk_HSlider; @@ -103,10 +101,7 @@ typedef struct _Etk_Selection_Data_Files Etk_Selection_Data_Files; typedef struct _Etk_Selection_Data_Text Etk_Selection_Data_Text; typedef struct _Etk_Selection_Data_Targets Etk_Selection_Data_Targets; -typedef enum _Etk_Selection_Content Etk_Selection_Content; typedef struct _Etk_Drag Etk_Drag; -typedef enum _Etk_Argument_Returns Etk_Argument_Returns; -typedef enum _Etk_Argument_Flags Etk_Argument_Flags; typedef struct _Etk_Argument Etk_Argument; typedef struct _Etk_Message_Dialog Etk_Message_Dialog; typedef struct Etk_Iconbox Etk_Iconbox; =================================================================== RCS file: /cvs/e/e17/proto/etk/src/lib/etk_widget.c,v retrieving revision 1.52 retrieving revision 1.53 diff -u -3 -r1.52 -r1.53 --- etk_widget.c 13 May 2006 12:04:00 -0000 1.52 +++ etk_widget.c 18 May 2006 13:13:33 -0000 1.53 @@ -2582,6 +2582,7 @@ } /* Makes the theme object of the widget swallow an object into one of its part */ +/* TODO: object free_cb?? */ static Etk_Bool _etk_widget_theme_object_swallow_full(Etk_Widget *swallowing_widget, const char *part, Evas_Object *object, Etk_Widget *widget) { Evas *evas; ------------------------------------------------------- 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 enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs