diff options
author | Jeffrey Armstrong <jeff@approximatrix.com> | 2020-05-05 11:04:22 -0400 |
---|---|---|
committer | Jeffrey Armstrong <jeff@approximatrix.com> | 2020-05-05 11:04:22 -0400 |
commit | 0ade9914918238b8da35e995fe9782a517988ae2 (patch) | |
tree | ff9871528998544479a1a15144354d8b873ddc20 /render.f90 | |
parent | 723324ae71f8209e4b1757a3f84bd0e66b6c6319 (diff) | |
download | LR-87-0ade9914918238b8da35e995fe9782a517988ae2.tar.gz LR-87-0ade9914918238b8da35e995fe9782a517988ae2.zip |
Fixed link handling. Can now navigate links and page up/down.
Diffstat (limited to 'render.f90')
-rw-r--r-- | render.f90 | 27 |
1 files changed, 26 insertions, 1 deletions
@@ -1,6 +1,11 @@ module render implicit none + integer, parameter::render_action_none = 1 + integer, parameter::render_action_goto = 2 + integer, parameter::render_action_layout = 3 + integer, parameter::render_action_quit = 4 + type, abstract :: renderer integer::y @@ -12,6 +17,7 @@ implicit none procedure(initialize), deferred::initialize procedure(prepare_for_layout), deferred::prepare_for_layout + procedure(new_page), deferred::new_page procedure(calculate_width), deferred::text_width procedure(calculate_height), deferred::text_height @@ -34,6 +40,8 @@ implicit none procedure(draw_text), deferred::report_status + procedure(request_action), deferred::request_action + end type renderer abstract interface @@ -42,6 +50,13 @@ implicit none class(renderer)::self end subroutine initialize end interface + + abstract interface + subroutine new_page(self) + import::renderer + class(renderer)::self + end subroutine new_page + end interface abstract interface subroutine prepare_for_layout(self) @@ -102,7 +117,16 @@ implicit none logical::request_input end function request_input end interface - + + abstract interface + function request_action(self, text) + import::renderer + class(renderer)::self + character(*), intent(out)::text + integer::request_action + end function request_action + end interface + contains function width_of_line(r, text, startpos, endpos) @@ -238,6 +262,7 @@ contains d_length = len_trim(url) - i_whitespace + 1 allocate(character(len=d_length) :: display) display = adjustl(url(i_whitespace:len_trim(url))) + url = url(1:(i_whitespace-1)) end if if(r%is_link_visible(display)) then |