[goffice/revert-346f4a37] Revert "initial patch"



commit e52eae8bac01d24ed9bdd4aef2c286a1c122a225
Author: Jean Bréfort <jean brefort normalesup org>
Date:   Sat Jun 13 12:03:22 2020 +0000

    Revert "initial patch"
    
    This reverts commit 346f4a3721f00c213092e13a8baa4916043584a8

 plugins/plot_surface/gog-contour.c | 269 +------------------------------------
 plugins/plot_surface/gog-contour.h |   1 -
 plugins/plot_surface/gog-xyz.c     |  16 ---
 plugins/plot_surface/gog-xyz.h     |  11 --
 4 files changed, 2 insertions(+), 295 deletions(-)
---
diff --git a/plugins/plot_surface/gog-contour.c b/plugins/plot_surface/gog-contour.c
index d5d30f17..d95a0d76 100644
--- a/plugins/plot_surface/gog-contour.c
+++ b/plugins/plot_surface/gog-contour.c
@@ -128,266 +128,6 @@ gog_contour_plot_build_matrix (GogXYZPlot *plot, gboolean *cardinality_changed)
        return data;
 }
 
-/* Define useful structs there, might go to gog-xyz.h later if also useful
- * for surfaces */
-
-/* we need the paths as an array of XY points */
-typedef struct {
-       GArray *x, *y;
-       unsigned cur_size;
-       /* the z value (as in xyz coordinates) for this path. An integer since
-               ticks positions are integers for the third axis */
-       int level;
-       gboolean pending; /* if TRUE, the path does not start or end at a limit */
-} GogPath;
-
-typedef struct {
-       double z0, z1, z2, z3, zc;
-} GogTile;
-
-typedef struct {
-       GogAxisColorMap const *color_map;
-       GogAxisMap const *x_map, *y_map;
-       /* the paths */
-       GSList *paths;
-} GogPathsStruct;
-
-#define GOG_PATH_ALLOCSIZE 20
-static GogPath *
-gog_path_create (int level, gboolean pending)
-{
-       GogPath *path = g_new (GogPath, 1);
-       path->level = level;
-       path->cur_size = GOG_PATH_ALLOCSIZE;
-       path->x = g_array_sized_new (FALSE, FALSE, sizeof (double), GOG_PATH_ALLOCSIZE);
-       path->y = g_array_sized_new (FALSE, FALSE, sizeof (double), GOG_PATH_ALLOCSIZE);
-       path->pending = pending;
-       return path;
-}
-
-static void
-gog_path_destroy (GogPath *path)
-{
-       g_array_free (path->x, TRUE);
-       g_array_free (path->y, TRUE);
-       g_free (path);
-}
-
-static void
-gog_path_append (GogPath *path, double x, double y)
-{
-       if (path->cur_size == path->x->len) {
-               path->cur_size += GOG_PATH_ALLOCSIZE;
-               g_array_set_size (path->x, path->cur_size);
-               g_array_set_size (path->y, path->cur_size);
-       }
-       g_array_append_val (path->x, x);
-       g_array_append_val (path->y, y);
-}
-
-static void
-gog_path_prepend (GogPath *path, double x, double y)
-{
-       if (path->cur_size == path->x->len) {
-               path->cur_size += GOG_PATH_ALLOCSIZE;
-               g_array_set_size (path->x, path->cur_size);
-               g_array_set_size (path->y, path->cur_size);
-       }
-       g_array_prepend_val (path->x, x);
-       g_array_prepend_val (path->y, y);
-}
-
-static void
-gog_contour_plot_build_paths (GogXYZPlot const *plot, gpointer data)
-{
-       GogPathsStruct *paths = (GogPathsStruct *) data;
-       GOData *xvec, *yvec;
-       unsigned i, imax, j, jmax;
-       double *zvals, *xvals, *yvals;
-       int max;
-       double x0, x1, x, y0, y1, y, z0, z1, z;
-       /* storing paths going though each vertex as lists */
-       GSList **vsegs, *hseg = NULL;
-       GogPath *path;
-       GogTile *tile;
-puts("building paths");
-       
-       max = GOG_CONTOUR_PLOT (plot)->max_colors;
-       if (max < 1)
-               return;
-       if (plot->transposed) {
-               imax = plot->columns;
-               jmax = plot->rows;
-       } else {
-               imax = plot->rows;
-               jmax = plot->columns;
-       }
-       if (imax == 0 || jmax == 0)
-               return;
-
-       if (plot->plotted_data)
-               zvals = plot->plotted_data;
-       else
-               return;
-
-       /* get x and y values */
-       xvec = gog_xyz_plot_get_x_vals (GOG_XYZ_PLOT (plot));
-       yvec = gog_xyz_plot_get_y_vals (GOG_XYZ_PLOT (plot));
-       xvals = (GO_IS_DATA_VECTOR (xvec))? go_data_vector_get_values ((GODataVector *) xvec): NULL;
-       yvals = (GO_IS_DATA_VECTOR (yvec))? go_data_vector_get_values ((GODataVector *) yvec): NULL;
-       if (xvals) {
-               for (i = 0; i < imax; i++)
-                       xvals[i] = gog_axis_map_to_view ((GogAxisMap *) paths->x_map, xvals[i]);
-       } else {
-               xvals = g_alloca (imax * sizeof (double));
-               for (i = 0; i < imax; i++)
-                       xvals[i] = i;
-       }
-       if (yvals) {
-               for (j = 0; j < jmax; j++)
-                       yvals[j] = gog_axis_map_to_view ((GogAxisMap *) paths->y_map, xvals[j]);
-       } else {
-               yvals = g_alloca (jmax * sizeof (double));
-               for (j = 0; j < jmax; j++)
-                       yvals[j] = j;
-       }
-       vsegs = g_new0 (GSList*, jmax);
-
-       /* let start the analysis at first x, we need to find every limit intersecting
-        * the border, and start a GogPath for each */
-       z0 = zvals[0];
-       x0 = xvals[0];
-       y0 = yvals[0];
-       for (j = 1; j < jmax; j++) {
-               y1 = yvals[j];
-               z1 = zvals[j];
-               if (go_finite (z0) && go_finite (z1) && z0 != z1) {
-                       y1 = yvals[j];
-                       if (z0 < z1) {
-                               z = floor (z0);
-                               if (z < z0)
-                                       z += 1;
-                               while (z <= z1) {
-                                       y = y0 + (y1 - y0) * (z - z0) / (z1 - z0);
-                                       path = gog_path_create (z, FALSE);
-                                       gog_path_append (path, x0, y);
-                                       vsegs[j] = g_slist_prepend (vsegs[j], path);
-                                       z += 1;
-                               }
-                       } else if (z0 > z1) {
-                               z = floor (z1);
-                               if (z < z1)
-                                       z += 1;
-                               while (z <= z0) {
-                                       y = y0 + (y1 - y0) * (z - z0) / (z1 - z0);
-                                       path = gog_path_create (z, FALSE);
-                                       gog_path_append (path, x0, y);
-                                       vsegs[j] = g_slist_prepend (vsegs[j], path);
-                                       z += 1;
-                               }
-                       }
-               }
-               y0 = y1;
-               z0 = z1;
-       }
-       /* now exploring each row */
-       for (i = 1; i < imax; i++) {
-               x1 = xvals[i];
-               /* analyze the first horizontal segment */
-               y0 = yvals[0];
-               z0 = zvals[(i - 1) * jmax];
-               z1 = zvals[i * jmax];
-               if (go_finite (z0) && go_finite (z1) && z0 != z1) {
-                       if (z0 < z1) {
-                               z = floor (z0);
-                               if (z < z0)
-                                       z += 1;
-                               while (z <= z1) {
-                                       x = x0 + (x1 - x0) * (z - z0) / (z1 - z0);
-                                       path = gog_path_create (z, FALSE);
-                                       gog_path_append (path, x, y0);
-                                       hseg = g_slist_prepend (hseg, path);
-                                       z += 1;
-                               }
-                       } else if (z0 > z1) {
-                               z = floor (z1);
-                               if (z < z1)
-                                       z += 1;
-                               while (z <= z0) {
-                                       x = x0 + (x1 - x0) * (z - z0) / (z1 - z0);
-                                       path = gog_path_create (z, FALSE);
-                                       gog_path_append (path, x, y0);
-                                       hseg = g_slist_prepend (hseg, path);
-                                       z += 1;
-                               }
-                       }
-
-               }
-               /* process each tile in the row */
-               for (j = 1; j < jmax; j++) {
-                       /* each tile is mapped to five values in this way:
-                        *
-                        *    3-------2
-                        *    |       |
-                        *    |   C   |
-                        *    |       |
-                        *    0-------1
-                        *
-                        * zc is the mean of the four other values if they are all valid
-                        *
-                        * we already know the points on segments 0-1 et 0-3. We start with
-                        * searching crossing points in segment 1-2 and follow each path
-                        * until it gets outside of the tile.
-                        */
-                       unsigned valid = 0;
-                       double z2, z3, zc = 0.;
-
-                       /* at this point x0, x1 and y0 are valid. */
-                       y1 = yvals[j];
-                       /* evaluate the z values, z0 and z1 being already known */
-                       z3 = zvals[(i - 1) * jmax + j];
-                       z2 = zvals[i * jmax + j];
-                       if (go_finite (z0)) {
-                               zc += z0;
-                               valid++;
-                       }
-                       if (go_finite (z1)) {
-                               zc += z1;
-                               valid++;
-                       }
-                       if (go_finite (z2)) {
-                               zc += z2;
-                               valid++;
-                       }
-                       if (go_finite (z3)) {
-                               zc += z3;
-                               valid++;
-                       }
-                       if (valid == 4) {
-                               zc /= 4.;
-                       } else if (valid == 3) {
-                               /* FIXME */
-                       } else {
-                               /* the tile is full invalid */
-                               /* FIXME */
-                       }
-                       
-
-                       /* move to the next tile */
-                       y0 = y1;
-                       z0 = z3;
-                       z2 = z1;
-               }
-               x0 = x1;
-       }
-
-       /* cleaning out what might still be there */
-       g_slist_free_full (hseg, (GDestroyNotify) gog_path_destroy);
-       for (j = 0; j < jmax; j++)
-               g_slist_free_full (vsegs[j], (GDestroyNotify) gog_path_destroy);
-       g_free (vsegs);
-}
-
 static char const *
 gog_contour_plot_type_name (G_GNUC_UNUSED GogObject const *item)
 {
@@ -503,7 +243,6 @@ gog_contour_plot_class_init (GogContourPlotClass *klass)
 
        gog_xyz_plot_klass->third_axis = GOG_AXIS_PSEUDO_3D;
        gog_xyz_plot_klass->build_matrix = gog_contour_plot_build_matrix;
-       gog_xyz_plot_klass->build_paths = gog_contour_plot_build_paths;
 }
 
 static void
