Hi,

I've done some hacking on the Nodoka engine. I worked on the gradients
and completely (but it can be still optionally turned on) removed the
glassy effect. For now it's all I am able to do - everything more would
need further studying of how it works. So the tab effect on menu is
still missing, progressbar background is still without gradient, frames
are still old, tabs are without gradient, notebook looks still old,
check and radio buttons are still not changed, and shadow isn't still
added. I attach the patch I made.

Martin
--- nodoka-0.1/src/nodoka_draw.c.old	2007-07-12 04:16:19.000000000 +0200
+++ nodoka-0.1/src/nodoka_draw.c	2007-07-12 14:42:36.000000000 +0200
@@ -155,12 +155,14 @@ nodoka_set_gradient (cairo_t *cr, const 
   if (gradients) {
 		cairo_pattern_t *pattern;
 
+		NodokaRGB top_shade;
 		NodokaRGB bottom_shade;
-		nodoka_shade (color, &bottom_shade, hilight);
+		nodoka_shade (color, &top_shade, hilight);
+		nodoka_shade (color, &bottom_shade, 1.0+(1.0-hilight)/abs(1.0-hilight)*1.05);
 
 		pattern	= cairo_pattern_create_linear (0, 0, width, height);
-		cairo_pattern_add_color_stop_rgb (pattern, 0, bottom_shade.r, bottom_shade.g, bottom_shade.b);
-		cairo_pattern_add_color_stop_rgb (pattern, 0.5, color->r, color->g, color->b);
+		cairo_pattern_add_color_stop_rgb (pattern, 0, top_shade.r, top_shade.g, top_shade.b);
+		cairo_pattern_add_color_stop_rgb (pattern, 0.7, color->r, color->g, color->b);
 		cairo_pattern_add_color_stop_rgb (pattern, 1, bottom_shade.r, bottom_shade.g, bottom_shade.b);
 		
 		cairo_set_source (cr, pattern);
@@ -227,31 +229,33 @@ nodoka_draw_button (cairo_t *cr,
 		cairo_clip_preserve(cr);
 
 	int curve_pos = 1;
-	if (widget->roundness < 2 && widget->glazestyle != 4)
+	if (widget->roundness < 2 && widget->glazestyle != 5)
 		curve_pos = 2;
 
-	//glass effect
-	if (widget->glazestyle > 0) {
+	//glass effect 0 = no highligt 1 = flat hilight, 2 = curved hilight, 3 = concave style, 4 = top curved hilight
+	if (widget->glazestyle > 1) {
 		cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
-		widget->glazestyle == 2 ? cairo_fill_preserve(cr) : cairo_fill(cr);
+		widget->glazestyle == 3 ? cairo_fill_preserve(cr) : cairo_fill(cr);
 		if (!horizontal)
 			rotate_mirror_translate (cr, M_PI/2, x, y, FALSE, FALSE);
-		if (widget->glazestyle < 3)
+		if (widget->glazestyle < 4)
 			nodoka_draw_curved_hilight (cr, curve_pos, (horizontal ? width : height), (horizontal ? height : width));
 		else
 			nodoka_draw_curved_hilight_top (cr, curve_pos, (horizontal ? width : height), (horizontal ? height : width));
 	}
-	else {
+	else { 
 		cairo_fill(cr);
-		if (!horizontal)
-			rotate_mirror_translate (cr, M_PI/2, x, y, FALSE, FALSE);
-		nodoka_draw_flat_hilight (cr, xoffset + 1, yoffset + 1, (horizontal ? width-(xoffset*2)-2 : height-(yoffset*2)-2), (horizontal ? height-(yoffset*2)-2 : width-(xoffset*2)-2));
+		if (widget->glazestyle == 1) {
+			if (!horizontal)
+				rotate_mirror_translate (cr, M_PI/2, x, y, FALSE, FALSE);
+			nodoka_draw_flat_hilight (cr, xoffset + 1, yoffset + 1, (horizontal ? width-(xoffset*2)-2 : height-(yoffset*2)-2), (horizontal ? height-(yoffset*2)-2 : width-(xoffset*2)-2));
+		}
 	}
 
 	nodoka_set_gradient (cr, &hilight, GLASS_HILIGHT, 0, height, widget->gradients, TRUE);
 	cairo_fill(cr);
 
-	if (widget->glazestyle == 4) {
+	if (widget->glazestyle == 5) {
 		if (!horizontal)
 			rotate_mirror_translate (cr, M_PI/2, x, y, FALSE, FALSE);
 		nodoka_draw_curved_hilight_bottom (cr, curve_pos, (horizontal ? width : height), (horizontal ? height : width));
@@ -509,7 +513,7 @@ nodoka_draw_progressbar_fill (cairo_t *c
 	NodokaRGB *fill = (NodokaRGB*)&colors->spot[1];
 	NodokaRGB *border = (NodokaRGB*)&colors->spot[2];
 	NodokaRGB hilight;
-	nodoka_shade (fill, &hilight, 1.1*widget->hilight_ratio);
+	nodoka_shade (fill, &hilight, 0.7*widget->hilight_ratio);
 
 	cairo_rectangle (cr, x, y, width, height);
 
@@ -547,25 +551,26 @@ nodoka_draw_progressbar_fill (cairo_t *c
 	cairo_rectangle (cr, 1.5, 0.5, width-2, height-1);
 
 	/* Draw fill */
-	nodoka_set_gradient (cr, fill, GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
+	nodoka_set_gradient (cr, fill, 1.5*GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
 		
 	//glass effect
-	if (widget->glazestyle > 0) {
-		widget->glazestyle == 2 ? cairo_fill_preserve(cr) : cairo_fill(cr);
-		if (widget->glazestyle < 3)
+	if (widget->glazestyle > 1) {
+		widget->glazestyle == 3 ? cairo_fill_preserve(cr) : cairo_fill(cr);
+		if (widget->glazestyle < 4)
 			nodoka_draw_curved_hilight (cr, 1, width, height);
 		else
 			nodoka_draw_curved_hilight_top (cr, 1, width, height);
 	}
 	else {
 		cairo_fill(cr);
-		nodoka_draw_flat_hilight (cr, 1.5, 0.5, width-2, height);
+		if (widget->glazestyle == 1) 
+			nodoka_draw_flat_hilight (cr, 1.5, 0.5, width-2, height);
 	}
 	
 	nodoka_set_gradient (cr, &hilight, GLASS_HILIGHT, 0, height, widget->gradients, TRUE);
 	cairo_fill (cr);
 
-	if (widget->glazestyle == 4) {
+	if (widget->glazestyle == 5) {
 		nodoka_draw_curved_hilight_bottom (cr, 1, width, height+1);
 		NodokaRGB shadow;
 		nodoka_shade (fill, &shadow, 0.96*(1/widget->hilight_ratio));
@@ -573,7 +578,7 @@ nodoka_draw_progressbar_fill (cairo_t *c
 		cairo_fill(cr);
 	}
 
-	if (widget->glazestyle == 2) {
+	if (widget->glazestyle == 3) {
 		cairo_move_to (cr, 2.5, height-2);
 		cairo_line_to (cr, 2.5, 2);
 		cairo_move_to (cr, 2, 1.5);
@@ -589,7 +594,7 @@ nodoka_draw_progressbar_fill (cairo_t *c
 	}	
 	
 	/* Draw strokes */
-	while (tile_pos <= width+x_step-2)
+/*	while (tile_pos <= width+x_step-2)
 	{
 		cairo_move_to (cr, stroke_width/2-x_step, 0);
 		cairo_line_to (cr, stroke_width-x_step,   0);
@@ -602,7 +607,7 @@ nodoka_draw_progressbar_fill (cairo_t *c
 
 	cairo_set_source_rgba (cr, border->r, border->g, border->b, 0.15);
 	cairo_fill (cr);
-	cairo_restore (cr);
+	cairo_restore (cr);*/
 	
 	//border
 	cairo_set_source_rgba (cr, border->r, border->g, border->b, 0.8);
@@ -651,25 +656,26 @@ nodoka_draw_menubar (cairo_t *cr,
 	//glass menubar
 	if (menubarstyle == 1) {
 		NodokaRGB hilight;
-		nodoka_set_gradient (cr, fill, GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
+		nodoka_set_gradient (cr, fill, 1.5*GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
 		nodoka_shade (fill, &hilight, 1.1*widget->hilight_ratio);
 		//glass effect
-		if (widget->glazestyle > 0) {
-			widget->glazestyle == 2 ? cairo_fill_preserve(cr) : cairo_fill(cr);
-			if (widget->glazestyle < 3)
+		if (widget->glazestyle > 1) {
+			widget->glazestyle == 3 ? cairo_fill_preserve(cr) : cairo_fill(cr);
+			if (widget->glazestyle < 4)
 				nodoka_draw_curved_hilight (cr, 0, width, height);
 			else
 				nodoka_draw_curved_hilight_top (cr, 0, width, height);
 		}
 		else {
 			cairo_fill(cr);
-			nodoka_draw_flat_hilight (cr, 0, 0, width, height);
+			if (widget->glazestyle == 1)
+				nodoka_draw_flat_hilight (cr, 0, 0, width, height);
 		}
 
-		nodoka_set_gradient (cr, &hilight, GLASS_HILIGHT, 0, height, widget->gradients, TRUE);
+		nodoka_set_gradient (cr, &hilight, 1.5*GLASS_HILIGHT, 0, height, widget->gradients, TRUE);
 		cairo_fill (cr);
 
-		if (widget->glazestyle == 4) {
+		if (widget->glazestyle == 5) {
 			nodoka_draw_curved_hilight_bottom (cr, 0, width, height);
 			NodokaRGB shadow;
 			nodoka_shade (fill, &shadow, 0.96*(1/widget->hilight_ratio));
@@ -677,19 +683,19 @@ nodoka_draw_menubar (cairo_t *cr,
 			cairo_fill(cr);
 		}
 
-		if (widget->glazestyle == 2) {
+		if (widget->glazestyle == 3) {
 			cairo_set_line_width (cr, 1.0);
 			cairo_move_to (cr, 1.5, height-2);
 			cairo_line_to (cr, 1.5, 1);
 			cairo_move_to (cr, 1, 1.5);
 			cairo_line_to (cr, width-1, 1.5);
-			nodoka_set_gradient (cr, &hilight, GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
+			nodoka_set_gradient (cr, &hilight, 1.5*GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
 			cairo_stroke (cr);
 			cairo_move_to (cr, width-1.5, 2);
 			cairo_line_to (cr, width-1.5, height-2);
 			cairo_move_to (cr, width-1, height-1.5);
 			cairo_line_to (cr, 1, height-1.5);
-			nodoka_set_gradient (cr, &hilight, GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
+			nodoka_set_gradient (cr, &hilight, 1.5*GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
 			cairo_stroke (cr);
 		}	
 	}
@@ -734,7 +740,7 @@ nodoka_draw_menubar (cairo_t *cr,
 	}
 	
 	/* Draw bottom line */
-	if (menubarstyle == 1 && widget->glazestyle == 2)
+	if (menubarstyle == 1 && widget->glazestyle == 3)
 		cairo_rectangle(cr, 0.5, 0.5, width-1, height-1);
 #ifndef HAVE_MACMENU	
 	else {
@@ -1137,22 +1143,23 @@ nodoka_draw_list_view_header (cairo_t *c
 			cairo_rectangle (cr, 0, 0, width, height);
 			nodoka_set_gradient (cr, fill, GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
 			//glass effect
-			if (widget->glazestyle > 0) {
-				widget->glazestyle == 2 ? cairo_fill_preserve(cr) : cairo_fill(cr);
-				if (widget->glazestyle < 3)
+			if (widget->glazestyle > 1) {
+				widget->glazestyle == 3 ? cairo_fill_preserve(cr) : cairo_fill(cr);
+				if (widget->glazestyle < 4)
 					nodoka_draw_curved_hilight (cr, 0, width, height);
 				else
 					nodoka_draw_curved_hilight_top (cr, 0, width, height);
 			}
 			else {
 				cairo_fill (cr);
-				nodoka_draw_flat_hilight (cr, 0 , 0 , width, height);
+				if (widget->glazestyle == 1)
+					nodoka_draw_flat_hilight (cr, 0 , 0 , width, height);
 			}
 			
 			nodoka_set_gradient (cr, &hilight_header, GLASS_HILIGHT, 0, height, widget->gradients, TRUE);
 			cairo_fill (cr);
 
-			if (widget->glazestyle == 4) {
+			if (widget->glazestyle == 5) {
 				nodoka_draw_curved_hilight_bottom (cr, 0, width, height);
 				NodokaRGB shadow;
 				nodoka_shade (fill, &shadow, 0.96*(1/widget->hilight_ratio));
@@ -1160,7 +1167,7 @@ nodoka_draw_list_view_header (cairo_t *c
 				cairo_fill(cr);
 			}
 
-			if (widget->glazestyle == 2) {
+			if (widget->glazestyle == 3) {
 				cairo_move_to (cr, 0.5, height-2);
 				cairo_line_to (cr, 0.5, 1);
 				cairo_move_to (cr, 0.0, 0.5);
@@ -1271,7 +1278,7 @@ nodoka_draw_menuitem (cairo_t *cr,
 		cairo_rectangle (cr, 0, 0, width, height);
 	else
 		clearlooks_rounded_rectangle  (cr, 0, 0, width, height, widget->roundness, widget->corners);
-	nodoka_set_gradient (cr, fill, menuitemstyle == 1 ? GLASS_HILIGHT : 1.08, 0, height, widget->gradients, FALSE);
+	nodoka_set_gradient (cr, fill, 1.5*GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
 
 	//striped
 	if (menuitemstyle == 2) {
@@ -1302,40 +1309,41 @@ nodoka_draw_menuitem (cairo_t *cr,
 		if (widget->roundness > 1)
 			cairo_clip_preserve(cr);
 		//glass effect
-		if (widget->glazestyle > 0) {
-			widget->glazestyle == 2 ? cairo_fill_preserve(cr) : cairo_fill(cr);
-			if (widget->glazestyle < 3)
+		if (widget->glazestyle > 1) {
+			widget->glazestyle == 3 ? cairo_fill_preserve(cr) : cairo_fill(cr);
+			if (widget->glazestyle < 4)
 				nodoka_draw_curved_hilight (cr, 0, width, height);
 			else
 				nodoka_draw_curved_hilight_top (cr, 0, width, height);
 		}
 		else {
 			cairo_fill(cr);
-			nodoka_draw_flat_hilight (cr, 0, 0, width, height);
+			if (widget->glazestyle == 1)
+				nodoka_draw_flat_hilight (cr, 0, 0, width, height);
 		}
 		nodoka_set_gradient (cr, &hilight, GLASS_HILIGHT, 0, height, widget->gradients, TRUE);
 		cairo_fill (cr);
 		
-		if (widget->glazestyle == 4) {
+		if (widget->glazestyle == 5) {
 			nodoka_draw_curved_hilight_bottom (cr, 0, width, height);
 			NodokaRGB shadow;
 			nodoka_shade (&colors->spot[1], &shadow, 0.96*(1/widget->hilight_ratio));
-			nodoka_set_gradient (cr, &shadow, GLASS_HILIGHT, 0, height, widget->gradients, TRUE);
+			nodoka_set_gradient (cr, &shadow, 1.5*GLASS_HILIGHT, 0, height, widget->gradients, TRUE);
 			cairo_fill(cr);
 		}
 
-		if (widget->glazestyle == 2) {
+		if (widget->glazestyle == 3) {
 			cairo_move_to (cr, 1.5, height-2);
 			cairo_line_to (cr, 1.5, 2);
 			cairo_move_to (cr, 1, 1.5);
 			cairo_line_to (cr, width-1, 1.5);
-			nodoka_set_gradient (cr, &hilight, GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
+			nodoka_set_gradient (cr, &hilight, 1.5*GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
 			cairo_stroke (cr);
 			cairo_move_to (cr, width-1.5, 2);
 			cairo_line_to (cr, width-1.5, height-2);
 			cairo_move_to (cr, width-1, height-1.5);
 			cairo_line_to (cr, 1, height-1.5);
-			nodoka_set_gradient (cr, fill, GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
+			nodoka_set_gradient (cr, fill, 1.5*GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
 			cairo_stroke (cr);
 		}
 	}
@@ -1425,23 +1433,24 @@ nodoka_draw_scrollbar_stepper (cairo_t *
 	if (widget->roundness < 2  && widget->glazestyle != 4)
 		curve_pos = 2;
 	//glass effect
-	if (widget->glazestyle > 0) {
+	if (widget->glazestyle > 1) {
 		cairo_set_fill_rule (cr, CAIRO_FILL_RULE_EVEN_ODD);
-		widget->glazestyle == 2 ? cairo_fill_preserve(cr) : cairo_fill(cr);
-		if (widget->glazestyle < 3)
+		widget->glazestyle == 3 ? cairo_fill_preserve(cr) : cairo_fill(cr);
+		if (widget->glazestyle < 4)
 			nodoka_draw_curved_hilight (cr, curve_pos, width, height);
 		else
 			nodoka_draw_curved_hilight_top (cr, curve_pos, width, height);
 	}
 	else {
 		cairo_fill(cr);
-		nodoka_draw_flat_hilight (cr, 1, 1, width-2, height-2);
+		if (widget->glazestyle == 1)
+			nodoka_draw_flat_hilight (cr, 1, 1, width-2, height-2);
 	}
 	
 	nodoka_set_gradient (cr, &hilight, GLASS_HILIGHT, 0, height, widget->gradients, TRUE);
 	cairo_fill(cr);
 
-	if (widget->glazestyle == 4) {
+	if (widget->glazestyle == 5) {
 		nodoka_draw_curved_hilight_bottom (cr, curve_pos, width, height);
 		NodokaRGB shadow;
 		nodoka_shade (fill, &shadow, 0.96*(1/widget->hilight_ratio));
@@ -1451,7 +1460,7 @@ nodoka_draw_scrollbar_stepper (cairo_t *
 
 	nodoka_shade (fill, &hilight, 1.08*widget->hilight_ratio); 
 	//the white inner border
-	if (widget->roundness < 2 && widget->glazestyle != 4) {
+	if (widget->roundness < 2 && widget->glazestyle != 5) {
 		cairo_rectangle(cr, 1.5, 1.5, width-3, height-3);		
 		nodoka_set_gradient (cr, &hilight, GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
 		cairo_stroke(cr);
@@ -1549,22 +1558,23 @@ nodoka_draw_scrollbar_slider (cairo_t *c
 	nodoka_set_gradient (cr, &fill, GLASS_HILIGHT, 0, height, widget->gradients, FALSE);
 
 	//glass effect
-	if (widget->glazestyle > 0) {
-		widget->glazestyle == 2 ? cairo_fill_preserve(cr) : cairo_fill(cr);
-		if (widget->glazestyle < 3)
+	if (widget->glazestyle > 1) {
+		widget->glazestyle == 3 ? cairo_fill_preserve(cr) : cairo_fill(cr);
+		if (widget->glazestyle < 4)
 			nodoka_draw_curved_hilight (cr, 1, width, height);
 		else
 			nodoka_draw_curved_hilight_top (cr, 1, width, height);
 	}	
 	else {
 		cairo_fill(cr);
-		nodoka_draw_flat_hilight (cr, 1, 1, width-2, height-2);
+		if (widget->glazestyle == 1)
+			nodoka_draw_flat_hilight (cr, 1, 1, width-2, height-2);
 	}
 	
 	nodoka_set_gradient (cr, &hilight, GLASS_HILIGHT, 0, height, widget->gradients, TRUE);
 	cairo_fill(cr);
 
-	if (widget->glazestyle == 4) {
+	if (widget->glazestyle == 5) {
 		nodoka_draw_curved_hilight_bottom (cr, 1, width, height);
 		NodokaRGB shadow;
 		nodoka_shade (&fill, &shadow, 0.96*(1/widget->hilight_ratio));
@@ -1573,7 +1583,7 @@ nodoka_draw_scrollbar_slider (cairo_t *c
 	}
 
 	nodoka_shade (&fill, &hilight, 1.08*widget->hilight_ratio);
-	if (widget->roundness < 2 && widget->glazestyle != 4) {
+	if (widget->roundness < 2 && widget->glazestyle != 5) {
 		//the white inner border
 		cairo_rectangle(cr, 1.5, 1.5, width-3, height-3);		
 		nodoka_set_gradient (cr, &hilight, GLASS_HILIGHT, 0, height, widget->gradients, FALSE);

Attachment: signature.asc
Description: This is a digitally signed message part

_______________________________________________
Fedora-art-list mailing list
[email protected]
http://www.redhat.com/mailman/listinfo/fedora-art-list

Reply via email to