package mapblockrenderer

import (
	"bytes"
	"image/png"
	"mapserver/coords"
	"time"
)

type JobData struct {
	Pos1, Pos2 *coords.MapBlockCoords
}

type JobResult struct {
	Data     *bytes.Buffer
	Duration time.Duration
	Job      JobData
}

func Worker(r *MapBlockRenderer, jobs <-chan JobData, results chan<- JobResult) {
	for d := range jobs {
		img, _ := r.Render(d.Pos1, d.Pos2)

		w := new(bytes.Buffer)
		start := time.Now()

		if img != nil {
			png.Encode(w, img)
		}

		t := time.Now()
		elapsed := t.Sub(start)

		res := JobResult{Data: w, Duration: elapsed, Job: d}
		results <- res

	}
}