more fixes to double to int conversions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -786,13 +786,13 @@ void wxGCDC::DoGetTextExtent( const wxString &str, wxCoord *width, wxCoord *heig
|
|||||||
m_graphicContext->GetTextExtent( str, &w, &h, &d, &e );
|
m_graphicContext->GetTextExtent( str, &w, &h, &d, &e );
|
||||||
|
|
||||||
if ( height )
|
if ( height )
|
||||||
*height = h;
|
*height = (wxCoord)h;
|
||||||
if ( descent )
|
if ( descent )
|
||||||
*descent = d;
|
*descent = (wxCoord)d;
|
||||||
if ( externalLeading )
|
if ( externalLeading )
|
||||||
*externalLeading =e;
|
*externalLeading = (wxCoord)e;
|
||||||
if ( width )
|
if ( width )
|
||||||
*width = w;
|
*width = (wxCoord)w;
|
||||||
|
|
||||||
if ( theFont )
|
if ( theFont )
|
||||||
{
|
{
|
||||||
|
@@ -135,7 +135,7 @@ wxWindowDC::wxWindowDC(wxWindow *window)
|
|||||||
{
|
{
|
||||||
CGContextSaveGState( cg );
|
CGContextSaveGState( cg );
|
||||||
m_release = true ;
|
m_release = true ;
|
||||||
// make sure the context is having its origin at the wx-window coordinates of the
|
// make sure the context is having its origin at the wx-window coordinates of the
|
||||||
// view (read at the top of window.cpp about the differences)
|
// view (read at the top of window.cpp about the differences)
|
||||||
if ( window->MacGetLeftBorderSize() != 0 || window->MacGetTopBorderSize() != 0 )
|
if ( window->MacGetLeftBorderSize() != 0 || window->MacGetTopBorderSize() != 0 )
|
||||||
CGContextTranslateCTM( cg , -window->MacGetLeftBorderSize() , -window->MacGetTopBorderSize() );
|
CGContextTranslateCTM( cg , -window->MacGetLeftBorderSize() , -window->MacGetTopBorderSize() );
|
||||||
@@ -189,36 +189,36 @@ void wxWindowDC::DoGetSize( int* width, int* height ) const
|
|||||||
|
|
||||||
wxBitmap wxWindowDC::DoGetAsBitmap(const wxRect *subrect) const
|
wxBitmap wxWindowDC::DoGetAsBitmap(const wxRect *subrect) const
|
||||||
{
|
{
|
||||||
ControlRef handle = (ControlRef) m_window->GetHandle();
|
ControlRef handle = (ControlRef) m_window->GetHandle();
|
||||||
if ( !handle )
|
if ( !handle )
|
||||||
return wxNullBitmap;
|
return wxNullBitmap;
|
||||||
|
|
||||||
HIRect rect;
|
HIRect rect;
|
||||||
CGImageRef image;
|
CGImageRef image;
|
||||||
CGContextRef context;
|
CGContextRef context;
|
||||||
void* data;
|
void* data;
|
||||||
|
|
||||||
size_t bytesPerRow;
|
size_t bytesPerRow;
|
||||||
|
|
||||||
HIViewCreateOffscreenImage( handle, 0, &rect, &image);
|
HIViewCreateOffscreenImage( handle, 0, &rect, &image);
|
||||||
|
|
||||||
|
|
||||||
int width = subrect != NULL ? subrect->width : rect.size.width;
|
int width = subrect != NULL ? subrect->width : (int)rect.size.width;
|
||||||
int height = subrect != NULL ? subrect->height : rect.size.height ;
|
int height = subrect != NULL ? subrect->height : (int)rect.size.height ;
|
||||||
|
|
||||||
bytesPerRow = ( ( width * 8 * 4 + 7 ) / 8 );
|
bytesPerRow = ( ( width * 8 * 4 + 7 ) / 8 );
|
||||||
|
|
||||||
data = calloc( 1, bytesPerRow * height );
|
data = calloc( 1, bytesPerRow * height );
|
||||||
context = CGBitmapContextCreate( data, width, height, 8, bytesPerRow, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedFirst );
|
context = CGBitmapContextCreate( data, width, height, 8, bytesPerRow, CGColorSpaceCreateDeviceRGB(), kCGImageAlphaPremultipliedFirst );
|
||||||
|
|
||||||
if ( subrect )
|
if ( subrect )
|
||||||
rect = CGRectOffset( rect, -subrect->x, -subrect->y ) ;
|
rect = CGRectOffset( rect, -subrect->x, -subrect->y ) ;
|
||||||
CGContextDrawImage( context, rect, image );
|
CGContextDrawImage( context, rect, image );
|
||||||
|
|
||||||
unsigned char* buffer = (unsigned char*) data;
|
unsigned char* buffer = (unsigned char*) data;
|
||||||
wxBitmap bmp = wxBitmap(width, height, 32);
|
wxBitmap bmp = wxBitmap(width, height, 32);
|
||||||
wxAlphaPixelData pixData(bmp, wxPoint(0,0), wxSize(width, height));
|
wxAlphaPixelData pixData(bmp, wxPoint(0,0), wxSize(width, height));
|
||||||
|
|
||||||
pixData.UseAlpha();
|
pixData.UseAlpha();
|
||||||
wxAlphaPixelData::Iterator p(pixData);
|
wxAlphaPixelData::Iterator p(pixData);
|
||||||
for (int y=0; y<height; y++) {
|
for (int y=0; y<height; y++) {
|
||||||
@@ -229,12 +229,12 @@ wxBitmap wxWindowDC::DoGetAsBitmap(const wxRect *subrect) const
|
|||||||
p.Green() = a; buffer++;
|
p.Green() = a; buffer++;
|
||||||
p.Blue() = a; buffer++;
|
p.Blue() = a; buffer++;
|
||||||
p.Alpha() = a; buffer++;
|
p.Alpha() = a; buffer++;
|
||||||
++p;
|
++p;
|
||||||
}
|
}
|
||||||
p = rowStart;
|
p = rowStart;
|
||||||
p.OffsetY(pixData, 1);
|
p.OffsetY(pixData, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
return bmp;
|
return bmp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -535,8 +535,8 @@ wxSize wxFont::GetPixelSize() const
|
|||||||
wxGraphicsContext* dc = wxGraphicsContext::CreateFromNative((CGContextRef) NULL);
|
wxGraphicsContext* dc = wxGraphicsContext::CreateFromNative((CGContextRef) NULL);
|
||||||
dc->SetFont(*(wxFont *)this,*wxBLACK);
|
dc->SetFont(*(wxFont *)this,*wxBLACK);
|
||||||
wxDouble width, height = 0;
|
wxDouble width, height = 0;
|
||||||
dc->GetTextExtent( wxT("g"), &width, &height, NULL, NULL);
|
dc->GetTextExtent( wxT("g"), &width, &height, NULL, NULL);
|
||||||
return wxSize(width, height);
|
return wxSize((int)width, (int)height);
|
||||||
#else
|
#else
|
||||||
wxFontBase::GetPixelSize();
|
wxFontBase::GetPixelSize();
|
||||||
#endif
|
#endif
|
||||||
|
Reference in New Issue
Block a user