mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-18 14:34:52 +02:00
Generalize code to get variable spec
This commit is contained in:
@@ -2,6 +2,7 @@ package choose_fonts
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"maps"
|
||||
"math"
|
||||
"strings"
|
||||
"sync"
|
||||
@@ -22,6 +23,23 @@ type face_panel struct {
|
||||
preview_cache_mutex sync.Mutex
|
||||
}
|
||||
|
||||
func (self *face_panel) variable_spec(named_style string, axis_overrides map[string]float64) string {
|
||||
ans := fmt.Sprintf(`family="%s" variable_name="%s"`, self.family, self.current_preview.Variable_data.Variations_postscript_name_prefix)
|
||||
if axis_overrides != nil {
|
||||
axis_values := self.current_preview.current_axis_values()
|
||||
maps.Copy(axis_values, axis_overrides)
|
||||
default_axis_values := self.current_preview.default_axis_values()
|
||||
for tag, val := range axis_values {
|
||||
if default_axis_values[tag] != val {
|
||||
ans += fmt.Sprintf(" %s=%g", tag, val)
|
||||
}
|
||||
}
|
||||
} else if named_style != "" {
|
||||
ans += fmt.Sprintf(" style=\"%s\"", named_style)
|
||||
}
|
||||
return ans
|
||||
}
|
||||
|
||||
func (self *face_panel) draw_variable_fine_tune(sz loop.ScreenSize, start_y int, preview RenderedSampleTransmit) (y int, err error) {
|
||||
s := styles_for_variable_data(preview.Variable_data)
|
||||
lines := []string{}
|
||||
@@ -175,8 +193,7 @@ func (self *face_panel) on_click(id string) (err error) {
|
||||
case "style":
|
||||
self.set(fmt.Sprintf(`family="%s" style="%s"`, self.family, val))
|
||||
case "variable_style":
|
||||
self.set(fmt.Sprintf(`family="%s" variable_name="%s" style="%s"`, self.family,
|
||||
self.current_preview.Variable_data.Variations_postscript_name_prefix, val))
|
||||
self.set(self.variable_spec(val, nil))
|
||||
}
|
||||
return self.handler.draw_screen()
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package choose_fonts
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"maps"
|
||||
"sync"
|
||||
)
|
||||
|
||||
@@ -95,6 +96,28 @@ type RenderedSampleTransmit struct {
|
||||
Variable_axis_map map[string]float64 `json:"variable_axis_map"`
|
||||
}
|
||||
|
||||
func (self RenderedSampleTransmit) default_axis_values() (ans map[string]float64) {
|
||||
ans = make(map[string]float64)
|
||||
for _, ax := range self.Variable_data.Axes {
|
||||
ans[ax.Tag] = ax.Default
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (self RenderedSampleTransmit) current_axis_values() (ans map[string]float64) {
|
||||
ans = make(map[string]float64)
|
||||
if self.Variable_named_style.Name != "" {
|
||||
maps.Copy(ans, self.Variable_named_style.Axis_values)
|
||||
} else {
|
||||
ans := make(map[string]float64)
|
||||
for _, ax := range self.Variable_data.Axes {
|
||||
ans[ax.Tag] = ax.Default
|
||||
}
|
||||
maps.Copy(ans, self.Variable_axis_map)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
var variable_data_cache map[string]VariableData
|
||||
var variable_data_cache_mutex sync.Mutex
|
||||
|
||||
|
||||
Reference in New Issue
Block a user