diff options
Diffstat (limited to 'render.f90')
-rw-r--r-- | render.f90 | 34 |
1 files changed, 34 insertions, 0 deletions
@@ -7,6 +7,10 @@ implicit none integer, parameter::render_action_back = 4 integer, parameter::render_action_quit = 5 + character(11), dimension(2)::base_supported_types = & + ["text/plain ", & + "text/gemini" ] + type, abstract :: renderer integer::y @@ -15,6 +19,7 @@ implicit none contains procedure::render_proportional + procedure::type_supported procedure(initialize), deferred::initialize procedure(prepare_for_layout), deferred::prepare_for_layout @@ -128,8 +133,37 @@ implicit none end function request_action end interface + abstract interface + function request_save_filename(self, url, mimetype, filename) + import::renderer + class(renderer)::self + character(*), intent(in)::url + character(*), intent(in)::mimetype + character(*), intent(out)::filename + logical::request_save_filename + end function request_save_filename + end interface + contains + function type_supported(self, mimetype) + implicit none + + class(renderer)::self + character(*), intent(in)::mimetype + logical::type_supported + integer::i + + type_supported = .false. + do i = 1, size(base_supported_types) + if(trim(mimetype) == trim(base_supported_types(i))) then + type_supported = .true. + exit + end if + end do + + end function type_supported + function width_of_line(r, text, startpos, endpos) implicit none |