diff options
author | Lukas Dietrich <lukas@lukasdietrich.com> | 2016-02-27 13:59:11 +0100 |
---|---|---|
committer | Lukas Dietrich <lukas@lukasdietrich.com> | 2016-02-27 13:59:11 +0100 |
commit | c0eaae200e4c6cfdef5a0a298921db02cba56a92 (patch) | |
tree | fe0ea0663d2f2e7abc1176dd0ebcd5416fa8ac6b /models | |
parent | 79ae163296be367058576589bfc583c22a2e24ca (diff) | |
download | gitea-c0eaae200e4c6cfdef5a0a298921db02cba56a92.tar.gz gitea-c0eaae200e4c6cfdef5a0a298921db02cba56a92.zip |
Add ForegroundColor for labels
Diffstat (limited to 'models')
-rw-r--r-- | models/issue.go | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/models/issue.go b/models/issue.go index 62db35d48a..c9883a25e6 100644 --- a/models/issue.go +++ b/models/issue.go @@ -8,10 +8,12 @@ import ( "bytes" "errors" "fmt" + "html/template" "io" "mime/multipart" "os" "path" + "strconv" "strings" "time" @@ -958,6 +960,26 @@ func (m *Label) CalOpenIssues() { m.NumOpenIssues = m.NumIssues - m.NumClosedIssues } +// ForegroundColor calculates the text color for labels based +// on their background color +func (l *Label) ForegroundColor() template.CSS { + if strings.HasPrefix(l.Color, "#") { + if color, err := strconv.ParseUint(l.Color[1:], 16, 64); err == nil { + r := float32(0xFF & (color >> 16)) + g := float32(0xFF & (color >> 8)) + b := float32(0xFF & color) + luminance := (0.2126*r + 0.7152*g + 0.0722*b) / 255 + + if luminance < 0.5 { + return template.CSS("rgba(255,255,255,.8)") + } + } + } + + // default to black + return template.CSS("rgba(0,0,0,.8)") +} + // NewLabel creates new label of repository. func NewLabel(l *Label) error { _, err := x.Insert(l) |