1 /************************************************************** 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 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 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. 19 * 20 *************************************************************/ 21 22 23 24 // MARKER(update_precomp.py): autogen include statement, do not remove 25 #include "precompiled_xmloff.hxx" 26 27 #include "sal/config.h" 28 29 #include "xmloff/dllapi.h" 30 31 #include <string.h> 32 #include <com/sun/star/container/XSet.hpp> 33 #include <com/sun/star/registry/XRegistryKey.hpp> 34 #include <osl/diagnose.h> 35 #include <tools/debug.hxx> 36 37 #include <cppuhelper/factory.hxx> 38 #include <uno/lbnames.h> 39 #include "xmloff/xmlreg.hxx" 40 41 using namespace rtl; 42 using namespace com::sun::star; 43 44 #define SERVICE( className ) \ 45 extern OUString SAL_CALL className##_getImplementationName() throw(); \ 46 extern uno::Sequence< OUString > SAL_CALL className##_getSupportedServiceNames() throw();\ 47 extern uno::Reference< uno::XInterface > SAL_CALL className##_createInstance( \ 48 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) \ 49 throw( uno::Exception ) 50 51 // impress oasis import 52 SERVICE( XMLImpressImportOasis ); 53 SERVICE( XMLImpressStylesImportOasis ); 54 SERVICE( XMLImpressContentImportOasis ); 55 SERVICE( XMLImpressMetaImportOasis ); 56 SERVICE( XMLImpressSettingsImportOasis ); 57 58 // impress oasis export 59 SERVICE( XMLImpressExportOasis ); 60 SERVICE( XMLImpressStylesExportOasis ); 61 SERVICE( XMLImpressContentExportOasis ); 62 SERVICE( XMLImpressMetaExportOasis ); 63 SERVICE( XMLImpressSettingsExportOasis ); 64 65 // impress OOo import 66 67 // impress OOo export 68 SERVICE( XMLImpressExportOOO ); 69 SERVICE( XMLImpressStylesExportOOO ); 70 SERVICE( XMLImpressContentExportOOO ); 71 SERVICE( XMLImpressMetaExportOOO ); 72 SERVICE( XMLImpressSettingsExportOOO ); 73 74 // draw oasis import 75 SERVICE( XMLDrawImportOasis ); 76 SERVICE( XMLDrawStylesImportOasis ); 77 SERVICE( XMLDrawContentImportOasis ); 78 SERVICE( XMLDrawMetaImportOasis ); 79 SERVICE( XMLDrawSettingsImportOasis ); 80 81 // draw oasis export 82 SERVICE( XMLDrawExportOasis ); 83 SERVICE( XMLDrawStylesExportOasis ); 84 SERVICE( XMLDrawContentExportOasis ); 85 SERVICE( XMLDrawMetaExportOasis ); 86 SERVICE( XMLDrawSettingsExportOasis ); 87 88 // draw OOo import 89 90 // draw OOo export 91 SERVICE( XMLDrawExportOOO ); 92 SERVICE( XMLDrawStylesExportOOO ); 93 SERVICE( XMLDrawContentExportOOO ); 94 SERVICE( XMLDrawMetaExportOOO ); 95 SERVICE( XMLDrawSettingsExportOOO ); 96 97 // impress animation import 98 SERVICE( AnimationsImport ); 99 100 // drawing layer export 101 SERVICE( XMLDrawingLayerExport ); 102 103 // impress xml clipboard export 104 SERVICE( XMLImpressClipboardExport ); 105 106 // chart oasis import 107 SERVICE( SchXMLImport ); 108 SERVICE( SchXMLImport_Meta ); 109 SERVICE( SchXMLImport_Styles ); 110 SERVICE( SchXMLImport_Content ); 111 112 // chart oasis export 113 SERVICE( SchXMLExport_Oasis ); 114 SERVICE( SchXMLExport_Oasis_Meta ); 115 SERVICE( SchXMLExport_Oasis_Styles ); 116 SERVICE( SchXMLExport_Oasis_Content ); 117 118 // chart OOo import 119 120 // chart OOo export 121 SERVICE( SchXMLExport ); 122 SERVICE( SchXMLExport_Styles ); 123 SERVICE( SchXMLExport_Content ); 124 125 // version list import/export 126 SERVICE( XMLVersionListPersistence ); 127 128 // meta export 129 SERVICE( XMLMetaExportComponent ); 130 131 // meta import 132 SERVICE( XMLMetaImportComponent ); 133 134 // meta export OOo 135 SERVICE( XMLMetaExportOOO ); 136 137 // writer autotext event export 138 SERVICE( XMLAutoTextEventExport ); 139 140 // writer autotext event import 141 SERVICE( XMLAutoTextEventImport ); 142 143 // writer autotext event export OOo 144 SERVICE( XMLAutoTextEventExportOOO ); 145 146 // writer autotext event import OOo 147 SERVICE( XMLAutoTextEventImportOOO ); 148 149 // Oasis2OOo transformer 150 SERVICE( Oasis2OOoTransformer ); 151 152 // OOo2Oasis transformer 153 SERVICE( OOo2OasisTransformer ); 154 155 // 156 #ifdef __cplusplus 157 extern "C" 158 { 159 #endif 160 161 XMLOFF_DLLPUBLIC void SAL_CALL component_getImplementationEnvironment( const sal_Char ** ppEnvTypeName, uno_Environment ** ) 162 { 163 *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; 164 } 165 166 #define SINGLEFACTORY(classname)\ 167 if( classname##_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) )\ 168 {\ 169 xFactory = ::cppu::createSingleFactory( xMSF,\ 170 classname##_getImplementationName(),\ 171 classname##_createInstance,\ 172 classname##_getSupportedServiceNames() );\ 173 } 174 175 XMLOFF_DLLPUBLIC void * SAL_CALL component_getFactory( const sal_Char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ ) 176 { 177 void * pRet = 0; 178 if( pServiceManager ) 179 { 180 uno::Reference< lang::XMultiServiceFactory > xMSF( reinterpret_cast< lang::XMultiServiceFactory * >( pServiceManager ) ); 181 182 uno::Reference< lang::XSingleServiceFactory > xFactory; 183 184 const sal_Int32 nImplNameLen = strlen( pImplName ); 185 186 // impress oasis import 187 SINGLEFACTORY( XMLImpressImportOasis ) 188 else SINGLEFACTORY( XMLImpressStylesImportOasis ) 189 else SINGLEFACTORY( XMLImpressContentImportOasis ) 190 else SINGLEFACTORY( XMLImpressMetaImportOasis ) 191 else SINGLEFACTORY( XMLImpressSettingsImportOasis ) 192 193 // impress oasis export 194 else SINGLEFACTORY( XMLImpressExportOasis ) 195 else SINGLEFACTORY( XMLImpressStylesExportOasis ) 196 else SINGLEFACTORY( XMLImpressContentExportOasis ) 197 else SINGLEFACTORY( XMLImpressMetaExportOasis ) 198 else SINGLEFACTORY( XMLImpressSettingsExportOasis ) 199 200 else SINGLEFACTORY( AnimationsImport ) 201 202 // impress OOo export 203 else SINGLEFACTORY( XMLImpressExportOOO ) 204 else SINGLEFACTORY( XMLImpressStylesExportOOO ) 205 else SINGLEFACTORY( XMLImpressContentExportOOO ) 206 else SINGLEFACTORY( XMLImpressMetaExportOOO ) 207 else SINGLEFACTORY( XMLImpressSettingsExportOOO ) 208 209 // draw oasis import 210 else SINGLEFACTORY( XMLDrawImportOasis ) 211 else SINGLEFACTORY( XMLDrawStylesImportOasis ) 212 else SINGLEFACTORY( XMLDrawContentImportOasis ) 213 else SINGLEFACTORY( XMLDrawMetaImportOasis ) 214 else SINGLEFACTORY( XMLDrawSettingsImportOasis ) 215 216 // draw oasis export 217 else SINGLEFACTORY( XMLDrawExportOasis ) 218 else SINGLEFACTORY( XMLDrawStylesExportOasis ) 219 else SINGLEFACTORY( XMLDrawContentExportOasis ) 220 else SINGLEFACTORY( XMLDrawMetaExportOasis ) 221 else SINGLEFACTORY( XMLDrawSettingsExportOasis ) 222 223 // draw OOo export 224 else SINGLEFACTORY( XMLDrawExportOOO ) 225 else SINGLEFACTORY( XMLDrawStylesExportOOO ) 226 else SINGLEFACTORY( XMLDrawContentExportOOO ) 227 else SINGLEFACTORY( XMLDrawMetaExportOOO ) 228 else SINGLEFACTORY( XMLDrawSettingsExportOOO ) 229 230 // drawing layer export 231 else SINGLEFACTORY( XMLDrawingLayerExport ) 232 233 // impress xml clipboard export 234 else SINGLEFACTORY( XMLImpressClipboardExport ) 235 236 // chart oasis import 237 else SINGLEFACTORY( SchXMLImport ) 238 else SINGLEFACTORY( SchXMLImport_Meta ) 239 else SINGLEFACTORY( SchXMLImport_Styles ) 240 else SINGLEFACTORY( SchXMLImport_Content ) 241 242 // chart oasis export 243 else SINGLEFACTORY( SchXMLExport_Oasis ) 244 else SINGLEFACTORY( SchXMLExport_Oasis_Meta ) 245 else SINGLEFACTORY( SchXMLExport_Oasis_Styles ) 246 else SINGLEFACTORY( SchXMLExport_Oasis_Content ) 247 248 // chart OOo export 249 else SINGLEFACTORY( SchXMLExport ) 250 else SINGLEFACTORY( SchXMLExport_Styles ) 251 else SINGLEFACTORY( SchXMLExport_Content ) 252 253 // meta import/export 254 else SINGLEFACTORY( XMLMetaExportComponent ) 255 else SINGLEFACTORY( XMLMetaImportComponent ) 256 257 else SINGLEFACTORY( XMLVersionListPersistence ) 258 259 // meta import/export OOo 260 else SINGLEFACTORY( XMLMetaExportOOO ) 261 262 // auto text import/export 263 else SINGLEFACTORY( XMLAutoTextEventExport ) 264 else SINGLEFACTORY( XMLAutoTextEventImport ) 265 else SINGLEFACTORY( XMLAutoTextEventExportOOO ) 266 267 if( xFactory.is()) 268 { 269 xFactory->acquire(); 270 pRet = xFactory.get(); 271 } 272 } 273 return pRet; 274 } 275 276 #ifdef __cplusplus 277 } 278 #endif 279 280