update_huds Subroutine

private subroutine update_huds(self)

Show the HUD texts' changes: text, color, position, size and alignment in place; a new font makes the text's node again.

Arguments

Type IntentOptional Attributes Name
type(WindowProxy), intent(inout) :: self

Calls

proc~~update_huds~~CallsGraph proc~update_huds update_huds interface~vkf_label_set_color vkf_label_set_color proc~update_huds->interface~vkf_label_set_color interface~vkf_label_set_text vkf_label_set_text proc~update_huds->interface~vkf_label_set_text interface~vkf_node_delete vkf_node_delete proc~update_huds->interface~vkf_node_delete interface~vkf_viewer_hud_remove vkf_viewer_hud_remove proc~update_huds->interface~vkf_viewer_hud_remove proc~alignment HUDText%alignment proc~update_huds->proc~alignment proc~color HUDText%color proc~update_huds->proc~color proc~create_hud create_hud proc~update_huds->proc~create_hud proc~font HUDText%font proc~update_huds->proc~font proc~label_set_layout label_set_layout proc~update_huds->proc~label_set_layout proc~position HUDText%position proc~update_huds->proc~position proc~revision HUDText%revision proc~update_huds->proc~revision proc~text~2 HUDText%text proc~update_huds->proc~text~2 proc~create_hud->proc~alignment proc~create_hud->proc~color proc~create_hud->proc~font proc~create_hud->proc~position proc~create_hud->proc~revision proc~create_hud->proc~text~2 interface~vkf_viewer_hud_add vkf_viewer_hud_add proc~create_hud->interface~vkf_viewer_hud_add proc~label_create label_create proc~create_hud->proc~label_create interface~vkf_label_set_layout vkf_label_set_layout proc~label_set_layout->interface~vkf_label_set_layout proc~vsg_alignment vsg_alignment proc~label_set_layout->proc~vsg_alignment proc~label_create->proc~vsg_alignment interface~vkf_label_create vkf_label_create proc~label_create->interface~vkf_label_create proc~get_font get_font proc~label_create->proc~get_font interface~vkf_font_read vkf_font_read proc~get_font->interface~vkf_font_read proc~find_font find_font proc~get_font->proc~find_font proc~find_in_dirs find_in_dirs proc~find_font->proc~find_in_dirs

Called by

proc~~update_huds~~CalledByGraph proc~update_huds update_huds proc~frame WindowProxy%frame proc~frame->proc~update_huds proc~resize WindowProxy%resize proc~resize->proc~frame proc~run WindowProxy%run proc~run->proc~frame

Source Code

    subroutine update_huds(self)
        type(WindowProxy), intent(inout) :: self
        type(HUDText), pointer :: h
        character(len=:), allocatable :: t
        integer(c_int) :: status
        integer :: k
        do k = 1, self%n_huds
            h => self%huds(k)%p
            if (.not. c_associated(self%huds(k)%node) .or. h%revision() == self%huds(k)%revision) cycle
            if (h%font() /= self%huds(k)%font) then
                status = vkf_viewer_hud_remove(self%viewer_, self%huds(k)%node)
                call vkf_node_delete(self%huds(k)%node)
                call create_hud(self, k)
                cycle
            end if
            t = h%text()
            if (vkf_label_set_text(self%huds(k)%node, t, len(t, kind=c_int)) /= 0 .or. &
                vkf_label_set_color(self%huds(k)%node, real(h%color(), c_float)) /= 0 .or. &
                .not. label_set_layout(self%huds(k)%node, [h%position(), 0.0_wp], h%size(), 0.0_wp, h%alignment())) &
                write(*, '(a)') 'vkframes: could not update HUD text'
            self%huds(k)%revision = h%revision()
        end do
    end subroutine update_huds