aboutsummaryrefslogtreecommitdiff
path: root/layout.f90
diff options
context:
space:
mode:
Diffstat (limited to 'layout.f90')
-rw-r--r--layout.f9045
1 files changed, 22 insertions, 23 deletions
diff --git a/layout.f90 b/layout.f90
index 73c085c..9946fd9 100644
--- a/layout.f90
+++ b/layout.f90
@@ -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