Logo Search packages:      
Sourcecode: gretl version File versions

biff.h

/**
 * ms-biff.h: MS Excel BIFF support for Gnumeric
 *
 * Author:
 *    Michael Meeks (michael@ximian.com)
 *
 * (C) 1998, 1999, 2000 Michael Meeks
 **/

#ifndef GNUMERIC_BIFF_H
#define GNUMERIC_BIFF_H

#include <libole2/ms-ole.h>

#undef EDEBUG

typedef struct _BiffQuery BiffQuery;

struct _BiffQuery {
    guint8  ms_op;
    guint8  ls_op;
    guint16 opcode;

    guint8  *data;
    int     data_malloced;
    guint32 length;

    guint32 streamPos;
    MsOleStream *pos;
};

typedef enum { 
    MS_BIFF_V2 = 2,
    MS_BIFF_V3 = 3,
    MS_BIFF_V4 = 4,
    MS_BIFF_V5 = 5, /* Excel 5.0 */
    MS_BIFF_V7 = 7, /* Excel 95 */
    MS_BIFF_V8 = 8, /* Excel 97 */
    MS_BIFF_V_UNKNOWN = 0
} MsBiffVersion;


/* Pass this a BiffQuery * */
#define EX_GETROW(p)      (MS_OLE_GET_GUINT16(p->data + 0))
#define EX_GETCOL(p)      (MS_OLE_GET_GUINT16(p->data + 2))
#define EX_GETXF(p)       (MS_OLE_GET_GUINT16(p->data + 4))
#define EX_GETSTRLEN(p)   (MS_OLE_GET_GUINT16(p->data + 6))

/* Version info types as found in various Biff records */
typedef enum { 
    MS_BIFF_TYPE_Workbook, 
    MS_BIFF_TYPE_VBModule, 
    MS_BIFF_TYPE_Worksheet,
    MS_BIFF_TYPE_Chart, 
    MS_BIFF_TYPE_Macrosheet, 
    MS_BIFF_TYPE_Workspace,
    MS_BIFF_TYPE_Unknown 
} MsBiffFileType;

/* Cell / XF types */
typedef enum { 
    MS_BIFF_H_VISIBLE, 
    MS_BIFF_H_HIDDEN,
    MS_BIFF_H_VERY_HIDDEN 
} MsBiffHidden;

typedef enum { 
    MS_BIFF_X_STYLE, 
    MS_BIFF_X_CELL 
} MsBiffXfType;

typedef enum { 
    MS_BIFF_F_MS, 
    MS_BIFF_F_LOTUS 
} MsBiffFormat;

typedef enum { 
    MS_BIFF_E_CONTEXT, 
    MS_BIFF_E_LEFT_TO_RIGHT,
    MS_BIFF_E_RIGHT_TO_LEFT 
} MsBiffEastern;

typedef struct {
    MsBiffVersion version;
    MsBiffFileType type;
} MsBiffBofData;

typedef enum {
    MsBiffMaxRowsV7 = 16384,
    MsBiffMaxRowsV8 = 65536
} MsBiffMaxRows;

int excel_book_get_info (const char *fname, wbook *book);
MsBiffBofData *new_ms_biff_bof_data  (BiffQuery *pos);
void free_ms_biff_bof_data (MsBiffBofData *data);
BiffQuery *ms_biff_query_new (MsOleStream *ptr);
int ms_biff_query_next (BiffQuery *bq);
void ms_biff_query_destroy (BiffQuery *bq);

/**
 * biff-types.h: A long and dull list of BIFF types.
 *
 * Author:
 *    Michael Meeks (michael@ximian.com)
 *
 * (C) 1998-2001 Michael Meeks
 **/

