[murrine] modified: src/cairo-support.c
- From: Andrea Cimitan <acimitan src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [murrine] modified: src/cairo-support.c
- Date: Tue, 8 Dec 2009 15:20:11 +0000 (UTC)
commit 9eefba83c58100c85ae91a87d2f973872943f5bf
Author: Andrea Cimitan <andrea cimitan gmail com>
Date: Tue Sep 15 16:08:37 2009 +0200
modified: src/cairo-support.c
modified: src/cairo-support.h
modified: src/murrine_draw.c
modified: src/murrine_rc_style.c
modified: src/murrine_rc_style.h
modified: src/murrine_style.c
modified: src/murrine_style.h
modified: src/murrine_types.h
Started implementing border_shade
src/cairo-support.c | 32 ++++++++++++++++-
src/cairo-support.h | 6 +++
src/murrine_draw.c | 93 ++++++++++++++++++++++++++++++-----------------
src/murrine_rc_style.c | 9 +++++
src/murrine_rc_style.h | 56 +++++++++++++++--------------
src/murrine_style.c | 13 +++++--
src/murrine_style.h | 1 +
src/murrine_types.h | 1 +
8 files changed, 145 insertions(+), 66 deletions(-)
---
diff --git a/src/cairo-support.c b/src/cairo-support.c
index a2b4c8a..98be961 100644
--- a/src/cairo-support.c
+++ b/src/cairo-support.c
@@ -411,7 +411,7 @@ clearlooks_rounded_rectangle (cairo_t *cr,
cairo_rectangle (cr, x, y, w, h);
return;
}
-
+
radius = MIN (radius, MIN (w/2.0, h/2.0));
if (corners & MRN_CORNER_TOPLEFT)
@@ -806,6 +806,36 @@ murrine_set_gradient (cairo_t *cr,
}
void
+murrine_draw_border (cairo_t *cr,
+ const MurrineRGB *color,
+ double x, double y, double width, double height,
+ int roundness, uint8 corners,
+ double highlight_shade, double alpha)
+{
+ if (highlight_shade != 1.0)
+ {
+ cairo_pattern_t *pat;
+ MurrineRGB shade1, shade2;
+
+ //warning, only accepts hightlight_shade < 2
+ murrine_shade (color, 2.0-highlight_shade, &shade1);
+ murrine_shade (color, highlight_shade, &shade2);
+
+ pat = cairo_pattern_create_linear (x, y, x, height+y);
+ murrine_pattern_add_color_stop_rgba (pat, 0.00, &shade1, alpha);
+ murrine_pattern_add_color_stop_rgba (pat, 1.00, &shade2, alpha);
+
+ cairo_set_source (cr, pat);
+ cairo_pattern_destroy (pat);
+ }
+ else
+ murrine_set_color_rgba (cr, color, alpha);
+
+ murrine_rounded_rectangle (cr, x, y, width, height, roundness, corners);
+ cairo_stroke (cr);
+}
+
+void
rotate_mirror_translate (cairo_t *cr,
double radius, double x, double y,
boolean mirror_horizontally, boolean mirror_vertically)
diff --git a/src/cairo-support.h b/src/cairo-support.h
index 4302d2c..f1333c4 100644
--- a/src/cairo-support.h
+++ b/src/cairo-support.h
@@ -91,6 +91,12 @@ G_GNUC_INTERNAL void murrine_set_gradient (cairo_t *cr,
int x, int y, int width, int height,
boolean gradients, boolean alpha);
+G_GNUC_INTERNAL void murrine_draw_border (cairo_t *cr,
+ const MurrineRGB *color,
+ double x, double y, double width, double height,
+ int roundness, uint8 corners,
+ double highlight_shade, double alpha);
+
G_GNUC_INTERNAL void murrine_draw_glaze (cairo_t *cr,
const MurrineRGB *fill,
double glow_shade,
diff --git a/src/murrine_draw.c b/src/murrine_draw.c
index de5e540..014def3 100644
--- a/src/murrine_draw.c
+++ b/src/murrine_draw.c
@@ -149,6 +149,7 @@ murrine_draw_button (cairo_t *cr,
{
double xos = widget->xthickness > 2 ? 1 : 0;
double yos = widget->ythickness > 2 ? 1 : 0;
+ double border_shade_custom = widget->border_shade;
double glow_shade_custom = widget->glow_shade;
double highlight_shade_custom = widget->highlight_shade;
double lightborder_shade_custom = widget->lightborder_shade;
@@ -161,6 +162,7 @@ murrine_draw_button (cairo_t *cr,
mrn_gradient_custom = get_decreased_gradient_shades (widget->mrn_gradient, 3.0);
glow_shade_custom = get_decreased_shade (widget->glow_shade, 2.0);
highlight_shade_custom = get_decreased_shade (widget->highlight_shade, 2.0);
+ border_shade_custom = get_decreased_shade (widget->border_shade, 2.0);
lightborder_shade_custom = get_decreased_shade (widget->lightborder_shade, 2.0);
}
else
@@ -180,14 +182,18 @@ murrine_draw_button (cairo_t *cr,
if (!widget->active && !widget->disabled && widget->reliefstyle > 1 && xos >= 0.5 && yos >= 0.5)
{
- murrine_rounded_rectangle (cr, xos-0.5, yos-0.5, width-(xos*2)+1, height-(yos*2)+1, widget->roundness+1, widget->corners);
- murrine_set_color_rgba (cr, &border, 0.08);
- cairo_stroke (cr);
+ murrine_draw_border (cr, &border,
+ xos-0.5, yos-0.5, width-(xos*2)+1, height-(yos*2)+1,
+ widget->roundness+1, widget->corners,
+ border_shade_custom, 0.08);
}
else if (widget->reliefstyle != 0 && xos >= 0.5 && yos >= 0.5)
+ {
+ border_shade_custom = 1.0+fabs(1.0-border_shade_custom);
murrine_draw_inset (cr, &widget->parentbg, xos-0.5, yos-0.5,
width-(xos*2)+1, height-(yos*2)+1,
widget->roundness+1, widget->corners);
+ }
murrine_mix_color (&border, &fill, 0.4, &border);
@@ -237,10 +243,10 @@ murrine_draw_button (cairo_t *cr,
cairo_restore (cr);
}
- /* Draw the border */
- murrine_set_color_rgb (cr, &border);
- murrine_rounded_rectangle (cr, xos+0.5, yos+0.5, width-(xos*2)-1, height-(yos*2)-1, widget->roundness, widget->corners);
- cairo_stroke (cr);
+ murrine_draw_border (cr, &border,
+ xos+0.5, yos+0.5, width-(xos*2)-1, height-(yos*2)-1,
+ widget->roundness, widget->corners,
+ border_shade_custom, 1.0);
}
static void
@@ -291,9 +297,10 @@ murrine_draw_entry (cairo_t *cr,
}
/* Draw the border */
- murrine_set_color_rgb (cr, &border);
- murrine_rounded_rectangle (cr, 1, 1, width-3, height-3, radius, widget->corners);
- cairo_stroke (cr);
+ murrine_draw_border (cr, &border,
+ 1, 1, width-3, height-3,
+ radius, widget->corners,
+ 1.0+fabs(1.0-widget->border_shade), 1.0);
}
static void
@@ -411,7 +418,7 @@ murrine_scale_draw_gradient (cairo_t *cr,
{
MurrineRGB lightborder;
murrine_shade (c1, lightborder_shade, &lightborder);
-
+
if (horizontal)
{
cairo_move_to (cr, x+1, y+height-0.5);
@@ -690,9 +697,10 @@ murrine_draw_progressbar_fill (cairo_t *cr,
/* Draw the border */
murrine_mix_color (&border, fill, 0.28, &border);
- murrine_set_color_rgb (cr, &border);
- murrine_rounded_rectangle (cr, 1.5, 0.5, width-3, height-1, roundness, widget->corners);
- cairo_stroke (cr);
+ murrine_draw_border (cr, &border,
+ 1.5, 0.5, width-3, height-1,
+ roundness, widget->corners,
+ widget->border_shade, 1.0);
cairo_restore (cr);
}
@@ -1403,9 +1411,10 @@ murrine_draw_menuitem (cairo_t *cr,
}
}
- murrine_set_color_rgba (cr, border, 0.8);
- murrine_rounded_rectangle (cr, 0.5, 0.5, width-1, height-1, widget->roundness, widget->corners);
- cairo_stroke (cr);
+ murrine_draw_border (cr, border,
+ 0.5, 0.5, width-1, height-1,
+ widget->roundness, widget->corners,
+ widget->border_shade, 0.8);
}
static void
@@ -1455,8 +1464,6 @@ murrine_draw_scrollbar_trough (cairo_t *cr,
{
cairo_move_to (cr, 0.5, 0);
cairo_line_to (cr, 0.5, height);
-/* cairo_move_to (cr, width-0.5, 0);*/
-/* cairo_line_to (cr, width-0.5, height);*/
}
cairo_stroke (cr);
}
@@ -1494,9 +1501,10 @@ murrine_draw_scrollbar_stepper (cairo_t *cr,
cairo_restore (cr);
- murrine_set_color_rgb (cr, &border);
- murrine_rounded_rectangle (cr, 0.5, 0.5, width-1, height-1, widget->roundness, widget->corners);
- cairo_stroke (cr);
+ murrine_draw_border (cr, &border,
+ 0.5, 0.5, width-1, height-1,
+ widget->roundness, widget->corners,
+ widget->border_shade, 1.0);
}
static void
@@ -1645,9 +1653,10 @@ murrine_draw_scrollbar_slider (cairo_t *cr,
cairo_restore (cr);
- murrine_set_color_rgb (cr, &border);
- murrine_rounded_rectangle (cr, 0.5, 0.5, width-1, height-1, widget->roundness, widget->corners);
- cairo_stroke (cr);
+ murrine_draw_border (cr, &border,
+ 0.5, 0.5, width-1, height-1,
+ widget->roundness, widget->corners,
+ widget->border_shade, 1.0);
}
static void
@@ -1972,9 +1981,10 @@ murrine_draw_radiobutton (cairo_t *cr,
MurrineRGB shadow;
murrine_shade (border, 0.9, &shadow);
- murrine_set_color_rgba (cr, &shadow, 0.08);
- murrine_rounded_rectangle (cr, 0.5, 0.5, width-1, height-1, roundness+1, widget->corners);
- cairo_stroke (cr);
+ murrine_draw_border (cr, &shadow,
+ 0.5, 0.5, width-1, height-1,
+ roundness+1, widget->corners,
+ widget->border_shade, 0.08);
}
else if (widget->reliefstyle != 0)
murrine_draw_inset (cr, &widget->parentbg, 0.5, 0.5, width-1, height-1, roundness+1, widget->corners);
@@ -2000,9 +2010,10 @@ murrine_draw_radiobutton (cairo_t *cr,
cairo_restore (cr);
- murrine_rounded_rectangle_closed (cr, 1.5, 1.5, width-3, height-3, roundness, widget->corners);
- murrine_set_color_rgb (cr, border);
- cairo_stroke (cr);
+ murrine_draw_border (cr, border,
+ 1.5, 1.5, width-3, height-3,
+ roundness, widget->corners,
+ draw_bullet ? widget->border_shade : 1.0+fabs(1.0-widget->border_shade), 1.0);
if (draw_bullet)
{
@@ -2108,9 +2119,10 @@ murrine_draw_checkbox (cairo_t *cr,
cairo_restore (cr);
- murrine_rounded_rectangle_closed (cr, 1.5, 1.5, width-3, height-3, roundness, widget->corners);
- murrine_set_color_rgb (cr, border);
- cairo_stroke (cr);
+ murrine_draw_border (cr, border,
+ 1.5, 1.5, width-3, height-3,
+ roundness, widget->corners,
+ draw_bullet ? widget->border_shade : 1.0+fabs(1.0-widget->border_shade), 1.0);
if (draw_bullet)
{
@@ -2124,12 +2136,25 @@ murrine_draw_checkbox (cairo_t *cr,
}
else
{
+ /* old look */
+ /*
cairo_translate (cr, -1, 0);
cairo_move_to (cr, 4, 8);
cairo_rel_line_to (cr, 5, 4);
cairo_rel_curve_to (cr, 1.4, -5, -1, -1, 5.7, -12.5);
cairo_rel_curve_to (cr, -4, 4, -4, 4, -6.7, 9.3);
cairo_rel_line_to (cr, -2.3, -2.5);
+ */
+
+ cairo_scale (cr, width / 19.0, height / 20.0);
+ cairo_translate(cr, 2.1, 4.75);
+ cairo_move_to (cr, 1.0, 8.0);
+ cairo_rel_line_to (cr, 2.0, -2.50);
+ cairo_rel_line_to (cr, 3.5, 2.75);
+ cairo_rel_line_to (cr, 5.25, -8.5);
+ cairo_rel_line_to (cr, 1.95, 0.0);
+ cairo_rel_line_to (cr, -6.95, 12.5);
+ cairo_close_path (cr);
}
murrine_set_color_rgba (cr, dot, trans);
diff --git a/src/murrine_rc_style.c b/src/murrine_rc_style.c
index 1adec9e..be99180 100644
--- a/src/murrine_rc_style.c
+++ b/src/murrine_rc_style.c
@@ -36,6 +36,7 @@ static void murrine_rc_style_merge (GtkRcStyle *dest,
enum
{
TOKEN_ANIMATION = G_TOKEN_LAST + 1,
+ TOKEN_BORDER_SHADE,
TOKEN_COLORIZE_SCROLLBAR,
TOKEN_CONTRAST,
TOKEN_FOCUS_COLOR,
@@ -89,6 +90,7 @@ static struct
theme_symbols[] =
{
{ "animation", TOKEN_ANIMATION },
+ { "border_shade", TOKEN_BORDER_SHADE },
{ "colorize_scrollbar", TOKEN_COLORIZE_SCROLLBAR },
{ "contrast", TOKEN_CONTRAST },
{ "focus_color", TOKEN_FOCUS_COLOR },
@@ -148,6 +150,7 @@ murrine_rc_style_init (MurrineRcStyle *murrine_rc)
murrine_rc->flags = 0;
murrine_rc->animation = FALSE;
+ murrine_rc->border_shade = 1.0;
murrine_rc->colorize_scrollbar = TRUE;
murrine_rc->contrast = 1.0;
murrine_rc->has_focus_color = FALSE;
@@ -471,6 +474,10 @@ murrine_rc_style_parse (GtkRcStyle *rc_style,
token = theme_parse_boolean (settings, scanner, &murrine_style->animation);
murrine_style->flags |= MRN_FLAG_ANIMATION;
break;
+ case TOKEN_BORDER_SHADE:
+ token = theme_parse_shade (settings, scanner, &murrine_style->border_shade);
+ murrine_style->flags |= MRN_FLAG_BORDER_SHADE;
+ break;
case TOKEN_COLORIZE_SCROLLBAR:
token = theme_parse_boolean (settings, scanner, &murrine_style->colorize_scrollbar);
murrine_style->flags |= MRN_FLAG_COLORIZE_SCROLLBAR;
@@ -645,6 +652,8 @@ murrine_rc_style_merge (GtkRcStyle *dest,
if (flags & MRN_FLAG_ANIMATION)
dest_w->animation = src_w->animation;
+ if (flags & MRN_FLAG_BORDER_SHADE)
+ dest_w->border_shade = src_w->border_shade;
if (flags & MRN_FLAG_COLORIZE_SCROLLBAR)
dest_w->colorize_scrollbar = src_w->colorize_scrollbar;
if (flags & MRN_FLAG_CONTRAST)
diff --git a/src/murrine_rc_style.h b/src/murrine_rc_style.h
index c9242fc..1ff1176 100644
--- a/src/murrine_rc_style.h
+++ b/src/murrine_rc_style.h
@@ -36,33 +36,34 @@ typedef struct _MurrineRcStyleClass MurrineRcStyleClass;
typedef enum
{
MRN_FLAG_ANIMATION = 1 << 0,
- MRN_FLAG_COLORIZE_SCROLLBAR = 1 << 1,
- MRN_FLAG_CONTRAST = 1 << 2,
- MRN_FLAG_FOCUS_COLOR = 1 << 3,
- MRN_FLAG_GLAZESTYLE = 1 << 4,
- MRN_FLAG_GLOW_SHADE = 1 << 5,
- MRN_FLAG_GLOWSTYLE = 1 << 6,
- MRN_FLAG_GRADIENT_SHADES = 1 << 7,
- MRN_FLAG_GRADIENTS = 1 << 8,
- MRN_FLAG_HIGHLIGHT_SHADE = 1 << 9,
- MRN_FLAG_LIGHTBORDER_SHADE = 1 << 10,
- MRN_FLAG_LIGHTBORDERSTYLE= 1 << 11,
- MRN_FLAG_LISTVIEWHEADERSTYLE = 1 << 12,
- MRN_FLAG_LISTVIEWSTYLE = 1 << 13,
- MRN_FLAG_MENUBARITEMSTYLE = 1 << 14,
- MRN_FLAG_MENUBARSTYLE = 1 << 15,
- MRN_FLAG_MENUITEMSTYLE = 1 << 16,
- MRN_FLAG_MENUSTYLE = 1 << 17,
- MRN_FLAG_PROFILE = 1 << 18,
- MRN_FLAG_PROGRESSBARSTYLE = 1 << 19,
- MRN_FLAG_RELIEFSTYLE = 1 << 20,
- MRN_FLAG_RGBA = 1 << 21,
- MRN_FLAG_ROUNDNESS = 1 << 22,
- MRN_FLAG_SCROLLBAR_COLOR = 1 << 23,
- MRN_FLAG_SCROLLBARSTYLE = 1 << 24,
- MRN_FLAG_SLIDERSTYLE = 1 << 25,
- MRN_FLAG_STEPPERSTYLE = 1 << 26,
- MRN_FLAG_TOOLBARSTYLE = 1 << 27
+ MRN_FLAG_BORDER_SHADE = 1 << 1,
+ MRN_FLAG_COLORIZE_SCROLLBAR = 1 << 2,
+ MRN_FLAG_CONTRAST = 1 << 3,
+ MRN_FLAG_FOCUS_COLOR = 1 << 4,
+ MRN_FLAG_GLAZESTYLE = 1 << 5,
+ MRN_FLAG_GLOW_SHADE = 1 << 6,
+ MRN_FLAG_GLOWSTYLE = 1 << 7,
+ MRN_FLAG_GRADIENT_SHADES = 1 << 8,
+ MRN_FLAG_GRADIENTS = 1 << 9,
+ MRN_FLAG_HIGHLIGHT_SHADE = 1 << 10,
+ MRN_FLAG_LIGHTBORDER_SHADE = 1 << 11,
+ MRN_FLAG_LIGHTBORDERSTYLE= 1 << 12,
+ MRN_FLAG_LISTVIEWHEADERSTYLE = 1 << 13,
+ MRN_FLAG_LISTVIEWSTYLE = 1 << 14,
+ MRN_FLAG_MENUBARITEMSTYLE = 1 << 15,
+ MRN_FLAG_MENUBARSTYLE = 1 << 16,
+ MRN_FLAG_MENUITEMSTYLE = 1 << 17,
+ MRN_FLAG_MENUSTYLE = 1 << 18,
+ MRN_FLAG_PROFILE = 1 << 19,
+ MRN_FLAG_PROGRESSBARSTYLE = 1 << 20,
+ MRN_FLAG_RELIEFSTYLE = 1 << 21,
+ MRN_FLAG_RGBA = 1 << 22,
+ MRN_FLAG_ROUNDNESS = 1 << 23,
+ MRN_FLAG_SCROLLBAR_COLOR = 1 << 24,
+ MRN_FLAG_SCROLLBARSTYLE = 1 << 25,
+ MRN_FLAG_SLIDERSTYLE = 1 << 26,
+ MRN_FLAG_STEPPERSTYLE = 1 << 27,
+ MRN_FLAG_TOOLBARSTYLE = 1 << 28
} MurrineRcFlags;
struct _MurrineRcStyle
@@ -71,6 +72,7 @@ struct _MurrineRcStyle
MurrineRcFlags flags;
+ double border_shade;
double contrast;
double glow_shade;
double gradient_shades[4];
diff --git a/src/murrine_style.c b/src/murrine_style.c
index 0ddd7f8..fc9a446 100644
--- a/src/murrine_style.c
+++ b/src/murrine_style.c
@@ -133,6 +133,7 @@ murrine_set_widget_parameters (const GtkWidget *widget,
params->xthickness = style->xthickness;
params->ythickness = style->ythickness;
+ params->border_shade = murrine_style->border_shade;
params->contrast = murrine_style->contrast;
params->glazestyle = murrine_style->glazestyle;
params->glow_shade = murrine_style->glow_shade;
@@ -181,7 +182,7 @@ murrine_set_widget_parameters (const GtkWidget *widget,
static void
murrine_style_draw_flat_box (DRAW_ARGS)
{
- //printf( "draw_flat_box: %s %s\n", detail, G_OBJECT_TYPE_NAME (widget));
+ ////printf( "draw_flat_box: %s %s\n", detail, G_OBJECT_TYPE_NAME (widget));
if (detail &&
state_type == GTK_STATE_SELECTED && (
!strncmp ("cell_even", detail, 9) ||
@@ -305,7 +306,7 @@ murrine_style_draw_flat_box (DRAW_ARGS)
}
else
{
- // printf( "draw_flat_box: %s %s\n", detail, G_OBJECT_TYPE_NAME (widget));
+ // //printf( "draw_flat_box: %s %s\n", detail, G_OBJECT_TYPE_NAME (widget));
GTK_STYLE_CLASS (murrine_style_parent_class)->draw_flat_box (style, window, state_type,
shadow_type,
area, widget, detail,
@@ -585,6 +586,7 @@ murrine_style_draw_box_gap (DRAW_ARGS,
}
else
{
+ //printf( "draw_box_gap: %s %s\n", detail, G_OBJECT_TYPE_NAME (widget));
GTK_STYLE_CLASS (murrine_style_parent_class)->draw_box_gap (style, window, state_type, shadow_type,
area, widget, detail,
x, y, width, height,
@@ -634,6 +636,7 @@ murrine_style_draw_extension (DRAW_ARGS, GtkPositionType gap_side)
}
else
{
+ //printf( "draw_extension: %s %s\n", detail, G_OBJECT_TYPE_NAME (widget));
GTK_STYLE_CLASS (murrine_style_parent_class)->draw_extension (style, window, state_type, shadow_type, area,
widget, detail, x, y, width, height, gap_side);
}
@@ -1551,8 +1554,8 @@ murrine_style_draw_vline (GtkStyle *style,
{
STYLE_FUNCTION(draw_separator) (cr, colors, NULL, &separator, x, y1, 2, y2-y1);
}
- else
- STYLE_FUNCTION(draw_combo_separator) (cr, colors, NULL, x, y1, 2, y2-y1);
+/* else*/
+/* STYLE_FUNCTION(draw_combo_separator) (cr, colors, NULL, x, y1, 2, y2-y1);*/
cairo_destroy (cr);
}
@@ -1832,6 +1835,7 @@ murrine_style_init_from_rc (GtkStyle *style,
else
murrine_style->roundness = MURRINE_RC_STYLE (rc_style)->roundness;
murrine_style->animation = MURRINE_RC_STYLE (rc_style)->animation;
+ murrine_style->border_shade = MURRINE_RC_STYLE (rc_style)->border_shade;
murrine_style->contrast = MURRINE_RC_STYLE (rc_style)->contrast;
murrine_style->colorize_scrollbar = MURRINE_RC_STYLE (rc_style)->colorize_scrollbar;
murrine_style->has_focus_color = MURRINE_RC_STYLE (rc_style)->has_focus_color;
@@ -2176,6 +2180,7 @@ murrine_style_copy (GtkStyle *style, GtkStyle *src)
MurrineStyle *mrn_src = MURRINE_STYLE (src);
mrn_style->animation = mrn_src->animation;
+ mrn_style->border_shade = mrn_src->border_shade;
mrn_style->colorize_scrollbar = mrn_src->colorize_scrollbar;
mrn_style->colors = mrn_src->colors;
mrn_style->contrast = mrn_src->contrast;
diff --git a/src/murrine_style.h b/src/murrine_style.h
index d88fce5..749e13f 100644
--- a/src/murrine_style.h
+++ b/src/murrine_style.h
@@ -44,6 +44,7 @@ struct _MurrineStyle
MurrineProfiles profile;
+ double border_shade;
double contrast;
double glow_shade;
double gradient_shades[4];
diff --git a/src/murrine_types.h b/src/murrine_types.h
index c1eae79..d0a9631 100644
--- a/src/murrine_types.h
+++ b/src/murrine_types.h
@@ -219,6 +219,7 @@ typedef struct
int lightborderstyle;
int reliefstyle;
int roundness;
+ double border_shade;
double contrast;
double glow_shade;
double highlight_shade;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]