mirror of
https://github.com/taigrr/gico.git
synced 2026-04-02 03:09:07 -07:00
separate out into packages to avoid unnecessary dependencies
This commit is contained in:
@@ -6,7 +6,7 @@ import (
|
|||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/taigrr/gitgraph/graph"
|
"github.com/taigrr/gitgraph/svg"
|
||||||
)
|
)
|
||||||
|
|
||||||
type DayCount [366]int
|
type DayCount [366]int
|
||||||
@@ -22,7 +22,7 @@ func main() {
|
|||||||
freq = append(freq, rand.Int())
|
freq = append(freq, rand.Int())
|
||||||
}
|
}
|
||||||
w.Header().Add("Content-Type", "text/html")
|
w.Header().Add("Content-Type", "text/html")
|
||||||
svg := graph.GetWeekSVG(freq)
|
svg := svg.GetWeekSVG(freq)
|
||||||
svg.WriteTo(w)
|
svg.WriteTo(w)
|
||||||
|
|
||||||
})
|
})
|
||||||
@@ -31,11 +31,11 @@ func main() {
|
|||||||
for i := 0; i < 365; i++ {
|
for i := 0; i < 365; i++ {
|
||||||
freq = append(freq, rand.Int())
|
freq = append(freq, rand.Int())
|
||||||
}
|
}
|
||||||
svg := graph.GetYearSVG(freq)
|
svg := svg.GetYearSVG(freq)
|
||||||
w.Header().Add("Content-Type", "text/html")
|
w.Header().Add("Content-Type", "text/html")
|
||||||
svg.WriteTo(w)
|
svg.WriteTo(w)
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
http.ListenAndServe("0.0.0.0:5578", r)
|
http.ListenAndServe(":8080", r)
|
||||||
}
|
}
|
||||||
|
|||||||
56
common/common.go
Normal file
56
common/common.go
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
package common
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"image/color"
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
sc "github.com/taigrr/go-colorpallettes/simplecolor"
|
||||||
|
)
|
||||||
|
|
||||||
|
var colorsLoaded sync.Once
|
||||||
|
var colorScheme []sc.SimpleColor
|
||||||
|
|
||||||
|
func CreateGraph() bytes.Buffer {
|
||||||
|
var x bytes.Buffer
|
||||||
|
return x
|
||||||
|
}
|
||||||
|
|
||||||
|
func init() {
|
||||||
|
colors := []string{"#767960", "#a7297f", "#e8ca89", "#f5efd6", "#858966"}
|
||||||
|
// colors = []string{"#000000", "#0e4429", "#006d32", "#26a641", "#39d353"}
|
||||||
|
for _, c := range colors {
|
||||||
|
color := sc.FromHexString(c)
|
||||||
|
colorScheme = append(colorScheme, color)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetColorScheme(c []color.Color) {
|
||||||
|
for _, c := range c {
|
||||||
|
colorScheme = append(colorScheme, sc.FromRGBA(c.RGBA()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func ColorForFrequency(freq, min, max int) sc.SimpleColor {
|
||||||
|
spread := max - min
|
||||||
|
interval := float64(spread) / float64(len(colorScheme))
|
||||||
|
colorIndex := 0
|
||||||
|
for i := float64(min); i < float64(freq); i += float64(interval) {
|
||||||
|
colorIndex++
|
||||||
|
}
|
||||||
|
if colorIndex > len(colorScheme)-1 {
|
||||||
|
colorIndex = len(colorScheme) - 1
|
||||||
|
}
|
||||||
|
return colorScheme[colorIndex]
|
||||||
|
}
|
||||||
|
func MinMax(f []int) (int, int) {
|
||||||
|
min, max := 0, 0
|
||||||
|
for _, x := range f {
|
||||||
|
if x < min {
|
||||||
|
min = x
|
||||||
|
} else if x > max {
|
||||||
|
max = x
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return min, max
|
||||||
|
}
|
||||||
@@ -1,11 +1,10 @@
|
|||||||
package graph
|
package svg
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
"bytes"
|
"bytes"
|
||||||
"fmt"
|
"fmt"
|
||||||
"image"
|
"image"
|
||||||
"image/color"
|
|
||||||
"image/png"
|
"image/png"
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
"sync"
|
||||||
@@ -13,49 +12,18 @@ import (
|
|||||||
svg "github.com/ajstarks/svgo"
|
svg "github.com/ajstarks/svgo"
|
||||||
"github.com/srwiley/oksvg"
|
"github.com/srwiley/oksvg"
|
||||||
"github.com/srwiley/rasterx"
|
"github.com/srwiley/rasterx"
|
||||||
|
"github.com/taigrr/gitgraph/common"
|
||||||
sc "github.com/taigrr/go-colorpallettes/simplecolor"
|
sc "github.com/taigrr/go-colorpallettes/simplecolor"
|
||||||
)
|
)
|
||||||
|
|
||||||
var colorsLoaded sync.Once
|
var colorsLoaded sync.Once
|
||||||
var colorScheme []sc.SimpleColor
|
var colorScheme []sc.SimpleColor
|
||||||
|
|
||||||
func CreateGraph() bytes.Buffer {
|
|
||||||
var x bytes.Buffer
|
|
||||||
return x
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
colors := []string{"#767960", "#a7297f", "#e8ca89", "#f5efd6", "#858966"}
|
|
||||||
// colors = []string{"#000000", "#0e4429", "#006d32", "#26a641", "#39d353"}
|
|
||||||
for _, c := range colors {
|
|
||||||
color := sc.FromHexString(c)
|
|
||||||
colorScheme = append(colorScheme, color)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func SetColorScheme(c []color.Color) {
|
|
||||||
for _, c := range c {
|
|
||||||
colorScheme = append(colorScheme, sc.FromRGBA(c.RGBA()))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func ColorForFrequency(freq, min, max int) sc.SimpleColor {
|
|
||||||
spread := max - min
|
|
||||||
interval := float64(spread) / float64(len(colorScheme))
|
|
||||||
colorIndex := 0
|
|
||||||
for i := float64(min); i < float64(freq); i += float64(interval) {
|
|
||||||
colorIndex++
|
|
||||||
}
|
|
||||||
if colorIndex > len(colorScheme)-1 {
|
|
||||||
colorIndex = len(colorScheme) - 1
|
|
||||||
}
|
|
||||||
return colorScheme[colorIndex]
|
|
||||||
}
|
|
||||||
func GetWeekSVG(frequencies []int) bytes.Buffer {
|
func GetWeekSVG(frequencies []int) bytes.Buffer {
|
||||||
squareColors := []sc.SimpleColor{}
|
squareColors := []sc.SimpleColor{}
|
||||||
min, max := minmax(frequencies)
|
min, max := common.MinMax(frequencies)
|
||||||
for _, f := range frequencies {
|
for _, f := range frequencies {
|
||||||
squareColors = append(squareColors, ColorForFrequency(f, min, max))
|
squareColors = append(squareColors, common.ColorForFrequency(f, min, max))
|
||||||
}
|
}
|
||||||
return drawWeekImage(squareColors)
|
return drawWeekImage(squareColors)
|
||||||
}
|
}
|
||||||
@@ -78,9 +46,9 @@ func drawWeekImage(c []sc.SimpleColor) bytes.Buffer {
|
|||||||
}
|
}
|
||||||
func GetYearSVG(frequencies []int) bytes.Buffer {
|
func GetYearSVG(frequencies []int) bytes.Buffer {
|
||||||
squareColors := []sc.SimpleColor{}
|
squareColors := []sc.SimpleColor{}
|
||||||
min, max := minmax(frequencies)
|
min, max := common.MinMax(frequencies)
|
||||||
for _, f := range frequencies {
|
for _, f := range frequencies {
|
||||||
squareColors = append(squareColors, ColorForFrequency(f, min, max))
|
squareColors = append(squareColors, common.ColorForFrequency(f, min, max))
|
||||||
}
|
}
|
||||||
return drawYearImage(squareColors)
|
return drawYearImage(squareColors)
|
||||||
}
|
}
|
||||||
@@ -104,19 +72,6 @@ func drawYearImage(c []sc.SimpleColor) bytes.Buffer {
|
|||||||
sbw.Flush()
|
sbw.Flush()
|
||||||
return sb
|
return sb
|
||||||
}
|
}
|
||||||
|
|
||||||
func minmax(f []int) (int, int) {
|
|
||||||
min, max := 0, 0
|
|
||||||
for _, x := range f {
|
|
||||||
if x < min {
|
|
||||||
min = x
|
|
||||||
} else if x > max {
|
|
||||||
max = x
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return min, max
|
|
||||||
}
|
|
||||||
|
|
||||||
func svgToPng() {
|
func svgToPng() {
|
||||||
w, h := 512, 512
|
w, h := 512, 512
|
||||||
|
|
||||||
Reference in New Issue
Block a user