home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Windoware
/
WINDOWARE_1_6.iso
/
source
/
f4w3api
/
f4w3api.kit
/
WINDEV
/
FORTRAN
/
FWCLOCK
/
DRAWHOUR.FOR
< prev
next >
Wrap
Text File
|
1991-11-09
|
3KB
|
75 lines
$DEFINE GDI
$DEFINE USER
INCLUDE 'WINDOWS.FI'
SUBROUTINE DRAW_HOURHAND
IMPLICIT NONE
C
C Author : Kevin B Black
C Date written : 23-Oct-1991
C Abstract :
C
C DRAW HOUR HAND
C
C Draws minute hand using the colour specified by the COLOUR argument. Only a
C line is drawn in the iconic state, using the second hand's vectors. If solid
C hands are required, in the non-iconic state, then the hands area is flood
C filled with the Polygon function.
C
C Variables
C
REAL HHAND(2,8) ! Hour hand vector description
REAL COSA,SINA,HANGLE ! Cosine, Sine and Hour Hand angle
INTEGER I ! Work integer
INCLUDE 'WINDOWS.FD' ! Windows functions and parameters
RECORD /POINT/ HHANDV(8) ! Hour hand device vectors
INCLUDE 'FWCLOCK.FD' ! Include FWLCOCK variables and parameters
DATA HHAND/-0.03, 0.00, ! Hour hand outline vectors
* -0.04, 0.30,
* -0.05, 0.425,
* 0.00, 0.50,
* 0.05, 0.425,
* 0.04, 0.30,
* 0.03, 0.00,
* -0.03, 0.00/
C
C Compute hour angle
C
HANGLE=PI-(FLOAT(OHOURS)+FLOAT(OMINS)/60.0)*5.0*ZINC
COSA=COS(HANGLE)
SINA=SIN(HANGLE)
C
C Depends if window is open or iconic
C
IF(IMANICON)THEN
C
C In the iconic state only a line is required, the pen and ROP2 mode should
C already have been selected.
C
WSTATUS=MoveTo(FWCPS.HDC,AXC,AYC)
HHANDV(1).X=AXC+FLOAT(RADIUS)*0.45*SINA
HHANDV(1).Y=AYC+FLOAT(RADIUS)*0.45*COSA
WSTATUS=LineTo(FWCPS.HDC,HHANDV(1).X,HHANDV(1).Y)
ELSE
C
C In the open window state the minute hand outline must be rotated to the
C correct angle. It is then drawn using the Polyline or filled in with the
C Polygon function, if solid hands have been chosen by the user.
C
DO I=1,8
HHANDV(I).X=AXC+FLOAT(RADIUS*HHAND(1,I))*COSA+
* FLOAT(RADIUS*HHAND(2,I))*SINA
HHANDV(I).Y=AYC-FLOAT(RADIUS*HHAND(1,I))*SINA+
* FLOAT(RADIUS*HHAND(2,I))*COSA
ENDDO
IF(SOLIDHANDS)THEN
WSTATUS=Polygon(FWCPS.HDC,HHANDV,8)
ELSE
WSTATUS=Polyline(FWCPS.HDC,HHANDV,8)
C IF(SOLIDHANDS)WSTATUS=FloodFill(FWCPS.HDC,
C * AXC+FLOAT(RADIUS)*0.45*SINA,
C * AYC+FLOAT(RADIUS)*0.45*COSA,COLOUR)
ENDIF
ENDIF
RETURN
END