Add a resize method to the axis
[pspp-builds.git] / lib / gtksheet / psppire-axis.h
index 72484773e895c88767b794887e065609440b46a6..3836ecf05175eda01a0e31374003c5f4a4d163eb 100644 (file)
 #include <glib-object.h>
 #include <glib.h>
 
-#include <libpspp/tower.h>
-
 G_BEGIN_DECLS
 
 
+
 /* --- type macros --- */
 #define G_TYPE_PSPPIRE_AXIS              (psppire_axis_get_type ())
 #define PSPPIRE_AXIS(object)           (G_TYPE_CHECK_INSTANCE_CAST ((object), G_TYPE_PSPPIRE_AXIS, PsppireAxis))
@@ -36,56 +35,69 @@ G_BEGIN_DECLS
 #define PSPPIRE_AXIS_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), G_TYPE_PSPPIRE_AXIS, PsppireAxisClass))
 
 
-
 /* --- typedefs & structures --- */
 typedef struct _PsppireAxis       PsppireAxis;
 typedef struct _PsppireAxisClass PsppireAxisClass;
 
-struct pool;
-
 struct _PsppireAxis
 {
   GObject             parent;
 
-  struct tower tower;
-  struct pool *pool;
+  glong min_extent;
+  gint default_size;
 };
 
 struct _PsppireAxisClass
 {
   GObjectClass parent_class;
-
 };
 
+
 GType          psppire_axis_get_type (void);
 
-PsppireAxis*   psppire_axis_new (void);
 
 \f
-/* Interface between sheet and axis */
 
-gint psppire_axis_unit_size (PsppireAxis *a, gint unit);
+GType psppire_axis_iface_get_type (void);
+
+#define PSPPIRE_TYPE_AXIS_IFACE (psppire_axis_iface_get_type ())
+
+typedef struct _PsppireAxisIface PsppireAxisIface;
 
-gint psppire_axis_unit_count (PsppireAxis *a);
+struct _PsppireAxisIface
+{
+  GTypeInterface g_iface;
+
+
+  /* Virtual Table */
+
+  gint  (*unit_size) (const PsppireAxis *a, gint unit);
+
+  gint  (*unit_count) (const PsppireAxis *a);
 
-glong psppire_axis_pixel_start (PsppireAxis *a, gint unit);
+  glong (*start_pixel) (const PsppireAxis *a, gint unit);
 
-gint psppire_axis_get_unit_at_pixel (PsppireAxis *a, glong pixel);
+  gint  (*unit_at_pixel) (const PsppireAxis *a, glong pixel);
 
+  glong (*total_size) (const PsppireAxis *a);
 
 
-/* Interface between axis and model */
+  void (*resize) (PsppireAxis *a, gint unit, glong pixels);
+};
+
+
+/* Interface between sheet and axis */
 
-void psppire_axis_clear (PsppireAxis *a);
+gint psppire_axis_unit_size (const PsppireAxis *a, gint unit);
 
-void psppire_axis_append (PsppireAxis *a, gint size);
+gint psppire_axis_unit_count (const PsppireAxis *a);
 
-void psppire_axis_insert (PsppireAxis *a, gint size, gint posn);
+glong psppire_axis_start_pixel (const PsppireAxis *a, gint unit);
 
-void psppire_axis_remove (PsppireAxis *a, gint posn);
+gint psppire_axis_unit_at_pixel (const PsppireAxis *a, glong pixel);
 
-void psppire_axis_resize_unit (PsppireAxis *a, gint size, gint posn);
 
+void psppire_axis_resize (PsppireAxis *a, gint unit, glong size);
 
 G_END_DECLS