vector_stream_writer Derived Type

type, public, abstract :: vector_stream_writer

Abstract interface for vector stream writers (PDF, SVG, etc.)


Components

Type Visibility Attributes Name Initial
character(len=:), public, allocatable :: content_stream
type(vector_graphics_state), public :: current_state

Type-Bound Procedures

procedure(write_command_interface), public, deferred :: write_command

  • subroutine write_command_interface(this, command) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this
    character(len=*), intent(in) :: command

procedure(write_move_interface), public, deferred :: write_move

  • subroutine write_move_interface(this, x, y) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this
    real(kind=wp), intent(in) :: x
    real(kind=wp), intent(in) :: y

procedure(write_line_interface), public, deferred :: write_line

  • subroutine write_line_interface(this, x, y) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this
    real(kind=wp), intent(in) :: x
    real(kind=wp), intent(in) :: y

procedure(write_stroke_interface), public, deferred :: write_stroke

  • subroutine write_stroke_interface(this) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this

procedure(write_color_interface), public, deferred :: write_color

  • subroutine write_color_interface(this, r, g, b) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this
    real(kind=wp), intent(in) :: r
    real(kind=wp), intent(in) :: g
    real(kind=wp), intent(in) :: b

procedure(write_line_width_interface), public, deferred :: write_line_width

  • subroutine write_line_width_interface(this, width) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this
    real(kind=wp), intent(in) :: width

procedure(save_state_interface), public, deferred :: save_state

  • subroutine save_state_interface(this) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this

procedure(restore_state_interface), public, deferred :: restore_state

  • subroutine restore_state_interface(this) Prototype

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this

procedure, public :: initialize_stream => initialize_vector_stream

  • private subroutine initialize_vector_stream(this)

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this

procedure, public :: add_to_stream => add_to_vector_stream

  • private subroutine add_to_vector_stream(this, command)

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this
    character(len=*), intent(in) :: command

procedure, public :: draw_vector_line => draw_generic_vector_line

  • private subroutine draw_generic_vector_line(this, x1, y1, x2, y2)

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this
    real(kind=wp), intent(in) :: x1
    real(kind=wp), intent(in) :: y1
    real(kind=wp), intent(in) :: x2
    real(kind=wp), intent(in) :: y2

procedure, public :: set_vector_color => set_generic_vector_color

  • private subroutine set_generic_vector_color(this, r, g, b)

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this
    real(kind=wp), intent(in) :: r
    real(kind=wp), intent(in) :: g
    real(kind=wp), intent(in) :: b

procedure, public :: set_vector_line_width => set_generic_vector_line_width

  • private subroutine set_generic_vector_line_width(this, width)

    Arguments

    Type IntentOptional Attributes Name
    class(vector_stream_writer), intent(inout) :: this
    real(kind=wp), intent(in) :: width