xref: /aoo4110/main/sw/inc/iodetect.hxx (revision b1cdbd2c)
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