all repos — honk @ 4c6ccda251087c90a36e874af89789b7fc080c4e

my fork of honk

vertical flags
Ted Unangst tedu@tedunangst.com
Fri, 22 May 2020 23:34:32 -0400
commit

4c6ccda251087c90a36e874af89789b7fc080c4e

parent

ac167b30239ac26f1d79c0d3a22ebb32db88f926

1 files changed, 37 insertions(+), 10 deletions(-)

jump to
M bloat.gobloat.go

@@ -31,11 +31,19 @@ func bloat_showflag(writer http.ResponseWriter, req *http.Request) {

code := mux.Vars(req)["code"] colors := strings.Split(code, ",") numcolors := len(colors) - h := (128 / numcolors) * numcolors - w := h * 3 / 2 - img := image.NewRGBA(image.Rect(0, 0, w, h)) - for i := 0; i < h; i++ { - hex := colors[i*numcolors/h] + vert := false + if colors[0] == "vert" { + vert = true + colors = colors[1:] + numcolors-- + if numcolors == 0 { + http.Error(writer, "bad flag", 400) + return + } + } + pixels := make([][4]byte, numcolors) + for i := 0; i < numcolors; i++ { + hex := colors[i] if len(hex) == 3 { hex = fmt.Sprintf("%c%c%c%c%c%c", hex[0], hex[0], hex[1], hex[1], hex[2], hex[2])

@@ -44,14 +52,33 @@ c, _ := strconv.ParseUint(hex, 16, 32)

r := byte(c >> 16 & 0xff) g := byte(c >> 8 & 0xff) b := byte(c >> 0 & 0xff) + pixels[i][0] = r + pixels[i][1] = g + pixels[i][2] = b + pixels[i][3] = 255 + } + + h := 128 + w := h * 3 / 2 + img := image.NewRGBA(image.Rect(0, 0, w, h)) + if vert { for j := 0; j < w; j++ { - p := i*img.Stride + j*4 - img.Pix[p+0] = r - img.Pix[p+1] = g - img.Pix[p+2] = b - img.Pix[p+3] = 255 + pix := pixels[j*numcolors/w][:] + for i := 0; i < h; i++ { + p := i*img.Stride + j*4 + copy(img.Pix[p:], pix) + } + } + } else { + for i := 0; i < h; i++ { + pix := pixels[i*numcolors/h][:] + for j := 0; j < w; j++ { + p := i*img.Stride + j*4 + copy(img.Pix[p:], pix) + } } } + writer.Header().Set("Cache-Control", "max-age="+somedays()) png.Encode(writer, img) }