Fix SCH_BITMAP handling in gal.
This commit is contained in:
parent
e55763947e
commit
1a0f3b79cc
|
@ -124,6 +124,7 @@ SCH_BITMAP* SCH_EDIT_FRAME::CreateNewImage( wxDC* aDC )
|
|||
return NULL;
|
||||
}
|
||||
|
||||
image->SetFlags( IS_NEW | IS_MOVED );
|
||||
|
||||
auto view = static_cast<SCH_DRAW_PANEL*>( m_canvas )->GetView();
|
||||
|
||||
|
|
|
@ -142,7 +142,8 @@ bool SCH_EDIT_FRAME::OnRightClick( const wxPoint& aPosition, wxMenu* PopMenu )
|
|||
bool actionCancelled = false;
|
||||
item = LocateAndShowItem( aPosition, SCH_COLLECTOR::AllItemsButPins, 0, &actionCancelled );
|
||||
|
||||
printf("Locateandshow %d %d item %p\n", aPosition.x, aPosition.y, item );
|
||||
printf("Locateandshow %d %d item %p type %d\n", aPosition.x, aPosition.y,
|
||||
item, item ? item->Type() : 0 ); fflush(0);
|
||||
|
||||
// If the clarify item selection context menu is aborted, don't show the context menu.
|
||||
if( item == NULL && actionCancelled )
|
||||
|
|
|
@ -128,8 +128,7 @@ void SCH_BITMAP::Draw( EDA_DRAW_PANEL* aPanel, wxDC* aDC, const wxPoint& aOffset
|
|||
GRSetDrawMode( aDC, aDrawMode );
|
||||
#endif
|
||||
|
||||
//fixme-gal
|
||||
//m_image->DrawBitmap( aPanel, aDC, pos );
|
||||
m_image->DrawBitmap( aDC, pos );
|
||||
}
|
||||
else // draws bounding box only (used to move items)
|
||||
{
|
||||
|
|
|
@ -84,6 +84,17 @@ public:
|
|||
return m_image->GetScalingFactor();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the m_Scale image "zoom" value
|
||||
* m_Scale is an user dependant value, and is similar to a "zoom" value
|
||||
* m_Scale = 1.0 = original size of bitmap.
|
||||
* m_Scale < 1.0 = the bitmap is drawn smaller than its original size.
|
||||
* m_Scale > 1.0 = the bitmap is drawn bigger than its original size.
|
||||
*/
|
||||
double GetImageScale() const
|
||||
{
|
||||
return m_image->GetScale();
|
||||
}
|
||||
|
||||
wxString GetClass() const override
|
||||
{
|
||||
|
|
|
@ -1317,7 +1317,14 @@ void SCH_PAINTER::draw( SCH_BITMAP *aBitmap, int aLayer )
|
|||
{
|
||||
m_gal->Save();
|
||||
m_gal->Translate( aBitmap->GetPosition() );
|
||||
|
||||
// When the image scale factor is not 1.0, we need to modify the actual
|
||||
// as the image scale factor is similar to a local zoom
|
||||
if( aBitmap->GetImageScale() != 1.0 )
|
||||
m_gal->Scale( VECTOR2D( aBitmap->GetImageScale(), aBitmap->GetImageScale() ) );
|
||||
|
||||
m_gal->DrawBitmap( *aBitmap->GetImage() );
|
||||
|
||||
m_gal->Restore();
|
||||
}
|
||||
|
||||
|
|
|
@ -430,17 +430,18 @@ void SCH_EDIT_FRAME::OnMoveItem( wxCommandEvent& aEvent )
|
|||
case SCH_SHEET_PIN_T:
|
||||
case SCH_FIELD_T:
|
||||
case SCH_SHEET_T:
|
||||
case SCH_BITMAP_T:
|
||||
PrepareMoveItem( item, nullptr );
|
||||
break;
|
||||
|
||||
case SCH_BITMAP_T:
|
||||
/* case SCH_BITMAP_T:
|
||||
// move an image is a special case:
|
||||
// we cannot undraw/redraw a bitmap just using our xor mode
|
||||
// the MoveImage function handle this undraw/redraw difficulty
|
||||
// By redrawing the full bounding box
|
||||
// MoveImage( (SCH_BITMAP*) item, &dc );
|
||||
MoveImage( (SCH_BITMAP*) item, &dc );
|
||||
break;
|
||||
|
||||
*/
|
||||
case SCH_MARKER_T:
|
||||
// Moving a marker has no sense
|
||||
break;
|
||||
|
@ -923,6 +924,9 @@ void SCH_EDIT_FRAME::OnRotate( wxCommandEvent& aEvent )
|
|||
|
||||
case SCH_BITMAP_T:
|
||||
RotateImage( (SCH_BITMAP*) item );
|
||||
// The bitmap is cached in Opengl: clear the cache, because
|
||||
// the cache data is invalid
|
||||
GetCanvas()->GetGAL()->ClearCache();
|
||||
break;
|
||||
|
||||
case SCH_SHEET_T:
|
||||
|
@ -1093,6 +1097,9 @@ void SCH_EDIT_FRAME::OnEditItem( wxCommandEvent& aEvent )
|
|||
|
||||
case SCH_BITMAP_T:
|
||||
EditImage( (SCH_BITMAP*) item );
|
||||
// The bitmap is cached in Opengl: clear the cache, because
|
||||
// the cache data is perhaps invalid
|
||||
GetCanvas()->GetGAL()->ClearCache();
|
||||
break;
|
||||
|
||||
case SCH_LINE_T: // These items have no param to edit
|
||||
|
@ -1284,6 +1291,10 @@ void SCH_EDIT_FRAME::OnOrient( wxCommandEvent& aEvent )
|
|||
else if( aEvent.GetId() == ID_SCH_MIRROR_Y )
|
||||
MirrorImage( (SCH_BITMAP*) item, false );
|
||||
|
||||
// The bitmap is cached in Opengl: clear the cache, because
|
||||
// the cache data is invalid
|
||||
GetCanvas()->GetGAL()->ClearCache();
|
||||
|
||||
break;
|
||||
|
||||
case SCH_SHEET_T:
|
||||
|
|
|
@ -381,6 +381,10 @@ void SCH_EDIT_FRAME::PutDataInPreviousState( PICKED_ITEMS_LIST* aList, bool aRed
|
|||
}
|
||||
}
|
||||
|
||||
// Bitmaps are cached in Opengl: clear the cache, because
|
||||
// the cache data can be invalid
|
||||
GetCanvas()->GetGAL()->ClearCache();
|
||||
|
||||
GetCanvas()->GetView()->UpdateAllItems( KIGFX::ALL );
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue