aboutsummaryrefslogtreecommitdiff
path: root/src/gui.f
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui.f')
-rw-r--r--src/gui.f64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/gui.f b/src/gui.f
new file mode 100644
index 0000000..06759bc
--- /dev/null
+++ b/src/gui.f
@@ -0,0 +1,64 @@
+
+
+ SUBROUTINE GUIBOX(K, X1,X2,Y1,Y2, COLOR, LABEL)
+ CHARACTER*(*) COLOR, LABEL
+C----------------------------------------------------------
+C Plots a GUI-button box with label string.
+C Places the box coordinates into the COM_GUI
+C arrays associated with the button index K.
+C FUNCTION LGUI can then determine if a cursor
+C falls within box K.
+C----------------------------------------------------------
+ COMMON /COM_GUI/ XGUI(2,20), YGUI(2,20)
+C
+ IF(K.LT.1 .OR. K.GT.20) RETURN
+C
+ CALL GETORIGIN(XORG,YORG)
+ CALL GETFACTORS(XSCALE,YSCALE)
+C
+ CALL GETCOLOR(ICOL0)
+ CALL NEWCOLORNAME(COLOR)
+C
+C---- set GUI window
+ XGUI(1,K) = (X1 - XORG)/XSCALE
+ XGUI(2,K) = (X2 - XORG)/XSCALE
+ YGUI(1,K) = (Y1 - YORG)/YSCALE
+ YGUI(2,K) = (Y2 - YORG)/YSCALE
+C
+C---- plot GUI window
+ CALL PLOT(XGUI(1,K),YGUI(1,K),3)
+ CALL PLOT(XGUI(2,K),YGUI(1,K),2)
+ CALL PLOT(XGUI(2,K),YGUI(2,K),2)
+ CALL PLOT(XGUI(1,K),YGUI(2,K),2)
+ CALL PLOT(XGUI(1,K),YGUI(1,K),2)
+C
+ NL = LEN(LABEL)
+ CHA = MIN( (XGUI(2,K)-XGUI(1,K))/FLOAT(NL+1),
+ & (YGUI(2,K)-YGUI(1,K))/1.8 )
+ XCA = 0.5*(XGUI(2,K)+XGUI(1,K)) - 0.5*CHA*FLOAT(NL) + 0.2*CHA
+ YCA = 0.5*(YGUI(2,K)+YGUI(1,K)) - 0.6*CHA
+ CALL PLCHAR(XCA,YCA,CHA,LABEL,0.0,NL)
+C
+ CALL NEWCOLOR(ICOL0)
+ RETURN
+ END ! GUIBOX
+
+
+
+ LOGICAL FUNCTION LGUI(K,XC,YC)
+C-----------------------------------------------
+C Returns T if location XC,YC falls within
+C the GUI(K) window defined in GUIBOX.
+C-----------------------------------------------
+ COMMON /COM_GUI/ XGUI(2,20), YGUI(2,20)
+C
+ LGUI = .FALSE.
+ IF(K.LT.1 .OR. K.GT.20) RETURN
+C
+ LGUI = XC .GT. XGUI(1,K) .AND.
+ & XC .LE. XGUI(2,K) .AND.
+ & YC .GT. YGUI(1,K) .AND.
+ & YC .LE. YGUI(2,K)
+C
+ RETURN
+ END ! LGUI