diff options
Diffstat (limited to 'layout.f90')
-rw-r--r-- | layout.f90 | 45 |
1 files changed, 22 insertions, 23 deletions
@@ -55,31 +55,30 @@ contains call rendering_engine%prepare_for_layout() do while(laying_out) - if(walker%line_type == line_type_text .and. .not. associated(walker%breaks)) then walker%breaks => calculate_wrapping(rendering_engine, walker%text) end if - + select case (walker%line_type) - + case (line_type_text) call render_proportional(rendering_engine, walker%text, walker%breaks) - + case (line_type_preformatted) call render_preformatted(rendering_engine, walker%text) - + case (line_type_link) call render_link(rendering_engine, walker%text) - + end select - + laying_out = associated(walker%next) if(laying_out) then walker => walker%next end if - + end do - + end subroutine layout_lines subroutine clear_line_breaks(first_line) @@ -89,44 +88,44 @@ contains type(line), pointer::walker walker => first_line - + do while(associated(walker)) if(associated(walker%breaks)) then deallocate(walker%breaks) walker%breaks => null() end if - + walker => walker%next - + end do - + end subroutine clear_line_breaks subroutine free_lines(first_line) implicit none - + type(line), intent(inout), pointer::first_line - + type(line), pointer::walker, past - + call clear_line_breaks(first_line) - + walker => first_line - + do while(associated(walker)) if(allocated(walker%text)) then deallocate(walker%text) end if - + past => walker walker => walker%next - + deallocate(past) - + end do - + first_line => null() - + end subroutine free_lines end module layout
\ No newline at end of file |