1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski 24*b1cdbd2cSJim Jagielski #ifndef _PROPREAD_HXX_ 25*b1cdbd2cSJim Jagielski #define _PROPREAD_HXX_ 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include <tools/solar.h> 28*b1cdbd2cSJim Jagielski #include <sot/storage.hxx> 29*b1cdbd2cSJim Jagielski #include <tools/gen.hxx> 30*b1cdbd2cSJim Jagielski #include <tools/list.hxx> 31*b1cdbd2cSJim Jagielski #include <tools/stream.hxx> 32*b1cdbd2cSJim Jagielski #include <tools/datetime.hxx> 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski #include <tools/string.hxx> 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski // SummaryInformation 37*b1cdbd2cSJim Jagielski #define PID_TITLE 0x02 38*b1cdbd2cSJim Jagielski #define PID_SUBJECT 0x03 39*b1cdbd2cSJim Jagielski #define PID_AUTHOR 0x04 40*b1cdbd2cSJim Jagielski #define PID_KEYWORDS 0x05 41*b1cdbd2cSJim Jagielski #define PID_COMMENTS 0x06 42*b1cdbd2cSJim Jagielski #define PID_TEMPLATE 0x07 43*b1cdbd2cSJim Jagielski #define PID_LASTAUTHOR 0x08 44*b1cdbd2cSJim Jagielski #define PID_REVNUMBER 0x09 45*b1cdbd2cSJim Jagielski #define PID_EDITTIME 0x0a 46*b1cdbd2cSJim Jagielski #define PID_LASTPRINTED_DTM 0x0b 47*b1cdbd2cSJim Jagielski #define PID_CREATE_DTM 0x0c 48*b1cdbd2cSJim Jagielski #define PID_LASTSAVED_DTM 0x0d 49*b1cdbd2cSJim Jagielski 50*b1cdbd2cSJim Jagielski // DocumentSummaryInformation 51*b1cdbd2cSJim Jagielski #define PID_CATEGORY 0x02 52*b1cdbd2cSJim Jagielski #define PID_PRESFORMAT 0x03 53*b1cdbd2cSJim Jagielski #define PID_BYTECOUNT 0x04 54*b1cdbd2cSJim Jagielski #define PID_LINECOUNT 0x05 55*b1cdbd2cSJim Jagielski #define PID_PARACOUNT 0x06 56*b1cdbd2cSJim Jagielski #define PID_SLIDECOUNT 0x07 57*b1cdbd2cSJim Jagielski #define PID_NOTECOUNT 0x08 58*b1cdbd2cSJim Jagielski #define PID_HIDDENCOUNT 0x09 59*b1cdbd2cSJim Jagielski #define PID_MMCLIPCOUNT 0x0a 60*b1cdbd2cSJim Jagielski #define PID_SCALE 0x0b 61*b1cdbd2cSJim Jagielski #define PID_HEADINGPAIR 0x0c 62*b1cdbd2cSJim Jagielski #define PID_DOCPARTS 0x0d 63*b1cdbd2cSJim Jagielski #define PID_MANAGER 0x0e 64*b1cdbd2cSJim Jagielski #define PID_COMPANY 0x0f 65*b1cdbd2cSJim Jagielski #define PID_LINKSDIRTY 0x10 66*b1cdbd2cSJim Jagielski 67*b1cdbd2cSJim Jagielski #define VT_EMPTY 0 68*b1cdbd2cSJim Jagielski #define VT_NULL 1 69*b1cdbd2cSJim Jagielski #define VT_I2 2 70*b1cdbd2cSJim Jagielski #define VT_I4 3 71*b1cdbd2cSJim Jagielski #define VT_R4 4 72*b1cdbd2cSJim Jagielski #define VT_R8 5 73*b1cdbd2cSJim Jagielski #define VT_CY 6 74*b1cdbd2cSJim Jagielski #define VT_DATE 7 75*b1cdbd2cSJim Jagielski #define VT_BSTR 8 76*b1cdbd2cSJim Jagielski #define VT_UI4 9 77*b1cdbd2cSJim Jagielski #define VT_ERROR 10 78*b1cdbd2cSJim Jagielski #define VT_BOOL 11 79*b1cdbd2cSJim Jagielski #define VT_VARIANT 12 80*b1cdbd2cSJim Jagielski #define VT_DECIMAL 14 81*b1cdbd2cSJim Jagielski #define VT_I1 16 82*b1cdbd2cSJim Jagielski #define VT_UI1 17 83*b1cdbd2cSJim Jagielski #define VT_UI2 18 84*b1cdbd2cSJim Jagielski #define VT_I8 20 85*b1cdbd2cSJim Jagielski #define VT_UI8 21 86*b1cdbd2cSJim Jagielski #define VT_INT 22 87*b1cdbd2cSJim Jagielski #define VT_UINT 23 88*b1cdbd2cSJim Jagielski #define VT_LPSTR 30 89*b1cdbd2cSJim Jagielski #define VT_LPWSTR 31 90*b1cdbd2cSJim Jagielski #define VT_FILETIME 64 91*b1cdbd2cSJim Jagielski #define VT_BLOB 65 92*b1cdbd2cSJim Jagielski #define VT_STREAM 66 93*b1cdbd2cSJim Jagielski #define VT_STORAGE 67 94*b1cdbd2cSJim Jagielski #define VT_STREAMED_OBJECT 68 95*b1cdbd2cSJim Jagielski #define VT_STORED_OBJECT 69 96*b1cdbd2cSJim Jagielski #define VT_BLOB_OBJECT 70 97*b1cdbd2cSJim Jagielski #define VT_CF 71 98*b1cdbd2cSJim Jagielski #define VT_CLSID 72 99*b1cdbd2cSJim Jagielski #define VT_VECTOR 0x1000 100*b1cdbd2cSJim Jagielski #define VT_ARRAY 0x2000 101*b1cdbd2cSJim Jagielski #define VT_BYREF 0x4000 102*b1cdbd2cSJim Jagielski #define VT_TYPEMASK 0xFFF 103*b1cdbd2cSJim Jagielski 104*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------ 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski class PropItem : public SvMemoryStream 107*b1cdbd2cSJim Jagielski { 108*b1cdbd2cSJim Jagielski sal_uInt16 mnTextEnc; 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski public : PropItem()111*b1cdbd2cSJim Jagielski PropItem(){}; 112*b1cdbd2cSJim Jagielski void Clear(); 113*b1cdbd2cSJim Jagielski SetTextEncoding(sal_uInt16 nTextEnc)114*b1cdbd2cSJim Jagielski void SetTextEncoding( sal_uInt16 nTextEnc ){ mnTextEnc = nTextEnc; }; 115*b1cdbd2cSJim Jagielski sal_Bool Read( String& rString, sal_uInt32 nType = VT_EMPTY, sal_Bool bDwordAlign = sal_True ); 116*b1cdbd2cSJim Jagielski PropItem& operator=( PropItem& rPropItem ); 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski using SvStream::Read; 119*b1cdbd2cSJim Jagielski }; 120*b1cdbd2cSJim Jagielski 121*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------ 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski class Dictionary : protected List 124*b1cdbd2cSJim Jagielski { 125*b1cdbd2cSJim Jagielski friend class Section; 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski void AddProperty( sal_uInt32 nId, const String& rString ); 128*b1cdbd2cSJim Jagielski 129*b1cdbd2cSJim Jagielski public : Dictionary()130*b1cdbd2cSJim Jagielski Dictionary(){}; 131*b1cdbd2cSJim Jagielski ~Dictionary(); 132*b1cdbd2cSJim Jagielski Dictionary& operator=( Dictionary& rDictionary ); 133*b1cdbd2cSJim Jagielski sal_uInt32 GetProperty( const String& rPropName ); 134*b1cdbd2cSJim Jagielski }; 135*b1cdbd2cSJim Jagielski 136*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------ 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski class Section : private List 139*b1cdbd2cSJim Jagielski { 140*b1cdbd2cSJim Jagielski sal_uInt16 mnTextEnc; 141*b1cdbd2cSJim Jagielski 142*b1cdbd2cSJim Jagielski protected: 143*b1cdbd2cSJim Jagielski 144*b1cdbd2cSJim Jagielski sal_uInt8 aFMTID[ 16 ]; 145*b1cdbd2cSJim Jagielski 146*b1cdbd2cSJim Jagielski void AddProperty( sal_uInt32 nId, const sal_uInt8* pBuf, sal_uInt32 nBufSize ); 147*b1cdbd2cSJim Jagielski 148*b1cdbd2cSJim Jagielski public: 149*b1cdbd2cSJim Jagielski Section( const sal_uInt8* pFMTID ); 150*b1cdbd2cSJim Jagielski Section( Section& rSection ); 151*b1cdbd2cSJim Jagielski ~Section(); 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski Section& operator=( Section& rSection ); 154*b1cdbd2cSJim Jagielski sal_Bool GetProperty( sal_uInt32 nId, PropItem& rPropItem ); 155*b1cdbd2cSJim Jagielski sal_Bool GetDictionary( Dictionary& rDict ); GetFMTID() const156*b1cdbd2cSJim Jagielski const sal_uInt8* GetFMTID() const { return aFMTID; }; 157*b1cdbd2cSJim Jagielski void Read( SvStorageStream* pStrm ); 158*b1cdbd2cSJim Jagielski }; 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski // ------------------------------------------------------------------------ 161*b1cdbd2cSJim Jagielski 162*b1cdbd2cSJim Jagielski class PropRead : private List 163*b1cdbd2cSJim Jagielski { 164*b1cdbd2cSJim Jagielski sal_Bool mbStatus; 165*b1cdbd2cSJim Jagielski SvStorageStreamRef mpSvStream; 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski sal_uInt16 mnByteOrder; 168*b1cdbd2cSJim Jagielski sal_uInt16 mnFormat; 169*b1cdbd2cSJim Jagielski sal_uInt16 mnVersionLo; 170*b1cdbd2cSJim Jagielski sal_uInt16 mnVersionHi; 171*b1cdbd2cSJim Jagielski sal_uInt8 mApplicationCLSID[ 16 ]; 172*b1cdbd2cSJim Jagielski 173*b1cdbd2cSJim Jagielski void AddSection( Section& rSection ); 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielski public: 176*b1cdbd2cSJim Jagielski PropRead( SvStorage& rSvStorage, const String& rName ); 177*b1cdbd2cSJim Jagielski ~PropRead(); 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski PropRead& operator=( PropRead& rPropRead ); 180*b1cdbd2cSJim Jagielski const Section* GetSection( const sal_uInt8* pFMTID ); IsValid() const181*b1cdbd2cSJim Jagielski sal_Bool IsValid() const { return mbStatus; }; 182*b1cdbd2cSJim Jagielski void Read(); 183*b1cdbd2cSJim Jagielski }; 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski 186*b1cdbd2cSJim Jagielski #endif 187*b1cdbd2cSJim Jagielski 188