test_colormap Subroutine

public subroutine test_colormap(self, filename, encoding)

Uses

    • forimage
  • proc~~test_colormap~~UsesGraph proc~test_colormap test_colormap forimage forimage proc~test_colormap->forimage

This procedure computes a default z=f(x,y) function and plot it in a .ppm file using the specified colormap. That function is defined in the [0, 2] range.

Arguments

Type IntentOptional Attributes Name
type(Colormap), intent(inout) :: self
character(len=*), intent(in) :: filename
character(len=*), intent(in), optional :: encoding

Default is binary


Calls

proc~~test_colormap~~CallsGraph proc~test_colormap test_colormap export_pnm export_pnm proc~test_colormap->export_pnm get_format get_format proc~test_colormap->get_format proc~compute_rgb Colormap%compute_RGB proc~test_colormap->proc~compute_rgb set_format set_format proc~test_colormap->set_format set_pnm set_pnm proc~test_colormap->set_pnm proc~get_rgb Colormap%get_RGB proc~compute_rgb->proc~get_rgb

Called by

proc~~test_colormap~~CalledByGraph proc~test_colormap test_colormap program~demo demo program~demo->proc~test_colormap program~demo_reverse demo_reverse program~demo_reverse->proc~test_colormap program~example1 example1 program~example1->proc~test_colormap

Source Code

    subroutine test_colormap(self, filename, encoding)
        use forimage, only: format_pnm
        type(Colormap), intent(inout) :: self
        character(*), intent(in) :: filename
        integer :: k, j     ! Pixbuffer coordinates
        integer, parameter :: pixwidth  = 600
        integer, parameter :: pixheight = 600
        integer, dimension(:,:), allocatable :: rgb_image
        integer  :: red, green, blue
        real(wp) :: z
        type(format_pnm) :: ppm
        character(*), intent(in), optional :: encoding    !! Default is binary

        allocate(rgb_image(pixheight,pixwidth*3))

        do k = 0, pixwidth-1
            do j = 0, pixheight-1
                ! Computing a z=f(x,y) function:
                z = 1.0_wp + sin(k*j/10000.0_wp) * cos(j/100.0_wp)
                ! The corresponding RGB values in our colormap:
                call self%compute_RGB(z, red, green, blue)
                rgb_image(pixheight-j, 3*(k+1)-2) = red
                rgb_image(pixheight-j, 3*(k+1)-1) = green
                rgb_image(pixheight-j, 3*(k+1))   = blue
            end do
        end do

        if (present(encoding)) then
            call ppm%set_format(encoding)
        else
            call ppm%set_format('binary')
        end if

        call ppm%set_pnm(encoding    = ppm%get_format(),&
                        file_format = 'ppm',&
                        width       = pixwidth,&
                        height      = pixheight,&
                        max_color   = 255,&
                        comment     = 'Test generated by ForColormap',&
                        pixels      = rgb_image)
        call ppm%export_pnm(filename)

    end subroutine test_colormap