#define BIFF_DIMENSIONS                 0x00    /* 2, NOT 1,10 */
#define BIFF_BLANK                      0x01    /* 2, NOT 10 */
#define BIFF_NUMBER                     0x03    /* 2, NOT 1,10 */
#define BIFF_LABEL                      0x04    /* 2 */
#define BIFF_BOOLERR                    0x05    /* 2, NOT 10 */
#define BIFF_FORMULA                    0x06    /* 4, NOT 10 */
#define BIFF_STRING                     0x07    /* 2 */
#define BIFF_ROW                        0x08    /* 2 */
#define BIFF_BOF                        0x09    /* 8, NOT 10 */
#define BIFF_EOF                        0x0a    /* 0, NOT 10 */
#define BIFF_INDEX                      0x0b    /* 2, NOT 10 */
#define BIFF_CALCCOUNT                  0x0c    /* 0, NOT 10 */
#define BIFF_CALCMODE                   0x0d    /* 0, NOT 10 */
#define BIFF_PRECISION                  0x0e    /* 0 */
#define BIFF_REFMODE                    0x0f    /* 0 */
#define BIFF_DELTA                      0x10    /* 0 */
#define BIFF_ITERATION                  0x11    /* 0 */
#define BIFF_PROTECT                    0x12    /* 0 */
#define BIFF_PASSWORD                   0x13    /* 0 */
#define BIFF_HEADER                     0x14    /* 0, NOT 10 */
#define BIFF_FOOTER                     0x15    /* 0, NOT 10 */
#define BIFF_EXTERNCOUNT                0x16    /* 0, NOT 10 */
#define BIFF_EXTERNSHEET                0x17    /* 0, NOT 10 */
#define BIFF_NAME                       0x18    /* 2, NOT 10 */
#define BIFF_WINDOWPROTECT              0x19    /* 0, NOT 10 */
#define BIFF_VERTICALPAGEBREAKS         0x1a    /* 0, NOT 10 */
#define BIFF_HORIZONTALPAGEBREAKS       0x1b    /* 0, NOT 10 */
#define BIFF_NOTE                       0x1c    /* 0, NOT 10 */
#define BIFF_SELECTION                  0x1d    /* 0, NOT 10 */
#define BIFF_FORMAT                     0x1e    /* 4, NOT 10 */
#define BIFF_ARRAY                      0x21    /* 2, NOT 10 */
#define BIFF_1904                       0x22    /* 0, NOT 1,10 */
#define BIFF_EXTERNNAME                 0x23    /* 2 */
#define BIFF_DEFAULTROWHEIGHT       0x25  /* 2, NOT 10 */
#define BIFF_LEFT_MARGIN                0x26    /* 0, NOT 10 */
#define BIFF_RIGHT_MARGIN               0x27    /* 0, NOT 10 */
#define BIFF_TOP_MARGIN                 0x28    /* 0 */
#define BIFF_BOTTOM_MARGIN              0x29    /* 0 */
#define BIFF_PRINTHEADERS               0x2a    /* 0 */
#define BIFF_PRINTGRIDLINES             0x2b    /* 0 */
#define BIFF_FILEPASS                   0x2f    /* 0 */
#define BIFF_FONT                       0x31    /* 2 */
#define BIFF_PRINTSIZE                  0x33    /* 0, Undocumented */
#define BIFF_TABLE                      0x36    /* 2 */
#define BIFF_CONTINUE                   0x3c    /* 0, NOT 10 */
#define BIFF_WINDOW1                    0x3d    /* 0, NOT 1,10 */
#define BIFF_WINDOW2                    0x3e    /* 2, NOT 10 */
#define BIFF_BACKUP                     0x40    /* 0, NOT 10 */
#define BIFF_PANE                       0x41    /* 0, NOT 10 */
#define BIFF_CODEPAGE                   0x42    /* DUPLICATE 42 */
#define BIFF_XF_OLD                     0x43    /* What is this ?, NOT 10 */
#define BIFF_PLS                        0x4d    /* 0 */
#define BIFF_DCON                       0x50    /* 0, NOT 10 */
#define BIFF_DCONREF                    0x51    /* 0, NOT 10 */
#define BIFF_DCONNAME                   0x52    /* 0 */
#define BIFF_DEFCOLWIDTH                0x55    /* 0 */
#define BIFF_XCT                        0x59    /* 0 */
#define BIFF_CRN                        0x5a    /* 0 */
#define BIFF_FILESHARING                0x5b    /* 0, NOT 10 */
#define BIFF_WRITEACCESS                0x5c    /* 0 */
#define BIFF_OBJ                        0x5d    /* 0, NOT 10 */
#define BIFF_UNCALCED                   0x5e    /* 0 */
#define BIFF_SAVERECALC                 0x5f    /* 0 */
#define BIFF_TEMPLATE                   0x60    /* 0, NOT 1,10 */
#define BIFF_TAB_COLOR                  0x62    /* 8 */
#define BIFF_OBJPROTECT                 0x63    /* 0, NOT 10 */
#define BIFF_COLINFO                    0x7d    /* 0 */
#define BIFF_RK                         0x7e    /* 0 */
#define BIFF_IMDATA                     0x7f    /* 0 */
#define BIFF_GUTS                       0x80    /* 0 */
#define BIFF_WSBOOL                     0x81    /* 0 */
#define BIFF_GRIDSET                    0x82    /* 0 */
#define BIFF_HCENTER                    0x83    /* 0 */
#define BIFF_VCENTER                    0x84    /* 0 */
#define BIFF_BOUNDSHEET                 0x85    /* 0 */
#define BIFF_WRITEPROT                  0x86    /* 0 */
#define BIFF_ADDIN                      0x87    /* 0 */
#define BIFF_EDG                        0x88    /* 0 */
#define BIFF_PUB                        0x89    /* 0 */
#define BIFF_COUNTRY                    0x8c    /* 0 */
#define BIFF_HIDEOBJ                    0x8d    /* 0 */
#define BIFF_SORT                       0x90    /* 0 */
#define BIFF_SUB                        0x91    /* 0 */
#define BIFF_PALETTE                    0x92    /* 0 */
#define BIFF_STYLE                      0x93    /* 2 */
#define BIFF_LHRECORD                   0x94    /* 0 */
#define BIFF_LHNGRAPH                   0x95    /* 0 */
#define BIFF_SOUND                      0x96    /* 0 */
#define BIFF_LPR                        0x98    /* 0 */
#define BIFF_STANDARDWIDTH              0x99    /* 0 */
#define BIFF_FNGROUPNAME                0x9a    /* 0 */
#define BIFF_FILTERMODE                 0x9b    /* 0 */
#define BIFF_FNGROUPCOUNT               0x9c    /* 0 */
#define BIFF_AUTOFILTERINFO             0x9d    /* 0 */
#define BIFF_AUTOFILTER                 0x9e    /* 0 */
#define BIFF_SCL                        0xa0    /* 0 */
#define BIFF_SETUP                      0xa1    /* 0 */
#define BIFF_COORDLIST                  0xa9    /* 0 NOT 1 */
#define BIFF_GCW                        0xab    /* 0 NOT 1 */
#define BIFF_SCENMAN                    0xae    /* 0 NOT 1 */
#define BIFF_SCENARIO                   0xaf    /* 0 NOT 1 */
#define BIFF_SXVIEW                     0xb0    /* 0 */
#define BIFF_SXVD                       0xb1    /* 0 NOT 1 */
#define BIFF_SXVI                       0xb2    /* 0 NOT 1 */
#define BIFF_SXIVD                      0xb4    /* 0 */
#define BIFF_SXLI                       0xb5    /* 0 NOT 1 */
#define BIFF_SXPI                       0xb6    /* 0 NOT 1 */
#define BIFF_DOCROUTE                   0xb8    /* 0 NOT 1 */
#define BIFF_RECIPNAME                  0xb9    /* 0 */
#define BIFF_SHRFMLA                    0xbc    /* 0 NOT 1 */
#define BIFF_MULRK                      0xbd    /* 0 */
#define BIFF_MULBLANK                   0xbe    /* 0 NOT 1 */
#define BIFF_MMS                        0xc1    /* 0 */
#define BIFF_ADDMENU                    0xc2    /* 0 */
#define BIFF_DELMENU                    0xc3    /* 0 */
#define BIFF_SXDI                       0xc5    /* 0 */
#define BIFF_SXDB                       0xc6    /* 0 */
#define BIFF_SXSTRING                   0xcd    /* 0 */
#define BIFF_SXTBL                      0xd0    /* 0 */
#define BIFF_SXTBRGIITM                 0xd1    /* 0 */
#define BIFF_SXTBPG                     0xd2    /* 0 */
#define BIFF_OBPROJ                     0xd3    /* 0 */
#define BIFF_SXIDSTM                    0xd5    /* 0 */
#define BIFF_RSTRING                    0xd6    /* 0 */
#define BIFF_DBCELL                     0xd7    /* 0 */
#define BIFF_BOOKBOOL                   0xda    /* 0 */
#define BIFF_PARAMQRY                   0xdc    /* DUPLICATE dc */
#define BIFF_SXEXT                      0xdc    /* DUPLICATE dc */
#define BIFF_SCENPROTECT                0xdd    /* 0 */
#define BIFF_OLESIZE                    0xde    /* 0 */
#define BIFF_UDDESC                     0xdf    /* 0 */
#define BIFF_XF                         0xe0    /* 0 */
#define BIFF_INTERFACEHDR               0xe1    /* 0 */
#define BIFF_INTERFACEEND               0xe2    /* 0 */
#define BIFF_SXVX                       0xe3    /* 0 */
#define BIFF_MERGECELLS                 0xe5    /* Undocumented */
#define BIFF_BG_PIC                       0xe9  /* Undocumented */
#define BIFF_TABIDCONF                  0xea    /* 0 */
#define BIFF_MS_O_DRAWING_GROUP         0xeb    /* 0 */
#define BIFF_MS_O_DRAWING               0xec    /* 0 */
#define BIFF_MS_O_DRAWING_SELECTION     0xed    /* 0 */
#define BIFF_PHONETIC               0xef  /* semi-Undocumented */
#define BIFF_SXRULE                     0xf0    /* 0 */
#define BIFF_SXEX                       0xf1    /* 0 */
#define BIFF_SXFILT                     0xf2    /* 0 */
#define BIFF_SXNAME                     0xf6    /* 0 */
#define BIFF_SXSELECT                   0xf7    /* 0 */
#define BIFF_SXPAIR                     0xf8    /* 0 */
#define BIFF_SXFMLA                     0xf9    /* 0 */
#define BIFF_SXFORMAT                   0xfb    /* 0 */
#define BIFF_SST                        0xfc    /* 0 */
#define BIFF_LABELSST                   0xfd    /* 0 */
#define BIFF_EXTSST                     0xff    /* 0 */

