/************************************************************** * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. * *************************************************************/ // MARKER(update_precomp.py): autogen include statement, do not remove #include "precompiled_framework.hxx" //_________________________________________________________________________________________________________________ // my own includes //_________________________________________________________________________________________________________________ #define VCL_NEED_BASETSD #include #include #include #include #include #include #include #include #include //_________________________________________________________________________________________________________________ // interface includes //_________________________________________________________________________________________________________________ #include //_________________________________________________________________________________________________________________ // other includes //_________________________________________________________________________________________________________________ #include #include #include #include #include #include #include #include #include //_________________________________________________________________________________________________________________ // namespace //_________________________________________________________________________________________________________________ using namespace ::framework ; //_________________________________________________________________________________________________________________ // const //_________________________________________________________________________________________________________________ //_________________________________________________________________________________________________________________ // defines //_________________________________________________________________________________________________________________ /* Versions: 1) first revision - one entry for every property - full loclized values 2) new property "Order" for filters ... but not right set! all values are 0 3) decrease size of xml file - don't write full localized values - use own formatted string for all non localized values - separate "Installed" flag for filters 4) set right values for "Order" property of filters 5) support for ContentHandler draft 6) reactivate old filter names ??? draft 7) split xml into standard/optional => use DRAFT_SPLIT_VERSION till this version is well known! */ #define DRAFT_SPLIT_VERSION 7 #define ARGUMENT_PACKAGE_STANDARD DECLARE_ASCII("-pas=") // argument for package name of standard filters #define ARGUMENT_PACKAGE_ADDITIONAL DECLARE_ASCII("-paa=") // argument for package name of additional filters #define ARGUMENT_WRITEABLE DECLARE_ASCII("-wri=") // argument for "writeable" [true|false] #define ARGUMENT_VERSION_INPUT DECLARE_ASCII("-vin=") // argument for file version to read [1|2|3] #define ARGUMENT_VERSION_OUTPUT DECLARE_ASCII("-vou=") // argument for file version to write [1|2|3] #define ARGUMENTLENGTH 5 // All arguments should have the same length ... it's better to detect it! #define ARGUMENTFOUND 0 // OUString::compareTo returns 0 if searched string match given one #define WRITEABLE_ON DECLARE_ASCII("true" ) #define WRITEABLE_OFF DECLARE_ASCII("false") #define MINARGUMENTCOUNT 5 // no optional arguments allowed yet! #define LISTFILE_STANDARDTYPES "typelist_standard.txt" #define LISTFILE_ADDITIONALTYPES "typelist_additional.txt" #define LISTFILE_STANDARDFILTER "filterlist_standard.txt" #define LISTFILE_ADDITIONALFILTER "filterlist_additional.txt" #define SCPFILE_STANDARD "scp_standard.txt" #define SCPFILE_ADDITIONAL "scp_additional.txt" //_________________________________________________________________________________________________________________ // declarations //_________________________________________________________________________________________________________________ /*-***************************************************************************************************************/ struct AppMember { FilterCache* pFilterCache ; // pointer to configuration StringHash aOldFilterNamesHash ; // converter tabel to restaurate old filter names EFilterPackage ePackage ; // specify which package should be used => specify using of file name and buffer too! // ::rtl::OUString sFileNameStandard ; // file name of our standard filter cfg // ::rtl::OUString sFileNameAdditional ; // file name of our additional filter cfg ::rtl::OUString sPackageStandard ; // package name of our standard filter cfg ::rtl::OUString sPackageAdditional ; // package name of our additional filter cfg ::rtl::OUStringBuffer sBufferStandard ; // buffer of our standard filter cfg ::rtl::OUStringBuffer sBufferAdditional ; // buffer of our standard filter cfg ::rtl::OUStringBuffer sNew2OldSCPStandard ; // setup script to convert new to old filternames (standard filter) ::rtl::OUStringBuffer sNew2OldSCPAdditional ; // setup script to convert new to old filternames (additional filter) ::rtl::OUStringBuffer sStandardFilterList ; ::rtl::OUStringBuffer sAdditionalFilterList ; ::rtl::OUStringBuffer sStandardTypeList ; ::rtl::OUStringBuffer sAdditionalTypeList ; sal_Bool bWriteable ; // enable/disable writable configuration items sal_Int32 nVersionInput ; // format version of input xml file sal_Int32 nVersionOutput ; // format version of output xcd file sal_Int32 nOriginalTypes ; sal_Int32 nOriginalFilters ; sal_Int32 nOriginalDetectors ; sal_Int32 nOriginalLoaders ; sal_Int32 nOriginalContentHandlers ; sal_Int32 nWrittenTypes ; sal_Int32 nWrittenFilters ; sal_Int32 nWrittenDetectors ; sal_Int32 nWrittenLoaders ; sal_Int32 nWrittenContentHandlers ; }; /*-***************************************************************************************************************/ class XCDGenerator : public Application { //************************************************************************************************************* public: void Main(); //************************************************************************************************************* private: void impl_printCopyright ( ); // print copyright to stdout :-) void impl_printSyntax ( ); // print help to stout for user void impl_parseCommandLine ( AppMember& rMember ); // parse command line arguments and fill given struct void impl_generateXCD ( ); // generate all xcd files by using current configuration void impl_generateCopyright ( ); // generate copyrights void impl_generateTypeTemplate ( ); // generate templates ... void impl_generateFilterTemplate ( ); void impl_generateDetectorTemplate ( ); void impl_generateLoaderTemplate ( ); void impl_generateTypeSet ( ); // generate sets void impl_generateFilterSet ( ); void impl_generateDetectorSet ( ); void impl_generateLoaderSet ( ); void impl_generateDefaults ( ); // generate defaults void impl_generateContentHandlerTemplate ( ); void impl_generateContentHandlerSet ( ); void impl_generateFilterFlagTemplate ( const ::rtl::OUString& sName , // helper to write atomic elements sal_Int32 nValue , const ::rtl::OString& sDescription = ::rtl::OString() ); void impl_generateIntProperty ( ::rtl::OUStringBuffer& sXCD , const ::rtl::OUString& sName , sal_Int32 nValue ); void impl_generateBoolProperty ( ::rtl::OUStringBuffer& sXCD , const ::rtl::OUString& sName , sal_Bool bValue ); void impl_generateStringProperty ( ::rtl::OUStringBuffer& sXCD , const ::rtl::OUString& sName , const ::rtl::OUString& sValue ); void impl_generateStringListProperty ( ::rtl::OUStringBuffer& sXCD , const ::rtl::OUString& sName , const ::framework::StringList& lValue ); void impl_generateUINamesProperty ( ::rtl::OUStringBuffer& sXCD , const ::rtl::OUString& sName , const StringHash& lUINames ); ::rtl::OUString impl_getOldFilterName ( const ::rtl::OUString& sNewName ); // convert filter names to old format static void impl_classifyType ( const AppMember& rData , const ::rtl::OUString& sTypeName , EFilterPackage& ePackage ); // classify type as STANDARD or ADDITIONAL one static void impl_classifyFilter ( const AppMember& rData , const ::rtl::OUString& sFilterName , EFilterPackage& ePackage , sal_Int32& nOrder ); // classify filter as STANDARD or ADDITIONAL filter, set order of standard filter too static ::rtl::OUString impl_encodeSpecialSigns ( const ::rtl::OUString& sValue ); // encode strings for xml static sal_Unicode impl_defineSeperator ( const ::framework::StringList& lList ); // search seperator for lists static void impl_initFilterHashNew2Old ( StringHash& aHash ); // initialize converter table to restaurate old filter names static void impl_orderAlphabetical ( css::uno::Sequence< ::rtl::OUString >& lList ); // sort stringlist of internal type-, filter- ... names in alphabetical order to generate xcd files every time in the same way static sal_Bool impl_isUsAsciiAlphaDigit ( sal_Unicode c , sal_Bool bDigitAllowed = sal_True ); static ::rtl::OUString impl_encodeSetName ( const ::rtl::OUString& rSource ); //************************************************************************************************************* private: AppMember m_aData; }; // class XCDGenerator //_________________________________________________________________________________________________________________ // global variables //_________________________________________________________________________________________________________________ XCDGenerator gGenerator; //***************************************************************************************************************** void XCDGenerator::Main() { // Must be :-) // impl_printCopyright(); // Init global servicemanager and set it. // It's necessary for other services ... e.g. configuration. ServiceManager aManager; ::comphelper::setProcessServiceFactory( aManager.getGlobalUNOServiceManager() ); ::utl::setProcessServiceFactory ( aManager.getGlobalUNOServiceManager() ); // Get optional commands from command line. impl_parseCommandLine( m_aData ); // initialize converter table to match new to old filter names! if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 ) { XCDGenerator::impl_initFilterHashNew2Old( m_aData.aOldFilterNamesHash ); } // Create access to current set filter configuration. // Attention: Please use it for a full fat office installation only!! // We need an installation with ALL filters. // Member m_pData is used in some impl-methods directly ... m_aData.pFilterCache = new FilterCache( m_aData.nVersionInput, CONFIG_MODE_ALL_LOCALES ); // Get some statistic informations of current filled filter cache ... (e.g. count of current activae filters) // because we need it to check if all filters are converted and written to disk. // May be it's possible to lose some of them during conversion!!! m_aData.nOriginalTypes = m_aData.pFilterCache->getAllTypeNames().getLength() ; m_aData.nOriginalFilters = m_aData.pFilterCache->getAllFilterNames().getLength() ; m_aData.nOriginalDetectors = m_aData.pFilterCache->getAllDetectorNames().getLength() ; m_aData.nOriginalLoaders = m_aData.pFilterCache->getAllLoaderNames().getLength() ; if( m_aData.nVersionInput >= 5 ) { m_aData.nOriginalContentHandlers = m_aData.pFilterCache->getAllContentHandlerNames().getLength() ; } // Start generation of xcd file(s). impl_generateXCD(); // Warn programmer if some items couldn't written to file! LOG_ASSERT2( m_aData.nOriginalTypes != m_aData.nWrittenTypes , "XCDGenerator::Main()", "Generated xcd file could be invalid ... because I miss some types!" ) LOG_ASSERT2( m_aData.nOriginalFilters != m_aData.nWrittenFilters , "XCDGenerator::Main()", "Generated xcd file could be invalid ... because I miss some filters!" ) LOG_ASSERT2( m_aData.nOriginalDetectors!= m_aData.nWrittenDetectors, "XCDGenerator::Main()", "Generated xcd file could be invalid ... because I miss some detectors!" ) LOG_ASSERT2( m_aData.nOriginalLoaders != m_aData.nWrittenLoaders , "XCDGenerator::Main()", "Generated xcd file could be invalid ... because I miss some loaders!" ) // Free memory. delete m_aData.pFilterCache; m_aData.pFilterCache = NULL; } /*-************************************************************************************************************//** @short print some info messages to stderr @descr We must show an copyright or help for using this file. This two methods do that. @seealso - @param - @return - @onerror - *//*-*************************************************************************************************************/ void XCDGenerator::impl_printCopyright() { fprintf( stderr, "\nLicensed to the Apache Software Foundation.\n" ); } //***************************************************************************************************************** void XCDGenerator::impl_printSyntax() { // It's not possible to print it out to stdout in a svdem binary :-( // So we show an assert. ::rtl::OStringBuffer sBuffer( 500 ); sBuffer.append( "\nusing: xml2xcd -fis= -fia= -pas= -paa= -vin= -vou= [-wri=]\n\n" ); sBuffer.append( "\tneccessary parameters:\n" ); sBuffer.append( "\t\t-fis\tname of output file in system notation\n" ); sBuffer.append( "\t\t-fia\tname of output file in system notation\n" ); sBuffer.append( "\t\t-pas\tpackage of standard filters\n" ); sBuffer.append( "\t\t-paa\tpackage of additional filters\n" ); sBuffer.append( "\t\t-vin\tformat version of input xml file\n" ); sBuffer.append( "\t\t-vou\tformat version of generated xcd file\n\n" ); sBuffer.append( "\toptional parameters:\n" ); sBuffer.append( "\t\t-wri\tconfig items should be writeable ... [true|false]\n" ); LOG_ERROR( "", sBuffer.makeStringAndClear() ) } /*-************************************************************************************************************//** @short analyze command line arguments @descr Created binary accept different command line arguments. These parameters regulate creation of xcd file. Follow arguments are supported: "-fis=" "-fia=" "-wri=[true|false]" "-vin=[1|2|3]" "-vou=[1|2|3]" @seealso - @param "rMember", reference to struct of global application member to fill arguments in it @return right filled member struct or unchanged struct if an error occur! @onerror We do nothing - or warn programmer! *//*-*************************************************************************************************************/ void XCDGenerator::impl_parseCommandLine( AppMember& rMember ) { ::vos::OStartupInfo aInfo ; ::rtl::OUString sArgument ; sal_Int32 nArgument = 0 ; sal_Int32 nCount = aInfo.getCommandArgCount(); sal_Int32 nMinCount = 0 ; while( nArgument\n\n" ); m_aData.sBufferStandard.appendAscii ( "\n" ); m_aData.sBufferStandard.appendAscii ( "\n" ); m_aData.sBufferStandard.appendAscii ( "\t\n" ); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { m_aData.sBufferAdditional.appendAscii ( "\n\n\n" ); m_aData.sBufferAdditional.appendAscii ( "\n" ); m_aData.sBufferAdditional.appendAscii ( "\n" ); m_aData.sBufferAdditional.appendAscii ( "\t\n" ); } // Follow ...generate... methods to nothing for additional filters! impl_generateTypeTemplate (); impl_generateFilterTemplate (); impl_generateDetectorTemplate(); if( m_aData.nVersionOutput >= 5 ) { impl_generateContentHandlerTemplate (); } impl_generateLoaderTemplate (); m_aData.sBufferStandard.appendAscii ( "\t\n" ); m_aData.sBufferStandard.appendAscii ( "\n" ); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { m_aData.sBufferAdditional.appendAscii( "\t\n" ); } impl_generateTypeSet (); impl_generateFilterSet (); impl_generateDetectorSet (); if( m_aData.nVersionInput >= 5 ) { impl_generateContentHandlerSet (); } impl_generateLoaderSet (); impl_generateDefaults (); m_aData.sBufferStandard.appendAscii ( "\t\n" ); m_aData.sBufferStandard.appendAscii ( "\n" ); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { m_aData.sBufferAdditional.appendAscii ( "\t\n" ); m_aData.sBufferAdditional.appendAscii ( "\n" ); } ::rtl::OUString sFileName = m_aData.sPackageStandard ; sFileName += DECLARE_ASCII(".xcd") ; WRITE_LOGFILE( U2B( sFileName ) , U2B(m_aData.sBufferStandard.makeStringAndClear() )) WRITE_LOGFILE( LISTFILE_STANDARDFILTER , U2B(m_aData.sStandardFilterList.makeStringAndClear() )) WRITE_LOGFILE( LISTFILE_STANDARDTYPES , U2B(m_aData.sStandardTypeList.makeStringAndClear() )) WRITE_LOGFILE( SCPFILE_STANDARD , U2B(m_aData.sNew2OldSCPStandard.makeStringAndClear() )) if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { sFileName = m_aData.sPackageAdditional ; sFileName += DECLARE_ASCII(".xcd") ; WRITE_LOGFILE( U2B(sFileName) , U2B(m_aData.sBufferAdditional.makeStringAndClear() )) WRITE_LOGFILE( LISTFILE_ADDITIONALFILTER, U2B(m_aData.sAdditionalFilterList.makeStringAndClear() )) WRITE_LOGFILE( LISTFILE_ADDITIONALTYPES , U2B(m_aData.sAdditionalTypeList.makeStringAndClear() )) WRITE_LOGFILE( SCPFILE_ADDITIONAL , U2B(m_aData.sNew2OldSCPAdditional.makeStringAndClear() )) } } //***************************************************************************************************************** void XCDGenerator::impl_generateCopyright() { m_aData.sBufferStandard.appendAscii( "\n" ); m_aData.sBufferStandard.appendAscii( "\n"); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { m_aData.sBufferAdditional.appendAscii( "\n" ); m_aData.sBufferStandard.appendAscii( "\n"); } } //***************************************************************************************************************** void XCDGenerator::impl_generateTypeTemplate() { //_________________________________________________________________________________________________________________ if( m_aData.nVersionOutput==1 || m_aData.nVersionOutput==2 ) { m_aData.sBufferStandard.appendAscii( "\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii("\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the preferred type for an extension if more then one match given URL\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\tfalse\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the external name of this type\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the mime type \n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the clipboard format name\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the patterns used for URLs. This type is only relevant for HTTP, FTP etc. and is used for internal URL formats like private:factory etc.\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the possible file extensions.\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the document icon ID of this type\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t0\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\n" ); } //_________________________________________________________________________________________________________________ else if( m_aData.nVersionOutput>=3 ) { m_aData.sBufferStandard.appendAscii( "\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the external name of this type\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii("\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tContains all data of a type as an own formatted string.{Preferred, MediaType, ClipboardFormat, URLPattern, Extensions, DocumentIconID}\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\tfalse\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\n" ); } } //***************************************************************************************************************** void XCDGenerator::impl_generateFilterTemplate() { //_________________________________________________________________________________________________________________ if( m_aData.nVersionOutput==1 || m_aData.nVersionOutput==2 ) { m_aData.sBufferStandard.appendAscii( "\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tMake it possible to enable or disable filter by setup!\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\tfalse\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); if( m_aData.nVersionOutput==2 ) { m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies order of filters for relevant module; don't used for default filter!\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t0\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); } m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the external name of the filter which is displayed at the user interface (dialog).\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the relative type key name of the filter, e.g. Type/T1\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the name of the UNO service to implement the document.\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the name of the UNO service for importing the document.\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the properties of the filter\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t\n" ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_IMPORT , FILTERFLAG_IMPORT , "mark filter for import" ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_EXPORT , FILTERFLAG_EXPORT , "mark filter for export" ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_TEMPLATE , FILTERFLAG_TEMPLATE ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_INTERNAL , FILTERFLAG_INTERNAL ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_TEMPLATEPATH , FILTERFLAG_TEMPLATEPATH ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_OWN , FILTERFLAG_OWN ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_ALIEN , FILTERFLAG_ALIEN ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_USESOPTIONS , FILTERFLAG_USESOPTIONS ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_DEFAULT , FILTERFLAG_DEFAULT , "most important filter, if more then ones available" ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_NOTINFILEDIALOG , FILTERFLAG_NOTINFILEDIALOG, "don't show it in file dialogs!" ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_NOTINCHOOSER , FILTERFLAG_NOTINCHOOSER , "don't show it in chooser!" ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_ASYNCHRON , FILTERFLAG_ASYNCHRON ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_NOTINSTALLED , FILTERFLAG_NOTINSTALLED , "set, if the filter is not installed, but available on CD" ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_CONSULTSERVICE , FILTERFLAG_CONSULTSERVICE , "set, if the filter is not installed and not available an CD" ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_3RDPARTYFILTER , FILTERFLAG_3RDPARTYFILTER , "must set, if the filter is an external one" ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_PACKED , FILTERFLAG_PACKED ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_SILENTEXPORT , FILTERFLAG_SILENTEXPORT ); impl_generateFilterFlagTemplate( FILTERFLAGNAME_PREFERED , FILTERFLAG_PREFERED ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t0\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the user-defined data\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the file format version of the filter\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t0\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the template used for importing the file with the specified filter.\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\n" ); //_________________________________________________________________________________________________________________ } else if( m_aData.nVersionOutput>=3 ) { m_aData.sBufferStandard.appendAscii( "\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tMake it possible to enable or disable filter by setup!\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\tfalse\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the external name of the filter which is displayed at the user interface (dialog).\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tAll data of filter written in own format. {Order, OldName, Type, DocumentService, FilterService, Flags, UserData, FilteFormatVersion, TemplateName}\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\n" ); } } //***************************************************************************************************************** void XCDGenerator::impl_generateFilterFlagTemplate( const ::rtl::OUString& sName, sal_Int32 nValue, const ::rtl::OString& sDescription ) { m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t\t 0 ) { m_aData.sBufferStandard.appendAscii( ">\n\t\t\t\t\t\t\t" ); m_aData.sBufferStandard.appendAscii( sDescription ); m_aData.sBufferStandard.appendAscii( "\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\t\t\n" ); } else { m_aData.sBufferStandard.appendAscii( "/>\n" ); } } //***************************************************************************************************************** void XCDGenerator::impl_generateDetectorTemplate() { m_aData.sBufferStandard.appendAscii( "\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tList of types which the service has registered for.\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\n" ); } //***************************************************************************************************************** void XCDGenerator::impl_generateLoaderTemplate() { m_aData.sBufferStandard.appendAscii( "\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tSpecifies the external name of the filter which is displayed at the user interface (dialog).\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tList of types which the service has registered for.\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\n" ); } //***************************************************************************************************************** void XCDGenerator::impl_generateContentHandlerTemplate() { m_aData.sBufferStandard.appendAscii( "\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" : "false\">\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\tList of types which could be handled by this service.\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\n" ); } //***************************************************************************************************************** void XCDGenerator::impl_generateTypeSet() { if( m_aData.pFilterCache->hasTypes() == sal_False ) { // generate empty set! m_aData.sBufferStandard.appendAscii ( "\t\n" ); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { m_aData.sBufferAdditional.appendAscii( "\t\n" ); } } else { // generate filled set // open set m_aData.sBufferStandard.appendAscii ( "\t\n" ); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { m_aData.sBufferAdditional.appendAscii( "\t\n" ); } css::uno::Sequence< ::rtl::OUString > lNames = m_aData.pFilterCache->getAllTypeNames(); css::uno::Sequence< ::rtl::OUString > lEncNames ( lNames ) ; sal_Int32 nCount = lNames.getLength() ; sal_Int32 nItem = 0 ; XCDGenerator::impl_orderAlphabetical( lNames ); if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 ) { ::rtl::OUString sName ; ::rtl::OUString sEncName; for( nItem=0; nItemgetType( sName ); EFilterPackage ePackage ; ++m_aData.nWrittenTypes; if( m_aData.nVersionOutput==1 || m_aData.nVersionOutput==2 ) { // open set entry by using name m_aData.sBufferStandard.appendAscii( "\t\t\n" ); // write properties impl_generateBoolProperty ( m_aData.sBufferStandard, SUBKEY_PREFERRED , aItem.bPreferred ); impl_generateUINamesProperty ( m_aData.sBufferStandard, SUBKEY_UINAME , aItem.lUINames ); impl_generateStringProperty ( m_aData.sBufferStandard, SUBKEY_MEDIATYPE , aItem.sMediaType ); impl_generateStringProperty ( m_aData.sBufferStandard, SUBKEY_CLIPBOARDFORMAT , aItem.sClipboardFormat ); impl_generateStringListProperty ( m_aData.sBufferStandard, SUBKEY_URLPATTERN , aItem.lURLPattern ); impl_generateStringListProperty ( m_aData.sBufferStandard, SUBKEY_EXTENSIONS , aItem.lExtensions ); impl_generateIntProperty ( m_aData.sBufferStandard, SUBKEY_DOCUMENTICONID , aItem.nDocumentIconID ); // close set node m_aData.sBufferStandard.appendAscii( "\t\t\n" ); } else if( m_aData.nVersionOutput >= 3 ) { ::rtl::OUString sPath = DECLARE_ASCII("org.openoffice.Office."); ::rtl::OUStringBuffer* pXCDBuffer = &(m_aData.sBufferStandard ); ::rtl::OUStringBuffer* pSCPBuffer = &(m_aData.sNew2OldSCPStandard ); ::rtl::OUStringBuffer* pListBuffer = &(m_aData.sStandardTypeList ); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { XCDGenerator::impl_classifyType( m_aData, sName, ePackage ); switch( ePackage ) { case E_ADDITIONAL : { sPath += m_aData.sPackageAdditional ; pXCDBuffer = &(m_aData.sBufferAdditional ); pSCPBuffer = &(m_aData.sNew2OldSCPAdditional); pListBuffer = &(m_aData.sAdditionalTypeList ); } } } else { sPath += m_aData.sPackageStandard; } sPath += CFG_PATH_SEPERATOR ; sPath += DECLARE_ASCII( "Types" ); sPath += CFG_PATH_SEPERATOR ; pListBuffer->append ( sName ); pListBuffer->appendAscii( "\n" ); if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 ) { pSCPBuffer->appendAscii( "\"" ); pSCPBuffer->append ( sPath ); pSCPBuffer->append ( lNames[nItem] ); pSCPBuffer->appendAscii( "\"\t\"" ); pSCPBuffer->append ( sPath ); pSCPBuffer->appendAscii( "Type" ); pSCPBuffer->append ( CFG_ENCODING_OPEN ); pSCPBuffer->append ( lNames[nItem] ); pSCPBuffer->append ( CFG_ENCODING_CLOSE ); pSCPBuffer->appendAscii( "\"\n" ); sName = lEncNames[nItem]; aItem.sName = sName; } // open set entry by using name pXCDBuffer->appendAscii( "\t\tappend ( sName ); pXCDBuffer->appendAscii( "\">\n" ); // write properties impl_generateUINamesProperty( *pXCDBuffer, SUBKEY_UINAME, aItem.lUINames ); impl_generateStringProperty ( *pXCDBuffer, SUBKEY_DATA , FilterCFGAccess::encodeTypeData( aItem ) ); // close set node pXCDBuffer->appendAscii( "\t\t\n" ); } } // close set m_aData.sBufferStandard.appendAscii( "\t\n" ); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { m_aData.sBufferAdditional.appendAscii( "\t\n" ); } } } //***************************************************************************************************************** void XCDGenerator::impl_generateFilterSet() { if( m_aData.pFilterCache->hasFilters() == sal_False ) { // write empty filter set. m_aData.sBufferStandard.appendAscii( "\t\n" ); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { m_aData.sBufferAdditional.appendAscii( "\t\n" ); } } else { // open set m_aData.sBufferStandard.appendAscii( "\t\n" ); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { m_aData.sBufferAdditional.appendAscii( "\t\n" ); } css::uno::Sequence< ::rtl::OUString > lNewNames = m_aData.pFilterCache->getAllFilterNames(); css::uno::Sequence< ::rtl::OUString > lOldNames ( lNewNames ) ; css::uno::Sequence< ::rtl::OUString > lEncNames ( lNewNames ) ; sal_Int32 nCount = lNewNames.getLength() ; sal_Int32 nItem = 0 ; XCDGenerator::impl_orderAlphabetical( lNewNames ); if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 ) { ::rtl::OUString sNewName; ::rtl::OUString sOldName; for( nItem=0; nItemgetFilter( lNewNames[nItem] ) ; EFilterPackage ePackage ; ++m_aData.nWrittenFilters; if( m_aData.nVersionOutput==1 || m_aData.nVersionOutput==2 ) { // open set node by using name m_aData.sBufferStandard.appendAscii( "\t\t\n" ); // write properties // Attention: // We generate "Installed=false" for all entries ... because it's the default for all filters. // You must work with a full office installation and change this to "true" in generated XML file!!! impl_generateBoolProperty ( m_aData.sBufferStandard, SUBKEY_INSTALLED , sal_False ); impl_generateIntProperty ( m_aData.sBufferStandard, SUBKEY_ORDER , aItem.nOrder ); impl_generateStringProperty ( m_aData.sBufferStandard, SUBKEY_TYPE , aItem.sType ); impl_generateUINamesProperty ( m_aData.sBufferStandard, SUBKEY_UINAME , aItem.lUINames ); impl_generateStringProperty ( m_aData.sBufferStandard, SUBKEY_DOCUMENTSERVICE , aItem.sDocumentService ); impl_generateStringProperty ( m_aData.sBufferStandard, SUBKEY_FILTERSERVICE , aItem.sFilterService ); impl_generateIntProperty ( m_aData.sBufferStandard, SUBKEY_FLAGS , aItem.nFlags ); impl_generateStringListProperty ( m_aData.sBufferStandard, SUBKEY_USERDATA , aItem.lUserData ); impl_generateIntProperty ( m_aData.sBufferStandard, SUBKEY_FILEFORMATVERSION, aItem.nFileFormatVersion ); impl_generateStringProperty ( m_aData.sBufferStandard, SUBKEY_TEMPLATENAME , aItem.sTemplateName ); // close set node m_aData.sBufferStandard.appendAscii( "\t\t\n" ); } else if( m_aData.nVersionOutput>=3 ) { ::rtl::OUString sPath = DECLARE_ASCII("org.openoffice.Office."); ::rtl::OUStringBuffer* pXCDBuffer = &(m_aData.sBufferStandard ); ::rtl::OUStringBuffer* pSCPBuffer = &(m_aData.sNew2OldSCPStandard ); ::rtl::OUStringBuffer* pListBuffer = &(m_aData.sStandardFilterList ); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { XCDGenerator::impl_classifyFilter( m_aData, sName, ePackage, aItem.nOrder ); switch( ePackage ) { case E_ADDITIONAL : { sPath += m_aData.sPackageAdditional ; pXCDBuffer = &(m_aData.sBufferAdditional ); pSCPBuffer = &(m_aData.sNew2OldSCPAdditional); pListBuffer = &(m_aData.sAdditionalFilterList); } } } else { sPath += m_aData.sPackageStandard; } sPath += CFG_PATH_SEPERATOR ; sPath += DECLARE_ASCII( "Filters" ); sPath += CFG_PATH_SEPERATOR ; pListBuffer->append ( sName ); pListBuffer->appendAscii( "\n" ); if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 ) { pSCPBuffer->appendAscii( "\"" ); pSCPBuffer->append ( sPath ); pSCPBuffer->append ( lNewNames[nItem] ); pSCPBuffer->appendAscii( "\"\t\"" ); pSCPBuffer->append ( sPath ); pSCPBuffer->appendAscii( "Filter" ); pSCPBuffer->append ( CFG_ENCODING_OPEN ); pSCPBuffer->append ( lOldNames[nItem] ); pSCPBuffer->append ( CFG_ENCODING_CLOSE ); pSCPBuffer->appendAscii( "\"\n" ); sName = lEncNames[nItem]; aItem.sName = sName; } // open set node by using name pXCDBuffer->appendAscii( "\t\tappend ( sName ); pXCDBuffer->appendAscii( "\">\n" ); // write properties // Attention: // We generate "Installed=false" for all entries ... because it's the default for all filters. // You must work with a full office installation and change this to "true" in generated XML file!!! impl_generateBoolProperty ( *pXCDBuffer, SUBKEY_INSTALLED, sal_False ); impl_generateUINamesProperty( *pXCDBuffer, SUBKEY_UINAME , aItem.lUINames ); impl_generateStringProperty ( *pXCDBuffer, SUBKEY_DATA , FilterCFGAccess::encodeFilterData( aItem ) ); // close set node pXCDBuffer->appendAscii( "\t\t\n" ); } } // close set m_aData.sBufferStandard.appendAscii( "\t\n" ); if( m_aData.nVersionOutput >= DRAFT_SPLIT_VERSION ) { m_aData.sBufferAdditional.appendAscii( "\t\n" ); } } } //***************************************************************************************************************** void XCDGenerator::impl_generateDetectorSet() { if( m_aData.pFilterCache->hasDetectors() == sal_False ) { // write empty detector set! m_aData.sBufferStandard.appendAscii( "\t\n" ); } else { // open set m_aData.sBufferStandard.appendAscii( "\t\n" ); css::uno::Sequence< ::rtl::OUString > lNames = m_aData.pFilterCache->getAllDetectorNames(); css::uno::Sequence< ::rtl::OUString > lEncNames ( lNames ) ; sal_Int32 nCount = lNames.getLength() ; sal_Int32 nItem = 0 ; XCDGenerator::impl_orderAlphabetical( lNames ); if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 ) { ::rtl::OUString sName ; ::rtl::OUString sEncName; for( nItem=0; nItemgetDetector( sName ); if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 ) { sName = lEncNames[nItem]; } ++m_aData.nWrittenDetectors; // open set node by using name m_aData.sBufferStandard.appendAscii( "\t\t\n" ); // write properties impl_generateStringListProperty ( m_aData.sBufferStandard, SUBKEY_TYPES, aItem.lTypes ); // close set node m_aData.sBufferStandard.appendAscii( "\t\t\n" ); } // close set m_aData.sBufferStandard.appendAscii( "\t\n" ); } } //***************************************************************************************************************** void XCDGenerator::impl_generateLoaderSet() { if( m_aData.pFilterCache->hasLoaders() == sal_False ) { // write empty loader set! m_aData.sBufferStandard.appendAscii( "\t\n" ); } else { // open set m_aData.sBufferStandard.appendAscii( "\t\n" ); css::uno::Sequence< ::rtl::OUString > lNames = m_aData.pFilterCache->getAllLoaderNames(); css::uno::Sequence< ::rtl::OUString > lEncNames ( lNames ) ; sal_Int32 nCount = lNames.getLength() ; sal_Int32 nItem = 0 ; XCDGenerator::impl_orderAlphabetical( lNames ); if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 ) { ::rtl::OUString sName ; ::rtl::OUString sEncName; for( nItem=0; nItemgetLoader( sName ); if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 ) { sName = lEncNames[nItem]; } ++m_aData.nWrittenLoaders; // open set node by using name m_aData.sBufferStandard.appendAscii( "\t\t\n" ); // write properties impl_generateUINamesProperty ( m_aData.sBufferStandard, SUBKEY_UINAME, aItem.lUINames ); impl_generateStringListProperty ( m_aData.sBufferStandard, SUBKEY_TYPES , aItem.lTypes ); // close set node m_aData.sBufferStandard.appendAscii( "\t\t\n" ); } // close set m_aData.sBufferStandard.appendAscii( "\t\n" ); } } //***************************************************************************************************************** void XCDGenerator::impl_generateDefaults() { // open group m_aData.sBufferStandard.appendAscii( "\t\n" ); // write generic loader m_aData.sBufferStandard.appendAscii( "\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t" ); m_aData.sBufferStandard.append ( m_aData.pFilterCache->getDefaultLoader() ); m_aData.sBufferStandard.appendAscii( "\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\n" ); // write default detector m_aData.sBufferStandard.appendAscii( "\t\t\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\t" ); m_aData.sBufferStandard.append ( m_aData.pFilterCache->getDefaultDetector() ); m_aData.sBufferStandard.appendAscii( "\n" ); m_aData.sBufferStandard.appendAscii( "\t\t\n" ); // close group m_aData.sBufferStandard.appendAscii( "\t\n" ); } //***************************************************************************************************************** void XCDGenerator::impl_generateContentHandlerSet() { if( m_aData.pFilterCache->hasContentHandlers() == sal_False ) { // write empty handler set! m_aData.sBufferStandard.appendAscii( "\t\n" ); } else { // open set m_aData.sBufferStandard.appendAscii( "\t\n" ); css::uno::Sequence< ::rtl::OUString > lNames = m_aData.pFilterCache->getAllContentHandlerNames(); css::uno::Sequence< ::rtl::OUString > lEncNames ( lNames ) ; sal_Int32 nCount = lNames.getLength() ; sal_Int32 nItem = 0 ; XCDGenerator::impl_orderAlphabetical( lNames ); if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 ) { ::rtl::OUString sName ; ::rtl::OUString sEncName; for( nItem=0; nItemgetContentHandler( sName ); if( m_aData.nVersionOutput == 6 && m_aData.nVersionInput < 6 ) { sName = lEncNames[nItem]; } ++m_aData.nWrittenContentHandlers; // open set node by using name m_aData.sBufferStandard.appendAscii( "\t\t\n" ); // write properties impl_generateStringListProperty( m_aData.sBufferStandard, SUBKEY_TYPES, aItem.lTypes ); // close set node m_aData.sBufferStandard.appendAscii( "\t\t\n" ); } // close set m_aData.sBufferStandard.appendAscii( "\t\n" ); } } //***************************************************************************************************************** void XCDGenerator::impl_generateIntProperty( ::rtl::OUStringBuffer& sXCD , const ::rtl::OUString& sName , sal_Int32 nValue ) { sXCD.appendAscii( "\t\t\t\n" : "false\">\n" ); sXCD.appendAscii( "\t\t\t\t" ); sXCD.append ( (sal_Int32)(nValue) ); sXCD.appendAscii( "\n\t\t\t\n" ); } //***************************************************************************************************************** void XCDGenerator::impl_generateBoolProperty( ::rtl::OUStringBuffer& sXCD , const ::rtl::OUString& sName , sal_Bool bValue ) { sXCD.appendAscii( "\t\t\t\n" : "false\">\n" ); sXCD.appendAscii( "\t\t\t\t" ); sXCD.appendAscii( bValue==sal_True ? "true" : "false" ); sXCD.appendAscii( "\n\t\t\t\n" ); } //***************************************************************************************************************** void XCDGenerator::impl_generateStringProperty( ::rtl::OUStringBuffer& sXCD , const ::rtl::OUString& sName , const ::rtl::OUString& sValue ) { sXCD.appendAscii( "\t\t\t 0 ) { sXCD.appendAscii( ">\n\t\t\t\t" ); sXCD.append ( XCDGenerator::impl_encodeSpecialSigns( sValue ) ); sXCD.appendAscii( "\n\t\t\t\n" ); } else { sXCD.appendAscii( "/>\n" ); } } //***************************************************************************************************************** void XCDGenerator::impl_generateStringListProperty( ::rtl::OUStringBuffer& sXCD , const ::rtl::OUString& sName , const ::framework::StringList& lValue ) { sXCD.appendAscii( "\t\t\t 0 ) { sXCD.appendAscii( ">\n\t\t\t\t" ); for( ConstStringListIterator pEntry=lValue.begin(); pEntry!=lValue.end(); ++pEntry ) { sXCD.append( *pEntry ); if( nPosition < nCount ) { // Seperator for lists allowed only between two values! // Don't write leading or leaving seperators ... sXCD.append( cSeperator ); } ++nPosition; } sXCD.appendAscii( "\n\t\t\t\n" ); } else { sXCD.appendAscii( "/>\n" ); } } //***************************************************************************************************************** void XCDGenerator::impl_generateUINamesProperty( ::rtl::OUStringBuffer& sXCD , const ::rtl::OUString& sName , const StringHash& lUINames ) { sXCD.appendAscii( "\t\t\t 0 ) { sXCD.appendAscii( ">\n" ); // Search for localized values, which doesn't need full localized set ... // because all values for all locales are the same! sal_Bool bDifferent = sal_False ; ConstStringHashIterator pUIName = lUINames.begin(); ::rtl::OUString sUIName = pUIName->second ; while( pUIName!=lUINames.end() ) { if( sUIName != pUIName->second ) { bDifferent = sal_True; break; } ++pUIName; } // Generate full localized set, if some values are really loclaized. if( bDifferent == sal_True ) { for( ConstStringHashIterator pUIName=lUINames.begin(); pUIName!=lUINames.end(); ++pUIName ) { sXCD.appendAscii( "\t\t\t\tfirst ); sXCD.appendAscii( "\">" ); sXCD.append ( XCDGenerator::impl_encodeSpecialSigns( pUIName->second ) ); sXCD.appendAscii( "\n" ); } } // Generate ONE entry as default for our configuration if all localized values are equal! else { sXCD.appendAscii( "\t\t\t\t" ); sXCD.append ( XCDGenerator::impl_encodeSpecialSigns( lUINames.find(DECLARE_ASCII("en-US"))->second )); sXCD.appendAscii( "\n" ); } sXCD.appendAscii( "\t\t\t\n" ); } else { sXCD.appendAscii( "/>\n" ); } } //***************************************************************************************************************** ::rtl::OUString XCDGenerator::impl_encodeSpecialSigns( const ::rtl::OUString& sValue ) { ::rtl::OUStringBuffer sSource ( sValue ); ::rtl::OUStringBuffer sDestination( 10000 ); sal_Int32 nCount = sValue.getLength(); sal_Int32 i = 0; for( i=0; i ... case '&' : sDestination.appendAscii( "&" ); break; case '<' : sDestination.appendAscii( "<" ); break; case '>' : sDestination.appendAscii( ">" ); break; case '\'': sDestination.appendAscii( "’" ); break; case '\"': sDestination.appendAscii( """ ); break; // copy all other letters default : sDestination.append( cSign ); break; } } return sDestination.makeStringAndClear(); } //***************************************************************************************************************** // Step over all elements of list to find one seperator, which isn't used for any value in list. // We return an empty string if list contains no elements - because we must disable writing of // "... cfg:seperator=" ..." // => Otherwise we get a Sequence< OUString > with one empty element from configuration!!! sal_Unicode XCDGenerator::impl_defineSeperator( const ::framework::StringList& lList ) { static cSeperator1 = ' '; static cSeperator2 = ';'; static cSeperator3 = '+'; static cSeperator4 = '-'; static cSeperator5 = '*'; // Start with first seperator. // Step over all list items. // If one item contains this seperator - try next one! // If no new one available (5 tests failed!) - show an error message for user. // => File will be wrong then! // If seperator was changed start search during list again ... because // new seperator could exist at already compared elements! sal_Unicode cSeperator = cSeperator1 ; sal_Bool bOK = sal_False ; ConstStringListIterator pItem = lList.begin(); while( bOK == sal_False ) { if( pItem == lList.end() ) { bOK = sal_True; } else { while( pItem!=lList.end() ) { if( pItem->indexOf( cSeperator, 0 ) != -1 ) { if( cSeperator == cSeperator1 ) { cSeperator = cSeperator2; pItem = lList.begin(); break; } else if( cSeperator == cSeperator2 ) { cSeperator = cSeperator3; pItem = lList.begin(); break; } else if( cSeperator == cSeperator3 ) { cSeperator = cSeperator4; pItem = lList.begin(); break; } else if( cSeperator == cSeperator4 ) { cSeperator = cSeperator5; pItem = lList.begin(); break; } else if( cSeperator == cSeperator5 ) { LOG_ERROR( "XCDGenerator::impl_defineSeperator()", "Can't find seperator for given list! Generated XCD file will be wrong!" ) exit(-1); } } else { ++pItem; } } } } return cSeperator; } //***************************************************************************************************************** void XCDGenerator::impl_initFilterHashNew2Old( StringHash& aHash ) { // key = new filter name, value = old name aHash[DECLARE_ASCII("writer_StarOffice_XML_Writer" )] = DECLARE_ASCII("swriter: StarOffice XML (Writer)" ); aHash[DECLARE_ASCII("writer_StarWriter_50" )] = DECLARE_ASCII("swriter: StarWriter 5.0" ); aHash[DECLARE_ASCII("writer_StarWriter_50_VorlageTemplate" )] = DECLARE_ASCII("swriter: StarWriter 5.0 Vorlage/Template" ); aHash[DECLARE_ASCII("writer_StarWriter_40" )] = DECLARE_ASCII("swriter: StarWriter 4.0" ); aHash[DECLARE_ASCII("writer_StarWriter_40_VorlageTemplate" )] = DECLARE_ASCII("swriter: StarWriter 4.0 Vorlage/Template" ); aHash[DECLARE_ASCII("writer_StarWriter_30" )] = DECLARE_ASCII("swriter: StarWriter 3.0" ); aHash[DECLARE_ASCII("writer_StarWriter_30_VorlageTemplate" )] = DECLARE_ASCII("swriter: StarWriter 3.0 Vorlage/Template" ); aHash[DECLARE_ASCII("writer_StarWriter_20" )] = DECLARE_ASCII("swriter: StarWriter 2.0" ); aHash[DECLARE_ASCII("writer_StarWriter_10" )] = DECLARE_ASCII("swriter: StarWriter 1.0" ); aHash[DECLARE_ASCII("writer_StarWriter_DOS" )] = DECLARE_ASCII("swriter: StarWriter DOS" ); aHash[DECLARE_ASCII("writer_HTML_StarWriter" )] = DECLARE_ASCII("swriter: HTML (StarWriter)" ); aHash[DECLARE_ASCII("writer_Text" )] = DECLARE_ASCII("swriter: Text" ); aHash[DECLARE_ASCII("writer_Text_Unix" )] = DECLARE_ASCII("swriter: Text Unix" ); aHash[DECLARE_ASCII("writer_Text_Mac" )] = DECLARE_ASCII("swriter: Text Mac" ); aHash[DECLARE_ASCII("writer_Text_DOS" )] = DECLARE_ASCII("swriter: Text DOS" ); aHash[DECLARE_ASCII("writer_Rich_Text_Format" )] = DECLARE_ASCII("swriter: Rich Text Format" ); aHash[DECLARE_ASCII("writer_MS_Word_97" )] = DECLARE_ASCII("swriter: MS Word 97" ); aHash[DECLARE_ASCII("writer_MS_Word_95" )] = DECLARE_ASCII("swriter: MS Word 95" ); aHash[DECLARE_ASCII("writer_MS_Word_97_Vorlage" )] = DECLARE_ASCII("swriter: MS Word 97 Vorlage" ); aHash[DECLARE_ASCII("writer_MS_Word_95_Vorlage" )] = DECLARE_ASCII("swriter: MS Word 95 Vorlage" ); aHash[DECLARE_ASCII("writer_MS_WinWord_60" )] = DECLARE_ASCII("swriter: MS WinWord 6.0" ); aHash[DECLARE_ASCII("writer_MS_Word_6x_W4W" )] = DECLARE_ASCII("swriter: MS Word 6.x (W4W)" ); aHash[DECLARE_ASCII("writer_MS_WinWord_5" )] = DECLARE_ASCII("swriter: MS WinWord 5" ); aHash[DECLARE_ASCII("writer_MS_WinWord_2x_W4W" )] = DECLARE_ASCII("swriter: MS WinWord 2.x (W4W)" ); aHash[DECLARE_ASCII("writer_MS_MacWord_5x_W4W" )] = DECLARE_ASCII("swriter: MS MacWord 5.x (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_Win_61_W4W" )] = DECLARE_ASCII("swriter: WordPerfect (Win) 6.1 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_Win_70_W4W" )] = DECLARE_ASCII("swriter: WordPerfect (Win) 7.0 (W4W)" ); aHash[DECLARE_ASCII("writer_WordStar_Win_1x_20_W4W" )] = DECLARE_ASCII("swriter: WordStar (Win) 1.x-2.0 (W4W)" ); aHash[DECLARE_ASCII("writer_WordStar_70_W4W" )] = DECLARE_ASCII("swriter: WordStar 7.0 (W4W)" ); aHash[DECLARE_ASCII("writer_Ami_Pro_11_12_W4W" )] = DECLARE_ASCII("swriter: Ami Pro 1.1-1.2 (W4W)" ); aHash[DECLARE_ASCII("writer_Ami_Pro_20_31_W4W" )] = DECLARE_ASCII("swriter: Ami Pro 2.0-3.1 (W4W)" ); aHash[DECLARE_ASCII("writer_MS_Excel_40_StarWriter" )] = DECLARE_ASCII("swriter: MS Excel 4.0 (StarWriter)" ); aHash[DECLARE_ASCII("writer_MS_Excel_50_StarWriter" )] = DECLARE_ASCII("swriter: MS Excel 5.0 (StarWriter)" ); aHash[DECLARE_ASCII("writer_MS_Excel_95_StarWriter" )] = DECLARE_ASCII("swriter: MS Excel 95 (StarWriter)" ); aHash[DECLARE_ASCII("writer_MS_Works_20_DOS_W4W" )] = DECLARE_ASCII("swriter: MS Works 2.0 DOS (W4W)" ); aHash[DECLARE_ASCII("writer_MS_Works_30_Win_W4W" )] = DECLARE_ASCII("swriter: MS Works 3.0 Win (W4W)" ); aHash[DECLARE_ASCII("writer_Lotus_1_2_3_10_DOS_StarWriter" )] = DECLARE_ASCII("swriter: Lotus 1-2-3 1.0 (DOS) (StarWriter)" ); aHash[DECLARE_ASCII("writer_Lotus_1_2_3_10_WIN_StarWriter" )] = DECLARE_ASCII("swriter: Lotus 1-2-3 1.0 (WIN) (StarWriter)" ); aHash[DECLARE_ASCII("writer_Frame_Maker_MIF_50_W4W" )] = DECLARE_ASCII("swriter: Frame Maker MIF 5.0 (W4W)" ); aHash[DECLARE_ASCII("writer_Win_Write_3x_W4W" )] = DECLARE_ASCII("swriter: Win Write 3.x (W4W)" ); aHash[DECLARE_ASCII("writer_Text_encoded" )] = DECLARE_ASCII("swriter: Text (encoded)" ); aHash[DECLARE_ASCII("writer_MS_WinWord_1x_W4W" )] = DECLARE_ASCII("swriter: MS WinWord 1.x (W4W)" ); aHash[DECLARE_ASCII("writer_MS_Word_5x_W4W" )] = DECLARE_ASCII("swriter: MS Word 5.x (W4W)" ); aHash[DECLARE_ASCII("writer_MS_Word_4x_W4W" )] = DECLARE_ASCII("swriter: MS Word 4.x (W4W)" ); aHash[DECLARE_ASCII("writer_MS_Word_3x_W4W" )] = DECLARE_ASCII("swriter: MS Word 3.x (W4W)" ); aHash[DECLARE_ASCII("writer_MS_MacWord_40_W4W" )] = DECLARE_ASCII("swriter: MS MacWord 4.0 (W4W)" ); aHash[DECLARE_ASCII("writer_MS_MacWord_30_W4W" )] = DECLARE_ASCII("swriter: MS MacWord 3.0 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_Mac_1_W4W" )] = DECLARE_ASCII("swriter: WordPerfect Mac 1 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_Mac_2_W4W" )] = DECLARE_ASCII("swriter: WordPerfect Mac 2 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_Mac_3_W4W" )] = DECLARE_ASCII("swriter: WordPerfect Mac 3 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_Win_51_52_W4W" )] = DECLARE_ASCII("swriter: WordPerfect (Win) 5.1-5.2 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_Win_60_W4W" )] = DECLARE_ASCII("swriter: WordPerfect (Win) 6.0 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_41_W4W" )] = DECLARE_ASCII("swriter: WordPerfect 4.1 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_42_W4W" )] = DECLARE_ASCII("swriter: WordPerfect 4.2 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_50_W4W" )] = DECLARE_ASCII("swriter: WordPerfect 5.0 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_51_W4W" )] = DECLARE_ASCII("swriter: WordPerfect 5.1 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_60_W4W" )] = DECLARE_ASCII("swriter: WordPerfect 6.0 (W4W)" ); aHash[DECLARE_ASCII("writer_WordPerfect_61_W4W" )] = DECLARE_ASCII("swriter: WordPerfect 6.1 (W4W)" ); aHash[DECLARE_ASCII("writer_WordStar_2000_Rel_30_W4W" )] = DECLARE_ASCII("swriter: WordStar 2000 Rel. 3.0 (W4W)" ); aHash[DECLARE_ASCII("writer_WordStar_2000_Rel_35_W4W" )] = DECLARE_ASCII("swriter: WordStar 2000 Rel. 3.5 (W4W)" ); aHash[DECLARE_ASCII("writer_WordStar_33x_W4W" )] = DECLARE_ASCII("swriter: WordStar 3.3x (W4W)" ); aHash[DECLARE_ASCII("writer_WordStar_345_W4W" )] = DECLARE_ASCII("swriter: WordStar 3.45 (W4W)" ); aHash[DECLARE_ASCII("writer_WordStar_40_W4W" )] = DECLARE_ASCII("swriter: WordStar 4.0 (W4W)" ); aHash[DECLARE_ASCII("writer_WordStar_50_W4W" )] = DECLARE_ASCII("swriter: WordStar 5.0 (W4W)" ); aHash[DECLARE_ASCII("writer_WordStar_55_W4W" )] = DECLARE_ASCII("swriter: WordStar 5.5 (W4W)" ); aHash[DECLARE_ASCII("writer_WordStar_60_W4W" )] = DECLARE_ASCII("swriter: WordStar 6.0 (W4W)" ); aHash[DECLARE_ASCII("writer_MS_Works_40_Mac_W4W" )] = DECLARE_ASCII("swriter: MS Works 4.0 Mac (W4W)" ); aHash[DECLARE_ASCII("writer_Mac_Write_4x_50_W4W" )] = DECLARE_ASCII("swriter: Mac Write 4.x 5.0 (W4W)" ); aHash[DECLARE_ASCII("writer_Mac_Write_II_W4W" )] = DECLARE_ASCII("swriter: Mac Write II (W4W)" ); aHash[DECLARE_ASCII("writer_Mac_Write_Pro_W4W" )] = DECLARE_ASCII("swriter: Mac Write Pro (W4W)" ); aHash[DECLARE_ASCII("writer_Lotus_Manuscript_W4W" )] = DECLARE_ASCII("swriter: Lotus Manuscript (W4W)" ); aHash[DECLARE_ASCII("writer_MASS_11_Rel_80_83_W4W" )] = DECLARE_ASCII("swriter: MASS 11 Rel. 8.0-8.3 (W4W)" ); aHash[DECLARE_ASCII("writer_MASS_11_Rel_85_90_W4W" )] = DECLARE_ASCII("swriter: MASS 11 Rel. 8.5-9.0 (W4W)" ); aHash[DECLARE_ASCII("writer_Claris_Works_W4W" )] = DECLARE_ASCII("swriter: Claris Works (W4W)" ); aHash[DECLARE_ASCII("writer_CTOS_DEF_W4W" )] = DECLARE_ASCII("swriter: CTOS DEF (W4W)" ); aHash[DECLARE_ASCII("writer_OfficeWriter_40_W4W" )] = DECLARE_ASCII("swriter: OfficeWriter 4.0 (W4W)" ); aHash[DECLARE_ASCII("writer_OfficeWriter_50_W4W" )] = DECLARE_ASCII("swriter: OfficeWriter 5.0 (W4W)" ); aHash[DECLARE_ASCII("writer_OfficeWriter_6x_W4W" )] = DECLARE_ASCII("swriter: OfficeWriter 6.x (W4W)" ); aHash[DECLARE_ASCII("writer_XyWrite_III_W4W" )] = DECLARE_ASCII("swriter: XyWrite III ( W4W)" ); aHash[DECLARE_ASCII("writer_XyWrite_IIIP_W4W" )] = DECLARE_ASCII("swriter: XyWrite III+ ( W4W)" ); aHash[DECLARE_ASCII("writer_XyWrite_Signature_W4W" )] = DECLARE_ASCII("swriter: XyWrite Signature (W4W)" ); aHash[DECLARE_ASCII("writer_XyWrite_Sig_Win_W4W" )] = DECLARE_ASCII("swriter: XyWrite Sig. (Win) (W4W)" ); aHash[DECLARE_ASCII("writer_XyWrite_IV_W4W" )] = DECLARE_ASCII("swriter: XyWrite IV (W4W)" ); aHash[DECLARE_ASCII("writer_XyWrite_Win_10_W4W" )] = DECLARE_ASCII("swriter: XyWrite (Win) 1.0 (W4W)" ); aHash[DECLARE_ASCII("writer_XEROX_XIF_50_W4W" )] = DECLARE_ASCII("swriter: XEROX XIF 5.0 (W4W)" ); aHash[DECLARE_ASCII("writer_XEROX_XIF_50_Illustrator_W4W" )] = DECLARE_ASCII("swriter: XEROX XIF 5.0 (Illustrator) (W4W)" ); aHash[DECLARE_ASCII("writer_XEROX_XIF_60_Color_Bitmap_W4W" )] = DECLARE_ASCII("swriter: XEROX XIF 6.0 (Color Bitmap) (W4W)" ); aHash[DECLARE_ASCII("writer_XEROX_XIF_60_Res_Graphic_W4W" )] = DECLARE_ASCII("swriter: XEROX XIF 6.0 (Res Graphic) (W4W)" ); aHash[DECLARE_ASCII("writer_WriteNow_30_Macintosh_W4W" )] = DECLARE_ASCII("swriter: WriteNow 3.0 (Macintosh) (W4W)" ); aHash[DECLARE_ASCII("writer_Writing_Assistant_W4W" )] = DECLARE_ASCII("swriter: Writing Assistant (W4W)" ); aHash[DECLARE_ASCII("writer_VolksWriter_Deluxe_W4W" )] = DECLARE_ASCII("swriter: VolksWriter Deluxe (W4W)" ); aHash[DECLARE_ASCII("writer_VolksWriter_3_and_4_W4W" )] = DECLARE_ASCII("swriter: VolksWriter 3 and 4 (W4W)" ); aHash[DECLARE_ASCII("writer_MultiMate_33_W4W" )] = DECLARE_ASCII("swriter: MultiMate 3.3 (W4W)" ); aHash[DECLARE_ASCII("writer_MultiMate_Adv_36_W4W" )] = DECLARE_ASCII("swriter: MultiMate Adv. 3.6 (W4W)" ); aHash[DECLARE_ASCII("writer_MultiMate_Adv_II_37_W4W" )] = DECLARE_ASCII("swriter: MultiMate Adv. II 3.7 (W4W)" ); aHash[DECLARE_ASCII("writer_MultiMate_4_W4W" )] = DECLARE_ASCII("swriter: MultiMate 4 (W4W)" ); aHash[DECLARE_ASCII("writer_NAVY_DIF_W4W" )] = DECLARE_ASCII("swriter: NAVY DIF (W4W)" ); aHash[DECLARE_ASCII("writer_PFS_Write_W4W" )] = DECLARE_ASCII("swriter: PFS Write (W4W)" ); aHash[DECLARE_ASCII("writer_PFS_First_Choice_10_W4W" )] = DECLARE_ASCII("swriter: PFS First Choice 1.0 (W4W)" ); aHash[DECLARE_ASCII("writer_PFS_First_Choice_20_W4W" )] = DECLARE_ASCII("swriter: PFS First Choice 2.0 (W4W)" ); aHash[DECLARE_ASCII("writer_PFS_First_Choice_30_W4W" )] = DECLARE_ASCII("swriter: PFS First Choice 3.0 (W4W)" ); aHash[DECLARE_ASCII("writer_Professional_Write_10_W4W" )] = DECLARE_ASCII("swriter: Professional Write 1.0 (W4W)" ); aHash[DECLARE_ASCII("writer_Professional_Write_2x_W4W" )] = DECLARE_ASCII("swriter: Professional Write 2.x (W4W)" ); aHash[DECLARE_ASCII("writer_Professional_Write_Plus_W4W" )] = DECLARE_ASCII("swriter: Professional Write Plus (W4W)" ); aHash[DECLARE_ASCII("writer_Peach_Text_W4W" )] = DECLARE_ASCII("swriter: Peach Text (W4W)" ); aHash[DECLARE_ASCII("writer_DCA_Revisable_Form_Text_W4W" )] = DECLARE_ASCII("swriter: DCA Revisable Form Text (W4W)" ); aHash[DECLARE_ASCII("writer_DCA_with_Display_Write_5_W4W" )] = DECLARE_ASCII("swriter: DCA with Display Write 5 (W4W)" ); aHash[DECLARE_ASCII("writer_DCAFFT_Final_Form_Text_W4W" )] = DECLARE_ASCII("swriter: DCA/FFT-Final Form Text (W4W)" ); aHash[DECLARE_ASCII("writer_DEC_DX_W4W" )] = DECLARE_ASCII("swriter: DEC DX (W4W)" ); aHash[DECLARE_ASCII("writer_DEC_WPS_PLUS_W4W" )] = DECLARE_ASCII("swriter: DEC WPS-PLUS (W4W)" ); aHash[DECLARE_ASCII("writer_DisplayWrite_20_4x_W4W" )] = DECLARE_ASCII("swriter: DisplayWrite 2.0-4.x (W4W)" ); aHash[DECLARE_ASCII("writer_DisplayWrite_5x_W4W" )] = DECLARE_ASCII("swriter: DisplayWrite 5.x (W4W)" ); aHash[DECLARE_ASCII("writer_DataGeneral_CEO_Write_W4W" )] = DECLARE_ASCII("swriter: DataGeneral CEO Write (W4W)" ); aHash[DECLARE_ASCII("writer_EBCDIC_W4W" )] = DECLARE_ASCII("swriter: EBCDIC (W4W)" ); aHash[DECLARE_ASCII("writer_Enable_W4W" )] = DECLARE_ASCII("swriter: Enable (W4W)" ); aHash[DECLARE_ASCII("writer_Frame_Maker_MIF_30_W4W" )] = DECLARE_ASCII("swriter: Frame Maker MIF 3.0 (W4W)" ); aHash[DECLARE_ASCII("writer_Frame_Maker_MIF_40_W4W" )] = DECLARE_ASCII("swriter: Frame Maker MIF 4.0 (W4W)" ); aHash[DECLARE_ASCII("writer_Frame_Work_III_W4W" )] = DECLARE_ASCII("swriter: Frame Work III (W4W)" ); aHash[DECLARE_ASCII("writer_Frame_Work_IV_W4W" )] = DECLARE_ASCII("swriter: Frame Work IV (W4W)" ); aHash[DECLARE_ASCII("writer_HP_AdvanceWrite_Plus_W4W" )] = DECLARE_ASCII("swriter: HP AdvanceWrite Plus (W4W)" ); aHash[DECLARE_ASCII("writer_ICL_Office_Power_6_W4W" )] = DECLARE_ASCII("swriter: ICL Office Power 6 (W4W)" ); aHash[DECLARE_ASCII("writer_ICL_Office_Power_7_W4W" )] = DECLARE_ASCII("swriter: ICL Office Power 7 (W4W)" ); aHash[DECLARE_ASCII("writer_Interleaf_W4W" )] = DECLARE_ASCII("swriter: Interleaf (W4W)" ); aHash[DECLARE_ASCII("writer_Interleaf_5_6_W4W" )] = DECLARE_ASCII("swriter: Interleaf 5 - 6 (W4W)" ); aHash[DECLARE_ASCII("writer_Legacy_Winstar_onGO_W4W" )] = DECLARE_ASCII("swriter: Legacy Winstar onGO (W4W)" ); aHash[DECLARE_ASCII("writer_QA_Write_10_30_W4W" )] = DECLARE_ASCII("swriter: Q&A Write 1.0-3.0 (W4W)" ); aHash[DECLARE_ASCII("writer_QA_Write_40_W4W" )] = DECLARE_ASCII("swriter: Q&A Write 4.0 (W4W)" ); aHash[DECLARE_ASCII("writer_Rapid_File_10_W4W" )] = DECLARE_ASCII("swriter: Rapid File 1.0 (W4W)" ); aHash[DECLARE_ASCII("writer_Rapid_File_12_W4W" )] = DECLARE_ASCII("swriter: Rapid File 1.2 (W4W)" ); aHash[DECLARE_ASCII("writer_Samna_Word_IV_IV_Plus_W4W" )] = DECLARE_ASCII("swriter: Samna Word IV-IV Plus (W4W)" ); aHash[DECLARE_ASCII("writer_Total_Word_W4W" )] = DECLARE_ASCII("swriter: Total Word (W4W)" ); aHash[DECLARE_ASCII("writer_Uniplex_onGO_W4W" )] = DECLARE_ASCII("swriter: Uniplex onGO (W4W)" ); aHash[DECLARE_ASCII("writer_Uniplex_V7_V8_W4W" )] = DECLARE_ASCII("swriter: Uniplex V7-V8 (W4W)" ); aHash[DECLARE_ASCII("writer_Wang_PC_W4W" )] = DECLARE_ASCII("swriter: Wang PC (W4W)" ); aHash[DECLARE_ASCII("writer_Wang_II_SWP_W4W" )] = DECLARE_ASCII("swriter: Wang II SWP (W4W)" ); aHash[DECLARE_ASCII("writer_Wang_WP_Plus_W4W" )] = DECLARE_ASCII("swriter: Wang WP Plus (W4W)" ); aHash[DECLARE_ASCII("writer_WITA_W4W" )] = DECLARE_ASCII("swriter: WITA (W4W)" ); aHash[DECLARE_ASCII("writer_WiziWord_30_W4W" )] = DECLARE_ASCII("swriter: WiziWord 3.0 (W4W)" ); aHash[DECLARE_ASCII("writer_web_HTML" )] = DECLARE_ASCII("swriter/web: HTML" ); aHash[DECLARE_ASCII("writer_web_StarWriterWeb_50_VorlageTemplate" )] = DECLARE_ASCII("swriter/web: StarWriter/Web 5.0 Vorlage/Template" ); aHash[DECLARE_ASCII("writer_web_StarWriterWeb_40_VorlageTemplate" )] = DECLARE_ASCII("swriter/web: StarWriter/Web 4.0 Vorlage/Template" ); aHash[DECLARE_ASCII("writer_web_Text_StarWriterWeb" )] = DECLARE_ASCII("swriter/web: Text (StarWriter/Web)" ); aHash[DECLARE_ASCII("writer_web_Text_DOS_StarWriterWeb" )] = DECLARE_ASCII("swriter/web: Text DOS (StarWriter/Web)" ); aHash[DECLARE_ASCII("writer_web_Text_Mac_StarWriterWeb" )] = DECLARE_ASCII("swriter/web: Text Mac (StarWriter/Web)" ); aHash[DECLARE_ASCII("writer_web_Text_Unix_StarWriterWeb" )] = DECLARE_ASCII("swriter/web: Text Unix (StarWriter/Web)" ); aHash[DECLARE_ASCII("writer_web_StarWriter_50" )] = DECLARE_ASCII("swriter/web: StarWriter 5.0" ); aHash[DECLARE_ASCII("writer_web_StarWriter_40" )] = DECLARE_ASCII("swriter/web: StarWriter 4.0" ); aHash[DECLARE_ASCII("writer_web_StarWriter_30" )] = DECLARE_ASCII("swriter/web: StarWriter 3.0" ); aHash[DECLARE_ASCII("writer_web_Text_encoded" )] = DECLARE_ASCII("swriter/web: Text (encoded)" ); aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_60GlobalDocument" )] = DECLARE_ASCII("swriter/GlobalDocument: StarOffice XML (GlobalDocument)" ); aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_50GlobalDocument" )] = DECLARE_ASCII("swriter/GlobalDocument: StarWriter 5.0/GlobalDocument" ); aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_40GlobalDocument" )] = DECLARE_ASCII("swriter/GlobalDocument: StarWriter 4.0/GlobalDocument" ); aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_50" )] = DECLARE_ASCII("swriter/GlobalDocument: StarWriter 5.0" ); aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_40" )] = DECLARE_ASCII("swriter/GlobalDocument: StarWriter 4.0" ); aHash[DECLARE_ASCII("writer_globaldocument_StarWriter_30" )] = DECLARE_ASCII("swriter/GlobalDocument: StarWriter 3.0" ); aHash[DECLARE_ASCII("writer_globaldocument_Text_encoded" )] = DECLARE_ASCII("swriter/GlobalDocument: Text (encoded)" ); aHash[DECLARE_ASCII("chart_StarOffice_XML_Chart" )] = DECLARE_ASCII("schart: StarOffice XML (Chart)" ); aHash[DECLARE_ASCII("chart_StarChart_50" )] = DECLARE_ASCII("schart: StarChart 5.0" ); aHash[DECLARE_ASCII("chart_StarChart_40" )] = DECLARE_ASCII("schart: StarChart 4.0" ); aHash[DECLARE_ASCII("chart_StarChart_30" )] = DECLARE_ASCII("schart: StarChart 3.0" ); aHash[DECLARE_ASCII("calc_StarOffice_XML_Calc" )] = DECLARE_ASCII("scalc: StarOffice XML (Calc)" ); aHash[DECLARE_ASCII("calc_StarCalc_50" )] = DECLARE_ASCII("scalc: StarCalc 5.0" ); aHash[DECLARE_ASCII("calc_StarCalc_50_VorlageTemplate" )] = DECLARE_ASCII("scalc: StarCalc 5.0 Vorlage/Template" ); aHash[DECLARE_ASCII("calc_StarCalc_40" )] = DECLARE_ASCII("scalc: StarCalc 4.0" ); aHash[DECLARE_ASCII("calc_StarCalc_40_VorlageTemplate" )] = DECLARE_ASCII("scalc: StarCalc 4.0 Vorlage/Template" ); aHash[DECLARE_ASCII("calc_StarCalc_30" )] = DECLARE_ASCII("scalc: StarCalc 3.0" ); aHash[DECLARE_ASCII("calc_StarCalc_30_VorlageTemplate" )] = DECLARE_ASCII("scalc: StarCalc 3.0 Vorlage/Template" ); aHash[DECLARE_ASCII("calc_MS_Excel_97" )] = DECLARE_ASCII("scalc: MS Excel 97" ); aHash[DECLARE_ASCII("calc_MS_Excel_97_VorlageTemplate" )] = DECLARE_ASCII("scalc: MS Excel 97 Vorlage/Template" ); aHash[DECLARE_ASCII("calc_MS_Excel_95" )] = DECLARE_ASCII("scalc: MS Excel 95" ); aHash[DECLARE_ASCII("calc_MS_Excel_95_VorlageTemplate" )] = DECLARE_ASCII("scalc: MS Excel 95 Vorlage/Template" ); aHash[DECLARE_ASCII("calc_MS_Excel_5095" )] = DECLARE_ASCII("scalc: MS Excel 5.0/95" ); aHash[DECLARE_ASCII("calc_MS_Excel_5095_VorlageTemplate" )] = DECLARE_ASCII("scalc: MS Excel 5.0/95 Vorlage/Template" ); aHash[DECLARE_ASCII("calc_MS_Excel_40" )] = DECLARE_ASCII("scalc: MS Excel 4.0" ); aHash[DECLARE_ASCII("calc_MS_Excel_40_VorlageTemplate" )] = DECLARE_ASCII("scalc: MS Excel 4.0 Vorlage/Template" ); aHash[DECLARE_ASCII("calc_Rich_Text_Format_StarCalc" )] = DECLARE_ASCII("scalc: Rich Text Format (StarCalc)" ); aHash[DECLARE_ASCII("calc_SYLK" )] = DECLARE_ASCII("scalc: SYLK" ); aHash[DECLARE_ASCII("calc_DIF" )] = DECLARE_ASCII("scalc: DIF" ); aHash[DECLARE_ASCII("calc_HTML_StarCalc" )] = DECLARE_ASCII("scalc: HTML (StarCalc)" ); aHash[DECLARE_ASCII("calc_dBase" )] = DECLARE_ASCII("scalc: dBase" ); aHash[DECLARE_ASCII("calc_Lotus" )] = DECLARE_ASCII("scalc: Lotus" ); aHash[DECLARE_ASCII("calc_StarCalc_10" )] = DECLARE_ASCII("scalc: StarCalc 1.0" ); aHash[DECLARE_ASCII("calc_Text_txt_csv_StarCalc" )] = DECLARE_ASCII("scalc: Text - txt - csv (StarCalc)" ); aHash[DECLARE_ASCII("impress_StarOffice_XML_Impress" )] = DECLARE_ASCII("simpress: StarOffice XML (Impress)" ); aHash[DECLARE_ASCII("impress_StarImpress_50" )] = DECLARE_ASCII("simpress: StarImpress 5.0" ); aHash[DECLARE_ASCII("impress_StarImpress_50_Vorlage" )] = DECLARE_ASCII("simpress: StarImpress 5.0 Vorlage" ); aHash[DECLARE_ASCII("impress_StarImpress_40" )] = DECLARE_ASCII("simpress: StarImpress 4.0" ); aHash[DECLARE_ASCII("impress_StarImpress_40_Vorlage" )] = DECLARE_ASCII("simpress: StarImpress 4.0 Vorlage" ); aHash[DECLARE_ASCII("impress_StarDraw_50_StarImpress" )] = DECLARE_ASCII("simpress: StarDraw 5.0 (StarImpress)" ); aHash[DECLARE_ASCII("impress_StarDraw_50_Vorlage_StarImpress" )] = DECLARE_ASCII("simpress: StarDraw 5.0 Vorlage (StarImpress)" ); aHash[DECLARE_ASCII("impress_StarDraw_30_StarImpress" )] = DECLARE_ASCII("simpress: StarDraw 3.0 (StarImpress)" ); aHash[DECLARE_ASCII("impress_StarDraw_30_Vorlage_StarImpress" )] = DECLARE_ASCII("simpress: StarDraw 3.0 Vorlage (StarImpress)" ); aHash[DECLARE_ASCII("impress_MS_PowerPoint_97" )] = DECLARE_ASCII("simpress: MS PowerPoint 97" ); aHash[DECLARE_ASCII("impress_MS_PowerPoint_97_Vorlage" )] = DECLARE_ASCII("simpress: MS PowerPoint 97 Vorlage" ); aHash[DECLARE_ASCII("impress_CGM_Computer_Graphics_Metafile" )] = DECLARE_ASCII("simpress: CGM - Computer Graphics Metafile" ); aHash[DECLARE_ASCII("impress_StarImpress_50_packed" )] = DECLARE_ASCII("simpress: StarImpress 5.0 (packed)" ); aHash[DECLARE_ASCII("draw_StarOffice_XML_Draw" )] = DECLARE_ASCII("sdraw: StarOffice XML (Draw)" ); aHash[DECLARE_ASCII("draw_GIF_Graphics_Interchange" )] = DECLARE_ASCII("sdraw: GIF - Graphics Interchange" ); aHash[DECLARE_ASCII("draw_PCD_Photo_CD" )] = DECLARE_ASCII("sdraw: PCD - Photo CD" ); aHash[DECLARE_ASCII("draw_PCX_Zsoft_Paintbrush" )] = DECLARE_ASCII("sdraw: PCX - Zsoft Paintbrush" ); aHash[DECLARE_ASCII("draw_PSD_Adobe_Photoshop" )] = DECLARE_ASCII("sdraw: PSD - Adobe Photoshop" ); aHash[DECLARE_ASCII("draw_PNG_Portable_Network_Graphic" )] = DECLARE_ASCII("sdraw: PNG - Portable Network Graphic" ); aHash[DECLARE_ASCII("draw_StarDraw_50" )] = DECLARE_ASCII("sdraw: StarDraw 5.0" ); aHash[DECLARE_ASCII("draw_PBM_Portable_Bitmap" )] = DECLARE_ASCII("sdraw: PBM - Portable Bitmap" ); aHash[DECLARE_ASCII("draw_PGM_Portable_Graymap" )] = DECLARE_ASCII("sdraw: PGM - Portable Graymap" ); aHash[DECLARE_ASCII("draw_PPM_Portable_Pixelmap" )] = DECLARE_ASCII("sdraw: PPM - Portable Pixelmap" ); aHash[DECLARE_ASCII("draw_RAS_Sun_Rasterfile" )] = DECLARE_ASCII("sdraw: RAS - Sun Rasterfile" ); aHash[DECLARE_ASCII("draw_TGA_Truevision_TARGA" )] = DECLARE_ASCII("sdraw: TGA - Truevision TARGA" ); aHash[DECLARE_ASCII("draw_SGV_StarDraw_20" )] = DECLARE_ASCII("sdraw: SGV - StarDraw 2.0" ); aHash[DECLARE_ASCII("draw_TIF_Tag_Image_File" )] = DECLARE_ASCII("sdraw: TIF - Tag Image File" ); aHash[DECLARE_ASCII("draw_SGF_StarOffice_Writer_SGF" )] = DECLARE_ASCII("sdraw: SGF - StarOffice Writer SGF" ); aHash[DECLARE_ASCII("draw_XPM" )] = DECLARE_ASCII("sdraw: XPM" ); aHash[DECLARE_ASCII("gif_Graphics_Interchange" )] = DECLARE_ASCII("sdraw: GIF - Graphics Interchange" ); aHash[DECLARE_ASCII("pcd_Photo_CD" )] = DECLARE_ASCII("sdraw: PCD - Photo CD" ); aHash[DECLARE_ASCII("pcx_Zsoft_Paintbrush" )] = DECLARE_ASCII("sdraw: PCX - Zsoft Paintbrush" ); aHash[DECLARE_ASCII("psd_Adobe_Photoshop" )] = DECLARE_ASCII("sdraw: PSD - Adobe Photoshop" ); aHash[DECLARE_ASCII("png_Portable_Network_Graphic" )] = DECLARE_ASCII("sdraw: PNG - Portable Network Graphic" ); aHash[DECLARE_ASCII("pbm_Portable_Bitmap" )] = DECLARE_ASCII("sdraw: PBM - Portable Bitmap" ); aHash[DECLARE_ASCII("pgm_Portable_Graymap" )] = DECLARE_ASCII("sdraw: PGM - Portable Graymap" ); aHash[DECLARE_ASCII("ppm_Portable_Pixelmap" )] = DECLARE_ASCII("sdraw: PPM - Portable Pixelmap" ); aHash[DECLARE_ASCII("ras_Sun_Rasterfile" )] = DECLARE_ASCII("sdraw: RAS - Sun Rasterfile" ); aHash[DECLARE_ASCII("tga_Truevision_TARGA" )] = DECLARE_ASCII("sdraw: TGA - Truevision TARGA" ); aHash[DECLARE_ASCII("sgv_StarDraw_20" )] = DECLARE_ASCII("sdraw: SGV - StarDraw 2.0" ); aHash[DECLARE_ASCII("tif_Tag_Image_File" )] = DECLARE_ASCII("sdraw: TIF - Tag Image File" ); aHash[DECLARE_ASCII("sgf_StarOffice_Writer_SGF" )] = DECLARE_ASCII("sdraw: SGF - StarOffice Writer SGF" ); aHash[DECLARE_ASCII("xpm_XPM" )] = DECLARE_ASCII("sdraw: XPM" ); aHash[DECLARE_ASCII("draw_StarDraw_50_Vorlage" )] = DECLARE_ASCII("sdraw: StarDraw 5.0 Vorlage" ); aHash[DECLARE_ASCII("draw_StarImpress_50_StarDraw" )] = DECLARE_ASCII("sdraw: StarImpress 5.0 (StarDraw)" ); aHash[DECLARE_ASCII("draw_StarImpress_50_Vorlage_StarDraw" )] = DECLARE_ASCII("sdraw: StarImpress 5.0 Vorlage (StarDraw)" ); aHash[DECLARE_ASCII("draw_StarImpress_40_StarDraw" )] = DECLARE_ASCII("sdraw: StarImpress 4.0 (StarDraw)" ); aHash[DECLARE_ASCII("draw_StarImpress_40_Vorlage_StarDraw" )] = DECLARE_ASCII("sdraw: StarImpress 4.0 Vorlage (StarDraw)" ); aHash[DECLARE_ASCII("draw_StarDraw_30" )] = DECLARE_ASCII("sdraw: StarDraw 3.0" ); aHash[DECLARE_ASCII("draw_StarDraw_30_Vorlage" )] = DECLARE_ASCII("sdraw: StarDraw 3.0 Vorlage" ); aHash[DECLARE_ASCII("draw_EMF_MS_Windows_Metafile" )] = DECLARE_ASCII("sdraw: EMF - MS Windows Metafile" ); aHash[DECLARE_ASCII("draw_MET_OS2_Metafile" )] = DECLARE_ASCII("sdraw: MET - OS/2 Metafile" ); aHash[DECLARE_ASCII("draw_DXF_AutoCAD_Interchange" )] = DECLARE_ASCII("sdraw: DXF - AutoCAD Interchange" ); aHash[DECLARE_ASCII("draw_EPS_Encapsulated_PostScript" )] = DECLARE_ASCII("sdraw: EPS - Encapsulated PostScript" ); aHash[DECLARE_ASCII("draw_WMF_MS_Windows_Metafile" )] = DECLARE_ASCII("sdraw: WMF - MS Windows Metafile" ); aHash[DECLARE_ASCII("draw_PCT_Mac_Pict" )] = DECLARE_ASCII("sdraw: PCT - Mac Pict" ); aHash[DECLARE_ASCII("draw_SVM_StarView_Metafile" )] = DECLARE_ASCII("sdraw: SVM - StarView Metafile" ); aHash[DECLARE_ASCII("draw_BMP_MS_Windows" )] = DECLARE_ASCII("sdraw: BMP - MS Windows" ); aHash[DECLARE_ASCII("draw_JPG_JPEG" )] = DECLARE_ASCII("sdraw: JPG - JPEG" ); aHash[DECLARE_ASCII("draw_XBM_X_Consortium" )] = DECLARE_ASCII("sdraw: XBM - X-Consortium" ); aHash[DECLARE_ASCII("emf_MS_Windows_Metafile" )] = DECLARE_ASCII("sdraw: EMF - MS Windows Metafile" ); aHash[DECLARE_ASCII("met_OS2_Metafile" )] = DECLARE_ASCII("sdraw: MET - OS/2 Metafile" ); aHash[DECLARE_ASCII("dxf_AutoCAD_Interchange" )] = DECLARE_ASCII("sdraw: DXF - AutoCAD Interchange" ); aHash[DECLARE_ASCII("eps_Encapsulated_PostScript" )] = DECLARE_ASCII("sdraw: EPS - Encapsulated PostScript" ); aHash[DECLARE_ASCII("wmf_MS_Windows_Metafile" )] = DECLARE_ASCII("sdraw: WMF - MS Windows Metafile" ); aHash[DECLARE_ASCII("pct_Mac_Pict" )] = DECLARE_ASCII("sdraw: PCT - Mac Pict" ); aHash[DECLARE_ASCII("svm_StarView_Metafile" )] = DECLARE_ASCII("sdraw: SVM - StarView Metafile" ); aHash[DECLARE_ASCII("bmp_MS_Windows" )] = DECLARE_ASCII("sdraw: BMP - MS Windows" ); aHash[DECLARE_ASCII("jpg_JPEG" )] = DECLARE_ASCII("sdraw: JPG - JPEG" ); aHash[DECLARE_ASCII("xbm_X_Consortium" )] = DECLARE_ASCII("sdraw: XBM - X-Consortium" ); aHash[DECLARE_ASCII("math_StarOffice_XML_Math" )] = DECLARE_ASCII("smath: StarOffice XML (Math)" ); aHash[DECLARE_ASCII("math_MathML_XML_Math" )] = DECLARE_ASCII("smath: MathML XML (Math)" ); aHash[DECLARE_ASCII("math_StarMath_50" )] = DECLARE_ASCII("smath: StarMath 5.0" ); aHash[DECLARE_ASCII("math_StarMath_40" )] = DECLARE_ASCII("smath: StarMath 4.0" ); aHash[DECLARE_ASCII("math_StarMath_30" )] = DECLARE_ASCII("smath: StarMath 3.0" ); aHash[DECLARE_ASCII("math_StarMath_20" )] = DECLARE_ASCII("smath: StarMath 2.0" ); aHash[DECLARE_ASCII("math_MathType_3x" )] = DECLARE_ASCII("smath: MathType 3.x" ); } //***************************************************************************************************************** ::rtl::OUString XCDGenerator::impl_getOldFilterName( const ::rtl::OUString& sNewName ) { ::rtl::OUString sOldName; ConstStringHashIterator pEntry = m_aData.aOldFilterNamesHash.find(sNewName); if( pEntry==m_aData.aOldFilterNamesHash.end() ) { sOldName = sNewName; } else { sOldName = m_aData.aOldFilterNamesHash[sNewName]; } return sOldName; } //***************************************************************************************************************** void XCDGenerator::impl_classifyType( const AppMember& rData, const ::rtl::OUString& sTypeName, EFilterPackage& ePackage ) { ePackage = E_STANDARD; // Step over all registered filters for this type ... // Classify all of these filters. If one of them a standard filter ... // type must be a standard type too - otherwise not! CheckedStringListIterator pIterator ; ::rtl::OUString sFilterName ; sal_Int32 nOrder ; while( rData.pFilterCache->searchFilterForType( sTypeName, pIterator, sFilterName ) == sal_True ) { EFilterPackage eFilterPackage; XCDGenerator::impl_classifyFilter( rData, sFilterName, eFilterPackage, nOrder ); if( eFilterPackage == E_STANDARD ) { ePackage = E_STANDARD; break; } } } //***************************************************************************************************************** void XCDGenerator::impl_classifyFilter( const AppMember& rData, const ::rtl::OUString& sFilterName, EFilterPackage& ePackage, sal_Int32& nOrder ) { // a) For versions less then 4 => use hard coded list of filter names to differ between standard or additional filters. // Why? This version don't support the order flag or hasn't set it right! // b) For version greater then 3 => use order of currently cached types in FilterCache! ePackage = E_STANDARD; nOrder = 0; // writer if( sFilterName == DECLARE_ASCII("writer_StarOffice_XML_Writer" ) ) { ePackage = E_STANDARD; nOrder = 1; } else if( sFilterName == DECLARE_ASCII("writer_StarOffice_XML_Writer_Template" ) ) { ePackage = E_STANDARD; nOrder = 2; } else if( sFilterName == DECLARE_ASCII("writer_StarWriter_50" ) ) { ePackage = E_STANDARD; nOrder = 3; } else if( sFilterName == DECLARE_ASCII("writer_StarWriter_50_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 4; } else if( sFilterName == DECLARE_ASCII("writer_StarWriter_40" ) ) { ePackage = E_STANDARD; nOrder = 5; } else if( sFilterName == DECLARE_ASCII("writer_StarWriter_40_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 6; } else if( sFilterName == DECLARE_ASCII("writer_StarWriter_30" ) ) { ePackage = E_STANDARD; nOrder = 7; } else if( sFilterName == DECLARE_ASCII("writer_StarWriter_30_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 8; } else if( sFilterName == DECLARE_ASCII("writer_StarWriter_20" ) ) { ePackage = E_STANDARD; nOrder = 9; } else if( sFilterName == DECLARE_ASCII("writer_MS_Word_97" ) ) { ePackage = E_STANDARD; nOrder = 10; } else if( sFilterName == DECLARE_ASCII("writer_MS_Word_97_Vorlage" ) ) { ePackage = E_STANDARD; nOrder = 11; } else if( sFilterName == DECLARE_ASCII("writer_MS_Word_95" ) ) { ePackage = E_STANDARD; nOrder = 12; } else if( sFilterName == DECLARE_ASCII("writer_MS_Word_95_Vorlage" ) ) { ePackage = E_STANDARD; nOrder = 13; } else if( sFilterName == DECLARE_ASCII("writer_MS_WinWord_2x_W4W" ) ) { ePackage = E_STANDARD; nOrder = 14; } else if( sFilterName == DECLARE_ASCII("writer_MS_WinWord_1x_W4W" ) ) { ePackage = E_STANDARD; nOrder = 15; } else if( sFilterName == DECLARE_ASCII("writer_MS_Word_6x_W4W" ) ) { ePackage = E_STANDARD; nOrder = 16; } else if( sFilterName == DECLARE_ASCII("writer_MS_Word_5x_W4W" ) ) { ePackage = E_STANDARD; nOrder = 17; } else if( sFilterName == DECLARE_ASCII("writer_MS_Word_4x_W4W" ) ) { ePackage = E_STANDARD; nOrder = 18; } else if( sFilterName == DECLARE_ASCII("writer_MS_Word_3x_W4W" ) ) { ePackage = E_STANDARD; nOrder = 19; } else if( sFilterName == DECLARE_ASCII("writer_WordPerfect_Win_70_W4W" ) ) { ePackage = E_STANDARD; nOrder = 20; } else if( sFilterName == DECLARE_ASCII("writer_WordPerfect_Win_61_W4W" ) ) { ePackage = E_STANDARD; nOrder = 21; } else if( sFilterName == DECLARE_ASCII("writer_WordPerfect_Win_60_W4W" ) ) { ePackage = E_STANDARD; nOrder = 22; } else if( sFilterName == DECLARE_ASCII("writer_WordPerfect_Win_51_52_W4W" ) ) { ePackage = E_STANDARD; nOrder = 23; } else if( sFilterName == DECLARE_ASCII("writer_HTML_StarWriter" ) ) { ePackage = E_STANDARD; nOrder = 24; } else if( sFilterName == DECLARE_ASCII("writer_Text" ) ) { ePackage = E_STANDARD; nOrder = 25; } else if( sFilterName == DECLARE_ASCII("writer_Text_encoded" ) ) { ePackage = E_STANDARD; nOrder = 26; } else if( sFilterName == DECLARE_ASCII("writer_Text_DOS" ) ) { ePackage = E_STANDARD; nOrder = 27; } else if( sFilterName == DECLARE_ASCII("writer_Text_Unix" ) ) { ePackage = E_STANDARD; nOrder = 28; } else if( sFilterName == DECLARE_ASCII("writer_Text_Mac" ) ) { ePackage = E_STANDARD; nOrder = 29; } else if( sFilterName == DECLARE_ASCII("writer_Rich_Text_Format" ) ) { ePackage = E_STANDARD; nOrder = 30; } // writer web if( sFilterName == DECLARE_ASCII("writer_web_HTML" ) ) { ePackage = E_STANDARD; nOrder = 1; } else if( sFilterName == DECLARE_ASCII("writer_web_StarOffice_XML_Writer" ) ) { ePackage = E_STANDARD; nOrder = 2; } else if( sFilterName == DECLARE_ASCII("writer_web_StarOffice_XML_Writer_Web_Template" ) ) { ePackage = E_STANDARD; nOrder = 3; } else if( sFilterName == DECLARE_ASCII("writer_web_StarWriter_50" ) ) { ePackage = E_STANDARD; nOrder = 4; } else if( sFilterName == DECLARE_ASCII("writer_web_StarWriterWeb_50_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 5; } else if( sFilterName == DECLARE_ASCII("writer_web_StarWriter_40" ) ) { ePackage = E_STANDARD; nOrder = 6; } else if( sFilterName == DECLARE_ASCII("writer_web_StarWriterWeb_40_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 7; } else if( sFilterName == DECLARE_ASCII("writer_web_StarWriter_30" ) ) { ePackage = E_STANDARD; nOrder = 8; } else if( sFilterName == DECLARE_ASCII("writer_web_Text_StarWriterWeb" ) ) { ePackage = E_STANDARD; nOrder = 9; } else if( sFilterName == DECLARE_ASCII("writer_web_Text_encoded" ) ) { ePackage = E_STANDARD; nOrder = 10; } else if( sFilterName == DECLARE_ASCII("writer_web_Text_DOS_StarWriterWeb" ) ) { ePackage = E_STANDARD; nOrder = 11; } else if( sFilterName == DECLARE_ASCII("writer_web_Text_Unix_StarWriterWeb" ) ) { ePackage = E_STANDARD; nOrder = 12; } else if( sFilterName == DECLARE_ASCII("writer_web_Text_Mac_StarWriterWeb" ) ) { ePackage = E_STANDARD; nOrder = 13; } // global document if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarOffice_XML_Writer_GlobalDocument" ) ) { ePackage = E_STANDARD; nOrder = 1; } else if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarOffice_XML_Writer" ) ) { ePackage = E_STANDARD; nOrder = 2; } else if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarWriter_50" ) ) { ePackage = E_STANDARD; nOrder = 3; } else if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarWriter_50GlobalDocument" ) ) { ePackage = E_STANDARD; nOrder = 4; } else if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarWriter_40" ) ) { ePackage = E_STANDARD; nOrder = 5; } else if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarWriter_40GlobalDocument" ) ) { ePackage = E_STANDARD; nOrder = 6; } else if( sFilterName == DECLARE_ASCII("writer_globaldocument_StarWriter_30" ) ) { ePackage = E_STANDARD; nOrder = 7; } else if( sFilterName == DECLARE_ASCII("writer_globaldocument_Text_encoded" ) ) { ePackage = E_STANDARD; nOrder = 8; } // calc if( sFilterName == DECLARE_ASCII("calc_StarOffice_XML_Calc" ) ) { ePackage = E_STANDARD; nOrder = 1; } else if( sFilterName == DECLARE_ASCII("calc_StarOffice_XML_Calc_Template" ) ) { ePackage = E_STANDARD; nOrder = 2; } else if( sFilterName == DECLARE_ASCII("calc_StarCalc_50" ) ) { ePackage = E_STANDARD; nOrder = 3; } else if( sFilterName == DECLARE_ASCII("calc_StarCalc_50_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 4; } else if( sFilterName == DECLARE_ASCII("calc_StarCalc_40" ) ) { ePackage = E_STANDARD; nOrder = 5; } else if( sFilterName == DECLARE_ASCII("calc_StarCalc_40_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 6; } else if( sFilterName == DECLARE_ASCII("calc_StarCalc_30" ) ) { ePackage = E_STANDARD; nOrder = 7; } else if( sFilterName == DECLARE_ASCII("calc_StarCalc_30_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 8; } else if( sFilterName == DECLARE_ASCII("calc_StarCalc_10" ) ) { ePackage = E_STANDARD; nOrder = 9; } else if( sFilterName == DECLARE_ASCII("calc_MS_Excel_97" ) ) { ePackage = E_STANDARD; nOrder = 10; } else if( sFilterName == DECLARE_ASCII("calc_MS_Excel_97_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 11; } else if( sFilterName == DECLARE_ASCII("calc_MS_Excel_95" ) ) { ePackage = E_STANDARD; nOrder = 12; } else if( sFilterName == DECLARE_ASCII("calc_MS_Excel_95_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 13; } else if( sFilterName == DECLARE_ASCII("calc_MS_Excel_5095" ) ) { ePackage = E_STANDARD; nOrder = 14; } else if( sFilterName == DECLARE_ASCII("calc_MS_Excel_5095_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 15; } else if( sFilterName == DECLARE_ASCII("calc_MS_Excel_40" ) ) { ePackage = E_STANDARD; nOrder = 16; } else if( sFilterName == DECLARE_ASCII("calc_MS_Excel_40_VorlageTemplate" ) ) { ePackage = E_STANDARD; nOrder = 17; } else if( sFilterName == DECLARE_ASCII("calc_HTML_StarCalc" ) ) { ePackage = E_STANDARD; nOrder = 18; } else if( sFilterName == DECLARE_ASCII("calc_HTML_WebQuery" ) ) { ePackage = E_STANDARD; nOrder = 19; } else if( sFilterName == DECLARE_ASCII("calc_Rich_Text_Format_StarCalc" ) ) { ePackage = E_STANDARD; nOrder = 20; } else if( sFilterName == DECLARE_ASCII("calc_Text_txt_csv_StarCalc" ) ) { ePackage = E_STANDARD; nOrder = 21; } else if( sFilterName == DECLARE_ASCII("calc_dBase" ) ) { ePackage = E_STANDARD; nOrder = 22; } else if( sFilterName == DECLARE_ASCII("calc_Lotus" ) ) { ePackage = E_STANDARD; nOrder = 23; } else if( sFilterName == DECLARE_ASCII("calc_SYLK" ) ) { ePackage = E_STANDARD; nOrder = 24; } else if( sFilterName == DECLARE_ASCII("calc_DIF" ) ) { ePackage = E_STANDARD; nOrder = 25; } // impress if( sFilterName == DECLARE_ASCII("impress_StarOffice_XML_Impress" ) ) { ePackage = E_STANDARD; nOrder = 1; } else if( sFilterName == DECLARE_ASCII("impress_StarOffice_XML_Impress_Template" ) ) { ePackage = E_STANDARD; nOrder = 2; } else if( sFilterName == DECLARE_ASCII("impress_StarImpress_50" ) ) { ePackage = E_STANDARD; nOrder = 3; } else if( sFilterName == DECLARE_ASCII("impress_StarImpress_50_Vorlage" ) ) { ePackage = E_STANDARD; nOrder = 4; } else if( sFilterName == DECLARE_ASCII("impress_StarImpress_50_packed" ) ) { ePackage = E_STANDARD; nOrder = 5; } else if( sFilterName == DECLARE_ASCII("impress_StarImpress_40" ) ) { ePackage = E_STANDARD; nOrder = 6; } else if( sFilterName == DECLARE_ASCII("impress_StarImpress_40_Vorlage" ) ) { ePackage = E_STANDARD; nOrder = 7; } else if( sFilterName == DECLARE_ASCII("impress_MS_PowerPoint_97" ) ) { ePackage = E_STANDARD; nOrder = 8; } else if( sFilterName == DECLARE_ASCII("impress_MS_PowerPoint_97_Vorlage" ) ) { ePackage = E_STANDARD; nOrder = 9; } else if( sFilterName == DECLARE_ASCII("impress_StarOffice_XML_Draw" ) ) { ePackage = E_STANDARD; nOrder = 10; } else if( sFilterName == DECLARE_ASCII("impress_StarDraw_50_StarImpress" ) ) { ePackage = E_STANDARD; nOrder = 11; } else if( sFilterName == DECLARE_ASCII("impress_StarDraw_50_Vorlage_StarImpress" ) ) { ePackage = E_STANDARD; nOrder = 12; } else if( sFilterName == DECLARE_ASCII("impress_StarDraw_30_StarImpress" ) ) { ePackage = E_STANDARD; nOrder = 13; } else if( sFilterName == DECLARE_ASCII("impress_StarDraw_30_Vorlage_StarImpress" ) ) { ePackage = E_STANDARD; nOrder = 14; } else if( sFilterName == DECLARE_ASCII("impress_CGM_Computer_Graphics_Metafile" ) ) { ePackage = E_STANDARD; nOrder = 15; } // draw if( sFilterName == DECLARE_ASCII("draw_StarOffice_XML_Draw" ) ) { ePackage = E_STANDARD; nOrder = 1; } else if( sFilterName == DECLARE_ASCII("draw_StarOffice_XML_Draw_Template" ) ) { ePackage = E_STANDARD; nOrder = 2; } else if( sFilterName == DECLARE_ASCII("draw_StarDraw_50" ) ) { ePackage = E_STANDARD; nOrder = 3; } else if( sFilterName == DECLARE_ASCII("draw_StarDraw_50_Vorlage" ) ) { ePackage = E_STANDARD; nOrder = 4; } else if( sFilterName == DECLARE_ASCII("draw_StarDraw_30" ) ) { ePackage = E_STANDARD; nOrder = 5; } else if( sFilterName == DECLARE_ASCII("draw_StarDraw_30_Vorlage" ) ) { ePackage = E_STANDARD; nOrder = 6; } else if( sFilterName == DECLARE_ASCII("draw_StarOffice_XML_Impress" ) ) { ePackage = E_STANDARD; nOrder = 7; } else if( sFilterName == DECLARE_ASCII("draw_StarImpress_50_StarDraw" ) ) { ePackage = E_STANDARD; nOrder = 8; } else if( sFilterName == DECLARE_ASCII("draw_StarImpress_50_Vorlage_StarDraw" ) ) { ePackage = E_STANDARD; nOrder = 9; } else if( sFilterName == DECLARE_ASCII("draw_StarImpress_40_StarDraw" ) ) { ePackage = E_STANDARD; nOrder = 10; } else if( sFilterName == DECLARE_ASCII("draw_StarImpress_40_Vorlage_StarDraw" ) ) { ePackage = E_STANDARD; nOrder = 11; } else if( sFilterName == DECLARE_ASCII("draw_SGV_StarDraw_20" ) ) { ePackage = E_STANDARD; nOrder = 12; } else if( sFilterName == DECLARE_ASCII("draw_SGF_StarOffice_Writer_SGF" ) ) { ePackage = E_STANDARD; nOrder = 13; } else if( sFilterName == DECLARE_ASCII("draw_SVM_StarView_Metafile" ) ) { ePackage = E_STANDARD; nOrder = 14; } else if( sFilterName == DECLARE_ASCII("draw_WMF_MS_Windows_Metafile" ) ) { ePackage = E_STANDARD; nOrder = 15; } else if( sFilterName == DECLARE_ASCII("draw_EMF_MS_Windows_Metafile" ) ) { ePackage = E_STANDARD; nOrder = 16; } else if( sFilterName == DECLARE_ASCII("draw_EPS_Encapsulated_PostScript" ) ) { ePackage = E_STANDARD; nOrder = 17; } else if( sFilterName == DECLARE_ASCII("draw_DXF_AutoCAD_Interchange" ) ) { ePackage = E_STANDARD; nOrder = 18; } else if( sFilterName == DECLARE_ASCII("draw_BMP_MS_Windows" ) ) { ePackage = E_STANDARD; nOrder = 19; } else if( sFilterName == DECLARE_ASCII("draw_GIF_Graphics_Interchange" ) ) { ePackage = E_STANDARD; nOrder = 20; } else if( sFilterName == DECLARE_ASCII("draw_JPG_JPEG" ) ) { ePackage = E_STANDARD; nOrder = 21; } else if( sFilterName == DECLARE_ASCII("draw_MET_OS2_Metafile" ) ) { ePackage = E_STANDARD; nOrder = 22; } else if( sFilterName == DECLARE_ASCII("draw_PBM_Portable_Bitmap" ) ) { ePackage = E_STANDARD; nOrder = 23; } else if( sFilterName == DECLARE_ASCII("draw_PCD_Photo_CD_Base" ) ) { ePackage = E_STANDARD; nOrder = 24; } else if( sFilterName == DECLARE_ASCII("draw_PCD_Photo_CD_Base4" ) ) { ePackage = E_STANDARD; nOrder = 25; } else if( sFilterName == DECLARE_ASCII("draw_PCD_Photo_CD_Base16" ) ) { ePackage = E_STANDARD; nOrder = 26; } else if( sFilterName == DECLARE_ASCII("draw_PCT_Mac_Pict" ) ) { ePackage = E_STANDARD; nOrder = 27; } else if( sFilterName == DECLARE_ASCII("draw_PCX_Zsoft_Paintbrush" ) ) { ePackage = E_STANDARD; nOrder = 28; } else if( sFilterName == DECLARE_ASCII("draw_PGM_Portable_Graymap" ) ) { ePackage = E_STANDARD; nOrder = 29; } else if( sFilterName == DECLARE_ASCII("draw_PNG_Portable_Network_Graphic" ) ) { ePackage = E_STANDARD; nOrder = 30; } else if( sFilterName == DECLARE_ASCII("draw_PPM_Portable_Pixelmap" ) ) { ePackage = E_STANDARD; nOrder = 31; } else if( sFilterName == DECLARE_ASCII("draw_PSD_Adobe_Photoshop" ) ) { ePackage = E_STANDARD; nOrder = 32; } else if( sFilterName == DECLARE_ASCII("draw_RAS_Sun_Rasterfile" ) ) { ePackage = E_STANDARD; nOrder = 33; } else if( sFilterName == DECLARE_ASCII("draw_TGA_Truevision_TARGA" ) ) { ePackage = E_STANDARD; nOrder = 34; } else if( sFilterName == DECLARE_ASCII("draw_TIF_Tag_Image_File" ) ) { ePackage = E_STANDARD; nOrder = 35; } else if( sFilterName == DECLARE_ASCII("draw_XBM_X_Consortium" ) ) { ePackage = E_STANDARD; nOrder = 36; } else if( sFilterName == DECLARE_ASCII("draw_XPM" ) ) { ePackage = E_STANDARD; nOrder = 37; } // chart if( sFilterName == DECLARE_ASCII("chart_StarOffice_XML_Chart" ) ) { ePackage = E_STANDARD; nOrder = 1; } else if( sFilterName == DECLARE_ASCII("chart_StarChart_50" ) ) { ePackage = E_STANDARD; nOrder = 2; } else if( sFilterName == DECLARE_ASCII("chart_StarChart_40" ) ) { ePackage = E_STANDARD; nOrder = 3; } else if( sFilterName == DECLARE_ASCII("chart_StarChart_30" ) ) { ePackage = E_STANDARD; nOrder = 4; } // math if( sFilterName == DECLARE_ASCII("math_StarOffice_XML_Math" ) ) { ePackage = E_STANDARD; nOrder = 1; } else if( sFilterName == DECLARE_ASCII("math_StarMath_50" ) ) { ePackage = E_STANDARD; nOrder = 2; } else if( sFilterName == DECLARE_ASCII("math_StarMath_40" ) ) { ePackage = E_STANDARD; nOrder = 3; } else if( sFilterName == DECLARE_ASCII("math_StarMath_30" ) ) { ePackage = E_STANDARD; nOrder = 4; } else if( sFilterName == DECLARE_ASCII("math_StarMath_20" ) ) { ePackage = E_STANDARD; nOrder = 5; } else if( sFilterName == DECLARE_ASCII("math_MathML_XML_Math" ) ) { ePackage = E_STANDARD; nOrder = 6; } else if( sFilterName == DECLARE_ASCII("math_MathType_3x" ) ) { ePackage = E_STANDARD; nOrder = 7; } // graphics if( sFilterName == DECLARE_ASCII("bmp_Import" ) ) { ePackage = E_STANDARD; nOrder = 1; } else if( sFilterName == DECLARE_ASCII("bmp_Export" ) ) { ePackage = E_STANDARD; nOrder = 2; } else if( sFilterName == DECLARE_ASCII("dxf_Import" ) ) { ePackage = E_STANDARD; nOrder = 3; } else if( sFilterName == DECLARE_ASCII("emf_Import" ) ) { ePackage = E_STANDARD; nOrder = 4; } else if( sFilterName == DECLARE_ASCII("emf_Export" ) ) { ePackage = E_STANDARD; nOrder = 5; } else if( sFilterName == DECLARE_ASCII("eps_Import" ) ) { ePackage = E_STANDARD; nOrder = 6; } else if( sFilterName == DECLARE_ASCII("eps_Export" ) ) { ePackage = E_STANDARD; nOrder = 7; } else if( sFilterName == DECLARE_ASCII("gif_Import" ) ) { ePackage = E_STANDARD; nOrder = 8; } else if( sFilterName == DECLARE_ASCII("gif_Export" ) ) { ePackage = E_STANDARD; nOrder = 9; } else if( sFilterName == DECLARE_ASCII("jpg_Import" ) ) { ePackage = E_STANDARD; nOrder = 10; } else if( sFilterName == DECLARE_ASCII("jpg_Export" ) ) { ePackage = E_STANDARD; nOrder = 11; } else if( sFilterName == DECLARE_ASCII("met_Import" ) ) { ePackage = E_STANDARD; nOrder = 12; } else if( sFilterName == DECLARE_ASCII("met_Export" ) ) { ePackage = E_STANDARD; nOrder = 13; } else if( sFilterName == DECLARE_ASCII("pbm_Import" ) ) { ePackage = E_STANDARD; nOrder = 14; } else if( sFilterName == DECLARE_ASCII("pbm_Export" ) ) { ePackage = E_STANDARD; nOrder = 15; } else if( sFilterName == DECLARE_ASCII("pcd_Import_Base16" ) ) { ePackage = E_STANDARD; nOrder = 16; } else if( sFilterName == DECLARE_ASCII("pcd_Import_Base4" ) ) { ePackage = E_STANDARD; nOrder = 17; } else if( sFilterName == DECLARE_ASCII("pcd_Import_Base" ) ) { ePackage = E_STANDARD; nOrder = 18; } else if( sFilterName == DECLARE_ASCII("pct_Import" ) ) { ePackage = E_STANDARD; nOrder = 19; } else if( sFilterName == DECLARE_ASCII("pct_Export" ) ) { ePackage = E_STANDARD; nOrder = 20; } else if( sFilterName == DECLARE_ASCII("pcx_Import" ) ) { ePackage = E_STANDARD; nOrder = 21; } else if( sFilterName == DECLARE_ASCII("pgm_Import" ) ) { ePackage = E_STANDARD; nOrder = 22; } else if( sFilterName == DECLARE_ASCII("pgm_Export" ) ) { ePackage = E_STANDARD; nOrder = 23; } else if( sFilterName == DECLARE_ASCII("png_Import" ) ) { ePackage = E_STANDARD; nOrder = 24; } else if( sFilterName == DECLARE_ASCII("png_Export" ) ) { ePackage = E_STANDARD; nOrder = 25; } else if( sFilterName == DECLARE_ASCII("ppm_Import" ) ) { ePackage = E_STANDARD; nOrder = 26; } else if( sFilterName == DECLARE_ASCII("ppm_Export" ) ) { ePackage = E_STANDARD; nOrder = 27; } else if( sFilterName == DECLARE_ASCII("psd_Import" ) ) { ePackage = E_STANDARD; nOrder = 28; } else if( sFilterName == DECLARE_ASCII("ras_Import" ) ) { ePackage = E_STANDARD; nOrder = 29; } else if( sFilterName == DECLARE_ASCII("ras_Export" ) ) { ePackage = E_STANDARD; nOrder = 30; } else if( sFilterName == DECLARE_ASCII("sgf_Import" ) ) { ePackage = E_STANDARD; nOrder = 31; } else if( sFilterName == DECLARE_ASCII("sgv_Import" ) ) { ePackage = E_STANDARD; nOrder = 32; } else if( sFilterName == DECLARE_ASCII("svg_Export" ) ) { ePackage = E_STANDARD; nOrder = 33; } else if( sFilterName == DECLARE_ASCII("svm_Import" ) ) { ePackage = E_STANDARD; nOrder = 34; } else if( sFilterName == DECLARE_ASCII("svm_Export" ) ) { ePackage = E_STANDARD; nOrder = 35; } else if( sFilterName == DECLARE_ASCII("tga_Import" ) ) { ePackage = E_STANDARD; nOrder = 36; } else if( sFilterName == DECLARE_ASCII("tif_Import" ) ) { ePackage = E_STANDARD; nOrder = 37; } else if( sFilterName == DECLARE_ASCII("tif_Export" ) ) { ePackage = E_STANDARD; nOrder = 38; } else if( sFilterName == DECLARE_ASCII("wmf_Import" ) ) { ePackage = E_STANDARD; nOrder = 39; } else if( sFilterName == DECLARE_ASCII("wmf_Export" ) ) { ePackage = E_STANDARD; nOrder = 40; } else if( sFilterName == DECLARE_ASCII("xbm_Import" ) ) { ePackage = E_STANDARD; nOrder = 41; } else if( sFilterName == DECLARE_ASCII("xpm_Import" ) ) { ePackage = E_STANDARD; nOrder = 42; } else if( sFilterName == DECLARE_ASCII("xpm_Export" ) ) { ePackage = E_STANDARD; nOrder = 43; } } //***************************************************************************************************************** void XCDGenerator::impl_orderAlphabetical( css::uno::Sequence< ::rtl::OUString >& lList ) { ::std::vector< ::rtl::OUString > lSortedList; sal_Int32 nCount ; sal_Int32 nItem ; // Copy sequence to vector nCount = lList.getLength(); for( nItem=0; nItem::iterator pIterator=lSortedList.begin(); pIterator!=lSortedList.end(); ++pIterator ) { lList[nItem] = *pIterator; ++nItem; } } //***************************************************************************************************************** class ModifiedUTF7Buffer { rtl::OUStringBuffer & m_rBuffer; sal_uInt32 m_nValue; int m_nFilled; public: ModifiedUTF7Buffer(rtl::OUStringBuffer * pTheBuffer): m_rBuffer(*pTheBuffer), m_nFilled(0) {} inline void write(sal_Unicode c); void flush(); }; inline void ModifiedUTF7Buffer::write(sal_Unicode c) { switch (m_nFilled) { case 0: m_nValue = sal_uInt32(c) << 8; m_nFilled = 2; break; case 1: m_nValue |= sal_uInt32(c); m_nFilled = 3; flush(); break; case 2: m_nValue |= sal_uInt32(c) >> 8; m_nFilled = 3; flush(); m_nValue = (sal_uInt32(c) & 0xFF) << 16; m_nFilled = 1; break; } } void ModifiedUTF7Buffer::flush() { static sal_Unicode const aModifiedBase64[64] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '.' }; switch (m_nFilled) { case 1: m_rBuffer.append(aModifiedBase64[m_nValue >> 18]); m_rBuffer.append(aModifiedBase64[m_nValue >> 12 & 63]); break; case 2: m_rBuffer.append(aModifiedBase64[m_nValue >> 18]); m_rBuffer.append(aModifiedBase64[m_nValue >> 12 & 63]); m_rBuffer.append(aModifiedBase64[m_nValue >> 6 & 63]); break; case 3: m_rBuffer.append(aModifiedBase64[m_nValue >> 18]); m_rBuffer.append(aModifiedBase64[m_nValue >> 12 & 63]); m_rBuffer.append(aModifiedBase64[m_nValue >> 6 & 63]); m_rBuffer.append(aModifiedBase64[m_nValue & 63]); break; } m_nFilled = 0; m_nValue = 0; } sal_Bool XCDGenerator::impl_isUsAsciiAlphaDigit(sal_Unicode c, sal_Bool bDigitAllowed) { return c >= 'A' && c <= 'Z' || c >= 'a' && c <= 'z' || bDigitAllowed && c >= '0' && c <= '9'; } ::rtl::OUString XCDGenerator::impl_encodeSetName( const ::rtl::OUString& rSource ) { return impl_encodeSpecialSigns( rSource ); /* rtl::OUStringBuffer aTarget; sal_Unicode const * pBegin = rSource.getStr(); sal_Unicode const * pEnd = pBegin + rSource.getLength(); sal_Unicode const * pCopyEnd = pBegin; sal_Unicode const * p = pBegin; while (p != pEnd) { sal_Unicode c = *p; if (!impl_isUsAsciiAlphaDigit(c,p != pBegin)) switch (c) { case '-': case '.': if (p != pBegin) break; default: aTarget.append(pCopyEnd, p - pCopyEnd); aTarget.append(sal_Unicode('_')); ModifiedUTF7Buffer aBuffer(&aTarget); for (;;) { aBuffer.write(c); ++p; if (p == pEnd) break; c = *p; if (impl_isUsAsciiAlphaDigit(c) || c == '-' || c == '.') break; } aBuffer.flush(); aTarget.append(sal_Unicode('_')); pCopyEnd = p; continue; } ++p; } if (pCopyEnd == pBegin) return rSource; else { aTarget.append(pCopyEnd, pEnd - pCopyEnd); return aTarget.makeStringAndClear(); } */ }