Better way of marking 'brightened' mode for items.
This commit is contained in:
parent
86f520f76e
commit
573f9841df
|
@ -79,25 +79,3 @@ void PAINTER::SetGAL( GAL* aGal )
|
|||
{
|
||||
m_gal = aGal;
|
||||
}
|
||||
|
||||
|
||||
void PAINTER::DrawBrightened( const VIEW_ITEM* aItem )
|
||||
{
|
||||
BOX2I box = aItem->ViewBBox();
|
||||
|
||||
RenderTarget oldTarget = m_gal->GetTarget();
|
||||
m_gal->SetTarget( TARGET_OVERLAY );
|
||||
|
||||
m_gal->PushDepth();
|
||||
m_gal->SetLayerDepth( -1.0 );
|
||||
|
||||
// Draw an outline that marks items as brightened
|
||||
m_gal->SetIsStroke( true );
|
||||
m_gal->SetLineWidth( 100000.0 );
|
||||
m_gal->SetStrokeColor( m_brightenedColor );
|
||||
|
||||
m_gal->DrawRectangle( box.GetOrigin(), box.GetOrigin() + box.GetSize() );
|
||||
m_gal->PopDepth();
|
||||
|
||||
m_gal->SetTarget( oldTarget );
|
||||
}
|
||||
|
|
|
@ -596,12 +596,6 @@ void VIEW::draw( VIEW_ITEM* aItem, int aLayer, bool aImmediate ) const
|
|||
if( !m_painter->Draw( aItem, aLayer ) )
|
||||
aItem->ViewDraw( aLayer, m_gal ); // Alternative drawing method
|
||||
}
|
||||
|
||||
// Draws a bright contour around the item
|
||||
if( static_cast<const EDA_ITEM*>( aItem )->IsBrightened() )
|
||||
{
|
||||
m_painter->DrawBrightened( aItem );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -474,11 +474,11 @@ public:
|
|||
|
||||
inline void SetSelected() { SetFlags( SELECTED ); ViewUpdate( COLOR ); }
|
||||
inline void SetHighlighted() { SetFlags( HIGHLIGHTED ); ViewUpdate( COLOR ); }
|
||||
inline void SetBrightened() { SetFlags( BRIGHTENED ); ViewUpdate( COLOR ); }
|
||||
inline void SetBrightened() { SetFlags( BRIGHTENED ); }
|
||||
|
||||
inline void ClearSelected() { ClearFlags( SELECTED ); ViewUpdate( COLOR ); }
|
||||
inline void ClearHighlighted() { ClearFlags( HIGHLIGHTED ); ViewUpdate( COLOR ); }
|
||||
inline void ClearBrightened() { ClearFlags( BRIGHTENED ); ViewUpdate( COLOR ); }
|
||||
inline void ClearBrightened() { ClearFlags( BRIGHTENED ); }
|
||||
|
||||
void SetModified();
|
||||
|
||||
|
|
|
@ -224,13 +224,6 @@ public:
|
|||
*/
|
||||
virtual bool Draw( const VIEW_ITEM* aItem, int aLayer ) = 0;
|
||||
|
||||
/**
|
||||
* Function DrawBrightened
|
||||
* Draws a special marking for the item.
|
||||
* @param aItem is the item that is going to be marked.
|
||||
*/
|
||||
virtual void DrawBrightened( const VIEW_ITEM* aItem );
|
||||
|
||||
protected:
|
||||
/// Instance of graphic abstraction layer that gives an interface to call
|
||||
/// commands used to draw (eg. DrawLine, DrawCircle, etc.)
|
||||
|
|
|
@ -221,6 +221,7 @@ set(PCBNEW_CLASS_SRCS
|
|||
|
||||
tools/selection_tool.cpp
|
||||
tools/selection_area.cpp
|
||||
tools/bright_box.cpp
|
||||
tools/move_tool.cpp
|
||||
tools/pcb_tools.cpp
|
||||
)
|
||||
|
|
|
@ -41,6 +41,7 @@
|
|||
|
||||
#include "selection_tool.h"
|
||||
#include "selection_area.h"
|
||||
#include "bright_box.h"
|
||||
|
||||
using namespace KiGfx;
|
||||
using boost::optional;
|
||||
|
@ -334,8 +335,8 @@ bool SELECTION_TOOL::selectMultiple()
|
|||
|
||||
BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
||||
{
|
||||
OPT_TOOL_EVENT evt;
|
||||
BOARD_ITEM* current = NULL;
|
||||
boost::shared_ptr<BRIGHT_BOX> brightBox;
|
||||
|
||||
m_menu.reset( new CONTEXT_MENU() );
|
||||
m_menu->SetTitle( _( "Clarify selection" ) );
|
||||
|
@ -352,10 +353,13 @@ BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
|||
|
||||
SetContextMenu( m_menu.get(), CMENU_NOW );
|
||||
|
||||
while( evt = Wait() )
|
||||
while( OPT_TOOL_EVENT evt = Wait() )
|
||||
{
|
||||
wxLogDebug( wxT( "disambiguation menu event") );
|
||||
|
||||
if( evt->Action() == TA_ContextMenuUpdate )
|
||||
{
|
||||
// User has pointed an item, so show it in a different way
|
||||
if( current )
|
||||
current->ClearBrightened();
|
||||
|
||||
|
@ -380,14 +384,20 @@ BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
|||
{
|
||||
current = ( *aCollector )[*id];
|
||||
current->SetSelected();
|
||||
return current;
|
||||
}
|
||||
|
||||
return NULL;
|
||||
break;
|
||||
}
|
||||
|
||||
if( current && current->IsBrightened() )
|
||||
{
|
||||
brightBox.reset( new BRIGHT_BOX( current ) );
|
||||
getView()->Add( brightBox.get() );
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
getView()->MarkTargetDirty( TARGET_OVERLAY );
|
||||
return current;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue