• メインページ
  • データ構造
  • ファイル
  • ファイル一覧
  • グローバル

OpenSSM/libfontx2.c

説明を見る。
00001 /**************************************************************************************************
00002     Title           : FONTX2 Driver
00003     Programmer      : Yosuke FURUSAWA
00004     Copyright       : Copyright (C) 2010 Yosuke FURUSAWA. (Imported OpenSSM Rev.A)
00005     License         : 4-clause BSD License
00006     Since           : 2010/05/08
00007 
00008     Filename        : libfontx2.c
00009     Last up date    : 2010/05/13
00010     Kanji-Code      : Shift-JIS
00011     TAB Space       : 4
00012 
00013     Note            : In this version, do not support Kanji and Font Selector.
00014 **************************************************************************************************/
00015 
00016 
00017 /*================================================================================================
00018 ヘッダファイルをインクルード
00019 =================================================================================================*/
00020 #include "types.h"
00021 
00022 #include "libfontx2.h"
00023 
00024 
00025 /*=================================================================================================
00026 構造体
00027 =================================================================================================*/
00028 /* ASCIIコード用半角文字フォントのヘッダ */
00029 typedef struct FONTX2_HEADER_ASCII {
00030     char ident[6];
00031     char fontname[8];
00032 
00033     unsigned char width;
00034     unsigned char height;
00035     unsigned char codetype;
00036 
00037 } FONTX2_HEADER_ASCII_T;
00038 typedef FONTX2_HEADER_ASCII_T* pFONTX2_HEADER_ASCII_T;
00039 
00040 
00041 /*=================================================================================================
00042 グローバル変数
00043 =================================================================================================*/
00044 const unsigned char fontx2_ident[] = "FONTX2";
00045 
00046 
00047 /**************************************************************************************************
00048 *****                                                                                         *****
00049 *****           製品組み込み時には、フォントのライセンスを十分に確認すること!                 *****
00050 *****                                                                                         *****
00051 **************************************************************************************************/
00052 
00053 /* 1つだけインクルードすること */
00054 const unsigned char fontx2_ascii_data[] = {
00055 //#include "font/4x8.txt"           /* 美咲フォント */
00056 //#include "font/akagi11a.txt"      /* 赤城フォント */
00057 //#include "font/gonhn12x.txt"      /* 細ゴシック体「小伝馬町12」フォント */
00058 //#include "font/gothn12x.txt"      /* 細ゴシック体「小伝馬町12」フォント2 */
00059 //#include "font/jpnhn8x.txt"       /* NEC PC-98  8dot フォント (PC-9821As2から抜きました...) */
00060 //#include "font/jpnhn16x.txt"      /* NEC PC-98 16dot フォント (PC-9821As2から抜きました...) */
00061 //#include "font/k6x10.txt"         /* k12x10 (k6x10) フォント */
00062 //#include "font/kyohn16x.txt"      /* 教科書体「人形町16」フォント */
00063 //#include "font/noho12a.txt"       /* のほ 12dot フォント */
00064 //#include "font/noho16a.txt"       /* のほ 16dot フォント */
00065 //#include "font/mgohn16x.txt"      /* 丸ゴシック体「秋葉原16」フォント */
00066 //#include "font/minhn12x.txt"      /* 太明朝体「道玄坂 12」フォント */
00067 //#include "font/minhn14x.txt"      /* 太明朝体「道玄坂 14」フォント */
00068 //#include "font/minhn16x.txt"      /* 太明朝体「道玄坂 16」フォント */
00069 //#include "font/mplhn10.txt"       /* M+ BITMAP 10dot フォント */
00070 //#include "font/mplhn11.txt"       /* M+ BITMAP 11dot フォント */
00071 //#include "font/mplhn12.txt"       /* M+ BITMAP 12dot フォント */
00072 //#include "font/mplhn13.txt"       /* M+ BITMAP 13dot フォント */
00073 #include "font/paw16a.txt"      /* ぱうフォント */
00074 //#include "font/reihn16x.txt"      /* 隷書体「八丁堀 16」フォント */
00075 //#include "font/xbghn16x.txt"      /* ファンテール「兜町 16」フォント */
00076 };
00077 
00078 const pFONTX2_HEADER_ASCII_T fontx2_ascii = (pFONTX2_HEADER_ASCII_T)&fontx2_ascii_data;
00079 
00080 
00081 /**************************************************************************************************
00082 初期化
00083 **************************************************************************************************/
00084 BOOL FONTX2_init(void)
00085 {
00086     /* 内蔵フォントデータを確認する. strcmp()相当 */
00087     if(fontx2_ident[0] != fontx2_ascii->ident[0])   return(FALSE);
00088     if(fontx2_ident[1] != fontx2_ascii->ident[1])   return(FALSE);
00089     if(fontx2_ident[2] != fontx2_ascii->ident[2])   return(FALSE);
00090     if(fontx2_ident[3] != fontx2_ascii->ident[3])   return(FALSE);
00091     if(fontx2_ident[4] != fontx2_ascii->ident[4])   return(FALSE);
00092     if(fontx2_ident[5] != fontx2_ascii->ident[5])   return(FALSE);
00093 
00094 
00095     /* フォントサイズが高速化マクロの処理と合っているか確認する */
00096 #ifdef FONT_FAST8
00097     if(FONTX2_get_ascii_width() != 8)               return(FALSE);
00098 #endif
00099 
00100 
00101     return(TRUE);
00102 }
00103 
00104 
00105 /**************************************************************************************************
00106 1文字の横幅pxを取得する
00107 **************************************************************************************************/
00108 inline unsigned char FONTX2_get_ascii_width(void)
00109 {
00110     return(fontx2_ascii->width);
00111 }
00112 inline unsigned char FONTX2_get_ascii_width_byte(void)
00113 {
00114     return((((fontx2_ascii->width - 1) >> 3) + 1));
00115 }
00116 
00117 
00118 /**************************************************************************************************
00119 1文字の縦幅pxを取得する
00120 **************************************************************************************************/
00121 inline unsigned char FONTX2_get_ascii_height(void)
00122 {
00123     return(fontx2_ascii->height);
00124 }
00125 inline unsigned char FONTX2_get_ascii_height_byte(void)
00126 {
00127     return(fontx2_ascii->height);
00128 }
00129 
00130 
00131 /**************************************************************************************************
00132 1文字のフォントサイズ(byte)を取得する
00133 **************************************************************************************************/
00134 inline unsigned char FONTX2_get_ascii_size(void)
00135 {
00136     return( FONTX2_get_ascii_width_byte() * FONTX2_get_ascii_height_byte() );
00137 }
00138 
00139 
00140 /**************************************************************************************************
00141 1文字のフォントデータのポインタを取得する
00142 **************************************************************************************************/
00143 inline unsigned char *FONTX2_get_ascii_font(const unsigned char ascii)
00144 {
00145     return(&fontx2_ascii_data[      sizeof(FONTX2_HEADER_ASCII_T)
00146                                 +   FONTX2_get_ascii_size() * ascii
00147                             ]);
00148 }
00149 
00150 
00151 /**************************************************************************************************
00152 1文字のフォントデータのグリフを得る
00153 **************************************************************************************************/
00154 inline unsigned char FONTX2_get_ascii_font_data(const unsigned char ascii, unsigned char x, unsigned char y)
00155 {
00156     return( fontx2_ascii_data[      sizeof(FONTX2_HEADER_ASCII_T)
00157                                 +   FONTX2_get_ascii_size() * ascii
00158                                 +   x
00159                                 +   FONTX2_get_ascii_width_byte() * y
00160                             ]);
00161 }
00162 
00163 

OpenSSMに対してSat Aug 14 2010 03:23:43に生成されました。  doxygen 1.7.1