add_layer Subroutine

private subroutine add_layer(self, layer)

Keep layer, and add it to the map if it is made.

Arguments

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

the layer as given


Calls

proc~~add_layer~~CallsGraph proc~add_layer add_layer proc~apply_layer apply_layer proc~add_layer->proc~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~~add_layer~~CalledByGraph proc~add_layer add_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

Source Code

    subroutine add_layer(self, layer)
        type(TerrainBody), intent(inout) :: self
        type(MapLayer), intent(in) :: layer                 !! the layer as given
        type(MapLayer), allocatable :: tmp(:)
        if (.not. allocated(self%layers)) allocate(self%layers(4))
        if (self%n_layers == size(self%layers)) then
            allocate(tmp(2 * self%n_layers))
            tmp(1:self%n_layers) = self%layers(1:self%n_layers)
            call move_alloc(tmp, self%layers)
        end if
        self%n_layers = self%n_layers + 1
        self%layers(self%n_layers) = layer
        if (c_associated(self%map)) call apply_layer(self, layer)
    end subroutine add_layer