/*
* doclist.c
* Copyright (C) 2004 A.J. van Os; Released under GNU GPL
*
* Description:
* Build, read and destroy list(s) of Word document information
*
* Note:
* There is no real list there is always one document per document
*/

#include "antiword.h"

#define HALF_INCH       36000L  /* In millipoints */

/* Variables needed to write the Document Information List */
static document_block_type *pAnchor = NULL;
static document_block_type tInfo;


/*
* vDestroyDocumentInfoList - destroy the Document Information List
*/
void
vDestroyDocumentInfoList(void)
{
       DBG_MSG("vDestroyDocumentInfoList");

       pAnchor = NULL;
} /* end of vDestoryDocumentInfoList */

/*
* vCreateDocumentInfoList - create the Document Information List
*/
void
vCreateDocumentInfoList(const document_block_type *pDocument)
{
       fail(pDocument == NULL);
       fail(pAnchor != NULL);

       tInfo = *pDocument;
       pAnchor = &tInfo;
} /* end of vCreateDocumentInfoList */

/*
* lGetDefaultTabWidth - get the default tabwidth in millipoints
*/
long
lGetDefaultTabWidth(void)
{
       long    lDefaultTabWidth;
       USHORT  usTmp;

       if (pAnchor == NULL) {
               DBG_FIXME();
               return HALF_INCH;
       }
       usTmp = pAnchor->usDefaultTabWidth;
       lDefaultTabWidth = usTmp == 0 ? HALF_INCH : lTwips2MilliPoints(usTmp);
       NO_DBG_DEC(lDefaultTabWidth);
       return lDefaultTabWidth;
} /* end of lGetDefaultTabWidth */

/*
* ucGetDopHdrFtrSpecification - get the Heder/footer specification
*/
UCHAR
ucGetDopHdrFtrSpecification(void)
{
       if (pAnchor == NULL) {
               DBG_FIXME();
               return 0x00;
       }
       return pAnchor->ucHdrFtrSpecification;
} /* end of ucGetDopHdrFtrSpecification */