manual funcionesgraficas sdk fx-9860gii(sd)

21
FUNCIONES DE MUESTREO EN PANTALLA LCD – fx-9860G INDICE 1. Bdisp Introducción 2. Bdisp_AllClr_DD/VRAM/DDVRAM(void) 3. Bdisp_PutDisp_DD(void) 4. Bdisp_DrawLineVRAM(int x1, int y1, int x2, int y2) 5. Bdisp_ClearLineVRAM(int x1, int y1, int x2, int y2) 6. Bdisp_AreaClr_DD/VRAM/DDVRAM(const DISPBOX *pArea) 7. Bdisp_AreaReverseVRAM(int x1, int y1, int x2, int y2) 8. Bdisp_GetDisp_DD/VRAM(unsigned char *pData) 9. Bdisp_PutDispArea_DD(const DISPBOX *pArea) 10. Bdisp_SetPoint_DD/VRAM/DDVRAM(int x, int y, unsigned char point) 11. Bdisp_GetPoint_VRAM(int x, int y ) 12. Bdisp_WriteGraph_DD/VRAM/DDVRAM(const DISPGRAPH *WriteGraph) 13. Bdisp_ReadArea_DD/VRAM(const DISPBOX *ReadData) 1. Bdisp Introducción Las funciones “Bdisp” agrupan a casi todas las funciones graficas aplicadas a la pantalla LCD de la calculadora. Existen dos pantallas en la calculadora, con las que se puede trabajar. Estas son las pantallas: DD y VRAM. La pantalla DD es la pantalla física (LCD), que se ve. Es la pantalla de la calculadora. La pantalla VRAM es una pantalla virtual, a similitud de la RAM grafica en una computadora. En ambas pantallas se pueden realizar gráficos. Para realizar dibujos, se recomienda que primero se grafique en la pantalla VRAM, para luego transferirlo a la pantalla DD. Esta operación hace que el dibujo se despliegue mucho mas rápido en la pantalla física DD. Algunas funciones como “Drawline” sólo puede realizarse en la pantalla VRAM. 1.1 Dimensiones de la Pantalla LCD La pantalla LCD de la calculadora, tiene dimensiones: 128x64 pixeles. 128 pixeles en el eje “x” 64 pixeles en el eje “y”. Este eje esta invertido hacia abajo, tal como se ve en la figura:

Upload: dario-springinsfeld

Post on 29-Dec-2015

84 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Manual FuncionesGraficas SDK Fx-9860GII(SD)

FUNCIONES DE MUESTREO EN PANTALLA LCD – fx-9860G

INDICE

1. Bdisp Introducción2. Bdisp_AllClr_DD/VRAM/DDVRAM(void)3. Bdisp_PutDisp_DD(void)4. Bdisp_DrawLineVRAM(int x1, int y1, int x2, int y2)5. Bdisp_ClearLineVRAM(int x1, int y1, int x2, int y2)6. Bdisp_AreaClr_DD/VRAM/DDVRAM(const DISPBOX *pArea)7. Bdisp_AreaReverseVRAM(int x1, int y1, int x2, int y2)8. Bdisp_GetDisp_DD/VRAM(unsigned char *pData)9. Bdisp_PutDispArea_DD(const DISPBOX *pArea)10. Bdisp_SetPoint_DD/VRAM/DDVRAM(int x, int y, unsigned char point)11. Bdisp_GetPoint_VRAM(int x, int y)12. Bdisp_WriteGraph_DD/VRAM/DDVRAM(const DISPGRAPH *WriteGraph)13. Bdisp_ReadArea_DD/VRAM(const DISPBOX *ReadData)

1. Bdisp Introducción

Las funciones “Bdisp” agrupan a casi todas las funciones graficas aplicadas a la pantalla LCD de lacalculadora.

Existen dos pantallas en la calculadora, con las que se puede trabajar. Estas son las pantallas: DD yVRAM.

La pantalla DD es la pantalla física (LCD), que se ve. Es la pantalla de la calculadora. La pantallaVRAM es una pantalla virtual, a similitud de la RAM grafica en una computadora. En ambaspantallas se pueden realizar gráficos.

Para realizar dibujos, se recomienda que primero se grafique en la pantalla VRAM, para luegotransferirlo a la pantalla DD. Esta operación hace que el dibujo se despliegue mucho mas rápido enla pantalla física DD. Algunas funciones como “Drawline” sólo puede realizarse en la pantallaVRAM.

1.1 Dimensiones de la Pantalla LCD

La pantalla LCD de la calculadora, tiene dimensiones: 128x64 pixeles.

128 pixeles en el eje “x”64 pixeles en el eje “y”. Este eje esta invertido hacia abajo, tal como se ve en la figura:

Page 2: Manual FuncionesGraficas SDK Fx-9860GII(SD)

Las coordenadas de origen (0,0); están en la esquina superior izquierdaLa máxima coordenada “x” esta a la derecha de la pantalla (127, y).La máxima coordenada “y” esta abajo de la pantalla (x, 63).

Cuando se grafica en la pantalla, debe realizarse con precisión, para coincidir con el rango de128x64 pixeles.

Por lo tanto, se tiene un total de 128x64 = 8192 pixeles para graficar.

2. Bdisp_AllClr_DD/ Bdisp_AllClr_VRAM/ Bdisp_AllClr_DDVRAM

Estas funciones están declaradas en el archivo de encabezamiento “fxlib.h”.

Estas funciones se utilizan para limpiar toda el área de la pantalla DD y/o VRAM. A su vez estasfunciones pueden desglosarse en:

void Bdisp_AllClr_DD(void);void Bdisp_AllClr_VRAM(void);void Bdisp_AllClr_DDVRAM(void);

void Bdisp_AllClr_DD(void);

Esta función se utiliza para limpiar toda el área de la pantalla física DD.

void Bdisp_AllClr_VRAM(void);

Esta función se utiliza para limpiar toda el área de la pantalla virtual VRAM.

void Bdisp_AllClr_DDVRAM(void);

Esta función se utiliza para limpiar simultáneamente toda el área de la pantallavirtual VRAM y de la pantalla física DD.

2.1 Ejemplo (Limpiando la pantalla DD al iniciar)

#include "fxlib.h"

int AddIn_main(int isAppli, unsigned short OptionNum){ unsigned int key;

Bdisp_AllClr_DD();

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Size

Page 3: Manual FuncionesGraficas SDK Fx-9860GII(SD)

unsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

2.2 Ejemplo (Limpiando la pantalla VRAM)

#include "fxlib.h"

int AddIn_main(int isAppli, unsigned short OptionNum){ unsigned int key;

PrintMini(0, 0,(unsigned char*)"Texto UNO", MINI_OVER); Sleep(3000);

Bdisp_AllClr_DD(); Bdisp_PutDisp_DD(); Bdisp_AllClr_VRAM(); PrintMini(0, 0,(unsigned char*)"Texto DOS", MINI_OVER); Sleep(3000);

Bdisp_AllClr_DD(); Bdisp_PutDisp_DD();

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

2.3 Ejemplo (Limpiando simultáneamente la pantalla DD y/o VRAM)

#include "fxlib.h"

Page 4: Manual FuncionesGraficas SDK Fx-9860GII(SD)

int AddIn_main(int isAppli, unsigned short OptionNum){ unsigned int key;

Bdisp_AllClr_DDVRAM();

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

3. Bdisp_PutDisp_DD(void)

Esta función esta declarada en el archivo de encabezamiento “fxlib.h”.

Esta función transfiere todo el grafico de la pantalla VRAM a la pantalla física DD, píxel por píxel.

Se recomienda utilizar esta función antes que cualquier otra, debido a su velocidad. Es 700 vecesmás veloz que cualquier otra función de transferencia de gráficos hacia la pantalla DD.

3.1 Ejemplo

#include "fxlib.h"

int AddIn_main(int isAppli, unsigned short OptionNum){ unsigned int key;

Bdisp_AllClr_DDVRAM();

PrintMini(0,0,(unsigned char*)"Desplegando en VRAM", MINI_OVER); PrintMini(0,7,(unsigned char*)"y luego transfiriendo", MINI_OVER); PrintMini(0,14,(unsigned char*)"a la pantalla DD",MINI_OVER); Bdisp_PutDisp_DD(); Sleep(3000);

while(1){ GetKey(&key); } return 1;}

Page 5: Manual FuncionesGraficas SDK Fx-9860GII(SD)

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

4. Bdisp_DrawLineVRAM(int x1, int y1, int x2, int y2)

Esta función esta declarada en el archivo de encabezamiento “fxlib.h”.

Esta función dibuja una línea en la pantalla virtual VRAM.

Esta función posee 4 argumentos: x1, y1, x2, y y2, que corresponden a las coordenadas inicial yfinal de la línea.

Las coordenadas x1 y y1 corresponden al extremo inicial de la línea.Las coordenadas x2 y y2 corresponden al extremo final de la línea.

Para tener una idea sobre como actúa esta función, observar la figura:

Entre ambos puntos, la calculadora traza una línea. Para transferir el trazado de la línea, a la pantallaDD, se debe utilizar Bdisp_PutDisp_DD(void).

En realidad, la calculadora enciende todos los píxeles comprendidos entre los puntos inicial y finalde la línea.

El trazado de la línea se realiza sobre el plano físico de la pantalla LCD, con su eje “y” invertido, yNO en el plano comúnmente visto en las escuelas, colegios y universidades.

4.1 Ejemplo (Trazando líneas sobre la pantalla LCD)

#include "fxlib.h"

Page 6: Manual FuncionesGraficas SDK Fx-9860GII(SD)

int AddIn_main(int isAppli, unsigned short OptionNum){ unsigned int key;

Bdisp_AllClr_DDVRAM();

Bdisp_DrawLineVRAM(0, 0, 127, 0); Bdisp_DrawLineVRAM(127, 0, 127, 63); Bdisp_DrawLineVRAM(127, 63, 0, 63); Bdisp_DrawLineVRAM(0, 63, 0, 0); Bdisp_DrawLineVRAM(0, 0, 127, 64); Bdisp_DrawLineVRAM(127, 0, 0, 63); Bdisp_PutDisp_DD();

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

5. Bdisp_ClearLineVRAM(int x1, int y1, int x2, int y2)

Esta función esta declarada en el archivo de encabezamiento “fxlib.h”.

Esta función limpia una línea en la pantalla virtual VRAM.

Esta función posee 4 argumentos: x1, y1, x2, y y2, que corresponden a las coordenadas inicial yfinal de la línea, según se ve en la figura:

Las coordenadas x1 y y1 corresponden al extremo inicial de la línea.Las coordenadas x2 y y2 corresponden al extremo final de la línea.

Page 7: Manual FuncionesGraficas SDK Fx-9860GII(SD)

Entre ambos puntos, la calculadora traza una línea. Para transferir el trazado de la línea, a la pantallaDD, se debe utilizar Bdisp_PutDisp_DD().

En realidad, la calculadora apaga todos los píxeles comprendidos entre los puntos inicial y final dela línea.

El trazado de la línea se realiza sobre el plano físico de la pantalla LCD, con su eje “y” invertido.

5.1 Ejemplo (Borrando líneas sobre la pantalla LCD)

#include "fxlib.h"

int AddIn_main(int isAppli, unsigned short OptionNum){ int y; unsigned int key;

Bdisp_AllClr_DDVRAM();

for(y=0; y<=63; y++) { Bdisp_DrawLineVRAM(0, y, 127, y); };

Bdisp_PutDisp_DD(); Sleep(3000);

Bdisp_ClearLineVRAM(0, 0, 127, 0); Bdisp_ClearLineVRAM(127, 0, 127, 63); Bdisp_ClearLineVRAM(127, 63, 0, 63); Bdisp_ClearLineVRAM(0, 63, 0, 0); Bdisp_ClearLineVRAM(0, 0, 127, 63); Bdisp_ClearLineVRAM(127, 0, 0, 63);

Bdisp_AllClr_DD(); Bdisp_PutDisp_DD();

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

Page 8: Manual FuncionesGraficas SDK Fx-9860GII(SD)

6. Bdisp_AreaClr_DD/VRAM/DDVRAM(const DISPBOX *pArea)

Estas funciones están declaradas en el archivo de encabezamiento “fxlib.h”.

Estas funciones se utilizan para limpiar el área específica de un rectángulo contenido en la pantallaDD y/o VRAM. A su vez estas funciones pueden desglosarse en:

void Bdisp_AreaClr_DD(const DISPBOX *pArea // Puntero a Estructura de Datos)void Bdisp_AreaClr_VRAM(const DISPBOX *pArea // Puntero a Estructura de Datos)void Bdisp_AreaClr_DDVRAM(const DISPBOX *pArea // Puntero a Estructura de Datos)

pArea

Es un puntero a la estructura “DISPBOX”.

La estructura “DISPBOX” esta definida y declarada en el archivo de encabezamiento “dispbios.h”,según el formato:

typedef struct tag_DISPBOX {int left; // 0~127int top; // 0~63int right; // 0~127int bottom; // 0~63

} DISPBOX

La estructura “DISPBOX” define un rectángulo, por medio de las coordenadas de dos puntos: elsuperior-izquierdo y el inferior-derecha. Los lados del rectángulo se extienden a partir de estos dospuntos y son paralelo al eje “x” y el eje “y”.

Para tener una idea sobre como actúa esta función, observar la figura:

El apagado de los pixeles del rectángulo declarado aquí, solo se realiza a través de este puntero.

void Bdisp_AreaClr_DD(const DISPBOX *pArea // Puntero a Estructura de Datos)

Esta función se utiliza para limpiar el área específica de un rectángulo contenido enla pantalla DD.

void Bdisp_AreaClr_VRAM(const DISPBOX *pArea // Puntero a Estructura de Datos)

Esta función se utiliza para limpiar el área específica de un rectángulo contenido enla pantalla VRAM.

Page 9: Manual FuncionesGraficas SDK Fx-9860GII(SD)

void Bdisp_AreaClr_DDVRAM(const DISPBOX *pArea // Puntero a Estructura de Datos)

Esta función se utiliza para limpiar simultáneamente el área específica de unrectángulo contenido en la pantalla DD y VRAM.

6.1 Ejemplo (Limpiando áreas especificas de la pantalla LCD)

#include "fxlib.h"

int AddIn_main(int isAppli, unsigned short OptionNum){ int y; unsigned int key; DISPBOX Cuadro;

Cuadro.left = 54; Cuadro.top = 22; Cuadro.right = 74; Cuadro.bottom = 42;

Bdisp_AllClr_DDVRAM();

for(y=0; y<=63; y++) { Bdisp_DrawLineVRAM(0, y, 127, y); }

Bdisp_PutDisp_DD(); Sleep(3000);

Bdisp_AreaClr_DDVRAM(&Cuadro);

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

Page 10: Manual FuncionesGraficas SDK Fx-9860GII(SD)

7. Bdisp_AreaReverseVRAM(int x1, int y1, int x2, int y2)

Esta función esta declarada en el archivo de encabezamiento “fxlib.h”.

Esta función revierte el estado (ENCENDIDO - APAGADO), de los pixeles de un rectánguloespecifico contenido en la pantalla VRAM. Si un píxel esta Encendido, se revierte a Apagado yviceversa

Esta función posee 4 argumentos: x1, y1, x2, y y2, que corresponden a las coordenadas de dospuntos: el superior-izquierdo y el inferior-derecha. Los lados del rectángulo se extienden a partir deestos dos puntos y son paralelo al eje “x” y el eje “y”.

Para tener una idea sobre como actúa esta función, observar la figura:

7.1 Ejemplo (Revirtiendo áreas especificas de la pantalla VRAM)

#include "fxlib.h"

int AddIn_main(int isAppli, unsigned short OptionNum){ unsigned int key;

Bdisp_AllClr_DDVRAM(); Bdisp_AreaReverseVRAM(0, 0, 127, 63); Bdisp_PutDisp_DD(); Sleep(3000);

Bdisp_AllClr_DD(); Bdisp_AreaReverseVRAM(54, 22, 74, 42); Bdisp_PutDisp_DD();

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){

Page 11: Manual FuncionesGraficas SDK Fx-9860GII(SD)

return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

8. Bdisp_GetDisp_DD/VRAM(unsigned char *pData)

Estas funciones están declaradas en el archivo de encabezamiento “fxlib.h”.

Esta función atrapa un grafico de la pantalla DD y/o VRAM, y la coloca en un vector o en unamatriz lineal. A su vez estas funciones pueden desglosarse en:

Bdisp_GetDisp_DD(unsigned char *pData)Bdisp_GetDisp_VRAM(unsigned char *pData)

pData

Es un puntero al vector o matriz lineal.

El vector o la matriz lineal debe ser del tipo de variable: “unsigned char”, además de tener untamaño de 1024 bytes.

El tamaño del vector o matriz lineal debe coincidir con el siguiente macro:

#define IM_VRAM_SIZE 1024 (Declared in dispbios.h)

El macro IM_VRAM_SIZE esta definido en el archivo de encabezamiento “dispbios.h”.

Bdisp_GetDisp_DD(unsigned char *pData)

Esta función atrapa un grafico de la pantalla DD, y la coloca en un vector o en unamatriz lineal de 1024 bytes de tamaño y de tipo “unsigned char”.

Bdisp_GetDisp_VRAM(unsigned char *pData)

Esta función atrapa un grafico de la pantalla VRAM, y la coloca en un vector o enuna matriz lineal de 1024 bytes de tamaño y de tipo “unsigned char”.

8.1 Ejemplo (Transfiriendo un área específica de la pantalla VRAM a un vector o matriz)

#include "fxlib.h"

int AddIn_main(int isAppli, unsigned short OptionNum){ unsigned int key; char VECTOR[1024];

Bdisp_AllClr_DDVRAM(); Bdisp_AreaReverseVRAM(0, 0, 127, 63); Bdisp_PutDisp_DD();

Page 12: Manual FuncionesGraficas SDK Fx-9860GII(SD)

Sleep(3000);

Bdisp_AllClr_DD(); Bdisp_AreaReverseVRAM(54, 22, 74, 42); Bdisp_PutDisp_DD(); Bdisp_GetDisp_DD(&VECTOR);

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

9. Bdisp_PutDispArea_DD(const DISPBOX *pArea)

Esta función esta declarada en el archivo de encabezamiento “fxlib.h”.

Esta función transfiere el área específica de un rectángulo contenido en la pantalla VRAM hacia lapantalla DD.

pArea

Es un puntero a la estructura “DISPBOX”.

La estructura “DISPBOX” esta definida y declarada en el archivo de encabezamiento “dispbios.h”,según el formato:

typedef struct tag_DISPBOX {int left; // 0~127int top; // 0~63int right; // 0~127int bottom; // 0~63

} DISPBOX

La estructura “DISPBOX” define un rectángulo, por medio de las coordenadas de dos puntos: elsuperior-izquierdo y el inferior-derecha. Los lados del rectángulo se extienden a partir de estos dospuntos y son paralelo al eje “x” y el eje “y”.

Para tener una idea sobre como actúa esta función, observar la figura:

Page 13: Manual FuncionesGraficas SDK Fx-9860GII(SD)

9.1 Ejemplo (Transfiriendo un área específica de la pantalla VRAM a la pantalla DD)

#include "fxlib.h"

int AddIn_main(int isAppli, unsigned short OptionNum){ unsigned int key; DISPBOX Cuadro;

Cuadro.left = 1; Cuadro.top = 1; Cuadro.right = 126; Cuadro.bottom = 62;

Bdisp_AllClr_DDVRAM();

Bdisp_AreaReverseVRAM(0, 0, 127, 63); Bdisp_PutDisp_DD();

Bdisp_AreaReverseVRAM(0, 0, 127, 63); Sleep(3000);

Bdisp_PutDispArea_DD(&Cuadro);

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

Page 14: Manual FuncionesGraficas SDK Fx-9860GII(SD)

10. Bdisp_SetPoint_DD/VRAM/DDVRAM(int x, int y, unsigned char point)

Estas funciones están declaradas en el archivo de encabezamiento “fxlib.h”.

Estas funciones ENCIENDEN o APAGAN un píxel en una posición específica de la pantalla DDy/o VRAM. A su vez estas funciones pueden desglosarse en:

Bdisp_SetPoint_DD(int x, int y, unsigned char point)Bdisp_SetPoint_VRAM(int x, int y, unsigned char point)Bdisp_SetPoint_DDVRAM(int x, int y, unsigned char point)

Si la variable point tiene el valor de 1, entonces el píxel es Encendido. Si la variable point tiene elvalor de 0, entonces el píxel es Apagado.

Bdisp_SetPoint_DD(int x, int y, unsigned char point)

Esta función ENCIENDE o APAGA un píxel en una posición específica de lapantalla DD.

Bdisp_SetPoint_VRAM(int x, int y, unsigned char point)

Esta función ENCIENDE o APAGA un píxel en una posición específica de lapantalla VRAM.

Bdisp_SetPoint_DDVRAM(int x, int y, unsigned char point)

Esta función ENCIENDE o APAGA simultáneamente un píxel en una posiciónespecífica de la pantalla DD y/o VRAM.

10.1 Ejemplo (Dibujando puntos específicos de la pantalla VRAM a la pantalla DD)

#include "fxlib.h"

int AddIn_main(int isAppli, unsigned short OptionNum){ unsigned int key;

Bdisp_AllClr_DDVRAM();

Bdisp_SetPoint_DDVRAM(15, 36, 1);

Page 15: Manual FuncionesGraficas SDK Fx-9860GII(SD)

Bdisp_SetPoint_DDVRAM(82, 48, 1); Bdisp_SetPoint_DDVRAM(43, 25, 1); Bdisp_SetPoint_DDVRAM(103, 51, 1); Sleep(3000);

Bdisp_AllClr_DDVRAM();

Bdisp_AreaReverseVRAM(0,0, 127, 63); Bdisp_SetPoint_VRAM(15, 36, 0); Bdisp_SetPoint_VRAM(82, 48, 0); Bdisp_SetPoint_VRAM(43, 25, 0); Bdisp_SetPoint_VRAM(103, 51, 0); Bdisp_PutDisp_DD();

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

11. Bdisp_GetPoint_VRAM(int x, int y)

Esta función esta declarada en el archivo de encabezamiento “fxlib.h”.

Esta función verifica si un pixel de una posición especifica de la pantalla VRAM esta en estadoENCENDIDO o APAGADO

Esta función retorna el valor 1, cuando el píxel especifico esta ENCENDIDO, y el valor 0, cuandoel píxel especifico esta APAGADO.

Page 16: Manual FuncionesGraficas SDK Fx-9860GII(SD)

10.1 Ejemplo (Dibujando puntos específicos de la pantalla VRAM a la pantalla DD)

#include "fxlib.h"

int AddIn_main(int isAppli, unsigned short OptionNum){ int pixel; unsigned int key;

Bdisp_AllClr_DDVRAM();

while(IsKeyDown(KEY_CTRL_EXIT)==0) { pixel = Bdisp_GetPoint_VRAM(64, 32);

if(!pixel) { Bdisp_SetPoint_DDVRAM(64, 32, 1); } else { Bdisp_SetPoint_DDVRAM(64, 32, 0); }; Sleep(500); }

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

Nota: la funcion “IsKeyDown” de la “Librería fx-9860G SDK”, no es soportada por la nueva seriede calculadoras “fx-9860GII(SD)”, “GRAPH75(95)”, “fx-9860G AU PLUS”.

Esta serie es la que lleva “USB POWER GRAPHIC 2” en su carcasa.

En lugar de la funcion “IsKeyDown”, por favor utilize “GetKey” y la nueva función“Bkey_GetKeyWait”.

12. Bdisp_WriteGraph_DD/VRAM/DDVRAM(const DISPGRAPH *WriteGraph)

Estas funciones están declaradas en el archivo de encabezamiento “fxlib.h”.

Estas funciones copian una imagen desde un rectángulo definido (usualmente desde un Vector oMatriz Lineal), a la pantalla DD y/o VRAM.

Page 17: Manual FuncionesGraficas SDK Fx-9860GII(SD)

Para realizar esta acción, estas funciones utilizan dos estructuras declaradas y definidas:“GRAPHDATA” y “DISPGRAPH”.

A su vez estas funciones pueden desglosarse en:

void Bdisp_WriteGraph_DD(const DISPGRAPH *WriteGraph // Puntero a Estructura deDatos)

void Bdisp_WriteGraph_VRAM(const DISPGRAPH *WriteGraph // Puntero a Estructurade Datos)

void Bdisp_WriteGraph_DDVRAM(const DISPGRAPH *WriteGraph // Puntero aEstructura de Datos)

WriteGraph

Es un puntero a la estructura “DISPGRAPH”.

La estructura “DISPGRAPH” esta definida y declarada en el archivo de encabezamiento“dispbios.h”, según el formato:

Typedef struct tag_ DISPGRAPH {

int x; // coordenada “x” de la esquina superior izquierdoint y; // coordenada “x” de la esquina superior izquierdo.

GRAPHDATA GraphData; // puntero a los datos del dibujoWRITEMODIFY WriteModify; // modificación de escrituradel dibujo, declarados en “dispbios.h”, según la tabla:

IMB_WRITEMODIFY_NORMAL Color NormalIMB_WRITEMODIFY_REVERSE Color InvertidoIMB_WRITEMODIFY_MESH Especie de Gris Rustico

WRITEKIND WriteKind; // Modo de escritura del dibujo,declarado en “dispbios.h”, según la tabla:

IMB_WRITEKIND_OVER Sobre-escritura totalIMB_WRITEKIND_OR OR*1IMB_WRITEKIND_AND AND*1IMB_WRITEKIND_XOR XOR*1

Cuando se utiliza la función Bdisp_WriteGraph_DDVRAM,esta calcula las operaciones binarias OR/AND/XOR a partir delos datos del dibujo (vector) y los datos de la pantalla VRAM.

} DISPGRAPH;

La estructura “DISPGRAPH” contiene la información acerca de cómo y donde el dibujo esdesplegado. También contiene la dirección de memoria de los datos del dibujo.

Es necesario, aquí, definir la estructura adicional “GRAPHDATA”:

Page 18: Manual FuncionesGraficas SDK Fx-9860GII(SD)

Estructura “GRAPHDATA”

La estructura “GRAPHDATA” esta definida y declarada en el archivo de encabezamiento“dispbios.h”, según el formato:

Typedef struct tag_GRAPHDATA { int width; // base del dibujo int height; // altura del dibujo unsigned char *pBitmap; // puntero a un vector del dibujo } GRAPHDATA;

Esta estructura contiene la información de los datos del dibujo como ser: base del dibujo, altura deldibujo, y dirección de memoria de los datos del dibujo, accesado a través de un puntero unsignedchar *.

void Bdisp_WriteGraph_DD(const DISPGRAPH *WriteGraph // Puntero a Estructura deDatos)

Esta función copia una imagen desde un rectángulo definido (usualmente desde unVector o Matriz Lineal), y la transfiere a la pantalla DD.

void Bdisp_WriteGraph_VRAM(const DISPGRAPH *WriteGraph // Puntero a Estructurade Datos)

Esta función copia una imagen desde un rectángulo definido (usualmente desde unVector o Matriz Lineal), y la transfiere a la pantalla VRAM.

void Bdisp_WriteGraph_DDVRAM(const DISPGRAPH *WriteGraph // Puntero aEstructura de Datos)

Esta función copia una imagen desde un rectángulo definido (usualmente desde unVector o Matriz Lineal), y la transfiere simultáneamente a la pantalla DD y VRAM.

12.1 Ejemplo (Copiando una imagen específica a la pantalla VRAM y/o DD)

#include "fxlib.h"#include "dispbios.h"

void Dibujar_Imagen(unsigned char IMAGEN[]){ GRAPHDATA DATOS_Dibujo; DISPGRAPH INFO_Dibujo;

DATOS_Dibujo.width = 128; DATOS_Dibujo.height = 64; DATOS_Dibujo.pBitmap = IMAGEN;

INFO_Dibujo.x = 0; INFO_Dibujo.y = 0; INFO_Dibujo.GraphData = DATOS_Dibujo;

Page 19: Manual FuncionesGraficas SDK Fx-9860GII(SD)

INFO_Dibujo.WriteModify = IMB_WRITEMODIFY_NORMAL; INFO_Dibujo.WriteKind = IMB_WRITEKIND_OVER;

Bdisp_WriteGraph_DDVRAM(&INFO_Dibujo);}

int AddIn_main(int isAppli, unsigned short OptionNum){ unsigned int key; char IMAGEN[1024];

Bdisp_AllClr_DDVRAM(); Bdisp_DrawLineVRAM(0, 0, 127, 0); Bdisp_DrawLineVRAM(127, 0, 127, 63); Bdisp_DrawLineVRAM(127, 63, 0, 63); Bdisp_DrawLineVRAM(0, 63, 0, 0); Bdisp_DrawLineVRAM(0, 0, 127, 63); Bdisp_DrawLineVRAM(127, 0, 0, 63); Bdisp_GetDisp_VRAM(IMAGEN);

Bdisp_AllClr_VRAM(); Sleep(3000);

Dibujar_Imagen (IMAGEN);

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section

13. Bdisp_ReadArea_DD/VRAM(const DISPBOX *ReadArea, unsigned char *ReadDataData)

Estas funciones están declaradas en el archivo de encabezamiento “fxlib.h”.

Estas funciones copian una imagen desde un rectángulo definido de la pantalla DD y/o VRAM, y lotransfieren a un Vector o Matriz lineal.

El rectángulo así definido debe ser siempre menor al tamaño total de la pantalla LCD

Para realizar esta acción, estas funciones utilizan la estructura “DISPBOX”.

Page 20: Manual FuncionesGraficas SDK Fx-9860GII(SD)

A su vez estas funciones pueden desglosarse en:

Bdisp_ReadArea_DD(const DISPBOX *ReadArea, unsigned char *ReadData)Bdisp_ReadArea_VRAM(const DISPBOX *ReadArea, unsigned char *ReadData)

ReadArea

Es un puntero a la estructura “DISPBOX”.

La estructura “DISPBOX” esta definida y declarada en el archivo de encabezamiento “dispbios.h”,según el formato:

typedef struct tag_DISPBOX {int left; // 0~127int top; // 0~63int right; // 0~127int bottom; // 0~63

} DISPBOX

La estructura “DISPBOX” define un rectángulo, por medio de las coordenadas de dos puntos: elsuperior-izquierdo y el inferior-derecha. Los lados del rectángulo se extienden a partir de estos dospuntos y son paralelo al eje “x” y el eje “y”.

Para tener una idea sobre como actúa esta función, observar la figura:

ReadData

Es un puntero al vector o matriz lineal de 1024 bytes de tamaño y de tipo “unsigned char”. Es eldestino de la imagen que será guardada.

13.1 Ejemplo (Copiando una imagen específica a la pantalla VRAM y/o DD)

#include "fxlib.h"#include "dispbios.h"

void Dibujar_Imagen(unsigned char IMAGEN[]){ GRAPHDATA DATOS_Dibujo; DISPGRAPH INFO_Dibujo;

DATOS_Dibujo.width = 20;

Page 21: Manual FuncionesGraficas SDK Fx-9860GII(SD)

DATOS_Dibujo.height = 20; DATOS_Dibujo.pBitmap = IMAGEN;

INFO_Dibujo.x = 54; INFO_Dibujo.y = 22; INFO_Dibujo.GraphData = DATOS_Dibujo; INFO_Dibujo.WriteModify = IMB_WRITEMODIFY_NORMAL; INFO_Dibujo.WriteKind = IMB_WRITEKIND_OVER;

Bdisp_WriteGraph_DDVRAM(&INFO_Dibujo);}

int AddIn_main(int isAppli, unsigned short OptionNum){ unsigned int key; char IMAGEN[1024]; DISPBOX Cuadro;

Cuadro.left = 54; Cuadro.top = 22; Cuadro.right = 74; Cuadro.bottom = 42;

Bdisp_AllClr_DDVRAM(); Bdisp_DrawLineVRAM(0, 0, 127, 0); Bdisp_DrawLineVRAM(127, 0, 127, 63); Bdisp_DrawLineVRAM(127, 63, 0, 63); Bdisp_DrawLineVRAM(0, 63, 0, 0); Bdisp_DrawLineVRAM(0, 0, 127, 63); Bdisp_DrawLineVRAM(127, 0, 0, 63);

Bdisp_ReadArea_VRAM(&Cuadro, & IMAGEN); Bdisp_AllClr_VRAM(); Sleep(3000);

Dibujar_Imagen (IMAGEN);

while(1){ GetKey(&key); } return 1;}

#pragma section _BR_Sizeunsigned long BR_Size;#pragma section

#pragma section _TOP

int InitializeSystem(int isAppli, unsigned short OptionNum){ return INIT_ADDIN_APPLICATION(isAppli, OptionNum);}

#pragma section