/*--------------------------------------------------------------------
 * FICHERO:  Vpan.c
 * OBJETIVO: Probar el objeto Pantalla
 * AUTOR:    Pedro Reina
 * FECHA:    J.18.5.1995
 *------------------------------------------------------------------*/

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

#include "Pantalla.h"

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

void P_Pan_PonCar();
void P_Pan_Borra();
void P_Pan_Color();
void P_Pan_CursorVisible();
void P_Pan_BorraLinea();
void P_Pan_Resalta();
void P_Pan_Entero();
void P_Pan_Real();
void P_Pan_Modo();
void P_Pan_Mueve();
void P_Pan_TextoControlado();
void DibujaMarco();

/*--------------------------------------------------------------------
 * Programa principal
 *------------------------------------------------------------------*/
void main()
  {
  int Opcion, Sigue=1;
  contador Fil, Col;

  Pan_Define (PAN_TEXTO);
  while ( Sigue )
    {
    Pan_Limpia();
    Pan_Color (NEGRO,BLANCO);
    Fil = 0, Col = 3;
    Pan_PonTexto (Fil++,Col,"Prueba del objeto Pantalla" );
    Pan_PonTexto (Fil++,Col,"==========================" );
    Fil++;
    Pan_PonTexto (Fil++,Col,"0. Fin del programa" );
    Pan_PonTexto (Fil++,Col,"1. Paso a grfico" );
    Pan_PonTexto (Fil++,Col,"2. Paso a texto" );
    Pan_PonTexto (Fil++,Col,"3. Pan_PonCar()" );
    Pan_PonTexto (Fil++,Col,"4. Pan_Borra()" );
    Pan_PonTexto (Fil++,Col,"5. Marco de la pantalla" );
    Pan_PonTexto (Fil++,Col,"6. Pan_Color()" );
    Pan_PonTexto (Fil++,Col,"7. Pan_Resalta()" );
    Pan_PonTexto (Fil++,Col,"8. Pan_CursorVisible()" );
    Pan_PonTexto (Fil++,Col,"9. Pan_BorraLinea()" );
    Col--;
    Pan_PonTexto (Fil++,Col,"10. Pan_Entero()" );
    Pan_PonTexto (Fil++,Col,"11. Pan_Modo()" );
    Pan_PonTexto (Fil++,Col,"12. Pan_Real()" );
    Pan_PonTexto (Fil++,Col,"13. Pan_Mueve()" );
    Pan_PonTexto (Fil++,Col,"14. Pan_TextoControlado()" );
    Fil++;
    Pan_PonTexto (Fil++,Col,"Introduce nmero de opcin: " );
    scanf ( "%d", &Opcion );
    getchar();

    switch ( Opcion )
      {
      case 0:   Sigue = 0;               break;
      case 1:   Pan_Cierra();
                Pan_Define (PAN_GRAFICO);
                break;
      case 2:   Pan_Cierra();
                Pan_Define (PAN_TEXTO);
                break;
      case 3:   P_Pan_PonCar();          break;
      case 4:   P_Pan_Borra();           break;
      case 5:   DibujaMarco();           break;
      case 6:   P_Pan_Color();           break;
      case 7:   P_Pan_Resalta();         break;
      case 8:   P_Pan_CursorVisible();   break;
      case 9:   P_Pan_BorraLinea();      break;
      case 10:  P_Pan_Entero();          break;
      case 11:  P_Pan_Modo();            break;
      case 12:  P_Pan_Real();            break;
      case 13:  P_Pan_Mueve();           break;
      case 14:  P_Pan_TextoControlado(); break;
      }
    }
  Pan_Cierra();
  }

/*--------------------------------------------------------------------
 * Funcin P_Pan_PonCar()
 *------------------------------------------------------------------*/
