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" "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) in, err := os.Open(p)
if err != nil { if err != nil {
panic(err) panic(err)
@ -32,7 +32,7 @@ func View(w io.Writer, p string) {
if err != nil { if err != nil {
panic(err) panic(err)
} }
printImage(w, 40, src) printImage(w, resolution, src)
fmt.Fprintln(w, "") fmt.Fprintln(w, "")
} }

View File

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

View File

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

View File

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