TWETerm_M5_Console

M5Stack用のLcd描画ターミナル

M5Stack の 320x240 LCD 用のターミナルの実装です。ITermを実装しています。

本クラスはnamespace TWEARD内に定義されます。

メソッド

TWETerm_M5_Console - コンストラクタ

TWETerm_M5_Console(
			uint8_t u8c, uint8_t u8l,
			Rect drawArea, M5Stack& _M5)

TWETerm_M5_Console(
			uint8_t u8c, uint8_t u8l,
			TWETERM::SimpBuf_GChar* pAryLines, TWETERM::GChar* pBuff,
			Rect drawArea, M5Stack& _M5)

ITermのコンストラクタdrawArea_M5のパラメータが追加されています。

drawAreaは、LCD内のターミナル描画エリアを決めます。Rect構造体で指定しx,y,w,hを指定します。(x,y)は領域の左上の座標、(w,h)は領域の幅と高さです。

_M5は、M5Stackのグローバルインスタンス M5を指定します。

例:

TWETerm_M5_Console the_screen(64, 20, { 0, 16, 320, 192 }, M5);

カラム最大値を64、行数の最大値を20、左上座標を (0, 16)、領域サイズを (320, 192) として the_screen オブジェクトを構築します。

メソッド

refresh()

ITerm::refresh()の実装です。この関数により画面の描画を行います。loop()関数内で定期的に呼び出します。

本実装では、パフォーマンスの向上のため、原則として描画変更の必要にある行のみを上書きします。画面全領域を再描画したい場合はforce_refresh()メソッドを呼び出します。

以下の例では32msごとに描画を行います。

void loop() {
		static uint32_t u32mills;

		uint32_t u32now = millis();
		if (u32now - u32mills > 32) {
			the_screen.refresh();

			u32mills = u32now;
		}
}

set_font()

void set_font(uint8_t u8id, uint8_t u8col_request = 0, uint8_t u8row_request = 0)

フォントを指定します。

u8idはフォントIDを指定します。

u8col_requestは、設定したいカラム数を指定します。指定した数値が領域サイズに対して大きい場合は指定領域に入るように値が丸められます。0を指定した場合は、領域サイズから計算できる最大のカラム数に設定されます。

u8row_requestは、設定したい行数を指定します。指定した数値が領域サイズに対して大きい場合は指定領域に入るように値が丸められます。0を指定した場合は、領域サイズから計算できる最大の行数に設定されます。

font_width(), font_height(), font_id()

uint8_t font_id()
uint8_t font_width()
uint8_t font_height()

font_id()は、指定したフォントのIDを返します。

font_width()は、指定したフォントの幅をピクセル数で返します。ダブル幅のピクセル数は、この値の2倍になります。

font_height()は、指定したフォントの高さをピクセル数で返します。

set_color()

void set_color(uint16_t color, uint16_t bgcolor = 0)

ターミナルの文字色と背景色を指定します。

colorは文字色を指定します。

bgcolorは背景色を指定します。

色は565形式の16bit値です。TWEARD::color565()関数で計算します。

uint16_t c = color565(255, 127, 0); // R:255, G:127, B:0

白色は ALMOST_WHITE で指定します。color565(255,255,255) または WHITE を指定すると描画が崩れます。

set_color_table()

void set_color_table(const uint16_t* ptbl)

ターミナルで使用できる8色のテーブルを指定します。ptbluint16_t型の配列で8つの要素が必要です。

static const uint16_t COLTBL_MAIN[8] = {
	BLACK,
	RED,
	GREEN,
	YELLOW,
	color565(127, 127, 255), // BLUE,
	color565(255, 0, 142), // MAGENTA,
	CYAN,
	ALMOST_WHITE
};

the_screen.set_color_table(COLTBL_MAIN);

上記の例では青とマゼンダの色調を変えたテーブルを指定し、ターミナルオブジェクト the_screenに指定しています。

ユーティリティ関数

color565()

constexpr uint16_t color565(uint8_t r, uint8_t g, uint8_t b)

r, g, b を指定して、565形式の色コードを生成します。

最終更新