apply_layer Subroutine

private subroutine apply_layer(self, layer)

Add layer to the map (a file found on VKFRAMES_DATA_PATH).

Arguments

Type IntentOptional Attributes Name
type(TerrainBody), intent(inout) :: self
type(MapLayer), intent(in) :: layer

the layer to add


Calls

proc~~apply_layer~~CallsGraph proc~apply_layer apply_layer interface~vkf_rocky_add_elevation vkf_rocky_add_elevation proc~apply_layer->interface~vkf_rocky_add_elevation interface~vkf_rocky_add_image vkf_rocky_add_image proc~apply_layer->interface~vkf_rocky_add_image proc~find_data_file find_data_file proc~apply_layer->proc~find_data_file proc~name ReferenceFrame%name proc~apply_layer->proc~name proc~find_in_dirs find_in_dirs proc~find_data_file->proc~find_in_dirs

Called by

proc~~apply_layer~~CalledByGraph proc~apply_layer apply_layer proc~add_layer add_layer proc~add_layer->proc~apply_layer proc~make_map make_map proc~make_map->proc~apply_layer proc~add_elevation_layer TerrainBody%add_elevation_layer proc~add_elevation_layer->proc~add_layer proc~add_image_layer TerrainBody%add_image_layer proc~add_image_layer->proc~add_layer proc~terrain_build_contents TerrainBody%terrain_build_contents proc~terrain_build_contents->proc~make_map proc~terrain_update TerrainBody%terrain_update proc~terrain_update->proc~make_map

Source Code

    subroutine apply_layer(self, layer)
        type(TerrainBody), intent(inout) :: self
        type(MapLayer), intent(in) :: layer                 !! the layer to add
        character(len=:), allocatable :: uri
        integer(c_int) :: status
        uri = layer%uri
        if (layer%source == LAYER_GDAL .and. index(uri, '://') == 0) then     ! a file: by name on VKFRAMES_DATA_PATH
            uri = find_data_file(layer%uri)
            if (len(uri) == 0) then
                write(*, '(a)') 'vkframes: TerrainBody '//self%name()//': could not find '//layer%uri
                return
            end if
        end if
        if (layer%elevation) then
            status = vkf_rocky_add_elevation(self%map, int(layer%source, c_int), uri, len(uri, kind=c_int), &
                                             int(layer%encoding, c_int))
        else
            status = vkf_rocky_add_image(self%map, int(layer%source, c_int), uri, len(uri, kind=c_int))
        end if
        if (status /= 0) write(*, '(a)') 'vkframes: TerrainBody '//self%name()//': could not add layer '//layer%uri
    end subroutine apply_layer