void P_Pan_PonCar()
  {
  octeto Fil, Col;

  Pan_Limpia();
  for ( Fil = 0 ; Fil < 16 ; Fil++ )
    {
    for ( Col = 0 ; Col < 16 ; Col++ )
      { Pan_PonCar (1+Fil,2+2*Col,16*Fil+Col); }
    }

  Pan_PonCar (23,79,'*');

  Pan_PonTexto (23,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Pan_Borra()
 *------------------------------------------------------------------*/
void P_Pan_Borra()
  {
  Pan_Limpia();

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (4,10,"Rojo");
  Pan_Borra (ROJO,5,10,20,30);

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (4,30,"Verde");
  Pan_Borra (VERDE,5,30,20,50);

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (4,50,"Blanco");
  Pan_Borra (BLANCO,5,50,20,70);

  Pan_Borra (NEGRO,17,15,19,65);
  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (18,17,"Negro");

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (23,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Pan_Color()
 *------------------------------------------------------------------*/
void P_Pan_Color()
  {
  Pan_Limpia();
  Pan_Color ( VERDE, NEGRO );
  Pan_PonTexto ( 1,1,"Papel verde y tinta negro" );
  Pan_Color ( NEGRO, ROJO );
  Pan_PonTexto ( 3,1,"Papel negro y tinta rojo" );
  Pan_Color ( BLANCO, VERDE );
  Pan_PonTexto ( 5,1,"Papel blanco y tinta verde" );

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (23,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Pan_Resalta()
 *------------------------------------------------------------------*/
void P_Pan_Resalta()
  {
  Pan_Limpia();
  Pan_Color (NEGRO,BLANCO);

  Pan_Resalta (SI);
  Pan_PonTexto (1,1,"Texto resaltado");

  Pan_Resalta (NO);
  Pan_PonTexto (3,1,"Texto normal");

  Pan_PonTexto (23,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Pan_CursorVisible()
 *------------------------------------------------------------------*/
void P_Pan_CursorVisible()
  {
  Pan_Limpia();
  Pan_Color (NEGRO,BLANCO);

  Pan_CursorVisible (NO);
  Pan_PonTexto (1,1,"Cursor invisible. ");
  Pan_Texto ("Pulsa ENTER para seguir: ");

  #ifdef OLIMPO_QL
  getch();
  #else
  getchar();
  #endif

  Pan_CursorVisible (SI);
  Pan_PonTexto (3,1,"Cursor visible. ");
  Pan_Texto ("Pulsa ENTER para seguir: ");

  #ifdef OLIMPO_QL
  getch();
  #else
  getchar();
  #endif
  }

/*--------------------------------------------------------------------
 * Funcin P_Pan_BorraLinea()
 *------------------------------------------------------------------*/
void P_Pan_BorraLinea()
  {
  octeto Fil, Col;

  Pan_Limpia();
  Pan_Color (NEGRO,BLANCO);

  Pan_PonTexto (1,1,"Escribo las lneas 3,4,5, y 6. Borro las 4 y 5");
  for ( Fil = 3 ; Fil < 7 ; Fil++ )
    {
    for ( Col = 0 ; Col < 80 ; Col++ )
      { Pan_PonCar (Fil,Col,'+'); }
    }

  Pan_Papel (ROJO);
  Pan_BorraLinea (4);

  Pan_Papel (VERDE);
  Pan_BorraLinea (5);

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (23,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Pan_Entero()
 *------------------------------------------------------------------*/
void P_Pan_Entero()
  {
  Pan_Limpia();
  Pan_Color (BLANCO,NEGRO);

  Pan_PonEntero (1,1,53,3);
  Pan_PonEntero (3,1,-12353,6);
  Pan_PonEntero (5,1,1,1);
  Pan_PonEntero (7,1,1,2);
  Pan_PonEntero (9,1,1,3);
  Pan_PonEntero (11,1,1,4);
  Pan_PonEntero (13,1,1,5);
  Pan_PonEntero (15,1,1,6);
  Pan_PonEntero (17,1,4000111000,10);
  Pan_PonEntero (19,1,-2000111000,10);

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (23,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Pan_Modo()
 *------------------------------------------------------------------*/
void P_Pan_Modo()
  {
  Pan_Limpia();
  Pan_Color (NEGRO,BLANCO);

  Pan_PonTexto (4,0,"Ahora estamos en modo: ");

  if ( Pan_Modo() == PAN_TEXTO ) { Pan_Texto ("Texto"); }
  if ( Pan_Modo() == PAN_GRAFICO ) { Pan_Texto ("Grfico"); }

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (23,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Pan_Mueve()
 *------------------------------------------------------------------*/
void P_Pan_Mueve()
  {
  Pan_Limpia();
  Pan_Color (ROJO,BLANCO);

  Pan_PonTexto (4,0,"0000000000000000000000000");
  Pan_PonTexto (5,0,"1111111111111111111111111");
  Pan_PonTexto (6,0,"2222222222222222222222222");
  Pan_PonTexto (7,0,"3333333333333333333333333");
  Pan_PonTexto (8,0,"4444444444444444444444444");
  Pan_PonTexto (9,0,"5555555555555555555555555");

  Pan_Mueve (PAN_ARRIBA, 1,5,1,8,7); 
  Pan_Mueve (PAN_ABAJO , 2,5,11,8,21); 

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (23,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin DibujaMarco()
 *------------------------------------------------------------------*/
void DibujaMarco()
  {
  contador Pos;

  Pan_Limpia();
  for ( Pos = 0 ; Pos < 80 ; Pos++ )
    {
    Pan_PonEntero (0,Pos,Pos%10,1);
    Pan_PonEntero (23,Pos,Pos%10,1);
    }

  for ( Pos = 0 ; Pos < 24 ; Pos++ )
    {
    Pan_PonEntero (Pos,0,Pos%10,1);
    Pan_PonEntero (Pos,79,Pos%10,1);
    }

  Pan_PonTexto (11,30,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Pan_Real()
 *------------------------------------------------------------------*/
void P_Pan_Real()
  {
  Pan_Limpia();
  Pan_Color (BLANCO,NEGRO);

  Pan_PonReal (1,1,1.2736,7,4);
  Pan_PonReal (3,1,1.2736,7,3);
  Pan_PonReal (5,1,1.2736,7,2);
  Pan_PonReal (7,1,23,7,2);

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (23,0,"Pulsa ENTER para seguir: ");
  getchar();
  }

/*--------------------------------------------------------------------
 * Funcin P_Pan_TextoControlado()
 *------------------------------------------------------------------*/
void P_Pan_TextoControlado()
  {
  Pan_Limpia();
  Pan_Color (BLANCO,NEGRO);

  Pan_PonTextoControlado (1,1,"....:....1....:....2....:....3....:", 40);
  Pan_PonTextoControlado (2,1,"Esto es una prueba de control", 35);
  Pan_PonTextoControlado (3,1,"Esto es una prueba de control", 25);
  Pan_PonTextoControlado (4,1,"Esto es una prueba de control", 15);
  Pan_PonTextoControlado (5,1,"Esto es una prueba de control", 10);

  Pan_Color (NEGRO,BLANCO);
  Pan_PonTexto (23,0,"Pulsa ENTER para seguir: ");
  getchar();
  }  