xlhtml/ppthtml/ppthtml.h
2002-10-26 03:28:53 +00:00

161 lines
3.9 KiB
C

#ifndef PPTHTML_H
#define PPTHTML_H
#include <stdint.h>
#include <vector.h>
#undef MAX
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
#define TRUE 1
#define FALSE 0
#define TYPE_STRING 0x1e /* 30, VT_LPSTR */
#define SUMMARY_ID(x) ((x) & 0xff)
typedef uint32_t OlePos;
typedef int32_t OleSPos;
typedef struct _List List;
typedef void* pointer;
typedef const void *gconstpointer;
typedef int gboolean;
/* definitions for vector array */
typedef vector ole_vector;
/** The initial size of a ole_vector. */
#define OLE_VECTOR_SIZE 10
/** The growth factor of a ole_vector. */
#define OLE_VECTOR_FACTOR 2
#define resize_ole_vector(v, size) \
vector_resize(v, size, sizeof(OleSummarySection))
#define create_ole_vector(v) \
vector_create(v, OLE_VECTOR_SIZE, sizeof(OleSummarySection))
#define destroy_ole_vector(v) \
vector_destroy(v)
#define append_ole(v, token) \
vector_append(v, token, 0, OLE_VECTOR_FACTOR)
#define insert_ole(v, token, pos) \
vector_insert(v, token, pos, 0, OLE_VECTOR_FACTOR)
#define insert_ole_space(v, pos, n) \
vector_insert_space(v, OleSummarySection, pos, n, 0, OLE_VECTOR_FACTOR)
#define ole_at(v, index) \
element_at(v, index, OleSummarySection)
#define ole_delete(v, pos) \
vector_delete(v, OleSummarySection, pos)
/* definitions for vector array */
typedef vector item_vector;
/** The initial size of a item_vector. */
#define ITEM_VECTOR_SIZE 10
/** The growth factor of a item_vector. */
#define ITEM_VECTOR_FACTOR 2
#define resize_item_vector(v, size) \
vector_resize(v, size, sizeof(item_t))
#define create_item_vector(v) \
vector_create(v, ITEM_VECTOR_SIZE, sizeof(item_t))
#define destroy_item_vector(v) \
vector_destroy(v)
#define append_item(v, token) \
vector_append(v, token, 0, ITEM_VECTOR_FACTOR)
#define insert_item(v, token, pos) \
vector_insert(v, token, pos, 0, ITEM_VECTOR_FACTOR)
#define insert_item_space(v, pos, n) \
vector_insert_space(v, item_t, pos, n, 0, ITEM_VECTOR_FACTOR)
#define item_at(v, index) \
element_at(v, index, item_t)
#define item_delete(v, pos) \
vector_delete(v, item_t, pos)
/* memory allocation functions */
#define allocate_mem(type, count) \
((type *) malloc((unsigned) sizeof (type) * (count)))
#define GET_UINT16(p) (uint16_t)(*((const uint8_t *)(p)+0) | \
(*((const uint8_t *)(p)+1)<<8))
#define GET_UINT32(p) (uint32_t)(*((const uint8_t *)(p)+0) | \
(*((const uint8_t *)(p)+1)<<8) | \
(*((const uint8_t *)(p)+2)<<16) | \
(*((const uint8_t *)(p)+3)<<24))
const uint32_t sum_fmtid[4] = {
0xF29F85E0,
0x10684FF9,
0x000891AB,
0xD9B3272B
};
/*
* Property Set IDs
* The SummaryInformation stream contains the SummaryInformation property set.
* The DocumentSummaryInformation stream contains both the
* DocumentSummaryInformation and the UserDefined property sets as sections.
*/
typedef enum {
OLE_PS_SUMMARY_INFO,
OLE_PS_DOCUMENT_SUMMARY_INFO,
OLE_PS_USER_DEFINED_SUMMARY_INFO
} PropertySetID;
typedef enum {
OLE_ERR_OK,
OLE_ERR_EXIST,
OLE_ERR_INVALID,
OLE_ERR_FORMAT,
OLE_ERR_PERM,
OLE_ERR_MEM,
OLE_ERR_SPACE,
OLE_ERR_NOTEMPTY,
OLE_ERR_BADARG
}OleErr;
/* SummaryInformation Stream Properties */
/* String properties */
typedef enum {
OLE_SUMMARY_TITLE = 0x1002,
OLE_SUMMARY_SUBJECT = 0x1003,
OLE_SUMMARY_AUTHOR = 0x1004,
OLE_SUMMARY_KEYWORDS = 0x1005,
OLE_SUMMARY_COMMENTS = 0x1006
} OleSummaryPID;
struct _List
{
pointer data;
List *next;
List *prev;
};
typedef struct {
uint8_t class_id[16];
ole_vector * sections;
item_vector * items;
List * write_items;
gboolean read_mode;
COLEFILE *s;
PropertySetID ps_id;
} OleSummary;
typedef struct {
uint32_t offset;
uint32_t props;
uint32_t bytes;
PropertySetID ps_id;
} OleSummarySection;
typedef struct {
uint32_t offset;
uint32_t id;
PropertySetID ps_id;
} item_t;
#endif