snapshot: a new debug tool

I might have finally hit on the right approach: a hotkey that dumps
information. Doesn't swamp me with data, and also doesn't perturb
anything.

y_of_schema1 returns consistent results as I pan around.
I'm just not actually printing the lines at that y. I'm printing it at
that y/Viewport.zoom.

What might be confusing here is that I started out with a simple mental
model:
  * perform computations in surface coordinates (sx,sy)
  * render in viewport coordinates (vx,vy)

But for text quality reasons I need to perform many computations in
"scaled surface" coordinates.

Viewport coordinates are both offset and scaled relative to surface
coordinates. Scaled surface = just scaled relative to surface, not
offset.

I don't have a clear mental model here for when to use this.

I did already use it in one place with my simple mental model: you have
to scale distances like rect.w and rect.h but it's incorrect to offset
them. Maybe I'm getting this wrong somehow.
This commit is contained in:
Kartik K. Agaram 2023-10-25 11:02:03 -07:00
parent 03c4f86ccd
commit 2f34ef4eb8
3 changed files with 14 additions and 3 deletions

View File

@ -14,6 +14,8 @@ on.keychord_press = function(chord, key)
-- reset zoom
Viewport.zoom = 1.0
A()
elseif chord == 'C-z' then
dump_state()
elseif Cursor_node and Cursor_node.editor.cursor_x then
local old_top = {line=Cursor_node.editor.screen_top1.line, pos=Cursor_node.editor.screen_top1.pos}
edit.keychord_press(Cursor_node.editor, chord, key)
@ -54,4 +56,4 @@ on.keychord_press = function(chord, key)
B()
end
end
end
end

View File

@ -8,11 +8,10 @@ update_editor_box = function(node)
node.editor.top = vy(node.y)
else
node.editor.screen_top1, node.editor.top = schema1_of_y(node.editor, Viewport.y-node.y)
print('update', Viewport.y-node.y+node.editor.top - y_of_schema1(node.editor, node.editor.screen_top1))
end
node.editor.left = math.floor(vx(node.x))
node.editor.right = math.ceil(vx(node.x+node.w))
node.editor.width = node.editor.right - node.editor.left
edit.update_font_settings(node.editor, scale(20))
Text.redraw_all(node.editor)
end
end

10
0034-dump_state Normal file
View File

@ -0,0 +1,10 @@
dump_state = function()
print('===')
print('zoom', Viewport.zoom)
print('viewport', Viewport.y)
print('node', Page.data[1].y)
print('node renders from', Page.data[1].editor.top)
print('screen top', Page.data[1].editor.screen_top1.line)
local l = 25
print('y of line', l, y_of_schema1(Page.data[1].editor, {line=l, pos=1}))
end