/*
 * TFT320.h
 *
 *  Created on: 11/09/2014
 *      Author: Fabian
 */

#ifndef TFT320_H_
#define TFT320_H_



#define TFTPORT_LB 		 GPIO_PORTK_BASE			// Full 8 bit Port
#define TFTPORT_LB_ENA	 SYSCTL_PERIPH_GPIOK
#define TFTPORT_MB 		 GPIO_PORTM_BASE			// Full 8 bit Port
#define TFTPORT_MB_ENA	 SYSCTL_PERIPH_GPIOM
#define TFTPORT_CONT	 GPIO_PORTP_BASE			// Se necesitan 5 bits
#define TFTPORT_CONT_ENA SYSCTL_PERIPH_GPIOP
#define RS 		 		 GPIO_PIN_2
#define RST				 GPIO_PIN_4
#define CS 				 GPIO_PIN_3
#define WR 				 GPIO_PIN_1
#define RD 				 GPIO_PIN_0			// Solo para lectura
#define CLKSPEED		 120000000			// Velocidad del oscilador 120.000.000 en mi caso

//Constantes necesarias para el funcionamiento

#define DISP_X_SIZE		239
#define	DISP_Y_SIZE		319
#define PORTRAIT		0
#define LANDSCAPE		1
#define ORIENT			PORTRAIT

// *********************************
// 				COLORES
// *********************************
// Paleta de colores VGA
#define VGA_BLACK		0x0000
#define VGA_WHITE		0xFFFF
#define VGA_RED			0xF800
#define VGA_GREEN		0x0400
#define VGA_BLUE		0x001F
#define VGA_SILVER		0xC618
#define VGA_GRAY		0x8410
#define VGA_MAROON		0x8000
#define VGA_YELLOW		0xFFE0
#define VGA_OLIVE		0x8400
#define VGA_LIME		0x07E0
#define VGA_AQUA		0x07FF
#define VGA_TEAL		0x0410
#define VGA_NAVY		0x0010
#define VGA_FUCHSIA		0xF81F
#define VGA_PURPLE		0x8010
#define VGA_TRANSPARENT	0xFFFFFFFF

//Funcion de ayuda
#define Swap(i, j) { uint32_t t = i; i = j; j = t;}


// Declaraciones de funciones

void initTFT(void);
void TFT_W_Command(int comm);
void TFT_W_Data(int data);
void TFT_W_CyD(int com, int dat);
void TFT_W_Port(int dato);
void setXY(uint32_t x1,uint32_t y1,uint32_t x2,uint32_t y2);
void clrXY(void);
void FastFiller(uint32_t color, uint32_t pix);
void FillScr(uint32_t color);
void setXYpoint(uint32_t x,uint32_t y);
void TFTPoint(uint32_t x,uint32_t y,uint32_t Color);
void TFTLine(uint32_t x1,uint32_t y1,uint32_t x2,uint32_t y2,uint32_t Color);
void TFTRectangle(uint32_t x1,uint32_t y1,uint32_t x2,uint32_t y2,bool Filled,uint32_t Color);
void TFTCircle(uint32_t x,uint32_t y,uint32_t Radius,bool Filled,uint32_t Color);
void TFTRoundRectangle(uint32_t x1,uint32_t y1,uint32_t x2,uint32_t y2,bool Filled,uint32_t Color);
void TFTDrawHexa(uint32_t x,uint32_t y, uint32_t sx, uint32_t sy, uint32_t largo, const uint16_t *Imagen);
void TFTText(unsigned short x,unsigned short y,char *PtrText,const char (*Fuente)[5],unsigned char Alto,unsigned short Color);

#endif /* TFT320_H_ */
