ooofilt.hxx (8cc42d09) ooofilt.hxx (fff73a02)
1/**************************************************************
1/**************************************************************
2 *
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
19 *
20 *************************************************************/
21
22
23
24#include "internal/types.hxx"
25
26//+-------------------------------------------------------------------------
27//
20 *************************************************************/
21
22
23
24#include "internal/types.hxx"
25
26//+-------------------------------------------------------------------------
27//
28// Contents: OpenOffice.org filter declarations
28// Contents: OpenOffice filter declarations
29//
30// Platform: Windows 2000, Windows XP
31//
32//--------------------------------------------------------------------------
33
34#pragma once
35
36//+-------------------------------------------------------------------------

--- 13 unchanged lines hidden (view full) ---

50
51long g_lInstances = 0; // Global count of COooFilter and COooFilterCF instances
52GUID const guidStorage = PSGUID_STORAGE; // GUID for storage property set
53
54//C-------------------------------------------------------------------------
55//
56// Class: COooFilter
57//
29//
30// Platform: Windows 2000, Windows XP
31//
32//--------------------------------------------------------------------------
33
34#pragma once
35
36//+-------------------------------------------------------------------------

--- 13 unchanged lines hidden (view full) ---

50
51long g_lInstances = 0; // Global count of COooFilter and COooFilterCF instances
52GUID const guidStorage = PSGUID_STORAGE; // GUID for storage property set
53
54//C-------------------------------------------------------------------------
55//
56// Class: COooFilter
57//
58// Purpose: Implements interfaces of OpenOffice.org filter
58// Purpose: Implements interfaces of OpenOffice filter
59//
60//--------------------------------------------------------------------------
61
59//
60//--------------------------------------------------------------------------
61
62// OooFilter Class ID
62// OooFilter Class ID
63// {7BC0E710-5703-45be-A29D-5D46D8B39262}
64GUID const CLSID_COooFilter =
65{
63// {7BC0E710-5703-45be-A29D-5D46D8B39262}
64GUID const CLSID_COooFilter =
65{
66 0x7bc0e710,
67 0x5703,
68 0x45be,
69 { 0xa2, 0x9d, 0x5d, 0x46, 0xd8, 0xb3, 0x92, 0x62 }
66 0x7bc0e710,
67 0x5703,
68 0x45be,
69 { 0xa2, 0x9d, 0x5d, 0x46, 0xd8, 0xb3, 0x92, 0x62 }
70};
71
70};
71
72// OpenOffice.org Persistent Handler Class ID
72// OpenOffice Persistent Handler Class ID
73// {7BC0E713-5703-45be-A29D-5D46D8B39262}
73// {7BC0E713-5703-45be-A29D-5D46D8B39262}
74const CLSID CLSID_PERSISTENT_HANDLER =
74const CLSID CLSID_PERSISTENT_HANDLER =
75{0x7bc0e713, 0x5703, 0x45be, {0xa2, 0x9d, 0x5d, 0x46, 0xd8, 0xb3, 0x92, 0x62}};
76
75{0x7bc0e713, 0x5703, 0x45be, {0xa2, 0x9d, 0x5d, 0x46, 0xd8, 0xb3, 0x92, 0x62}};
76
77// OpenOffice.org Persistent Handler Addin Registered Class ID
77// OpenOffice Persistent Handler Addin Registered Class ID
78// {89BCB740-6119-101A-BCB7-00DD010655AF}
78// {89BCB740-6119-101A-BCB7-00DD010655AF}
79const CLSID CLSID_PERSISTENT_HANDLER_ADDIN =
79const CLSID CLSID_PERSISTENT_HANDLER_ADDIN =
80{0x89bcb740, 0x6119, 0x101a, {0xbc, 0xb7, 0x00, 0xdd, 0x01, 0x06, 0x55, 0xaf}};
81
80{0x89bcb740, 0x6119, 0x101a, {0xbc, 0xb7, 0x00, 0xdd, 0x01, 0x06, 0x55, 0xaf}};
81
82// OpenOffice.org Filter Handler Class ID
82// OpenOffice Filter Handler Class ID
83// {7BC0E710-5703-45be-A29D-5D46D8B39262}
83// {7BC0E710-5703-45be-A29D-5D46D8B39262}
84const CLSID CLSID_FILTER_HANDLER =
84const CLSID CLSID_FILTER_HANDLER =
85{0x7bc0e710, 0x5703, 0x45be, {0xa2, 0x9d, 0x5d, 0x46, 0xd8, 0xb3, 0x92, 0x62}};
86
87enum FilterState
88{
85{0x7bc0e710, 0x5703, 0x45be, {0xa2, 0x9d, 0x5d, 0x46, 0xd8, 0xb3, 0x92, 0x62}};
86
87enum FilterState
88{
89 FilteringContent, // Filtering the content property
90 FilteringProperty // Filtering the pseudo property
89 FilteringContent, // Filtering the content property
90 FilteringProperty // Filtering the pseudo property
91};
92class COooFilter : public IFilter, public IPersistFile, public IPersistStream
93{
94public:
91};
92class COooFilter : public IFilter, public IPersistFile, public IPersistStream
93{
94public:
95 // From IUnknown
96 virtual SCODE STDMETHODCALLTYPE QueryInterface(
97 REFIID riid,
98 void ** ppvObject);
99 virtual ULONG STDMETHODCALLTYPE AddRef();
100 virtual ULONG STDMETHODCALLTYPE Release();
95 // From IUnknown
96 virtual SCODE STDMETHODCALLTYPE QueryInterface(
97 REFIID riid,
98 void ** ppvObject);
99 virtual ULONG STDMETHODCALLTYPE AddRef();
100 virtual ULONG STDMETHODCALLTYPE Release();
101
101
102 // From IFilter
103 virtual SCODE STDMETHODCALLTYPE Init(
104 ULONG grfFlags,
105 ULONG cAttributes,
106 FULLPROPSPEC const * aAttributes,
107 ULONG * pFlags);
108 virtual SCODE STDMETHODCALLTYPE GetChunk(
109 STAT_CHUNK * pStat);
110 virtual SCODE STDMETHODCALLTYPE GetText(
111 ULONG * pcwcBuffer,
112 WCHAR * awcBuffer);
102 // From IFilter
103 virtual SCODE STDMETHODCALLTYPE Init(
104 ULONG grfFlags,
105 ULONG cAttributes,
106 FULLPROPSPEC const * aAttributes,
107 ULONG * pFlags);
108 virtual SCODE STDMETHODCALLTYPE GetChunk(
109 STAT_CHUNK * pStat);
110 virtual SCODE STDMETHODCALLTYPE GetText(
111 ULONG * pcwcBuffer,
112 WCHAR * awcBuffer);
113
113
114 virtual SCODE STDMETHODCALLTYPE GetValue(
115 PROPVARIANT ** ppPropValue);
114 virtual SCODE STDMETHODCALLTYPE GetValue(
115 PROPVARIANT ** ppPropValue);
116
116
117 virtual SCODE STDMETHODCALLTYPE BindRegion(
118 FILTERREGION origPos,
119 REFIID riid,
120 void ** ppunk);
117 virtual SCODE STDMETHODCALLTYPE BindRegion(
118 FILTERREGION origPos,
119 REFIID riid,
120 void ** ppunk);
121
121
122 // From IPersistFile
123 virtual SCODE STDMETHODCALLTYPE GetClassID(
124 CLSID * pClassID);
125 virtual SCODE STDMETHODCALLTYPE IsDirty();
126 virtual SCODE STDMETHODCALLTYPE Load(
127 LPCWSTR pszFileName,
128 DWORD dwMode);
129 virtual SCODE STDMETHODCALLTYPE Save(
130 LPCWSTR pszFileName,
131 BOOL fRemember);
122 // From IPersistFile
123 virtual SCODE STDMETHODCALLTYPE GetClassID(
124 CLSID * pClassID);
125 virtual SCODE STDMETHODCALLTYPE IsDirty();
126 virtual SCODE STDMETHODCALLTYPE Load(
127 LPCWSTR pszFileName,
128 DWORD dwMode);
129 virtual SCODE STDMETHODCALLTYPE Save(
130 LPCWSTR pszFileName,
131 BOOL fRemember);
132
132
133 virtual SCODE STDMETHODCALLTYPE SaveCompleted(
134 LPCWSTR pszFileName);
133 virtual SCODE STDMETHODCALLTYPE SaveCompleted(
134 LPCWSTR pszFileName);
135
135
136 virtual SCODE STDMETHODCALLTYPE GetCurFile(
137 LPWSTR * ppszFileName);
136 virtual SCODE STDMETHODCALLTYPE GetCurFile(
137 LPWSTR * ppszFileName);
138
139 // From IPersistStream
140 virtual SCODE STDMETHODCALLTYPE Load(
141 IStream *pStm);
142
143 virtual SCODE STDMETHODCALLTYPE Save(
144 IStream *pStm,
145 BOOL fClearDirty);
146
147 virtual SCODE STDMETHODCALLTYPE GetSizeMax(
148 ULARGE_INTEGER *pcbSize);
149
150
151private:
138
139 // From IPersistStream
140 virtual SCODE STDMETHODCALLTYPE Load(
141 IStream *pStm);
142
143 virtual SCODE STDMETHODCALLTYPE Save(
144 IStream *pStm,
145 BOOL fClearDirty);
146
147 virtual SCODE STDMETHODCALLTYPE GetSizeMax(
148 ULARGE_INTEGER *pcbSize);
149
150
151private:
152 friend class COooFilterCF;
152 friend class COooFilterCF;
153
153
154 COooFilter();
155 virtual ~COooFilter();
156
157 long m_lRefs; // Reference count
154 COooFilter();
155 virtual ~COooFilter();
156
157 long m_lRefs; // Reference count
158 CContentReader * m_pContentReader; // A content reader that retrieves document content.
159 CMetaInfoReader * m_pMetaInfoReader; // A metainfo reader that retrieves document metainfo.
158 CContentReader * m_pContentReader; // A content reader that retrieves document content.
159 CMetaInfoReader * m_pMetaInfoReader; // A metainfo reader that retrieves document metainfo.
160 FilterState m_eState; // State of filtering
160 FilterState m_eState; // State of filtering
161 ::std::wstring m_pwszFileName; // Name of input file to filter
161 ::std::wstring m_pwszFileName; // Name of input file to filter
162 ULONG m_ulUnicodeBufferLen; // UNICODE Characters read from file to chunk buffer
163 ULONG m_ulUnicodeCharsRead; // UNICODE Characters read from chunk buffer
162 ULONG m_ulUnicodeBufferLen; // UNICODE Characters read from file to chunk buffer
163 ULONG m_ulUnicodeCharsRead; // UNICODE Characters read from chunk buffer
164 ULONG m_ulPropertyNum; // Number of properties that has been processed
165 ULONG m_ulCurrentPropertyNum; // Current Property that is processing;
164 ULONG m_ulPropertyNum; // Number of properties that has been processed
165 ULONG m_ulCurrentPropertyNum; // Current Property that is processing;
166 ULONG m_ulChunkID; // Current chunk id
167 BOOL m_fContents; // TRUE if contents requested
168 BOOL m_fEof; // TRUE if end of file reached
166 ULONG m_ulChunkID; // Current chunk id
167 BOOL m_fContents; // TRUE if contents requested
168 BOOL m_fEof; // TRUE if end of file reached
169 ::std::wstring m_pwsBuffer; // Buffer to save UNICODE content from ChunkBuffer.
169 ::std::wstring m_pwsBuffer; // Buffer to save UNICODE content from ChunkBuffer.
170 ULONG m_ChunkPosition; // Chunk pointer to specify the current Chunk;
171 ULONG m_cAttributes; // Count of attributes
172 CFullPropSpec * m_pAttributes; // Attributes to filter
170 ULONG m_ChunkPosition; // Chunk pointer to specify the current Chunk;
171 ULONG m_cAttributes; // Count of attributes
172 CFullPropSpec * m_pAttributes; // Attributes to filter
173 IStream * m_pStream;
174
175};
176
177//C-------------------------------------------------------------------------
178//
179// Class: COooFilterCF
180//
173 IStream * m_pStream;
174
175};
176
177//C-------------------------------------------------------------------------
178//
179// Class: COooFilterCF
180//
181// Purpose: Implements class factory for OpenOffice.org filter
181// Purpose: Implements class factory for OpenOffice filter
182//
183//--------------------------------------------------------------------------
184
185class COooFilterCF : public IClassFactory
186{
187public:
182//
183//--------------------------------------------------------------------------
184
185class COooFilterCF : public IClassFactory
186{
187public:
188 // From IUnknown
189 virtual SCODE STDMETHODCALLTYPE QueryInterface(
190 REFIID riid,
191 void ** ppvObject);
188 // From IUnknown
189 virtual SCODE STDMETHODCALLTYPE QueryInterface(
190 REFIID riid,
191 void ** ppvObject);
192
192
193 virtual ULONG STDMETHODCALLTYPE AddRef();
194 virtual ULONG STDMETHODCALLTYPE Release();
193 virtual ULONG STDMETHODCALLTYPE AddRef();
194 virtual ULONG STDMETHODCALLTYPE Release();
195
195
196 // From IClassFactory
197 virtual SCODE STDMETHODCALLTYPE CreateInstance(
198 IUnknown * pUnkOuter,
199 REFIID riid, void ** ppvObject);
196 // From IClassFactory
197 virtual SCODE STDMETHODCALLTYPE CreateInstance(
198 IUnknown * pUnkOuter,
199 REFIID riid, void ** ppvObject);
200
200
201 virtual SCODE STDMETHODCALLTYPE LockServer(
202 BOOL fLock);
201 virtual SCODE STDMETHODCALLTYPE LockServer(
202 BOOL fLock);
203
204private:
203
204private:
205 friend SCODE STDMETHODCALLTYPE DllGetClassObject(
206 REFCLSID cid,
207 REFIID iid,
208 void ** ppvObj);
205 friend SCODE STDMETHODCALLTYPE DllGetClassObject(
206 REFCLSID cid,
207 REFIID iid,
208 void ** ppvObj);
209
209
210 COooFilterCF();
211 virtual ~COooFilterCF();
212
213 long m_lRefs; // Reference count
210 COooFilterCF();
211 virtual ~COooFilterCF();
212
213 long m_lRefs; // Reference count
214};
214};
215
216/* vim: set noet sw=4 ts=4: */