      SUBROUTINE GSLINE (X,Y)
      INCLUDE 'Parametres.f'
      REAL*4 X,Y
      logical*4 ca_coupe_clip,trestresloin
c
      if (trestresloin(x,y)) then
        call gsmove(x,y)
        return
      endif
c
      xxxx = origine_x + facteur_en_x*X
      yyyy = origine_y + facteur_en_y*Y
      if (ipostscript.eq.1) then
        call x11linsrn
     &      (nint(xcourant),nint(ycourant),nint(xxxx),nint(yyyy))
      else
        if (sauve_graphic) then
          xc = xdecalmarc 
     &         + facteurmarc*(xcourant-origine_x) / facteur_en_x
          yc = ydecalmarc 
     &         + facteurmarc*(ycourant-origine_y) / facteur_en_y
          write(isgr,*) xc,yc
          write(isgr,*) xdecalmarc + facteurmarc*x
     &         ,ydecalmarc + facteurmarc*y
          write(isgr,*) ' '
          return
        endif
        if (ipostscript.ne.-1.and.icoul_pend.ne.icoul_eff) then
          call ecriscoul(icoul_pend)
        endif
        xc = (xcourant-origine_x) / facteur_en_x
        yc = (ycourant-origine_y) / facteur_en_y
        if (ca_coupe_clip(x,y,xc,yc)) then
          if (ityp_ligne.ne.ityp_ligne_pend
     &    .or.epais_ligne.ne.epais_ligne_pend) call ecrligne(bid,ibid,0)
          call ecriseconome(ilaser_file,xcourant,0,'bidon')
          call ecriseconome(ilaser_file,ycourant,1,'bidon')
          call ecriseconome(ilaser_file,xxxx,1,'bidon')
          call ecriseconome(ilaser_file,yyyy,2,' S')
        endif
      endif
      xcourant = xxxx
      ycourant = yyyy
      end
