@@ -109,7 +109,7 @@ void Arpeggio::read(XmlReader& e)
109109
110110// ---------------------------------------------------------
111111//    symbolLine
112- //     construct a string of symbols aproximating  width w
112+ //     construct a string of symbols approximating  width w
113113// ---------------------------------------------------------
114114
115115void  Arpeggio::symbolLine (SymId end, SymId fill)
@@ -180,25 +180,28 @@ void Arpeggio::layout()
180180                  qreal _spatium = spatium ();
181181                  qreal x1 = _spatium * .5 ;
182182                  qreal w  = symBbox (SymId::arrowheadBlackUp).width ();
183-                   qreal lw = score ()->styleS (Sid::ArpeggioLineWidth).val () * _spatium;
184-                   setbbox (QRectF (x1 - w * .5 , y1, w, y2 - y1 + lw * .5 ));
183+                   qreal terminalDistance = 0 ;
184+                   if  (parent ())
185+                         terminalDistance = _spatium / 4  - score ()->styleP (Sid::ArpeggioLineWidth) / 2 ;
186+                   setbbox (QRectF (x1 - w * .5 , y1, w, y2 - y1 + terminalDistance));
185187                  }
186188                  break ;
187189
188190            case  ArpeggioType::DOWN_STRAIGHT: {
189191                  qreal _spatium = spatium ();
190192                  qreal x1 = _spatium * .5 ;
191193                  qreal w  = symBbox (SymId::arrowheadBlackDown).width ();
192-                   qreal lw = score ()->styleS (Sid::ArpeggioLineWidth).val () * _spatium;
193-                   setbbox (QRectF (x1 - w * .5 , y1 - lw * .5 , w, y2 - y1 + lw * .5 ));
194+                   qreal terminalDistance = 0 ;
195+                   if  (parent ())
196+                         terminalDistance = _spatium / 4  - score ()->styleP (Sid::ArpeggioLineWidth) / 2 ;
197+                   setbbox (QRectF (x1 - w * .5 , y1 - terminalDistance, w, y2 - y1 + terminalDistance));
194198                  }
195199                  break ;
196200
197201            case  ArpeggioType::BRACKET: {
198202                  qreal _spatium = spatium ();
199-                   qreal lw = score ()->styleS (Sid::ArpeggioLineWidth).val () * _spatium * .5 ;
200203                  qreal w  = score ()->styleS (Sid::ArpeggioHookLen).val () * _spatium;
201-                   setbbox (QRectF (0.0 , y1, w, y2-y1). adjusted (-lw, -lw, lw, lw ));
204+                   setbbox (QRectF (0.0 , y1, w, y2 - y1 ));
202205                  break ;
203206                  }
204207            }
@@ -214,14 +217,14 @@ void Arpeggio::draw(QPainter* p) const
214217            return ;
215218      qreal _spatium = spatium ();
216219
217-       qreal y1 = -_userLen1 ;
218-       qreal y2 = _height + _userLen2 ;
220+       qreal y1 = bbox (). top () ;
221+       qreal y2 = bbox (). bottom () ;
219222
220-       p->setPen (QPen (curColor (),
221-          score ()->styleS (Sid::ArpeggioLineWidth).val () * _spatium,
222-          Qt::SolidLine, Qt::RoundCap));
223+       qreal lineWidth = score ()->styleP (Sid::ArpeggioLineWidth);
223224
225+       p->setPen (QPen (curColor (), lineWidth, Qt::SolidLine,Qt::FlatCap));
224226      p->save ();
227+ 
225228      switch  (arpeggioType ()) {
226229            case  ArpeggioType::NORMAL:
227230            case  ArpeggioType::UP:
@@ -266,9 +269,9 @@ void Arpeggio::draw(QPainter* p) const
266269            case  ArpeggioType::BRACKET:
267270                  {
268271                  qreal w = score ()->styleS (Sid::ArpeggioHookLen).val () * _spatium;
269-                   p->drawLine (QLineF (0.0 , y1, 0.0 , y2));
270272                  p->drawLine (QLineF (0.0 , y1, w, y1));
271273                  p->drawLine (QLineF (0.0 , y2, w, y2));
274+                   p->drawLine (QLineF (0.0 , y1 - lineWidth / 2 , 0.0 , y2 + lineWidth / 2 ));
272275                  }
273276                  break ;
274277            }
0 commit comments