static void gog_pie_plot_set_default_separation (GogPiePlot *pie, double separation) { g_return_if_fail (GOG_PIE_PLOT (pie) != NULL); pie->default_separation = CLAMP (separation, 0.0, 5.0); gog_object_emit_changed (GOG_OBJECT (pie), FALSE); }
/** * gog_chart_set_plot_area: * @chart: #GogChart * @plot_area: #GogViewAllocation * * If plot_area != NULL, sets plot area size and location, in fraction * of chart size, and sets GogChart::is_plot_area_manual flag to TRUE. * If plot_area == NULL, sets GogChart::is_plot_area_manual to FALSE. **/ void gog_chart_set_plot_area (GogChart *chart, GogViewAllocation const *plot_area) { if (plot_area == NULL) { chart->is_plot_area_manual = FALSE; } else { chart->plot_area = *plot_area; chart->is_plot_area_manual = TRUE; } gog_object_emit_changed (GOG_OBJECT (chart), TRUE); }
static void gog_chart_set_property (GObject *obj, guint param_id, GValue const *value, GParamSpec *pspec) { GogChart *chart = GOG_CHART (obj); char **str_doubles; char const *str; gboolean changed = FALSE; switch (param_id) { case CHART_PROP_PLOT_AREA: str = g_value_get_string (value); str_doubles = g_strsplit (str, " ", 4); if (g_strv_length (str_doubles) != 4) { g_strfreev (str_doubles); break; } chart->plot_area.x = g_ascii_strtod (str_doubles[0], NULL); chart->plot_area.y = g_ascii_strtod (str_doubles[1], NULL); chart->plot_area.w = g_ascii_strtod (str_doubles[2], NULL); chart->plot_area.h = g_ascii_strtod (str_doubles[3], NULL); g_strfreev (str_doubles); break; case CHART_PROP_PLOT_AREA_IS_MANUAL: chart->is_plot_area_manual = g_value_get_boolean (value); break; case CHART_PROP_X_POS: chart->x_pos = g_value_get_int (value); changed = TRUE; break; case CHART_PROP_Y_POS: chart->y_pos = g_value_get_int (value); changed = TRUE; break; case CHART_PROP_COLUMNS: chart->cols = g_value_get_int (value); changed = TRUE; break; case CHART_PROP_ROWS: chart->rows = g_value_get_int (value); changed = TRUE; break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec); return; /* NOTE : RETURN */ } if (changed) { gog_graph_validate_chart_layout (GOG_GRAPH (GOG_OBJECT (chart)->parent)); gog_object_emit_changed (GOG_OBJECT (obj), TRUE); } }
static void gog_pie_series_element_set_property (GObject *obj, guint param_id, GValue const *value, GParamSpec *pspec) { GogPieSeriesElement *pse = GOG_PIE_SERIES_ELEMENT (obj); switch (param_id) { case ELEMENT_SEPARATION: pse->separation = g_value_get_double (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec); return; /* NOTE : RETURN */ } gog_object_emit_changed (GOG_OBJECT (obj), FALSE); }
/** * gog_chart_set_position: * @chart: #GogChart * @x: * @y: * @cols: * @rows: * **/ void gog_chart_set_position (GogChart *chart, unsigned int x, unsigned int y, unsigned int cols, unsigned int rows) { g_return_if_fail (GOG_IS_CHART (chart)); if (chart->x_pos == x && chart->y_pos == y && chart->cols == cols && chart->rows == rows) return; chart->x_pos = x; chart->y_pos = y; chart->cols = cols; chart->rows = rows; gog_graph_validate_chart_layout (GOG_GRAPH (GOG_OBJECT (chart)->parent)); gog_object_emit_changed (GOG_OBJECT (chart), TRUE); }
static void gog_pie_plot_set_property (GObject *obj, guint param_id, GValue const *value, GParamSpec *pspec) { GogPiePlot *pie = GOG_PIE_PLOT (obj); switch (param_id) { case PLOT_PROP_INITIAL_ANGLE: { double a = g_value_get_double (value); a = fmod (a, 360); if (a < 0) a += 360; pie->initial_angle = a; break; } case PLOT_PROP_DEFAULT_SEPARATION: { double f = g_value_get_double (value); pie->default_separation = CLAMP (f, 0., 5.); break; } case PLOT_PROP_IN_3D: pie->in_3d = g_value_get_boolean (value); break; case PLOT_PROP_SPAN: pie->span = g_value_get_double (value); break; case PLOT_PROP_SHOW_NEGS : { GSList *ptr = GOG_PLOT (obj)->series; pie->show_negatives = gog_show_neg_mode_from_str (g_value_get_string (value)); /* we need to update all the series */ while (ptr) { gog_object_request_update (GOG_OBJECT (ptr->data)); ptr = ptr->next; } break; } default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec); return; /* NOTE : RETURN */ } /* none of the attributes triggers a size change yet. * When we add data labels we'll need it */ gog_object_emit_changed (GOG_OBJECT (obj), FALSE); }
static void gog_ring_plot_set_property (GObject *obj, guint param_id, GValue const *value, GParamSpec *pspec) { GogRingPlot *ring = GOG_RING_PLOT (obj); switch (param_id) { case RING_PLOT_PROP_CENTER_SIZE: ring->center_size = g_value_get_double (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec); return; /* NOTE : RETURN */ } /* none of the attributes triggers a size change yet. * When we add data labels we'll need it */ gog_object_emit_changed (GOG_OBJECT (obj), FALSE); }
static void gog_pie_series_set_property (GObject *obj, guint param_id, GValue const *value, GParamSpec *pspec) { GogPieSeries *pie = GOG_PIE_SERIES (obj); switch (param_id) { case SERIES_PROP_INITIAL_ANGLE: pie->initial_angle = g_value_get_double (value); break; case SERIES_PROP_SEPARATION: pie->separation = g_value_get_double (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec); return; /* NOTE : RETURN */ } /* none of the attributes triggers a size change yet. * When we add data labels we'll need it */ gog_object_emit_changed (GOG_OBJECT (obj), FALSE); }
static void gog_trend_line_set_property (GObject *obj, guint param_id, GValue const *value, GParamSpec *pspec) { gboolean b_tmp; switch (param_id) { case TREND_LINE_PROP_HAS_LEGEND : b_tmp = g_value_get_boolean (value); if (GPOINTER_TO_INT (g_object_get_data (obj, "has-legend")) ^ b_tmp) { GogSeries *series = GOG_SERIES (gog_object_get_parent (GOG_OBJECT (obj))); g_object_set_data (obj, "has-legend", GINT_TO_POINTER (b_tmp)); if (series->plot != NULL) gog_plot_request_cardinality_update (series->plot); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec); return; /* NOTE : RETURN */ } gog_object_emit_changed (GOG_OBJECT (obj), FALSE); }
static void gog_xy_dropbar_set_property (GObject *obj, guint param_id, GValue const *value, GParamSpec *pspec) { GogPlot *plot = GOG_PLOT (obj); GogXYDropBarPlot *dropbar = GOG_XY_DROPBAR_PLOT (obj); switch (param_id) { case XY_DROPBAR_PROP_FILL_BEFORE_GRID: plot->rendering_order = (g_value_get_boolean (value))? GOG_PLOT_RENDERING_BEFORE_GRID: GOG_PLOT_RENDERING_LAST; break; case XY_DROPBAR_PROP_HORIZONTAL: dropbar->horizontal = g_value_get_boolean (value); break; case XY_DROPBAR_PROP_WIDTH: dropbar->width = g_value_get_double (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (obj, param_id, pspec); return; } gog_object_emit_changed (GOG_OBJECT (obj), FALSE); }
static void gog_xy_dropbar_plot_update (GogObject *obj) { GogXYDropBarPlot *model = GOG_XY_DROPBAR_PLOT (obj); GogSeries const *series = NULL; double x_min, x_max, y_min, y_max, tmp_min, tmp_max; GSList *ptr; unsigned xaxis, yaxis; if (model->horizontal) { xaxis = 1; yaxis = 0; } else { xaxis = 0; yaxis = 1; } x_min = y_min = DBL_MAX; x_max = y_max = -DBL_MAX; gog_xy_dropbar_plot_clear_formats (model); for (ptr = model->base.series ; ptr != NULL ; ptr = ptr->next) { series = ptr->data; if (!gog_series_is_valid (GOG_SERIES (series))) continue; go_data_get_bounds (series->values[1].data, &tmp_min, &tmp_max); if (y_min > tmp_min) y_min = tmp_min; if (y_max < tmp_max) y_max = tmp_max; if (model->y.fmt == NULL) { model->y.fmt = go_data_preferred_fmt (series->values[1].data); model->y.date_conv = go_data_date_conv (series->values[1].data); } go_data_get_bounds (series->values[2].data, &tmp_min, &tmp_max); if (y_min > tmp_min) y_min = tmp_min; if (y_max < tmp_max) y_max = tmp_max; if (series->values[0].data != NULL) { go_data_get_bounds (series->values[0].data, &tmp_min, &tmp_max); if (!go_finite (tmp_min) || !go_finite (tmp_max) || tmp_min > tmp_max) { tmp_min = 0; tmp_max = go_data_get_vector_size (series->values[1].data); } else if (model->x.fmt == NULL) { model->x.fmt = go_data_preferred_fmt (series->values[0].data); model->x.date_conv = go_data_date_conv (series->values[0].data); } } else { tmp_min = 0; tmp_max = go_data_get_vector_size (series->values[1].data); } if (x_min > tmp_min) x_min = tmp_min; if (x_max < tmp_max) x_max = tmp_max; } /* make room for bar width, this is approximate since real width is larger */ tmp_max = (x_max - x_min) * model->width / 200.; x_min -= tmp_max; x_max += tmp_max; if (model->x.minima != x_min || model->x.maxima != x_max) { model->x.minima = x_min; model->x.maxima = x_max; gog_axis_bound_changed (model->base.axis[xaxis], GOG_OBJECT (model)); } if (model->y.minima != y_min || model->y.maxima != y_max) { model->y.minima = y_min; model->y.maxima = y_max; gog_axis_bound_changed (model->base.axis[yaxis], GOG_OBJECT (model)); } gog_object_emit_changed (GOG_OBJECT (obj), FALSE); if (gog_xy_dropbar_parent_klass->update) gog_xy_dropbar_parent_klass->update (obj); }
static void gog_pie_plot_update (GogObject *obj) { gog_object_emit_changed (GOG_OBJECT (obj), FALSE); }