go.talks/cmd/cover: better color scheme and fonts

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/11032043
This commit is contained in:
Andrew Gerrand 2013-07-09 16:58:15 +10:00
parent 5da7e5a1a8
commit 2b6515094c
1 changed files with 22 additions and 16 deletions

View File

@ -2,6 +2,9 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
// TODO(adg): floating nav bar + legend
// TODO(adg): set-specific legend
package main
import (
@ -182,7 +185,7 @@ func (p *Profile) Tokens(src []byte) (tokens []Token) {
}
}
// Divisor for normalization.
divisor := math.Log(float64(max + 1))
divisor := math.Log(float64(max))
// tok returns a Token, populating the Norm field with a normalized Count.
tok := func(pos int, start bool, count int) Token {
@ -190,10 +193,10 @@ func (p *Profile) Tokens(src []byte) (tokens []Token) {
if !start || count == 0 {
return t
}
if max == 1 {
if max <= 1 {
t.Norm = 0.4 // "set" mode; use pale color
} else {
t.Norm = math.Log(float64(count+1)) / divisor
} else if count > 0 {
t.Norm = math.Log(float64(count)) / divisor
}
return t
}
@ -241,7 +244,7 @@ func htmlGen(w io.Writer, src []byte, tokens []Token) error {
if t.Start {
n := 0
if t.Count > 0 {
n = int(math.Floor(t.Norm*10)) + 1
n = int(math.Floor(t.Norm*9)) + 1
}
fmt.Fprintf(dst, `<span class="cov%v" title="%v">`, n, t.Count)
} else {
@ -283,22 +286,22 @@ func startBrowser(url string) bool {
}
// rgb returns an rgb value for the specified coverage value
// between 0 (no coverage) and 11 (max coverage).
// between 0 (no coverage) and 10 (max coverage).
func rgb(n int) string {
if n == 0 {
return "rgb(255, 0, 0)" // Red
return "rgb(192, 0, 0)" // Red
}
// Gradient from pale blue (low count) to yellow (high count)
r := 185 + 7*(n-1)
g := 185 + 7*(n-1)
b := 5 + 25*(11-n)
// Gradient from gray to green.
r := 128 - 12*(n-1)
g := 128 + 12*(n-1)
b := 128 + 3*(n-1)
return fmt.Sprintf("rgb(%v, %v, %v)", r, g, b)
}
// colors generates the CSS rules for coverage colors.
func colors() template.CSS {
var buf bytes.Buffer
for i := 0; i < 12; i++ {
for i := 0; i < 11; i++ {
fmt.Fprintf(&buf, ".cov%v { color: %v }\n", i, rgb(i))
}
return template.CSS(buf.String())
@ -323,7 +326,8 @@ const tmplHTML = `
<head>
<style>
body {
background: black; color: white;
background: black;
color: rgb(80, 80, 80);
}
#legend {
margin: 20px 0;
@ -334,9 +338,12 @@ const tmplHTML = `
border: 1px solid white;
}
#legend span {
font-family: monospace;
margin: 0 5px;
}
pre, #legend span {
font-family: Menlo, monospace;
font-weight: bold;
}
{{colors}}
</style>
</head>
@ -361,8 +368,7 @@ const tmplHTML = `
<span class="cov7">*</span>
<span class="cov8">*</span>
<span class="cov9">*</span>
<span class="cov10">*</span>
<span class="cov11">high coverage</span>
<span class="cov10">high coverage</span>
</div>
</div>
{{range $i, $f := .Files}}