goffice r2115 - in trunk: . plugins/plot_barcol
- From: jbrefort svn gnome org
- To: svn-commits-list gnome org
- Subject: goffice r2115 - in trunk: . plugins/plot_barcol
- Date: Sat, 21 Jun 2008 18:34:49 +0000 (UTC)
Author: jbrefort
Date: Sat Jun 21 18:34:49 2008
New Revision: 2115
URL: http://svn.gnome.org/viewvc/goffice?rev=2115&view=rev
Log:
2008-06-21 Jean Brefort <jean brefort normalesup org>
* plugins/plot_barcol/gog-1.5d.c: add singleton formatting support to
line plots.
* plugins/plot_barcol/gog-barcol.c: ditto.
* plugins/plot_barcol/gog-line.c: ditto.
Modified:
trunk/ChangeLog
trunk/plugins/plot_barcol/gog-1.5d.c
trunk/plugins/plot_barcol/gog-line.c
trunk/plugins/plot_barcol/gog-line.h
Modified: trunk/plugins/plot_barcol/gog-1.5d.c
==============================================================================
--- trunk/plugins/plot_barcol/gog-1.5d.c (original)
+++ trunk/plugins/plot_barcol/gog-1.5d.c Sat Jun 21 18:34:49 2008
@@ -671,6 +671,7 @@
gog_dropbar_view_register_type (module);
gog_line_series_register_type (module);
gog_line_series_view_register_type (module);
+ gog_line_series_element_register_type (module);
gog_line_plot_register_type (module);
gog_area_plot_register_type (module);
gog_line_view_register_type (module);
Modified: trunk/plugins/plot_barcol/gog-line.c
==============================================================================
--- trunk/plugins/plot_barcol/gog-line.c (original)
+++ trunk/plugins/plot_barcol/gog-line.c Sat Jun 21 18:34:49 2008
@@ -28,6 +28,7 @@
#include <goffice/graph/gog-renderer.h>
#include <goffice/graph/gog-style.h>
#include <goffice/graph/gog-axis.h>
+#include <goffice/graph/gog-theme.h>
#include <goffice/data/go-data.h>
#include <goffice/math/go-math.h>
#include <goffice/utils/go-color.h>
@@ -50,6 +51,39 @@
/*****************************************************************************/
+typedef GogSeriesElement GogLineSeriesElement;
+typedef GogSeriesElementClass GogLineSeriesElementClass;
+
+#define GOG_LINE_SERIES_ELEMENT_TYPE (gog_line_series_element_get_type ())
+#define GOG_LINE_SERIES_ELEMENT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GOG_LINE_SERIES_ELEMENT_TYPE, GogLinelSeriesElement))
+#define GOG_IS_LINE_SERIES_ELEMENT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GOG_LINE_SERIES_ELEMENT_TYPE))
+GType gog_line_series_element_get_type (void);
+
+static void
+gog_line_series_element_init_style (GogStyledObject *gso, GogStyle *style)
+{
+ GogSeries const *series = GOG_SERIES (GOG_OBJECT (gso)->parent);
+
+ g_return_if_fail (series != NULL);
+
+ style->interesting_fields = GOG_STYLE_MARKER;
+ gog_theme_fillin_style (gog_object_get_theme (GOG_OBJECT (gso)),
+ style, GOG_OBJECT (gso), GOG_SERIES_ELEMENT (gso)->index, FALSE);
+}
+
+static void
+gog_line_series_element_class_init (GogLineSeriesElementClass *klass)
+{
+ GogStyledObjectClass *style_klass = (GogStyledObjectClass *) klass;
+ style_klass->init_style = gog_line_series_element_init_style;
+}
+
+GSF_DYNAMIC_CLASS (GogLineSeriesElement, gog_line_series_element,
+ gog_line_series_element_class_init, NULL,
+ GOG_SERIES_ELEMENT_TYPE)
+
+/******************************************************************************/
+
typedef GogView GogLineSeriesView;
typedef GogViewClass GogLineSeriesViewClass;
@@ -177,6 +211,7 @@
gog_klass->view_type = gog_line_series_view_get_type ();
gog_klass->update = gog_line_series_update;
series_klass->get_xy_data = gog_line_series_get_xy_data;
+ series_klass->series_element_type = GOG_LINE_SERIES_ELEMENT_TYPE;
}
GSF_DYNAMIC_CLASS (GogLineSeries, gog_line_series,
@@ -391,6 +426,9 @@
GogAxisMap *x_map, *y_map;
+ GogSeriesElement *gse;
+ GList const *overrides;
+
is_area_plot = GOG_IS_PLOT_AREA (model);
if (num_elements <= 0 || num_series <= 0)
@@ -431,6 +469,7 @@
if (!gog_series_is_valid (GOG_SERIES (series))) {
vals[i] = NULL;
+ lengths[i] = 0;
continue;
}
@@ -650,21 +689,44 @@
y_margin_min = view->allocation.y - margin;
y_margin_max = view->allocation.y + view->allocation.h + margin;
+ ptr = model->base.series;
for (i = 0; i < num_series; i++) {
+ overrides = gog_series_get_overrides (GOG_SERIES (ptr->data));
if (lengths[i] == 0)
continue;
- gog_renderer_push_style (view->renderer, styles[i]);
+ gog_renderer_push_style (view->renderer, styles[i]);
for (j = 0; j < lengths[i]; j++) {
+ gse = NULL;
+ if ((overrides != NULL) &&
+ (GOG_SERIES_ELEMENT (overrides->data)->index == j - 1)) {
+ gse = GOG_SERIES_ELEMENT (overrides->data);
+ overrides = overrides->next;
+ gog_renderer_push_style (view->renderer,
+ gog_styled_object_get_style (
+ GOG_STYLED_OBJECT (gse)));
+ } else
x = path[i][j + 1].x;
y = path[i][j + 1].y;
+ gse = NULL;
+ if ((overrides != NULL) &&
+ (GOG_SERIES_ELEMENT (overrides->data)->index == j)) {
+ gse = GOG_SERIES_ELEMENT (overrides->data);
+ overrides = overrides->next;
+ gog_renderer_push_style (view->renderer,
+ gog_styled_object_get_style (
+ GOG_STYLED_OBJECT (gse)));
+ }
if (x_margin_min <= x && x <= x_margin_max &&
y_margin_min <= y && y <= y_margin_max &&
path[i][j + 1].code != ART_MOVETO_OPEN)
gog_renderer_draw_marker (view->renderer, x, y);
+ if (gse)
+ gog_renderer_pop_style (view->renderer);
}
gog_renderer_pop_style (view->renderer);
+ ptr = ptr->next;
}
}
Modified: trunk/plugins/plot_barcol/gog-line.h
==============================================================================
--- trunk/plugins/plot_barcol/gog-line.h (original)
+++ trunk/plugins/plot_barcol/gog-line.h Sat Jun 21 18:34:49 2008
@@ -50,6 +50,7 @@
void gog_line_series_register_type (GTypeModule *module);
void gog_line_series_view_register_type (GTypeModule *module);
+void gog_line_series_element_register_type (GTypeModule *module);
void gog_line_view_register_type (GTypeModule *module);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]