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);
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
