fortplot_ascii Module

ASCII terminal plotting backend

This module implements text-based plotting for terminal output using ASCII characters and Unicode box drawing characters. Provides basic line plotting with character density mapping for visualization.

Author: fortplot contributors



Derived Types

type, public, extends(plot_context) ::  ascii_context

Components

Type Visibility Attributes Name Initial
integer, public :: width
integer, public :: height
real(kind=wp), public :: x_min
real(kind=wp), public :: x_max
real(kind=wp), public :: y_min
real(kind=wp), public :: y_max
logical, public :: has_rendered_arrows = .false.
logical, public :: uses_vector_arrows = .false.
logical, public :: has_triangular_arrows = .false.
character(len=1), public, allocatable :: canvas(:,:)
character(len=:), public, allocatable :: title_text
character(len=:), public, allocatable :: xlabel_text
character(len=:), public, allocatable :: ylabel_text
logical, public :: title_set = .false.
type(text_element_t), public, allocatable :: text_elements(:)
integer, public :: num_text_elements = 0
real(kind=wp), public :: current_r
real(kind=wp), public :: current_g
real(kind=wp), public :: current_b
integer, public :: plot_width = 80
integer, public :: plot_height = 24

Type-Bound Procedures

procedure, public :: line => ascii_draw_line
procedure, public :: color => ascii_set_color
procedure, public :: text => ascii_draw_text
procedure, public :: set_line_width => ascii_set_line_width
procedure, public :: set_line_style => ascii_set_line_style
procedure, public :: save => ascii_finalize
procedure, public :: set_title => ascii_set_title
procedure, public :: draw_marker => ascii_draw_marker
procedure, public :: set_marker_colors => ascii_set_marker_colors
procedure, public :: set_marker_colors_with_alpha => ascii_set_marker_colors_with_alpha
procedure, public :: fill_heatmap => ascii_fill_heatmap
procedure, public :: draw_arrow => ascii_draw_arrow
procedure, public :: get_ascii_output => ascii_get_output

New polymorphic methods to eliminate SELECT TYPE

procedure, public :: get_width_scale => ascii_get_width_scale
procedure, public :: get_height_scale => ascii_get_height_scale
procedure, public :: fill_quad => ascii_fill_quad
procedure, public :: render_legend_specialized => ascii_render_legend_specialized
procedure, public :: calculate_legend_dimensions => ascii_calculate_legend_dimensions
procedure, public :: set_legend_border_width => ascii_set_legend_border_width
procedure, public :: calculate_legend_position_backend => ascii_calculate_legend_position
procedure, public :: extract_rgb_data => ascii_extract_rgb_data
procedure, public :: get_png_data_backend => ascii_get_png_data
procedure, public :: prepare_3d_data => ascii_prepare_3d_data
procedure, public :: render_ylabel => ascii_render_ylabel
procedure, public :: draw_axes_and_labels_backend => ascii_draw_axes_and_labels
procedure, public :: save_coordinates => ascii_save_coordinates
procedure, public :: set_coordinates => ascii_set_coordinates
procedure, public :: render_axes => ascii_render_axes

Functions

public function create_ascii_canvas(width, height) result(ctx)

Arguments

Type IntentOptional Attributes Name
integer, intent(in), optional :: width
integer, intent(in), optional :: height

Return Value type(ascii_context)