packages feed

libxls-0.2: include/xlsstruct.h

/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
 *
 * This file is part of libxls -- A multiplatform, C library
 * for parsing Excel(TM) files.
 *
 * libxls is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * libxls is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with libxls.  If not, see <http://www.gnu.org/licenses/>.
 *
 * Copyright 2004 Komarov Valery
 * Copyright 2006-2009 Christophe Leitienne
 * Copyright 2008-2009 David Hoerl
 */

#include "ole.h"

typedef struct 
{
    WORD id;
    WORD size;
}
BOF;

typedef struct 
{
    WORD ver;
    WORD type;
    WORD id_make;
    WORD year;
    DWORD flags;
    DWORD min_ver;
    BYTE buf[100];
}
BIFF;

typedef struct 
{
    WORD xWn;
    WORD yWn;
    WORD dxWn;
    WORD dyWn;
    WORD grbit;
    WORD itabCur;
    WORD itabFirst;
    WORD ctabSel;
    WORD wTabRatio;
}
WIND1;

typedef struct 
{
    DWORD	filepos;
    BYTE	type;
    BYTE	visible;
    BYTE	name[];
}
BOUNDSHEET;

typedef struct 
{
    WORD	index;
    WORD	fcell;
    WORD	lcell;
    WORD	height;
    WORD	notused;
    WORD	notused2; //used only for BIFF3-4
    WORD	flags;
    WORD	xf;
}
ROW;

typedef struct 
{
    WORD	row;
    WORD	col;
    WORD	xf;
}
COL;


typedef struct  // BIFF8
{
    WORD	row;
    WORD	col;
    WORD	xf;
    //	ULLONG  res;
    BYTE	resid;
    BYTE	resdata[5];
    WORD	res;
    //	double	res;
    WORD	flags;
    BYTE	chn[4]; // BIFF8
    WORD	len;
    BYTE	value[1]; //var
}
FORMULA;

typedef struct 
{
    WORD	row;
    WORD	col;
    WORD	xf;
    BYTE	value[1]; // var
}
RK;

typedef struct 
{
    WORD	row;
    WORD	col;
    WORD	xf;
    BYTE	value[1];
}
LABELSST;

typedef struct 
{
    WORD	row;
    WORD	col;
    WORD	xf;
}
BLANK;

typedef struct 
{
    WORD	row;
    WORD	col;
    WORD	xf;
    BYTE	value[1]; // var
}
LABEL;

typedef struct 
{
    DWORD	num;
    DWORD	numofstr;
    BYTE	strings;
}
SST;

typedef struct 
{
    WORD	font;
    WORD	format;
    WORD	type;
    WORD	align;
    WORD	color;
    WORD	fill;
    WORD	border;
    WORD	linestyle;
}
XF5;

typedef struct 
{
    WORD	font;
    WORD	format;
    WORD	type;
    BYTE	align;
    BYTE	rotation;
    BYTE	ident;
    BYTE	usedattr;
    DWORD	linestyle;
    DWORD	linecolor;
    WORD	groundcolor;
}
XF8;

typedef struct 
{
    WORD	row;
    WORD	col;
    WORD	xf;
    double value;
}
BR_NUMBER;

typedef struct 
{
    WORD	first;
    WORD	last;
    WORD	width;
    WORD	xf;
    WORD	flags;
    WORD	notused;
}
COLINFO;

typedef struct 
{
    WORD	rowf;
    WORD	rowl;
    WORD	colf;
    WORD	coll;
}
MERGEDCELLS;

typedef struct 
{
    WORD	height;
    WORD	flag;
    WORD	color;
    WORD	bold;
    WORD	escapement;
    BYTE	underline;
    BYTE	family;
    BYTE	charset;
    BYTE	notused;
    BYTE	name;
}
FONT;

typedef struct 
{
    WORD	index;
    BYTE	value[0];
}
FORMAT;

//---------------------------------------------------------
typedef struct 
{
    DWORD filepos;
    BYTE visibility;
    BYTE type;
    char* name;
}st_sheet_data;
typedef struct 
{
    DWORD count;        //Count of sheets
    st_sheet_data* sheet;
}
st_sheet;

typedef struct 
{
    WORD	height;
    WORD	flag;
    WORD	color;
    WORD	bold;
    WORD	escapement;
    BYTE	underline;
    BYTE	family;
    BYTE	charset;
    char*	name;
}st_font_data;

typedef struct 
{
    DWORD count;		//Count of FONT's
    st_font_data* font;
}
st_font;

typedef struct 
{
     WORD index;
     char *value;
}st_format_data;

typedef struct 
{
    DWORD count;		//Count of FORMAT's
    st_format_data* format;
}
st_format;

typedef struct 
{
    WORD	font;
    WORD	format;
    WORD	type;
    BYTE	align;
    BYTE	rotation;
    BYTE	ident;
    BYTE	usedattr;
    DWORD	linestyle;
    DWORD	linecolor;
    WORD	groundcolor;
} st_xf_data;

typedef struct 
{
    DWORD count;	//Count of XF
    //	XF** xf;
    st_xf_data xf;
}
st_xf;

typedef struct 
{
    //	long len;
    char* str;
} str_sst_string;


typedef struct 
{
    DWORD count;
    DWORD lastid;
    DWORD continued;
    DWORD lastln;
    DWORD lastrt;
    DWORD lastsz;
    str_sst_string* string;
}
st_sst;

typedef struct 
{
    WORD	id;
    WORD	row;
    WORD	col;
    WORD	xf;
    double	d;
    long	l;
    char*	str;		//String value;
    BYTE	ishiden;	//Is cell hidden
    WORD	width;		//Width of col
    WORD	colspan;
    WORD	rowspan;
} st_cell_data;


typedef struct 
{
    DWORD count;
    st_cell_data* cell;
}
st_cell;

typedef struct 
{
    WORD index;
    WORD fcell;
    WORD lcell;
    WORD height;
    WORD flags;
    WORD xf;
    BYTE xfflags;
    st_cell cells;
} st_row_data;

typedef struct 
{
    //	DWORD count;
    WORD lastcol;
    WORD lastrow;
    st_row_data* row;
}
st_row;

typedef struct 
{
    WORD	first;
    WORD	last;
    WORD	width;
    WORD	xf;
    WORD	flags;
}st_colinfo_data;

typedef struct 
{
    DWORD count;	//Count of COLINFO
    st_colinfo_data* col;
}
st_colinfo;

typedef struct 
{
    //FILE*		file;		//
    OLE2Stream*	olestr;
    long		filepos;	//position in file

    //From Header (BIFF)
    BYTE		is5ver;
    WORD		type;

    //Other data
    WORD		codepage;	//Charset codepage
    char*		charset;
    st_sheet	sheets;
    st_sst		sst;		//SST table
    st_xf		xfs;		//XF table
    st_font		fonts;
    st_format	formats;	//FORMAT table

	char		*summary;		// ole file
	char		*docSummary;	// ole file
}
xlsWorkBook;

typedef struct 
{
    DWORD		filepos;
    WORD		defcolwidth;
    st_row		rows;
    xlsWorkBook * 	workbook;
    st_colinfo	colinfo;
    WORD		maxcol;
}
xlsWorkSheet;

typedef st_cell_data xlsCell;
typedef st_row_data xlsRow;

typedef struct 
{
	char		*title;
	char		*subject;
	char		*author;
	char		*keywords;
	char		*comment;
	char		*lastAuthor;
	char		*appName;
	char		*category;
	char		*manager;
	char		*company;
}
xlsSummaryInfo;