summaryrefslogtreecommitdiff
path: root/svtools/bmpmaker/bmp.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/bmpmaker/bmp.cxx')
-rw-r--r--svtools/bmpmaker/bmp.cxx249
1 files changed, 249 insertions, 0 deletions
diff --git a/svtools/bmpmaker/bmp.cxx b/svtools/bmpmaker/bmp.cxx
new file mode 100644
index 000000000000..dce36f039730
--- /dev/null
+++ b/svtools/bmpmaker/bmp.cxx
@@ -0,0 +1,249 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_svtools.hxx"
+
+#include <rtl/math.hxx>
+
+#include <math.h>
+#include <stdio.h>
+#include <signal.h>
+#include <vector>
+using namespace std;
+
+#include <vcl/svapp.hxx>
+
+#include "svl/solar.hrc"
+#include <svtools/filedlg.hxx>
+#include "bmpcore.hxx"
+#include "bmp.hrc"
+
+// ----------
+// - BmpApp -
+// ----------
+
+class BmpApp : public BmpCreator
+{
+private:
+
+ String aOutputFileName;
+ sal_uInt8 cExitCode;
+
+ sal_Bool GetCommandOption( const ::std::vector< String >& rArgs, const String& rSwitch, String& rSwitchParam );
+ sal_Bool GetCommandOptions( const ::std::vector< String >& rArgs, const String& rSwitch, ::std::vector< String >& rSwitchParams );
+
+ void SetExitCode( sal_uInt8 cExit )
+ {
+ if( ( EXIT_NOERROR == cExitCode ) || ( cExit != EXIT_NOERROR ) )
+ cExitCode = cExit;
+ }
+ void ShowUsage();
+
+ virtual void Message( const String& rText, sal_uInt8 cExitCode );
+
+public:
+
+ BmpApp();
+ ~BmpApp();
+
+ int Start( const ::std::vector< String >& rArgs );
+};
+
+// -----------------------------------------------------------------------------
+
+BmpApp::BmpApp()
+{
+}
+
+// -----------------------------------------------------------------------------
+
+BmpApp::~BmpApp()
+{
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool BmpApp::GetCommandOption( const ::std::vector< String >& rArgs, const String& rSwitch, String& rParam )
+{
+ sal_Bool bRet = sal_False;
+
+ for( int i = 0, nCount = rArgs.size(); ( i < nCount ) && !bRet; i++ )
+ {
+ String aTestStr( '-' );
+
+ for( int n = 0; ( n < 2 ) && !bRet; n++ )
+ {
+ aTestStr += rSwitch;
+
+ if( aTestStr.CompareIgnoreCaseToAscii( rArgs[ i ] ) == COMPARE_EQUAL )
+ {
+ bRet = sal_True;
+
+ if( i < ( nCount - 1 ) )
+ rParam = rArgs[ i + 1 ];
+ else
+ rParam = String();
+ }
+
+ if( 0 == n )
+ aTestStr = '/';
+ }
+ }
+
+ return bRet;
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool BmpApp::GetCommandOptions( const ::std::vector< String >& rArgs, const String& rSwitch, ::std::vector< String >& rParams )
+{
+ sal_Bool bRet = sal_False;
+
+ for( int i = 0, nCount = rArgs.size(); ( i < nCount ); i++ )
+ {
+ String aTestStr( '-' );
+
+ for( int n = 0; ( n < 2 ) && !bRet; n++ )
+ {
+ aTestStr += rSwitch;
+
+ if( aTestStr.CompareIgnoreCaseToAscii( rArgs[ i ] ) == COMPARE_EQUAL )
+ {
+ if( i < ( nCount - 1 ) )
+ rParams.push_back( rArgs[ i + 1 ] );
+ else
+ rParams.push_back( String() );
+
+ break;
+ }
+
+ if( 0 == n )
+ aTestStr = '/';
+ }
+ }
+
+ return( rParams.size() > 0 );
+}
+
+// -----------------------------------------------------------------------
+
+void BmpApp::Message( const String& rText, sal_uInt8 cExit )
+{
+ if( EXIT_NOERROR != cExit )
+ SetExitCode( cExit );
+
+ ByteString aText( rText, RTL_TEXTENCODING_UTF8 );
+ aText.Append( "\r\n" );
+ fprintf( stderr, "%s", aText.GetBuffer() );
+}
+
+// -----------------------------------------------------------------------------
+
+void BmpApp::ShowUsage()
+{
+ Message( String( RTL_CONSTASCII_USTRINGPARAM( "Usage:" ) ), EXIT_NOERROR );
+ Message( String( RTL_CONSTASCII_USTRINGPARAM( " bmp srs_inputfile output_dir lang_dir lang_num -i input_dir [-i input_dir ][-f err_file]" ) ), EXIT_NOERROR );
+ Message( String( RTL_CONSTASCII_USTRINGPARAM( "Options:" ) ), EXIT_NOERROR );
+ Message( String( RTL_CONSTASCII_USTRINGPARAM( " -i ... name of directory to be searched for input files [multiple occurrence is possible]" ) ), EXIT_NOERROR );
+ Message( String( RTL_CONSTASCII_USTRINGPARAM( " -f name of file, output should be written to" ) ), EXIT_NOERROR );
+ Message( String( RTL_CONSTASCII_USTRINGPARAM( "Examples:" ) ), EXIT_NOERROR );
+ Message( String( RTL_CONSTASCII_USTRINGPARAM( " bmp /home/test.srs /home/out enus 01 -i /home/res -f /home/out/bmp.err" ) ), EXIT_NOERROR );
+}
+
+// -----------------------------------------------------------------------------
+
+int BmpApp::Start( const ::std::vector< String >& rArgs )
+{
+ String aOutName;
+
+ cExitCode = EXIT_NOERROR;
+
+ if( rArgs.size() >= 6 )
+ {
+ LangInfo aLangInfo;
+ sal_uInt16 nCurCmd = 0;
+ const String aSrsName( rArgs[ nCurCmd++ ] );
+ ::std::vector< String > aInDirVector;
+ ByteString aLangDir;
+
+ aOutName = rArgs[ nCurCmd++ ];
+
+ aLangDir = ByteString( rArgs[ nCurCmd++ ], RTL_TEXTENCODING_ASCII_US );
+ aLangInfo.mnLangNum = static_cast< sal_uInt16 >( rArgs[ nCurCmd++ ].ToInt32() );
+
+ memcpy( aLangInfo.maLangDir, aLangDir.GetBuffer(), aLangDir.Len() + 1 );
+
+ GetCommandOption( rArgs, 'f', aOutputFileName );
+ GetCommandOptions( rArgs, 'i', aInDirVector );
+
+ Create( aSrsName, aInDirVector, aOutName, aLangInfo );
+ }
+ else
+ {
+ ShowUsage();
+ cExitCode = EXIT_COMMONERROR;
+ }
+
+ if( ( EXIT_NOERROR == cExitCode ) && aOutputFileName.Len() && aOutName.Len() )
+ {
+ SvFileStream aOStm( aOutputFileName, STREAM_WRITE | STREAM_TRUNC );
+ ByteString aStr( "Successfully generated ImageList(s) in: " );
+
+ aOStm.WriteLine( aStr.Append( ByteString( aOutName, RTL_TEXTENCODING_UTF8 ) ) );
+ aOStm.Close();
+ }
+
+ return cExitCode;
+}
+
+// --------
+// - Main -
+// --------
+
+int main( int nArgCount, char* ppArgs[] )
+{
+#ifdef UNX
+ static char aDisplayVar[ 1024 ];
+
+ strcpy( aDisplayVar, "DISPLAY=" );
+ putenv( aDisplayVar );
+#endif
+
+ ::std::vector< String > aArgs;
+ BmpApp aBmpApp;
+
+ InitVCL( com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory >() );
+
+ for( int i = 1; i < nArgCount; i++ )
+ aArgs.push_back( String( ppArgs[ i ], RTL_TEXTENCODING_ASCII_US ) );
+
+ return aBmpApp.Start( aArgs );
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */