Date: prev next · Thread: first prev next last
2010 Archives by date, by thread · List index


Hi,

I have found some duplicate classes between vcl/unx and vcl/unx/headless; PspSalInfoPrinter and PspSalPrinter. As suggested by Caolàn, the attached patch removes these two classes from vcl/unx/headless

- The following removed methods were not strictly identical to the existing:
BOOL PspSalInfoPrinter::Setup( SalFrame* pFrame, ImplJobSetup* pJobSetup )
void vcl_sal::PrinterUpdate::doUpdate()
void vcl_sal::PrinterUpdate::update()

- libvclplug_svpxl.so generated by vcl/unx/headless is now indirectly linked with X11, something probably not desired for a headless library.

- There are still lot of common code between SvpSalInstance and X11SalInstance. I will move that common code in a base class. UnxSalInstance seems a good name... That code consists at least of CreateInfoPrinter, CreatePrinter, some helper functions, and probably some mutex related code.
Any comment/suggestion on this idea are welcome...


Regards,
Joachim.

diff --git a/vcl/unx/headless/svpprn.cxx b/vcl/unx/headless/svpprn.cxx
index 5d7e67c..27af93d 100644
--- a/vcl/unx/headless/svpprn.cxx
+++ b/vcl/unx/headless/svpprn.cxx
@@ -36,7 +36,6 @@
 #include "vcl/timer.hxx"
 #include "vcl/printerinfomanager.hxx"
 
-#include "svpprn.hxx"
 #include "svppspgraphics.hxx"
 #include "svpinst.hxx"
 
@@ -44,6 +43,8 @@
 #include <sys/stat.h>
 #include <sys/wait.h>
 
+#include "salprn.h"
+
 using namespace psp;
 using namespace rtl;
 
@@ -169,143 +170,7 @@ static void copyJobDataToJobSetup( ImplJobSetup* pJobSetup, JobData& rData )
     }
 }
 
