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 _IODETECT_HXX_ 25*b1cdbd2cSJim Jagielski #define _IODETECT_HXX_ 26*b1cdbd2cSJim Jagielski 27*b1cdbd2cSJim Jagielski #include <sfx2/docfilt.hxx> 28*b1cdbd2cSJim Jagielski #include <sfx2/docfile.hxx> 29*b1cdbd2cSJim Jagielski #include <sfx2/fcontnr.hxx> 30*b1cdbd2cSJim Jagielski #include <osl/endian.h> 31*b1cdbd2cSJim Jagielski #include <errhdl.hxx> // for ASSERT 32*b1cdbd2cSJim Jagielski #include <tools/string.hxx> 33*b1cdbd2cSJim Jagielski #include <swdllapi.h> 34*b1cdbd2cSJim Jagielski 35*b1cdbd2cSJim Jagielski #define FILTER_RTF "RTF" // RTF-Filter 36*b1cdbd2cSJim Jagielski #define sRtfWH "WH_RTF" 37*b1cdbd2cSJim Jagielski #define FILTER_TEXT "TEXT" // Text-Filter mit Default-CodeSet 38*b1cdbd2cSJim Jagielski #define FILTER_BAS "BAS" // StarBasic (identisch mit ANSI) 39*b1cdbd2cSJim Jagielski #define FILTER_WW8 "CWW8" // WinWord 97-Filter 40*b1cdbd2cSJim Jagielski #define FILTER_TEXT_DLG "TEXT_DLG" // text filter with encoding dialog 41*b1cdbd2cSJim Jagielski #define FILTER_XML "CXML" // XML filter 42*b1cdbd2cSJim Jagielski #define FILTER_XMLV "CXMLV" // XML filter 43*b1cdbd2cSJim Jagielski #define FILTER_XMLVW "CXMLVWEB" // XML filter 44*b1cdbd2cSJim Jagielski #define sHTML "HTML" 45*b1cdbd2cSJim Jagielski #define sWW1 "WW1" 46*b1cdbd2cSJim Jagielski #define sWW5 "WW6" 47*b1cdbd2cSJim Jagielski #define sWW6 "CWW6" 48*b1cdbd2cSJim Jagielski 49*b1cdbd2cSJim Jagielski #define sSWRITER "swriter" 50*b1cdbd2cSJim Jagielski #define sSWRITERWEB "swriter/web" 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski struct SwIoDetect 53*b1cdbd2cSJim Jagielski { 54*b1cdbd2cSJim Jagielski const sal_Char* pName; 55*b1cdbd2cSJim Jagielski sal_uInt16 nLen; 56*b1cdbd2cSJim Jagielski SwIoDetectSwIoDetect57*b1cdbd2cSJim Jagielski inline SwIoDetect( const sal_Char *pN, sal_uInt16 nL ) 58*b1cdbd2cSJim Jagielski : pName( pN ), nLen( nL ) 59*b1cdbd2cSJim Jagielski {} 60*b1cdbd2cSJim Jagielski IsFilterSwIoDetect61*b1cdbd2cSJim Jagielski inline int IsFilter( const String& rNm ) const 62*b1cdbd2cSJim Jagielski { 63*b1cdbd2cSJim Jagielski return pName && rNm.EqualsAscii( pName, 0, nLen ); 64*b1cdbd2cSJim Jagielski } 65*b1cdbd2cSJim Jagielski 66*b1cdbd2cSJim Jagielski const sal_Char* IsReader( const sal_Char* pHeader, sal_uLong nLen_, 67*b1cdbd2cSJim Jagielski const String &rFileName, const String& rUserData ) const; 68*b1cdbd2cSJim Jagielski }; 69*b1cdbd2cSJim Jagielski 70*b1cdbd2cSJim Jagielski enum ReaderWriterEnum { 71*b1cdbd2cSJim Jagielski READER_WRITER_RTF, 72*b1cdbd2cSJim Jagielski READER_WRITER_BAS, 73*b1cdbd2cSJim Jagielski READER_WRITER_WW6, 74*b1cdbd2cSJim Jagielski READER_WRITER_WW8, 75*b1cdbd2cSJim Jagielski READER_WRITER_RTF_WH, 76*b1cdbd2cSJim Jagielski READER_WRITER_HTML, 77*b1cdbd2cSJim Jagielski READER_WRITER_WW1, 78*b1cdbd2cSJim Jagielski READER_WRITER_WW5, 79*b1cdbd2cSJim Jagielski READER_WRITER_XML, 80*b1cdbd2cSJim Jagielski READER_WRITER_TEXT_DLG, 81*b1cdbd2cSJim Jagielski READER_WRITER_TEXT, 82*b1cdbd2cSJim Jagielski MAXFILTER 83*b1cdbd2cSJim Jagielski }; 84*b1cdbd2cSJim Jagielski 85*b1cdbd2cSJim Jagielski extern SwIoDetect aFilterDetect[]; 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski // Die folgende Klasse ist ein Wrappe fuer die Basic-I/O-Funktionen 88*b1cdbd2cSJim Jagielski // des Writer 3.0. Alles ist statisch. Alle u.a. Filternamen sind die 89*b1cdbd2cSJim Jagielski // Writer-internen Namen, d.h. die namen, die in INSTALL.INI vor dem 90*b1cdbd2cSJim Jagielski // Gleichheitszeichen stehen, z.b. SWG oder ASCII. 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski class SwIoSystem 93*b1cdbd2cSJim Jagielski { 94*b1cdbd2cSJim Jagielski public: 95*b1cdbd2cSJim Jagielski // suche ueber den internen FormatNamen den Filtereintrag 96*b1cdbd2cSJim Jagielski SW_DLLPUBLIC static const SfxFilter* GetFilterOfFormat( const String& rFormat, 97*b1cdbd2cSJim Jagielski const SfxFilterContainer* pCnt = 0 ); 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski // Feststellen des zu verwendenden Filters fuer die uebergebene 100*b1cdbd2cSJim Jagielski // Datei. Der Filtername wird zurueckgeliefert. Konnte kein Filter 101*b1cdbd2cSJim Jagielski // zurueckgeliefert werden, wird der Name des ASCII-Filters geliefert! 102*b1cdbd2cSJim Jagielski static const SfxFilter* GetFileFilter( const String& rFileName, 103*b1cdbd2cSJim Jagielski const String& rPrefFltName, 104*b1cdbd2cSJim Jagielski SfxMedium* pMedium = 0 ); 105*b1cdbd2cSJim Jagielski 106*b1cdbd2cSJim Jagielski // Feststellen ob das File in dem vorgegebenen Format vorliegt. 107*b1cdbd2cSJim Jagielski // Z.z werden nur unsere eigene Filter unterstuetzt!! 108*b1cdbd2cSJim Jagielski static sal_Bool IsFileFilter( SfxMedium& rMedium, const String& rFmtName, 109*b1cdbd2cSJim Jagielski const SfxFilter** ppFlt = 0 ); 110*b1cdbd2cSJim Jagielski 111*b1cdbd2cSJim Jagielski static sal_Bool IsValidStgFilter( SotStorage& , const SfxFilter& ); 112*b1cdbd2cSJim Jagielski static sal_Bool IsValidStgFilter( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& rStg, const SfxFilter& rFilter); 113*b1cdbd2cSJim Jagielski 114*b1cdbd2cSJim Jagielski static bool IsDetectableText( const sal_Char* pBuf, sal_uLong &rLen, 115*b1cdbd2cSJim Jagielski CharSet *pCharSet=0, bool *pSwap=0, LineEnd *pLineEnd=0, bool bEncodedFilter = false ); 116*b1cdbd2cSJim Jagielski // static bool IsDetectableW4W(const String& rFileName, const String& rUserData); 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski static const SfxFilter* GetTextFilter( const sal_Char* pBuf, sal_uLong nLen ); 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski static const String GetSubStorageName( const SfxFilter& rFltr ); 121*b1cdbd2cSJim Jagielski }; 122*b1cdbd2cSJim Jagielski 123*b1cdbd2cSJim Jagielski #endif 124