 ;Rectifie les valeur LX,LY,etc... si colision sur les bords
 ; horizontaux de la fenetre d'affichage.


  MOV EAX,[PXTREMmin]
  CMP [Pdepart],EAX  ;compare pdpart  PXTREMmin
  JGE @SR_P_GT0      ;si infrieur
   CMP [Pfin],EAX    ;alors compare Pfin  [PXTREMmin]
   JGE @SR_P_GT1     ;si Pfin < PXTREMmin
    JMP @SR_P_OUT    ;le polygone n'est pas dans la fenetre
   @SR_P_GT1:        ;a partir d'ici on sait qu'il y a colision sur PXTREMmin

   ;Fixe les nouvelles valeur de dpart LX,LY,LZ,offsetd,offseta et Pdepart

   ;calcul PXTREMmin-Pdepart
    MOV EBX,[PXTREMmin]
    SUB EBX,[Pdepart]

   ;calcul nouveau LX=LX+INCLX*(PXTREMmin-Pdepart)
    MOV EAX,INCLX
    IMUL EBX
    ADD LX,EAX

   ;calcul nouveau LY=LY+INCLY*(PXTREMmin-Pdepart)
    MOV EAX,INCLY
    IMUL EBX
    ADD LY,EAX

   ;calcul nouveau LZ=LZ+INCLZ*(PXTREMmin-Pdepart)
    MOV EAX,INCLZ
    IMUL EBX
    ADD LZ,EAX

   ;calcul nouveau offsetd=offsetd+INCofsd*(PXTREMmin-Pdepart)
    MOV EAX,INCofsd
    IMUL EBX
    ADD offsetd,EAX

   ;calcul nouveau Pdpart=Pdepart+(PXTREMmin-Pdepart)
    ADD Pdepart,EBX

   ;calcul nouveau offseta dpend de la position de Pmilieu 
   ;par raport  PXTREMmin.
    MOV EAX,PXTREMmin
    CMP Pmilieu,EAX    ;Compare Pmilieu  PXTREMmin
    JG @SR_P_G_T3      ;si infrieur ou gale alors:
     MOV EBX,65536     ;offseta=65536*(Y2-WYmin)+incofsa1*(PXTREMmin-Pmileu) 
     MOV EAX,[P2_2D+4]
     SUB EAX,[WYmin]
     IMUL EBX
     MOV offseta,EAX

     MOV EAX,PXTREMmin
     SUB EAX,Pmilieu
     IMUL DWORD PTR [incofsa1]
     ADD [offseta],EAX
    JMP @SR_P_G_T4
    @SR_P_G_T3:        ;si Pmilieu>PXTREMmin
     MOV EAX,INCofsa3
     IMUL EBX
     ADD offseta,EAX
    @SR_P_G_T4:

  ;test si colision  droite compare Pfin,PXTREMmax
     MOV EAX,PXTREMmax
     CMP Pfin,EAX    ;Si Pfin >PXTREMmax alors colision sur bord droit
     JLE @SR_P_GT5   ;Pfin=PXTREMmax
      MOV Pfin,EAX
     @SR_P_GT5:

  JMP @SR_P_GT2
  @SR_P_GT0:         ;ICI Pdepart>PXTREMmin

   MOV EAX,PXTREMmax
   CMP [Pfin],EAX    ;alors compare Pfin  [PXTREMmax]
   JGE @SR_P_GT6     ;si Pfin < PXTREMmax il peut y avoir colision sur bord gauche
                     ;ou droit
    MOV EAX,PXTREMmin 
    CMP [Pfin],EAX    ;compare Pfin  PXTREMmin 
    JGE @SR_P_GT7     ;si infrieurs alor colision sur bord gauche
     MOV Pfin,EAX     ;Pfin=PXTREMmin
    @SR_P_GT7:        

    MOV EAX,PXTREMmax
    CMP [Pdepart],EAX ;compare Pdepart  PXTREMmax
    JLE @SR_P_GT8     ;si Pdpart>PXTREMmax alors colision sur bord droit
                      ;ou le polygone est en dehors de la fenetre






    @SR_P_GT8:
    JMP @SR_P_GT2

   @SR_P_GT6:       ;a partir d'ici on sait: colision seulement sur PXTREMmax








  @SR_P_GT2:         ;rectification effectu