/* Odd balls */
#define BIFF_SXVDEX                    0x100    /* ONLY 1 */
#define BIFF_SXFORMULA                 0x103    /* ONLY 1 */
#define BIFF_SXDBEX                    0x122    /* ONLY 1 */
#define BIFF_TABID                     0x13d    /* ONLY 1 */
#define BIFF_USESELFS                  0x160    /* ONLY 1 */
#define BIFF_DSF                       0x161    /* ONLY 1 */
#define BIFF_XL5MODIFY                 0x162    /* ONLY 1 */
#define BIFF_FILESHARING2              0x1a5
#define BIFF_USERDBVIEW                0x1a9    /* ONLY 1 */
#define BIFF_USERSVIEWBEGIN            0x1aa
#define BIFF_USERSVIEWEND              0x1ab    /* ONLY 1 */
#define BIFF_QSI                       0x1ad
#define BIFF_SUPBOOK                   0x1ae    /* ONLY 1 */
#define BIFF_PROT4REV                  0x1af    /* ONLY 1 */
#define BIFF_CONDFMT                   0x1b0    /* ONLY 1 */
#define BIFF_CF                        0x1b1    /* ONLY 1 */
#define BIFF_DVAL                      0x1b2    /* ONLY 1 */
#define BIFF_DCONBIN                   0x1b5    /* ONLY 1 */
#define BIFF_TXO                       0x1b6    /* ONLY 1 */
#define BIFF_REFRESHALL                0x1b7    /* ONLY 1 */
#define BIFF_HLINK                     0x1b8    /* ONLY 1 */
#define BIFF_CODENAME                  0x1ba    /* ONLY 1, TYPO in MS Docs */
#define BIFF_SXFDBTYPE                 0x1bb
#define BIFF_PROT4REVPASS              0x1bc    /* ONLY 1 */
#define BIFF_DV                        0x1be    /* ONLY 1 */
#define BIFF_XL9FILE                 0x1c0      /* ONLY 1 */
#define BIFF_RECALCID                0x1c1      /* ONLY 1 */
#define BIFF_UNKNOWN_1               0x810      /* what this is */

#endif /* GNUMERIC_BIFF_H */

Generated by  Doxygen 1.6.0   Back to index