/*
 *	clip7seg.h
 *
 *	7セグメントディスプレイ
 *
 *	CLiP - Common Library for P/ECE
 *	Copyright (C) 2001-2013 Naoyuki Sawa
 *
 *	* Fri Nov 15 00:12:35 JST 2013 Naoyuki Sawa
 *	- 1st リリース。
 */
#ifndef __CLIP_7SEG_H__
#define __CLIP_7SEG_H__

/****************************************************************************
 *
 ****************************************************************************/

/* 7セグメントディスプレイの個々のセグメント */
#define _7SEG_A   0x80 /* 上     */
#define _7SEG_B   0x40 /* 右上   */
#define _7SEG_C   0x20 /* 右下   */
#define _7SEG_D   0x10 /* 下     */
#define _7SEG_E   0x08 /* 左下   */
#define _7SEG_F   0x04 /* 左上   */
#define _7SEG_G   0x02 /* 中     */
#define _7SEG_DP  0x01 /* 小数点 */
#define _7SEG_ALL 0xFF /* 上記全ての組み合せ */

/****************************************************************************
 *
 ****************************************************************************/

/* 数字とアルファベットに対応する、7セグメントディスプレイのパターンを取得する。
 * [in]
 *	c	文字コード
 * [out]
 *	戻り値	_7SEG_A〜_7SEG_DPの組み合せによる、7セグメントディスプレイのパターンを返す。
 *		文字コードとパターンの対応は、以下の通り:
 *		'0'〜'9'          ⇒ 数字のパターンを返す。
 *		'A'〜'Z','a'〜'z' ⇒ アルファベットのパターンを返す。大文字小文字の違いは無い。
 *		' ','\t'          ⇒ 空白のパターンを返す。
 *		それ以外          ⇒ 小数点のパターンを返す。(表現できない文字であるという意図)
 */
int Get7SegPat(int c);

/* 7セグメントディスプレイのパターンを描画する。
 * [in]
 *	pat	_7SEG_A〜_7SEG_DPの組み合せによる、7セグメントディスプレイのパターン。
 *	pat以外の引数は、render_font()と互換です。
 * [out]
 *	戻り値	render_font()と互換です。
 *		具体的には、以下の値を返す:
 *		・下位8ビット=フォントの幅
 *		  ((pat&_7SEG_DP)==0)ならば  ⇒ (w+1)
 *		  ((pat&_7SEG_DP)!=0)ならば  ⇒ (w+1)+2
 *		・上位8ビット=フォントの高さ ⇒ (h+1)
 * <使用例>
 *	//「-1.23E45」と表示します。
 *	x = 0;
 *	x += (unsigned char)render_7seg(&render, x,0, 5,9,                 _7SEG_G, 3); //xは(5+1)  ピクセル右へ進む
 *	x += (unsigned char)render_7seg(&render, x,0, 5,9, Get7SegPat('1')|_7SEG_DP,3); //xは(5+1)+2ピクセル右へ進む
 *	x += (unsigned char)render_7seg(&render, x,0, 5,9, Get7SegPat('2'),         3); //xは(5+1)  ピクセル右へ進む
 *	x += (unsigned char)render_7seg(&render, x,0, 5,9, Get7SegPat('3'),         3); //xは(5+1)  ピクセル右へ進む
 *	x += (unsigned char)render_7seg(&render, x,0, 5,9, Get7SegPat('E'),         3); //xは(5+1)  ピクセル右へ進む
 *	x += (unsigned char)render_7seg(&render, x,0, 5,9, Get7SegPat('4'),         3); //xは(5+1)  ピクセル右へ進む
 *	x += (unsigned char)render_7seg(&render, x,0, 5,9, Get7SegPat('5'),         3); //xは(5+1)  ピクセル右へ進む
 */
int render_7seg(RENDER* render, int x, int y, int w, int h, int pat, int color);

#endif/*__CLIP_7SEG_H__*/
