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;
|
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 ) )
|
if( !m_painter->Draw( aItem, aLayer ) )
|
||||||
aItem->ViewDraw( aLayer, m_gal ); // Alternative drawing method
|
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 SetSelected() { SetFlags( SELECTED ); ViewUpdate( COLOR ); }
|
||||||
inline void SetHighlighted() { SetFlags( HIGHLIGHTED ); 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 ClearSelected() { ClearFlags( SELECTED ); ViewUpdate( COLOR ); }
|
||||||
inline void ClearHighlighted() { ClearFlags( HIGHLIGHTED ); ViewUpdate( COLOR ); }
|
inline void ClearHighlighted() { ClearFlags( HIGHLIGHTED ); ViewUpdate( COLOR ); }
|
||||||
inline void ClearBrightened() { ClearFlags( BRIGHTENED ); ViewUpdate( COLOR ); }
|
inline void ClearBrightened() { ClearFlags( BRIGHTENED ); }
|
||||||
|
|
||||||
void SetModified();
|
void SetModified();
|
||||||
|
|
||||||
|
|
|
@ -224,13 +224,6 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual bool Draw( const VIEW_ITEM* aItem, int aLayer ) = 0;
|
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:
|
protected:
|
||||||
/// Instance of graphic abstraction layer that gives an interface to call
|
/// Instance of graphic abstraction layer that gives an interface to call
|
||||||
/// commands used to draw (eg. DrawLine, DrawCircle, etc.)
|
/// commands used to draw (eg. DrawLine, DrawCircle, etc.)
|
||||||
|
|
|
@ -221,6 +221,7 @@ set(PCBNEW_CLASS_SRCS
|
||||||
|
|
||||||
tools/selection_tool.cpp
|
tools/selection_tool.cpp
|
||||||
tools/selection_area.cpp
|
tools/selection_area.cpp
|
||||||
|
tools/bright_box.cpp
|
||||||
tools/move_tool.cpp
|
tools/move_tool.cpp
|
||||||
tools/pcb_tools.cpp
|
tools/pcb_tools.cpp
|
||||||
)
|
)
|
||||||
|
|
|
@ -41,6 +41,7 @@
|
||||||
|
|
||||||
#include "selection_tool.h"
|
#include "selection_tool.h"
|
||||||
#include "selection_area.h"
|
#include "selection_area.h"
|
||||||
|
#include "bright_box.h"
|
||||||
|
|
||||||
using namespace KiGfx;
|
using namespace KiGfx;
|
||||||
using boost::optional;
|
using boost::optional;
|
||||||
|
@ -334,8 +335,8 @@ bool SELECTION_TOOL::selectMultiple()
|
||||||
|
|
||||||
BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
||||||
{
|
{
|
||||||
OPT_TOOL_EVENT evt;
|
|
||||||
BOARD_ITEM* current = NULL;
|
BOARD_ITEM* current = NULL;
|
||||||
|
boost::shared_ptr<BRIGHT_BOX> brightBox;
|
||||||
|
|
||||||
m_menu.reset( new CONTEXT_MENU() );
|
m_menu.reset( new CONTEXT_MENU() );
|
||||||
m_menu->SetTitle( _( "Clarify selection" ) );
|
m_menu->SetTitle( _( "Clarify selection" ) );
|
||||||
|
@ -352,10 +353,13 @@ BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
||||||
|
|
||||||
SetContextMenu( m_menu.get(), CMENU_NOW );
|
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 )
|
if( evt->Action() == TA_ContextMenuUpdate )
|
||||||
{
|
{
|
||||||
|
// User has pointed an item, so show it in a different way
|
||||||
if( current )
|
if( current )
|
||||||
current->ClearBrightened();
|
current->ClearBrightened();
|
||||||
|
|
||||||
|
@ -380,16 +384,22 @@ BOARD_ITEM* SELECTION_TOOL::disambiguationMenu( GENERAL_COLLECTOR* aCollector )
|
||||||
{
|
{
|
||||||
current = ( *aCollector )[*id];
|
current = ( *aCollector )[*id];
|
||||||
current->SetSelected();
|
current->SetSelected();
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if( current && current->IsBrightened() )
|
||||||
|
{
|
||||||
|
brightBox.reset( new BRIGHT_BOX( current ) );
|
||||||
|
getView()->Add( brightBox.get() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
getView()->MarkTargetDirty( TARGET_OVERLAY );
|
||||||
return current;
|
return current;
|
||||||
}
|
}
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool SELECTION_TOOL::selectable( const BOARD_ITEM* aItem )
|
bool SELECTION_TOOL::selectable( const BOARD_ITEM* aItem )
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue