Clase BufferPantalla

Entorno.

La clase BufferPantalla es la encargada del aspecto visual del sistema operativo, es decir, la encargada de escribir en pantalla y de asignar a cada tarea que precise escribir en pantalla un foco (pantalla virtual) a la medida requerida para que, cuando sea su turno, volcarla en la memoria de video. Tiene clase amiga a Teclado para saber en todo momento quien es la tarea que tiene la pantalla real.

Grafo.

 

Vamos a ver cuales son los miembros atributo y los miembros función del Objeto:

(Clase amiga: Teclado)

  BufferPantalla
Private:

Protected:

texto

fondo

atrib

pantalla

memvideo

xmin, ymin, xmax, ymax

NR_COL

NR_LIN

TAM

x, y

on

Private:

Protected:

Public:

cargar_pantalla

subir_linea

volcar_pantalla

mover_cursor

BufferPantalla

~BufferPantalla

color_texto

color_fondo

clrscr

ir_xy

puts

printk

Definicion de miembros.

Atributos

texto

Tipo: ushort

Cometido: Color del texto;

fondo

Tipo: ushort

Cometido: Color del fondo;

atrib

Tipo: ushort

Cometido: Combinacion de Texto + Fondo.

Pantalla

Tipo: ushort *

Cometido: Puntero a la pantalla virtual del foco.

Memvideo

Tipo: ushort far *

Cometido: Puntero a la pantalla fisica de video.

xmin, xmax, ymin, ymax

Tipo: uchar

Cometido: Coordenadas de la pantalla virtual del foco

NR_COL

Tipo: uchar

Cometido: numero de columnas.

NR_LIN

Tipo: uchar

Cometido: numero de lineas.

TAM

Tipo: uint

Cometido: Tamaño de la pantalla.

x,y

Tipo: uchar

Cometido: Posicion actual del cursor.

on

Tipo: uchar

Cometido: Vale 1 si es el foco activo 0 en otro caso.

 

Funciones

cargar_pantalla

cargar_pantalla()

Parametros

No tiene.

Cometido: Carga en la pantalla virtual la pantalla fisica.

Pseudocodigo

subir_linea

subir_linea()

Parametros:

No tiene.

Cometido: Sube una linea cuando esta llena la pantalla virtual.

Pseudocodigo:

  1. subir_linea()
  2. Inicio
  3. Si (Pantalla_Llena)
  4. Copiar_Lineas();
  5. Llenar_ultima_linea(" ");
  6. Fsi
  7. Fin

volcar_pantalla

volcar_pantalla()

Parametros:

No tiene.

Cometido:Vuelca la pantalla virtual a la fisica;

Pseudocodigo:

 
  1. volcar_pantalla()
  2. Inicio
  3. Desde 0 hasta NR_LIN hacer
  4. Copiar_Linea(pantalla, memoria);
  5. FDesde
  6. Fin

mover_cursor

mover_cursor(m1,m2)

Parametros:

Cometido:Mover el cursor a las coordenadas m1,m2.

Pseudocodigo:

  1. mover_cursor(m1,m2)
  2. Inicio
  3. Pasar_coordenada_X(m1);
  4. Pasar_coordenada_Y(m2);
  5. Llamar_Puerto;
  6. Fin 

BufferPantalla

BufferPantalla(m1,m2,m3,m4)

Parametros:

Cometido: Constructor de la clase. Inicializa por defecto a 1,1,80,25 y reserva memoria para la pantalla virtual.

Pseudocodigo:

  1. BufferPantalla(m1,m2,m3,m4)
  2. Inicio
  3. Inicializar_Variables();
  4. Reservar_memoria_pantalla_virtual();
  5. cargar_pantalla();
  6. Fin

~BufferPantalla

~BufferPantalla()

Parametros:

No tiene.

Cometido: Destructor de la clase. Libera memoria de la pantalla virtual.

color_texto

color_texto(m1)

Parametros:

Cometido: Cambia el color del texto al introducido.

Pseudocodigo:

 
  1. color_texto(m1)
  2. Inicio
  3. Si (color_permitido(m1))
  4. texto=m1;
  5. attrib=(texto+fondo)<<8;
  6. Fsi
  7. Fin

color_fondo

color_fondo(m1)

Parametros:

Cometido: Cambia el color del fondo al introducido.

Pseudocodigo:

  1. color_fondo(m1)
  2. Inicio
  3. Si (color_permitido(m1))
  4. fondo=m1<<4;
  5. attrib=(texto+fondo)<<8;
  6. Fsi
  7. Fin

clrscr

clrscr()

Parametros:

No Tiene

Cometido: Borra la pantalla con el color de fondo que este en ese momento

Pseudocodigo:

 
  1. clrscr()
  2. Inicio
  3. Llenar_pantalla(atrib);
  4. Fin

ir_xy

ir_xy(m1,m2)

Parametros:

Cometido: Lleva la posición del cursor a los parametros m1, m2 con respecto a su foco correspondiente.

Pseudocodigo:

 
  1. ir_xy(m1,m2)
  2. Inicio
  3. mover_cursor(m1,m2);
  4. Fin

puts

puts(m1)

Parametros:

Cometido:Escribe una cadena en el foco. Si el foco corresponde al que tiene la pantalla, también se muestra por pantalla

Pseudocodigo:

  1. puts(m1)
  2. Inicio
  3. Cerrar_Multitarea();
  4. Tratar_Cadena();
  5. Escribir_cadena_en_foco();
  6. Si (on)
  7. Escribir_cadena_en_pantalla();
  8. Fsi
  9. Abrir_Multitarea();
  10. Fin 

printk

printk(m1,...)

Parametros:

Cometido:Escribe una cadena en el foco. Si el foco corresponde al que tiene la pantalla, también se muestra por pantalla. Tiene unos argumentos variables por parametro y cuyo funcionamiento es similar al printf de C++.

Pseudocodigo:

 
  1. printk(m1)
  2. Inicio
  3. Cerrar_Multitarea();
  4. Tratar_Cadena_con_argumentos();
  5. Escribir_cadena_en_foco();
  6. Si (on)
  7. Escribir_cadena_en_pantalla();
  8. Fsi
  9. Abrir_Multitarea();
  10. Fin


zeusv2@geocities.com

Última actualización de la página: 12/03/99


Esta página está hospedada en   Consigue tu Página Web Gratis