spv-select: Allow structure_member and png_member to be selected also.
[pspp] / src / output / spv / spv.h
index 1753cdaabd3dd99c55a63b236649ee7e89af0863..eda7704dd70e746b257175df905dcdd67cafe59f 100644 (file)
    top-level headings as a child item.
  */
 
+#include <cairo.h>
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
+
 #include "libpspp/compiler.h"
 
 struct fmt_spec;
@@ -68,7 +70,7 @@ enum spv_item_type
     SPV_ITEM_TABLE,
     SPV_ITEM_GRAPH,
     SPV_ITEM_MODEL,
-    SPV_ITEM_OBJECT,
+    SPV_ITEM_IMAGE,
     SPV_ITEM_TREE,
   };
 
@@ -116,8 +118,8 @@ struct spv_item
     char *structure_member;
 
     enum spv_item_type type;
-    char *label;
-    char *command_id;           /* Unique command identifier. */
+    char *label;                /* Localized label. */
+    char *command_id;           /* Non-localized unique command identifier. */
 
     /* Whether the item is visible.
        For SPV_ITEM_HEADING, false indicates that the item is collapsed.
@@ -130,7 +132,7 @@ struct spv_item
 
     /* SPV_ITEM_TABLE only. */
     struct pivot_table *table;    /* NULL if not yet loaded. */
-    struct spv_table_look *table_look;
+    struct pivot_table_look *table_look;
     char *bin_member;
     char *xml_member;
     char *subtype;
@@ -138,9 +140,9 @@ struct spv_item
     /* SPV_ITEM_TEXT only.  */
     struct pivot_value *text;
 
-    /* SPV_ITEM_OBJECT only. */
-    char *object_type;
-    char *uri;
+    /* SPV_ITEM_IMAGE only. */
+    char *png_member;
+    cairo_surface_t *image;
   };
 
 void spv_item_format_path (const struct spv_item *, struct string *);
@@ -157,11 +159,14 @@ size_t spv_item_get_n_children (const struct spv_item *);
 struct spv_item *spv_item_get_child (const struct spv_item *, size_t idx);
 
 bool spv_item_is_table (const struct spv_item *);
-struct pivot_table *spv_item_get_table (const struct spv_item *);
+const struct pivot_table *spv_item_get_table (const struct spv_item *);
 
 bool spv_item_is_text (const struct spv_item *);
 const struct pivot_value *spv_item_get_text (const struct spv_item *);
 
+bool spv_item_is_image (const struct spv_item *);
+cairo_surface_t *spv_item_get_image (const struct spv_item *);
+
 bool spv_item_is_visible (const struct spv_item *);
 
 #define SPV_ITEM_FOR_EACH(ITER, ROOT) \
@@ -173,7 +178,6 @@ struct spv_item *spv_item_next (const struct spv_item *);
 const struct spv_item *spv_item_get_parent (const struct spv_item *);
 size_t spv_item_get_level (const struct spv_item *);
 
-const char *spv_item_get_member_name (const struct spv_item *);
 const char *spv_item_get_command_id (const struct spv_item *);
 const char *spv_item_get_subtype (const struct spv_item *);
 
@@ -198,7 +202,7 @@ char *spv_item_get_legacy_table (const struct spv_item *, struct _xmlDoc **)
   WARN_UNUSED_RESULT;
 
 void spv_item_set_table_look (struct spv_item *,
-                              const struct spv_table_look *);
+                              const struct pivot_table_look *);
 
 char *spv_decode_fmt_spec (uint32_t u32, struct fmt_spec *) WARN_UNUSED_RESULT;