From eccc5bca3e76073523e63eb8f59c296fecdb938e Mon Sep 17 00:00:00 2001 From: Jeff Young <jeff@rokeby.ie> Date: Tue, 24 Dec 2024 21:00:16 +0000 Subject: [PATCH] Use render cache (when available) for 3D viewer. Fixes https://gitlab.com/kicad/code/kicad/-/issues/18672 --- 3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp b/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp index 08e2e19952..946206bd1d 100644 --- a/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp +++ b/3d-viewer/3d_canvas/create_3Dgraphic_brd_items.cpp @@ -100,6 +100,7 @@ void BOARD_ADAPTER::addText( const EDA_TEXT* aText, CONTAINER_2D_BASE* aContaine TEXT_ATTRIBUTES attrs = aText->GetAttributes(); float penWidth_3DU = TO_3DU( aText->GetEffectiveTextPenWidth() ); KIFONT::FONT* font = aText->GetFont(); + wxString shownText = aText->GetShownText( true ); if( !font ) font = KIFONT::FONT::GetFont( wxEmptyString, aText->IsBold(), aText->IsItalic() ); @@ -134,8 +135,15 @@ void BOARD_ADAPTER::addText( const EDA_TEXT* aText, CONTAINER_2D_BASE* aContaine attrs.m_Angle = aText->GetDrawRotation(); - font->Draw( &callback_gal, aText->GetShownText( true ), aText->GetDrawPos(), attrs, - aOwner->GetFontMetrics() ); + if( auto* cache = aText->GetRenderCache( font, shownText ) ) + { + callback_gal.DrawGlyphs( *cache ); + } + else + { + font->Draw( &callback_gal, shownText, aText->GetDrawPos(), attrs, + aOwner->GetFontMetrics() ); + } } }