I'm new to Intel FORTRAN long as well as Quick-Win and I'm getting stuck trying to rescale a graph I made using Scigraph. I've tried different things and all my changes keep either not showing the graph or messing the child window completely.
What I'm trying to do in this program is to graph in a child window and be able to make the graph smaller or larger as the child window changes dimensions. The dimensions of the child window are changed with the mouse cursor, by clicking and dragging a corner. An example of what I'm trying to do is when you have a picture on your computer and you open it for example using Windows Photo Viewer and you reshape the window, the image resizes accordingly. I would like my program to be able to do the same thing. I've been trying to understand how to be able to do it reading the documentation that I can find but have had no luck.
Here is my full program. I apoligize for the lengh it's taking up, I dind't know what would be relevent to get the help I need.
PROGRAM SGPlotting USE IFQWIN !required to use setexitqq(QWIN$EXITPERSIST) USE DFLIB integer i,n real,ALLOCATABLE:: c(:),p(:,:),sumP(:) open(19,file="data.dat") !data file from SASi, named "test.dat" in SASi ! open(20,file="arrays.dat") !not needed, used for testing arrays ! open(21,file="graph_points.dat") !testing if correct values of summations are in array sumP read(19,*) n !reads in number of rows in file allocate (c(n),p(n,18),sumP(n)) !18 values, 20 accual columbs do i=1,n read(19,*) c(i) ,(p(i,j),j=1,18) ! write(20,*) c(i), (p(i,j),j=1,18) end do do i=1,n sumP(i) = 0 do j=1,18 sumP(i) = p(i,j) + sumP(i) end do ! write(21,*) i,sumP(i) end do open(10,file='user',title='Line Graph 1') call PlotLineGraph(c,sumP,n) !open(11,file='user',title='Line Graph 2') !call PlotLineGraph(c,sumP,n) i = setexitqq(QWIN$EXITPERSIST) !required to exit the plots close(19) !close file data.dat ! close(20) !close file arrays.dat ! close(21) !close file graph_points.dat END PROGRAM SGPlotting SUBROUTINE PlotLineGraph(x,y,numPoints) USE SCIGRAPH !required to use /GraphSettings/ and so on integer numPoints real, dimension(2*numPoints+1) :: array real, dimension(numPoints) :: x,y ! real, parameter :: H1(10)= (/1,2,2,3,3,4,4,5,5,6/) !testing array, groupings of (x,y) cordinates RECORD /GraphSettings/ graph RECORD /DataSettings/ dSettings RECORD /AxisSettings/ axis(2) INTEGER retcode,status,ex RECORD /windowconfig/ wc LOGICAL statusmode TYPE (QWINFO) winfo ! numPoints2 = 5 !testing number of points, use with H1(10) array, indicates the number of (x,y) groups if( .not. GetWindowConfig(wc) ) stop 'Window Not Open' ! sets the acual size of the child window winfo.H = 200 gwinH = winfo.H winfo.W =300 gwinW = winfo.W winfo.TYPE = QWIN$SET status = SETWSIZEQQ(10, winfo) ! Get current size of child window associated with unit 4. status = GETWSIZEQQ(10, QWIN$SIZECURR, winfo) WRITE (*,*) "Child window size is ", winfo.H, " by ", winfo.W ! Get maximum size of frame window. status = GETWSIZEQQ(QWIN$FRAMEWINDOW, QWIN$SIZEMAX, winfo) WRITE (*,*) "Max frame window size is ", winfo.H, " by ", winfo.W ex = 1 ! sets the size of the actual graph wc%numxpixels = gwinW *2 wc%numypixels = gwinH* 2 wc%numtextcols = -1 wc%numtextrows = -1 wc%numcolors = -1 wc%mode = QWIN$SCROLLDOWN statusmode = SETWINDOWCONFIG(wc) IF (.NOT. statusmode) statusmode = SETWINDOWCONFIG(wc) ct = 1 do ix=1,numPoints array(ct) = x(ix) ! print *, x(ix),y(ix), ct, array(ct) do jy=1,2 array(ct+1) = y(ix) ct = ct + 1 ! print *, ct, array(ct), x(ct), y(ct) ! pause(11) end do end do ! do ix=1, numPoints !shows that im passing the correct values ! print *, x(ix),y(ix) ! pause(11) ! end do !11 continue retcode=GetGraphDefaults($GTXY,graph) graph.graphColor=$CIBRIGHTWHITE graph.graphBgColor=$CIBLACK!$CIBRIGHTWHITE!$CIBROWN graph.setGraphMode=.False. graph.x2=wc.numxpixels-1 graph.y2=wc.numypixels-1 graph.title='Intensity Vs. Bin #' !Main Title of Graph ! retcode=GetDataDefaults(graph,numPoints2,H1,dSettings) !testing H1(10) retcode=GetDataDefaults(graph,numPoints,array,dSettings) dSettings.markerType = $MKNONE dSettings.lineType = $LTSOLID dSettings.lineColor = $CIYELLOW retcode=GetAxisDefaults(graph,dSettings,$ATX,$AFLINEAR,axis(1)) axis(1).title='Bin #' axis(1).axisPos=$APBOTTOM!$APTOP axis(1).tickType=$TTINSIDE axis(1).tickColor=$CILIGHTRED axis(1).minorTickColor=$CIRED axis(1).gridStyle=$GSNONE !axis(1).gridLineType = $LTNONE retcode=GetAxisDefaults(graph,dSettings,$ATY,$AFLINEAR,axis(2)) axis(2).title='Intensity' axis(2).tickType=$TTINSIDE axis(2).tickColor=$CILIGHTRED axis(2).minorTickColor=$CIRED axis(2).gridStyle=$GSNONE !axis(2).gridLineType = $LTNONE retcode=PlotGraph(graph,2,axis,1) ! retcode=PlotData(graph,H1,dSettings,axis(1),axis(2)) !testing H1(10) retcode=PlotData(graph,array,dSettings,axis(1),axis(2)) !do while (ex == 1) !status = GETWSIZEQQ(10, QWIN$SIZECURR, winfo) !statusmode = SETWINDOWCONFIG(wc) !wc%numxpixels = winfo.W *12 !wc%numypixels = winfo.H *14 !status = SETWSIZEQQ(10, winfo) !!! Get current size of child window associated with unit 4. !!status = GETWSIZEQQ(10, QWIN$SIZECURR, winfo) !!WRITE (*,*) "Child window size is ", winfo.H, " by ", winfo.W !go to 11 ! do while (ex == 0) ! continue ! end do !end do END SUBROUTINE