From 89ddf97fa067b1ae1601a8ad9fea8d95ec352396 Mon Sep 17 00:00:00 2001 From: Maciej Suminski Date: Wed, 17 Jul 2013 14:02:08 +0200 Subject: [PATCH] Different approach to coloring netname labels. --- include/gal/color4d.h | 48 +++++++++++++++++++++++++++++++----------- pcbnew/pcb_painter.cpp | 11 ++++++---- 2 files changed, 43 insertions(+), 16 deletions(-) diff --git a/include/gal/color4d.h b/include/gal/color4d.h index 64616239e6..b5275dfa38 100644 --- a/include/gal/color4d.h +++ b/include/gal/color4d.h @@ -82,9 +82,9 @@ public: */ COLOR4D& Highlight( double aFactor ) { - r = (double) r * (1.0 - aFactor) + aFactor; - g = (double) g * (1.0 - aFactor) + aFactor; - b = (double) b * (1.0 - aFactor) + aFactor; + r = r * ( 1.0 - aFactor ) + aFactor; + g = g * ( 1.0 - aFactor ) + aFactor; + b = b * ( 1.0 - aFactor ) + aFactor; return *this; } @@ -97,9 +97,23 @@ public: */ COLOR4D& Darken( double aFactor ) { - r = (double) r * (1.0 - aFactor); - g = (double) g * (1.0 - aFactor); - b = (double) b * (1.0 - aFactor); + r = r * ( 1.0 - aFactor ); + g = g * ( 1.0 - aFactor ); + b = b * ( 1.0 - aFactor ); + + return *this; + } + + /** + * Function Invert + * Makes the color inverted, alpha remains the same. + * @return COLOR4D& Inverted color. + */ + COLOR4D& Invert() + { + r = ( 1.0 - r ); + g = ( 1.0 - g ); + b = ( 1.0 - b ); return *this; } @@ -112,9 +126,9 @@ public: */ COLOR4D Highlighted( double aFactor ) const { - return COLOR4D( r * (1.0 - aFactor) + aFactor, - g * (1.0 - aFactor) + aFactor, - b * (1.0 - aFactor) + aFactor, + return COLOR4D( r * ( 1.0 - aFactor ) + aFactor, + g * ( 1.0 - aFactor ) + aFactor, + b * ( 1.0 - aFactor ) + aFactor, a ); } @@ -126,12 +140,22 @@ public: */ COLOR4D Darkened( double aFactor ) const { - return COLOR4D( r * (1.0 - aFactor), - g * (1.0 - aFactor), - b * (1.0 - aFactor), + return COLOR4D( r * ( 1.0 - aFactor ), + g * ( 1.0 - aFactor ), + b * ( 1.0 - aFactor ), a ); } + /** + * Function Inverted + * Returns an inverted color, alpha remains the same. + * @return COLOR4D& Inverted color. + */ + COLOR4D Inverted() const + { + return COLOR4D( 1.0 - r, 1.0 - g, 1.0 - b, a ); + } + /** * Function GetBrightness * Returns the brightness value of the color ranged from 0.0 to 1.0. diff --git a/pcbnew/pcb_painter.cpp b/pcbnew/pcb_painter.cpp index d57bdabe82..777e7b9947 100644 --- a/pcbnew/pcb_painter.cpp +++ b/pcbnew/pcb_painter.cpp @@ -309,10 +309,12 @@ void PCB_PAINTER::draw( const TRACK* aTrack, int aLayer ) // Set a proper color for the label color = getLayerColor( aTrack->GetLayer(), aTrack->GetNet(), aTrack->ViewIsHighlighted() ); + COLOR4D labelColor = getLayerColor( aLayer, 0, aTrack->ViewIsHighlighted() ); + if( color.GetBrightness() > 0.5 ) - m_gal->SetStrokeColor( color.Darkened( 0.8 ) ); + m_gal->SetStrokeColor( labelColor.Inverted() ); else - m_gal->SetStrokeColor( color.Highlighted( 0.8 ) ); + m_gal->SetStrokeColor( labelColor ); m_gal->SetLineWidth( width / 10.0 ); m_gal->SetBold( false ); @@ -447,11 +449,12 @@ void PCB_PAINTER::draw( const D_PAD* aPad, int aLayer ) // Set a proper color for the label color = getLayerColor( aPad->GetParent()->GetLayer(), aPad->GetNet(), aPad->ViewIsHighlighted() ); + COLOR4D labelColor = getLayerColor( aLayer, 0, aPad->ViewIsHighlighted() ); if( color.GetBrightness() > 0.5 ) - m_gal->SetStrokeColor( color.Darkened( 0.8 ) ); + m_gal->SetStrokeColor( labelColor.Inverted() ); else - m_gal->SetStrokeColor( color.Highlighted( 0.8 ) ); + m_gal->SetStrokeColor( labelColor ); if( displayNetname && m_pcbSettings->m_padNumbers ) {