void RecordStreamObject::implDumpRecordBody()

in main/oox/source/dump/xlsbdumper.cxx [999:2205]


void RecordStreamObject::implDumpRecordBody()
{
    switch( getRecId() )
    {
        case BIFF12_ID_ARRAY:
            dumpRange( "array-range" );
            dumpHex< sal_uInt8 >( "flags", "ARRAY-FLAGS" );
            mxFmlaObj->dumpCellFormula();
        break;

        case BIFF12_ID_AUTOFILTER:
            dumpRange( "filter-range" );
        break;
        
        case BIFF12_ID_BINARYINDEXBLOCK:
            dumpRowRange( "row-range" );
            dumpUnknown( 12 );
        break;

        case BIFF12_ID_BINARYINDEXROWS:
        {
            sal_uInt32 nUsedRows = dumpBin< sal_uInt32 >( "used-rows" );
            dumpDec< sal_Int64 >( "stream-offset" );
            for( ; nUsedRows > 0; nUsedRows >>= 1 )
                if( (nUsedRows & 1) != 0 )
                    dumpBin< sal_uInt16 >( "used-columns" );
        }
        break;

        case BIFF12_ID_BORDER:
            dumpHex< sal_uInt8 >( "flags", "BORDER-FLAGS" );
            dumpDec< sal_uInt16 >( "top-style", "BORDERSTYLES" );
            dumpColor( "top-color" );
            dumpDec< sal_uInt16 >( "bottom-style", "BORDERSTYLES" );
            dumpColor( "bottom-color" );
            dumpDec< sal_uInt16 >( "left-style", "BORDERSTYLES" );
            dumpColor( "left-color" );
            dumpDec< sal_uInt16 >( "right-style", "BORDERSTYLES" );
            dumpColor( "right-color" );
            dumpDec< sal_uInt16 >( "diag-style", "BORDERSTYLES" );
            dumpColor( "diag-color" );
        break;

        case BIFF12_ID_BRK:
            dumpDec< sal_Int32 >( "id" );
            dumpDec< sal_Int32 >( "min" );
            dumpDec< sal_Int32 >( "max" );
            dumpDec< sal_Int32 >( "manual-break", "BOOLEAN" );
            dumpDec< sal_Int32 >( "pivot-break", "BOOLEAN" );
        break;

        case BIFF12_ID_CALCPR:
            dumpDec< sal_Int32 >( "calc-id" );
            dumpDec< sal_Int32 >( "calc-mode", "CALCPR-CALCMODE" );
            dumpDec< sal_Int32 >( "iteration-count" );
            dumpDec< double >( "iteration-delta" );
            dumpDec< sal_Int32 >( "processor-count" );
            dumpHex< sal_uInt16 >( "flags", "CALCPR-FLAGS" );
        break;

        case BIFF12_ID_CELL_BLANK:
            dumpCellHeader( true );
        break;

        case BIFF12_ID_CELL_BOOL:
            dumpCellHeader( true );
            dumpBoolean();
        break;

        case BIFF12_ID_CELL_DOUBLE:
            dumpCellHeader( true );
            dumpDec< double >( "value" );
        break;

        case BIFF12_ID_CELL_ERROR:
            dumpCellHeader( true );
            dumpErrorCode();
        break;

        case BIFF12_ID_CELL_RK:
            dumpCellHeader( true );
            dumpRk( "value" );
        break;

        case BIFF12_ID_CELL_RSTRING:
            dumpCellHeader( true );
            dumpString( "value", true );
        break;

        case BIFF12_ID_CELL_SI:
            dumpCellHeader( true );
            dumpDec< sal_Int32 >( "string-id" );
        break;

        case BIFF12_ID_CELL_STRING:
            dumpCellHeader( true );
            dumpString( "value" );
        break;

        case BIFF12_ID_CELLSTYLE:
            dumpDec< sal_Int32 >( "xf-id" );
            dumpHex< sal_uInt16 >( "flags", "CELLSTYLE-FLAGS" );
            dumpDec< sal_uInt8 >( "builtin-id", "CELLSTYLE-BUILTIN" );
            dumpDec< sal_uInt8 >( "outline-level" );
            dumpString( "name" );
        break;

        case BIFF12_ID_CFCOLOR:
            dumpColor();
        break;

        case BIFF12_ID_CFRULE:
        {
            // type/subtype/operator is a mess...
            dumpDec< sal_Int32 >( "type", "CFRULE-TYPE" );
            sal_Int32 nSubType = dumpDec< sal_Int32 >( "sub-type", "CFRULE-SUBTYPE" );
            dumpDec< sal_Int32 >( "dxf-id" );
            dumpDec< sal_Int32 >( "priority" );
            switch( nSubType )
            {
                case 0:     dumpDec< sal_Int32 >( "operator", "CFRULE-CELL-OPERATOR" ); break;
                case 5:     dumpDec< sal_Int32 >( "rank" );                             break;
                case 8:     dumpDec< sal_Int32 >( "operator", "CFRULE-TEXT-OPERATOR" ); break;
                case 15:    dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
                case 16:    dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
                case 17:    dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
                case 18:    dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
                case 19:    dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
                case 20:    dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
                case 21:    dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
                case 22:    dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
                case 23:    dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
                case 24:    dumpDec< sal_Int32 >( "operator", "CFRULE-DATE-OPERATOR" ); break;
                case 25:    dumpDec< sal_Int32 >( "std-dev" );                          break;
                case 26:    dumpDec< sal_Int32 >( "std-dev" );                          break;
                case 29:    dumpDec< sal_Int32 >( "std-dev" );                          break;
                case 30:    dumpDec< sal_Int32 >( "std-dev" );                          break;
                default:    dumpDec< sal_Int32 >( "operator", "CFRULE-OTHER-OPERATOR" );
            }
            dumpUnknown( 8 );
            dumpHex< sal_uInt16 >( "flags", "CFRULE-FLAGS" );
            // for no obvious reason the formula sizes occur twice
            dumpDec< sal_Int32 >( "formula1-size" );
            dumpDec< sal_Int32 >( "formula2-size" );
            dumpDec< sal_Int32 >( "formula3-size" );
            dumpString( "text" );
            if( mxStrm->getRemaining() >= 8 )
                mxFmlaObj->dumpNameFormula( "formula1" );
            if( mxStrm->getRemaining() >= 8 )
                mxFmlaObj->dumpNameFormula( "formula2" );
            if( mxStrm->getRemaining() >= 8 )
                mxFmlaObj->dumpNameFormula( "formula3" );
        }
        break;

        case BIFF12_ID_CHARTPAGESETUP:
            dumpDec< sal_Int32 >( "paper-size", "PAGESETUP-PAPERSIZE" );
            dumpDec< sal_Int32 >( "horizontal-res", "PAGESETUP-DPI" );
            dumpDec< sal_Int32 >( "vertical-res", "PAGESETUP-DPI" );
            dumpDec< sal_Int32 >( "copies" );
            dumpDec< sal_uInt16 >( "first-page" );
            dumpHex< sal_uInt16 >( "flags", "CHARTPAGESETUP-FLAGS" );
            dumpString( "printer-settings-rel-id" );
        break;

        case BIFF12_ID_CHARTPROTECTION:
            dumpHex< sal_uInt16 >( "password-hash" );
            // no flags field for the boolean flags?!?
            dumpDec< sal_Int32 >( "content-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "objects-locked", "BOOLEAN" );
        break;

        case BIFF12_ID_CHARTSHEETPR:
            dumpHex< sal_uInt16 >( "flags", "CHARTSHEETPR-FLAGS" );
            dumpColor( "tab-color" );
            dumpString( "codename" );
        break;

        case BIFF12_ID_CHARTSHEETVIEW:
            dumpHex< sal_uInt16 >( "flags", "CHARTSHEETVIEW-FLAGS" );
            dumpDec< sal_Int32 >( "zoom-scale", "CONV-PERCENT" );
            dumpDec< sal_Int32 >( "workbookview-id" );
        break;

        case BIFF12_ID_COL:
            dumpColRange();
            dumpDec< sal_Int32 >( "col-width", "CONV-COLWIDTH" );
            dumpDec< sal_Int32 >( "custom-xf-id" );
            dumpHex< sal_uInt16 >( "flags", "COL-FLAGS" );
        break;

        case BIFF12_ID_COLBREAKS:
            dumpDec< sal_Int32 >( "count" );
            dumpDec< sal_Int32 >( "manual-count" );
        break;

        case BIFF12_ID_COLOR:
            dumpColor();
        break;

        case BIFF12_ID_COMMENT:
            dumpDec< sal_Int32 >( "author-id" );
            dumpRange( "ref" );
            dumpGuid();
        break;

        case BIFF12_ID_COMMENTAUTHOR:
            dumpString( "author" );
        break;

        case BIFF12_ID_COMMENTTEXT:
            dumpString( "text", true );
        break;

        case BIFF12_ID_CONDFORMATTING:
            dumpDec< sal_Int32 >( "cfrule-count" );
            dumpDec< sal_Int32 >( "pivot-table", "BOOLEAN" );
            dumpRangeList();
        break;

        case BIFF12_ID_CONNECTION:
        {
            dumpDec< sal_uInt8 >( "refreshed-version" );
            dumpDec< sal_uInt8 >( "min-refresh-version" );
            dumpDec< sal_uInt8 >( "save-password", "CONNECTION-SAVEPASSWORD" );
            dumpUnused( 1 );
            dumpDec< sal_uInt16 >( "refresh-interval", "CONNECTION-INTERVAL" );
            dumpHex< sal_uInt16 >( "flags", "CONNECTION-FLAGS" );
            sal_uInt16 nStrFlags = dumpHex< sal_uInt16 >( "string-flags", "CONNECTION-STRINGFLAGS" );
            dumpDec< sal_Int32 >( "data-source-type", "CONNECTION-SOURCETYPE" );
            dumpDec< sal_Int32 >( "reconnect-type", "CONNECTION-RECONNECTTYPE" );
            dumpDec< sal_Int32 >( "id" );
            dumpDec< sal_uInt8 >( "credentials", "CONNECTION-CREDENTIALS" );
            if( nStrFlags & 0x0001 ) dumpString( "source-file" );
            if( nStrFlags & 0x0002 ) dumpString( "source-conn-file" );
            if( nStrFlags & 0x0004 ) dumpString( "description" );
            if( nStrFlags & 0x0008 ) dumpString( "name" );
            if( nStrFlags & 0x0010 ) dumpString( "sso-id" );
        }
        break;

        case BIFF12_ID_CONTROL:
            dumpDec< sal_Int32 >( "shape-id" );
            dumpString( "rel-id" );
            dumpString( "name" );
        break;

        case BIFF12_ID_CUSTOMFILTER:
        {
            sal_uInt8 nType = dumpDec< sal_uInt8 >( "data-type", "CUSTOMFILTER-DATATYPE" );
            dumpDec< sal_uInt8 >( "operator", "CUSTOMFILTER-OPERATOR" );
            switch( nType )
            {
                case 4:     dumpDec< double >( "value" );               break;
                case 6:     dumpUnused( 8 ); dumpString( "value" );     break;
                case 8:     dumpBoolean( "value" ); dumpUnused( 7 );    break;
                default:    dumpUnused( 8 );
            }
        }
        break;

        case BIFF12_ID_DATATABLE:
            dumpRange( "table-range" );
            dumpAddress( "ref1" );
            dumpAddress( "ref2" );
            dumpHex< sal_uInt8 >( "flags", "DATATABLE-FLAGS" );
        break;

        case BIFF12_ID_DATAVALIDATION:
            dumpHex< sal_uInt32 >( "flags", "DATAVALIDATION-FLAGS" );
            dumpRangeList();
            dumpString( "error-title" );
            dumpString( "error-message" );
            dumpString( "input-title" );
            dumpString( "input-message" );
            mxFmlaObj->dumpNameFormula( "formula1" );
            mxFmlaObj->dumpNameFormula( "formula2" );
        break;

        case BIFF12_ID_DATAVALIDATIONS:
            dumpHex< sal_uInt16 >( "flags", "DATAVALIDATIONS-FLAGS" );
            dumpDec< sal_Int32 >( "input-x" );
            dumpDec< sal_Int32 >( "input-y" );
            dumpUnused( 4 );
            dumpDec< sal_Int32 >( "count" );
        break;

        case BIFF12_ID_DDEITEMVALUES:
            dumpDec< sal_Int32 >( "rows" );
            dumpDec< sal_Int32 >( "columns" );
        break;

        case BIFF12_ID_DDEITEM_STRING:
            dumpString( "value" );
        break;

        case BIFF12_ID_DEFINEDNAME:
            dumpHex< sal_uInt32 >( "flags", "DEFINEDNAME-FLAGS" );
            dumpChar( "accelerator", RTL_TEXTENCODING_ISO_8859_1 );
            dumpDec< sal_Int32 >( "sheet-id", "DEFINEDNAME-SHEETID" );
            dumpString( "name" );
            mxFmlaObj->dumpNameFormula();
            dumpString( "comment" );
            if( mxStrm->getRemaining() >= 4 ) dumpString( "menu-text" );
            if( mxStrm->getRemaining() >= 4 ) dumpString( "description-text" );
            if( mxStrm->getRemaining() >= 4 ) dumpString( "help-text" );
            if( mxStrm->getRemaining() >= 4 ) dumpString( "statusbar-text" );
        break;

        case BIFF12_ID_DIMENSION:
            dumpRange( "used-range" );
        break;

        case BIFF12_ID_DISCRETEFILTER:
            dumpString( "value" );
        break;

        case BIFF12_ID_DISCRETEFILTERS:
            dumpBool< sal_Int32 >( "show-blank" );
            dumpDec< sal_Int32 >( "calendar-type", "DISCRETEFILTERS-CALTYPE" );
        break;

        case BIFF12_ID_DRAWING:
            dumpString( "rel-id" );
        break;

        case BIFF12_ID_DXF:
            dumpHex< sal_uInt32 >( "flags", "DXF-FLAGS" );
            for( sal_uInt16 nIndex = 0, nCount = dumpDec< sal_uInt16 >( "subrec-count" ); !mxStrm->isEof() && (nIndex < nCount); ++nIndex )
            {
                mxOut->startMultiItems();
                sal_Int64 nStartPos = mxStrm->tell();
                writeEmptyItem( "SUBREC" );
                sal_uInt16 nSubRecId = dumpDec< sal_uInt16 >( "id", "DXF-SUBREC" );
                sal_uInt16 nSubRecSize = dumpDec< sal_uInt16 >( "size" );
                sal_Int64 nEndPos = nStartPos + nSubRecSize;
                mxOut->endMultiItems();
                IndentGuard aIndGuard( mxOut );
                switch( nSubRecId )
                {
                    case 0:
                        dumpDec< sal_uInt8 >( "pattern", "FILLPATTERNS" );
                    break;
                    case 1: case 2: case 5:
                        dumpColor();
                    break;
                    case 3:
                        dumpGradientHead();
                    break;
                    case 4:
                        dumpDec< sal_uInt16 >( "index" );
                        dumpDec< double >( "stop-position" );
                        dumpColor( "stop-color" );
                    break;
                    case 6: case 7: case 8: case 9: case 10: case 11: case 12:
                        dumpColor( "color" );
                        dumpDec< sal_uInt16 >( "style", "BORDERSTYLES" );
                    break;
                    case 13: case 14:
                        dumpBoolean( "value" );
                    break;
                    case 15:
                        dumpDec< sal_uInt8 >( "alignment", "XF-HORALIGN" );
                    break;
                    case 16:
                        dumpDec< sal_uInt8 >( "alignment", "XF-VERALIGN" );
                    break;
                    case 17:
                        dumpDec< sal_uInt8 >( "rotation", "TEXTROTATION" );
                    break;
                    case 18:
                        dumpDec< sal_uInt16 >( "indent" );
                    break;
                    case 19:
                        dumpDec< sal_uInt8 >( "text-dir", "XF-TEXTDIRECTION" );
                    break;
                    case 20: case 21: case 22:
                        dumpBoolean( "value" );
                    break;
                    case 24:
                        dumpString( "name", false, false );
                    break;
                    case 25:
                        dumpDec< sal_uInt16 >( "weight", "FONT-WEIGHT" );
                    break;
                    case 26:
                        dumpDec< sal_uInt16 >( "underline", "FONT-UNDERLINE" );
                    break;
                    case 27:
                        dumpDec< sal_uInt16 >( "escapement", "FONT-ESCAPEMENT" );
                    break;
                    case 28: case 29: case 30: case 31: case 32: case 33:
                        dumpBoolean( "value" );
                    break;
                    case 34:
                        dumpDec< sal_uInt8 >( "charset", "CHARSET" );
                    break;
                    case 35:
                        dumpDec< sal_uInt8 >( "family", "FONT-FAMILY" );
                    break;
                    case 36:
                        dumpDec< sal_Int32 >( "height", "CONV-TWIP-TO-PT" );
                    break;
                    case 37:
                        dumpDec< sal_uInt8 >( "scheme", "FONT-SCHEME" );
                    break;
                    case 38:
                        dumpString( "numfmt", false, false );
                    break;
                    case 41:
                        dumpDec< sal_uInt16 >( "numfmt-id" );
                    break;
                    case 42:
                        dumpDec< sal_Int16 >( "relative-indent" );
                    break;
                    case 43: case 44:
                        dumpBoolean( "value" );
                    break;
                }
                dumpRemainingTo( nEndPos );
            }
        break;

        case BIFF12_ID_EXTCELL_BOOL:
            dumpColIndex();
            dumpBoolean();
        break;

        case BIFF12_ID_EXTCELL_DOUBLE:
            dumpColIndex();
            dumpDec< double >( "value" );
        break;

        case BIFF12_ID_EXTCELL_ERROR:
            dumpColIndex();
            dumpErrorCode();
        break;

        case BIFF12_ID_EXTCELL_STRING:
            dumpColIndex();
            dumpString( "value" );
        break;

        case BIFF12_ID_EXTERNALBOOK:
            switch( dumpDec< sal_uInt16 >( "type", "EXTERNALBOOK-TYPE" ) )
            {
                case 0:
                    dumpString( "rel-id" );
                    dumpDec< sal_Int32 >( "unused" );
                break;
                case 1:
                    dumpString( "dde-service" );
                    dumpString( "dde-topic" );
                break;
                case 2:
                    dumpString( "rel-id" );
                    dumpString( "prog-id" );
                break;
            }
        break;

        case BIFF12_ID_EXTERNALNAME:
            dumpString( "name" );
        break;

        case BIFF12_ID_EXTERNALNAMEFLAGS:
            dumpHex< sal_uInt16 >( "flags", "EXTERNALNAMEFLAGS-FLAGS" );
            dumpDec< sal_Int32 >( "sheet-id" );
            dumpBoolean( "is-dde-ole" );
        break;

        case BIFF12_ID_EXTERNALREF:
            dumpString( "rel-id" );
        break;

        case BIFF12_ID_EXTERNALSHEETS:
        {
            sal_Int32 nCount = dumpDec< sal_Int32 >( "ref-count" );
            TableGuard aTabGuard( mxOut, 13, 17, 24 );
            mxOut->resetItemIndex();
            for( sal_Int32 nRefId = 0; !mxStrm->isEof() && (nRefId < nCount); ++nRefId )
            {
                MultiItemsGuard aMultiGuard( mxOut );
                writeEmptyItem( "#ref" );
                dumpDec< sal_Int32 >( "extref-id" );
                dumpDec< sal_Int32 >( "first-sheet", "EXTERNALSHEETS-ID" );
                dumpDec< sal_Int32 >( "last-sheet", "EXTERNALSHEETS-ID" );
            }
        }
        break;

        case BIFF12_ID_EXTROW:
            dumpRowIndex();
        break;

        case BIFF12_ID_EXTSHEETDATA:
            dumpDec< sal_Int32 >( "sheet-id" );
            dumpHex< sal_uInt8 >( "flags", "EXTSHEETDATA-FLAGS" );
        break;

        case BIFF12_ID_EXTSHEETNAMES:
            mxOut->resetItemIndex();
            for( sal_Int32 nSheet = 0, nCount = dumpDec< sal_Int32 >( "sheet-count" ); !mxStrm->isEof() && (nSheet < nCount); ++nSheet )
                dumpString( "#sheet-name" );
        break;

        case BIFF12_ID_FILESHARING:
            dumpBool< sal_uInt16 >( "recommend-read-only" );
            dumpHex< sal_uInt16 >( "password-hash" );
            dumpString( "password-creator" );
        break;

        case BIFF12_ID_FILL:
            dumpDec< sal_Int32 >( "fill-pattern", "FILLPATTERNS" );
            dumpColor( "fg-color" );
            dumpColor( "bg-color" );
            dumpGradientHead();
            mxOut->resetItemIndex();
            for( sal_Int32 nStop = 0, nStopCount = dumpDec< sal_Int32 >( "stop-count" ); (nStop < nStopCount) && !mxStrm->isEof(); ++nStop )
            {
                writeEmptyItem( "#stop" );
                IndentGuard aIndGuard( mxOut );
                dumpColor( "stop-color" );
                dumpDec< double >( "stop-position" );
            }
        break;

        case BIFF12_ID_FILEVERSION:
            dumpGuid( "codename" );
            dumpString( "app-name" );
            dumpString( "last-edited" );
            dumpString( "lowest-edited" );
            dumpString( "build-version" );
        break;

        case BIFF12_ID_FILTERCOLUMN:
            dumpDec< sal_Int32 >( "column-index" );
            dumpHex< sal_uInt16 >( "flags", "FILTERCOLUMN-FLAGS" );
        break;

        case BIFF12_ID_FONT:
            dumpDec< sal_uInt16 >( "height", "CONV-TWIP-TO-PT" );
            dumpHex< sal_uInt16 >( "flags", "FONT-FLAGS" );
            dumpDec< sal_uInt16 >( "weight", "FONT-WEIGHT" );
            dumpDec< sal_uInt16 >( "escapement", "FONT-ESCAPEMENT" );
            dumpDec< sal_uInt8 >( "underline", "FONT-UNDERLINE" );
            dumpDec< sal_uInt8 >( "family", "FONT-FAMILY" );
            dumpDec< sal_uInt8 >( "charset", "CHARSET" );
            dumpUnused( 1 );
            dumpColor();
            dumpDec< sal_uInt8 >( "scheme", "FONT-SCHEME" );
            dumpString( "name" );
        break;

        case BIFF12_ID_FORMULA_BOOL:
            dumpCellHeader( true );
            dumpBoolean();
            dumpHex< sal_uInt16 >( "flags", "FORMULA-FLAGS" );
            mxFmlaObj->dumpCellFormula();
        break;

        case BIFF12_ID_FORMULA_DOUBLE:
            dumpCellHeader( true );
            dumpDec< double >( "value" );
            dumpHex< sal_uInt16 >( "flags", "FORMULA-FLAGS" );
            mxFmlaObj->dumpCellFormula();
        break;

        case BIFF12_ID_FORMULA_ERROR:
            dumpCellHeader( true );
            dumpErrorCode();
            dumpHex< sal_uInt16 >( "flags", "FORMULA-FLAGS" );
            mxFmlaObj->dumpCellFormula();
        break;

        case BIFF12_ID_FORMULA_STRING:
            dumpCellHeader( true );
            dumpString( "value" );
            dumpHex< sal_uInt16 >( "flags", "FORMULA-FLAGS" );
            mxFmlaObj->dumpCellFormula();
        break;

        case BIFF12_ID_FUNCTIONGROUP:
            dumpString( "name" );
        break;

        case BIFF12_ID_HEADERFOOTER:
            dumpHex< sal_uInt16 >( "flags", "HEADERFOOTER-FLAGS" );
            dumpString( "odd-header" );
            dumpString( "odd-footer" );
            dumpString( "even-header" );
            dumpString( "even-footer" );
            dumpString( "first-header" );
            dumpString( "first-footer" );
        break;

        case BIFF12_ID_HYPERLINK:
            dumpRange();
            dumpString( "rel-id" );
            dumpString( "location" );
            dumpString( "tooltip" );
            dumpString( "display" );
        break;

        case BIFF12_ID_INPUTCELLS:
            dumpAddress( "pos" );
            dumpUnused( 8 );
            dumpDec< sal_uInt16 >( "numfmt-id" );
            dumpString( "value" );
        break;

        case BIFF12_ID_LEGACYDRAWING:
            dumpString( "rel-id" );
        break;

        case BIFF12_ID_MERGECELL:
            dumpRange();
        break;

        case BIFF12_ID_MULTCELL_BLANK:
            dumpCellHeader( false );
        break;

        case BIFF12_ID_MULTCELL_BOOL:
            dumpCellHeader( false );
            dumpBoolean();
        break;

        case BIFF12_ID_MULTCELL_DOUBLE:
            dumpCellHeader( false );
            dumpDec< double >( "value" );
        break;

        case BIFF12_ID_MULTCELL_ERROR:
            dumpCellHeader( false );
            dumpErrorCode();
        break;

        case BIFF12_ID_MULTCELL_RK:
            dumpCellHeader( false );
            dumpRk( "value" );
        break;

        case BIFF12_ID_MULTCELL_RSTRING:
            dumpCellHeader( false );
            dumpString( "value", true );
        break;

        case BIFF12_ID_MULTCELL_SI:
            dumpCellHeader( false );
            dumpDec< sal_Int32 >( "string-id" );
        break;

        case BIFF12_ID_MULTCELL_STRING:
            dumpCellHeader( false );
            dumpString( "value" );
        break;

        case BIFF12_ID_NUMFMT:
            dumpDec< sal_uInt16 >( "numfmt-id" );
            dumpString( "format" );
        break;

        case BIFF12_ID_OLEOBJECT:
        {
            dumpDec< sal_Int32 >( "aspect", "OLEOBJECT-ASPECT" );
            dumpDec< sal_Int32 >( "update", "OLEOBJECT-UPDATE" );
            dumpDec< sal_Int32 >( "shape-id" );
            sal_uInt16 nFlags = dumpHex< sal_uInt16 >( "flags", "OLEOBJECT-FLAGS" );
            dumpString( "prog-id" );
            if( getFlag( nFlags, BIFF12_OLEOBJECT_LINKED ) )
                mxFmlaObj->dumpNameFormula( "link" );
            else
                dumpString( "rel-id" );
        }
        break;

        case BIFF12_ID_OLESIZE:
            dumpRange( "visible-range" );
        break;

        case BIFF12_ID_PAGEMARGINS:
            dumpDec< double >( "left-margin" );
            dumpDec< double >( "right-margin" );
            dumpDec< double >( "top-margin" );
            dumpDec< double >( "bottom-margin" );
            dumpDec< double >( "header-margin" );
            dumpDec< double >( "footer-margin" );
        break;

        case BIFF12_ID_PAGESETUP:
            dumpDec< sal_Int32 >( "paper-size", "PAGESETUP-PAPERSIZE" );
            dumpDec< sal_Int32 >( "scaling", "CONV-PERCENT" );
            dumpDec< sal_Int32 >( "horizontal-res", "PAGESETUP-DPI" );
            dumpDec< sal_Int32 >( "vertical-res", "PAGESETUP-DPI" );
            dumpDec< sal_Int32 >( "copies" );
            dumpDec< sal_Int32 >( "first-page" );
            dumpDec< sal_Int32 >( "scale-to-width", "PAGESETUP-SCALETOPAGES" );
            dumpDec< sal_Int32 >( "scale-to-height", "PAGESETUP-SCALETOPAGES" );
            dumpHex< sal_uInt16 >( "flags", "PAGESETUP-FLAGS" );
            dumpString( "printer-settings-rel-id" );
        break;

        case BIFF12_ID_PANE:
            dumpDec< double >( "x-split-pos" );
            dumpDec< double >( "y-split-pos" );
            dumpAddress( "second-top-left" );
            dumpDec< sal_Int32 >( "active-pane", "PANE-ID" );
            dumpHex< sal_uInt8 >( "flags", "PANE-FLAGS" );
        break;

        case BIFF12_ID_PCDEFINITION:
        {
            dumpDec< sal_uInt8 >( "refreshed-version" );
            dumpDec< sal_uInt8 >( "min-refresh-version" );
            dumpDec< sal_uInt8 >( "created-version" );
            dumpHex< sal_uInt8 >( "flags-1", "PCDEFINITION-FLAGS1" );
            dumpDec< sal_Int32 >( "missing-items-limit", "PCDEFINITION-MISSINGITEMS" );
            dumpDec< double >( "refreshed-date" );
            sal_uInt8 nFlags2 = dumpHex< sal_uInt8 >( "flags-2", "PCDEFINITION-FLAGS2" );
            dumpDec< sal_Int32 >( "record-count" );
            if( nFlags2 & 0x01 ) dumpString( "refreshed-by" );
            if( nFlags2 & 0x02 ) dumpString( "rel-id" );
        }
        break;

        case BIFF12_ID_PCDFIELD:
        {
            sal_uInt16 nFlags = dumpHex< sal_uInt16 >( "flags", "PCDFIELD-FLAGS" );
            dumpDec< sal_Int32 >( "numfmt-id" );
            dumpDec< sal_Int16 >( "sql-datatype" );
            dumpDec< sal_Int32 >( "hierarchy" );
            dumpDec< sal_Int32 >( "hierarchy-level" );
            sal_Int32 nMappingCount = dumpDec< sal_Int32 >( "property-mapping-count" );
            dumpString( "name" );
            if( nFlags & 0x0008 ) dumpString( "caption" );
            if( nFlags & 0x0100 ) mxFmlaObj->dumpNameFormula( "formula" );
            if( nMappingCount > 0 )
            {
                sal_Int32 nBytes = dumpDec< sal_Int32 >( "property-mapping-size" );
                dumpArray( "property-mapping-indexes", nBytes );
            }
            if( nFlags & 0x0200 ) dumpString( "property-name" );
        }
        break;

        case BIFF12_ID_PCDFIELDGROUP:
            dumpDec< sal_Int32 >( "parent-field" );
            dumpDec< sal_Int32 >( "base-field" );
        break;

        case BIFF12_ID_PCDFRANGEPR:
            dumpDec< sal_uInt8 >( "group-by", "PCDFRANGEPR-GROUPBY" );
            dumpHex< sal_uInt8 >( "flags", "PCDFRANGEPR-FLAGS" );
            dumpDec< double >( "start-value" );
            dumpDec< double >( "end-value" );
            dumpDec< double >( "interval" );
        break;

        case BIFF12_ID_PCDFSHAREDITEMS:
        {
            sal_uInt16 nFlags = dumpHex< sal_uInt16 >( "flags", "PCDFSHAREDITEMS-FLAGS" );
            dumpDec< sal_Int32 >( "count" );
            if( nFlags & 0x0100 ) dumpDec< double >( "min-value" );
            if( nFlags & 0x0100 ) dumpDec< double >( "max-value" );
        }
        break;

        case BIFF12_ID_PCDSHEETSOURCE:
        {
            sal_uInt8 nIsDefName = dumpBoolean( "is-def-name" );
            dumpBoolean( "is-builtin-def-name" );
            sal_uInt8 nFlags = dumpHex< sal_uInt8 >( "flags", "PCDWORKSHEETSOURCE-FLAGS" );
            if( nFlags & 0x02 ) dumpString( "sheet-name" );
            if( nFlags & 0x01 ) dumpString( "rel-id" );
            if( nIsDefName == 0 ) dumpRange(); else dumpString( "def-name" );
        }
        break;

        case BIFF12_ID_PCDSOURCE:
            dumpDec< sal_Int32 >( "source-type", "PCDSOURCE-TYPE" );
            dumpDec< sal_Int32 >( "connection-id" );
        break;

        case BIFF12_ID_PCITEM_ARRAY:
        {
            sal_uInt16 nType = dumpDec< sal_uInt16 >( "type", "PCITEM_ARRAY-TYPE" );
            sal_Int32 nCount = dumpDec< sal_Int32 >( "count" );
            mxOut->resetItemIndex();
            for( sal_Int32 nIdx = 0; nIdx < nCount; ++nIdx )
            {
                switch( nType )
                {
                    case 1:     dumpDec< double >( "#value" );  break;
                    case 2:     dumpString( "#value" );         break;
                    case 16:    dumpErrorCode( "#value" );      break;
                    case 32:    dumpPivotDateTime( "#value" );  break;
                    default:    nIdx = nCount;
                }
            }
        }
        break;

        case BIFF12_ID_PCITEM_BOOL:
            dumpBoolean( "value" );
        break;

        case BIFF12_ID_PCITEM_DATE:
            dumpPivotDateTime( "value" );
        break;

        case BIFF12_ID_PCITEM_DOUBLE:
            dumpDec< double >( "value" );
            // TODO: server formatting
        break;

        case BIFF12_ID_PCITEM_ERROR:
            dumpErrorCode( "value" );
            // TODO: server formatting
        break;

        case BIFF12_ID_PCITEM_INDEX:
            dumpDec< sal_Int32 >( "index" );
        break;

        case BIFF12_ID_PCITEM_MISSING:
            // TODO: server formatting
        break;


        case BIFF12_ID_PCITEM_STRING:
            dumpString( "value" );
            // TODO: server formatting
        break;

        case BIFF12_ID_PCITEMA_BOOL:
            dumpBoolean( "value" );
            // TODO: additional info
        break;

        case BIFF12_ID_PCITEMA_DATE:
            dumpPivotDateTime( "value" );
            // TODO: additional info
        break;

        case BIFF12_ID_PCITEMA_DOUBLE:
            dumpDec< double >( "value" );
            // TODO: additional info
        break;

        case BIFF12_ID_PCITEMA_ERROR:
            dumpErrorCode( "value" );
            // TODO: additional info
        break;

        case BIFF12_ID_PCITEMA_MISSING:
            // TODO: additional info
        break;

        case BIFF12_ID_PCITEMA_STRING:
            dumpString( "value" );
            // TODO: additional info
        break;

        case BIFF12_ID_PHONETICPR:
            dumpDec< sal_uInt16 >( "font-id", "FONTNAMES" );
            dumpDec< sal_Int32 >( "type", "PHONETICPR-TYPE" );
            dumpDec< sal_Int32 >( "alignment", "PHONETICPR-ALIGNMENT" );
        break;

        case BIFF12_ID_PICTURE:
            dumpString( "rel-id" );
        break;

        case BIFF12_ID_PIVOTAREA:
            dumpDec< sal_Int32 >( "field" );
            dumpDec< sal_uInt8 >( "type", "PIVOTAREA-TYPE" );
            dumpHex< sal_uInt8 >( "flags-1", "PIVOTAREA-FLAGS1" );
            dumpHex< sal_uInt16 >( "flags-2", "PIVOTAREA-FLAGS2" );
        break;

        case BIFF12_ID_PIVOTCACHE:
            dumpDec< sal_Int32 >( "cache-id" );
            dumpString( "rel-id" );
        break;

        case BIFF12_ID_PTCOLFIELDS:
            dumpDec< sal_Int32 >( "count" );
            mxOut->resetItemIndex();
            while( mxStrm->getRemaining() >= 4 )
                dumpDec< sal_Int32 >( "#field", "PT-FIELDINDEX" );
        break;

        case BIFF12_ID_PTDATAFIELD:
            dumpDec< sal_Int32 >( "field" );
            dumpDec< sal_Int32 >( "subtotal", "PTDATAFIELD-SUBTOTAL" );
            dumpDec< sal_Int32 >( "show-data-as", "PTDATAFIELD-SHOWDATAAS" );
            dumpDec< sal_Int32 >( "base-field" );
            dumpDec< sal_Int32 >( "base-item", "PTDATAFIELD-BASEITEM" );
            dumpDec< sal_Int32 >( "number-format" );
            if( dumpBool< sal_uInt8 >( "has-name" ) )
                dumpString( "name" );
        break;

        case BIFF12_ID_PTDEFINITION:
        {
            dumpDec< sal_uInt8 >( "created-version" );
            dumpHex< sal_uInt8 >( "flags-1", "PTDEFINITION-FLAGS1" );
            dumpHex< sal_uInt16 >( "flags-2", "PTDEFINITION-FLAGS2" );
            sal_uInt32 nFlags3 = dumpHex< sal_uInt32 >( "flags-3", "PTDEFINITION-FLAGS3" );
            sal_uInt32 nFlags4 = dumpHex< sal_uInt32 >( "flags-4", "PTDEFINITION-FLAGS4" );
            dumpDec< sal_uInt8 >( "datafield-axis", "PTDEFINITION-DATAFIELD-AXIS" );
            dumpDec< sal_uInt8 >( "page-wrap" );
            dumpDec< sal_uInt8 >( "refreshed-version" );
            dumpDec< sal_uInt8 >( "min-refresh-version" );
            dumpDec< sal_Int32 >( "datafield-position", "PTDEFINITION-DATAFIELD-POS" );
            dumpDec< sal_Int16 >( "autoformat-id" );
            dumpUnused( 2 );
            dumpDec< sal_Int32 >( "next-chart-id" );
            dumpDec< sal_Int32 >( "cache-id" );
            dumpString( "name" );
            if( nFlags3 & 0x00080000 ) dumpString( "data-caption" );
            if( nFlags3 & 0x00100000 ) dumpString( "grand-total-caption" );
            if( (nFlags4 & 0x00000040) == 0 ) dumpString( "error-caption" );
            if( (nFlags4 & 0x00000080) == 0 ) dumpString( "missing-caption" );
            if( nFlags3 & 0x00200000 ) dumpString( "page-field-style" );
            if( nFlags3 & 0x00400000 ) dumpString( "pivot-table-style" );
            if( nFlags3 & 0x00800000 ) dumpString( "vacated-style" );
            if( nFlags3 & 0x40000000 ) dumpString( "tag" );
            if( nFlags4 & 0x00000800 ) dumpString( "col-header-caption" );
            if( nFlags4 & 0x00000400 ) dumpString( "row-header-caption" );
        }
        break;

        case BIFF12_ID_PTFIELD:
            dumpHex< sal_uInt32 >( "flags-1", "PTFIELD-FLAGS1" );
            dumpDec< sal_Int32 >( "num-fmt" );
            dumpHex< sal_uInt32 >( "flags-2", "PTFIELD-FLAGS2" );
            dumpDec< sal_Int32 >( "autoshow-items" );
            dumpDec< sal_Int32 >( "autoshow-datafield-idx" );
        break;

        case BIFF12_ID_PTFILTER:
        {
            dumpDec< sal_Int32 >( "field" );
            dumpDec< sal_Int32 >( "member-prop-field" );
            dumpDec< sal_Int32 >( "type", "PTFILTER-TYPE" );
            dumpUnused( 4 );
            dumpDec< sal_Int32 >( "unique-id" );
            dumpDec< sal_Int32 >( "measure-data-field" );
            dumpDec< sal_Int32 >( "measure-data-hierarchy" );
            sal_uInt16 nFlags = dumpHex< sal_uInt16 >( "flags", "PTFILTER-FLAGS" );
            if( nFlags & 0x0001 ) dumpString( "name" );
            if( nFlags & 0x0002 ) dumpString( "description" );
            if( nFlags & 0x0004 ) dumpString( "str-value1" );
            if( nFlags & 0x0008 ) dumpString( "str-value2" );
        }
        break;

        case BIFF12_ID_PTFITEM:
        {
            dumpDec< sal_uInt8 >( "type", "PTFITEM-TYPE" );
            sal_uInt16 nFlags = dumpHex< sal_uInt16 >( "flags", "PTFITEM-FLAGS" );
            dumpDec< sal_Int32 >( "cache-idx" );
            if( nFlags & 0x0010 ) dumpString( "display-name" );
        }
        break;

        case BIFF12_ID_PTLOCATION:
            dumpRange( "location" );
            dumpDec< sal_Int32 >( "first-header-row" );
            dumpDec< sal_Int32 >( "first-data-row" );
            dumpDec< sal_Int32 >( "first-data-col" );
            dumpDec< sal_Int32 >( "page-row-count" );
            dumpDec< sal_Int32 >( "page-col-count" );
        break;

        case BIFF12_ID_PTPAGEFIELD:
        {
            dumpDec< sal_Int32 >( "field" );
            dumpDec< sal_Int32 >( "cache-item", "PTPAGEFIELD-ITEM" );
            dumpDec< sal_Int32 >( "olap-hierarchy" );
            sal_uInt8 nFlags = dumpHex< sal_uInt8 >( "flags", "PTPAGEFIELD-FLAGS" );
            if( nFlags & 0x01 ) dumpString( "unique-name" );
            if( nFlags & 0x02 ) dumpString( "olap-caption" );
        }
        break;

        case BIFF12_ID_PTREFERENCE:
            dumpDec< sal_Int32 >( "field", "PT-FIELDINDEX" );
            dumpDec< sal_Int32 >( "item-count" );
            dumpHex< sal_uInt16 >( "flags-1", "PTREFERENCE-FLAGS1" );
            dumpHex< sal_uInt8 >( "flags-2", "PTREFERENCE-FLAGS2" );
        break;

        case BIFF12_ID_PTROWFIELDS:
            dumpDec< sal_Int32 >( "count" );
            mxOut->resetItemIndex();
            while( mxStrm->getRemaining() >= 4 )
                dumpDec< sal_Int32 >( "#field", "PT-FIELDINDEX" );
        break;

        case BIFF12_ID_QUERYTABLE:
            dumpHex< sal_uInt32 >( "flags", "QUERYTABLE-FLAGS" );
            dumpDec< sal_uInt16 >( "autoformat-id" );
            dumpDec< sal_Int32 >( "connection-id" );
            dumpString( "defined-name" );
        break;
        
        case BIFF12_ID_ROW:
            dumpRowIndex();
            dumpDec< sal_Int32 >( "custom-xf-id" );
            dumpDec< sal_uInt16 >( "height", "CONV-TWIP-TO-PT" );
            dumpHex< sal_uInt16 >( "flags", "ROW-FLAGS1" );
            dumpHex< sal_uInt8 >( "flags", "ROW-FLAGS2" );
            mxOut->resetItemIndex();
            for( sal_Int32 nSpan = 0, nSpanCount = dumpDec< sal_Int32 >( "row-spans-count" ); !mxStrm->isEof() && (nSpan < nSpanCount); ++nSpan )
                dumpRowRange( "#row-spans" );
        break;

        case BIFF12_ID_ROWBREAKS:
            dumpDec< sal_Int32 >( "count" );
            dumpDec< sal_Int32 >( "manual-count" );
        break;

        case BIFF12_ID_SCENARIO:
            dumpDec< sal_uInt16 >( "cell-count" );
            // two longs instead of flag field
            dumpDec< sal_Int32 >( "locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "hidden", "BOOLEAN" );
            dumpString( "name" );
            dumpString( "comment" );
            dumpString( "user" );
        break;

        case BIFF12_ID_SCENARIOS:
            dumpDec< sal_uInt16 >( "selected" );
            dumpDec< sal_uInt16 >( "shown" );
            dumpRangeList( "result-cells" );
        break;

        case BIFF12_ID_SELECTION:
            dumpDec< sal_Int32 >( "pane", "PANE-ID" );
            dumpAddress( "active-cell" );
            dumpDec< sal_Int32 >( "active-cell-id" );
            dumpRangeList( "selection" );
        break;

        case BIFF12_ID_SHAREDFMLA:
            dumpRange( "formula-range" );
            mxFmlaObj->dumpCellFormula();
        break;

        case BIFF12_ID_SHEET:
            dumpDec< sal_Int32 >( "sheet-state", "SHEET-STATE" );
            dumpDec< sal_Int32 >( "sheet-id" );
            dumpString( "rel-id" );
            dumpString( "sheet-name" );
        break;

        case BIFF12_ID_SHEETFORMATPR:
            dumpDec< sal_Int32 >( "default-col-width", "CONV-COLWIDTH" );
            dumpDec< sal_uInt16 >( "base-col-width" );
            dumpDec< sal_uInt16 >( "default-row-height", "CONV-TWIP-TO-PT" );
            dumpHex< sal_uInt16 >( "flags", "SHEETFORMATPR-FLAGS" );
            dumpDec< sal_uInt8 >( "max-row-outline" );
            dumpDec< sal_uInt8 >( "max-col-outline" );
        break;

        case BIFF12_ID_SHEETPR:
            dumpHex< sal_uInt16 >( "flags1", "SHEETPR-FLAGS1" );
            dumpHex< sal_uInt8 >( "flags2", "SHEETPR-FLAGS2" );
            dumpColor( "tab-color" );
            dumpAddress( "window-anchor" );
            dumpString( "codename" );
        break;

        case BIFF12_ID_SHEETPROTECTION:
            dumpHex< sal_uInt16 >( "password-hash" );
            // no flags field for all these boolean flags?!?
            dumpDec< sal_Int32 >( "sheet-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "objects-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "scenarios-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "format-cells-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "format-columns-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "format-rows-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "insert-columns-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "insert-rows-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "insert-hyperlinks-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "delete-columns-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "delete-rows-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "select-locked-cells-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "sort-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "autofilter-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "pivot-tables-locked", "BOOLEAN" );
            dumpDec< sal_Int32 >( "select-unlocked-cells-locked", "BOOLEAN" );
        break;

        case BIFF12_ID_SHEETVIEW:
            dumpHex< sal_uInt16 >( "flags", "SHEETVIEW-FLAGS" );
            dumpDec< sal_Int32 >( "view-type", "SHEETVIEW-TYPE" );
            dumpAddress( "top-left" );
            dumpDec< sal_Int32 >( "gridcolor-id", "PALETTE-COLORS" );
            dumpDec< sal_uInt16 >( "zoom-scale", "CONV-PERCENT" );
            dumpDec< sal_uInt16 >( "zoom-scale-normal", "CONV-PERCENT" );
            dumpDec< sal_uInt16 >( "zoom-scale-sheet-layout", "CONV-PERCENT" );
            dumpDec< sal_uInt16 >( "zoom-scale-page-layout", "CONV-PERCENT" );
            dumpDec< sal_Int32 >( "workbookview-id" );
        break;

        case BIFF12_ID_SI:
            dumpString( "string", true );
        break;

        case BIFF12_ID_SST:
            dumpDec< sal_Int32 >( "string-cell-count" );
            dumpDec< sal_Int32 >( "sst-size" );
        break;

        case BIFF12_ID_TABLE:
            dumpRange();
            dumpDec< sal_Int32 >( "type", "TABLE-TYPE" );
            dumpDec< sal_Int32 >( "id" );
            dumpDec< sal_Int32 >( "header-rows" );
            dumpDec< sal_Int32 >( "totals-rows" );
            dumpHex< sal_uInt32 >( "flags", "TABLE-FLAGS" );
            dumpDec< sal_Int32 >( "headerrow-dxf-id" );
            dumpDec< sal_Int32 >( "data-dxf-id" );
            dumpDec< sal_Int32 >( "totalsrow-dxf-id" );
            dumpDec< sal_Int32 >( "table-border-dxf-id" );
            dumpDec< sal_Int32 >( "headerrow-border-dxf-id" );
            dumpDec< sal_Int32 >( "totalsrow-border-dxf-id" );
            dumpDec< sal_Int32 >( "connection-id" );
            dumpString( "name" );
            dumpString( "display-name" );
            dumpString( "comment" );
            dumpString( "headerrow-cell-style" );
            dumpString( "data-cell-style" );
            dumpString( "totalsrow-cell-style" );
        break;

        case BIFF12_ID_TABLEPART:
            dumpString( "rel-id" );
        break;

        case BIFF12_ID_TABLESTYLEINFO:
            dumpHex< sal_uInt16 >( "flags", "TABLESTYLEINFO-FLAGS" );
            dumpString( "style-name" );
        break;

        case BIFF12_ID_TOP10FILTER:
            dumpHex< sal_uInt8 >( "flags", "TOP10FILTER-FLAGS" );
            dumpDec< double >( "value" );
            dumpDec< double >( "cell-value" );
        break;

        case BIFF12_ID_VOLTYPEMAIN:
            dumpString( "first" );
        break;

        case BIFF12_ID_VOLTYPESTP:
            dumpString( "topic-value" );
        break;

        case BIFF12_ID_VOLTYPETR:
            dumpAddress( "ref" );
            dumpDec< sal_Int32 >( "sheet-id" );
        break;

        case BIFF12_ID_WEBPR:
        {
            dumpHex< sal_uInt32 >( "flags", "WEBPR-FLAGS" );
            sal_uInt8 nStrFlags = dumpHex< sal_uInt8 >( "string-flags", "WEBPR-STRINGFLAGS" );
            if( nStrFlags & 0x04 ) dumpString( "url" );
            if( nStrFlags & 0x01 ) dumpString( "post-method" );
            if( nStrFlags & 0x02 ) dumpString( "edit-page" );
        }
        break;
        
        case BIFF12_ID_WORKBOOKPR:
            dumpHex< sal_uInt32 >( "flags", "WORKBBOKPR-FLAGS" );
            dumpDec< sal_Int32 >( "default-theme-version" );
            dumpString( "codename" );
        break;

        case BIFF12_ID_WORKBOOKVIEW:
            dumpDec< sal_Int32 >( "x-window" );
            dumpDec< sal_Int32 >( "y-window" );
            dumpDec< sal_Int32 >( "win-width" );
            dumpDec< sal_Int32 >( "win-height" );
            dumpDec< sal_Int32 >( "tabbar-ratio" );
            dumpDec< sal_Int32 >( "first-sheet" );
            dumpDec< sal_Int32 >( "active-sheet" );
            dumpHex< sal_uInt8 >( "flags", "WORKBOOKVIEW-FLAGS" );
        break;

        case BIFF12_ID_XF:
            dumpDec< sal_uInt16 >( "parent-xf-id" );
            dumpDec< sal_uInt16 >( "numfmt-id" );
            dumpDec< sal_uInt16 >( "font-id", "FONTNAMES" );
            dumpDec< sal_uInt16 >( "fill-id" );
            dumpDec< sal_uInt16 >( "border-id" );
            dumpHex< sal_uInt32 >( "alignment", "XF-ALIGNMENT" );
            dumpHex< sal_uInt16 >( "used-flags", "XF-USEDFLAGS" );
        break;
    }
}