@@ -548,9 +287,7 @@ gog_contour_view_render (GogView *view, GogViewAllocation const *bbox)
        double *data;
        int max;
        gboolean xdiscrete, ydiscrete;
-       GogPathsStruct paths;
 
-puts("rendering");
        if (plot->base.series == NULL)
                return;
        series = GOG_SERIES (plot->base.series->data);
@@ -572,9 +309,9 @@ puts("rendering");
        else
                return;
 
-       paths.x_map = x_map = gog_axis_map_new (plot->base.axis[0],
+       x_map = gog_axis_map_new (plot->base.axis[0],
                                  view->residual.x , view->residual.w);
-       paths.x_map = y_map = gog_axis_map_new (plot->base.axis[1],
+       y_map = gog_axis_map_new (plot->base.axis[1],
                                  view->residual.y + view->residual.h,
                                  -view->residual.h);
 
@@ -584,8 +321,6 @@ puts("rendering");
                gog_axis_map_free (y_map);
                return;
        }
-       /* ensure we have valid paths */
-       gog_xyz_plot_build_paths (plot, &paths);
 
        /* Set cw to ensure that polygons will allways be drawn clockwise */
        xdiscrete = gog_axis_is_discrete (plot->base.axis[0]) ||
diff --git a/plugins/plot_surface/gog-contour.h b/plugins/plot_surface/gog-contour.h
index 52d81f92..969edef8 100644
--- a/plugins/plot_surface/gog-contour.h
+++ b/plugins/plot_surface/gog-contour.h
@@ -36,7 +36,6 @@ G_BEGIN_DECLS
 typedef struct {
        GogXYZPlot base;
        unsigned max_colors;
-       gboolean use_splines;
 } GogContourPlot;
 typedef GogXYZPlotClass GogContourPlotClass;
 
diff --git a/plugins/plot_surface/gog-xyz.c b/plugins/plot_surface/gog-xyz.c
index 13f229e4..21bf143e 100644
--- a/plugins/plot_surface/gog-xyz.c
+++ b/plugins/plot_surface/gog-xyz.c
@@ -68,21 +68,6 @@ gog_xyz_plot_build_matrix (GogXYZPlot *plot, gboolean *cardinality_changed)
        return klass->build_matrix (plot, cardinality_changed);
 }
 
