Now you can tell something failed even if the test is out of view.
I think this is the whole of the test-visualization feature – EXCEPT that it doesn't quite work yet. Hitting <F4> currently causes lots of tests to fail. Failures are slowly non-deterministic. If I get a failure I'll tend to see the failure immediately after. But I might get up tomorrow and see everything passing. So I don't understand this, and it's possible this whole approach of juggling two copies of the App variable is totally busted.
Even if we need to dramatically change how we run tests, though, the UI around tests is looking pretty good.
RCA6YTTP4UPHWHPD556KAIXOROWQK6G6ZTNQNC3FPY3XGPZBK7GQC
{"on.update":900,"Test_definition_background_color":858,"sx":544,"definition_background_color":859,"on.mouse_release":836,"add_thick_line":400,"on.key_release":720,"copy_shape":396,"manifest_navigator_up":628,"snapshot_canvas":913,"manifest_navigator_down":635,"Save_viewport":865,"copy_viewport":866,"on.text_input":855,"move_candidate_to_front_of_manifest":632,"zoom_out":908,"keychord_press_on_manifest_navigator":765,"Zoomed_out":869,"set_mouse_cursor":562,"draw_load_time_error":929,"draw_ticks":862,"draw_test_failure_indicator":935,"manifest_index":637,"font":353,"manifest_navigator_candidates":638,"Surface":422,"add_def_to_menu":640,"order_of_magnitude":573,"on.draw":932,"vx":545,"approximate":579,"Viewport":604,"line_height":365,"Page":475,"approximate_up":658,"on":1,"Manifest_navigator":495,"on.keychord_press":919,"draw_run_time_error":808,"draw_cursor":639,"manifest_coord":636,"schema1_of_y":667,"survey_animation":906,"on.initialize":807,"animate_next":914,"A":831,"on.code_submit":927,"on.mouse_press":916,"Manifest":769,"load_definition":854,"animate_next_frame":915,"load_manifest":694,"update_editor_box":711,"get_manifest":768,"initialize_editor":678,"compute_layout":385,"box_height":680,"tick_spec":660,"Menu_background_color":611,"initialize_manifest_navigator":773,"Definitions":503,"on.save_settings":742,"new_definition":848,"on.load_settings":782,"Menu_highlight_color":614,"get_multiple_definitions_from_app":783,"draw_menu_bar":861,"text_input_on_manifest_navigator":634,"add_hotkey_to_menu":616,"Spawn_point":822,"Failing_test_definition_background_color":925,"from_viewport":823,"interpolate_viewport":843,"num_lines_for_manifest_navigator":676,"vy":546,"wait_for_response":781,"reset_manifest_navigator":772,"maybe_update_key_in_definitions":529,"scale":712,"load_from_iterator":670,"B":830,"get_definition_from_app":784,"y_of_schema1":364,"Ticks_font":669,"sy":469,"surface_bounds":814,"Cursor_node":172,"zoom_in":920,"undo_zoom_out":921,"mouse_cursor":558,"fw_parent":934,"Num_animation_frames":840,"fw_app":"driver","table_and_array_both_empty":689,"Mouse_cursor":559,"on_handle":547,"Menu_command_color":613,"draw_manifest_navigator":677,"on.code_change":924,"Animating":842,"on_text":539,"Definition_background_color":849,"Menu_border_color":612,"delete_definition":673}
draw_test_failure_indicator = function()
if Client_app_test_failures == nil then
return
end
if next(Client_app_test_failures, nil) == nil then
return
end
App.color(Failing_test_definition_background_color)
local border_width = App.screen.width/40, App.screen.height
love.graphics.rectangle('fill', 0,0, border_width,App.screen.height)
love.graphics.rectangle('fill', App.screen.width-border_width, 0, border_width, App.screen.height)
love.graphics.rectangle('fill', 0,App.screen.height-border_width, App.screen.width, border_width)
end
{"on.update":900,"Test_definition_background_color":858,"sx":544,"definition_background_color":859,"on.mouse_release":836,"add_thick_line":400,"on.key_release":720,"copy_shape":396,"manifest_navigator_up":628,"snapshot_canvas":913,"manifest_navigator_down":635,"Save_viewport":865,"copy_viewport":866,"on.text_input":855,"move_candidate_to_front_of_manifest":632,"zoom_out":908,"keychord_press_on_manifest_navigator":765,"Zoomed_out":869,"set_mouse_cursor":562,"draw_load_time_error":929,"draw_ticks":862,"draw_test_failure_indicator":934,"manifest_index":637,"font":353,"manifest_navigator_candidates":638,"Surface":422,"add_def_to_menu":640,"order_of_magnitude":573,"on.draw":932,"vx":545,"approximate":579,"Viewport":604,"line_height":365,"Page":475,"approximate_up":658,"on":1,"Manifest_navigator":495,"on.keychord_press":919,"draw_run_time_error":808,"draw_cursor":639,"manifest_coord":636,"schema1_of_y":667,"survey_animation":906,"on.initialize":807,"animate_next":914,"A":831,"on.code_submit":927,"on.mouse_press":916,"Manifest":769,"load_definition":854,"animate_next_frame":915,"load_manifest":694,"update_editor_box":711,"get_manifest":768,"initialize_editor":678,"compute_layout":385,"box_height":680,"tick_spec":660,"Menu_background_color":611,"initialize_manifest_navigator":773,"Definitions":503,"on.save_settings":742,"new_definition":848,"on.load_settings":782,"Menu_highlight_color":614,"get_multiple_definitions_from_app":783,"draw_menu_bar":861,"text_input_on_manifest_navigator":634,"add_hotkey_to_menu":616,"Spawn_point":822,"Failing_test_definition_background_color":925,"from_viewport":823,"interpolate_viewport":843,"num_lines_for_manifest_navigator":676,"vy":546,"wait_for_response":781,"reset_manifest_navigator":772,"maybe_update_key_in_definitions":529,"scale":712,"load_from_iterator":670,"B":830,"get_definition_from_app":784,"y_of_schema1":364,"Ticks_font":669,"sy":469,"surface_bounds":814,"Cursor_node":172,"zoom_in":920,"undo_zoom_out":921,"mouse_cursor":558,"fw_parent":933,"Num_animation_frames":840,"fw_app":"driver","table_and_array_both_empty":689,"Mouse_cursor":559,"on_handle":547,"Menu_command_color":613,"draw_manifest_navigator":677,"on.code_change":924,"Animating":842,"on_text":539,"Definition_background_color":849,"Menu_border_color":612,"delete_definition":673}
draw_test_failure_indicator = function()
print('test failure indicator A')
if Client_app_test_failures == nil then
return
end
print('test failure indicator B')
if next(Client_app_test_failures, nil) == nil then
return
end
print('test failure indicator C')
App.color(Failing_test_definition_background_color)
local border_width = App.screen.width/40, App.screen.height
love.graphics.rectangle('fill', 0,0, border_width,App.screen.height)
love.graphics.rectangle('fill', App.screen.width-border_width, 0, border_width, App.screen.height)
love.graphics.rectangle('fill', 0,App.screen.height-border_width, App.screen.width, border_width)
end
{"on.update":900,"Test_definition_background_color":858,"sx":544,"definition_background_color":859,"on.mouse_release":836,"add_thick_line":400,"on.key_release":720,"copy_shape":396,"manifest_navigator_up":628,"snapshot_canvas":913,"manifest_navigator_down":635,"Save_viewport":865,"copy_viewport":866,"on.text_input":855,"move_candidate_to_front_of_manifest":632,"zoom_out":908,"keychord_press_on_manifest_navigator":765,"Zoomed_out":869,"set_mouse_cursor":562,"draw_load_time_error":929,"draw_ticks":862,"draw_test_failure_indicator":933,"manifest_index":637,"font":353,"manifest_navigator_candidates":638,"Surface":422,"add_def_to_menu":640,"order_of_magnitude":573,"on.draw":932,"vx":545,"approximate":579,"Viewport":604,"line_height":365,"Page":475,"approximate_up":658,"on":1,"Manifest_navigator":495,"on.keychord_press":919,"draw_run_time_error":808,"draw_cursor":639,"manifest_coord":636,"schema1_of_y":667,"survey_animation":906,"on.initialize":807,"animate_next":914,"A":831,"on.code_submit":927,"on.mouse_press":916,"Manifest":769,"load_definition":854,"animate_next_frame":915,"load_manifest":694,"update_editor_box":711,"get_manifest":768,"initialize_editor":678,"compute_layout":385,"box_height":680,"tick_spec":660,"Menu_background_color":611,"initialize_manifest_navigator":773,"Definitions":503,"on.save_settings":742,"new_definition":848,"on.load_settings":782,"Menu_highlight_color":614,"get_multiple_definitions_from_app":783,"draw_menu_bar":861,"text_input_on_manifest_navigator":634,"add_hotkey_to_menu":616,"Spawn_point":822,"Failing_test_definition_background_color":925,"from_viewport":823,"interpolate_viewport":843,"num_lines_for_manifest_navigator":676,"vy":546,"wait_for_response":781,"reset_manifest_navigator":772,"maybe_update_key_in_definitions":529,"scale":712,"load_from_iterator":670,"B":830,"get_definition_from_app":784,"y_of_schema1":364,"Ticks_font":669,"sy":469,"surface_bounds":814,"Cursor_node":172,"zoom_in":920,"undo_zoom_out":921,"mouse_cursor":558,"fw_parent":932,"Num_animation_frames":840,"fw_app":"driver","table_and_array_both_empty":689,"Mouse_cursor":559,"on_handle":547,"Menu_command_color":613,"draw_manifest_navigator":677,"on.code_change":924,"Animating":842,"on_text":539,"Definition_background_color":849,"Menu_border_color":612,"delete_definition":673}
draw_test_failure_indicator = function()
if Client_app_test_failures == nil then
return
end
if next(Client_app_test_failures, nil) == nil then
return
end
App.color(Failing_test_definition_background_color)
local border_width = App.screen.width/40, App.screen.height
love.graphics.rectangle('fill', 0,0, border_width,App.screen.height)
love.graphics.rectangle('fill', App.screen.width-border_width, 0, border_width, App.screen.height)
love.graphics.rectangle('fill', 0,App.screen.height-border_width, App.screen.width, border_width)
end
on.draw = function()
if Animating then
local q = love.graphics.newQuad((Viewport.x-Global_viewport.x)*Viewport.zoom,(Viewport.y-Global_viewport.y)*Viewport.zoom, App.screen.width, App.screen.height, Global_viewport.w*Viewport.zoom, Global_viewport.h*Viewport.zoom)
App.color{r=1,g=1,b=1}
love.graphics.draw(Canvas, q, 0,0)
return
end
for _,obj in ipairs(Surface) do
love.graphics.setColor(obj.r or 0, obj.g or 0, obj.b or 0)
if obj.type == 'rectangle' then
love.graphics.rectangle(obj.drawmode or 'fill', vx(obj.x),vy(obj.y), scale(obj.w),scale(obj.h))
elseif obj.type == 'line' then
love.graphics.line(unpack(obj.zdata))
elseif obj.type == 'circle' then
love.graphics.circle(obj.drawmode or 'fill', vx(obj.x), vy(obj.y), scale(obj.radius))
elseif obj.type == 'arc' then
love.graphics.arc(obj.drawmode or 'line', obj.arctype or 'open', vx(obj.x), vy(obj.y), scale(obj.radius), obj.angle1, obj.angle2, obj.segments)
elseif obj.type == 'ellipse' then
love.graphics.ellipse(obj.drawmode or 'fill', vx(obj.x), vy(obj.y), scale(obj.radiusx), scale(obj.radiusy))
elseif obj.type == 'bezier' then
love.graphics.line(unpack(obj.zdata))
elseif obj.type == 'text' then
if obj.w == nil then
love.graphics.draw(obj.text, vx(obj.x), vy(obj.y))
else
love.graphics.setColor(0.5,0.5,0.5)
love.graphics.rectangle('fill', vx(obj.x),vy(obj.y-30), scale(obj.w/2-5), scale(20))
edit.draw(obj.editor, obj.fg, not obj.show_cursor)
draw_load_time_error(obj)
end
end
end
draw_run_time_error()
draw_test_failure_indicator()
draw_ticks()
draw_menu_bar()
end
{"on.update":900,"Test_definition_background_color":858,"sx":544,"definition_background_color":859,"on.mouse_release":836,"add_thick_line":400,"on.key_release":720,"copy_shape":396,"manifest_navigator_up":628,"snapshot_canvas":913,"manifest_navigator_down":635,"Save_viewport":865,"copy_viewport":866,"on.text_input":855,"move_candidate_to_front_of_manifest":632,"zoom_out":908,"keychord_press_on_manifest_navigator":765,"Zoomed_out":869,"set_mouse_cursor":562,"draw_load_time_error":929,"draw_ticks":862,"draw_test_failure_indicator":931,"manifest_index":637,"font":353,"manifest_navigator_candidates":638,"Surface":422,"add_def_to_menu":640,"order_of_magnitude":573,"on.draw":932,"vx":545,"approximate":579,"Viewport":604,"line_height":365,"Page":475,"approximate_up":658,"on":1,"Manifest_navigator":495,"on.keychord_press":919,"draw_run_time_error":808,"draw_cursor":639,"manifest_coord":636,"schema1_of_y":667,"survey_animation":906,"on.initialize":807,"animate_next":914,"A":831,"on.code_submit":927,"on.mouse_press":916,"Manifest":769,"load_definition":854,"animate_next_frame":915,"load_manifest":694,"update_editor_box":711,"get_manifest":768,"initialize_editor":678,"compute_layout":385,"box_height":680,"tick_spec":660,"Menu_background_color":611,"initialize_manifest_navigator":773,"Definitions":503,"on.save_settings":742,"new_definition":848,"on.load_settings":782,"Menu_highlight_color":614,"get_multiple_definitions_from_app":783,"draw_menu_bar":861,"text_input_on_manifest_navigator":634,"add_hotkey_to_menu":616,"Spawn_point":822,"Failing_test_definition_background_color":925,"from_viewport":823,"interpolate_viewport":843,"num_lines_for_manifest_navigator":676,"vy":546,"wait_for_response":781,"reset_manifest_navigator":772,"maybe_update_key_in_definitions":529,"scale":712,"load_from_iterator":670,"B":830,"get_definition_from_app":784,"y_of_schema1":364,"Ticks_font":669,"sy":469,"surface_bounds":814,"Cursor_node":172,"zoom_in":920,"undo_zoom_out":921,"mouse_cursor":558,"fw_parent":931,"Num_animation_frames":840,"fw_app":"driver","table_and_array_both_empty":689,"Mouse_cursor":559,"on_handle":547,"Menu_command_color":613,"draw_manifest_navigator":677,"on.code_change":924,"Animating":842,"on_text":539,"Definition_background_color":849,"Menu_border_color":612,"delete_definition":673}
{"line_height":365,"on.key_release":720,"load_definition":854,"mouse_cursor":558,"box_height":680,"Mouse_cursor":559,"add_thick_line":400,"Failing_test_definition_background_color":925,"survey_animation":906,"on.load_settings":782,"animate_next":914,"on":1,"num_lines_for_manifest_navigator":676,"table_and_array_both_empty":689,"animate_next_frame":915,"order_of_magnitude":573,"load_from_iterator":670,"get_definition_from_app":784,"approximate":579,"manifest_navigator_up":628,"manifest_navigator_down":635,"delete_definition":673,"font":353,"move_candidate_to_front_of_manifest":632,"keychord_press_on_manifest_navigator":765,"Ticks_font":669,"Manifest_navigator":495,"interpolate_viewport":843,"manifest_coord":636,"manifest_index":637,"draw_test_failure_indicator":931,"draw_load_time_error":929,"Animating":842,"reset_manifest_navigator":772,"draw_run_time_error":808,"snapshot_canvas":913,"Menu_command_color":613,"draw_manifest_navigator":677,"Test_definition_background_color":858,"Surface":422,"Manifest":769,"Menu_background_color":611,"on.text_input":855,"on.code_change":924,"from_viewport":823,"get_manifest":768,"approximate_up":658,"initialize_editor":678,"on.draw":928,"draw_cursor":639,"Spawn_point":822,"Menu_border_color":612,"Definitions":503,"Definition_background_color":849,"new_definition":848,"Menu_highlight_color":614,"Save_viewport":865,"draw_menu_bar":861,"copy_viewport":866,"add_hotkey_to_menu":616,"definition_background_color":859,"zoom_out":908,"on.mouse_release":836,"Zoomed_out":869,"on.update":900,"undo_zoom_out":921,"on.keychord_press":919,"copy_shape":396,"compute_layout":385,"zoom_in":920,"Page":475,"maybe_update_key_in_definitions":529,"manifest_navigator_candidates":638,"Cursor_node":172,"surface_bounds":814,"add_def_to_menu":640,"sy":469,"Num_animation_frames":840,"fw_parent":930,"fw_app":"driver","draw_ticks":862,"load_manifest":694,"schema1_of_y":667,"update_editor_box":711,"on.code_submit":927,"wait_for_response":781,"vy":546,"on_handle":547,"y_of_schema1":364,"set_mouse_cursor":562,"text_input_on_manifest_navigator":634,"on.initialize":807,"initialize_manifest_navigator":773,"A":831,"on.mouse_press":916,"on_text":539,"tick_spec":660,"B":830,"get_multiple_definitions_from_app":783,"sx":544,"Viewport":604,"vx":545,"scale":712,"on.save_settings":742}
draw_test_failure_indicator = function()
if next(Client_app_test_failures, nil) == nil then
return
end
App.color(Failing_test_definition_background_color)
local border_width = App.screen.width/40, App.screen.height
love.graphics.rectangle('fill', 0,0, border_width,App.screen.height)
love.graphics.rectangle('fill', App.screen.width-border_width, 0, border_width, App.screen.height)
love.graphics.rectangle('fill', 0,App.screen.height-border_width, App.screen.width, border_width)
end
{"line_height":365,"on.key_release":720,"load_definition":854,"mouse_cursor":558,"box_height":680,"Mouse_cursor":559,"add_thick_line":400,"Failing_test_definition_background_color":925,"survey_animation":906,"on.load_settings":782,"animate_next":914,"on":1,"num_lines_for_manifest_navigator":676,"table_and_array_both_empty":689,"animate_next_frame":915,"order_of_magnitude":573,"load_from_iterator":670,"get_definition_from_app":784,"approximate":579,"manifest_navigator_up":628,"manifest_navigator_down":635,"delete_definition":673,"font":353,"move_candidate_to_front_of_manifest":632,"keychord_press_on_manifest_navigator":765,"Ticks_font":669,"Manifest_navigator":495,"interpolate_viewport":843,"manifest_coord":636,"manifest_index":637,"draw_test_failure_indicator":930,"draw_load_time_error":929,"Animating":842,"reset_manifest_navigator":772,"draw_run_time_error":808,"snapshot_canvas":913,"Menu_command_color":613,"draw_manifest_navigator":677,"Test_definition_background_color":858,"Surface":422,"Manifest":769,"Menu_background_color":611,"on.text_input":855,"on.code_change":924,"from_viewport":823,"get_manifest":768,"approximate_up":658,"initialize_editor":678,"on.draw":928,"draw_cursor":639,"Spawn_point":822,"Menu_border_color":612,"Definitions":503,"Definition_background_color":849,"new_definition":848,"Menu_highlight_color":614,"Save_viewport":865,"draw_menu_bar":861,"copy_viewport":866,"add_hotkey_to_menu":616,"definition_background_color":859,"zoom_out":908,"on.mouse_release":836,"Zoomed_out":869,"on.update":900,"undo_zoom_out":921,"on.keychord_press":919,"copy_shape":396,"compute_layout":385,"zoom_in":920,"Page":475,"maybe_update_key_in_definitions":529,"manifest_navigator_candidates":638,"Cursor_node":172,"surface_bounds":814,"add_def_to_menu":640,"sy":469,"Num_animation_frames":840,"fw_parent":929,"fw_app":"driver","draw_ticks":862,"load_manifest":694,"schema1_of_y":667,"update_editor_box":711,"on.code_submit":927,"wait_for_response":781,"vy":546,"on_handle":547,"y_of_schema1":364,"set_mouse_cursor":562,"text_input_on_manifest_navigator":634,"on.initialize":807,"initialize_manifest_navigator":773,"A":831,"on.mouse_press":916,"on_text":539,"tick_spec":660,"B":830,"get_multiple_definitions_from_app":783,"sx":544,"Viewport":604,"vx":545,"scale":712,"on.save_settings":742}
draw_test_failure_indicator = function()
if next(Client_app_test_failures, nil) == nil then
return
end
end
{"line_height":365,"on.key_release":720,"load_definition":854,"mouse_cursor":558,"box_height":680,"Mouse_cursor":559,"add_thick_line":400,"Failing_test_definition_background_color":925,"survey_animation":906,"on.load_settings":782,"animate_next":914,"on":1,"num_lines_for_manifest_navigator":676,"table_and_array_both_empty":689,"animate_next_frame":915,"order_of_magnitude":573,"load_from_iterator":670,"get_definition_from_app":784,"approximate":579,"manifest_navigator_up":628,"manifest_navigator_down":635,"delete_definition":673,"font":353,"move_candidate_to_front_of_manifest":632,"keychord_press_on_manifest_navigator":765,"Ticks_font":669,"Manifest_navigator":495,"interpolate_viewport":843,"manifest_coord":636,"manifest_index":637,"draw_load_time_error":929,"Animating":842,"reset_manifest_navigator":772,"draw_run_time_error":808,"snapshot_canvas":913,"Menu_command_color":613,"draw_manifest_navigator":677,"Test_definition_background_color":858,"Surface":422,"Manifest":769,"Menu_background_color":611,"on.text_input":855,"on.code_change":924,"from_viewport":823,"get_manifest":768,"approximate_up":658,"initialize_editor":678,"on.draw":928,"draw_cursor":639,"Spawn_point":822,"Menu_border_color":612,"Definitions":503,"Definition_background_color":849,"new_definition":848,"Menu_highlight_color":614,"Save_viewport":865,"draw_menu_bar":861,"copy_viewport":866,"add_hotkey_to_menu":616,"definition_background_color":859,"zoom_out":908,"on.mouse_release":836,"Zoomed_out":869,"on.update":900,"undo_zoom_out":921,"on.keychord_press":919,"copy_shape":396,"compute_layout":385,"zoom_in":920,"Page":475,"maybe_update_key_in_definitions":529,"manifest_navigator_candidates":638,"Cursor_node":172,"surface_bounds":814,"add_def_to_menu":640,"sy":469,"Num_animation_frames":840,"fw_parent":928,"fw_app":"driver","draw_ticks":862,"load_manifest":694,"schema1_of_y":667,"update_editor_box":711,"on.code_submit":927,"wait_for_response":781,"vy":546,"on_handle":547,"y_of_schema1":364,"set_mouse_cursor":562,"text_input_on_manifest_navigator":634,"on.initialize":807,"initialize_manifest_navigator":773,"A":831,"on.mouse_press":916,"on_text":539,"tick_spec":660,"B":830,"get_multiple_definitions_from_app":783,"sx":544,"Viewport":604,"vx":545,"scale":712,"on.save_settings":742}
draw_load_time_error = function(obj)
if not obj.editor.load_time_error then return end
love.graphics.setColor(0.8,0,0)
local error_y = math.min(vy(obj.y+obj.h), App.screen.height-20*5*Viewport.zoom)
error_y = math.max(error_y, vy(obj.y))
love.graphics.rectangle('fill', vx(obj.x), error_y, scale(obj.w), scale(5*20*Viewport.zoom))
love.graphics.setColor(0,0,0)
love.graphics.print(obj.editor.load_time_error, vx(obj.x), error_y)
end
on.draw = function()
if Animating then
local q = love.graphics.newQuad((Viewport.x-Global_viewport.x)*Viewport.zoom,(Viewport.y-Global_viewport.y)*Viewport.zoom, App.screen.width, App.screen.height, Global_viewport.w*Viewport.zoom, Global_viewport.h*Viewport.zoom)
App.color{r=1,g=1,b=1}
love.graphics.draw(Canvas, q, 0,0)
return
end
for _,obj in ipairs(Surface) do
love.graphics.setColor(obj.r or 0, obj.g or 0, obj.b or 0)
if obj.type == 'rectangle' then
love.graphics.rectangle(obj.drawmode or 'fill', vx(obj.x),vy(obj.y), scale(obj.w),scale(obj.h))
elseif obj.type == 'line' then
love.graphics.line(unpack(obj.zdata))
elseif obj.type == 'circle' then
love.graphics.circle(obj.drawmode or 'fill', vx(obj.x), vy(obj.y), scale(obj.radius))
elseif obj.type == 'arc' then
love.graphics.arc(obj.drawmode or 'line', obj.arctype or 'open', vx(obj.x), vy(obj.y), scale(obj.radius), obj.angle1, obj.angle2, obj.segments)
elseif obj.type == 'ellipse' then
love.graphics.ellipse(obj.drawmode or 'fill', vx(obj.x), vy(obj.y), scale(obj.radiusx), scale(obj.radiusy))
elseif obj.type == 'bezier' then
love.graphics.line(unpack(obj.zdata))
elseif obj.type == 'text' then
if obj.w == nil then
love.graphics.draw(obj.text, vx(obj.x), vy(obj.y))
else
love.graphics.setColor(0.5,0.5,0.5)
love.graphics.rectangle('fill', vx(obj.x),vy(obj.y-30), scale(obj.w/2-5), scale(20))
edit.draw(obj.editor, obj.fg, not obj.show_cursor)
draw_load_time_error(obj)
end
end
end
draw_run_time_error()
draw_ticks()
draw_menu_bar()
end
{"line_height":365,"on.key_release":720,"load_definition":854,"mouse_cursor":558,"box_height":680,"Mouse_cursor":559,"add_thick_line":400,"Failing_test_definition_background_color":925,"survey_animation":906,"on.load_settings":782,"animate_next":914,"on":1,"num_lines_for_manifest_navigator":676,"table_and_array_both_empty":689,"animate_next_frame":915,"order_of_magnitude":573,"load_from_iterator":670,"get_definition_from_app":784,"approximate":579,"manifest_navigator_up":628,"manifest_navigator_down":635,"delete_definition":673,"font":353,"move_candidate_to_front_of_manifest":632,"keychord_press_on_manifest_navigator":765,"Ticks_font":669,"Manifest_navigator":495,"interpolate_viewport":843,"manifest_coord":636,"manifest_index":637,"Animating":842,"reset_manifest_navigator":772,"draw_run_time_error":808,"snapshot_canvas":913,"Menu_command_color":613,"draw_manifest_navigator":677,"Test_definition_background_color":858,"Surface":422,"Manifest":769,"Menu_background_color":611,"on.text_input":855,"on.code_change":924,"from_viewport":823,"get_manifest":768,"approximate_up":658,"initialize_editor":678,"on.draw":928,"draw_cursor":639,"Spawn_point":822,"Menu_border_color":612,"Definitions":503,"Definition_background_color":849,"new_definition":848,"Menu_highlight_color":614,"Save_viewport":865,"draw_menu_bar":861,"copy_viewport":866,"add_hotkey_to_menu":616,"definition_background_color":859,"zoom_out":908,"on.mouse_release":836,"Zoomed_out":869,"on.update":900,"undo_zoom_out":921,"on.keychord_press":919,"copy_shape":396,"compute_layout":385,"zoom_in":920,"Page":475,"maybe_update_key_in_definitions":529,"manifest_navigator_candidates":638,"Cursor_node":172,"surface_bounds":814,"add_def_to_menu":640,"sy":469,"Num_animation_frames":840,"fw_parent":927,"fw_app":"driver","draw_ticks":862,"load_manifest":694,"schema1_of_y":667,"update_editor_box":711,"on.code_submit":927,"wait_for_response":781,"vy":546,"on_handle":547,"y_of_schema1":364,"set_mouse_cursor":562,"text_input_on_manifest_navigator":634,"on.initialize":807,"initialize_manifest_navigator":773,"A":831,"on.mouse_press":916,"on_text":539,"tick_spec":660,"B":830,"get_multiple_definitions_from_app":783,"sx":544,"Viewport":604,"vx":545,"scale":712,"on.save_settings":742}