/*--------------------------------------------------------------------
 * FICHERO:  DbnInvie.c
 * OBJETIVO: Definir la funcin Dbn_Invierte()
 * AUTOR:    Pedro Reina
 * FECHA:    V.14.7.1995
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Ficheros de cabecera
 *------------------------------------------------------------------*/

#include "Diblane.h"

/*--------------------------------------------------------------------
 * Definicin de funciones
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------Olimpo
 * FUNCION:  Dbn_Invierte()
 * OBJETIVO: Invertir los colores de un objeto diblane
 * ENTRADAS: Un diblane
 * SALIDAS:  Ninguna
 * EJEMPLO:  Dbn_Invierte (Dibujo)
 *------------------------------------------------------------------*/
void Dbn_Invierte (Dibujo)
diblane Dibujo;
  {
  memoria Origen;
  entero  i;
  octeto  Mascara;

  Origen = Dbn_Dato (Dibujo);
  
  for (  i=0 ; i < Dbn_Tamano(Dibujo) ; i++ )
    { Origen[i] = ~ Origen[i]; }
    
  /* Por esttica, los bits del ltimo octeto de cada
     lnea que no pertenezcan al diblane se ponen a 0 */
     
  Mascara = 0xFF << (8*Dbn_AnchoEnOxel(Dibujo)-Dbn_Ancho(Dibujo));
  if ( Mascara != 0xFF )
  for (  i = Dbn_AnchoEnOxel(Dibujo)-1 ; 
         i < Dbn_Tamano(Dibujo) ; 
         i += Dbn_AnchoEnOxel(Dibujo) )
    { Origen[i] &= Mascara; }
  }
