/*--------------------------------------------------------------------
 * FICHERO:  CdrDibuj.c
 * OBJETIVO: Definir la funcin Cdr_Dibuja()
 * AUTOR:    Pedro Reina
 * FECHA:    M.18.7.1995
 *------------------------------------------------------------------*/

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

#include "Cuadro.h"

/*--------------------------------------------------------------------
 * Declaracin de funciones
 *------------------------------------------------------------------*/

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

/*--------------------------------------------------------------Olimpo
 * FUNCION:  Cdr_Dibuja()
 * OBJETIVO: Dibujar un cuadro
 * ENTRADAS: El tipo de lnea que se dibuja en las lneas
 *           externas, el de las internas, el nmero de filas,
 *           el alto de cada una, el nmero de columnas, el
 *           ancho de cada una, la fila y columna de la esquina
 *           superior izquierda y los colores de papel y tinta
 * SALIDAS:  Ninguna
 * EJEMPLO:  Cdr_Dibuja (CDR_DOBLE,CDR_SIMPLE,2,3,4,1,3,3,
 *                       ROJO,BLANCO)
 *------------------------------------------------------------------*/

#ifdef OLIMPO_PC
void Cdr_Dibuja (Fuera,Dentro,NumF,Alto,NumC,Ancho,Fil,Col,Papel,Tinta)
octeto Fuera,Dentro,NumF,Alto,NumC,Ancho,Fil,Col,Papel,Tinta;
  {
  octeto i,j;
  cadena Cadena;

  Pan_Color (Papel,Tinta);
  Cadena = Cad_Crea (NumC*(Ancho+1)+1);

  Cadena = Cdr_LineaVariada (Cadena,Fuera,Dentro,CDR_ARRIBA,NumC,Ancho);
  Pan_PonTexto (Fil++,Col,Cadena);
  for ( i=0; i<NumF-1 ; i++ )
    {
    for ( j=0 ; j<Alto ; j++ )
      {
      Cadena = Cdr_LineaVariada (Cadena,Fuera,Dentro,CDR_CENTRO,NumC,Ancho);
      Pan_PonTexto (Fil++,Col,Cadena);
      }
      Cadena = Cdr_LineaVariada (Cadena,Fuera,Dentro,CDR_CORTE,NumC,Ancho);
      Pan_PonTexto (Fil++,Col,Cadena);
    }
    for ( j=0 ; j<Alto ; j++ )
      {
      Cadena = Cdr_LineaVariada (Cadena,Fuera,Dentro,CDR_CENTRO,NumC,Ancho);
      Pan_PonTexto (Fil++,Col,Cadena);
      }
  Cadena = Cdr_LineaVariada (Cadena,Fuera,Dentro,CDR_ABAJO,NumC,Ancho);
  Pan_PonTexto (Fil,Col,Cadena);

  Cad_Destruye (Cadena);
  }
#endif

#ifdef OLIMPO_QL
void Cdr_Dibuja (Fuera,Dentro,NumF,Alto,NumC,Ancho,Fil,Col,Papel,Tinta)
octeto Fuera,Dentro,NumF,Alto,NumC,Ancho,Fil,Col,Papel,Tinta;
  {
  octeto F2, C2, Pos, i;

  C2 = Col + NumC * ( Ancho + 1 );
  F2 = Fil + NumF * ( Alto + 1 );

  Pan_Borra (Papel,Fil,Col,F2,C2);

  Cdr_LineaInterna ( Fuera, Fil, Col, Fil, C2,  Tinta );
  Cdr_LineaInterna ( Fuera, Fil, Col, F2,  Col, Tinta );
  Cdr_LineaInterna ( Fuera, F2,  Col, F2,  C2,  Tinta );
  Cdr_LineaInterna ( Fuera, Fil, C2,  F2,  C2,  Tinta );

  Pos = Fil + Alto + 1;
  for ( i = 0 ; i < NumF - 1 ; i++ )
    {
    Cdr_lineaInterna ( Dentro, Pos, Col, Pos, C2, Tinta );
    Pos += Alto + 1;
    }

  Pos = Col + Ancho + 1;
  for ( i = 0 ; i < NumC - 1 ; i++ )
    {
    Cdr_lineaInterna ( Dentro, Fil, Pos, F2, Pos, Tinta );
    Pos += Ancho + 1;
    }
  }
#endif
