27 use iso_c_binding
, only: c_ptr, c_int32_t, c_float, c_double
29 private :: c_ptr, c_int32_t, c_float, c_double
46 include
'included_plplot_configured_types.f90'
62 integer,
parameter :: private_plint = c_int32_t
63 integer,
parameter :: private_plbool = c_int32_t
64 integer,
parameter :: private_plunicode = c_int32_t
68 integer,
parameter :: private_single = c_float
69 integer,
parameter :: private_double = c_double
76 integer(kind=private_plint) :: nx, ny, nz
80 type(c_ptr) :: xg, yg, zg
81 integer(kind=private_plint) :: nx, ny, nz
86 use iso_c_binding
, only: c_ptr, c_null_char, c_loc
88 private :: c_ptr, c_null_char, c_loc
95 character(len=*),
dimension(:),
intent(in) :: character_array
96 character(len=1),
dimension(:,:),
allocatable,
target,
intent(out) :: cstring_array
97 type(c_ptr),
dimension(:),
allocatable,
intent(out) :: cstring_address
99 integer :: j_local, length_local, number_local, length_column_local
102 length_local = len(character_array)
104 number_local =
size(character_array)
108 allocate( cstring_array(length_local+1, number_local) )
109 allocate( cstring_address(number_local) )
111 do j_local = 1, number_local
112 length_column_local = len(trim(character_array(j_local))) + 1
114 cstring_array(1:length_column_local, j_local) = &
115 transfer(trim(character_array(j_local))//c_null_char,
" ", length_column_local)
116 cstring_address(j_local) = c_loc(cstring_array(1,j_local))
122 character(len=*),
intent(out) :: fstring
123 character(len=1),
dimension(:),
intent(in) :: cstring
128 do i_local = 1,
min(len(fstring),
size(cstring))
129 if ( cstring(i_local) /= c_null_char )
then
130 fstring(i_local:i_local) = cstring(i_local)
140 use plplot_types, only: private_plint, private_plflt, private_double
143 private :: private_plint, private_plflt, private_double
156 real(kind=private_double) :: dx, dy
157 real(kind=private_double) :: wx, wy
182 type, bind(c) :: private_PLGraphicsIn
183 integer(kind=private_plint) ::
type
184 integer(kind=private_plint) :: state
185 integer(kind=private_plint) :: keysym
186 integer(kind=private_plint) :: button
187 integer(kind=private_plint) :: subwindow
188 character(len=1),
dimension(16) :: string
189 integer(kind=private_plint) :: pX, pY
190 real(kind=private_plflt) :: dX, dY
191 real(kind=private_plflt) :: wX, wY
192 end type private_plgraphicsin
196 integer :: plGetCursor_impl
198 type(private_plgraphicsin) :: gin_out
201 function interface_plgetcursor( gin ) bind(c,name='plGetCursor')
202 import :: private_plgraphicsin, private_plint
204 integer(kind=private_plint) :: interface_plGetCursor
205 type(private_plgraphicsin),
intent(out) :: gin
206 end function interface_plgetcursor
209 plgetcursor_impl = int(interface_plgetcursor( gin_out ))
212 gin%type = int(gin_out%type)
213 gin%state = int(gin_out%state)
214 gin%keysym = int(gin_out%keysym)
215 gin%button = int(gin_out%button)
216 gin%subwindow = int(gin_out%subwindow)
218 gin%pX = int(gin_out%pX)
219 gin%pY = int(gin_out%pY)
220 gin%dX =
real(gin_out%dx, kind=private_double)
221 gin%dY =
real(gin_out%dy, kind=private_double)
222 gin%wX =
real(gin_out%wx, kind=private_double)
223 gin%wY =
real(gin_out%wy, kind=private_double)
230 use iso_c_binding
, only: c_ptr, c_f_pointer
233 private :: c_ptr, private_plflt
236 real(kind=private_plflt),
value,
intent(in) :: x, y
237 real(kind=private_plflt),
intent(out) :: tx, ty
238 type(c_ptr),
value,
intent(in) :: tr_in
240 real(kind=private_plflt),
dimension(:),
pointer :: tr
242 call c_f_pointer( tr_in, tr, [6] )
244 tx = tr(1) * x + tr(2) * y + tr(3)
245 ty = tr(4) * x + tr(5) * y + tr(6)
subroutine character_array_to_c(cstring_array, cstring_address, character_array)
subroutine plplot_private_pltr(x, y, tx, ty, tr_in)
subroutine copystring2f(fstring, cstring)
integer function plgetcursor_impl(gin)
void string(PLINT n, const PLFLT *x, const PLFLT *y, const char *string)