Figure rendering pipeline module
Single Responsibility: Coordinate the complete rendering pipeline Extracted from fortplot_figure_core to improve modularity
Setup the coordinate system for rendering
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(plot_context), | intent(inout) | :: | backend | |||
| real(kind=wp), | intent(in) | :: | x_min_transformed | |||
| real(kind=wp), | intent(in) | :: | x_max_transformed | |||
| real(kind=wp), | intent(in) | :: | y_min_transformed | |||
| real(kind=wp), | intent(in) | :: | y_max_transformed | 
Render figure background
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(plot_context), | intent(inout) | :: | backend | 
Render figure axes and labels For raster backends, split rendering to prevent label overlap issues
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(plot_context), | intent(inout) | :: | backend | |||
| character(len=*), | intent(in) | :: | xscale | |||
| character(len=*), | intent(in) | :: | yscale | |||
| real(kind=wp), | intent(in) | :: | symlog_threshold | |||
| real(kind=wp), | intent(in) | :: | x_min | |||
| real(kind=wp), | intent(in) | :: | x_max | |||
| real(kind=wp), | intent(in) | :: | y_min | |||
| real(kind=wp), | intent(in) | :: | y_max | |||
| character(len=:), | intent(in), | allocatable | :: | title | ||
| character(len=:), | intent(in), | allocatable | :: | xlabel | ||
| character(len=:), | intent(in), | allocatable | :: | ylabel | ||
| type(plot_data_t), | intent(in) | :: | plots(:) | |||
| integer, | intent(in) | :: | plot_count | |||
| logical, | intent(in), | optional | :: | has_twinx | ||
| real(kind=wp), | intent(in), | optional | :: | twinx_y_min | ||
| real(kind=wp), | intent(in), | optional | :: | twinx_y_max | ||
| character(len=:), | intent(in), | optional, | allocatable | :: | twinx_ylabel | |
| character(len=*), | intent(in), | optional | :: | twinx_yscale | ||
| logical, | intent(in), | optional | :: | has_twiny | ||
| real(kind=wp), | intent(in), | optional | :: | twiny_x_min | ||
| real(kind=wp), | intent(in), | optional | :: | twiny_x_max | ||
| character(len=:), | intent(in), | optional, | allocatable | :: | twiny_xlabel | |
| character(len=*), | intent(in), | optional | :: | twiny_xscale | 
Render ONLY axis labels (for raster backends after plots are drawn)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(plot_context), | intent(inout) | :: | backend | |||
| character(len=*), | intent(in) | :: | xscale | |||
| character(len=*), | intent(in) | :: | yscale | |||
| real(kind=wp), | intent(in) | :: | symlog_threshold | |||
| real(kind=wp), | intent(in) | :: | x_min | |||
| real(kind=wp), | intent(in) | :: | x_max | |||
| real(kind=wp), | intent(in) | :: | y_min | |||
| real(kind=wp), | intent(in) | :: | y_max | |||
| character(len=:), | intent(in), | allocatable | :: | title | ||
| character(len=:), | intent(in), | allocatable | :: | xlabel | ||
| character(len=:), | intent(in), | allocatable | :: | ylabel | ||
| type(plot_data_t), | intent(in) | :: | plots(:) | |||
| integer, | intent(in) | :: | plot_count | |||
| logical, | intent(in), | optional | :: | has_twinx | ||
| real(kind=wp), | intent(in), | optional | :: | twinx_y_min | ||
| real(kind=wp), | intent(in), | optional | :: | twinx_y_max | ||
| character(len=:), | intent(in), | optional, | allocatable | :: | twinx_ylabel | |
| character(len=*), | intent(in), | optional | :: | twinx_yscale | ||
| logical, | intent(in), | optional | :: | has_twiny | ||
| real(kind=wp), | intent(in), | optional | :: | twiny_x_min | ||
| real(kind=wp), | intent(in), | optional | :: | twiny_x_max | ||
| character(len=:), | intent(in), | optional, | allocatable | :: | twiny_xlabel | |
| character(len=*), | intent(in), | optional | :: | twiny_xscale | 
Render only the figure title without drawing axes
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(plot_context), | intent(inout) | :: | backend | |||
| character(len=:), | intent(in), | allocatable | :: | title | ||
| real(kind=wp), | intent(in) | :: | x_min | |||
| real(kind=wp), | intent(in) | :: | x_max | |||
| real(kind=wp), | intent(in) | :: | y_min | |||
| real(kind=wp), | intent(in) | :: | y_max | 
Render all plots in the figure
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(plot_context), | intent(inout) | :: | backend | |||
| type(plot_data_t), | intent(in) | :: | plots(:) | |||
| integer, | intent(in) | :: | plot_count | |||
| real(kind=wp), | intent(in) | :: | x_min_transformed | |||
| real(kind=wp), | intent(in) | :: | x_max_transformed | |||
| real(kind=wp), | intent(in) | :: | y_min_transformed | |||
| real(kind=wp), | intent(in) | :: | y_max_transformed | |||
| character(len=*), | intent(in) | :: | xscale | |||
| character(len=*), | intent(in) | :: | yscale | |||
| real(kind=wp), | intent(in) | :: | symlog_threshold | |||
| integer, | intent(in) | :: | width | |||
| integer, | intent(in) | :: | height | |||
| real(kind=wp), | intent(in) | :: | margin_left | |||
| real(kind=wp), | intent(in) | :: | margin_right | |||
| real(kind=wp), | intent(in) | :: | margin_bottom | |||
| real(kind=wp), | intent(in) | :: | margin_top | |||
| type(figure_state_t), | intent(in), | optional | :: | state | 
Render queued streamplot arrows after plot lines are drawn
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(plot_context), | intent(inout) | :: | backend | |||
| type(arrow_data_t), | intent(in) | :: | arrows(:) |