Actual source code: ex4f.F90

  1: !
  2: !
  3: !  This example demonstrates use of PetscDrawZoom()
  4: !
  5: !          This function is called repeatedly by PetscDrawZoom() to
  6: !      redraw the figure
  7: !
  8: #include <petsc/finclude/petscsys.h>
  9: #include <petsc/finclude/petscdraw.h>
 10:       subroutine zoomfunction(draw, dummy, ierr)
 11:         use petscsys
 12:         use petscdraw
 13:         implicit none

 15:         PetscReal zero, one, value, max
 16:         PetscDraw draw
 17:         integer dummy
 18:         PetscErrorCode ierr

 20:         PetscInt32 i

 22:         zero = 0
 23:         one = 1
 24:         max = 256.0
 25:         do i = 0, 255
 26:           value = i/max
 27:           PetscCall(PetscDrawLine(draw, zero, value, one, value, i, ierr))
 28:         end do
 29:       end

 31:       program main
 32:         use petscsys
 33:         use petscdraw
 34:         implicit none

 36:         PetscDraw draw
 37:         PetscErrorCode ierr
 38:         integer4 x, y, width, height
 39:         external zoomfunction
 40:         x = 0
 41:         y = 0
 42:         width = 256
 43:         height = 256

 45:         PetscCallA(PetscInitialize(ierr))
 46:         PetscCallA(PetscDrawCreate(PETSC_COMM_WORLD, PETSC_NULL_CHARACTER, 'Title', x, y, width, height, draw, ierr))
 47:         PetscCallA(PetscDrawSetFromOptions(draw, ierr))
 48:         PetscCallA(PetscDrawZoom(draw, zoomfunction, PETSC_NULL_INTEGER, ierr))
 49:         PetscCallA(PetscDrawDestroy(draw, ierr))
 50:         PetscCallA(PetscFinalize(ierr))
 51:       end

 53: !/*TEST
 54: !
 55: !   build:
 56: !     requires: x
 57: !
 58: !   test:
 59: !     output_file: output/empty.out
 60: !
 61: !TEST*/