[gnumeric] Improve printing of frames
- From: Andreas J. Guelzow <guelzow src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] Improve printing of frames
- Date: Wed, 29 Sep 2010 06:47:18 +0000 (UTC)
commit 0a5d4ab8403a5d869b0e99502fe10ea176933a71
Author: Andreas J Guelzow <aguelzow pyrshep ca>
Date: Wed Sep 29 00:47:23 2010 -0600
Improve printing of frames
2010-09-29 Andreas J. Guelzow <aguelzow pyrshep ca>
* src/sheet-object-widget.c (draw_cairo_text): add aguments and change
all callers
(sheet_widget_frame_draw_cairo): new
(sheet_widget_scrollbar_horizontal_draw_cairo): fix alignment
ChangeLog | 8 +++++-
src/sheet-object-widget.c | 59 ++++++++++++++++++++++++++++++++++++++++----
2 files changed, 60 insertions(+), 7 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index a67996e..2c115cf 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
-2010-09-28 Andreas J. Guelzow <aguelzow pyrshep ca>
+2010-09-29 Andreas J. Guelzow <aguelzow pyrshep ca>
+ * src/sheet-object-widget.c (draw_cairo_text): add aguments and change
+ all callers
+ (sheet_widget_frame_draw_cairo): new
+ (sheet_widget_scrollbar_horizontal_draw_cairo): fix alignment
+
+2010-09-28 Andreas J. Guelzow <aguelzow pyrshep ca>
* src/sheet-object-widget.c
(sheet_widget_scrollbar_*_draw_cairo): new
(sheet_widget_scrollbar_draw_cairo): new
diff --git a/src/sheet-object-widget.c b/src/sheet-object-widget.c
index 263ae67..1a6008f 100644
--- a/src/sheet-object-widget.c
+++ b/src/sheet-object-widget.c
@@ -75,7 +75,8 @@ sheet_widget_draw_cairo (SheetObject const *so, cairo_t *cr,
double width, double height);
static void
-draw_cairo_text (cairo_t *cr, char const *text)
+draw_cairo_text (cairo_t *cr, char const *text, int *pwidth, int *pheight,
+ gboolean centered)
{
PangoLayout *layout = pango_cairo_create_layout (cr);
GtkStyle *style = gtk_style_new ();
@@ -89,10 +90,16 @@ draw_cairo_text (cairo_t *cr, char const *text)
pango_layout_get_pixel_size (layout, &width, &height);
cairo_scale (cr, scale_h, scale_v);
- cairo_rel_move_to (cr, 0., 0.5 - ((double)height)/2.);
+ if (centered)
+ cairo_rel_move_to (cr, 0., 0.5 - ((double)height)/2.);
pango_cairo_show_layout (cr, layout);
g_object_unref (layout);
g_object_unref (style);
+
+ if (pwidth)
+ *pwidth = width * scale_h;
+ if (pheight)
+ *pheight = height * scale_v;
}
static void
@@ -579,6 +586,46 @@ sheet_widget_frame_user_config (SheetObject *so, SheetControl *sc)
gtk_widget_show (state->dialog);
}
+static void
+sheet_widget_frame_draw_cairo (SheetObject const *so, cairo_t *cr,
+ double width, double height)
+{
+ SheetWidgetFrame *swf = SHEET_WIDGET_FRAME (so);
+
+ int theight = 0, twidth = 0;
+ cairo_save (cr);
+ cairo_move_to (cr, 10, 0);
+
+ cairo_save (cr);
+ draw_cairo_text (cr, swf->label, &twidth, &theight, FALSE);
+ cairo_restore (cr);
+
+ cairo_set_line_width (cr, 1);
+ cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND);
+ cairo_set_source_rgb(cr, 0.5, 0.5, 0.5);
+ cairo_new_path (cr);
+ cairo_move_to (cr, 6, theight/2);
+ cairo_line_to (cr, 0, theight/2);
+ cairo_line_to (cr, 0, height);
+ cairo_line_to (cr, width, height);
+ cairo_line_to (cr, width, theight/2);
+ cairo_line_to (cr, 14 + twidth, theight/2);
+ cairo_stroke (cr);
+
+ cairo_set_source_rgb(cr, 0.8, 0.8, 0.8);
+ cairo_new_path (cr);
+ cairo_move_to (cr, 6, theight/2 + 1);
+ cairo_line_to (cr, 1, theight/2 + 1);
+ cairo_line_to (cr, 1, height - 1);
+ cairo_line_to (cr, width - 1, height - 1);
+ cairo_line_to (cr, width - 1, theight/2 + 1);
+ cairo_line_to (cr, 14 + twidth, theight/2 + 1);
+ cairo_stroke (cr);
+
+ cairo_new_path (cr);
+ cairo_restore (cr);
+}
+
SOW_MAKE_TYPE (frame, Frame,
sheet_widget_frame_user_config,
NULL,
@@ -589,7 +636,7 @@ SOW_MAKE_TYPE (frame, Frame,
sheet_widget_frame_prep_sax_parser,
sheet_widget_frame_get_property,
sheet_widget_frame_set_property,
- sheet_widget_draw_cairo,
+ sheet_widget_frame_draw_cairo,
{
g_object_class_install_property
(object_class, SOF_PROP_TEXT,
@@ -1702,7 +1749,7 @@ sheet_widget_scrollbar_horizontal_draw_cairo (SheetObject const *so, cairo_t *cr
cairo_fill (cr);
cairo_new_path (cr);
- cairo_translate (cr, 20., 0.);
+ cairo_translate (cr, 15., 0.);
sheet_widget_slider_horizontal_draw_cairo (so, cr, width - 30, height);
cairo_restore (cr);
}
@@ -2398,7 +2445,7 @@ sheet_widget_checkbox_draw_cairo (SheetObject const *so, cairo_t *cr,
cairo_move_to (cr, 4. + 8. + 4, halfheight);
- draw_cairo_text (cr, swc->label);
+ draw_cairo_text (cr, swc->label, NULL, NULL, TRUE);
cairo_new_path (cr);
cairo_restore (cr);
@@ -3035,7 +3082,7 @@ sheet_widget_radio_button_draw_cairo (SheetObject const *so, cairo_t *cr,
cairo_move_to (cr, 4. + 8. + 4, halfheight);
- draw_cairo_text (cr, swr->label);
+ draw_cairo_text (cr, swr->label, NULL, NULL, TRUE);
cairo_new_path (cr);
cairo_restore (cr);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]