1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 // MARKER(update_precomp.py): autogen include statement, do not remove 29 #include "precompiled_xmloff.hxx" 30 31 #include "sal/config.h" 32 33 #include "xmloff/dllapi.h" 34 35 #include <string.h> 36 #include <com/sun/star/container/XSet.hpp> 37 #include <com/sun/star/registry/XRegistryKey.hpp> 38 #include <osl/diagnose.h> 39 #include <tools/debug.hxx> 40 41 #include <cppuhelper/factory.hxx> 42 #include <uno/lbnames.h> 43 #include "xmloff/xmlreg.hxx" 44 45 using namespace rtl; 46 using namespace com::sun::star; 47 48 #define SERVICE( className ) \ 49 extern OUString SAL_CALL className##_getImplementationName() throw(); \ 50 extern uno::Sequence< OUString > SAL_CALL className##_getSupportedServiceNames() throw();\ 51 extern uno::Reference< uno::XInterface > SAL_CALL className##_createInstance( \ 52 const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) \ 53 throw( uno::Exception ) 54 55 // impress oasis import 56 SERVICE( XMLImpressImportOasis ); 57 SERVICE( XMLImpressStylesImportOasis ); 58 SERVICE( XMLImpressContentImportOasis ); 59 SERVICE( XMLImpressMetaImportOasis ); 60 SERVICE( XMLImpressSettingsImportOasis ); 61 62 // impress oasis export 63 SERVICE( XMLImpressExportOasis ); 64 SERVICE( XMLImpressStylesExportOasis ); 65 SERVICE( XMLImpressContentExportOasis ); 66 SERVICE( XMLImpressMetaExportOasis ); 67 SERVICE( XMLImpressSettingsExportOasis ); 68 69 // impress OOo import 70 71 // impress OOo export 72 SERVICE( XMLImpressExportOOO ); 73 SERVICE( XMLImpressStylesExportOOO ); 74 SERVICE( XMLImpressContentExportOOO ); 75 SERVICE( XMLImpressMetaExportOOO ); 76 SERVICE( XMLImpressSettingsExportOOO ); 77 78 // draw oasis import 79 SERVICE( XMLDrawImportOasis ); 80 SERVICE( XMLDrawStylesImportOasis ); 81 SERVICE( XMLDrawContentImportOasis ); 82 SERVICE( XMLDrawMetaImportOasis ); 83 SERVICE( XMLDrawSettingsImportOasis ); 84 85 // draw oasis export 86 SERVICE( XMLDrawExportOasis ); 87 SERVICE( XMLDrawStylesExportOasis ); 88 SERVICE( XMLDrawContentExportOasis ); 89 SERVICE( XMLDrawMetaExportOasis ); 90 SERVICE( XMLDrawSettingsExportOasis ); 91 92 // draw OOo import 93 94 // draw OOo export 95 SERVICE( XMLDrawExportOOO ); 96 SERVICE( XMLDrawStylesExportOOO ); 97 SERVICE( XMLDrawContentExportOOO ); 98 SERVICE( XMLDrawMetaExportOOO ); 99 SERVICE( XMLDrawSettingsExportOOO ); 100 101 // impress animation import 102 SERVICE( AnimationsImport ); 103 104 // drawing layer export 105 SERVICE( XMLDrawingLayerExport ); 106 107 // impress xml clipboard export 108 SERVICE( XMLImpressClipboardExport ); 109 110 // chart oasis import 111 SERVICE( SchXMLImport ); 112 SERVICE( SchXMLImport_Meta ); 113 SERVICE( SchXMLImport_Styles ); 114 SERVICE( SchXMLImport_Content ); 115 116 // chart oasis export 117 SERVICE( SchXMLExport_Oasis ); 118 SERVICE( SchXMLExport_Oasis_Meta ); 119 SERVICE( SchXMLExport_Oasis_Styles ); 120 SERVICE( SchXMLExport_Oasis_Content ); 121 122 // chart OOo import 123 124 // chart OOo export 125 SERVICE( SchXMLExport ); 126 SERVICE( SchXMLExport_Styles ); 127 SERVICE( SchXMLExport_Content ); 128 129 // version list import/export 130 SERVICE( XMLVersionListPersistence ); 131 132 // meta export 133 SERVICE( XMLMetaExportComponent ); 134 135 // meta import 136 SERVICE( XMLMetaImportComponent ); 137 138 // meta export OOo 139 SERVICE( XMLMetaExportOOO ); 140 141 // writer autotext event export 142 SERVICE( XMLAutoTextEventExport ); 143 144 // writer autotext event import 145 SERVICE( XMLAutoTextEventImport ); 146 147 // writer autotext event export OOo 148 SERVICE( XMLAutoTextEventExportOOO ); 149 150 // writer autotext event import OOo 151 SERVICE( XMLAutoTextEventImportOOO ); 152 153 // Oasis2OOo transformer 154 SERVICE( Oasis2OOoTransformer ); 155 156 // OOo2Oasis transformer 157 SERVICE( OOo2OasisTransformer ); 158 159 // 160 #ifdef __cplusplus 161 extern "C" 162 { 163 #endif 164 165 XMLOFF_DLLPUBLIC void SAL_CALL component_getImplementationEnvironment( const sal_Char ** ppEnvTypeName, uno_Environment ** ) 166 { 167 *ppEnvTypeName = CPPU_CURRENT_LANGUAGE_BINDING_NAME; 168 } 169 170 #define SINGLEFACTORY(classname)\ 171 if( classname##_getImplementationName().equalsAsciiL( pImplName, nImplNameLen ) )\ 172 {\ 173 xFactory = ::cppu::createSingleFactory( xMSF,\ 174 classname##_getImplementationName(),\ 175 classname##_createInstance,\ 176 classname##_getSupportedServiceNames() );\ 177 } 178 179 XMLOFF_DLLPUBLIC void * SAL_CALL component_getFactory( const sal_Char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ ) 180 { 181 void * pRet = 0; 182 if( pServiceManager ) 183 { 184 uno::Reference< lang::XMultiServiceFactory > xMSF( reinterpret_cast< lang::XMultiServiceFactory * >( pServiceManager ) ); 185 186 uno::Reference< lang::XSingleServiceFactory > xFactory; 187 188 const sal_Int32 nImplNameLen = strlen( pImplName ); 189 190 // impress oasis import 191 SINGLEFACTORY( XMLImpressImportOasis ) 192 else SINGLEFACTORY( XMLImpressStylesImportOasis ) 193 else SINGLEFACTORY( XMLImpressContentImportOasis ) 194 else SINGLEFACTORY( XMLImpressMetaImportOasis ) 195 else SINGLEFACTORY( XMLImpressSettingsImportOasis ) 196 197 // impress oasis export 198 else SINGLEFACTORY( XMLImpressExportOasis ) 199 else SINGLEFACTORY( XMLImpressStylesExportOasis ) 200 else SINGLEFACTORY( XMLImpressContentExportOasis ) 201 else SINGLEFACTORY( XMLImpressMetaExportOasis ) 202 else SINGLEFACTORY( XMLImpressSettingsExportOasis ) 203 204 else SINGLEFACTORY( AnimationsImport ) 205 206 // impress OOo export 207 else SINGLEFACTORY( XMLImpressExportOOO ) 208 else SINGLEFACTORY( XMLImpressStylesExportOOO ) 209 else SINGLEFACTORY( XMLImpressContentExportOOO ) 210 else SINGLEFACTORY( XMLImpressMetaExportOOO ) 211 else SINGLEFACTORY( XMLImpressSettingsExportOOO ) 212 213 // draw oasis import 214 else SINGLEFACTORY( XMLDrawImportOasis ) 215 else SINGLEFACTORY( XMLDrawStylesImportOasis ) 216 else SINGLEFACTORY( XMLDrawContentImportOasis ) 217 else SINGLEFACTORY( XMLDrawMetaImportOasis ) 218 else SINGLEFACTORY( XMLDrawSettingsImportOasis ) 219 220 // draw oasis export 221 else SINGLEFACTORY( XMLDrawExportOasis ) 222 else SINGLEFACTORY( XMLDrawStylesExportOasis ) 223 else SINGLEFACTORY( XMLDrawContentExportOasis ) 224 else SINGLEFACTORY( XMLDrawMetaExportOasis ) 225 else SINGLEFACTORY( XMLDrawSettingsExportOasis ) 226 227 // draw OOo export 228 else SINGLEFACTORY( XMLDrawExportOOO ) 229 else SINGLEFACTORY( XMLDrawStylesExportOOO ) 230 else SINGLEFACTORY( XMLDrawContentExportOOO ) 231 else SINGLEFACTORY( XMLDrawMetaExportOOO ) 232 else SINGLEFACTORY( XMLDrawSettingsExportOOO ) 233 234 // drawing layer export 235 else SINGLEFACTORY( XMLDrawingLayerExport ) 236 237 // impress xml clipboard export 238 else SINGLEFACTORY( XMLImpressClipboardExport ) 239 240 // chart oasis import 241 else SINGLEFACTORY( SchXMLImport ) 242 else SINGLEFACTORY( SchXMLImport_Meta ) 243 else SINGLEFACTORY( SchXMLImport_Styles ) 244 else SINGLEFACTORY( SchXMLImport_Content ) 245 246 // chart oasis export 247 else SINGLEFACTORY( SchXMLExport_Oasis ) 248 else SINGLEFACTORY( SchXMLExport_Oasis_Meta ) 249 else SINGLEFACTORY( SchXMLExport_Oasis_Styles ) 250 else SINGLEFACTORY( SchXMLExport_Oasis_Content ) 251 252 // chart OOo export 253 else SINGLEFACTORY( SchXMLExport ) 254 else SINGLEFACTORY( SchXMLExport_Styles ) 255 else SINGLEFACTORY( SchXMLExport_Content ) 256 257 // meta import/export 258 else SINGLEFACTORY( XMLMetaExportComponent ) 259 else SINGLEFACTORY( XMLMetaImportComponent ) 260 261 else SINGLEFACTORY( XMLVersionListPersistence ) 262 263 // meta import/export OOo 264 else SINGLEFACTORY( XMLMetaExportOOO ) 265 266 // auto text import/export 267 else SINGLEFACTORY( XMLAutoTextEventExport ) 268 else SINGLEFACTORY( XMLAutoTextEventImport ) 269 else SINGLEFACTORY( XMLAutoTextEventExportOOO ) 270 271 if( xFactory.is()) 272 { 273 xFactory->acquire(); 274 pRet = xFactory.get(); 275 } 276 } 277 return pRet; 278 } 279 280 #ifdef __cplusplus 281 } 282 #endif 283 284