From eb8d9bc74a0624dbc98ffb75268a3ba57bd43b40 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Fri, 24 Apr 2020 21:47:09 -0400 Subject: Initial code commit --- dumb_render.f90 | 93 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 dumb_render.f90 (limited to 'dumb_render.f90') diff --git a/dumb_render.f90 b/dumb_render.f90 new file mode 100644 index 0000000..f50efe1 --- /dev/null +++ b/dumb_render.f90 @@ -0,0 +1,93 @@ +module dumb_render +use render +implicit none + + type, extends(renderer) :: dumb_renderer + + contains + + procedure :: initialize => dumb_initialize + + procedure :: text_width => dumb_text_width + procedure :: text_height => dumb_text_height + procedure :: is_text_visible => dumb_text_visible + + procedure :: draw_porportional => dumb_text_draw + + procedure :: preformatted_width => dumb_text_width + procedure :: preformatted_height => dumb_text_height + procedure :: is_preformatted_visible => dumb_text_visible + + procedure :: draw_preformatted => dumb_text_draw + + end type dumb_renderer + +contains + + subroutine dumb_initialize(self) + implicit none + + class(dumb_renderer)::self + + self%max_width = 79 + self%y = 0 + + end subroutine dumb_initialize + + function dumb_text_width(self, text) + implicit none + + class(dumb_renderer)::self + character(*), intent(in)::text + integer::dumb_text_width + + dumb_text_width = len_trim(text) + + end function dumb_text_width + + function dumb_text_height(self, text) + implicit none + + class(dumb_renderer)::self + character(*), intent(in)::text + integer::dumb_text_height + + dumb_text_height = 1 + + end function dumb_text_height + + function dumb_text_visible(self, text) + implicit none + + class(dumb_renderer)::self + character(*), intent(in)::text + logical::dumb_text_visible + + dumb_text_visible = (self%y >= 0 .AND. self%y < 24) + + end function dumb_text_visible + + subroutine dumb_text_draw(self, text) + implicit none + + class(dumb_renderer)::self + character(*), intent(in)::text + integer::limit_x + character(5)::formatting + + limit_x = min(len_trim(text), self%max_width) + if(limit_x == 0) then + write(*,*) " " + else + if(limit_x < 10) then + write(formatting, '(A2, I1, A1)') '(A', limit_x, ')' + else + write(formatting, '(A2, I2, A1)') '(A', limit_x, ')' + end if + + write(*, formatting) text(1:limit_x) + end if + + end subroutine dumb_text_draw + +end module dumb_render \ No newline at end of file -- cgit v1.2.3