1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138
|
#ifndef GNUMERIC_MS_OBJ_H
#define GNUMERIC_MS_OBJ_H
/**
* ms-obj.h: MS Excel Graphic Object support for Gnumeric
*
* Author:
* Michael Meeks (michael@ximian.com)
* Jody Goldberg (jody@gnome.org)
*
* (C) 1998-2004 Michael Meeks, Jody Goldberg
**/
#include "ms-excel-read.h"
#define MS_ANCHOR_SIZE 18
typedef enum {
MS_OBJ_ATTR_NONE = 0,
/* Flags */
MS_OBJ_ATTR_FLIP_H,
MS_OBJ_ATTR_FLIP_V,
MS_OBJ_ATTR_UNFILLED,
MS_OBJ_ATTR_OUTLINE_HIDE, /* true of style == 0 hides a line */
/* Integers & Enums */
MS_OBJ_ATTR_IS_INT_MASK = 0x1000,
MS_OBJ_ATTR_BLIP_ID,
MS_OBJ_ATTR_FILL_TYPE,
MS_OBJ_ATTR_FILL_SHADE_TYPE,
MS_OBJ_ATTR_FILL_ANGLE,
MS_OBJ_ATTR_FILL_FOCUS,
MS_OBJ_ATTR_FILL_COLOR,
MS_OBJ_ATTR_FILL_ALPHA,
MS_OBJ_ATTR_FILL_PRESET,
MS_OBJ_ATTR_FILL_BACKGROUND,
MS_OBJ_ATTR_FILL_BACKGROUND_ALPHA,
MS_OBJ_ATTR_OUTLINE_COLOR,
MS_OBJ_ATTR_OUTLINE_WIDTH,
MS_OBJ_ATTR_OUTLINE_STYLE,
MS_OBJ_ATTR_SCROLLBAR_VALUE,
MS_OBJ_ATTR_SCROLLBAR_MIN,
MS_OBJ_ATTR_SCROLLBAR_MAX,
MS_OBJ_ATTR_SCROLLBAR_INC,
MS_OBJ_ATTR_SCROLLBAR_PAGE,
MS_OBJ_ATTR_BLIP_CROP_TOP,
MS_OBJ_ATTR_BLIP_CROP_BOTTOM,
MS_OBJ_ATTR_BLIP_CROP_LEFT,
MS_OBJ_ATTR_BLIP_CROP_RIGHT,
MS_OBJ_ATTR_ARROW_START,
MS_OBJ_ATTR_ARROW_END,
/* Ptrs */
MS_OBJ_ATTR_IS_PTR_MASK = 0x2000,
MS_OBJ_ATTR_ANCHOR,
MS_OBJ_ATTR_TEXT, /* just the text, no markup */
MS_OBJ_ATTR_OBJ_NAME,
/* GArrays */
MS_OBJ_ATTR_IS_GARRAY_MASK = 0x4000,
MS_OBJ_ATTR_POLYGON_COORDS,
/* PangoAttrList */
MS_OBJ_ATTR_IS_PANGO_ATTR_LIST_MASK = 0x10000,
MS_OBJ_ATTR_MARKUP,
/* Expressions */
MS_OBJ_ATTR_IS_EXPR_MASK = 0x20000,
MS_OBJ_ATTR_LINKED_TO_CELL,
MS_OBJ_ATTR_MASK = 0x37000
} MSObjAttrID;
typedef struct {
MSObjAttrID const id;
union {
gboolean v_boolean;
guint32 v_uint;
guint32 v_int;
gpointer v_ptr;
GArray *v_array;
GnmExpr const *v_expr;
PangoAttrList *v_markup;
} v;
} MSObjAttr;
MSObjAttr *ms_obj_attr_new_flag (MSObjAttrID id);
MSObjAttr *ms_obj_attr_new_uint (MSObjAttrID id, guint32 val);
MSObjAttr *ms_obj_attr_new_int (MSObjAttrID id, gint32 val);
MSObjAttr *ms_obj_attr_new_ptr (MSObjAttrID id, gpointer val);
MSObjAttr *ms_obj_attr_new_array (MSObjAttrID id, GArray *array);
MSObjAttr *ms_obj_attr_new_expr (MSObjAttrID id, GnmExpr const *expr);
MSObjAttr *ms_obj_attr_new_markup (MSObjAttrID id, PangoAttrList *list);
typedef GHashTable MSObjAttrBag;
MSObjAttrBag *ms_obj_attr_bag_new (void);
void ms_obj_attr_bag_destroy (MSObjAttrBag *attrs);
void ms_obj_attr_bag_insert (MSObjAttrBag *attrs,
MSObjAttr *attr);
MSObjAttr *ms_obj_attr_bag_lookup (MSObjAttrBag *attrs,
MSObjAttrID id);
guint32 ms_obj_attr_get_uint (MSObjAttrBag *attrs, MSObjAttrID id, guint32 default_value);
gint32 ms_obj_attr_get_int (MSObjAttrBag *attrs, MSObjAttrID id, gint32 default_value);
gpointer ms_obj_attr_get_ptr (MSObjAttrBag *attrs, MSObjAttrID id, gpointer default_value);
GArray *ms_obj_attr_get_array (MSObjAttrBag *attrs, MSObjAttrID id, GArray *default_value);
GnmExpr const *ms_obj_attr_get_expr (MSObjAttrBag *attrs, MSObjAttrID id, GnmExpr const *default_value);
PangoAttrList *ms_obj_attr_get_markup (MSObjAttrBag *attrs, MSObjAttrID id, PangoAttrList *default_value);
struct _MSObj {
int id;
/* Type specific parameters */
SheetObject *gnum_obj;
int excel_type;
char const *excel_type_name;
/* a kludge for now until the indicator and the box have distinct objects */
GnmCellPos comment_pos;
gboolean combo_in_autofilter;
gboolean is_linked;
MSObjAttrBag *attrs;
};
MSObj *ms_obj_new (MSObjAttrBag *attrs);
void ms_read_OBJ (BiffQuery *q, MSContainer *c, MSObjAttrBag *attrs);
void ms_obj_delete (MSObj *obj);
char *ms_read_TXO (BiffQuery *q, MSContainer *c, PangoAttrList **markup);
/********************************************************/
void ms_objv8_write_common (BiffPut *bp, int id, int type, guint16 flags);
void ms_objv8_write_scrollbar (BiffPut *bp);
void ms_objv8_write_listbox (BiffPut *bp, gboolean filtered);
void ms_objv8_write_chart (BiffPut *bp, SheetObject *sog);
#endif /* GNUMERIC_MS_OBJ_H */
|