-static bool passFileToCommandLine( const String& rFilename, const String& rCommandLine, bool 
bRemoveFile = true )
-{
-    bool bSuccess = false;
-
-    rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
-    ByteString aCmdLine( rCommandLine, aEncoding );
-    ByteString aFilename( rFilename, aEncoding );
-
-    bool bPipe = aCmdLine.Search( "(TMP)" ) != STRING_NOTFOUND ? false : true;
-
-    // setup command line for exec
-    if( ! bPipe )
-        while( aCmdLine.SearchAndReplace( "(TMP)", aFilename ) != STRING_NOTFOUND )
-            ;
-
-#if OSL_DEBUG_LEVEL > 1
-    fprintf( stderr, "%s commandline: \"%s\"\n",
-             bPipe ? "piping to" : "executing",
-             aCmdLine.GetBuffer() );
-    struct stat aStat;
-    if( stat( aFilename.GetBuffer(), &aStat ) )
-        fprintf( stderr, "stat( %s ) failed\n", aFilename.GetBuffer() );
-    fprintf( stderr, "Tmp file %s has modes: 0%03lo\n", aFilename.GetBuffer(), (long)aStat.st_mode 
);
-#endif
-    const char* argv[4];
-    if( ! ( argv[ 0 ] = getenv( "SHELL" ) ) )
-        argv[ 0 ] = "/bin/sh";
-    argv[ 1 ] = "-c";
-    argv[ 2 ] = aCmdLine.GetBuffer();
-    argv[ 3 ] = 0;
-
-    bool bHavePipes = false;
-    int pid, fd[2];
-
-    if( bPipe )
-        bHavePipes = pipe( fd ) ? false : true;
-    if( ( pid = fork() ) > 0 )
-    {
-        if( bPipe && bHavePipes )
-        {
-            close( fd[0] );
-            char aBuffer[ 2048 ];
-            FILE* fp = fopen( aFilename.GetBuffer(), "r" );
-            while( fp && ! feof( fp ) )
-            {
-                int nBytes = fread( aBuffer, 1, sizeof( aBuffer ), fp );
-                if( nBytes )
-                    write( fd[ 1 ], aBuffer, nBytes );
-            }
-            fclose( fp );
-            close( fd[ 1 ] );
-        }
-        int status = 0;
-        waitpid( pid, &status, 0 );
-        if( ! status )
-            bSuccess = true;
-    }
-    else if( ! pid )
-    {
-        if( bPipe && bHavePipes )
-        {
-            close( fd[1] );
-            if( fd[0] != STDIN_FILENO ) // not probable, but who knows :)
-                dup2( fd[0], STDIN_FILENO );
-        }
-        execv( argv[0], const_cast<char**>(argv) );
-        fprintf( stderr, "failed to execute \"%s\"\n", aCmdLine.GetBuffer() );
-        _exit( 1 );
-    }
-    else
-        fprintf( stderr, "failed to fork\n" );
-
-    // clean up the mess
-    if( bRemoveFile )
-        unlink( aFilename.GetBuffer() );
-
-    return bSuccess;
-}
-
-static bool sendAFax( const String& rFaxNumber, const String& rFileName, const String& rCommand )
-{
-    std::list< OUString > aFaxNumbers;
-
-    if( ! rFaxNumber.Len() )
-        return false;
-
-    sal_Int32 nIndex = 0;
-    OUString aFaxes( rFaxNumber );
-    OUString aBeginToken( RTL_CONSTASCII_USTRINGPARAM("<Fax#>") );
-    OUString aEndToken( RTL_CONSTASCII_USTRINGPARAM("</Fax#>") );
-    while( nIndex != -1 )
-    {
-        nIndex = aFaxes.indexOf( aBeginToken, nIndex );
-        if( nIndex != -1 )
-        {
-            sal_Int32 nBegin = nIndex + aBeginToken.getLength();
-            nIndex = aFaxes.indexOf( aEndToken, nIndex );
-            if( nIndex != -1 )
-            {
-                aFaxNumbers.push_back( aFaxes.copy( nBegin, nIndex-nBegin ) );
-                nIndex += aEndToken.getLength();
-            }
-        }
-    }
 
-    bool bSuccess = true;
-    if( aFaxNumbers.begin() != aFaxNumbers.end() )
-    {
-        while( aFaxNumbers.begin() != aFaxNumbers.end() && bSuccess )
-        {
-            String aCmdLine( rCommand );
-            String aFaxNumber( aFaxNumbers.front() );
-            aFaxNumbers.pop_front();
-            while( aCmdLine.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "(PHONE)" ) ), 
aFaxNumber ) != STRING_NOTFOUND )
-                ;
-#if OSL_DEBUG_LEVEL > 1
-            fprintf( stderr, "sending fax to \"%s\"\n", OUStringToOString( aFaxNumber, 
osl_getThreadTextEncoding() ).getStr() );
-#endif
-            bSuccess = passFileToCommandLine( rFileName, aCmdLine, false );
-        }
-    }
-    else
-        bSuccess = false;
-
-    // clean up temp file
-    unlink( ByteString( rFileName, osl_getThreadTextEncoding() ).GetBuffer() );
-
-    return bSuccess;
-}
-
-static bool createPdf( const String& rToFile, const String& rFromFile, const String& rCommandLine )
-{
-    String aCommandLine( rCommandLine );
-    while( aCommandLine.SearchAndReplace( String( RTL_CONSTASCII_USTRINGPARAM( "(OUTFILE)" ) ), 
rToFile ) != STRING_NOTFOUND )
-        ;
-    return passFileToCommandLine( rFromFile, aCommandLine );
-}
 
 /*
  *     SalInstance
@@ -436,643 +301,4 @@ String SvpSalInstance::GetDefaultPrinter()
     return rManager.getDefaultPrinter();
 }
 
-// =======================================================================
-
-PspSalInfoPrinter::PspSalInfoPrinter()
-{
-    m_pGraphics = NULL;
-    m_bPapersInit = false;
-}
-
-// -----------------------------------------------------------------------
-
-PspSalInfoPrinter::~PspSalInfoPrinter()
-{
-    if( m_pGraphics )
-    {
-        delete m_pGraphics;
-        m_pGraphics = NULL;
-    }
-}
-
-// -----------------------------------------------------------------------
-
-void PspSalInfoPrinter::InitPaperFormats( const ImplJobSetup* )
-{
-    m_aPaperFormats.clear();
-    m_bPapersInit = true;
-
-    if( m_aJobData.m_pParser )
-    {
-        const PPDKey* pKey = m_aJobData.m_pParser->getKey( String( RTL_CONSTASCII_USTRINGPARAM( 
"PageSize" ) ) );
-        if( pKey )
-        {
-            int nValues = pKey->countValues();
-            for( int i = 0; i < nValues; i++ )
-            {
-                const PPDValue* pValue = pKey->getValue( i );
-                int nWidth = 0, nHeight = 0;
-                m_aJobData.m_pParser->getPaperDimension( pValue->m_aOption, nWidth, nHeight );
-                PaperInfo aInfo(PtTo10Mu( nWidth ), PtTo10Mu( nHeight ));
-                m_aPaperFormats.push_back( aInfo );
-            }
-        }
-    }
-}
-
-// -----------------------------------------------------------------------
-
-int PspSalInfoPrinter::GetLandscapeAngle( const ImplJobSetup* )
-{
-    return 900;
-}
-
-// -----------------------------------------------------------------------
-
-SalGraphics* PspSalInfoPrinter::GetGraphics()
-{
-    // return a valid pointer only once
-    // the reasoning behind this is that we could have different
-    // SalGraphics that can run in multiple threads
-    // (future plans)
-    SalGraphics* pRet = NULL;
-    if( ! m_pGraphics )
-    {
-        m_pGraphics = new PspGraphics( &m_aJobData, &m_aPrinterGfx, NULL, false, this );
-        m_pGraphics->SetLayout( 0 );
-        pRet = m_pGraphics;
-    }
-    return pRet;
-}
-
-// -----------------------------------------------------------------------
-
-void PspSalInfoPrinter::ReleaseGraphics( SalGraphics* pGraphics )
-{
-    if( pGraphics == m_pGraphics )
-    {
-        delete pGraphics;
-        m_pGraphics = NULL;
-    }
-    return;
-}
-
-// -----------------------------------------------------------------------
-
-BOOL PspSalInfoPrinter::Setup( SalFrame*, ImplJobSetup* )
-{
-    return FALSE;
-}
-
-// -----------------------------------------------------------------------
-
-// This function gets the driver data and puts it into pJobSetup
-// If pJobSetup->mpDriverData is NOT NULL, then the independend
-// data should be merged into the driver data
-// If pJobSetup->mpDriverData IS NULL, then the driver defaults
-// should be merged into the independent data
-BOOL PspSalInfoPrinter::SetPrinterData( ImplJobSetup* pJobSetup )
-{
-    if( pJobSetup->mpDriverData )
-        return SetData( ~0, pJobSetup );
-
-    copyJobDataToJobSetup( pJobSetup, m_aJobData );
-
-    // set/clear backwards compatibility flag
-    bool bStrictSO52Compatibility = false;
-    std::hash_map<rtl::OUString, rtl::OUString, rtl::OUStringHash >::const_iterator compat_it =
-        pJobSetup->maValueMap.find( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( 
"StrictSO52Compatibility" ) ) );
-    if( compat_it != pJobSetup->maValueMap.end() )
-    {
-        if( compat_it->second.equalsIgnoreAsciiCaseAscii( "true" ) )
-            bStrictSO52Compatibility = true;
-    }
-    m_aPrinterGfx.setStrictSO52Compatibility( bStrictSO52Compatibility );
-
-    return TRUE;
-}
-
-// -----------------------------------------------------------------------
-
-// This function merges the independ driver data
-// and sets the new independ data in pJobSetup
-// Only the data must be changed, where the bit
-// in nGetDataFlags is set
-BOOL PspSalInfoPrinter::SetData(
-    ULONG nSetDataFlags,
-    ImplJobSetup* pJobSetup )
-{
-    JobData aData;
-    JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, aData 
);
-
-    if( aData.m_pParser )
-    {
-        const PPDKey* pKey;
-        const PPDValue* pValue;
-
-        // merge papersize if necessary
-        if( nSetDataFlags & SAL_JOBSET_PAPERSIZE )
-        {
-            int nWidth, nHeight;
-            if( pJobSetup->meOrientation == ORIENTATION_PORTRAIT )
-            {
-                nWidth = pJobSetup->mnPaperWidth;
-                nHeight        = pJobSetup->mnPaperHeight;
-            }
-            else
-            {
-                nWidth = pJobSetup->mnPaperHeight;
-                nHeight        = pJobSetup->mnPaperWidth;
-            }
-            String aPaper;
-
-            if( pJobSetup->mePaperFormat == PAPER_USER )
-                aPaper = aData.m_pParser->matchPaper(
-                    TenMuToPt( pJobSetup->mnPaperWidth ),
-                    TenMuToPt( pJobSetup->mnPaperHeight ) );
-            else
-                aPaper = rtl::OStringToOUString(PaperInfo::toPSName(pJobSetup->mePaperFormat), 
RTL_TEXTENCODING_ISO_8859_1);
-
-            pKey = aData.m_pParser->getKey( String( RTL_CONSTASCII_USTRINGPARAM( "PageSize" ) ) );
-            pValue = pKey ? pKey->getValue( aPaper ) : NULL;
-            if( ! ( pKey && pValue && aData.m_aContext.setValue( pKey, pValue, false ) == pValue ) 
)
-                return FALSE;
-        }
-
-        // merge paperbin if necessary
-        if( nSetDataFlags & SAL_JOBSET_PAPERBIN )
-        {
-            pKey = aData.m_pParser->getKey( String( RTL_CONSTASCII_USTRINGPARAM( "InputSlot" ) ) );
-            if( pKey )
-            {
-                int nPaperBin = pJobSetup->mnPaperBin;
-                if( nPaperBin == 0xffff )
-                    pValue = pKey->getDefaultValue();
-                else
-                    pValue = pKey->getValue( pJobSetup->mnPaperBin );
-
-                // may fail due to constraints;
-                // real paper bin is copied back to jobsetup in that case
-                aData.m_aContext.setValue( pKey, pValue );
-            }
-            // if printer has no InputSlot key simply ignore this setting
-            // (e.g. SGENPRT has no InputSlot)
-        }
-
-        // merge orientation if necessary
-        if( nSetDataFlags & SAL_JOBSET_ORIENTATION )
-            aData.m_eOrientation = pJobSetup->meOrientation == ORIENTATION_LANDSCAPE ? 
orientation::Landscape : orientation::Portrait;
-        
-        // merge duplex if necessary
-        if( nSetDataFlags & SAL_JOBSET_DUPLEXMODE )
-        {
-            pKey = aData.m_pParser->getKey( String( RTL_CONSTASCII_USTRINGPARAM( "Duplex" ) ) );
-            if( pKey )
-            {
-                pValue = NULL;
-                switch( pJobSetup->meDuplexMode )
-                {
-                case DUPLEX_OFF:
-                    pValue = pKey->getValue( String( RTL_CONSTASCII_USTRINGPARAM( "None" ) ) );
-                    if( pValue == NULL )
-                        pValue = pKey->getValue( String( RTL_CONSTASCII_USTRINGPARAM( 
"SimplexNoTumble" ) ) );
-                    break;
-                case DUPLEX_SHORTEDGE:
-                    pValue = pKey->getValue( String( RTL_CONSTASCII_USTRINGPARAM( "DuplexTumble" ) 
) );
-                    break;
-                case DUPLEX_LONGEDGE:
-                    pValue = pKey->getValue( String( RTL_CONSTASCII_USTRINGPARAM( "DuplexNoTumble" 
) ) );
-                    break;
-                case DUPLEX_UNKNOWN:
-                default:
-                    pValue = 0;
-                    break;
-                }
-                if( ! pValue )
-                    pValue = pKey->getDefaultValue();
-                aData.m_aContext.setValue( pKey, pValue );
-            }
-        }
-
-        m_aJobData = aData;
-        copyJobDataToJobSetup( pJobSetup, aData );
-        return TRUE;
-    }
-
-    return FALSE;
-}
-
-// -----------------------------------------------------------------------
-
-void PspSalInfoPrinter::GetPageInfo(
-    const ImplJobSetup* pJobSetup,
-    long& rOutWidth, long& rOutHeight,
-    long& rPageOffX, long& rPageOffY,
-    long& rPageWidth, long& rPageHeight )
-{
-    if( ! pJobSetup )
-        return;
-
-    JobData aData;
-    JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, aData 
);
-
-    // get the selected page size
-    if( aData.m_pParser )
-    {
-
-        String aPaper;
-        int width, height;
-        int left = 0, top = 0, right = 0, bottom = 0;
-        int nDPI = aData.m_aContext.getRenderResolution();
-
-
-        if( aData.m_eOrientation == psp::orientation::Portrait )
-        {
-            aData.m_aContext.getPageSize( aPaper, width, height );
-            aData.m_pParser->getMargins( aPaper, left, right, top, bottom );
-        }
-        else
-        {
-            aData.m_aContext.getPageSize( aPaper, height, width );
-            aData.m_pParser->getMargins( aPaper, top, bottom, right, left );
-        }
-
-        rPageWidth     = width * nDPI / 72;
-        rPageHeight    = height * nDPI / 72;
-        rPageOffX      = left * nDPI / 72;
-        rPageOffY      = top * nDPI / 72;
-        rOutWidth      = ( width  - left - right ) * nDPI / 72;
-        rOutHeight     = ( height - top  - bottom ) * nDPI / 72;
-    }
-}
-
-// -----------------------------------------------------------------------
-
-ULONG PspSalInfoPrinter::GetPaperBinCount( const ImplJobSetup* pJobSetup )
-{
-    if( ! pJobSetup )
-        return 0;
-
-    JobData aData;
-    JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, aData 
);
-
-    const PPDKey* pKey = aData.m_pParser ? aData.m_pParser->getKey( String( 
RTL_CONSTASCII_USTRINGPARAM( "InputSlot" ) ) ): NULL;
-    return pKey ? pKey->countValues() : 0;
-}
-
-// -----------------------------------------------------------------------
-
-String PspSalInfoPrinter::GetPaperBinName( const ImplJobSetup* pJobSetup, ULONG nPaperBin )
-{
-    JobData aData;
-    JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, aData 
);
-
-    String aRet;
-    if( aData.m_pParser )
-    {
-        const PPDKey* pKey = aData.m_pParser ? aData.m_pParser->getKey( String( 
RTL_CONSTASCII_USTRINGPARAM( "InputSlot" ) ) ): NULL;
-        if( nPaperBin == 0xffff || ! pKey )
-            aRet = aData.m_pParser->getDefaultInputSlot();
-        else
-        {
-            const PPDValue* pValue = pKey->getValue( nPaperBin );
-            if( pValue )
-                aRet = aData.m_pParser->translateOption( pKey->getKey(), pValue->m_aOption );
-        }
-    }
-
-    return aRet;
-}
-
-// -----------------------------------------------------------------------
-
-ULONG PspSalInfoPrinter::GetCapabilities( const ImplJobSetup* pJobSetup, USHORT nType )
-{
-    switch( nType )
-    {
-        case PRINTER_CAPABILITIES_SUPPORTDIALOG:
-            return 1;
-        case PRINTER_CAPABILITIES_COPIES:
-            return 0xffff;
-        case PRINTER_CAPABILITIES_COLLATECOPIES:
-        {
-            // see if the PPD contains a value to set Collate to True
-            JobData aData;
-            JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, 
pJobSetup->mnDriverDataLen, aData );
-
-            const PPDKey* pKey = aData.m_pParser ? aData.m_pParser->getKey( String( 
RTL_CONSTASCII_USTRINGPARAM( "Collate" ) ) ) : NULL;
-            const PPDValue* pVal = pKey ? pKey->getValue( String( RTL_CONSTASCII_USTRINGPARAM( 
"True" ) ) ) : NULL;
-
-            // PPDs don't mention the number of possible collated copies.
-            // so let's guess as many as we want ?
-            return pVal ? 0xffff : 0;
-        }
-        case PRINTER_CAPABILITIES_SETORIENTATION:
-            return 1;
-        case PRINTER_CAPABILITIES_SETDUPLEX:
-            return 1;
-        case PRINTER_CAPABILITIES_SETPAPERBIN:
-            return 1;
-        case PRINTER_CAPABILITIES_SETPAPERSIZE:
-            return 1;
-        case PRINTER_CAPABILITIES_SETPAPER:
-            return 0;
-        case PRINTER_CAPABILITIES_FAX:
-        {
-            PrinterInfoManager& rManager = PrinterInfoManager::get();
-            PrinterInfo aInfo( rManager.getPrinterInfo( pJobSetup->maPrinterName ) );
-            String aFeatures( aInfo.m_aFeatures );
-            int nTokenCount = aFeatures.GetTokenCount( ',' );
-            for( int i = 0; i < nTokenCount; i++ )
-            {
-                if( aFeatures.GetToken( i ).CompareToAscii( "fax", 3 ) == COMPARE_EQUAL )
-                    return 1;
-            }
-            return 0;
-        }
-        case PRINTER_CAPABILITIES_PDF:
-        {
-            PrinterInfoManager& rManager = PrinterInfoManager::get();
-            PrinterInfo aInfo( rManager.getPrinterInfo( pJobSetup->maPrinterName ) );
-            String aFeatures( aInfo.m_aFeatures );
-            int nTokenCount = aFeatures.GetTokenCount( ',' );
-            for( int i = 0; i < nTokenCount; i++ )
-            {
-                if( aFeatures.GetToken( i ).CompareToAscii( "pdf=", 4 ) == COMPARE_EQUAL )
-                    return 1;
-            }
-            return 0;
-        }
-        default: break;
-    };
-    return 0;
-}
-
-// =======================================================================
-
-/*
- *     SalPrinter
- */
-
-PspSalPrinter::PspSalPrinter( SalInfoPrinter* pInfoPrinter )
- : m_bFax( false ),
-   m_bPdf( false ),
-   m_bSwallowFaxNo( false ),
-   m_pGraphics( NULL ),
-   m_nCopies( 1 ),
-   m_bCollate( false ),
-   m_pInfoPrinter( pInfoPrinter )
-{
-}
-
-// -----------------------------------------------------------------------
-
-PspSalPrinter::~PspSalPrinter()
-{
-}
-
-// -----------------------------------------------------------------------
-
-static String getTmpName()
-{
-    rtl::OUString aTmp, aSys;
-    osl_createTempFile( NULL, NULL, &aTmp.pData );
-    osl_getSystemPathFromFileURL( aTmp.pData, &aSys.pData );
-
-    return aSys;
-}
-
-BOOL PspSalPrinter::StartJob(
-    const XubString* pFileName,
-    const XubString& rJobName,
-    const XubString& rAppName,
-    ULONG nCopies,
-    bool bCollate,
-    bool /*bDirect*/,
-    ImplJobSetup* pJobSetup )
-{
-    vcl_sal::PrinterUpdate::jobStarted();
-
-    m_bFax             = false;
-    m_bPdf             = false;
-    m_aFileName        = pFileName ? *pFileName : String();
-    m_aTmpFile = String();
-    m_nCopies   = nCopies;
-    m_bCollate  = bCollate;
-
-    JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, 
m_aJobData );
-    if( m_nCopies > 1 )
-    {
-        // in case user did not do anything (m_nCopies=1)
-        // take the default from jobsetup
-        m_aJobData.m_nCopies = m_nCopies;
-        m_aJobData.setCollate( bCollate );
-    }
-
-    // check wether this printer is configured as fax
-    int nMode = 0;
-    const PrinterInfo& rInfo( PrinterInfoManager::get().getPrinterInfo( m_aJobData.m_aPrinterName 
) );
-    sal_Int32 nIndex = 0;
-    while( nIndex != -1 )
-    {
-        OUString aToken( rInfo.m_aFeatures.getToken( 0, ',', nIndex ) );
-        if( ! aToken.compareToAscii( "fax", 3 ) )
-        {
-            m_bFax = true;
-            m_aTmpFile = getTmpName();
-            nMode = S_IRUSR | S_IWUSR;
-
-            ::std::hash_map< ::rtl::OUString, ::rtl::OUString, ::rtl::OUStringHash 
::const_iterator it;
-            it = pJobSetup->maValueMap.find( ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("FAX#")) 
);
-            if( it != pJobSetup->maValueMap.end() )
-                m_aFaxNr = it->second;
-
-            sal_Int32 nPos = 0;
-            m_bSwallowFaxNo = ! aToken.getToken( 1, '=', nPos ).compareToAscii( "swallow", 7 ) ? 
true : false;
-
-            break;
-        }
-        if( ! aToken.compareToAscii( "pdf=", 4 ) )
-        {
-            m_bPdf = true;
-            m_aTmpFile = getTmpName();
-            nMode = S_IRUSR | S_IWUSR;
-
-            if( ! m_aFileName.Len() )
-            {
-                m_aFileName = getPdfDir( rInfo );
-                m_aFileName.Append( '/' );
-                m_aFileName.Append( rJobName );
-                m_aFileName.AppendAscii( ".pdf" );
-            }
-            break;
-        }
-    }
-    m_aPrinterGfx.Init( m_aJobData );
-
-    // set/clear backwards compatibility flag
-    bool bStrictSO52Compatibility = false;
-    std::hash_map<rtl::OUString, rtl::OUString, rtl::OUStringHash >::const_iterator compat_it =
-        pJobSetup->maValueMap.find( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( 
"StrictSO52Compatibility" ) ) );
-    if( compat_it != pJobSetup->maValueMap.end() )
-    {
-        if( compat_it->second.equalsIgnoreAsciiCaseAscii( "true" ) )
-            bStrictSO52Compatibility = true;
-    }
-    m_aPrinterGfx.setStrictSO52Compatibility( bStrictSO52Compatibility );
-
-    return m_aPrintJob.StartJob( m_aTmpFile.Len() ? m_aTmpFile : m_aFileName, nMode, rJobName, 
rAppName, m_aJobData, &m_aPrinterGfx, false ) ? TRUE : FALSE;
-}
-
-// -----------------------------------------------------------------------
-
-BOOL PspSalPrinter::EndJob()
-{
-    BOOL bSuccess = m_aPrintJob.EndJob();
-
-    if( bSuccess )
-    {
-        // check for fax
-        if( m_bFax )
-        {
-
-            const PrinterInfo& rInfo( PrinterInfoManager::get().getPrinterInfo( 
m_aJobData.m_aPrinterName ) );
-            // sendAFax removes the file after use
-            bSuccess = sendAFax( m_aFaxNr, m_aTmpFile, rInfo.m_aCommand );
-        }
-        else if( m_bPdf )
-        {
-            const PrinterInfo& rInfo( PrinterInfoManager::get().getPrinterInfo( 
m_aJobData.m_aPrinterName ) );
-            bSuccess = createPdf( m_aFileName, m_aTmpFile, rInfo.m_aCommand );
-        }
-    }
-    vcl_sal::PrinterUpdate::jobEnded();
-    return bSuccess;
-}
-
-// -----------------------------------------------------------------------
-
-BOOL PspSalPrinter::AbortJob()
-{
-    BOOL bAbort = m_aPrintJob.AbortJob() ? TRUE : FALSE;
-    vcl_sal::PrinterUpdate::jobEnded();
-    return bAbort;
-}
-
-// -----------------------------------------------------------------------
-
-SalGraphics* PspSalPrinter::StartPage( ImplJobSetup* pJobSetup, BOOL )
-{
-    JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, 
m_aJobData );
-    m_pGraphics = new PspGraphics( &m_aJobData, &m_aPrinterGfx, m_bFax ? &m_aFaxNr : NULL, 
m_bSwallowFaxNo, m_pInfoPrinter  );
-    m_pGraphics->SetLayout( 0 );
-    if( m_nCopies > 1 )
-    {
-        // in case user did not do anything (m_nCopies=1)
-        // take the default from jobsetup
-        m_aJobData.m_nCopies = m_nCopies;
-        m_aJobData.setCollate( m_nCopies > 1 && m_bCollate );
-    }
-
-    m_aPrintJob.StartPage( m_aJobData );
-    m_aPrinterGfx.Init( m_aPrintJob );
-
-    return m_pGraphics;
-}
-
-// -----------------------------------------------------------------------
-
-BOOL PspSalPrinter::EndPage()
-{
-    sal_Bool bResult = m_aPrintJob.EndPage();
-    m_aPrinterGfx.Clear();
-    return bResult ? TRUE : FALSE;
-}
-
-// -----------------------------------------------------------------------
-
-ULONG PspSalPrinter::GetErrorCode()
-{
-    return 0;
-}
-
-/*
- *  vcl::PrinterUpdate
- */
-
-Timer* vcl_sal::PrinterUpdate::pPrinterUpdateTimer = NULL;
-int vcl_sal::PrinterUpdate::nActiveJobs = 0;
-
-void vcl_sal::PrinterUpdate::doUpdate()
-{
-    ::psp::PrinterInfoManager& rManager( ::psp::PrinterInfoManager::get() );
-    if( rManager.checkPrintersChanged( false ) && SvpSalInstance::s_pDefaultInstance )
-    {
-        const std::list< SalFrame* >& rList = SvpSalInstance::s_pDefaultInstance->getFrames();
-        for( std::list< SalFrame* >::const_iterator it = rList.begin();
-             it != rList.end(); ++it )
-             SvpSalInstance::s_pDefaultInstance->PostEvent( *it, NULL, SALEVENT_PRINTERCHANGED );
-    }
-}
-
-// -----------------------------------------------------------------------
-
-IMPL_STATIC_LINK_NOINSTANCE( vcl_sal::PrinterUpdate, UpdateTimerHdl, void*, )
-{
-    if( nActiveJobs < 1 )
-    {
-        doUpdate();
-        delete pPrinterUpdateTimer;
-        pPrinterUpdateTimer = NULL;
-    }
-    else
-        pPrinterUpdateTimer->Start();
-
-    return 0;
-}
-
-// -----------------------------------------------------------------------
-
-void vcl_sal::PrinterUpdate::update()
-{
-    if( Application::GetSettings().GetMiscSettings().GetDisablePrinting() )
-        return;
-
-    static bool bOnce = false;    
-    if( ! bOnce )
-    {
-        bOnce = true;
-        // start background printer detection
-        psp::PrinterInfoManager::get();
-        return;
-    }
-    
-    if( nActiveJobs < 1 )
-        doUpdate();
-    else if( ! pPrinterUpdateTimer )
-    {
-        pPrinterUpdateTimer = new Timer();
-        pPrinterUpdateTimer->SetTimeout( 500 );
-        pPrinterUpdateTimer->SetTimeoutHdl( STATIC_LINK( NULL, vcl_sal::PrinterUpdate, 
UpdateTimerHdl ) );
-        pPrinterUpdateTimer->Start();
-    }
-}
-
-// -----------------------------------------------------------------------
-
-void vcl_sal::PrinterUpdate::jobEnded()
-{
-    nActiveJobs--;
-    if( nActiveJobs < 1 )
-    {
-        if( pPrinterUpdateTimer )
-        {
-            pPrinterUpdateTimer->Stop();
-            delete pPrinterUpdateTimer;
-            pPrinterUpdateTimer = NULL;
-            doUpdate();
-        }
-    }
-}
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/headless/svpprn.hxx b/vcl/unx/headless/svpprn.hxx
deleted file mode 100644
index 7535917..0000000
--- a/vcl/unx/headless/svpprn.hxx
+++ /dev/null
@@ -1,122 +0,0 @@
-/* -*- 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.
- *
- ************************************************************************/
-
-#ifndef _SVP_SVPPRN_HXX
-#define _SVP_SVPPRN_HXX
-
-#include "vcl/jobdata.hxx"
-#include "vcl/printergfx.hxx"
-#include "vcl/printerjob.hxx"
-#include "vcl/salprn.hxx"
-
-class PspGraphics;
-
-class PspSalInfoPrinter : public SalInfoPrinter
-{
-public:
-    PspGraphics*                       m_pGraphics;
-    psp::JobData                       m_aJobData;
-    psp::PrinterGfx                    m_aPrinterGfx;
-
-    PspSalInfoPrinter();
-    virtual ~PspSalInfoPrinter();
-
-    // overload all pure virtual methods
-    virtual SalGraphics*                       GetGraphics();
-    virtual void                                       ReleaseGraphics( SalGraphics* pGraphics );
-    virtual BOOL                                       Setup( SalFrame* pFrame, ImplJobSetup* 
pSetupData );
-    virtual BOOL                                       SetPrinterData( ImplJobSetup* pSetupData );
-    virtual BOOL                                       SetData( ULONG nFlags, ImplJobSetup* 
pSetupData );
-    virtual void                                       GetPageInfo( const ImplJobSetup* pSetupData,
-                                                 long& rOutWidth, long& rOutHeight,
-                                                 long& rPageOffX, long& rPageOffY,
-                                                 long& rPageWidth, long& rPageHeight );
-    virtual ULONG                                      GetCapabilities( const ImplJobSetup* 
pSetupData, USHORT nType );
-    virtual ULONG                                      GetPaperBinCount( const ImplJobSetup* 
pSetupData );
-    virtual String                                     GetPaperBinName( const ImplJobSetup* 
pSetupData, ULONG nPaperBin );
-    virtual void                                       InitPaperFormats( const ImplJobSetup* 
pSetupData );
-    virtual int                                        GetLandscapeAngle( const ImplJobSetup* 
pSetupData );
-};
-
-class PspSalPrinter : public SalPrinter
-{
-public:
-    String                                     m_aFileName;
-    String                                     m_aTmpFile;
-    String                                     m_aFaxNr;
-    bool                                       m_bFax:1;
-    bool                                       m_bPdf:1;
-    bool                                       m_bSwallowFaxNo:1;
-    PspGraphics*                       m_pGraphics;
-    psp::PrinterJob                    m_aPrintJob;
-    psp::JobData                       m_aJobData;
-    psp::PrinterGfx                    m_aPrinterGfx;
-    ULONG                                      m_nCopies;
-    bool                    m_bCollate;
-    SalInfoPrinter*         m_pInfoPrinter;
-
-    PspSalPrinter( SalInfoPrinter* );
-    virtual ~PspSalPrinter();
-
-    // overload all pure virtual methods
-    using SalPrinter::StartJob;
-    virtual BOOL                                       StartJob( const XubString* pFileName,
-                                              const XubString& rJobName,
-                                              const XubString& rAppName,
-                                              ULONG nCopies,
-                                              bool bCollate,
-                                              bool bDirect,
-                                              ImplJobSetup* pSetupData );
-    virtual BOOL                                       EndJob();
-    virtual BOOL                                       AbortJob();
-    virtual SalGraphics*                       StartPage( ImplJobSetup* pSetupData, BOOL 
bNewJobData );
-    virtual BOOL                                       EndPage();
-    virtual ULONG                                      GetErrorCode();
-};
-
-class Timer;
-
-namespace vcl_sal {
-class VCL_DLLPUBLIC PrinterUpdate
-{
-    static Timer*                      pPrinterUpdateTimer;
-    static int                         nActiveJobs;
-
-    static void doUpdate();
-    DECL_STATIC_LINK( PrinterUpdate, UpdateTimerHdl, void* );
-public:
-    static void update();
-    static void jobStarted() { nActiveJobs++; }
-    static void jobEnded();
-};
-}
-
-#endif // _SVP_SVPPRN_HXX
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/unx/inc/salprn.h b/vcl/unx/inc/salprn.h
index 6740534..af0a71d 100644
--- a/vcl/unx/inc/salprn.h
+++ b/vcl/unx/inc/salprn.h
@@ -36,7 +36,7 @@
 
 class PspGraphics;
 
