Enlightenment CVS committal

Author  : rbdpngn
Project : e17
Module  : libs/ewl

Dir     : e17/libs/ewl/src


Modified Files:
        ewl_spectrum.c ewl_spectrum.h 


Log Message:
A real 2d gradient for arbitrary RGB. This makes some of the pick modes
redundant, so they've been removed.

===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_spectrum.c,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -3 -r1.7 -r1.8
--- ewl_spectrum.c      27 Jul 2004 15:03:49 -0000      1.7
+++ ewl_spectrum.c      27 Jul 2004 16:17:29 -0000      1.8
@@ -37,6 +37,7 @@
        ewl_callback_append(w, EWL_CALLBACK_CONFIGURE,
                            ewl_spectrum_configure_cb, NULL);
 
+       sp->orientation = EWL_ORIENTATION_VERTICAL;
        sp->mode = EWL_PICK_MODE_HSV_HUE;
        sp->dimensions = 2;
        sp->redraw = 1;
@@ -50,14 +51,32 @@
        DRETURN(DLEVEL_STABLE);
 }
 
+void ewl_spectrum_orientation_set(Ewl_Spectrum *sp, int o)
+{
+       DENTER_FUNCTION(DLEVEL_STABLE);
+       DCHECK_PARAM_PTR("sp", sp);
+
+       if (sp->orientation != o) {
+               sp->orientation = o;
+               if (sp->dimensions == 1) {
+                       sp->redraw = 1;
+                       ewl_widget_configure(EWL_WIDGET(sp));
+               }
+       }
+
+       DLEAVE_FUNCTION(DLEVEL_STABLE);
+}
+
 void ewl_spectrum_mode_set(Ewl_Spectrum * sp, int mode)
 {
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("sp", sp);
 
-       sp->mode = mode;
-       sp->redraw = 1;
-       ewl_widget_configure(EWL_WIDGET(sp));
+       if (sp->mode != mode) {
+               sp->mode = mode;
+               sp->redraw = 1;
+               ewl_widget_configure(EWL_WIDGET(sp));
+       }
 
        DRETURN(DLEVEL_STABLE);
 }
@@ -69,11 +88,11 @@
        DENTER_FUNCTION(DLEVEL_STABLE);
        DCHECK_PARAM_PTR("sp", sp);
 
-       if (dimensions == 1 || dimensions == 2)
+       if (dimensions == 1 || dimensions == 2) {
                sp->dimensions = dimensions;
-
-       sp->redraw = 1;
-       ewl_widget_configure(EWL_WIDGET(sp));
+               sp->redraw = 1;
+               ewl_widget_configure(EWL_WIDGET(sp));
+       }
 
        DRETURN(DLEVEL_STABLE);
 }
@@ -112,6 +131,8 @@
        if (v >= 0 && v <= 1)
                sp->v = v;
 
+       sp->redraw = 1;
+
        ewl_widget_configure(EWL_WIDGET(sp));
 
        DRETURN(DLEVEL_STABLE);
@@ -171,22 +192,23 @@
                                a = 255;
 
                                if (pick_mode == EWL_PICK_MODE_RGB) {
-                                       r = red * (1 - (float) j / (float) ph);
-                                       g = green * (1 - (float) j / (float) ph);
-                                       b = blue * (1 - (float) j / (float) ph);
-                               }
-                               else if (pick_mode == EWL_PICK_MODE_RGB_RED) {
-                                       r = red;
-                                       g = 255 * (float) i / (float) pw;
-                                       b = 255 * (float) j / (float) ph;
-                               } else if (pick_mode == EWL_PICK_MODE_RGB_GREEN) {
-                                       r = 255 * (float) i / (float) pw;
-                                       g = green;
-                                       b = 255 * (float) j / (float) ph;
-                               } else if (pick_mode == EWL_PICK_MODE_RGB_BLUE) {
-                                       r = 255 * (float) i / (float) pw;
-                                       g = 255 * (float) j / (float) ph;
-                                       b = blue;
+
+                                       r = red + (j) * (255 - red) / ph;
+                                       r = r * i / pw;
+                                       g = green + (j) * (255 - green) / ph;
+                                       g = g * i / pw;
+                                       b = blue + (j) * (255 - blue) / ph;
+                                       b = b * i / pw;
+
+                                       /*
+                                       r = red + (ph - j) * (255 - red) / ph;
+                                       r = r * i / pw;
+                                       g = green + (ph - j) * (255 - green) / ph;
+                                       g = g * i / pw;
+                                       b = blue + (ph - j) * (255 - blue) / ph;
+                                       b = b * i / pw;
+                                       */
+
                                } else if (pick_mode == EWL_PICK_MODE_HSV_HUE) {
                                        h = hue;
                                        s = 1 - (float) i / (float) pw;
@@ -240,18 +262,6 @@
                                r = red * (1 - (float) j / (float) ph);
                                g = green * (1 - (float) j / (float) ph);
                                b = blue * (1 - (float) j / (float) ph);
-                       } else if (pick_mode == EWL_PICK_MODE_RGB_RED) {
-                               r = 255 * (1 - (float) j / (float) ph);
-                               g = 0;
-                               b = 0;
-                       } else if (pick_mode == EWL_PICK_MODE_RGB_GREEN) {
-                               r = 0;
-                               g = 255 * (1 - (float) j / (float) ph);
-                               b = 0;
-                       } else if (pick_mode == EWL_PICK_MODE_RGB_BLUE) {
-                               r = 0;
-                               g = 0;
-                               b = 255 * (1 - (float) j / (float) ph);
                        } else if (pick_mode == EWL_PICK_MODE_HSV_HUE) {
                                h = 360 * (float) j / (float) ph;
                                s = 1.0;
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/ewl/src/ewl_spectrum.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -3 -r1.5 -r1.6
--- ewl_spectrum.h      27 Jul 2004 15:07:14 -0000      1.5
+++ ewl_spectrum.h      27 Jul 2004 16:17:29 -0000      1.6
@@ -8,9 +8,6 @@
 
 enum {
        EWL_PICK_MODE_RGB,
-       EWL_PICK_MODE_RGB_RED,
-       EWL_PICK_MODE_RGB_GREEN,
-       EWL_PICK_MODE_RGB_BLUE,
        EWL_PICK_MODE_HSV_HUE,
        EWL_PICK_MODE_HSV_SATURATION,
        EWL_PICK_MODE_HSV_VALUE




-------------------------------------------------------
This SF.Net email is sponsored by BEA Weblogic Workshop
FREE Java Enterprise J2EE developer tools!
Get your free copy of BEA WebLogic Workshop 8.1 today.
http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click
_______________________________________________
enlightenment-cvs mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to