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

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 //#include "font/shnhn16.txt"           /* 東雲フォント */
00077 //#include "font/8x16rk.txt"        /* X11フォント */
00078 };
00079 
00080 const pFONTX2_HEADER_ASCII_T fontx2_ascii = (pFONTX2_HEADER_ASCII_T)&fontx2_ascii_data;
00081 
00082 
00083 /**************************************************************************************************
00084 初期化
00085 **************************************************************************************************/
00086 BOOL FONTX2_init(void)
00087 {
00088     /* 内蔵フォントデータを確認する. strcmp()相当 */
00089     if(fontx2_ident[0] != fontx2_ascii->ident[0])   return(FALSE);
00090     if(fontx2_ident[1] != fontx2_ascii->ident[1])   return(FALSE);
00091     if(fontx2_ident[2] != fontx2_ascii->ident[2])   return(FALSE);
00092     if(fontx2_ident[3] != fontx2_ascii->ident[3])   return(FALSE);
00093     if(fontx2_ident[4] != fontx2_ascii->ident[4])   return(FALSE);
00094     if(fontx2_ident[5] != fontx2_ascii->ident[5])   return(FALSE);
00095 
00096 
00097     /* フォントサイズが高速化マクロの処理と合っているか確認する */
00098 #ifdef FONT_FAST8
00099     if(FONTX2_get_ascii_width() != 8)               return(FALSE);
00100 #endif
00101 
00102 
00103     return(TRUE);
00104 }
00105 
00106 
00107 /**************************************************************************************************
00108 1文字の横幅pxを取得する
00109 **************************************************************************************************/
00110  unsigned char FONTX2_get_ascii_width(void)
00111 {
00112     return(fontx2_ascii->width);
00113 }
00114  unsigned char FONTX2_get_ascii_width_byte(void)
00115 {
00116     return((((fontx2_ascii->width - 1) >> 3) + 1));
00117 }
00118 
00119 
00120 /**************************************************************************************************
00121 1文字の縦幅pxを取得する
00122 **************************************************************************************************/
00123  unsigned char FONTX2_get_ascii_height(void)
00124 {
00125     return(fontx2_ascii->height);
00126 }
00127  unsigned char FONTX2_get_ascii_height_byte(void)
00128 {
00129     return(fontx2_ascii->height);
00130 }
00131 
00132 
00133 /**************************************************************************************************
00134 1文字のフォントサイズ(byte)を取得する
00135 **************************************************************************************************/
00136  unsigned char FONTX2_get_ascii_size(void)
00137 {
00138     return( FONTX2_get_ascii_width_byte() * FONTX2_get_ascii_height_byte() );
00139 }
00140 
00141 
00142 /**************************************************************************************************
00143 1文字のフォントデータのポインタを取得する
00144 **************************************************************************************************/
00145  unsigned char *FONTX2_get_ascii_font(const unsigned char ascii)
00146 {
00147     return(&fontx2_ascii_data[      sizeof(FONTX2_HEADER_ASCII_T)
00148                                 +   FONTX2_get_ascii_size() * ascii
00149                             ]);
00150 }
00151 
00152 
00153 /**************************************************************************************************
00154 1文字のフォントデータのグリフを得る
00155 **************************************************************************************************/
00156  unsigned char FONTX2_get_ascii_font_data(const unsigned char ascii, unsigned char x, unsigned char y)
00157 {
00158     return( fontx2_ascii_data[      sizeof(FONTX2_HEADER_ASCII_T)
00159                                 +   FONTX2_get_ascii_size() * ascii
00160                                 +   x
00161                                 +   FONTX2_get_ascii_width_byte() * y
00162                             ]);
00163 }
00164 
00165 

OpenSSMに対してThu Sep 9 2010 00:03:04に生成されました。  doxygen 1.7.1