diff options
author | Kurt Zenker <kz@openoffice.org> | 2008-08-14 16:02:29 +0000 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2008-08-14 16:02:29 +0000 |
commit | 872108edbca12363a50fdcb12d0f531ea08da248 (patch) | |
tree | 109d1a6756d70103c8f1a8404c2103643862d9c9 /sdext | |
parent | INTEGRATION: CWS pdf25 (1.1.2); FILE ADDED (diff) | |
download | core-872108edbca12363a50fdcb12d0f531ea08da248.tar.gz core-872108edbca12363a50fdcb12d0f531ea08da248.zip |
INTEGRATION: CWS pdf25 (1.1.2); FILE ADDED
2008/08/05 09:59:14 akhva 1.1.2.2: #i90061
2008/07/24 11:41:28 akhva 1.1.2.1: #90061
Diffstat (limited to 'sdext')
-rw-r--r-- | sdext/source/pdfimport/misc/makefile.mk | 50 | ||||
-rw-r--r-- | sdext/source/pdfimport/misc/pdfihelper.cxx | 84 | ||||
-rw-r--r-- | sdext/source/pdfimport/misc/pwdinteract.cxx | 171 |
3 files changed, 305 insertions, 0 deletions
diff --git a/sdext/source/pdfimport/misc/makefile.mk b/sdext/source/pdfimport/misc/makefile.mk new file mode 100644 index 000000000000..54ea287fb016 --- /dev/null +++ b/sdext/source/pdfimport/misc/makefile.mk @@ -0,0 +1,50 @@ +#************************************************************************* +# +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# Copyright 2008 by Sun Microsystems, Inc. +# +# OpenOffice.org - a multi-platform office productivity suite +# +# $RCSfile: makefile.mk,v $ +# +# $Revision: 1.2 $ +# +# 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. +# +#************************************************************************* + +PRJ=..$/..$/.. + +PRJNAME=sdext +TARGET=pdfmisc +ENABLE_EXCEPTIONS=TRUE + +# --- Settings ----------------------------------------------------- + +.INCLUDE: settings.mk + +# --- Files -------------------------------------------------------- + +SLOFILES=\ + $(SLO)$/pdfihelper.obj \ + $(SLO)$/pwdinteract.obj + +# --- Targets ------------------------------------------------------ + +.INCLUDE: target.mk diff --git a/sdext/source/pdfimport/misc/pdfihelper.cxx b/sdext/source/pdfimport/misc/pdfihelper.cxx new file mode 100644 index 000000000000..ea08976fa87a --- /dev/null +++ b/sdext/source/pdfimport/misc/pdfihelper.cxx @@ -0,0 +1,84 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: pdfihelper.cxx,v $ + * + * $Revision: 1.2 $ + * + * 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_sdext.hxx" + +#include "pdfihelper.hxx" + +#include <rtl/ustrbuf.hxx> +#include <vcl/canvastools.hxx> + +using namespace pdfi; +using namespace com::sun::star; + +rtl::OUString pdfi::getColorString( const rendering::ARGBColor& rCol ) +{ + rtl::OUStringBuffer aBuf( 7 ); + const sal_uInt8 nRed ( vcl::unotools::toByteColor(rCol.Red) ); + const sal_uInt8 nGreen( vcl::unotools::toByteColor(rCol.Green) ); + const sal_uInt8 nBlue ( vcl::unotools::toByteColor(rCol.Blue) ); + aBuf.append( sal_Unicode('#') ); + if( nRed < 10 ) + aBuf.append( sal_Unicode('0') ); + aBuf.append( sal_Int32(nRed), 16 ); + if( nGreen < 10 ) + aBuf.append( sal_Unicode('0') ); + aBuf.append( sal_Int32(nGreen), 16 ); + if( nBlue < 10 ) + aBuf.append( sal_Unicode('0') ); + aBuf.append( sal_Int32(nBlue), 16 ); + + // TODO(F3): respect alpha transparency (polygons etc.) + OSL_ASSERT(rCol.Alpha == 1.0); + + return aBuf.makeStringAndClear(); +} + +rtl::OUString pdfi::unitMMString( double fMM ) +{ + rtl::OUStringBuffer aBuf( 32 ); + aBuf.append( rtl_math_round( fMM, 2, rtl_math_RoundingMode_Floor ) ); + aBuf.appendAscii( "mm" ); + + return aBuf.makeStringAndClear(); +} + +rtl::OUString pdfi::convertPixelToUnitString( double fPix ) +{ + rtl::OUStringBuffer aBuf( 32 ); + aBuf.append( rtl_math_round( convPx2mm( fPix ), 2, rtl_math_RoundingMode_Floor ) ); + aBuf.appendAscii( "mm" ); + + return aBuf.makeStringAndClear(); +} + + diff --git a/sdext/source/pdfimport/misc/pwdinteract.cxx b/sdext/source/pdfimport/misc/pwdinteract.cxx new file mode 100644 index 000000000000..1545bec51f3d --- /dev/null +++ b/sdext/source/pdfimport/misc/pwdinteract.cxx @@ -0,0 +1,171 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: pwdinteract.cxx,v $ + * + * $Revision: 1.2 $ + * + * 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_sdext.hxx" + +#include "pdfihelper.hxx" + +#include <com/sun/star/task/XInteractionHandler.hpp> +#include <com/sun/star/task/XInteractionRequest.hpp> +#include <com/sun/star/task/XInteractionPassword.hpp> +#include <com/sun/star/task/PasswordRequest.hpp> + +#include <cppuhelper/exc_hlp.hxx> +#include <cppuhelper/compbase2.hxx> +#include <cppuhelper/basemutex.hxx> +#include <comphelper/anytostring.hxx> + + +using namespace com::sun::star; + +namespace +{ + +typedef ::cppu::WeakComponentImplHelper2< + com::sun::star::task::XInteractionRequest, + com::sun::star::task::XInteractionPassword > PDFPasswordRequestBase; + +class PDFPasswordRequest : private cppu::BaseMutex, + public PDFPasswordRequestBase +{ +private: + task::PasswordRequest m_aRequest; + rtl::OUString m_aPassword; + bool m_bSelected; + +public: + explicit PDFPasswordRequest(bool bFirstTry); + + // XInteractionRequest + virtual uno::Any SAL_CALL getRequest( ) throw (uno::RuntimeException); + virtual uno::Sequence< uno::Reference< task::XInteractionContinuation > > SAL_CALL getContinuations( ) throw (uno::RuntimeException); + + // XInteractionPassword + virtual void SAL_CALL setPassword( const rtl::OUString& rPwd ) throw (uno::RuntimeException); + virtual rtl::OUString SAL_CALL getPassword() throw (uno::RuntimeException); + + // XInteractionContinuation + virtual void SAL_CALL select() throw (uno::RuntimeException); + + bool isSelected() const { osl::MutexGuard const guard( m_aMutex ); return m_bSelected; } +}; + +PDFPasswordRequest::PDFPasswordRequest( bool bFirstTry ) : + PDFPasswordRequestBase( m_aMutex ), + m_aRequest(), + m_aPassword(), + m_bSelected(false) +{ + m_aRequest.Mode = bFirstTry ? + task::PasswordRequestMode_PASSWORD_ENTER : + task::PasswordRequestMode_PASSWORD_REENTER; + m_aRequest.Classification = task::InteractionClassification_QUERY; +} + +uno::Any SAL_CALL PDFPasswordRequest::getRequest() throw (uno::RuntimeException) +{ + osl::MutexGuard const guard( m_aMutex ); + + uno::Any aRet; + aRet <<= m_aRequest; + return aRet; +} + +uno::Sequence< uno::Reference< task::XInteractionContinuation > > SAL_CALL PDFPasswordRequest::getContinuations() throw (uno::RuntimeException) +{ + osl::MutexGuard const guard( m_aMutex ); + + uno::Sequence< uno::Reference< task::XInteractionContinuation > > aRet( 1 ); + aRet.getArray()[0] = static_cast<task::XInteractionContinuation*>(this); + return aRet; +} + +void SAL_CALL PDFPasswordRequest::setPassword( const rtl::OUString& rPwd ) throw (uno::RuntimeException) +{ + osl::MutexGuard const guard( m_aMutex ); + + m_aPassword = rPwd; +} + +rtl::OUString SAL_CALL PDFPasswordRequest::getPassword() throw (uno::RuntimeException) +{ + osl::MutexGuard const guard( m_aMutex ); + + return m_aPassword; +} + +void SAL_CALL PDFPasswordRequest::select() throw (uno::RuntimeException) +{ + osl::MutexGuard const guard( m_aMutex ); + + m_bSelected = true; +} + +} // namespace + +namespace pdfi +{ + +bool getPassword( const uno::Reference< task::XInteractionHandler >& xHandler, + rtl::OUString& rOutPwd, + bool bFirstTry ) +{ + bool bSuccess = false; + + PDFPasswordRequest* pRequest; + uno::Reference< task::XInteractionRequest > xReq( + pRequest = new PDFPasswordRequest( bFirstTry ) ); + try + { + xHandler->handle( xReq ); + } + catch( uno::Exception& ) + { +#if 0 + OSL_ENSURE( false, + rtl::OUStringToOString( + comphelper::anyToString( cppu::getCaughtException() ), + RTL_TEXTENCODING_UTF8 ).getStr() ); +#endif + } + + OSL_TRACE( "request %s selected\n", pRequest->isSelected() ? "was" : "was not" ); + if( pRequest->isSelected() ) + { + bSuccess = true; + rOutPwd = pRequest->getPassword(); + } + + return bSuccess; +} + +} |