/*--------------------------------------------------------------------
 * FICHERO:  MenEscOp.c
 * OBJETIVO: Definir las funciones Men_EscribeNormal() y 
 *           Men_EscribeResaltado()
 * AUTOR:    Pedro Reina
 * FECHA:    L.7.8.1995
 *------------------------------------------------------------------*/

/*--------------------------------------------------------------------
 * Funciones privadas
 *
 *   Men_EscribeCaracter()
 *------------------------------------------------------------------*/

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

#include "Menu.h"

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

static void Men_EscribeCaracter();

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

/*--------------------------------------------------------------------
 * FUNCION:  Men_EscribeNormal()
 * OBJETIVO: Escribir una opcin sin resaltar
 * ENTRADAS: Un men, el nmero de opcion, la fila y la columna donde 
 *           se debe empezar a escribir y la cadena que hay que escribir
 * SALIDAS:  Ninguna
 * EJEMPLO:  Men_EscribeNormal ( MenuPrincipal, 4, 7, 15, " Ayuda " )
 * ALGORITMO:
 *      Averiguar los colores de papel y tinta para el texto
 *      Escribir el texto
 *      Si hay un carcter atajo, escribirlo
 *------------------------------------------------------------------*/
void Men_EscribeNormal (Menu, Opcion, Fil, Col, Texto)
menu   Menu;
entero Opcion;
octeto Fil, Col;
cadena Texto;
  {
  Pan_Papel ( Men_Papel(Menu) );
  if ( Men_Tipo(Menu) != MEN_VECTOR || Men_DiDisponible (Menu, Opcion) )
    { Pan_Tinta ( Men_Tinta (Menu) ); }
  else
    { Pan_Tinta ( Men_ColorNoDisponible (Menu) ); }
  Pan_PonTextoControlado (Fil, Col, Texto, Men_Ancho(Menu));

  if ( Men_Tipo(Menu) == MEN_VECTOR    && 
       Men_DiDisponible (Menu, Opcion) && 
       Men_Lugar (Menu, Opcion) )
    { Men_EscribeCaracter (Fil, Col+Men_Lugar(Menu,Opcion), 
                           Texto[Men_Lugar(Menu,Opcion)],
                           Men_ColorCarNormal(Menu)); }
  }                  

/*--------------------------------------------------------------------
 * FUNCION:  Men_EscribeResaltado()
 * OBJETIVO: Escribir una opcin sin resaltar
 * ENTRADAS: Un men, el nmero de opcion, la fila y la columna donde 
 *           se debe empezar a escribir y la cadena que hay que escribir
 * SALIDAS:  Ninguna
 * EJEMPLO:  Men_EscribeResaltado ( MenuPrincipal, 4, 7, 15, " Ayuda " )
 *------------------------------------------------------------------*/
void Men_EscribeResaltado (Menu, Opcion, Fil, Col, Texto)
menu   Menu;
entero Opcion;
octeto Fil, Col;
cadena Texto;
  {
  Pan_Papel ( Men_PapelResaltado(Menu) );
  if ( Men_Tipo(Menu) != MEN_VECTOR || Men_DiDisponible (Menu, Opcion) )
    { Pan_Tinta ( Men_TintaResaltado (Menu) ); }
  else
    { Pan_Tinta ( Men_ColorNoDisponible (Menu) ); }
  Pan_PonTextoControlado (Fil, Col, Texto, Men_Ancho(Menu));

  if ( Men_Tipo(Menu) == MEN_VECTOR    && 
       Men_DiDisponible (Menu, Opcion) && 
       Men_Lugar (Menu, Opcion) )
    { Men_EscribeCaracter (Fil, Col+Men_Lugar(Menu,Opcion), 
                           Texto[Men_Lugar(Menu,Opcion)],
                           Men_ColorCarResaltado(Menu)); }
  }                  

/*--------------------------------------------------------------------
 * FUNCION:  Men_EscribeCaracter()
 * OBJETIVO: Escribir un carcter resaltado
 * ENTRADAS: La fila y la columna donde escribirlo, el carcter y el color
 * SALIDAS:  Ninguna
 * EJEMPLO:  Men_EscribeCaracter ( 4, 28, 'a', ROJO )
 *------------------------------------------------------------------*/
void Men_EscribeCaracter (Fil, Col, Car, Color)
octeto   Fil, Col;
caracter Car;
octeto   Color;
  {
  Pan_Tinta ( Color );
  Pan_Resalta (SI);
  Pan_PonCar ( Fil, Col, Car );
  Pan_Resalta (NO);
  }                  
             
