本文整理汇总了C++中wxPrintData类的典型用法代码示例。如果您正苦于以下问题:C++ wxPrintData类的具体用法?C++ wxPrintData怎么用?C++ wxPrintData使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了wxPrintData类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: TransferPrinterNameFrom
void wxOSXPrintData::TransferPrinterNameFrom( const wxPrintData &data )
{
CFArrayRef printerList;
CFIndex index, count;
CFStringRef name;
if (PMServerCreatePrinterList(kPMServerLocal, &printerList) == noErr)
{
PMPrinter printer = NULL;
count = CFArrayGetCount(printerList);
for (index = 0; index < count; index++)
{
printer = (PMPrinter)CFArrayGetValueAtIndex(printerList, index);
if ((data.GetPrinterName().empty()) && (PMPrinterIsDefault(printer)))
break;
else
{
name = PMPrinterGetName(printer);
CFRetain(name);
if (data.GetPrinterName() == wxCFStringRef(name).AsString())
break;
}
}
if (index < count)
PMSessionSetCurrentPMPrinter(m_macPrintSession, printer);
CFRelease(printerList);
}
}
开发者ID:CodeSmithyIDE,项目名称:wxWidgets,代码行数:28,代码来源:printmac.cpp
示例2: TransferFrom
bool wxMacCarbonPrintData::TransferFrom( const wxPrintData &data )
{
ValidateOrCreate() ;
PMSetCopies( (PMPrintSettings) m_macPrintSettings , data.GetNoCopies() , false ) ;
PMSetOrientation( (PMPageFormat) m_macPageFormat , ( data.GetOrientation() == wxLANDSCAPE ) ?
kPMLandscape : kPMPortrait , false ) ;
// collate cannot be set
#if 0 // not yet tested
if ( m_printerName.Length() > 0 )
PMSessionSetCurrentPrinter( (PMPrintSession) m_macPrintSession , wxMacCFStringHolder( m_printerName , wxFont::GetDefaultEncoding() ) ) ;
#endif
PMColorMode color ;
PMGetColorMode( (PMPrintSettings) m_macPrintSettings, &color ) ;
if ( data.GetColour() )
{
if ( color == kPMBlackAndWhite )
PMSetColorMode( (PMPrintSettings) m_macPrintSettings, kPMColor ) ;
}
else
PMSetColorMode( (PMPrintSettings) m_macPrintSettings, kPMBlackAndWhite ) ;
// PMDuplexMode not yet accessible via API
// PMQualityMode not yet accessible via API
// todo paperSize
PMResolution res;
PMPrinter printer;
PMTag tag = kPMMaxSquareResolution;
PMSessionGetCurrentPrinter(m_macPrintSession, &printer);
PMPrinterGetPrinterResolution(printer, tag, &res);
PMSetResolution((PMPageFormat) m_macPageFormat, &res);
return true ;
}
开发者ID:Duion,项目名称:Torsion,代码行数:33,代码来源:printmac.cpp
示例3: wxGetPrinterDC
// Gets an HDC for the specified printer configuration
WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst)
{
#if defined(__WXUNIVERSAL__) && (!defined(__WXMSW__) || wxUSE_POSTSCRIPT_ARCHITECTURE_IN_MSW)
#if 0
wxPostScriptPrintNativeData *data =
(wxPostScriptPrintNativeData *) printDataConst.GetNativeData();
// FIXME: how further ???
#else
return 0;
#endif
#else // Postscript vs. native Windows
wxWindowsPrintNativeData *data =
(wxWindowsPrintNativeData *) printDataConst.GetNativeData();
data->TransferFrom( printDataConst );
wxChar* driverName = (wxChar*) NULL;
wxString devNameStr = printDataConst.GetPrinterName();
wxChar* portName = (wxChar*) NULL; // Obsolete in WIN32
const wxChar* deviceName;
if ( !devNameStr )
deviceName = (wxChar*) NULL;
else
deviceName = devNameStr.c_str();
LPDEVMODE lpDevMode = (LPDEVMODE) NULL;
HGLOBAL hDevMode = (HGLOBAL)(DWORD) data->GetDevMode();
if ( hDevMode )
lpDevMode = (DEVMODE*) GlobalLock(hDevMode);
if ( !devNameStr )
{
// Retrieve the default device name
wxString portName;
if ( !wxGetDefaultDeviceName(devNameStr, portName) )
{
return 0; // Could not get default device name
}
deviceName = devNameStr.c_str();
}
#ifdef __WIN32__
HDC hDC = CreateDC(driverName, deviceName, portName, (DEVMODE *) lpDevMode);
#else
HDC hDC = CreateDC(driverName, deviceName, portName, (LPSTR) lpDevMode);
#endif
if (hDevMode && lpDevMode)
GlobalUnlock(hDevMode);
return (WXHDC) hDC;
#endif
}
开发者ID:gitrider,项目名称:wxsj2,代码行数:61,代码来源:dcprint.cpp
示例4: TransferResolutionTo
void wxOSXPrintData::TransferResolutionTo( wxPrintData &data )
{
PMPrinter printer ;
PMSessionGetCurrentPrinter( m_macPrintSession, &printer );
/* assume high quality, will change below if we are able to */
data.SetQuality(wxPRINT_QUALITY_HIGH);
PMResolution *resolutions;
UInt32 resCount;
resolutions = GetSupportedResolutions(printer, &resCount);
if (resolutions)
{
bool valid = false;
PMResolution res;
if ( PMPrinterGetOutputResolution(printer, m_macPrintSettings, &res) == noErr )
valid = true;
if ( valid )
{
UInt32 i;
for (i = 0; i < resCount; i++)
{
if ((resolutions[i].hRes == res.hRes) && (resolutions[i].vRes = res.vRes))
break;
}
if (i < resCount)
data.SetQuality((((i + 1) * 3) / resCount) + wxPRINT_QUALITY_DRAFT);
}
free(resolutions);
}
}
开发者ID:CodeSmithyIDE,项目名称:wxWidgets,代码行数:32,代码来源:printmac.cpp
示例5: TransferPrinterNameTo
void wxOSXPrintData::TransferPrinterNameTo( wxPrintData &data )
{
CFStringRef name;
PMPrinter printer ;
PMSessionGetCurrentPrinter( m_macPrintSession, &printer );
if (PMPrinterIsDefault(printer))
data.SetPrinterName(wxEmptyString);
else
{
name = PMPrinterGetName(printer);
CFRetain(name);
data.SetPrinterName(wxCFStringRef(name).AsString());
}
}
开发者ID:CodeSmithyIDE,项目名称:wxWidgets,代码行数:14,代码来源:printmac.cpp
示例6: TransferTo
bool wxMacCarbonPrintData::TransferTo( wxPrintData &data )
{
OSStatus err = noErr ;
UInt32 copies ;
err = PMGetCopies( m_macPrintSettings , &copies ) ;
if ( err == noErr )
data.SetNoCopies( copies ) ;
PMOrientation orientation ;
err = PMGetOrientation( m_macPageFormat , &orientation ) ;
if ( err == noErr )
{
if ( orientation == kPMPortrait || orientation == kPMReversePortrait )
data.SetOrientation( wxPORTRAIT );
else
data.SetOrientation( wxLANDSCAPE );
}
// collate cannot be set
#if 0
{
wxMacCFStringHolder name ;
PMPrinter printer ;
PMSessionGetCurrentPrinter( m_macPrintSession ,
&printer ) ;
m_printerName = name.AsString() ;
}
#endif
PMColorMode color ;
err = PMGetColorMode( m_macPrintSettings, &color ) ;
if ( err == noErr )
data.SetColour( !(color == kPMBlackAndWhite) ) ;
// PMDuplexMode not yet accessible via API
// PMQualityMode not yet accessible via API
// todo paperSize
PMRect rPaper;
err = PMGetUnadjustedPaperRect( m_macPageFormat, &rPaper);
if ( err == noErr )
{
data.SetPaperSize( wxSize (
(int)(( rPaper.right - rPaper.left ) * pt2mm + 0.5 ) ,
(int)(( rPaper.bottom - rPaper.top ) * pt2mm + 0.5 ) ) );
}
return true ;
}
开发者ID:Duion,项目名称:Torsion,代码行数:48,代码来源:printmac.cpp
示例7: TransferResolutionFrom
void wxOSXPrintData::TransferResolutionFrom( const wxPrintData &data )
{
PMPrinter printer;
PMSessionGetCurrentPrinter(m_macPrintSession, &printer);
UInt32 resCount;
PMResolution *resolutions = GetSupportedResolutions(printer, &resCount);
if (resolutions)
{
wxPrintQuality quality = data.GetQuality();
if (quality >= 0)
quality = wxPRINT_QUALITY_HIGH;
PMResolution res = resolutions[((quality - wxPRINT_QUALITY_DRAFT) * (resCount - 1)) / 3];
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
if ( PMPrinterSetOutputResolution != NULL )
PMPrinterSetOutputResolution(printer, m_macPrintSettings, &res);
else
#endif
{
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
PMSetResolution( m_macPageFormat, &res);
#endif
}
free(resolutions);
}
}
开发者ID:BloodRedd,项目名称:gamekit,代码行数:28,代码来源:printmac.cpp
示例8: wxGetPrinterDC
// Gets an HDC for the specified printer configuration
WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst)
{
#if wxUSE_PS_PRINTING
// TODO
wxUnusedVar(printDataConst);
return 0;
#else // native Windows printing
wxWindowsPrintNativeData *data =
(wxWindowsPrintNativeData *) printDataConst.GetNativeData();
data->TransferFrom( printDataConst );
wxString deviceName = printDataConst.GetPrinterName();
if ( deviceName.empty() )
{
// Retrieve the default device name
wxString portName;
if ( !wxGetDefaultDeviceName(deviceName, portName) )
{
return 0; // Could not get default device name
}
}
GlobalPtrLock lockDevMode;
const HGLOBAL devMode = data->GetDevMode();
if ( devMode )
lockDevMode.Init(devMode);
HDC hDC = ::CreateDC
(
NULL, // no driver name as we use device name
deviceName.t_str(),
NULL, // unused
static_cast<DEVMODE *>(lockDevMode.Get())
);
if ( !hDC )
{
wxLogLastError(wxT("CreateDC(printer)"));
}
return (WXHDC) hDC;
#endif // PostScript/Windows printing
}
开发者ID:AaronDP,项目名称:wxWidgets,代码行数:45,代码来源:dcprint.cpp
示例9: wxGetPrinterDC
// Gets an HDC for the specified printer configuration
WXHDC WXDLLEXPORT wxGetPrinterDC(const wxPrintData& printDataConst)
{
#if wxUSE_PS_PRINTING
// TODO
wxUnusedVar(printDataConst);
return 0;
#else // native Windows printing
wxWindowsPrintNativeData *data =
(wxWindowsPrintNativeData *) printDataConst.GetNativeData();
data->TransferFrom( printDataConst );
wxString deviceName = printDataConst.GetPrinterName();
if ( deviceName.empty() )
{
// Retrieve the default device name
wxString portName;
if ( !wxGetDefaultDeviceName(deviceName, portName) )
{
return 0; // Could not get default device name
}
}
HGLOBAL hDevMode = (HGLOBAL)(DWORD) data->GetDevMode();
DEVMODE *lpDevMode = hDevMode ? (DEVMODE *)::GlobalLock(hDevMode) : NULL;
HDC hDC = ::CreateDC(NULL, deviceName, NULL, lpDevMode);
if ( !hDC )
wxLogLastError(_T("CreateDC(printer)"));
if ( lpDevMode )
::GlobalUnlock(hDevMode);
return (WXHDC) hDC;
#endif // PostScript/Windows printing
}
开发者ID:EdgarTx,项目名称:wx,代码行数:39,代码来源:dcprint.cpp
示例10: TransferResolutionFrom
void wxOSXPrintData::TransferResolutionFrom( const wxPrintData &data )
{
PMPrinter printer;
PMSessionGetCurrentPrinter(m_macPrintSession, &printer);
UInt32 resCount;
PMResolution *resolutions = GetSupportedResolutions(printer, &resCount);
if (resolutions)
{
wxPrintQuality quality = data.GetQuality();
if (quality >= 0)
quality = wxPRINT_QUALITY_HIGH;
PMResolution res = resolutions[((quality - wxPRINT_QUALITY_DRAFT) * (resCount - 1)) / 3];
PMPrinterSetOutputResolution(printer, m_macPrintSettings, &res);
free(resolutions);
}
}
开发者ID:CodeSmithyIDE,项目名称:wxWidgets,代码行数:19,代码来源:printmac.cpp
示例11: TransferPaperInfoTo
void wxOSXPrintData::TransferPaperInfoTo( wxPrintData &data )
{
PMGetPageFormatPaper(m_macPageFormat, &m_macPaper);
PMPrinter printer ;
PMSessionGetCurrentPrinter( m_macPrintSession, &printer );
OSStatus err = noErr ;
UInt32 copies ;
err = PMGetCopies( m_macPrintSettings , &copies ) ;
if ( err == noErr )
data.SetNoCopies( copies ) ;
PMOrientation orientation ;
err = PMGetOrientation( m_macPageFormat , &orientation ) ;
if ( err == noErr )
{
if ( orientation == kPMPortrait || orientation == kPMReversePortrait )
{
data.SetOrientation( wxPORTRAIT );
data.SetOrientationReversed( orientation == kPMReversePortrait );
}
else
{
data.SetOrientation( wxLANDSCAPE );
data.SetOrientationReversed( orientation == kPMReverseLandscape );
}
}
Boolean collate;
if (PMGetCollate(m_macPrintSettings, &collate) == noErr)
data.SetCollate(collate);
PMDuplexMode mode = 0 ;
PMGetDuplex( m_macPrintSettings, &mode ) ;
switch( mode )
{
case kPMDuplexNoTumble :
data.SetDuplex(wxDUPLEX_HORIZONTAL);
break ;
case kPMDuplexTumble :
data.SetDuplex(wxDUPLEX_VERTICAL);
break ;
case kPMDuplexNone :
default :
data.SetDuplex(wxDUPLEX_SIMPLEX);
break ;
}
double height, width;
PMPaperGetHeight(m_macPaper, &height);
PMPaperGetWidth(m_macPaper, &width);
wxSize sz((int)(width * pt2mm + 0.5 ) ,
(int)(height * pt2mm + 0.5 ));
data.SetPaperSize(sz);
wxPaperSize id = wxThePrintPaperDatabase->GetSize(wxSize(sz.x* 10, sz.y * 10));
if (id != wxPAPER_NONE)
{
data.SetPaperId(id);
}
}
开发者ID:CodeSmithyIDE,项目名称:wxWidgets,代码行数:62,代码来源:printmac.cpp
示例12: TransferFrom
bool wxOSXPrintData::TransferFrom( const wxPrintData &data )
{
PMPrinter printer;
PMSessionGetCurrentPrinter(m_macPrintSession, &printer);
wxSize papersize = wxDefaultSize;
const wxPaperSize paperId = data.GetPaperId();
if ( paperId != wxPAPER_NONE && wxThePrintPaperDatabase )
{
papersize = wxThePrintPaperDatabase->GetSize(paperId);
if ( papersize != wxDefaultSize )
{
papersize.x /= 10;
papersize.y /= 10;
}
}
else
{
papersize = data.GetPaperSize();
}
if ( papersize != wxDefaultSize )
{
papersize.x = (wxInt32) (papersize.x * mm2pt);
papersize.y = (wxInt32) (papersize.y * mm2pt);
double height, width;
PMPaperGetHeight(m_macPaper, &height);
PMPaperGetWidth(m_macPaper, &width);
if ( fabs( width - papersize.x ) >= 5 ||
fabs( height - papersize.y ) >= 5 )
{
// we have to change the current paper
CFArrayRef paperlist = 0 ;
if ( PMPrinterGetPaperList( printer, &paperlist ) == noErr )
{
PMPaper bestPaper = kPMNoData ;
CFIndex top = CFArrayGetCount(paperlist);
for ( CFIndex i = 0 ; i < top ; ++ i )
{
PMPaper paper = (PMPaper) CFArrayGetValueAtIndex( paperlist, i );
PMPaperGetHeight(paper, &height);
PMPaperGetWidth(paper, &width);
if ( fabs( width - papersize.x ) < 5 &&
fabs( height - papersize.y ) < 5 )
{
// TODO test for duplicate hits and use additional
// criteria for best match
bestPaper = paper;
}
}
PMPaper paper = kPMNoData;
if ( bestPaper == kPMNoData )
{
const PMPaperMargins margins = { 0.0, 0.0, 0.0, 0.0 };
wxString id, name(_T("Custom paper"));
id.Printf(_T("wxPaperCustom%dx%d"), papersize.x, papersize.y);
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
if ( PMPaperCreateCustom != NULL)
{
PMPaperCreateCustom(printer, wxCFStringRef( id, wxFont::GetDefaultEncoding() ), wxCFStringRef( name, wxFont::GetDefaultEncoding() ),
papersize.x, papersize.y, &margins, &paper);
}
#endif
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
if ( paper == kPMNoData )
{
PMPaperCreate(printer, wxCFStringRef( id, wxFont::GetDefaultEncoding() ), wxCFStringRef( name, wxFont::GetDefaultEncoding() ),
papersize.x, papersize.y, &margins, &paper);
}
#endif
}
if ( bestPaper != kPMNoData )
{
PMPageFormat pageFormat;
PMCreatePageFormatWithPMPaper(&pageFormat, bestPaper);
PMCopyPageFormat( pageFormat, m_macPageFormat );
PMRelease(pageFormat);
PMGetPageFormatPaper(m_macPageFormat, &m_macPaper);
}
PMRelease(paper);
}
}
}
CFArrayRef printerList;
CFIndex index, count;
CFStringRef name;
if (PMServerCreatePrinterList(kPMServerLocal, &printerList) == noErr)
{
count = CFArrayGetCount(printerList);
for (index = 0; index < count; index++)
{
printer = (PMPrinter)CFArrayGetValueAtIndex(printerList, index);
if ((data.GetPrinterName().empty()) && (PMPrinterIsDefault(printer)))
break;
else
//.........这里部分代码省略.........
开发者ID:czxxjtu,项目名称:wxPython-1,代码行数:101,代码来源:printmac.cpp
示例13: TransferPaperInfoFrom
void wxOSXPrintData::TransferPaperInfoFrom( const wxPrintData &data )
{
PMPrinter printer;
PMSessionGetCurrentPrinter(m_macPrintSession, &printer);
wxSize papersize = wxDefaultSize;
const wxPaperSize paperId = data.GetPaperId();
if ( paperId != wxPAPER_NONE && wxThePrintPaperDatabase )
{
papersize = wxThePrintPaperDatabase->GetSize(paperId);
if ( papersize != wxDefaultSize )
{
papersize.x /= 10;
papersize.y /= 10;
}
}
else
{
papersize = data.GetPaperSize();
}
if ( papersize != wxDefaultSize )
{
papersize.x = (wxInt32) (papersize.x * mm2pt);
papersize.y = (wxInt32) (papersize.y * mm2pt);
double height, width;
PMPaperGetHeight(m_macPaper, &height);
PMPaperGetWidth(m_macPaper, &width);
if ( fabs( width - papersize.x ) >= 5 ||
fabs( height - papersize.y ) >= 5 )
{
// we have to change the current paper
CFArrayRef paperlist = 0 ;
if ( PMPrinterGetPaperList( printer, &paperlist ) == noErr )
{
PMPaper bestPaper = kPMNoData ;
CFIndex top = CFArrayGetCount(paperlist);
for ( CFIndex i = 0 ; i < top ; ++ i )
{
PMPaper paper = (PMPaper) CFArrayGetValueAtIndex( paperlist, i );
PMPaperGetHeight(paper, &height);
PMPaperGetWidth(paper, &width);
if ( fabs( width - papersize.x ) < 5 &&
fabs( height - papersize.y ) < 5 )
{
// TODO test for duplicate hits and use additional
// criteria for best match
bestPaper = paper;
}
}
PMPaper paper = kPMNoData;
if ( bestPaper == kPMNoData )
{
const PMPaperMargins margins = { 0.0, 0.0, 0.0, 0.0 };
wxString id, name(wxT("Custom paper"));
id.Printf(wxT("wxPaperCustom%dx%d"), papersize.x, papersize.y);
if ( PMPaperCreateCustom
(
printer,
wxCFStringRef(id, wxFont::GetDefaultEncoding()),
wxCFStringRef(name, wxFont::GetDefaultEncoding()),
papersize.x, papersize.y,
&margins,
&paper
) )
{
bestPaper = paper;
}
}
if ( bestPaper != kPMNoData )
{
PMPageFormat pageFormat;
PMCreatePageFormatWithPMPaper(&pageFormat, bestPaper);
PMCopyPageFormat( pageFormat, m_macPageFormat );
PMRelease(pageFormat);
PMGetPageFormatPaper(m_macPageFormat, &m_macPaper);
}
PMRelease(paper);
}
}
}
PMSetCopies( m_macPrintSettings , data.GetNoCopies() , false ) ;
PMSetCollate(m_macPrintSettings, data.GetCollate());
if ( data.IsOrientationReversed() )
PMSetOrientation( m_macPageFormat , ( data.GetOrientation() == wxLANDSCAPE ) ?
kPMReverseLandscape : kPMReversePortrait , false ) ;
else
PMSetOrientation( m_macPageFormat , ( data.GetOrientation() == wxLANDSCAPE ) ?
kPMLandscape : kPMPortrait , false ) ;
PMDuplexMode mode = 0 ;
switch( data.GetDuplex() )
{
case wxDUPLEX_HORIZONTAL :
mode = kPMDuplexNoTumble ;
break ;
//.........这里部分代码省略.........
开发者ID:CodeSmithyIDE,项目名称:wxWidgets,代码行数:101,代码来源:printmac.cpp
示例14: TransferFrom
bool wxMacCarbonPrintData::TransferFrom( const wxPrintData &data )
{
ValidateOrCreate() ;
PMSetCopies( (PMPrintSettings) m_macPrintSettings , data.GetNoCopies() , false ) ;
if ( data.IsOrientationReversed() )
PMSetOrientation( (PMPageFormat) m_macPageFormat , ( data.GetOrientation() == wxLANDSCAPE ) ?
kPMReverseLandscape : kPMReversePortrait , false ) ;
else
PMSetOrientation( (PMPageFormat) m_macPageFormat , ( data.GetOrientation() == wxLANDSCAPE ) ?
kPMLandscape : kPMPortrait , false ) ;
// collate cannot be set
#if 0 // not yet tested
if ( !m_printerName.empty() )
PMSessionSetCurrentPrinter( (PMPrintSession) m_macPrintSession , wxMacCFStringHolder( m_printerName , wxFont::GetDefaultEncoding() ) ) ;
#endif
#ifndef __LP64__
PMColorMode color ;
PMGetColorMode( (PMPrintSettings) m_macPrintSettings, &color ) ;
if ( data.GetColour() )
{
if ( color == kPMBlackAndWhite )
PMSetColorMode( (PMPrintSettings) m_macPrintSettings, kPMColor ) ;
}
else
PMSetColorMode( (PMPrintSettings) m_macPrintSettings, kPMBlackAndWhite ) ;
#endif
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
if ( &PMSetDuplex!=NULL )
{
PMDuplexMode mode = 0 ;
switch( data.GetDuplex() )
{
case wxDUPLEX_HORIZONTAL :
mode = kPMDuplexNoTumble ;
break ;
case wxDUPLEX_VERTICAL :
mode = kPMDuplexTumble ;
break ;
case wxDUPLEX_SIMPLEX :
default :
mode = kPMDuplexNone ;
break ;
}
PMSetDuplex( (PMPrintSettings) m_macPrintSettings, mode ) ;
}
#endif
// PMQualityMode not yet accessible via API
// todo paperSize
PMResolution res;
PMPrinter printer;
PMSessionGetCurrentPrinter(m_macPrintSession, &printer);
#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5
PMPrinterGetOutputResolution( printer,
(PMPrintSettings) m_macPrintSettings, &res) ;
// TODO transfer ? into page format ?
#else
PMTag tag = kPMMaxSquareResolution;
PMPrinterGetPrinterResolution(printer, tag, &res);
PMSetResolution((PMPageFormat) m_macPageFormat, &res);
#endif
// after setting the new resolution the format has to be updated, otherwise the page rect remains
// at the 'old' scaling
PMSessionValidatePageFormat((PMPrintSession) m_macPrintSession,
(PMPageFormat) m_macPageFormat,
kPMDontWantBoolean) ;
return true ;
}
开发者ID:EdgarTx,项目名称:wx,代码行数:70,代码来源:printmac.cpp
示例15: TransferTo
bool wxMacCarbonPrintData::TransferTo( wxPrintData &data )
{
OSStatus err = noErr ;
UInt32 copies ;
err = PMGetCopies( m_macPrintSettings , &copies ) ;
if ( err == noErr )
data.SetNoCopies( copies ) ;
PMOrientation orientation ;
err = PMGetOrientation( m_macPageFormat , &orientation ) ;
if ( err == noErr )
{
if ( orientation == kPMPortrait || orientation == kPMReversePortrait )
{
data.SetOrientation( wxPORTRAIT );
data.SetOrientationReversed( orientation == kPMReversePortrait );
}
else
{
data.SetOrientation( wxLANDSCAPE );
data.SetOrientationReversed( orientation == kPMReverseLandscape );
}
}
// collate cannot be set
#if 0
{
wxMacCFStringHolder name ;
PMPrinter printer ;
PMSessionGetCurrentPrinter( m_macPrintSession ,
&printer ) ;
m_printerName = name.AsString() ;
}
#endif
#ifndef __LP64__
PMColorMode color ;
err = PMGetColorMode( m_macPrintSettings, &color ) ;
if ( err == noErr )
data.SetColour( !(color == kPMBlackAndWhite) ) ;
#endif
#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
if ( &PMGetDuplex!=NULL )
{
PMDuplexMode mode = 0 ;
PMGetDuplex( (PMPrintSettings) m_macPrintSettings, &mode ) ;
switch( mode )
{
case kPMDuplexNoTumble :
data.SetDuplex(wxDUPLEX_HORIZONTAL);
break ;
case kPMDuplexTumble :
data.SetDuplex(wxDUPLEX_VERTICAL);
break ;
case kPMDuplexNone :
default :
data.SetDuplex(wxDUPLEX_SIMPLEX);
break ;
}
}
#endif
// PMQualityMode not yet accessible via API
PMPaper paper ;
PMGetPageFormatPaper( m_macPageFormat, &paper );
PMRect rPaper;
err = PMGetUnadjustedPaperRect( m_macPageFormat, &rPaper);
if ( err == noErr )
{
wxSize sz((int)(( rPaper.right - rPaper.left ) * pt2mm + 0.5 ) ,
(int)(( rPaper.bottom - rPaper.top ) * pt2mm + 0.5 ));
data.SetPaperSize(sz);
wxPaperSize id = wxThePrintPaperDatabase->GetSize(wxSize(sz.x* 10, sz.y * 10));
if (id != wxPAPER_NONE)
{
data.SetPaperId(id);
}
}
return true ;
}
开发者ID:EdgarTx,项目名称:wx,代码行数:82,代码来源:printmac.cpp
示例16: TransferTo
bool wxOSXPrintData::TransferTo( wxPrintData &data )
{
OSStatus err = noErr ;
#if wxOSX_USE_COCOA
UpdateToPMState();
#endif
UInt32 copies ;
err = PMGetCopies( m_macPrintSettings , &copies ) ;
if ( err == noErr )
data.SetNoCopies( copies ) ;
PMOrientation orientation ;
err = PMGetOrientation( m_macPageFormat , &orientation ) ;
if ( err == noErr )
{
if ( orientation == kPMPortrait || orientation == kPMReversePortrait )
{
data.SetOrientation( wxPORTRAIT );
data.SetOrientationReversed( orientation == kPMReversePortrait );
}
else
{
data.SetOrientation( wxLANDSCAPE );
data.SetOrientationReversed( orientation == kPMReverseLandscape );
}
}
Boolean collate;
if (PMGetCollate(m_macPrintSettings, &collate) == noErr)
data.SetCollate(collate);
CFStringRef name;
PMPrinter printer ;
PMSessionGetCurrentPrinter( m_macPrintSession, &printer );
if (PMPrinterIsDefault(printer))
data.SetPrinterName(wxEmptyString);
else
{
name = PMPrinterGetName(printer);
CFRetain(name);
data.SetPrinterName(wxCFStringRef(name).AsString());
}
PMDuplexMode mode = 0 ;
PMGetDuplex( m_macPrintSettings, &mode ) ;
switch( mode )
{
case kPMDuplexNoTumble :
data.SetDuplex(wxDUPLEX_HORIZONTAL);
break ;
case kPMDuplexTumble :
data.SetDuplex(wxDUPLEX_VERTICAL);
break ;
case kPMDuplexNone :
default :
data.SetDuplex(wxDUPLEX_SIMPLEX);
break ;
}
// PMQualityMode not yet accessible via API
double height, width;
PMPaperGetHeight(m_macPaper, &height);
PMPaperGetWidth(m_macPaper, &width);
wxSize sz((int)(width * pt2mm + 0.5 ) ,
(int)(height * pt2mm + 0.5 ));
data.SetPaperSize(sz);
wxPaperSize id = wxThePrintPaperDatabase->GetSize(wxSize(sz.x* 10, sz.y * 10));
if (id != wxPAPER_NONE)
{
data.SetPaperId(id);
}
return true ;
}
开发者ID:czxxjtu,项目名称:wxPython-1,代码行数:74,代码来源:printmac.cpp
示例17: wxSize
bool wxWindowsPrintNativeData::TransferTo( wxPrintData &data )
{
HGLOBAL hDevMode = (HGLOBAL)(DWORD) m_devMode;
HGLOBAL hDevNames = (HGLOBAL)(DWORD) m_devNames;
if (!hDevMode)
return false;
if ( hDevMode )
{
LPDEVMODE devMode = (LPDEVMODE)GlobalLock(hDevMode);
//// Orientation
if (devMode->dmFields & DM_ORIENTATION)
data.SetOrientation( devMode->dmOrientation );
//// Collation
if (devMode->dmFields & DM_COLLATE)
{
if (devMode->dmCollate == DMCOLLATE_TRUE)
data.SetCollate( true );
else
data.SetCollate( false );
}
//// Number of copies
if (devMode->dmFields & DM_COPIES)
data.SetNoCopies( devMode->dmCopies );
if (devMode->dmFields & DM_DEFAULTSOURCE)
data.SetBin( (wxPrintBin)devMode->dmDefaultSource );
//// Printer name
if (devMode->dmDeviceName[0] != 0)
data.SetPrinterName( devMode->dmDeviceName );
//// Colour
if (devMode->dmFields & DM_COLOR)
{
if (devMode->dmColor == DMCOLOR_COLOR)
data.SetColour( true );
else
data.SetColour( false );
}
else
data.SetColour( true );
//// Paper size
// We don't know size of user defined paper and some buggy drivers
// set both DM_PAPERSIZE and DM_PAPERWIDTH & DM_PAPERLENGTH. Since
// dmPaperSize >= DMPAPER_USER wouldn't be in wxWin's database, this
// code wouldn't set m_paperSize correctly.
bool foundPaperSize = false;
if ((devMode->dmFields & DM_PAPERSIZE) && (devMode->dmPaperSize < DMPAPER_USER))
{
if (wxThePrintPaperDatabase)
{
wxPrintPaperType* paper = wxThePrintPaperDatabase->FindPaperTypeByPlatformId(devMode->dmPaperSize);
if (paper)
{
data.SetPaperId( paper->GetId() );
data.SetPaperSize( wxSize(paper->GetWidth() / 10,paper->GetHeight() / 10) );
m_customWindowsPaperId = 0;
foundPaperSize = true;
}
}
else
{
// Shouldn't really get here
wxFAIL_MSG(wxT("Paper database wasn't initialized in wxPrintData::ConvertFromNative."));
data.SetPaperId( wxPAPER_NONE );
data.SetPaperSize( wxSize(0,0) );
m_customWindowsPaperId = 0;
GlobalUnlock(hDevMode);
return false;
}
}
if (!foundPaperSize && (devMode->dmFields & DM_PAPERWIDTH) && (devMode->dmFields & DM_PAPERLENGTH))
{
// DEVMODE is in tenths of a milimeter
data.SetPaperSize( wxSize(devMode->dmPaperWidth / 10, devMode->dmPaperLength / 10) );
data.SetPaperId( wxPAPER_NONE );
m_customWindowsPaperId = devMode->dmPaperSize;
}
else
{
// Often will reach this for non-standard paper sizes (sizes which
// wouldn't be in wxWidget's paper database). Setting
// m_customWindowsPaperId to devMode->dmPaperSize should be enough
// to get this paper size working.
data.SetPaperSize( wxSize(0,0) );
data.SetPaperId( wxPAPER_NONE );
m_customWindowsPaperId = devMode->dmPaperSize;
}
//// Duplex
//.........这里部分代码省略.........
开发者ID:gitrider,项目名称:wxsj2,代码行数:101,代码来源:printdlg.cpp
示例18: TransferFrom
bool wxWindowsPrintNativeData::TransferFrom( const wxPrintData &data )
{
HGLOBAL hDevMode = (HGLOBAL)(DWORD) m_devMode;
HGLOBAL hDevNames = (HGLOBAL)(DWORD) m_devNames;
if (!hDevMode)
{
// Use PRINTDLG as a way of creating a DEVMODE object
PRINTDLG pd;
// GNU-WIN32 has the wrong size PRINTDLG - can't work out why.
#ifdef __GNUWIN32__
memset(&pd, 0, 66);
pd.lStructSize = 66;
#else
memset(&pd, 0, sizeof(PRINTDLG));
#ifdef __WXWINCE__
pd.cbStruct = sizeof(PRINTDLG);
#else
pd.lStructSize = sizeof(PRINTDLG);
#endif
#endif
pd.hwndOwner = (HWND)NULL;
pd.hDevMode = NULL; // Will be created by PrintDlg
pd.hDevNames = NULL; // Ditto
//pd.hInstance = (HINSTANCE) wxGetInstance();
pd.Flags = PD_RETURNDEFAULT;
pd.nCopies = 1;
// Fill out the DEVMODE structure
// so we can use it as input in the 'real' PrintDlg
if (!PrintDlg(&pd))
{
if ( pd.hDevMode )
GlobalFree(pd.hDevMode);
if ( pd.hDevNames )
GlobalFree(pd.hDevNames);
pd.hDevMode = NULL;
pd.hDevNames = NULL;
#if defined(__WXDEBUG__) && defined(__WIN32__)
wxString str(wxT("Printing error: "));
str += wxGetPrintDlgError();
wxLogDebug(str);
#endif
}
else
{
hDevMode = pd.hDevMode;
m_devMode = (void*)(long) hDevMode;
pd.hDevMode = NULL;
// We'll create a new DEVNAMEs structure below.
if ( pd.hDevNames )
GlobalFree(pd.hDevNames);
pd.hDevNames = NULL;
// hDevNames = pd->hDevNames;
// m_devNames = (void*)(long) hDevNames;
// pd->hDevnames = NULL;
}
}
if ( hDevMode )
{
LPDEVMODE devMode = (LPDEVMODE) GlobalLock(hDevMode);
//// Orientation
devMode->dmOrientation = (short)data.GetOrientation();
//// Collation
devMode->dmCollate = (data.GetCollate() ? DMCOLLATE_TRUE : DMCOLLATE_FALSE);
devMode->dmFields |= DM_COLLATE;
//// Number of copies
devMode->dmCopies = (short)data.GetNoCopies();
devMode->dmFields |= DM_COPIES;
//// Printer name
wxString name = data.GetPrinterName();
if (!name.empty())
{
//int len = wxMin(31, m_printerName.Len());
wxStrncpy((wxChar*)devMode->dmDeviceName,name.c_str(),31);
devMode->dmDeviceName[31] = wxT('\0');
}
//// Colour
if (data.GetColour())
devMode->dmColor = DMCOLOR_COLOR;
else
devMode->dmColor = DMCOLOR_MONOCHROME;
devMode->dmFields |= DM_COLOR;
//// Paper size
if (data.GetPaperId() == wxPAPER_NONE)
{
// DEVMODE is in tenths of a milimeter
//.........这里部分代码省略.........
开发者ID:gitrider,项目名称:wxsj2,代码行数:101,代码来源:printdlg.cpp
示例19: TransferFrom
bool wxWindowsPrintNativeData::TransferFrom( const wxPrintData &data )
{
WinPrinter printer;
LPTSTR szPrinterName = wxMSW_CONV_LPTSTR(data.GetPrinterName());
if (!m_devMode)
InitializeDevMode(data.GetPrinterName(), &printer);
HGLOBAL hDevMode = static_cast<HGLOBAL>(m_devMode);
if ( hDevMode )
{
GlobalPtrLock lockDevMode(hDevMode);
DEVMODE * const devMode = static_cast<DEVMODE *>(lockDevMode.Get());
//// Orientation
devMode->dmOrientation = (short)data.GetOrientation();
//// Collation
devMode->dmCollate = (data.GetCollate() ? DMCOLLATE_TRUE : DMCOLLATE_FALSE);
devMode->dmFields |= DM_COLLATE;
//// Number of copies
devMode->dmCopies = (short)data.GetNoCopies();
devMode->dmFields |= DM_COPIES;
//// Printer name
wxString name = data.GetPrinterName();
if (!name.empty())
{
// NB: the cast is needed in the ANSI build, strangely enough
// dmDeviceName is BYTE[] and not char[] there
wxStrlcpy(reinterpret_cast<wxChar *>(devMode->dmDeviceName),
name.t_str(),
WXSIZEOF(devMode->dmDeviceName));
}
//// Colour
if (data.GetColour())
devMode->dmColor = DMCOLOR_COLOR;
else
devMode->dmColor = DMCOLOR_MONOCHROME;
devMode->dmFields |= DM_COLOR;
//// Paper size
// Paper id has priority over paper size. If id is specified, then size
// is ignored (as it can be filled in even for standard paper sizes)
wxPrintPaperType *paperType = NULL;
const wxPaperSize paperId = data.GetPaperId();
if ( paperId != wxPAPER_NONE && wxThePrintPaperDatabase )
{
paperType = wxThePrintPaperDatabase->FindPaperType(paperId);
}
if ( paperType )
{
devMode->dmPaperSize = (short)paperType->GetPlatformId();
devMode->dmFields |= DM_PAPERSIZE;
}
else // custom (or no) paper size
{
const wxSize paperSize = data.GetPaperSize();
if ( paperSize != wxDefaultSize )
{
// Fall back on specifying the paper size explicitly
if(m_customWindowsPaperId != 0)
devMode->dmPaperSize = m_customWindowsPaperId;
else
devMode->dmPaperSize = DMPAPER_USER;
devMode->dmPaperWidth = (short)(paperSize.x * 10);
devMode->dmPaperLength = (short)(paperSize.y * 10);
devMode->dmFields |= DM_PAPERWIDTH;
devMode->dmFields |= DM_PAPERLENGTH;
// A printer driver may or may not also want DM_PAPERSIZE to
// be specified. Also, if the printer driver doesn't implement the DMPAPER_USER
// size, then this won't work, and even if you found the correct id by
// enumerating the driver's paper sizes, it probably won't change the actual size,
// it'll just select that custom paper type with its own current setting.
// For a discussion on this, see http://www.codeguru.com/forum/showthread.php?threadid=458617
// Although m_customWindowsPaperId is intended to work around this, it's
// unclear how it can help
|
请发表评论