/*****************************************************************************
 *
 * Nom:				tracewin.c
 * Desc:				fonctions de traçage dans les fenetres
 *
 *
 * version 			: $VER: tracewin.c 1.2 (08.02.98)
 *****************************************************************************
 */ 
#include <proto/graphics.h>
#include <math.h>
#include "utils.h"


void initwin(idWin * prj) {
  int i ;
  ULONG mX, mY ;
  mX = prj->backWin.width / 2 ;
  mY = prj->backWin.height / 2 ;
  SetAPen(prj->win->RPort, prj->backWin.back) ;		// couleur fond
  RectFill(prj->win->RPort, 0, 0, prj->backWin.width - 1,
                                  prj->backWin.height - 1) ;// trace le fond
  SetAPen(prj->win->RPort, 7) ;							// couleur jaune
  for(i = 0; i < 360; i=i+30) {
    /* trace les repères des heures
     */
    Move(prj->win->RPort, ULONG(cos(PI*i/180.0) * (mX-mX/10L)) + mX, ULONG(sin(PI*i/180.0) * (mX-mX/10L)) + mY) ;
    Draw(prj->win->RPort, ULONG(cos(PI*i/180.0) * mX) + mX, ULONG(sin(PI*i/180.0) * mY) + mY) ;
  }      
}

void effacer(idWin * prj) {
  ULONG mX, mY ;
  mX = prj->backWin.width / 2 ;
  mY = prj->backWin.height / 2 ;
  SetAPen(prj->win->RPort, prj->backWin.back) ;		// couleur fond
  /* efface les heures
   */
  Move(prj->win->RPort, mX,mY) ;
  Draw(prj->win->RPort, mX+(ULONG)(cos(PI*((prj->oldH)*30.0-90.0 + (prj->oldM)/2.0)/180.0)*(mX-mX/2L)),mY+(ULONG)(sin(PI*((prj->oldH)*30.0-90.0 + (prj->oldM)/2.0)/180.0)*(mY-mY/2L))) ;
  /* efface les minutes
   */
  Move(prj->win->RPort, mX,mY) ;
  Draw(prj->win->RPort, mX+(ULONG)(cos(PI*((prj->oldM)*6.0-90.0)/180.0)*(mX-mX/3L)), mY+(ULONG)(sin(PI*((prj->oldM)*6.0-90.0)/180.0)*(mY-mY/3L))) ;
  /* efface les secondes
   */
  Move(prj->win->RPort, mX,mY) ;
  Draw(prj->win->RPort, mX+(ULONG)(cos(PI*((prj->oldS)*6.0-90.0)/180.0)*(mX-mX/4L)), mY+(ULONG)(sin(PI*((prj->oldS)*6.0-90.0)/180.0)*(mY-mY/4L))) ;
}
void retracer(idWin * prj) {
  ULONG mX, mY ;
  mX = prj->backWin.width / 2 ;
  mY = prj->backWin.height / 2 ;
  SetAPen(prj->win->RPort, 1) ;		// noir
  /* trace les heures
   */
  Move(prj->win->RPort, mX,mY) ;
  Draw(prj->win->RPort, mX+(ULONG)(cos(PI*( (prj->heu)*30.0-90.0 + (prj->min)/2.0) /180.0)*(mX-mX/2L)), mY+(ULONG)(sin(PI*((prj->heu)*30.0-90.0 + (prj->min)/2.0)/180.0)*(mY-mY/2L))) ;
  /* trace les minutes
   */
  Move(prj->win->RPort, mX,mY) ;
  Draw(prj->win->RPort, mX+(ULONG)(cos(PI*((prj->min)*6.0-90.0)/180.0)*(mX-mX/3L)), mY+(ULONG)(sin(PI*((prj->min)*6.0-90.0)/180.0)*(mY-mY/3L))) ;
  /* trace les secondes
   */
  Move(prj->win->RPort, mX,mY) ;
  Draw(prj->win->RPort, mX+(ULONG)(cos(PI*((prj->sec)*6.0-90.0)/180.0)*(mX-mX/4L)), mY+(ULONG)(sin(PI*((prj->sec)*6.0-90.0)/180.0)*(mY-mY/4L))) ;
}

