configurable image resolution by user

master
Bel LaPointe 2023-04-07 11:24:44 -06:00
parent 0db716e080
commit e2a948c6fa
5 changed files with 23 additions and 12 deletions

View File

@ -13,7 +13,7 @@ import (
"github.com/nfnt/resize"
)
func View(w io.Writer, p string) {
func ViewAt(w io.Writer, p string, resolution int) {
in, err := os.Open(p)
if err != nil {
panic(err)
@ -32,7 +32,7 @@ func View(w io.Writer, p string) {
if err != nil {
panic(err)
}
printImage(w, 40, src)
printImage(w, resolution, src)
fmt.Fprintln(w, "")
}

View File

@ -9,8 +9,8 @@ func TestView(t *testing.T) {
if os.Getenv("INTEGRATION") == "" {
t.SkipNow()
}
View(os.Stderr, "./testdata/tofugu.d/a-hiragana-0.png")
View(os.Stderr, "./testdata/tofugu.d/a-hiragana-0.sm.png")
View(os.Stderr, "./testdata/tofugu.d/a-hiragana-1.png")
View(os.Stderr, "./testdata/tofugu.d/a-hiragana-2.png")
ViewAt(os.Stderr, "./testdata/tofugu.d/a-hiragana-0.png", 20)
ViewAt(os.Stderr, "./testdata/tofugu.d/a-hiragana-0.sm.png", 20)
ViewAt(os.Stderr, "./testdata/tofugu.d/a-hiragana-1.png", 20)
ViewAt(os.Stderr, "./testdata/tofugu.d/a-hiragana-2.png", 20)
}

View File

@ -17,6 +17,7 @@ type (
LastAnswer(IDU, IDQ) (IDA, Answer)
Answer(IDA) Answer
PushAnswer(IDU, IDQ, Renderable, bool) error
UserResolution(IDU) int
Close()
}
Question struct {
@ -107,7 +108,7 @@ func Review(db DB, user IDU) ([]IDQ, error) {
func ReviewQ(db DB, user IDU, q IDQ) (string, string, error) {
question := db.Question(q)
fmt.Printf("> Q: %s\n", question.Q)
fmt.Printf("> Q: %s\n", question.Q.ToString(db.UserResolution(user)))
fmt.Printf("\n")
fmt.Printf("> %+v\n", question.Tags)
var response string
@ -121,7 +122,7 @@ func ReviewQ(db DB, user IDU, q IDQ) (string, string, error) {
default:
break
}
fmt.Printf("> %s", question.Clues[i])
fmt.Printf("> %s", question.Clues[i].ToString(db.UserResolution(user)))
if i+1 < len(question.Clues) {
fmt.Printf(" | /clue for another clue")
}
@ -171,12 +172,12 @@ func (q Question) Tagged(tag IDT) bool {
return false
}
func (renderable Renderable) String() string {
func (renderable Renderable) ToString(resolution int) string {
s := string(renderable)
if !strings.HasPrefix(s, "img:") {
return s
}
buff := bytes.NewBuffer(nil)
View(buff, s[4:])
ViewAt(buff, s[4:], resolution)
return string(buff.Bytes())
}

View File

@ -93,6 +93,7 @@ knowledge:
yu-katakana: {"q":"img:./testdata/tofugu.d/yu-katakana-0.png", "clues":["img:./testdata/tofugu.d/yu-katakana-1.png"], "tags": ["katakana"]}
users:
breel:
resolution: 60
tags:
assignments:
- hiragana

View File

@ -20,8 +20,9 @@ type (
Answers map[IDA]Answer
}
user struct {
Tags tags
Cadence duration
Tags tags
Cadence duration
Resolution int
}
tags struct {
Assignments []IDT
@ -98,6 +99,14 @@ func (db yamlDB) Next(user IDU, q IDQ) time.Time {
return SM2Next(last, log, db.cadence(user))
}
func (db yamlDB) UserResolution(user IDU) int {
u := db.Users[user]
if u.Resolution == 0 {
return 40
}
return u.Resolution
}
func (db yamlDB) cadence(user IDU) time.Duration {
u := db.Users[user]
if u.Cadence == 0 {