#pragma once #include "Constants.h" #include "Copts60.h" #include "DTTM.h" namespace ASCDocFileFormat { class DopBase: public IOperand { private: bool fFacingPages; bool fPMHMainDoc; Constants::fpc fpc; Constants::rncFtn rncFtn; short nFtn; bool fSplAllDone; bool fSplAllClean; bool fSplHideErrors; bool fGramHideErrors; bool fLabelDoc; bool fHyphCapitals; bool fAutoHyphen; bool fFormNoFields; bool fLinkStyles; bool fRevMarking; bool fExactCWords; bool fPagHidden; bool fPagResults; bool fLockAtn; bool fMirrorMargins; bool fWord97Compat; bool fProtEnabled; bool fDispFormFldSel; bool fRMView; bool fRMPrint; bool fLockVbaProj; bool fLockRev; bool fEmbedFonts; Copts60 copts60; short dxaTab; short cpgWebOpt; short dxaHotZ; short cConsecHypLim; DTTM dttmCreated; DTTM dttmRevised; DTTM dttmLastPrint; short nRevision; int tmEdited; int cWords; int cCh; short cPg; int cParas; Constants::rncEdn rncEdn; short nEdn; Constants::epc epc; bool fPrintFormData; bool fSaveFormData; bool fShadeFormData; bool fShadeMergeFields; bool fIncludeSubdocsInStats; int cLines; int cWordsWithSubdocs; int cChWithSubdocs; short cPgWithSubdocs; int cParasWithSubdocs; int cLinesWithSubdocs; int lKeyProtDoc; Constants::ViewingMode wvkoSaved; unsigned short pctWwdSaved; Constants::ZoomType zkSaved; bool iGutterPos; static const unsigned char SIZE_IN_BYTES = 84; mutable unsigned char bytes[SIZE_IN_BYTES]; void SetBytes() const { BitSet bitSet( SIZE_IN_BYTES ); unsigned int bitOffset = 0; bitSet.SetBit( this->fFacingPages, 0 ); bitSet.SetBit( this->fPMHMainDoc, 2 ); bitSet.SetBits( this->fpc, 5, 2 ); memset( this->bytes, 0, SIZE_IN_BYTES ); memcpy( this->bytes, bitSet.GetBytes(), bitSet.GetSize() ); } public: DopBase() { this->SetDefaults(); } void SetDefaults() { } virtual ~DopBase() { } void SetFacingPages( bool _fFacingPages ) { this->fFacingPages = _fFacingPages; } void SetMailMergeMainDocument( bool _fPMHMainDoc ) { this->fPMHMainDoc = _fPMHMainDoc; } void SetFootnotesPlace( Constants::fpc _fpc ) { this->fpc = _fpc; } void SetFootnotesNumbering( Constants::rncFtn _rncFtn ) { this->rncFtn = _rncFtn; } void SetFootnotesStartingNumber( short _nFtn ) { this->nFtn = _nFtn; } void SetSpellCheckingDone( bool _fSplAllDone ) { this->fSplAllDone = _fSplAllDone; } void SetSpellingCorrectly( bool _fSplAllClean ) { this->fSplAllClean = _fSplAllClean; } void SetSpellingHideError( bool _fSplHideErrors ) { this->fSplHideErrors = _fSplHideErrors; } void SetGrammarHideError( bool _fGramHideErrors ) { this->fGramHideErrors = _fGramHideErrors; } void SetMailMergeLabelsDocument( bool _fLabelDoc ) { this->fLabelDoc = _fLabelDoc; } void SetCapitalLettersHyphenated( bool _fHyphCapitals ) { this->fHyphCapitals = _fHyphCapitals; } void SetAutoHyphen( bool _fAutoHyphen ) { this->fAutoHyphen = _fAutoHyphen; } void SetNoEditableRegions( bool _fFormNoFields ) { this->fFormNoFields = _fFormNoFields; } void SetLinkStyles( bool _fLinkStyles ) { this->fLinkStyles = _fLinkStyles; } void SetRevisionMarking( bool _fRevMarking ) { this->fRevMarking = _fRevMarking; } void SetExactCWords( bool _fExactCWords ) { this->fExactCWords = _fExactCWords; } void SetPagHidden( bool _fPagHidden ) { this->fPagHidden = _fPagHidden; } void SetPagResults( bool _fPagResults ) { this->fPagResults = _fPagResults; } void SetLockComments( bool _fLockAtn ) { this->fLockAtn = _fLockAtn; } void SetMirrorMargins( bool _fMirrorMargins ) { this->fMirrorMargins = _fMirrorMargins; } void SetWord97CompatibilityMode( bool _fWord97Compat ) { this->fWord97Compat = _fWord97Compat; } void SetProtectionEnabled( bool _fProtEnabled ) { this->fProtEnabled = _fProtEnabled; } void SetDisplayFormFieldSelection( bool _fDispFormFldSel ) { this->fDispFormFldSel = _fDispFormFldSel; } void SetShowAnyRevisionMarkup( bool _fRMView ) { this->fRMView = _fRMView; } void SetPrintAnyRevisionMarkup( bool _fRMPrint ) { this->fRMPrint = _fRMPrint; } void SetLockVBAProject( bool _fLockVbaProj ) { this->fLockVbaProj = _fLockVbaProj; } void SetLockRevisions( bool _fLockRev ) { this->fLockRev = _fLockRev; } void SetTrueTypeFontsEmbedded( bool _fEmbedFonts ) { this->fEmbedFonts = _fEmbedFonts; } void SetCompatibilityOptions( Copts60 _copts60 ) { this->copts60 = _copts60; } void SetTheDefaultTabStopIntervalInTwips( short _dxaTab ) { this->dxaTab = _dxaTab; } void SetHTMLSavingCodePage( short _cpgWebOpt ) { this->cpgWebOpt = _cpgWebOpt; } void SetMaximumAmountOfWhiteSpaceInTwips( short _dxaHotZ ) { this->dxaHotZ = _dxaHotZ; } void SetConsecutiveHyphenationLimit( short _cConsecHypLim ) { this->cConsecHypLim = _cConsecHypLim; } void SetDocumentCreationDateAndTime( DTTM _dttmCreated ) { this->dttmCreated = _dttmCreated; } void SetDocumentLastSaveDateAndTime( DTTM _dttmRevised ) { this->dttmRevised = _dttmRevised; } void SetDocumentLastPrintDateAndTime( DTTM _dttmLastPrint ) { this->dttmLastPrint = _dttmLastPrint; } void SetRevisionNumber( short _nRevision ) { this->nRevision = _nRevision; } void SetEditingNumber( int _tmEdited ) { this->tmEdited = _tmEdited; } void SetCountOfWords( int _cWords ) { this->cWords = _cWords; } void SetCountOfCharacters( int _cCh ) { this->cCh = _cCh; } void SetCountOfPages( short _cPg ) { this->cPg = _cPg; } void SetCountOfParagraphs( int _cParas ) { this->cParas = _cParas; } void SetEndnoteNumbering( Constants::rncEdn _rncEdn ) { this->rncEdn = _rncEdn; } void SetEndnotesStartingNumber( short _nEdn ) { this->nEdn = _nEdn; } void SetEndnotesPlace( Constants::epc _epc ) { this->epc = _epc; } void SetPrintFormData( bool _fPrintFormData ) { this->fPrintFormData = _fPrintFormData; } void SetSaveFormData( bool _fSaveFormData ) { this->fSaveFormData = _fSaveFormData; } void SetShadeFormData( bool _fShadeFormData ) { this->fShadeFormData = _fShadeFormData; } void SetShadeMergeFields( bool _fShadeMergeFields ) { this->fShadeMergeFields = _fShadeMergeFields; } void SetIncludeSubdocsInStats( bool _fIncludeSubdocsInStats ) { this->fIncludeSubdocsInStats = _fIncludeSubdocsInStats; } void SetCountOfLines( int _cLines ) { this->cLines = _cLines; } void SetWordsWithSubdocs( int _cWordsWithSubdocs ) { this->cWordsWithSubdocs = _cWordsWithSubdocs; } void SetCharactersWithSubdocs( int _cChWithSubdocs ) { this->cChWithSubdocs = _cChWithSubdocs; } void SetPagesWithSubdocs( short _cPgWithSubdocs ) { this->cPgWithSubdocs = _cPgWithSubdocs; } void SetParagraphsWithSubdocs( int _cParasWithSubdocs ) { this->cParasWithSubdocs = _cParasWithSubdocs; } void SetLinesWithSubdocs( int _cLinesWithSubdocs ) { this->cLinesWithSubdocs = _cLinesWithSubdocs; } void SetKeyProtectionDocument( int _lKeyProtDoc ) { this->lKeyProtDoc = _lKeyProtDoc; } void SetSavedDocumentViewingMode( Constants::ViewingMode _wvkoSaved ) { this->wvkoSaved = _wvkoSaved; } void SetSavedDocumentZoom( unsigned short _pctWwdSaved ) { this->pctWwdSaved = _pctWwdSaved; } void SetSavedDocumentZoomType( Constants::ZoomType _zkSaved ) { this->zkSaved = _zkSaved; } void SetGutterTopPosition( bool _iGutterPos ) { this->iGutterPos = _iGutterPos; } virtual operator unsigned char*() const { this->SetBytes(); return (unsigned char*)this->bytes; } virtual operator const unsigned char*() const { this->SetBytes(); return (const unsigned char*)this->bytes; } virtual unsigned int Size() const { return sizeof(this->bytes); } }; }