/*
 * ILI9341_Display_ASCII.h
 *
 *  Created on: 2025/02/25
 *      Author: egaono-electronics
 */

#ifndef ILI9341_DISPLAY_ASCII_H_
#define ILI9341_DISPLAY_ASCII_H_

#include "Dev_Conf.h"

#include def_Header_HAL
#include "ILI9341_SPI_Draw.h"



//----------------------------------------------------------
// LCD文字表示 : ASCII : Font選択 : ILI9341
//----------------------------------------------------------
// 引数;
// uint8_t *puint8_JobNum : 処理番号を格納する変数のポインタ

// int16_t int16_Check_Semaphore : セマフォチェック有無
//    0 : チェックなし
//    1 : チェックあり

// uint16_t uint16_Font : font指定
//    0 : 8 x 8 font : ASCII
//    1 : 16 x 16 font : ASCII
//    2 : 32 x 32 font : ASCII
//    3 : 48 x 48 font : ASCII

// uint8_t uint8_Oblong : 縦長/横長
//    0 : Lengthwise : 縦長 左
//    1 : Lengthwise : 縦長 右
//    2 : WidthwiseL : 横長 左
//    3 : WidthwiseR : 横長 右

//  uint8_t uint8_Type : 表示選択
//      0 : 通常表示
//      1 : 反転表示
//      2 : 通常表示の上書き
//      3 : 反転表示の上書き

// uint32_t uint32_ColorCode : カラーコード

// uint16_t uint16_StartX : 表示開始位置X
// uint16_t uint16_StartY : 表示開始位置Y

// uint16_t uint16_Length : 表示文字数
// uint8_t *puint8_aData :
//          表示文字コードが格納されているBufferのポインタ


// 戻り値;
//   -1 : 処理中
//    0 : OK終了
//    1 : NG終了
//----------------------------------------------------------
int16_t ILI9341_SPI_Display_ASCII(uint8_t *puint8_JobNum,
                                  int16_t int16_Check_Semaphore,
                                  uint16_t uint16_Font,
                                  uint8_t uint8_Oblong,
                                  uint8_t uint8_Type,
                                  uint32_t uint32_ColorCode,
                                  uint16_t uint16_StartX,
                                  uint16_t uint16_StartY,
                                  uint16_t uint16_Length,
                                  uint8_t *puint8_aData);



//----------------------------------------------------------
// 描画Frameの構造体設定 : String
//----------------------------------------------------------
// 引数;
// uint16_t uint16_Font : font指定
//    0 : 8 x 8 font : ASCII
//    1 : 16 x 16 font : ASCII
//    2 : 32 x 32 font : ASCII
//    3 : 48 x 48 font : ASCII

// uint16_t uint16_StartX : 表示開始位置X
// uint16_t uint16_StartY : 表示開始位置Y

// uint16_t uint16_Length : 表示文字数

// struct sFrame_LCD *pstructFrame_LCD :
//                      表示パラメータ構造体のポインタ


// 戻り値;
//    0 : OK
//    1 : NG
//----------------------------------------------------------
int16_t Set_structFrame_ASCII(uint16_t uint16_Font,
                              uint16_t uint16_StartX,
                              uint16_t uint16_StartY,
                              uint16_t uint16_Length,
                        struct sFrame_LCD *pstructFrame_LCD);



//----------------------------------------------------------
// 描画Buffer設定 : ASCII
//----------------------------------------------------------
// 引数;
// uint16_t uint16_Font : font指定
//    0 : 8 x 8 font : ASCII
//    1 : 16 x 16 font : ASCII
//    2 : 32 x 32 font : ASCII
//    3 : 48 x 48 font : ASCII

//  uint8_t uint8_Type : 表示選択
//      0 : 通常表示
//      1 : 反転表示
//      2 : 通常表示の上書き
//      3 : 反転表示の上書き

// uint16_t uint16_Length : 表示文字数

// uint8_t *puint8_aChar :
//              文字コードが格納されたBufferのポインタ
// uint8_t *puint8_aBuffer : 描画Bufferのポインタ

// uint16_t *puint16_Width : 文字の幅の変数のポインタ
// uint16_t *puint16_Height : 文字の高さの変数のポインタ


// 戻り値;
//    なし
//----------------------------------------------------------
void Set_Draw_Buffer_ASCII(uint16_t uint16_Font,
                           uint8_t uint8_Type,
                           uint16_t uint16_Length,
                           uint8_t *puint8_aChar,
                           uint8_t *puint8_aBuffer,
                           uint16_t *puint16_Width,
                           uint16_t *puint16_Height);



#endif /* ILI9341_DISPLAY_ASCII_H_ */