-class PspSalInfoPrinter : public SalInfoPrinter
+class VCL_DLLPUBLIC PspSalInfoPrinter : public SalInfoPrinter
 {
 public:
     PspGraphics*                       m_pGraphics;
@@ -63,7 +63,7 @@ public:
     virtual int                                        GetLandscapeAngle( const ImplJobSetup* 
pSetupData );
 };
 
-class PspSalPrinter : public SalPrinter
+class VCL_DLLPUBLIC PspSalPrinter : public SalPrinter
 {
 public:
     String                                     m_aFileName;
diff --git a/vcl/util/linksvp/makefile.mk b/vcl/util/linksvp/makefile.mk
index 86bbf50..05304cc 100644
--- a/vcl/util/linksvp/makefile.mk
+++ b/vcl/util/linksvp/makefile.mk
@@ -47,9 +47,10 @@ LIB1FILES= $(SLB)$/svpplug.lib \
 SHL1TARGET=vclplug_svp$(DLLPOSTFIX)
 SHL1IMPLIB=isvpplug
 SHL1LIBS=$(LIB1TARGET)
-SHL1DEPN=$(LB)$/libvcl$(DLLPOSTFIX)$(DLLPOST)
+SHL1DEPN=$(LB)$/libvcl$(DLLPOSTFIX)$(DLLPOST) $(LB)$/libvclplug_gen$(DLLPOSTFIX)$(DLLPOST)
 SHL1STDLIBS=\
             $(VCLLIB)\
+            -lvclplug_genlx \
             $(I18NPAPERLIB)\
             $(BASEBMPLIB)\
             $(BASEGFXLIB)\

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.