Printing multiple bitmaps
A long-standing issue with multiple workarounds (https://gitlab.com/kicad/code/kicad/-/issues/1877) prevented eeschema printouts with multiple images or images in both the worksheet and the schematic. We worked around this by ordering the bitmap printing to be the first step in the printing process. This partially worked but didn't get everything correct. The primary difficulty in debugging this was that the wxPrintPreview that we generate looked correct. Only the actual printout was incorrect. The fix is to explicitly clip bitmap drawing to the bitmap area, regardless of how large the bitmap is.
This commit is contained in:
parent
bfca928900
commit
69469b254a
|
@ -269,8 +269,13 @@ void BITMAP_BASE::DrawBitmap( wxDC* aDC, const wxPoint& aPos )
|
|||
|
||||
pos.x = KiROUND( pos.x / GetScalingFactor() );
|
||||
pos.y = KiROUND( pos.y / GetScalingFactor() );
|
||||
size.x = KiROUND( size.x / GetScalingFactor() );
|
||||
size.y = KiROUND( size.y / GetScalingFactor() );
|
||||
}
|
||||
|
||||
aDC->DestroyClippingRegion();
|
||||
aDC->SetClippingRegion( pos, size );
|
||||
|
||||
if( GetGRForceBlackPenState() )
|
||||
{
|
||||
wxBitmap result( m_bitmap->ConvertToImage().ConvertToGreyscale() );
|
||||
|
@ -288,6 +293,8 @@ void BITMAP_BASE::DrawBitmap( wxDC* aDC, const wxPoint& aPos )
|
|||
aDC->SetUserScale( scale, scale );
|
||||
aDC->SetLogicalOrigin( logicalOriginX, logicalOriginY );
|
||||
}
|
||||
|
||||
aDC->DestroyClippingRegion();
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue