Fixed scale in Gerbview printouts
This commit is contained in:
parent
8cb464b725
commit
92c5cb288e
|
@ -164,6 +164,7 @@ void BOARD_PRINTOUT::DrawPage( const wxString& aLayerName, int aPageNum, int aPa
|
||||||
// TODO fix 'Preview' button
|
// TODO fix 'Preview' button
|
||||||
VECTOR2D nps( GetLogicalPageRect().width, GetLogicalPageRect().height );
|
VECTOR2D nps( GetLogicalPageRect().width, GetLogicalPageRect().height );
|
||||||
|
|
||||||
|
setupGal( gal );
|
||||||
galPrint->SetNativePaperSize( VECTOR2D( nps.x / dc->GetPPI().x, nps.y / dc->GetPPI().y ),
|
galPrint->SetNativePaperSize( VECTOR2D( nps.x / dc->GetPPI().x, nps.y / dc->GetPPI().y ),
|
||||||
printCtx->HasNativeLandscapeRotation() );
|
printCtx->HasNativeLandscapeRotation() );
|
||||||
gal->SetLookAtPoint( bBox.Centre() );
|
gal->SetLookAtPoint( bBox.Centre() );
|
||||||
|
|
|
@ -135,11 +135,8 @@ void CAIRO_PRINT_GAL::SetLineWidth( float aLineWidth )
|
||||||
|
|
||||||
void CAIRO_PRINT_GAL::ComputeWorldScreenMatrix()
|
void CAIRO_PRINT_GAL::ComputeWorldScreenMatrix()
|
||||||
{
|
{
|
||||||
// worldUnitLength = inch per integer
|
|
||||||
worldUnitLength = 1e-9 /* 1 nm */ / 0.0254 /* 1 inch in meters */;
|
|
||||||
worldScale = screenDPI * worldUnitLength * zoomFactor;
|
worldScale = screenDPI * worldUnitLength * zoomFactor;
|
||||||
|
const auto paperSizeIU = VECTOR2D( m_nativePaperSize.y, m_nativePaperSize.x ) /* inches */ / worldUnitLength; /* 1 inch in IU */
|
||||||
const auto paperSizeIU = VECTOR2D( m_nativePaperSize.y, m_nativePaperSize.x ) /* inches */ * 0.0254 * 1e9 /* 1 inch in nm */;
|
|
||||||
const auto paperSizeIUTransposed = VECTOR2D( paperSizeIU.y, paperSizeIU.x );
|
const auto paperSizeIUTransposed = VECTOR2D( paperSizeIU.y, paperSizeIU.x );
|
||||||
|
|
||||||
MATRIX3x3D scale, translation, flip, rotate, lookat;
|
MATRIX3x3D scale, translation, flip, rotate, lookat;
|
||||||
|
@ -152,18 +149,18 @@ void CAIRO_PRINT_GAL::ComputeWorldScreenMatrix()
|
||||||
|
|
||||||
if( m_hasNativeLandscapeRotation )
|
if( m_hasNativeLandscapeRotation )
|
||||||
{
|
{
|
||||||
translation.SetTranslation( 0.5 / GetZoomFactor() * paperSizeIUTransposed );
|
translation.SetTranslation( 0.5 / zoomFactor * paperSizeIUTransposed );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( isLandscape() )
|
if( isLandscape() )
|
||||||
{
|
{
|
||||||
translation.SetTranslation( 0.5 / GetZoomFactor() * paperSizeIU );
|
translation.SetTranslation( 0.5 / zoomFactor * paperSizeIU );
|
||||||
rotate.SetRotation( 90.0 * M_PI / 180.0 );
|
rotate.SetRotation( 90.0 * M_PI / 180.0 );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
translation.SetTranslation( 0.5 / GetZoomFactor() * paperSizeIUTransposed );
|
translation.SetTranslation( 0.5 / zoomFactor * paperSizeIUTransposed );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -226,6 +226,7 @@ void DIALOG_PRINT_USING_PRINTER::InitValues( )
|
||||||
m_ModeColorOption->SetSelection( 0 );
|
m_ModeColorOption->SetSelection( 0 );
|
||||||
|
|
||||||
s_Parameters.m_PenDefaultSize = 0;
|
s_Parameters.m_PenDefaultSize = 0;
|
||||||
|
s_Parameters.m_Print_Sheet_Ref = false;
|
||||||
|
|
||||||
// Create scale adjust option
|
// Create scale adjust option
|
||||||
msg.Printf( wxT( "%f" ), s_Parameters.m_XScaleAdjust );
|
msg.Printf( wxT( "%f" ), s_Parameters.m_XScaleAdjust );
|
||||||
|
|
|
@ -98,6 +98,12 @@ void GERBVIEW_PRINTOUT::setupViewLayers( const std::unique_ptr<KIGFX::VIEW>& aVi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void GERBVIEW_PRINTOUT::setupGal( KIGFX::GAL* aGal )
|
||||||
|
{
|
||||||
|
aGal->SetWorldUnitLength( 10e-9 /* 10 nm */ / 0.0254 /* 1 inch in meters */ );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EDA_RECT GERBVIEW_PRINTOUT::getBoundingBox()
|
EDA_RECT GERBVIEW_PRINTOUT::getBoundingBox()
|
||||||
{
|
{
|
||||||
return m_layout->ComputeBoundingBox();
|
return m_layout->ComputeBoundingBox();
|
||||||
|
|
|
@ -35,6 +35,8 @@ public:
|
||||||
protected:
|
protected:
|
||||||
void setupViewLayers( const std::unique_ptr<KIGFX::VIEW>& aView, const LSET& aLayerSet ) override;
|
void setupViewLayers( const std::unique_ptr<KIGFX::VIEW>& aView, const LSET& aLayerSet ) override;
|
||||||
|
|
||||||
|
void setupGal( KIGFX::GAL* aGal ) override;
|
||||||
|
|
||||||
EDA_RECT getBoundingBox() override;
|
EDA_RECT getBoundingBox() override;
|
||||||
|
|
||||||
std::unique_ptr<KIGFX::PAINTER> getPainter( KIGFX::GAL* aGal ) override;
|
std::unique_ptr<KIGFX::PAINTER> getPainter( KIGFX::GAL* aGal ) override;
|
||||||
|
|
|
@ -131,6 +131,9 @@ protected:
|
||||||
///> Configures PAINTER object for a printout
|
///> Configures PAINTER object for a printout
|
||||||
virtual void setupPainter( const std::unique_ptr<KIGFX::PAINTER>& aPainter );
|
virtual void setupPainter( const std::unique_ptr<KIGFX::PAINTER>& aPainter );
|
||||||
|
|
||||||
|
///> Configures GAL object for a printout
|
||||||
|
virtual void setupGal( KIGFX::GAL* aGal ) {}
|
||||||
|
|
||||||
///> Returns bounding box of the printed objects (excluding worksheet frame)
|
///> Returns bounding box of the printed objects (excluding worksheet frame)
|
||||||
virtual EDA_RECT getBoundingBox() = 0;
|
virtual EDA_RECT getBoundingBox() = 0;
|
||||||
|
|
||||||
|
|
|
@ -159,6 +159,12 @@ void PCBNEW_PRINTOUT::setupPainter( const std::unique_ptr<KIGFX::PAINTER>& aPain
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void PCBNEW_PRINTOUT::setupGal( KIGFX::GAL* aGal )
|
||||||
|
{
|
||||||
|
aGal->SetWorldUnitLength( 1e-9 /* 1 nm */ / 0.0254 /* 1 inch in meters */ );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
EDA_RECT PCBNEW_PRINTOUT::getBoundingBox()
|
EDA_RECT PCBNEW_PRINTOUT::getBoundingBox()
|
||||||
{
|
{
|
||||||
return m_board->ComputeBoundingBox();
|
return m_board->ComputeBoundingBox();
|
||||||
|
|
|
@ -38,6 +38,8 @@ protected:
|
||||||
|
|
||||||
void setupPainter( const std::unique_ptr<KIGFX::PAINTER>& aPainter ) override;
|
void setupPainter( const std::unique_ptr<KIGFX::PAINTER>& aPainter ) override;
|
||||||
|
|
||||||
|
void setupGal( KIGFX::GAL* aGal ) override;
|
||||||
|
|
||||||
EDA_RECT getBoundingBox() override;
|
EDA_RECT getBoundingBox() override;
|
||||||
|
|
||||||
std::unique_ptr<KIGFX::PAINTER> getPainter( KIGFX::GAL* aGal ) override;
|
std::unique_ptr<KIGFX::PAINTER> getPainter( KIGFX::GAL* aGal ) override;
|
||||||
|
|
Loading…
Reference in New Issue