Commit 77dd6e55 authored by santiaago's avatar santiaago
Browse files

add colorThemes map and add theme support to route /checkerboard when passing...

add colorThemes map and add theme support to route /checkerboard when passing the theme through a theme url parameter
parent 901f5bb7
Loading
Loading
Loading
Loading
+65 −0
Original line number Diff line number Diff line
@@ -46,3 +46,68 @@ func MapOfColorPatterns() map[int][]color.RGBA {
		},
	}
}

// MapOfColorThemes is used to build random images with colors that combine together.
func MapOfColorThemes() map[string][]color.RGBA {
	return map[string][]color.RGBA{
		"base": []color.RGBA{
			color.RGBA{uint8(255), uint8(255), uint8(255), uint8(255)},
			color.RGBA{uint8(0), uint8(0), uint8(0), uint8(255)},
		},

		"sugarsweets": []color.RGBA{
			color.RGBA{232, 70, 134, 255},  // main
			color.RGBA{232, 70, 186, 255},  // 2dary
			color.RGBA{232, 70, 81, 255},   // 2dary
			color.RGBA{255, 245, 249, 255}, //background
		},
		"heatwave": []color.RGBA{
			color.RGBA{251, 76, 1, 255},    // main
			color.RGBA{207, 36, 24, 255},   // 2dary
			color.RGBA{255, 141, 20, 255},  // 2dary
			color.RGBA{255, 251, 243, 255}, //background
		},
		"daisygarden": []color.RGBA{
			color.RGBA{177, 192, 24, 255},  // main
			color.RGBA{135, 173, 22, 255},  // 2dary
			color.RGBA{235, 199, 23, 255},  // 2dary
			color.RGBA{254, 251, 230, 255}, //background
		},
		"seascape": []color.RGBA{
			color.RGBA{0, 114, 122, 255},   // main
			color.RGBA{0, 81, 130, 255},    // 2dary
			color.RGBA{0, 171, 145, 255},   // 2dary
			color.RGBA{240, 245, 244, 255}, //background
		},
		"summerwarmth": []color.RGBA{
			color.RGBA{247, 228, 64, 255},  // main
			color.RGBA{255, 207, 72, 255},  // 2dary
			color.RGBA{193, 222, 53, 255},  // 2dary
			color.RGBA{255, 255, 232, 255}, //background
		},
		"bythepool": []color.RGBA{
			color.RGBA{80, 135, 243, 255},  // main
			color.RGBA{92, 186, 242, 255},  // 2dary
			color.RGBA{131, 103, 244, 255}, // 2dary
			color.RGBA{237, 242, 255, 255}, //background
		},
		"duskfalling": []color.RGBA{
			color.RGBA{142, 74, 219, 255},  // main
			color.RGBA{70, 86, 212, 255},   // 2dary
			color.RGBA{201, 64, 206, 255},  // 2dary
			color.RGBA{244, 234, 252, 255}, //background
		},
		"frogideas": []color.RGBA{
			color.RGBA{93, 214, 75, 255},   // main
			color.RGBA{67, 191, 134, 255},  // 2dary
			color.RGBA{148, 232, 56, 255},  // 2dary
			color.RGBA{226, 255, 222, 255}, //background
		},
		"berrypie": []color.RGBA{
			color.RGBA{248, 0, 6, 255},     // main
			color.RGBA{245, 44, 118, 255},  // 2dary
			color.RGBA{255, 79, 0, 255},    // 2dary
			color.RGBA{255, 240, 240, 255}, //background
		},
	}
}
+13 −4
Original line number Diff line number Diff line
@@ -49,15 +49,24 @@ func Color(w http.ResponseWriter, r *http.Request) {
// build a 6x6 checkerboard with alternate black and white colors.
func Checkerboard(w http.ResponseWriter, r *http.Request) {
	size := extract.Size(r)
	color1 := color.RGBA{uint8(255), uint8(255), 255, 255}
	color2 := color.RGBA{uint8(0), uint8(0), 0, 255}
	theme := extract.Theme(r)
	colorMap := colors.MapOfColorThemes()

	var c1, c2 color.RGBA
	if val, ok := colorMap[theme]; ok {
		c1 = val[0]
		c2 = val[1]
	} else {
		c1 = colorMap["base"][0]
		c2 = colorMap["base"][1]
	}
	if f := extract.Format(r); f == format.JPEG {
		m := image.NewRGBA(image.Rect(0, 0, size, size))
		draw.Grid6X6(m, color1, color2)
		draw.Grid6X6(m, c1, c2)
		var img image.Image = m
		write.ImageJPEG(w, &img)
	} else if f == format.SVG {
		write.ImageSVG(w)
		draw.Grid6X6SVG(w, color1, color2, size)
		draw.Grid6X6SVG(w, c1, c2, size)
	}
}
+10 −1
Original line number Diff line number Diff line
@@ -3,11 +3,12 @@ package extract

import (
	"fmt"
	"github.com/taironas/tinygraphs/format"
	"image/color"
	"net/http"
	"strconv"
	"strings"

	"github.com/taironas/tinygraphs/format"
)

// extract hexadecimal code background from HTTP request and return color.RGBA
@@ -73,3 +74,11 @@ func hexToRGB(h string) (uint8, uint8, uint8, error) {
	}
	return 0, 0, 0, nil
}

func Theme(r *http.Request) string {
	strTheme := strings.ToLower(r.FormValue("theme"))
	if len(strTheme) > 0 {
		return strTheme
	}
	return "base"
}