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

OpenSSM/libvideo.h

説明を見る。
00001 /**************************************************************************************************
00002     Title           : NTSC Composit VIDEO Driver for PIC24F Series
00003     Programmer      : Yosuke FURUSAWA
00004     Copyright       : Copyright (C) 2010 Yosuke FURUSAWA.
00005     License         : 4-clause BSD License
00006     Since           : 2010/04/28
00007 
00008     Filename        : libvideo.h
00009     Last up date    : 2010/08/12
00010     Kanji-Code      : Shift-JIS
00011     TAB Space       : 4
00012 
00013     Note            : 画面両端の 2pxは、使えない
00014 **************************************************************************************************/
00015 
00016 
00017 #ifndef _LIBVIDEO_H_
00018 #define _LIBVIDEO_H_
00019 
00020 
00021 /*=================================================================================================
00022 マクロ定義
00023 =================================================================================================*/
00024 /* 高速化マクロ. 引数チェック等の確認処理を実行しなくなる */
00025 #define VIDEO_FAST
00026 
00027 /* 左右反転マクロ */
00028 //#define VIDEO_MIRROR
00029 
00030 /* 解像度 */
00031 #define NTSC_WIDTH                  256                                 /* 16の倍数とすること */
00032 #define NTSC_HEIGHT                 192                                 /* 262 - 13 以下とすること */
00033 #define NTSC_VRAM_SIZE              ((NTSC_WIDTH >> 3) * NTSC_HEIGHT)   /* バイト計算 */
00034 
00035 #define GRAPH_SIZE                  (100)
00036 #define TRACK_SIZE                  (5)
00037 
00038 
00039 /*=================================================================================================
00040 構造体宣言
00041 =================================================================================================*/
00042 /* ビデオ出力の各種パラメータ */
00043 typedef struct NTSC_STATUS {
00044     unsigned int *vram;                                 /* 出力用 VRAMポインタ */
00045 
00046     unsigned int line;                                  /* 水平同期の本数 */
00047     unsigned int line_sync;                             /* 垂直帰線区間 */
00048     unsigned int line_space_top;                        /* 上部の空白部分 */
00049     unsigned int line_video;                            /* 映像部分 */
00050 
00051     unsigned int horizon_pulse;                         /* 水平同期パルス */
00052     unsigned int serration_pulse;                       /* 切り込みパルス */
00053     unsigned int equalizing_pulse;                      /* 等価パルス */
00054     unsigned int left_space;                            /* 左側の空白部分 */
00055     unsigned int video_width;                           /* 実際に出力される横の解像度 */
00056 
00057     unsigned int status;                                /* ステートマシン */
00058     unsigned int vsync;                                 /* 垂直同期カウンタ */
00059     unsigned int hsync;                                 /* 水平同期カウンタ */
00060 } NTSC_STATUS_T;
00061 typedef NTSC_STATUS_T* pNTSC_STATUS_T;
00062 
00063 /* ドライバ用の構造体 */
00064 typedef struct NTSC {
00065     unsigned int *vram;                                 /* ビデオメモリの先頭ポインタ */
00066     unsigned char output;                               /* 映像出力先 */
00067 
00068     NTSC_STATUS_T monitor;                              /* モニタ出力用 (SPI1) */
00069     NTSC_STATUS_T superimpose;                          /* スーパーインポーズ用 (SPI2) */
00070 } NTSC_T;
00071 typedef NTSC_T* pNTSC_T;
00072 
00073 /* 外部参照(API)用の構造体 */
00074 typedef struct VIDEO {
00075     char cx, cy;
00076 } VIDEO_T;
00077 typedef VIDEO_T* pVIDEO_T;
00078 
00079 typedef struct GRAPH {
00080     unsigned int x;
00081     unsigned int y;
00082     unsigned int width;
00083     unsigned int height;
00084     unsigned int ptr;
00085     unsigned char data[ GRAPH_SIZE ];
00086 } GRAPH_T;
00087 typedef GRAPH_T* pGRAPH_T;
00088 
00089 typedef struct METER {
00090     unsigned int x;
00091     unsigned int y;
00092     unsigned char r;
00093     unsigned int old;
00094 } METER_T;
00095 typedef METER_T* pMETER_T;
00096 
00097 typedef struct TRACK {
00098     unsigned int x;
00099     unsigned int y;
00100     unsigned int width;
00101     unsigned int height;
00102     unsigned int ptr;
00103     unsigned char data[ TRACK_SIZE ][2];
00104 } TRACK_T;
00105 typedef TRACK_T* pTRACK_T;
00106 
00107 
00108 /*=================================================================================================
00109 グローバル変数
00110 =================================================================================================*/
00111 extern NTSC_T ntsc;
00112 extern VIDEO_T video;
00113 
00114 
00115 /*=================================================================================================
00116 プロトタイプ宣言
00117 =================================================================================================*/
00118 extern void VIDEO_init(void);
00119 extern void VIDEO_init_clock(void);
00120 extern  void VIDEO_vram_clear(unsigned int pattern);
00121 extern  unsigned char VIDEO_get_output(void);
00122 extern  unsigned int VIDEO_get_point(unsigned int x, unsigned int y);
00123 
00124 
00125 /* 描画関数 */
00126 extern  void VIDEO_point (unsigned int x, unsigned int y);
00127 extern  void VIDEO_point_(unsigned int x, unsigned int y);
00128 
00129 extern  void VIDEO_line (int x0, int y0, int x1, int y1);
00130 extern  void VIDEO_line_(int x0, int y0, int x1, int y1);
00131 
00132 #define VIDEO_circle(x,y,r)     VIDEO_arc(x, y, r, 0, 360)
00133 #define VIDEO_circle_(x,y,r)    VIDEO_arc(x, y, r, 0, 360)
00134 extern  void VIDEO_arc (unsigned int x, unsigned int y, unsigned int r, unsigned int start, unsigned int end);
00135 extern  void VIDEO_arc_(unsigned int x, unsigned int y, unsigned int r, unsigned int start, unsigned int end);
00136 
00137 
00138 /* FONTX2 Driver依存関数 */
00139 extern  void VIDEO_locate(unsigned int x, unsigned int y);
00140 extern  void VIDEO_putch(unsigned char c);
00141 extern  void VIDEO_putstr(const char *s);
00142 extern  void VIDEO_puthex(unsigned char a);
00143 extern  void VIDEO_putbin(unsigned char a);
00144 extern  void VIDEO_putuint(unsigned int digit, unsigned char size);
00145 extern  void VIDEO_putint(int digit, unsigned char size);
00146 extern  void VIDEO_putdouble(double digit, unsigned char size, unsigned char size2);
00147 
00148 
00149 /* グラフ表示 */
00150 extern  void GRAPH_init(pGRAPH_T graph, unsigned int x, unsigned int y, unsigned int width, unsigned int height);
00151 extern  void GRAPH_putdata(pGRAPH_T graph, unsigned int data);
00152 extern  void GRAPH_draw_point(pGRAPH_T graph);
00153 extern  void GRAPH_draw_line(pGRAPH_T graph);
00154 extern  void GRAPH_draw_bar(pGRAPH_T graph);
00155 
00156 
00157 /* メータ表示 */
00158 extern  void METER_init(pMETER_T meter, unsigned int x, unsigned int y, unsigned char r);
00159 extern  void METER_draw(pMETER_T meter, unsigned int value);
00160 
00161 
00162 /* 軌跡表示 */
00163 extern  void TRACK_init(pTRACK_T track, unsigned int x, unsigned int y, unsigned int width, unsigned int height);
00164 extern  void TRACK_putdata(pTRACK_T track, unsigned int x, unsigned int y);
00165 extern  void TRACK_draw_point(pTRACK_T track);
00166 
00167 
00168 #endif

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