Codebase list golang-github-vbauerster-mpb / 65420df
replace bufX with [3]*butes.Buffer of cap 512 Vladimir Bauer 4 years ago
3 changed file(s) with 26 addition(s) and 23 deletion(s). Raw diff Collapse all Expand all
6161 averageDecorators []decor.AverageDecorator
6262 ewmaDecorators []decor.EwmaDecorator
6363 shutdownListeners []decor.ShutdownListener
64 bufP, bufB, bufA *bytes.Buffer
64 buffers [3]*bytes.Buffer
6565 filler BarFiller
6666 middleware func(BarFiller) BarFiller
6767 extender extenderFunc
427427 }
428428
429429 func (s *bState) draw(stat decor.Statistics) io.Reader {
430 bufA := s.buffers[0]
431 bufB := s.buffers[1]
432 bufP := s.buffers[2]
430433 nlr := strings.NewReader("\n")
431434 tw := stat.AvailableWidth
432435 for _, d := range s.pDecorators {
433436 str := d.Decor(stat)
434437 stat.AvailableWidth -= runewidth.StringWidth(stripansi.Strip(str))
435 s.bufP.WriteString(str)
438 bufP.WriteString(str)
436439 }
437440 if stat.AvailableWidth < 1 {
438 trunc := strings.NewReader(runewidth.Truncate(stripansi.Strip(s.bufP.String()), tw, "…"))
439 s.bufP.Reset()
441 trunc := strings.NewReader(runewidth.Truncate(stripansi.Strip(bufP.String()), tw, "…"))
442 bufP.Reset()
440443 return io.MultiReader(trunc, nlr)
441444 }
442445
443446 if !s.trimSpace && stat.AvailableWidth > 1 {
444447 stat.AvailableWidth -= 2
445 s.bufB.WriteByte(' ')
446 defer s.bufB.WriteByte(' ')
448 bufB.WriteByte(' ')
449 defer bufB.WriteByte(' ')
447450 }
448451
449452 tw = stat.AvailableWidth
450453 for _, d := range s.aDecorators {
451454 str := d.Decor(stat)
452455 stat.AvailableWidth -= runewidth.StringWidth(stripansi.Strip(str))
453 s.bufA.WriteString(str)
456 bufA.WriteString(str)
454457 }
455458 if stat.AvailableWidth < 1 {
456 trunc := strings.NewReader(runewidth.Truncate(stripansi.Strip(s.bufA.String()), tw, "…"))
457 s.bufA.Reset()
458 return io.MultiReader(s.bufP, s.bufB, trunc, nlr)
459 }
460
461 s.filler.Fill(s.bufB, s.reqWidth, stat)
462
463 return io.MultiReader(s.bufP, s.bufB, s.bufA, nlr)
459 trunc := strings.NewReader(runewidth.Truncate(stripansi.Strip(bufA.String()), tw, "…"))
460 bufA.Reset()
461 return io.MultiReader(bufP, bufB, trunc, nlr)
462 }
463
464 s.filler.Fill(bufB, s.reqWidth, stat)
465
466 return io.MultiReader(bufP, bufB, bufA, nlr)
464467 }
465468
466469 func (s *bState) wSyncTable() [][]chan int {
14131413 }
14141414
14151415 func newTestState(filler BarFiller) *bState {
1416 s := &bState{
1416 bs := &bState{
14171417 filler: filler,
1418 bufP: new(bytes.Buffer),
1419 bufB: new(bytes.Buffer),
1420 bufA: new(bytes.Buffer),
14211418 }
1422 return s
1419 for i := 0; i < len(bs.buffers); i++ {
1420 bs.buffers[i] = bytes.NewBuffer(make([]byte, 0, 512))
1421 }
1422 return bs
14231423 }
413413 bs.priority = -(math.MaxInt32 - s.idCount)
414414 }
415415
416 bs.bufP = bytes.NewBuffer(make([]byte, 0, 128))
417 bs.bufB = bytes.NewBuffer(make([]byte, 0, 256))
418 bs.bufA = bytes.NewBuffer(make([]byte, 0, 128))
416 for i := 0; i < len(bs.buffers); i++ {
417 bs.buffers[i] = bytes.NewBuffer(make([]byte, 0, 512))
418 }
419419
420420 return bs
421421 }