scenario: start out zoomed out so you can see all code on the surface press c-g so the camera zooms in
Before this commit we were seeing artifacts on the right margin.
The bugfix is a little hard to see with the current representation of code in freewheeling apps:
> minx,miny, maxx,maxy = minx-1,miny-1, maxx+2,maxy+1 ^ ^
Unclear why we need an extra pixel of padding on the right. Maybe some rounding effect?
EKAI7FKQV6ALBAFMJFEDIVNCWRKBE7PWLWRXM3NGYARPSQO5T22QC
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+2,maxy+1
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"Menu_highlight_color":614,"load_definition":854,"fw_app":"driver","add_hotkey_to_menu":616,"get_manifest":768,"draw_manifest_navigator":677,"scale":712,"test_approximate_up":983,"initialize_editor":678,"on.save_settings":742,"reset_manifest_navigator":772,"Save_viewport":865,"new_definition":848,"copy_viewport":866,"get_definition_from_app":784,"zoom_out":908,"table_and_array_both_empty":689,"Zoomed_out":869,"on.initialize":948,"manifest_navigator_up":628,"manifest_navigator_down":635,"load_manifest":694,"delete_definition":673,"Manifest_navigator":495,"move_candidate_to_front_of_manifest":632,"keychord_press_on_manifest_navigator":765,"text_input_on_manifest_navigator":634,"manifest_coord":636,"manifest_index":637,"manifest_navigator_candidates":638,"draw_cursor":639,"add_def_to_menu":640,"Cursor_node":172,"on_handle":547,"vx":545,"Viewport":604,"Definitions":503,"vy":956,"draw_run_time_error":808,"on.mouse_press":916,"survey_animation":1014,"mouse_cursor":558,"on.update":945,"Surface":422,"tick_spec":998,"on.key_release":720,"set_mouse_cursor":562,"add_thick_line":400,"draw_ticks":997,"copy_shape":396,"on.code_change":924,"Mouse_cursor":559,"on.mouse_release":836,"on":1,"sx":955,"sy":954,"line_height":365,"surface_bounds":814,"Manifest":769,"Page":475,"iscale":953,"order_of_magnitude":573,"approximate":579,"A":831,"Animating":842,"fw_parent":1013,"Spawn_point":822,"undo_zoom_out":921,"from_viewport":823,"maybe_update_key_in_definitions":529,"interpolate_viewport":843,"approximate_up":985,"Failing_test_definition_background_color":925,"load_from_iterator":670,"box_height":680,"y_of_schema1":364,"Ticks_font":669,"draw_load_time_error":929,"B":830,"draw_test_failure_indicator":935,"zoom_in":920,"draw_menu_bar":861,"on_text":539,"animate_next_frame":915,"on.code_submit":947,"font":353,"get_default_map":937,"compute_layout":385,"on.text_input":855,"Num_animation_frames":840,"on.keychord_press":919,"snapshot_canvas":913,"initialize_manifest_navigator":773,"animate_next":914,"num_lines_for_manifest_navigator":676,"on.draw":986,"on.load_settings":940,"update_editor_box":711,"get_multiple_definitions_from_app":783,"Definition_background_color":849,"schema1_of_y":667,"Menu_background_color":611,"wait_for_response":781,"Menu_border_color":612,"Test_definition_background_color":858,"Menu_command_color":613,"definition_background_color":859}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+2,maxy+1
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"delete_definition":673,"test_approximate_up":983,"move_candidate_to_front_of_manifest":632,"keychord_press_on_manifest_navigator":765,"snapshot_canvas":913,"text_input_on_manifest_navigator":634,"Save_viewport":865,"manifest_coord":636,"order_of_magnitude":573,"zoom_out":908,"manifest_navigator_candidates":638,"update_editor_box":711,"approximate":579,"fw_app":"driver","zoom_in":920,"initialize_manifest_navigator":773,"get_multiple_definitions_from_app":783,"wait_for_response":781,"Ticks_font":669,"tick_spec":998,"on.draw":986,"add_thick_line":400,"on.key_release":720,"draw_test_failure_indicator":935,"schema1_of_y":667,"load_definition":854,"on.code_submit":947,"Zoomed_out":869,"draw_run_time_error":808,"new_definition":848,"manifest_index":637,"Failing_test_definition_background_color":925,"undo_zoom_out":921,"survey_animation":1013,"copy_viewport":866,"animate_next":914,"draw_ticks":997,"vx":545,"initialize_editor":678,"Menu_border_color":612,"box_height":680,"Menu_command_color":613,"Page":475,"Menu_highlight_color":614,"Cursor_node":172,"Manifest_navigator":495,"on.update":945,"on.load_settings":940,"definition_background_color":859,"manifest_navigator_down":635,"Viewport":604,"surface_bounds":814,"num_lines_for_manifest_navigator":676,"table_and_array_both_empty":689,"Test_definition_background_color":858,"reset_manifest_navigator":772,"scale":712,"manifest_navigator_up":628,"on.mouse_press":916,"load_manifest":694,"Spawn_point":822,"Surface":422,"from_viewport":823,"on.save_settings":742,"on.keychord_press":919,"mouse_cursor":558,"get_definition_from_app":784,"draw_load_time_error":929,"load_from_iterator":670,"Definitions":503,"on.text_input":855,"on.initialize":948,"B":830,"A":831,"font":353,"y_of_schema1":364,"get_default_map":937,"animate_next_frame":915,"on_text":539,"draw_menu_bar":861,"draw_cursor":639,"Menu_background_color":611,"interpolate_viewport":843,"Num_animation_frames":840,"Animating":842,"maybe_update_key_in_definitions":529,"fw_parent":1012,"copy_shape":396,"add_hotkey_to_menu":616,"approximate_up":985,"add_def_to_menu":640,"compute_layout":385,"Definition_background_color":849,"iscale":953,"line_height":365,"Manifest":769,"sy":954,"set_mouse_cursor":562,"sx":955,"on":1,"vy":956,"on.mouse_release":836,"get_manifest":768,"on_handle":547,"Mouse_cursor":559,"on.code_change":924,"draw_manifest_navigator":677}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+1,maxy+1 -- maxy+19 works, +15 doesn't
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"get_default_map":937,"get_multiple_definitions_from_app":783,"wait_for_response":781,"draw_ticks":997,"schema1_of_y":667,"add_thick_line":400,"compute_layout":385,"on.draw":986,"iscale":953,"sy":954,"sx":955,"vy":956,"on.load_settings":940,"survey_animation":1012,"table_and_array_both_empty":689,"test_approximate_up":983,"approximate_up":985,"fw_parent":1011,"on":1,"fw_app":"driver","Ticks_font":669,"Cursor_node":172,"reset_manifest_navigator":772,"add_def_to_menu":640,"on.keychord_press":919,"Definition_background_color":849,"load_manifest":694,"maybe_update_key_in_definitions":529,"surface_bounds":814,"Mouse_cursor":559,"animate_next_frame":915,"Viewport":604,"add_hotkey_to_menu":616,"set_mouse_cursor":562,"Page":475,"line_height":365,"Manifest_navigator":495,"Spawn_point":822,"scale":712,"from_viewport":823,"Menu_background_color":611,"interpolate_viewport":843,"Menu_command_color":613,"order_of_magnitude":573,"get_manifest":768,"on_handle":547,"Menu_border_color":612,"on.mouse_release":836,"approximate":579,"B":830,"on_text":539,"Menu_highlight_color":614,"new_definition":848,"draw_menu_bar":861,"on.text_input":855,"box_height":680,"on.code_change":924,"on.mouse_press":916,"Definitions":503,"draw_manifest_navigator":677,"Num_animation_frames":840,"num_lines_for_manifest_navigator":676,"Animating":842,"vx":545,"font":353,"A":831,"on.save_settings":742,"load_from_iterator":670,"load_definition":854,"get_definition_from_app":784,"mouse_cursor":558,"draw_run_time_error":808,"on.initialize":948,"Surface":422,"manifest_navigator_up":628,"Test_definition_background_color":858,"manifest_navigator_down":635,"definition_background_color":859,"initialize_editor":678,"delete_definition":673,"on.update":945,"move_candidate_to_front_of_manifest":632,"update_editor_box":711,"keychord_press_on_manifest_navigator":765,"draw_cursor":639,"text_input_on_manifest_navigator":634,"copy_shape":396,"animate_next":914,"manifest_coord":636,"snapshot_canvas":913,"y_of_schema1":364,"Save_viewport":865,"manifest_navigator_candidates":638,"copy_viewport":866,"undo_zoom_out":921,"Failing_test_definition_background_color":925,"zoom_out":908,"manifest_index":637,"Zoomed_out":869,"on.code_submit":947,"draw_load_time_error":929,"tick_spec":998,"draw_test_failure_indicator":935,"on.key_release":720,"zoom_in":920,"Manifest":769,"initialize_manifest_navigator":773}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+2,maxy+1 -- maxy+19 works, +15 doesn't
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"load_from_iterator":670,"Manifest":769,"draw_load_time_error":929,"draw_test_failure_indicator":935,"manifest_navigator_up":628,"on_handle":547,"surface_bounds":814,"compute_layout":385,"on_text":539,"keychord_press_on_manifest_navigator":765,"text_input_on_manifest_navigator":634,"Spawn_point":822,"manifest_coord":636,"Viewport":604,"manifest_index":637,"interpolate_viewport":843,"manifest_navigator_candidates":638,"on.code_submit":947,"iscale":953,"on.text_input":855,"sy":954,"B":830,"sx":955,"mouse_cursor":558,"vy":956,"Mouse_cursor":559,"set_mouse_cursor":562,"get_multiple_definitions_from_app":783,"on.mouse_release":836,"Num_animation_frames":840,"approximate":579,"wait_for_response":781,"on.keychord_press":919,"tick_spec":998,"order_of_magnitude":573,"on.draw":986,"y_of_schema1":364,"fw_parent":1010,"Test_definition_background_color":858,"fw_app":"driver","definition_background_color":859,"move_candidate_to_front_of_manifest":632,"draw_run_time_error":808,"on.save_settings":742,"box_height":680,"on.load_settings":940,"delete_definition":673,"survey_animation":1011,"draw_ticks":997,"animate_next":914,"manifest_navigator_down":635,"table_and_array_both_empty":689,"snapshot_canvas":913,"on.mouse_press":916,"Save_viewport":865,"on.initialize":948,"copy_viewport":866,"approximate_up":985,"font":353,"zoom_out":908,"get_definition_from_app":784,"Zoomed_out":869,"Ticks_font":669,"on.code_change":924,"get_default_map":937,"undo_zoom_out":921,"add_thick_line":400,"zoom_in":920,"copy_shape":396,"draw_cursor":639,"update_editor_box":711,"schema1_of_y":667,"on.update":945,"initialize_editor":678,"Surface":422,"on.key_release":720,"load_definition":854,"A":831,"vx":545,"on":1,"Animating":842,"load_manifest":694,"animate_next_frame":915,"Definitions":503,"Failing_test_definition_background_color":925,"from_viewport":823,"line_height":365,"Menu_background_color":611,"scale":712,"Menu_border_color":612,"get_manifest":768,"Menu_command_color":613,"new_definition":848,"Menu_highlight_color":614,"Manifest_navigator":495,"draw_menu_bar":861,"Page":475,"add_hotkey_to_menu":616,"initialize_manifest_navigator":773,"maybe_update_key_in_definitions":529,"draw_manifest_navigator":677,"test_approximate_up":983,"num_lines_for_manifest_navigator":676,"Definition_background_color":849,"add_def_to_menu":640,"reset_manifest_navigator":772,"Cursor_node":172}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+10,maxy+1 -- maxy+19 works, +15 doesn't
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"B":830,"text_input_on_manifest_navigator":634,"sy":954,"sx":955,"vy":956,"order_of_magnitude":573,"manifest_navigator_candidates":638,"scale":712,"add_def_to_menu":640,"approximate":579,"test_approximate_up":983,"vx":545,"Viewport":604,"draw_ticks":997,"Definition_background_color":849,"Test_definition_background_color":858,"definition_background_color":859,"approximate_up":985,"Page":475,"tick_spec":998,"update_editor_box":711,"snapshot_canvas":913,"Save_viewport":865,"copy_viewport":866,"Menu_background_color":611,"add_thick_line":400,"zoom_out":908,"copy_shape":396,"load_definition":854,"Zoomed_out":869,"Menu_border_color":612,"zoom_in":920,"Menu_command_color":613,"draw_load_time_error":929,"Menu_highlight_color":614,"compute_layout":385,"initialize_manifest_navigator":773,"num_lines_for_manifest_navigator":676,"on.save_settings":742,"initialize_editor":678,"on.load_settings":940,"reset_manifest_navigator":772,"get_multiple_definitions_from_app":783,"on_handle":547,"on.keychord_press":919,"on.code_submit":947,"wait_for_response":781,"on.mouse_release":836,"on_text":539,"get_manifest":768,"draw_manifest_navigator":677,"iscale":953,"draw_cursor":639,"Num_animation_frames":840,"on.draw":986,"Surface":422,"Manifest_navigator":495,"set_mouse_cursor":562,"new_definition":848,"Manifest":769,"Definitions":503,"Ticks_font":669,"A":831,"draw_run_time_error":808,"table_and_array_both_empty":689,"fw_app":"driver","maybe_update_key_in_definitions":529,"line_height":365,"survey_animation":1010,"interpolate_viewport":843,"animate_next":914,"from_viewport":823,"load_manifest":694,"Spawn_point":822,"schema1_of_y":667,"Failing_test_definition_background_color":925,"animate_next_frame":915,"Animating":842,"on.mouse_press":916,"add_hotkey_to_menu":616,"on.key_release":720,"Cursor_node":172,"draw_test_failure_indicator":935,"manifest_index":637,"fw_parent":1009,"on.update":945,"surface_bounds":814,"y_of_schema1":364,"undo_zoom_out":921,"get_default_map":937,"load_from_iterator":670,"on.code_change":924,"get_definition_from_app":784,"font":353,"manifest_coord":636,"on.initialize":948,"on":1,"manifest_navigator_up":628,"mouse_cursor":558,"manifest_navigator_down":635,"Mouse_cursor":559,"draw_menu_bar":861,"delete_definition":673,"box_height":680,"move_candidate_to_front_of_manifest":632,"on.text_input":855,"keychord_press_on_manifest_navigator":765}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+100,maxy+1 -- maxy+19 works, +15 doesn't
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"Menu_border_color":612,"Menu_command_color":613,"Page":475,"Menu_highlight_color":614,"add_hotkey_to_menu":616,"keychord_press_on_manifest_navigator":765,"undo_zoom_out":921,"initialize_manifest_navigator":773,"Failing_test_definition_background_color":925,"get_multiple_definitions_from_app":783,"draw_cursor":639,"manifest_navigator_up":628,"draw_test_failure_indicator":935,"manifest_navigator_down":635,"maybe_update_key_in_definitions":529,"move_candidate_to_front_of_manifest":632,"on.initialize":948,"get_default_map":937,"on.key_release":720,"compute_layout":385,"manifest_coord":636,"manifest_index":637,"manifest_navigator_candidates":638,"add_def_to_menu":640,"y_of_schema1":364,"tick_spec":998,"on_handle":547,"iscale":953,"draw_ticks":997,"sy":954,"sx":955,"vy":956,"Zoomed_out":869,"Manifest_navigator":495,"snapshot_canvas":913,"draw_run_time_error":808,"wait_for_response":781,"on.draw":986,"Test_definition_background_color":858,"test_approximate_up":983,"survey_animation":1009,"delete_definition":673,"animate_next":914,"load_definition":854,"copy_viewport":866,"fw_parent":1008,"update_editor_box":711,"fw_app":"driver","animate_next_frame":915,"box_height":680,"on":1,"add_thick_line":400,"draw_menu_bar":861,"on.update":945,"on.save_settings":742,"on.keychord_press":919,"on.load_settings":940,"get_definition_from_app":784,"surface_bounds":814,"Animating":842,"zoom_out":908,"Save_viewport":865,"table_and_array_both_empty":689,"order_of_magnitude":573,"on.mouse_press":916,"schema1_of_y":667,"approximate_up":985,"Spawn_point":822,"load_manifest":694,"from_viewport":823,"Definition_background_color":849,"interpolate_viewport":843,"on.mouse_release":836,"font":353,"get_manifest":768,"approximate":579,"definition_background_color":859,"Mouse_cursor":559,"B":830,"on.code_change":924,"A":831,"Ticks_font":669,"Definitions":503,"Manifest":769,"initialize_editor":678,"set_mouse_cursor":562,"on.text_input":855,"copy_shape":396,"Surface":422,"Num_animation_frames":840,"Cursor_node":172,"draw_manifest_navigator":677,"vx":545,"num_lines_for_manifest_navigator":676,"line_height":365,"on.code_submit":947,"reset_manifest_navigator":772,"new_definition":848,"on_text":539,"load_from_iterator":670,"Viewport":604,"draw_load_time_error":929,"zoom_in":920,"text_input_on_manifest_navigator":634,"mouse_cursor":558,"Menu_background_color":611,"scale":712}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+1,maxy+19
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"draw_cursor":639,"Manifest":769,"line_height":365,"Menu_background_color":611,"Menu_border_color":612,"Cursor_node":172,"Surface":422,"add_thick_line":400,"Menu_highlight_color":614,"copy_shape":396,"vx":545,"add_hotkey_to_menu":616,"on.code_submit":947,"draw_manifest_navigator":677,"num_lines_for_manifest_navigator":676,"on.load_settings":940,"maybe_update_key_in_definitions":529,"sy":954,"initialize_manifest_navigator":773,"load_from_iterator":670,"Page":475,"get_definition_from_app":784,"box_height":680,"draw_ticks":997,"get_multiple_definitions_from_app":783,"Definition_background_color":849,"manifest_navigator_up":628,"tick_spec":998,"manifest_navigator_down":635,"font":353,"Viewport":604,"delete_definition":673,"undo_zoom_out":921,"move_candidate_to_front_of_manifest":632,"on_handle":547,"keychord_press_on_manifest_navigator":765,"on.draw":986,"text_input_on_manifest_navigator":634,"on.mouse_press":916,"on_text":539,"manifest_coord":636,"test_approximate_up":983,"draw_load_time_error":929,"fw_parent":1007,"manifest_navigator_candidates":638,"draw_run_time_error":808,"Num_animation_frames":840,"add_def_to_menu":640,"compute_layout":385,"zoom_in":920,"survey_animation":1008,"get_default_map":937,"on.update":945,"y_of_schema1":364,"load_definition":854,"zoom_out":908,"on.key_release":720,"load_manifest":694,"on.keychord_press":919,"mouse_cursor":558,"scale":712,"Mouse_cursor":559,"B":830,"fw_app":"driver","on.text_input":855,"set_mouse_cursor":562,"initialize_editor":678,"interpolate_viewport":843,"iscale":953,"on":1,"from_viewport":823,"update_editor_box":711,"Definitions":503,"sx":955,"Ticks_font":669,"vy":956,"schema1_of_y":667,"animate_next":914,"A":831,"Menu_command_color":613,"on.code_change":924,"new_definition":848,"order_of_magnitude":573,"animate_next_frame":915,"Animating":842,"definition_background_color":859,"manifest_index":637,"approximate":579,"get_manifest":768,"on.mouse_release":836,"Failing_test_definition_background_color":925,"draw_test_failure_indicator":935,"reset_manifest_navigator":772,"surface_bounds":814,"wait_for_response":781,"on.save_settings":742,"approximate_up":985,"snapshot_canvas":913,"Test_definition_background_color":858,"Save_viewport":865,"draw_menu_bar":861,"copy_viewport":866,"Spawn_point":822,"table_and_array_both_empty":689,"Manifest_navigator":495,"on.initialize":948,"Zoomed_out":869}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+1,maxy+19
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"draw_cursor":639,"Manifest":769,"line_height":365,"Menu_background_color":611,"Menu_border_color":612,"Cursor_node":172,"Surface":422,"add_thick_line":400,"Menu_highlight_color":614,"copy_shape":396,"vx":545,"add_hotkey_to_menu":616,"on.code_submit":947,"draw_manifest_navigator":677,"num_lines_for_manifest_navigator":676,"on.load_settings":940,"maybe_update_key_in_definitions":529,"sy":954,"initialize_manifest_navigator":773,"load_from_iterator":670,"Page":475,"get_definition_from_app":784,"box_height":680,"draw_ticks":997,"get_multiple_definitions_from_app":783,"Definition_background_color":849,"manifest_navigator_up":628,"tick_spec":998,"manifest_navigator_down":635,"font":353,"Viewport":604,"delete_definition":673,"undo_zoom_out":921,"move_candidate_to_front_of_manifest":632,"on_handle":547,"keychord_press_on_manifest_navigator":765,"on.draw":986,"text_input_on_manifest_navigator":634,"on.mouse_press":916,"on_text":539,"manifest_coord":636,"test_approximate_up":983,"draw_load_time_error":929,"fw_parent":1006,"manifest_navigator_candidates":638,"draw_run_time_error":808,"Num_animation_frames":840,"add_def_to_menu":640,"compute_layout":385,"zoom_in":920,"survey_animation":1007,"get_default_map":937,"on.update":945,"y_of_schema1":364,"load_definition":854,"zoom_out":908,"on.key_release":720,"load_manifest":694,"on.keychord_press":919,"mouse_cursor":558,"scale":712,"Mouse_cursor":559,"B":830,"fw_app":"driver","on.text_input":855,"set_mouse_cursor":562,"initialize_editor":678,"interpolate_viewport":843,"iscale":953,"on":1,"from_viewport":823,"update_editor_box":711,"Definitions":503,"sx":955,"Ticks_font":669,"vy":956,"schema1_of_y":667,"animate_next":914,"A":831,"Menu_command_color":613,"on.code_change":924,"new_definition":848,"order_of_magnitude":573,"animate_next_frame":915,"Animating":842,"definition_background_color":859,"manifest_index":637,"approximate":579,"get_manifest":768,"on.mouse_release":836,"Failing_test_definition_background_color":925,"draw_test_failure_indicator":935,"reset_manifest_navigator":772,"surface_bounds":814,"wait_for_response":781,"on.save_settings":742,"approximate_up":985,"snapshot_canvas":913,"Test_definition_background_color":858,"Save_viewport":865,"draw_menu_bar":861,"copy_viewport":866,"Spawn_point":822,"table_and_array_both_empty":689,"Manifest_navigator":495,"on.initialize":948,"Zoomed_out":869}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+1,maxy+20
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"Menu_background_color":611,"on.code_change":924,"Menu_border_color":612,"table_and_array_both_empty":689,"Test_definition_background_color":858,"definition_background_color":859,"add_hotkey_to_menu":616,"Surface":422,"maybe_update_key_in_definitions":529,"vx":545,"Save_viewport":865,"manifest_navigator_down":635,"initialize_editor":678,"zoom_out":908,"move_candidate_to_front_of_manifest":632,"Zoomed_out":869,"text_input_on_manifest_navigator":634,"line_height":365,"manifest_coord":636,"Page":475,"manifest_index":637,"manifest_navigator_candidates":638,"scale":712,"on_text":539,"add_def_to_menu":640,"get_multiple_definitions_from_app":783,"Manifest":769,"undo_zoom_out":921,"wait_for_response":781,"fw_parent":1005,"get_manifest":768,"Failing_test_definition_background_color":925,"on":1,"Animating":842,"on.draw":986,"draw_load_time_error":929,"draw_run_time_error":808,"draw_test_failure_indicator":935,"new_definition":848,"draw_menu_bar":861,"mouse_cursor":558,"Menu_highlight_color":614,"Mouse_cursor":559,"compute_layout":385,"get_default_map":937,"on.code_submit":947,"num_lines_for_manifest_navigator":676,"Menu_command_color":613,"survey_animation":1006,"Definitions":503,"animate_next":914,"reset_manifest_navigator":772,"load_from_iterator":670,"approximate":579,"get_definition_from_app":784,"draw_manifest_navigator":677,"order_of_magnitude":573,"on.initialize":948,"Manifest_navigator":495,"fw_app":"driver","initialize_manifest_navigator":773,"iscale":953,"animate_next_frame":915,"on_handle":547,"delete_definition":673,"set_mouse_cursor":562,"sx":955,"manifest_navigator_up":628,"keychord_press_on_manifest_navigator":765,"copy_viewport":866,"draw_cursor":639,"font":353,"y_of_schema1":364,"on.key_release":720,"Ticks_font":669,"Spawn_point":822,"surface_bounds":814,"from_viewport":823,"snapshot_canvas":913,"interpolate_viewport":843,"on.save_settings":742,"copy_shape":396,"load_manifest":694,"on.mouse_press":916,"add_thick_line":400,"on.text_input":855,"approximate_up":985,"B":830,"on.mouse_release":836,"on.keychord_press":919,"Viewport":604,"vy":956,"update_editor_box":711,"Cursor_node":172,"load_definition":854,"schema1_of_y":667,"on.update":945,"zoom_in":920,"Num_animation_frames":840,"test_approximate_up":983,"A":831,"tick_spec":998,"Definition_background_color":849,"draw_ticks":997,"box_height":680,"sy":954,"on.load_settings":940}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+1,maxy+15
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"add_hotkey_to_menu":616,"iscale":953,"on.update":945,"sy":954,"reset_manifest_navigator":772,"survey_animation":1005,"load_from_iterator":670,"animate_next":914,"get_definition_from_app":784,"Viewport":604,"line_height":365,"add_thick_line":400,"test_approximate_up":983,"copy_shape":396,"manifest_navigator_down":635,"Manifest":769,"fw_parent":1004,"on.mouse_press":916,"load_manifest":694,"on.mouse_release":836,"keychord_press_on_manifest_navigator":765,"surface_bounds":814,"on.keychord_press":919,"manifest_coord":636,"Save_viewport":865,"new_definition":848,"manifest_navigator_candidates":638,"Spawn_point":822,"add_def_to_menu":640,"Zoomed_out":869,"zoom_in":920,"B":830,"initialize_editor":678,"maybe_update_key_in_definitions":529,"scale":712,"on.draw":986,"box_height":680,"move_candidate_to_front_of_manifest":632,"Num_animation_frames":840,"tick_spec":998,"vy":956,"manifest_index":637,"Surface":422,"schema1_of_y":667,"on.code_change":924,"on.text_input":855,"vx":545,"order_of_magnitude":573,"Definitions":503,"Definition_background_color":849,"on_handle":547,"update_editor_box":711,"Test_definition_background_color":858,"interpolate_viewport":843,"load_definition":854,"on_text":539,"definition_background_color":859,"font":353,"on":1,"from_viewport":823,"Page":475,"sx":955,"delete_definition":673,"on.load_settings":940,"zoom_out":908,"on.save_settings":742,"snapshot_canvas":913,"approximate_up":985,"num_lines_for_manifest_navigator":676,"Failing_test_definition_background_color":925,"mouse_cursor":558,"on.key_release":720,"Ticks_font":669,"table_and_array_both_empty":689,"undo_zoom_out":921,"on.initialize":948,"draw_cursor":639,"Mouse_cursor":559,"copy_viewport":866,"get_manifest":768,"manifest_navigator_up":628,"set_mouse_cursor":562,"draw_ticks":997,"animate_next_frame":915,"draw_load_time_error":929,"initialize_manifest_navigator":773,"draw_test_failure_indicator":935,"text_input_on_manifest_navigator":634,"compute_layout":385,"fw_app":"driver","Manifest_navigator":495,"get_multiple_definitions_from_app":783,"y_of_schema1":364,"get_default_map":937,"draw_manifest_navigator":677,"wait_for_response":781,"approximate":579,"Menu_background_color":611,"Cursor_node":172,"Menu_border_color":612,"A":831,"Menu_command_color":613,"on.code_submit":947,"Menu_highlight_color":614,"draw_run_time_error":808,"draw_menu_bar":861,"Animating":842}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+1,maxy+25
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"approximate_up":985,"iscale":953,"Viewport":604,"sy":954,"Ticks_font":669,"Manifest_navigator":495,"Definition_background_color":849,"on.mouse_release":836,"test_approximate_up":983,"on.keychord_press":919,"definition_background_color":859,"on.code_submit":947,"tick_spec":998,"Menu_background_color":611,"Menu_border_color":612,"Menu_command_color":613,"Surface":422,"Menu_highlight_color":614,"schema1_of_y":667,"draw_menu_bar":861,"Zoomed_out":869,"add_hotkey_to_menu":616,"new_definition":848,"draw_manifest_navigator":677,"num_lines_for_manifest_navigator":676,"load_definition":854,"get_multiple_definitions_from_app":783,"reset_manifest_navigator":772,"add_thick_line":400,"maybe_update_key_in_definitions":529,"load_from_iterator":670,"Page":475,"get_definition_from_app":784,"vx":545,"on.mouse_press":916,"initialize_manifest_navigator":773,"on.save_settings":742,"manifest_navigator_up":628,"on.load_settings":940,"manifest_navigator_down":635,"Manifest":769,"Cursor_node":172,"delete_definition":673,"fw_parent":1003,"move_candidate_to_front_of_manifest":632,"fw_app":"driver","on.initialize":948,"on_handle":547,"text_input_on_manifest_navigator":634,"add_def_to_menu":640,"get_manifest":768,"manifest_coord":636,"load_manifest":694,"draw_run_time_error":808,"sx":955,"manifest_navigator_candidates":638,"Save_viewport":865,"on.update":945,"survey_animation":1004,"compute_layout":385,"animate_next":914,"font":353,"zoom_in":920,"Mouse_cursor":559,"table_and_array_both_empty":689,"get_default_map":937,"animate_next_frame":915,"y_of_schema1":364,"zoom_out":908,"wait_for_response":781,"copy_viewport":866,"on_text":539,"undo_zoom_out":921,"draw_cursor":639,"on.key_release":720,"mouse_cursor":558,"surface_bounds":814,"Failing_test_definition_background_color":925,"Animating":842,"snapshot_canvas":913,"scale":712,"set_mouse_cursor":562,"draw_load_time_error":929,"draw_ticks":997,"draw_test_failure_indicator":935,"Spawn_point":822,"copy_shape":396,"from_viewport":823,"on":1,"interpolate_viewport":843,"Test_definition_background_color":858,"update_editor_box":711,"Definitions":503,"order_of_magnitude":573,"B":830,"on.text_input":855,"on.code_change":924,"initialize_editor":678,"approximate":579,"manifest_index":637,"vy":956,"line_height":365,"Num_animation_frames":840,"A":831,"box_height":680,"on.draw":986,"keychord_press_on_manifest_navigator":765}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+1,maxy+50
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"copy_shape":396,"load_definition":854,"Animating":842,"approximate":579,"initialize_editor":678,"box_height":680,"on.save_settings":742,"draw_cursor":639,"sy":954,"Ticks_font":669,"draw_run_time_error":808,"survey_animation":1003,"animate_next":914,"animate_next_frame":915,"on.text_input":855,"undo_zoom_out":921,"load_manifest":694,"on.initialize":948,"get_manifest":768,"A":831,"Failing_test_definition_background_color":925,"fw_app":"driver","surface_bounds":814,"Menu_background_color":611,"Definitions":503,"iscale":953,"draw_test_failure_indicator":935,"Menu_command_color":613,"on.code_submit":947,"Menu_highlight_color":614,"draw_load_time_error":929,"Spawn_point":822,"B":830,"from_viewport":823,"vy":956,"interpolate_viewport":843,"draw_manifest_navigator":677,"test_approximate_up":983,"num_lines_for_manifest_navigator":676,"on.code_change":924,"manifest_navigator_candidates":638,"maybe_update_key_in_definitions":529,"manifest_index":637,"Viewport":604,"load_from_iterator":670,"approximate_up":985,"get_definition_from_app":784,"manifest_coord":636,"line_height":365,"Surface":422,"Num_animation_frames":840,"manifest_navigator_up":628,"Manifest_navigator":495,"manifest_navigator_down":635,"on.draw":986,"keychord_press_on_manifest_navigator":765,"delete_definition":673,"on.keychord_press":919,"move_candidate_to_front_of_manifest":632,"new_definition":848,"on_handle":547,"Page":475,"text_input_on_manifest_navigator":634,"fw_parent":1002,"on":1,"Test_definition_background_color":858,"update_editor_box":711,"definition_background_color":859,"order_of_magnitude":573,"compute_layout":385,"on.mouse_release":836,"on.update":945,"add_def_to_menu":640,"sx":955,"Menu_border_color":612,"schema1_of_y":667,"add_hotkey_to_menu":616,"on.load_settings":940,"scale":712,"snapshot_canvas":913,"get_default_map":937,"on.key_release":720,"on_text":539,"copy_viewport":866,"wait_for_response":781,"font":353,"zoom_out":908,"reset_manifest_navigator":772,"Zoomed_out":869,"y_of_schema1":364,"mouse_cursor":558,"table_and_array_both_empty":689,"Mouse_cursor":559,"tick_spec":998,"zoom_in":920,"Save_viewport":865,"set_mouse_cursor":562,"draw_menu_bar":861,"draw_ticks":997,"Cursor_node":172,"Manifest":769,"initialize_manifest_navigator":773,"on.mouse_press":916,"vx":545,"Definition_background_color":849,"add_thick_line":400,"get_multiple_definitions_from_app":783}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+1,maxy+10
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"draw_test_failure_indicator":935,"interpolate_viewport":843,"on.code_submit":947,"Manifest":769,"compute_layout":385,"load_manifest":694,"get_manifest":768,"initialize_manifest_navigator":773,"on.text_input":855,"update_editor_box":711,"Definitions":503,"Num_animation_frames":840,"wait_for_response":781,"schema1_of_y":667,"Definition_background_color":849,"y_of_schema1":364,"test_approximate_up":983,"scale":712,"Cursor_node":172,"Test_definition_background_color":858,"box_height":680,"draw_run_time_error":808,"sx":955,"Menu_border_color":612,"load_definition":854,"Menu_command_color":613,"survey_animation":1002,"Menu_highlight_color":614,"animate_next":914,"draw_menu_bar":861,"sy":954,"add_hotkey_to_menu":616,"snapshot_canvas":913,"table_and_array_both_empty":689,"Save_viewport":865,"num_lines_for_manifest_navigator":676,"copy_viewport":866,"animate_next_frame":915,"iscale":953,"reset_manifest_navigator":772,"Menu_background_color":611,"Zoomed_out":869,"load_from_iterator":670,"on.mouse_press":916,"surface_bounds":814,"tick_spec":998,"add_thick_line":400,"zoom_in":920,"copy_shape":396,"manifest_navigator_up":628,"vx":545,"manifest_navigator_down":635,"draw_cursor":639,"Spawn_point":822,"delete_definition":673,"from_viewport":823,"on.key_release":720,"definition_background_color":859,"Mouse_cursor":559,"on_handle":547,"fw_app":"driver","maybe_update_key_in_definitions":529,"get_multiple_definitions_from_app":783,"Animating":842,"font":353,"mouse_cursor":558,"on_text":539,"line_height":365,"get_default_map":937,"on.draw":986,"on.load_settings":940,"set_mouse_cursor":562,"move_candidate_to_front_of_manifest":632,"draw_ticks":997,"on.code_change":924,"get_definition_from_app":784,"text_input_on_manifest_navigator":634,"B":830,"initialize_editor":678,"A":831,"on":1,"on.mouse_release":836,"order_of_magnitude":573,"on.update":945,"fw_parent":1001,"on.keychord_press":919,"undo_zoom_out":921,"approximate":579,"new_definition":848,"Page":475,"keychord_press_on_manifest_navigator":765,"Manifest_navigator":495,"Surface":422,"Viewport":604,"on.save_settings":742,"manifest_coord":636,"approximate_up":985,"manifest_index":637,"draw_manifest_navigator":677,"manifest_navigator_candidates":638,"Failing_test_definition_background_color":925,"Ticks_font":669,"add_def_to_menu":640,"vy":956,"on.initialize":948,"draw_load_time_error":929,"zoom_out":908}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+1,maxy+100
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"vy":956,"surface_bounds":814,"on.save_settings":742,"test_approximate_up":983,"on.load_settings":940,"order_of_magnitude":573,"Spawn_point":822,"from_viewport":823,"schema1_of_y":667,"interpolate_viewport":843,"approximate_up":985,"on.text_input":855,"Ticks_font":669,"B":830,"draw_cursor":639,"table_and_array_both_empty":689,"Num_animation_frames":840,"on.mouse_press":916,"new_definition":848,"Manifest_navigator":495,"fw_parent":1000,"font":353,"line_height":365,"on.keychord_press":919,"box_height":680,"load_manifest":694,"Definition_background_color":849,"get_manifest":768,"on.key_release":720,"Surface":422,"vx":545,"draw_manifest_navigator":677,"on.update":945,"definition_background_color":859,"Test_definition_background_color":858,"Viewport":604,"on.initialize":948,"Manifest":769,"A":831,"add_hotkey_to_menu":616,"set_mouse_cursor":562,"get_definition_from_app":784,"add_thick_line":400,"Definitions":503,"on.code_change":924,"snapshot_canvas":913,"manifest_navigator_up":628,"Save_viewport":865,"Page":475,"copy_viewport":866,"manifest_navigator_down":635,"scale":712,"zoom_out":908,"on.code_submit":947,"Zoomed_out":869,"Menu_border_color":612,"manifest_coord":636,"Menu_command_color":613,"manifest_index":637,"Menu_highlight_color":614,"reset_manifest_navigator":772,"copy_shape":396,"initialize_manifest_navigator":773,"Animating":842,"manifest_navigator_candidates":638,"undo_zoom_out":921,"draw_test_failure_indicator":935,"add_def_to_menu":640,"get_multiple_definitions_from_app":783,"draw_menu_bar":861,"Failing_test_definition_background_color":925,"initialize_editor":678,"wait_for_response":781,"keychord_press_on_manifest_navigator":765,"text_input_on_manifest_navigator":634,"draw_load_time_error":929,"compute_layout":385,"on_handle":547,"move_candidate_to_front_of_manifest":632,"on":1,"on.draw":986,"get_default_map":937,"on_text":539,"delete_definition":673,"approximate":579,"on.mouse_release":836,"maybe_update_key_in_definitions":529,"fw_app":"driver","update_editor_box":711,"draw_run_time_error":808,"Cursor_node":172,"draw_ticks":997,"Mouse_cursor":559,"mouse_cursor":558,"survey_animation":1001,"num_lines_for_manifest_navigator":676,"animate_next":914,"y_of_schema1":364,"tick_spec":998,"Menu_background_color":611,"load_from_iterator":670,"iscale":953,"animate_next_frame":915,"zoom_in":920,"sy":954,"load_definition":854,"sx":955}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+1,maxy+1
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"sy":954,"mouse_cursor":558,"sx":955,"Mouse_cursor":559,"vy":956,"draw_ticks":997,"Definition_background_color":849,"test_approximate_up":983,"draw_cursor":639,"update_editor_box":711,"order_of_magnitude":573,"approximate":579,"schema1_of_y":667,"snapshot_canvas":913,"scale":712,"Save_viewport":865,"on.code_submit":947,"Ticks_font":669,"fw_parent":999,"Zoomed_out":869,"tick_spec":998,"initialize_manifest_navigator":773,"zoom_in":920,"get_multiple_definitions_from_app":783,"A":831,"Manifest_navigator":495,"on.save_settings":742,"wait_for_response":781,"font":353,"on":1,"load_definition":854,"Surface":422,"Num_animation_frames":840,"Page":475,"Viewport":604,"on.draw":986,"y_of_schema1":364,"Menu_background_color":611,"survey_animation":1000,"Menu_border_color":612,"line_height":365,"Menu_command_color":613,"on.mouse_press":916,"Menu_highlight_color":614,"draw_run_time_error":808,"draw_menu_bar":861,"on.update":945,"add_hotkey_to_menu":616,"on.keychord_press":919,"Definitions":503,"draw_manifest_navigator":677,"animate_next":914,"num_lines_for_manifest_navigator":676,"on.initialize":948,"get_manifest":768,"reset_manifest_navigator":772,"load_manifest":694,"animate_next_frame":915,"load_from_iterator":670,"definition_background_color":859,"get_definition_from_app":784,"on_text":539,"from_viewport":823,"on.text_input":855,"fw_app":"driver","maybe_update_key_in_definitions":529,"on.mouse_release":836,"copy_shape":396,"undo_zoom_out":921,"on_handle":547,"delete_definition":673,"get_default_map":937,"move_candidate_to_front_of_manifest":632,"Failing_test_definition_background_color":925,"keychord_press_on_manifest_navigator":765,"initialize_editor":678,"text_input_on_manifest_navigator":634,"compute_layout":385,"draw_load_time_error":929,"manifest_coord":636,"draw_test_failure_indicator":935,"manifest_index":637,"Animating":842,"manifest_navigator_candidates":638,"interpolate_viewport":843,"on.key_release":720,"add_def_to_menu":640,"Cursor_node":172,"B":830,"manifest_navigator_down":635,"Spawn_point":822,"new_definition":848,"on.load_settings":940,"surface_bounds":814,"vx":545,"on.code_change":924,"add_thick_line":400,"set_mouse_cursor":562,"zoom_out":908,"approximate_up":985,"Manifest":769,"Test_definition_background_color":858,"manifest_navigator_up":628,"box_height":680,"iscale":953,"copy_viewport":866,"table_and_array_both_empty":689}
survey_animation = function()
---[[ '--' at start to disable animation, '---' to enable
local minx, miny, maxx, maxy = surface_bounds(Definitions)
print('bounds', minx,miny, maxx, maxy)
-- ensure 1px of white background all around
-- just in case the viewport ever goes
-- outside canvas bounds while animating
minx,miny, maxx,maxy = minx-1,miny-1, maxx+1,maxx+100
local zoomx = App.screen.width/(maxx-minx)
local zoomy = App.screen.height/(maxy-miny)
local zoom, cw, ch
if zoomx < zoomy then
zoom = zoomx
cw = maxx-minx
ch = cw*App.screen.height/App.screen.width
else
zoom = zoomy
ch = maxy-miny
cw = ch*App.screen.width/App.screen.height
end
Global_viewport = {x=minx, y=miny, w=cw, h=ch, zoom=zoom}
print('bounds 2', minx, miny, cw, ch)
snapshot_canvas()
-- initialize animation
Animating = {
copy_viewport(Global_viewport),
copy_viewport(Viewport),
}
Viewport.x = -App.screen.width/2
Viewport.y = -App.screen.height/2
Viewport.w = App.screen.width
Viewport.h = App.screen.height
Viewport.zoom = 1.0 --]]
end
{"vy":956,"on.mouse_press":916,"compute_layout":385,"Definition_background_color":849,"draw_cursor":639,"on.keychord_press":919,"test_approximate_up":983,"approximate_up":985,"on.update":945,"Ticks_font":669,"on.code_change":924,"on.key_release":720,"font":353,"snapshot_canvas":913,"Save_viewport":865,"copy_viewport":866,"zoom_out":908,"Zoomed_out":869,"Manifest":769,"fw_app":"driver","Mouse_cursor":559,"zoom_in":920,"set_mouse_cursor":562,"Menu_background_color":611,"Menu_border_color":612,"Menu_command_color":613,"Menu_highlight_color":614,"draw_menu_bar":861,"order_of_magnitude":573,"add_hotkey_to_menu":616,"copy_shape":396,"update_editor_box":711,"draw_manifest_navigator":677,"approximate":579,"num_lines_for_manifest_navigator":676,"maybe_update_key_in_definitions":529,"box_height":680,"reset_manifest_navigator":772,"on.code_submit":947,"Test_definition_background_color":858,"load_from_iterator":670,"tick_spec":998,"get_definition_from_app":784,"add_def_to_menu":640,"scale":712,"Cursor_node":172,"initialize_manifest_navigator":773,"manifest_navigator_up":628,"manifest_navigator_candidates":638,"manifest_navigator_down":635,"schema1_of_y":667,"Definitions":503,"get_multiple_definitions_from_app":783,"mouse_cursor":558,"move_candidate_to_front_of_manifest":632,"manifest_index":637,"wait_for_response":781,"draw_ticks":997,"load_definition":854,"animate_next_frame":915,"text_input_on_manifest_navigator":634,"manifest_coord":636,"table_and_array_both_empty":689,"load_manifest":694,"on.draw":986,"undo_zoom_out":921,"keychord_press_on_manifest_navigator":765,"add_thick_line":400,"vx":545,"surface_bounds":814,"Failing_test_definition_background_color":925,"delete_definition":673,"on.load_settings":940,"draw_run_time_error":808,"new_definition":848,"draw_load_time_error":929,"Animating":842,"draw_test_failure_indicator":935,"Spawn_point":822,"iscale":953,"animate_next":914,"from_viewport":823,"interpolate_viewport":843,"initialize_editor":678,"get_default_map":937,"on_handle":547,"Manifest_navigator":495,"on.mouse_release":836,"on.text_input":855,"B":830,"on_text":539,"definition_background_color":859,"Viewport":604,"fw_parent":998,"y_of_schema1":364,"on.initialize":948,"line_height":365,"Surface":422,"survey_animation":999,"get_manifest":768,"Page":475,"Num_animation_frames":840,"on":1,"on.save_settings":742,"sy":954,"A":831,"sx":955}
tick_spec = function(lo, hi)
-- given an interval of numbers, return a nice set of ticks to draw for the interval
-- the ticks will try to be at multiples of 10, or some multiple of a power of 10
-- we don't want to overwhelm the viewer, so we'll aim for between 2 and 4 ticks
-- the ticks will be specified as a low and high value, and a delta between consecutive ticks
local anchorlo, scale = approximate(lo, order_of_magnitude(hi-lo))
local anchorhi = approximate_up(hi, order_of_magnitude(hi-lo))
-- print('---', lo, hi, order_of_magnitude(hi-lo), anchorlo, anchorhi, scale)
while (anchorhi-anchorlo)/scale < 4 do
-- print('a', anchorlo, anchorhi, scale, (anchorhi-anchorlo)/scale)
scale = scale/2
end
while (anchorhi-anchorlo)/scale > 8 do
-- print('b', scale, (anchorhi-anchorlo)/scale)
scale = scale*2
end
-- print('c', scale, (anchorhi-anchorlo)/scale)
while vy(anchorlo-scale) > Menu_bar_height+20 do
anchorlo = anchorlo-scale
end
while vy(anchorhi+scale) < App.screen.height-20 do
anchorhi = anchorhi+scale
end
-- print('d', scale, (anchorhi-anchorlo)/scale)
return anchorlo, anchorhi, scale
end
{"Save_viewport":865,"copy_viewport":866,"on.text_input":855,"schema1_of_y":667,"zoom_out":908,"on.initialize":948,"Zoomed_out":869,"A":831,"Surface":422,"get_multiple_definitions_from_app":783,"zoom_in":920,"fw_parent":997,"wait_for_response":781,"Viewport":604,"vy":956,"load_definition":854,"on.mouse_press":916,"load_manifest":694,"get_manifest":768,"box_height":680,"draw_run_time_error":808,"on.keychord_press":919,"on.save_settings":742,"Definitions":503,"on.load_settings":940,"animate_next":914,"table_and_array_both_empty":689,"animate_next_frame":915,"survey_animation":950,"Definition_background_color":849,"fw_app":"driver","manifest_coord":636,"draw_cursor":639,"compute_layout":385,"surface_bounds":814,"Manifest":769,"Menu_command_color":613,"definition_background_color":859,"scale":712,"font":353,"undo_zoom_out":921,"Manifest_navigator":495,"Num_animation_frames":840,"Spawn_point":822,"line_height":365,"Failing_test_definition_background_color":925,"on.code_submit":947,"Menu_background_color":611,"get_definition_from_app":784,"Menu_border_color":612,"draw_load_time_error":929,"on_handle":547,"draw_test_failure_indicator":935,"Menu_highlight_color":614,"Page":475,"draw_menu_bar":861,"on_text":539,"add_hotkey_to_menu":616,"interpolate_viewport":843,"get_default_map":937,"draw_manifest_navigator":677,"on.update":945,"num_lines_for_manifest_navigator":676,"sx":955,"on.code_change":924,"vx":545,"reset_manifest_navigator":772,"B":830,"load_from_iterator":670,"on.mouse_release":836,"y_of_schema1":364,"on.key_release":720,"on.draw":986,"initialize_editor":678,"from_viewport":823,"manifest_navigator_up":628,"iscale":953,"manifest_navigator_down":635,"Animating":842,"sy":954,"delete_definition":673,"mouse_cursor":558,"move_candidate_to_front_of_manifest":632,"Mouse_cursor":559,"keychord_press_on_manifest_navigator":765,"on":1,"text_input_on_manifest_navigator":634,"set_mouse_cursor":562,"test_approximate_up":983,"draw_ticks":997,"approximate_up":985,"manifest_index":637,"add_thick_line":400,"manifest_navigator_candidates":638,"initialize_manifest_navigator":773,"Cursor_node":172,"add_def_to_menu":640,"tick_spec":998,"order_of_magnitude":573,"Test_definition_background_color":858,"new_definition":848,"maybe_update_key_in_definitions":529,"update_editor_box":711,"approximate":579,"copy_shape":396,"snapshot_canvas":913,"Ticks_font":669}