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
|
/**
* ms-excel-util.h: Utility functions for MS Excel import / export
*
* Author:
* Jon K Hellan (hellan@acm.org)
*
* (C) 1999-2004 Jon K Hellan
**/
#ifndef GNUMERIC_MS_EXCEL_UTIL_H
#define GNUMERIC_MS_EXCEL_UTIL_H
#include <glib.h>
#include <stdlib.h>
typedef struct _TwoWayTable TwoWayTable;
struct _TwoWayTable {
GHashTable *all_keys;
GHashTable *unique_keys;
GPtrArray *idx_to_key;
gint base; /* Indices assigned consecutively from base */
GDestroyNotify key_destroy_func;
};
typedef void (*AfterPutFunc) (gconstpointer key,
gboolean was_added,
gint index,
gconstpointer closure);
TwoWayTable *
two_way_table_new (GHashFunc hash_func,
GCompareFunc key_compare_func,
gint base,
GDestroyNotify key_destroy_func);
void
two_way_table_free (TwoWayTable *table);
gint
two_way_table_put (const TwoWayTable *table, gpointer key,
gboolean unique, AfterPutFunc apf, gconstpointer closure);
void
two_way_table_move (const TwoWayTable *table, gint dst_idx, gint src_idx);
gint
two_way_table_key_to_idx (const TwoWayTable *table, gconstpointer key);
gpointer
two_way_table_idx_to_key (const TwoWayTable *table, gint idx);
/*****************************************************************************/
typedef struct {
char const *const name;
int const defcol_unit;
int const colinfo_baseline;
float const colinfo_step;
} XL_font_width;
/* Measures base character width for column sizing. Returns width. */
/* A new version based on hard coded tables to match XL */
XL_font_width const *xl_lookup_font_specs (char const *name);
void destroy_xl_font_widths (void);
#endif /* GNUMERIC_MS_EXCEL_UTIL_H */
|