From 70a5ee41ba8b3267dc0a88d51bbf987e2c3b3ba9 Mon Sep 17 00:00:00 2001 From: Karmo Rosental Date: Wed, 28 Sep 2016 18:44:28 +0300 Subject: [PATCH] Fixed showing of velocity of steps. (#2960) * Fixed showing of velocity of steps. * More contrast between muted and unmuted steps. * Corrected opacity of volumes over 100. * Single pixmap draw per step and step opacity is calculated using sqrt function. * Using step_btn_on_100.png created by Umcaruje. --- data/themes/default/step_btn_on_100.png | Bin 437 -> 407 bytes data/themes/default/step_btn_on_yellow.png | Bin 396 -> 0 bytes src/tracks/Pattern.cpp | 74 ++++++++------------- 3 files changed, 28 insertions(+), 46 deletions(-) mode change 100755 => 100644 data/themes/default/step_btn_on_100.png delete mode 100755 data/themes/default/step_btn_on_yellow.png diff --git a/data/themes/default/step_btn_on_100.png b/data/themes/default/step_btn_on_100.png old mode 100755 new mode 100644 index fb0149ea1b11c94d44f81ad57dbff6d9e0a6dcb9..b047afc185838c8da4c8d4f6d3eaf90c4087f299 GIT binary patch delta 360 zcmV-u0hj)@1D6AkBo78+OGiWi{{a60|De66laVnPe+P6)O+^Rb2oe?+7T_1Uvj6}A zBuPX;R7l6Ymc2^EKomw#!ieRTTPcWjNNu6`8a{;B31Th6c8d?;d-w(+mBq5f7HYRC zb^a_SGnrkqaQDW6R7uX4lgl?r0eD7S3gCIQ90h)LbP@ub@m$~EiNc>A9tQ*K4FIRN zH%#hke=l&?v@B-x#7qVNle*#p#gt+v_y?Ys{sAMiH*o2q;~nAK_eQ1yFvg}62SPK5 zOa}Ju7xWSKG1;Ce3fcxFR%Nv*xW?*sypBYF6PDEz8ZLr4S`|s#qk9F3eO@qGHUDNVf zSFlIfx~3&(h8eh!wwTSu_M*s4Gq^lE7v1dQ42rRTTfPBzXR1R7i=vmb*&CKp2I; zgb~XvtrWyMq_$9e4Ie`61hE!jyT!^U@I8Ekkji4Q*h1|#<$s#FSWM=UB^H~Vcp%l} z|4vSRPDlp4Frfs%>*`|?`1SFrHPF&<^KhRO{`~j^bP1G^0G!?3GAoO{z)e-NoG(1n zCjgk01(yhp$VS1xF}!sT=$Kss?Qc363E!S|OaUOJ@&^Z_@qIa_05DO4L-HgB=D!l; z0IiaVutAP#Uw@Gb3ED&kjwt}zHW+Ns!xKBoF$KWt^D7)A!3U=8L01ZZO(Fx;FIre~ zssw|d3V@$P2Kw&=W_V&p^%BSlb|B*fCQ6XXz%ldK4PcGNz^H2-b*P`9t94V=yq5*+ zQMRV4iJ5i>+PW?0i_ze1Ii}yi)%is-xMKojO#IvO3ly{^v1}i_J6Zq$002ovPDHLk FV1h1*u($vK diff --git a/data/themes/default/step_btn_on_yellow.png b/data/themes/default/step_btn_on_yellow.png deleted file mode 100755 index 40c269aee33af418e61998a1e0e0295697de2c22..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 396 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEX7WqAsj$Z!;#Vf2?p zUk71ECym(^Ktah8*NBqf{Irtt#G+J&^73-M%)IR4-Pm;Viqe|!SUeBj#8$0-)B1+xvuS=tMO;YeP*>rqwdXb+b$aMG1co! zes_*C_{@^Q;C6aO3*+NyAH)mv;sU0#c}<_aO!wipH#cpf(?af=@EBwS*>4Z7-?nu^ zqFci1so4rgwx6+UaI$Mm6)O%X6)RxKVbX2W{dp_%^7GHJrhL;m_patternType == Pattern::BeatPattern ) { ToolTip::add( this, - tr( "use mouse wheel to set velocity of a step" ) ); + tr( "use mouse wheel to set velocity of a step" ) ); } - else + else { ToolTip::add( this, - tr( "double-click to open in Piano Roll" ) ); + tr( "double-click to open in Piano Roll" ) ); } - + TrackContentObjectView::update(); } @@ -877,7 +870,7 @@ void PatternView::paintEvent( QPaintEvent * ) setNeedsUpdate( false ); - m_paintPixmap = m_paintPixmap.isNull() == true || m_paintPixmap.size() != size() + m_paintPixmap = m_paintPixmap.isNull() == true || m_paintPixmap.size() != size() ? QPixmap( size() ) : m_paintPixmap; QPainter p( &m_paintPixmap ); @@ -887,16 +880,16 @@ void PatternView::paintEvent( QPaintEvent * ) bool muted = m_pat->getTrack()->isMuted() || m_pat->isMuted(); bool current = gui->pianoRoll()->currentPattern() == m_pat; bool beatPattern = m_pat->m_patternType == Pattern::BeatPattern; - + // state: selected, normal, beat pattern, muted - c = isSelected() ? selectedColor() : ( ( !muted && !beatPattern ) - ? painter.background().color() : ( beatPattern + c = isSelected() ? selectedColor() : ( ( !muted && !beatPattern ) + ? painter.background().color() : ( beatPattern ? BBPatternBackground() : mutedBackgroundColor() ) ); // invert the gradient for the background in the B&B editor lingrad.setColorAt( beatPattern ? 0 : 1, c.darker( 300 ) ); lingrad.setColorAt( beatPattern ? 1 : 0, c ); - + if( gradient() ) { p.fillRect( rect(), lingrad ); @@ -905,7 +898,7 @@ void PatternView::paintEvent( QPaintEvent * ) { p.fillRect( rect(), c ); } - + const float ppt = fixedTCOs() ? ( parentWidget()->width() - 2 * TCO_BORDER_WIDTH ) / (float) m_pat->length().getTact() : @@ -913,7 +906,7 @@ void PatternView::paintEvent( QPaintEvent * ) / (float) m_pat->length().getTact(); const int x_base = TCO_BORDER_WIDTH; - + // melody pattern paint event if( m_pat->m_patternType == Pattern::MelodyPattern ) { @@ -993,14 +986,13 @@ void PatternView::paintEvent( QPaintEvent * ) } } } - } + } // beat pattern paint event else if( beatPattern && ( fixedTCOs() || ppt >= 96 || m_pat->m_steps != MidiTime::stepsPerTact() ) ) { QPixmap stepon; - QPixmap stepoverlay; QPixmap stepoff; QPixmap stepoffl; const int steps = qMax( 1, @@ -1012,10 +1004,6 @@ void PatternView::paintEvent( QPaintEvent * ) s_stepBtnOn->height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation ); - stepoverlay = s_stepBtnOverlay->scaled( w / steps, - s_stepBtnOn->height(), - Qt::IgnoreAspectRatio, - Qt::SmoothTransformation ); stepoff = s_stepBtnOff->scaled( w / steps, s_stepBtnOff->height(), Qt::IgnoreAspectRatio, @@ -1036,16 +1024,10 @@ void PatternView::paintEvent( QPaintEvent * ) if( n ) { const int vol = n->getVolume(); - p.drawPixmap( x, y, stepoff ); - for( int i = 0; i < vol / 5 + 1; ++i ) - { - p.drawPixmap( x, y, stepon ); - } - for( int i = 0; i < ( 25 + ( vol - 75 ) ) / 5; - ++i ) - { - p.drawPixmap( x, y, stepoverlay ); - } + p.drawPixmap( x, y, stepoffl ); + p.setOpacity( sqrt( vol / 200.0 ) ); + p.drawPixmap( x, y, stepon ); + p.setOpacity( 1 ); } else if( ( it / 4 ) % 2 ) { @@ -1056,16 +1038,16 @@ void PatternView::paintEvent( QPaintEvent * ) p.drawPixmap( x, y, stepoff ); } } // end for loop - + // draw a transparent rectangle over muted patterns if ( muted ) { p.setBrush( mutedBackgroundColor() ); - p.setOpacity( 0.3 ); + p.setOpacity( 0.5 ); p.drawRect( 0, 0, width(), height() ); } } - + // bar lines const int lineSize = 3; p.setPen( c.darker( 300 ) ); @@ -1083,22 +1065,22 @@ void PatternView::paintEvent( QPaintEvent * ) // pattern name p.setRenderHint( QPainter::TextAntialiasing ); - + bool isDefaultName = m_pat->name() == m_pat->instrumentTrack()->name(); - + if( !isDefaultName && m_staticTextName.text() != m_pat->name() ) { m_staticTextName.setText( m_pat->name() ); } - + QFont font; font.setHintingPreference( QFont::PreferFullHinting ); font.setPointSize( 8 ); p.setFont( font ); - + const int textTop = TCO_BORDER_WIDTH + 1; const int textLeft = TCO_BORDER_WIDTH + 1; - + if( !isDefaultName ) { p.setPen( textShadowColor() ); @@ -1111,9 +1093,9 @@ void PatternView::paintEvent( QPaintEvent * ) if( !beatPattern ) { p.setPen( c.lighter( current ? 160 : 130 ) ); - p.drawRect( 1, 1, rect().right() - TCO_BORDER_WIDTH, + p.drawRect( 1, 1, rect().right() - TCO_BORDER_WIDTH, rect().bottom() - TCO_BORDER_WIDTH ); - + // outer border p.setPen( ( current && !beatPattern ) ? c.lighter( 130 ) : c.darker( 300 ) ); p.drawRect( 0, 0, rect().right(), rect().bottom() );