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

C:/PIC/OpenSSM/libvideo.h

説明を見る。
00001 /**************************************************************************************************
00002     Title           : PIC24F Series NTSC Composit VIDEO/Superimpose Driver
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/11/21
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 画面描画が左右反転に描かれる。バックモニタ用カメラなどを流用すると、カメラ出力が
00029 左右反転しているので、それらに対応するため
00030 */
00031 //#define VIDEO_MIRROR
00032 
00033 /* 解像度. 288x224pxまで動作確認済み. メモリ容量に注意 */
00034 #define NTSC_WIDTH                  256                                 /* 16の倍数とすること */
00035 #define NTSC_HEIGHT                 192                                 /* 262 - 13 以下とすること */
00036 #define NTSC_VRAM_SIZE              ((NTSC_WIDTH >> 3) * NTSC_HEIGHT)   /* バイト計算 */
00037 
00038 #define GRAPH_SIZE                  (100)
00039 #define TRACK_SIZE                  (5)
00040 
00041 
00042 /*=================================================================================================
00043 構造体宣言
00044 =================================================================================================*/
00045 /* ビデオ出力の各種パラメータ */
00046 typedef struct NTSC_STATUS {
00047     unsigned int *vram;                                 /* 出力用 VRAMポインタ */
00048 
00049     unsigned int line;                                  /* 水平同期の本数 */
00050     unsigned int line_sync;                             /* 垂直帰線区間 */
00051     unsigned int line_space_top;                        /* 上部の空白部分 */
00052     unsigned int line_video;                            /* 映像部分 */
00053 
00054     unsigned int horizon_pulse;                         /* 水平同期パルス */
00055     unsigned int serration_pulse;                       /* 切り込みパルス */
00056     unsigned int equalizing_pulse;                      /* 等価パルス */
00057     unsigned int left_space;                            /* 左側の空白部分 */
00058     unsigned int video_width;                           /* 実際に出力される横の解像度 */
00059 
00060     unsigned int status;                                /* ステートマシン */
00061     unsigned int vsync;                                 /* 垂直同期カウンタ */
00062     unsigned int hsync;                                 /* 水平同期カウンタ */
00063 } NTSC_STATUS_T;
00064 typedef NTSC_STATUS_T* pNTSC_STATUS_T;
00065 
00066 /* ドライバ用の構造体 */
00067 typedef struct NTSC {
00068     unsigned int *vram;                                 /* ビデオメモリの先頭ポインタ */
00069     unsigned char output;                               /* 映像出力先 */
00070 
00071     NTSC_STATUS_T monitor;                              /* モニタ出力用 (SPI1) */
00072     NTSC_STATUS_T superimpose;                          /* スーパーインポーズ用 (SPI2) */
00073 } NTSC_T;
00074 typedef NTSC_T* pNTSC_T;
00075 
00076 /* 外部参照(API)用の構造体 */
00077 typedef struct VIDEO {
00078     char cx, cy;
00079 } VIDEO_T;
00080 typedef VIDEO_T* pVIDEO_T;
00081 
00082 typedef struct GRAPH {
00083     unsigned int x;
00084     unsigned int y;
00085     unsigned int width;
00086     unsigned int height;
00087     unsigned int ptr;
00088     unsigned char data[ GRAPH_SIZE ];
00089 } GRAPH_T;
00090 typedef GRAPH_T* pGRAPH_T;
00091 
00092 typedef struct METER {
00093     unsigned int x;
00094     unsigned int y;
00095     unsigned char r;
00096     unsigned int old;
00097 } METER_T;
00098 typedef METER_T* pMETER_T;
00099 
00100 typedef struct TRACK {
00101     unsigned int x;
00102     unsigned int y;
00103     unsigned int width;
00104     unsigned int height;
00105     unsigned int ptr;
00106     unsigned char data[ TRACK_SIZE ][2];
00107 } TRACK_T;
00108 typedef TRACK_T* pTRACK_T;
00109 
00110 
00111 /*=================================================================================================
00112 グローバル変数
00113 =================================================================================================*/
00114 extern NTSC_T ntsc;
00115 extern VIDEO_T video;
00116 
00117 
00118 /*=================================================================================================
00119 プロトタイプ宣言
00120 =================================================================================================*/
00121 extern void VIDEO_init(void);
00122 extern void VIDEO_init_clock(void);
00123 extern  void VIDEO_vram_clear(unsigned int pattern);
00124 extern  unsigned char VIDEO_get_output(void);
00125 extern  unsigned int VIDEO_get_point(unsigned int x, unsigned int y);
00126 
00127 
00128 /* 描画関数 */
00129 extern  void VIDEO_point (unsigned int x, unsigned int y);
00130 extern  void VIDEO_point_(unsigned int x, unsigned int y);
00131 
00132 extern  void VIDEO_line (int x0, int y0, int x1, int y1);
00133 extern  void VIDEO_line_(int x0, int y0, int x1, int y1);
00134 
00135 #define VIDEO_circle(x,y,r)     VIDEO_arc(x, y, r, 0, 360)
00136 #define VIDEO_circle_(x,y,r)    VIDEO_arc(x, y, r, 0, 360)
00137 extern  void VIDEO_arc (unsigned int x, unsigned int y, unsigned int r, unsigned int start, unsigned int end);
00138 extern  void VIDEO_arc_(unsigned int x, unsigned int y, unsigned int r, unsigned int start, unsigned int end);
00139 
00140 
00141 /* FONTX2 Driver依存関数 */
00142 extern  void VIDEO_locate(unsigned int x, unsigned int y);
00143 extern  void VIDEO_putch(unsigned char c);
00144 extern  void VIDEO_putstr(const char *s);
00145 extern  void VIDEO_puthex(unsigned char a);
00146 extern  void VIDEO_putbin(unsigned char a);
00147 extern  void VIDEO_putuint(unsigned int digit, unsigned char size);
00148 extern  void VIDEO_putint(int digit, unsigned char size);
00149 extern  void VIDEO_putdouble(double digit, unsigned char size, unsigned char size2);
00150 
00151 
00152 /* グラフ表示 */
00153 extern  void GRAPH_init(pGRAPH_T graph, unsigned int x, unsigned int y, unsigned int width, unsigned int height);
00154 extern  void GRAPH_putdata(pGRAPH_T graph, unsigned int data);
00155 extern  void GRAPH_draw_point(pGRAPH_T graph);
00156 extern  void GRAPH_draw_line(pGRAPH_T graph);
00157 extern  void GRAPH_draw_bar(pGRAPH_T graph);
00158 
00159 
00160 /* メータ表示 */
00161 extern  void METER_init(pMETER_T meter, unsigned int x, unsigned int y, unsigned char r);
00162 extern  void METER_draw(pMETER_T meter, unsigned int value);
00163 
00164 
00165 /* 軌跡表示 */
00166 extern  void TRACK_init(pTRACK_T track, unsigned int x, unsigned int y, unsigned int width, unsigned int height);
00167 extern  void TRACK_putdata(pTRACK_T track, unsigned int x, unsigned int y);
00168 extern  void TRACK_draw_point(pTRACK_T track);
00169 
00170 
00171 #endif

OpenSSMに対してSun Nov 21 2010 13:53:16に生成されました。  doxygen 1.7.1