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
          
              
    
      
          - 
                    
     subroutine write_command_interface(this, command)  
PrototypeArguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(vector_stream_writer), | intent(inout) |  |  | :: | this |  |  
            | character(len=*), | intent(in) |  |  | :: | command |  |  
 
 
           
          
              
    
      
          - 
                    
     subroutine write_move_interface(this, x, y)  
PrototypeArguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(vector_stream_writer), | intent(inout) |  |  | :: | this |  |  
            | real(kind=wp), | intent(in) |  |  | :: | x |  |  
            | real(kind=wp), | intent(in) |  |  | :: | y |  |  
 
 
           
          
              
    
      
          - 
                    
     subroutine write_line_interface(this, x, y)  
PrototypeArguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(vector_stream_writer), | intent(inout) |  |  | :: | this |  |  
            | real(kind=wp), | intent(in) |  |  | :: | x |  |  
            | real(kind=wp), | intent(in) |  |  | :: | y |  |  
 
 
           
          
              
    
      
          - 
                    
     subroutine write_stroke_interface(this)  
PrototypeArguments
 
           
          
              
    
      
          - 
                    
     subroutine write_color_interface(this, r, g, b)  
PrototypeArguments
    
      
        | Type | Intent | Optional | 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 |  |  
 
 
           
          
              
    
      
          - 
                    
     subroutine write_line_width_interface(this, width)  
PrototypeArguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(vector_stream_writer), | intent(inout) |  |  | :: | this |  |  
            | real(kind=wp), | intent(in) |  |  | :: | width |  |  
 
 
           
          
              
    
      
          - 
                    
     subroutine save_state_interface(this)  
PrototypeArguments
 
           
          
              
    
      
          - 
                    
     subroutine restore_state_interface(this)  
PrototypeArguments
 
           
          
              
    
      
          - 
                    
    private  subroutine initialize_vector_stream(this)  
Arguments
 
           
          
              
    
      
          - 
                    
    private  subroutine add_to_vector_stream(this, command)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(vector_stream_writer), | intent(inout) |  |  | :: | this |  |  
            | character(len=*), | intent(in) |  |  | :: | command |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine draw_generic_vector_line(this, x1, y1, x2, y2)  
Arguments
    
      
        | Type | Intent | Optional | 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 |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine set_generic_vector_color(this, r, g, b)  
Arguments
    
      
        | Type | Intent | Optional | 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 |  |  
 
 
           
          
              
    
      
          - 
                    
    private  subroutine set_generic_vector_line_width(this, width)  
Arguments
    
      
        | Type | Intent | Optional | Attributes |  | Name |  |  
            | class(vector_stream_writer), | intent(inout) |  |  | :: | this |  |  
            | real(kind=wp), | intent(in) |  |  | :: | width |  |