-void
-gog_xyz_plot_build_paths (GogXYZPlot const *plot, gpointer data)
-{
-       GogXYZPlotClass *klass = GOG_XYZ_PLOT_GET_CLASS (plot);
-       if (plot->paths != NULL)
-               return;
-       if (klass->build_paths != NULL)
-               klass->build_paths (plot, data);
-}
-
-void
-gog_xyz_plot_clear_paths (GogXYZPlot *plot)
-{
-}
-
 static void
 gog_xyz_plot_update_3d (GogPlot *plot)
 {
@@ -102,7 +87,6 @@ gog_xyz_plot_update_3d (GogPlot *plot)
                plot->cardinality_valid = FALSE;
                if (chart != NULL)
                        gog_chart_request_cardinality_update (chart);
-               gog_xyz_plot_clear_paths (xyz);
        }
 }
 
diff --git a/plugins/plot_surface/gog-xyz.h b/plugins/plot_surface/gog-xyz.h
index 82c8efb6..72e87209 100644
--- a/plugins/plot_surface/gog-xyz.h
+++ b/plugins/plot_surface/gog-xyz.h
@@ -33,12 +33,6 @@ G_BEGIN_DECLS
  *-----------------------------------------------------------------------------
  */
 
-typedef enum {
-        GO_INTERPOLATION_LINEAR,
-        GO_INTERPOLATION_BEZIER,
-        GO_INTERPOLATION_MAX
-} GoInterpolationMode;
-
 typedef struct {
        GogPlot base;
 
@@ -53,8 +47,6 @@ typedef struct {
        } x, y, z;
        double *plotted_data;
        GOData *x_vals, *y_vals;
-       GoInterpolationMode interpolation;
-       GArray *paths;
 } GogXYZPlot;
 
 #define GOG_TYPE_XYZ_PLOT      (gog_xyz_plot_get_type ())
@@ -69,7 +61,6 @@ typedef struct {
        GogAxisType third_axis;
 
        double * (*build_matrix) (GogXYZPlot *plot, gboolean *cardinality_changed);
-       void     (*build_paths) (GogXYZPlot const *plot, gpointer data);
        GOData * (*get_x_vals) (GogXYZPlot *plot);
        GOData * (*get_y_vals) (GogXYZPlot *plot);
 } GogXYZPlotClass;
@@ -77,8 +68,6 @@ typedef struct {
 #define GOG_XYZ_PLOT_GET_CLASS(o)      (G_TYPE_INSTANCE_GET_CLASS ((o), GOG_TYPE_XYZ_PLOT, GogXYZPlotClass))
 
 double *gog_xyz_plot_build_matrix (GogXYZPlot *plot, gboolean *cardinality_changed);
-void   gog_xyz_plot_build_paths (GogXYZPlot const *plot, gpointer data);
-void   gog_xyz_plot_clear_paths (GogXYZPlot *plot);
 GOData *gog_xyz_plot_get_x_vals (GogXYZPlot *plot);
 GOData *gog_xyz_plot_get_y_vals (GogXYZPlot *plot);
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]