Changing view parameters

Contours must be re-calculated by the server when the contour parameters (levels, mode or smoothness) change. However, as contour rendering is done on the frontend, any changes to the contour rendering parameters (visibility, opacity, thickness, colour, line style) do not require any server interaction.

skinparam style strictuml
hide footbox
title Updating contour parameters

actor User
box "Client-side" #EDEDED
        participant Frontend
end box

box "Server-side" #lightblue
    participant Backend
end box
User -> Frontend: Changes contour\nparameters
activate Frontend
Frontend -> Backend : SET_CONTOUR_PARAMETERS
activate Backend
Frontend <-- Backend : CONTOUR_IMAGE_DATA
deactivate Backend
User <-- Frontend: Displays updated image
User -> Frontend: Changes rendering\nparameters
User <-- Frontend: Displays updated image
deactivate Frontend

Similarly for raster images: As all the rendering is done on the frontend, any changes to the raster rendering configuration (colour map, range, scaling type) do not require any interaction between frontend and backend:

skinparam style strictuml
hide footbox
title Changing colour maps, range or scaling type\n(no server interaction required)

actor User
box "Client-side"
        participant "GPU"
        participant Frontend
end box

box "Server-side" #lightblue
    participant Backend
end box

User -> Frontend : Changes parameter
activate Frontend
Frontend -> GPU : Shader parameters
deactivate Frontend
activate GPU
GPU -> GPU : Render image\n(Color mapping,\ncomposition etc)
User <-- GPU : Display image
deactivate GPU

Vector overlay rendering requires image data for both the vector angle (normally calculated from polarization angle PA) and length/intensity (normally calculated from polarized intensity PI). The image data is first downsampled on the backend using block downsampling with an even block width, and then masked with a threshold value. Adjusting the block width or threshold value will require the data to be recalculated and streamed by the backend. The backend streams data tile-by-tile.

skinparam style strictuml
    hide footbox
    title Updating vector overlay parameters

    actor User
    box "Client-side" #EDEDED
            participant Frontend
    end box

    box "Server-side" #lightblue
        participant Backend
    end box
    User -> Frontend: Changes vector overlay\nparameters
    activate Frontend
    Frontend -> Backend: SET_VECTOR_OVERLAY_PARAMETERS
    activate Backend
    Backend -> Backend: Reads required\ndata from disk
    Backend -> Backend: Generates PA/PI tiles
    Backend -> Backend: Compresses using ZFP
    Frontend <-- Backend: VECTOR_OVERLAY_TILE_DATA\n(progress < 1.0)
    Frontend -> Frontend: Processes tile and\ngenerates vertices
    User <-- Frontend: Displays partial\noverlay image
    Frontend <-- Backend: VECTOR_OVERLAY_TILE_DATA\n(progress < 1.0)
    Frontend -> Frontend: Processes tile and\ngenerates vertices
    User <-- Frontend: Displays partial\noverlay image
    Frontend <-- Backend: VECTOR_OVERLAY_TILE_DATA\n(progress = 1.0)
    deactivate Backend
    Frontend -> Frontend: Processes tile and\ngenerates vertices
    User <-- Frontend: Dispalys complete\noverlay image
    deactivate Frontend