| version 1.13, 2004/04/02 19:31:27 | version 1.16, 2005/03/20 08:58:20 | 
| Line 24 | Line 24 | 
 | #define VIEW_SIZE               12 | #define VIEW_SIZE               12 | 
 |  |  | 
 | typedef struct { | typedef struct { | 
| BYTE    en; | UINT8   en; | 
 | FILEH   fh; | FILEH   fh; | 
 | HWND    hwnd; | HWND    hwnd; | 
 | } TRACEWIN; | } TRACEWIN; | 
| Line 47  enum { | Line 47  enum { | 
 | IDM_TRACECL | IDM_TRACECL | 
 | }; | }; | 
 |  |  | 
| static const char       ProgTitle[] = "console"; | static const TCHAR ProgTitle[] = _T("console"); | 
| static const char       ClassName[] = "TRACE-console"; | static const TCHAR ClassName[] = _T("TRACE-console"); | 
| static const char       ClassEdit[] = "EDIT"; | static const TCHAR ClassEdit[] = _T("EDIT"); | 
| static const char       trace1[] = "TRACE"; | static const TCHAR trace1[] = _T("TRACE"); | 
| static const char       trace2[] = "VERBOSE"; | static const TCHAR trace2[] = _T("VERBOSE"); | 
| static const char       traceen[] = "Enable"; | static const TCHAR traceen[] = _T("Enable"); | 
| static const char       tracefh[] = "File out"; | static const TCHAR tracefh[] = _T("File out"); | 
| static const char       tracecl[] = "Clear"; | static const TCHAR tracecl[] = _T("Clear"); | 
| static const char       crlf[] = "\r\n"; | static const TCHAR fontface[] = _T(VIEW_TEXT); | 
|  | static const TCHAR crlf[] = _T("\r\n"); | 
 |  |  | 
 | static  TRACEWIN        tracewin; | static  TRACEWIN        tracewin; | 
 | static  HWND            hView = NULL; | static  HWND            hView = NULL; | 
 | static  HFONT           hfView = NULL; | static  HFONT           hfView = NULL; | 
 | static  HBRUSH          hBrush = NULL; | static  HBRUSH          hBrush = NULL; | 
| static  char            szView[VIEW_BUFFERSIZE]; | static  int                     viewpos; | 
|  | static  int                     viewleng; | 
|  | static  TCHAR           viewbuf[VIEW_BUFFERSIZE * 2]; | 
 | static  TRACECFG        tracecfg; | static  TRACECFG        tracecfg; | 
 |  | static  int                     devpos; | 
 |  | static  char            devstr[256]; | 
 |  |  | 
| static const char       np2trace[] = "np2trace.ini"; | static const TCHAR np2trace[] = _T("np2trace.ini"); | 
| static const char       inititle[] = "TRACE"; | static const TCHAR inititle[] = _T("TRACE"); | 
| static const INITBL     initbl[4] = { | static const PFTBL initbl[4] = { | 
| {"posx",        INITYPE_SINT32, &tracecfg.posx,         0}, | PFVAL("posx",   PFTYPE_SINT32,  &tracecfg.posx), | 
| {"posy",        INITYPE_SINT32, &tracecfg.posy,         0}, | PFVAL("posy",   PFTYPE_SINT32,  &tracecfg.posy), | 
| {"width",       INITYPE_SINT32, &tracecfg.width,        0}, | PFVAL("width",  PFTYPE_SINT32,  &tracecfg.width), | 
| {"height",      INITYPE_SINT32, &tracecfg.height,       0}}; | PFVAL("height", PFTYPE_SINT32,  &tracecfg.height)}; | 
 |  |  | 
 | static void View_ScrollToBottom(HWND hWnd) { | static void View_ScrollToBottom(HWND hWnd) { | 
 |  |  | 
| Line 83  static void View_ScrollToBottom(HWND hWn | Line 88  static void View_ScrollToBottom(HWND hWn | 
 |  |  | 
 | static void View_ClrString(void) { | static void View_ClrString(void) { | 
 |  |  | 
| szView[0] = '\0'; | viewpos = 0; | 
| SetWindowText(hView, szView); | viewleng = 0; | 
|  | viewbuf[0] = '\0'; | 
|  | SetWindowText(hView, viewbuf); | 
 | } | } | 
 |  |  | 
| static void View_AddString(const char *lpszString) { | static void View_AddString(const TCHAR *string) { | 
 |  |  | 
| int             len, vlen; | int             slen; | 
| char    *p; | int             vpos; | 
|  | int             vlen; | 
|  | TCHAR   c; | 
 |  |  | 
| len = strlen(lpszString); | slen = lstrlen(string); | 
| if ((!len) || ((len + 3) > VIEW_BUFFERSIZE)) { | if ((slen == 0) || ((slen + 3) > VIEW_BUFFERSIZE)) { | 
 | return; | return; | 
 | } | } | 
| vlen = strlen(szView); | vpos = viewpos; | 
| if ((vlen + len + 3) > VIEW_BUFFERSIZE) { | vlen = viewleng; | 
| p = szView; | if ((vpos + vlen + slen + 3) > (VIEW_BUFFERSIZE * 2)) { | 
| while(*p) { | while(vlen > 0) { | 
 | vlen--; | vlen--; | 
| if ((*p++ == 0x0a) && ((vlen + len + 3) <= VIEW_BUFFERSIZE)) { | c = viewbuf[vpos++]; | 
|  | if ((c == 0x0a) && ((vlen + slen + 3) <= VIEW_BUFFERSIZE)) { | 
 | break; | break; | 
 | } | } | 
 | } | } | 
| strcpy(szView, p); | if (vpos >= VIEW_BUFFERSIZE) { | 
|  | if (vlen) { | 
|  | CopyMemory(viewbuf, viewbuf + vpos, vlen * sizeof(TCHAR)); | 
|  | } | 
|  | vpos = 0; | 
|  | viewpos = 0; | 
|  | } | 
 | } | } | 
| strcat(szView, lpszString); | CopyMemory(viewbuf + vpos + vlen, string, slen * sizeof(TCHAR)); | 
| strcat(szView, crlf); | vlen += slen; | 
| SetWindowText(hView, szView); | viewbuf[vpos + vlen + 0] = '\r'; | 
|  | viewbuf[vpos + vlen + 1] = '\n'; | 
|  | viewbuf[vpos + vlen + 2] = '\0'; | 
|  | viewleng = vlen + 2; | 
|  | SetWindowText(hView, viewbuf + vpos); | 
 | View_ScrollToBottom(hView); | View_ScrollToBottom(hView); | 
 | } | } | 
 |  |  | 
| Line 117  static void View_AddString(const char *l | Line 137  static void View_AddString(const char *l | 
 | // ---- | // ---- | 
 |  |  | 
 | #if defined(FILEBUFSIZE) | #if defined(FILEBUFSIZE) | 
| static  char    filebuf[FILEBUFSIZE]; | static  TCHAR   filebuf[FILEBUFSIZE]; | 
 | static  UINT32  filebufpos; | static  UINT32  filebufpos; | 
 | #endif | #endif | 
 |  |  | 
| Line 143  static void trfh_close(void) { | Line 163  static void trfh_close(void) { | 
 | } | } | 
 | } | } | 
 |  |  | 
| static void trfh_open(const char *fname) { | static void trfh_open(const TCHAR *fname) { | 
 |  |  | 
 | trfh_close(); | trfh_close(); | 
 | tracewin.fh = file_create(fname); | tracewin.fh = file_create(fname); | 
| Line 152  static void trfh_open(const char *fname) | Line 172  static void trfh_open(const char *fname) | 
 | #endif | #endif | 
 | } | } | 
 |  |  | 
| static void trfh_add(const char *buf) { | static void trfh_add(const TCHAR *buf) { | 
 |  |  | 
 | UINT    size; | UINT    size; | 
 |  |  | 
| size = strlen(buf); | size = lstrlen(buf); | 
 | #if defined(FILEBUFSIZE) | #if defined(FILEBUFSIZE) | 
 | while(size) { | while(size) { | 
 | UINT pos = filebufpos & (FILEBUFSIZE - 1); | UINT pos = filebufpos & (FILEBUFSIZE - 1); | 
| Line 226  static LRESULT CALLBACK traceproc(HWND h | Line 246  static LRESULT CALLBACK traceproc(HWND h | 
 |  |  | 
 | hfView = CreateFont(VIEW_SIZE, 0, 0, 0, 0, 0, 0, 0, | hfView = CreateFont(VIEW_SIZE, 0, 0, 0, 0, 0, 0, 0, | 
 | SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, | SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, CLIP_DEFAULT_PRECIS, | 
| DEFAULT_QUALITY, FIXED_PITCH, VIEW_TEXT); | DEFAULT_QUALITY, FIXED_PITCH, fontface); | 
 | if (!hfView) { | if (!hfView) { | 
 | break; | break; | 
 | } | } | 
| Line 264  static LRESULT CALLBACK traceproc(HWND h | Line 284  static LRESULT CALLBACK traceproc(HWND h | 
 | trfh_close(); | trfh_close(); | 
 | } | } | 
 | else { | else { | 
| trfh_open("traceout.txt"); | trfh_open(_T("traceout.txt")); | 
 | } | } | 
 | hmenu = GetSystemMenu(hWnd, FALSE); | hmenu = GetSystemMenu(hWnd, FALSE); | 
 | CheckMenuItem(hmenu, IDM_TRACEFH, | CheckMenuItem(hmenu, IDM_TRACEFH, | 
| Line 347  void trace_init(void) { | Line 367  void trace_init(void) { | 
 |  |  | 
 | HWND    hwnd; | HWND    hwnd; | 
 |  |  | 
 |  | ZeroMemory(&tracewin, sizeof(tracewin)); | 
 | if (!hPrev) { | if (!hPrev) { | 
 | WNDCLASS wc; | WNDCLASS wc; | 
 | wc.style = CS_HREDRAW | CS_VREDRAW; | wc.style = CS_HREDRAW | CS_VREDRAW; | 
| Line 358  void trace_init(void) { | Line 379  void trace_init(void) { | 
 | wc.hCursor = LoadCursor(NULL, IDC_ARROW); | wc.hCursor = LoadCursor(NULL, IDC_ARROW); | 
 | wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); | wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); | 
 | wc.lpszMenuName = NULL; | wc.lpszMenuName = NULL; | 
| wc.lpszClassName = (LPCSTR)ClassName; | wc.lpszClassName = (LPCTSTR)ClassName; | 
 | if (!RegisterClass(&wc)) { | if (!RegisterClass(&wc)) { | 
 | return; | return; | 
 | } | } | 
 | } | } | 
 |  |  | 
 | #if 1 | #if 1 | 
| tracewin.en = 0; | tracewin.en = 4; | 
| tracewin.fh = FILEH_INVALID; |  | 
 | #else | #else | 
 | tracewin.en = 0; | tracewin.en = 0; | 
 | tracewin.fh = trfh_open("traces.txt"); |  | 
 | #endif | #endif | 
 |  | tracewin.fh = FILEH_INVALID; | 
 |  |  | 
 | tracecfg.posx = CW_USEDEFAULT; | tracecfg.posx = CW_USEDEFAULT; | 
 | tracecfg.posy = CW_USEDEFAULT; | tracecfg.posy = CW_USEDEFAULT; | 
| Line 408  void trace_fmt(const char *fmt, ...) { | Line 428  void trace_fmt(const char *fmt, ...) { | 
 |  |  | 
 | BOOL    en; | BOOL    en; | 
 | va_list ap; | va_list ap; | 
| char    buf[0x1000]; | TCHAR   buf[0x1000]; | 
 |  |  | 
 | en = (tracewin.en & 1) && | en = (tracewin.en & 1) && | 
 | ((tracewin.en & 4) || (tracewin.fh != FILEH_INVALID)); | ((tracewin.en & 4) || (tracewin.fh != FILEH_INVALID)); | 
 | if (en) { | if (en) { | 
 | va_start(ap, fmt); | va_start(ap, fmt); | 
 |  | #if defined(_UNICODE) | 
 |  | TCHAR cnvfmt[0x800]; | 
 |  | MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, fmt, -1, | 
 |  | cnvfmt, NELEMENTS(cnvfmt)); | 
 |  | vswprintf(buf, cnvfmt, ap); | 
 |  | #else | 
 | vsprintf(buf, fmt, ap); | vsprintf(buf, fmt, ap); | 
 |  | #endif | 
 | va_end(ap); | va_end(ap); | 
 | if ((tracewin.en & 4) && (hView)) { | if ((tracewin.en & 4) && (hView)) { | 
 | View_AddString(buf); | View_AddString(buf); | 
| Line 430  void trace_fmt2(const char *fmt, ...) { | Line 457  void trace_fmt2(const char *fmt, ...) { | 
 |  |  | 
 | BOOL    en; | BOOL    en; | 
 | va_list ap; | va_list ap; | 
| char    buf[0x1000]; | TCHAR   buf[0x1000]; | 
 |  |  | 
 | en = (tracewin.en & 2) && | en = (tracewin.en & 2) && | 
 | ((tracewin.en & 4) || (tracewin.fh != FILEH_INVALID)); | ((tracewin.en & 4) || (tracewin.fh != FILEH_INVALID)); | 
 | if (en) { | if (en) { | 
 | va_start(ap, fmt); | va_start(ap, fmt); | 
 |  | #if defined(_UNICODE) | 
 |  | TCHAR cnvfmt[0x800]; | 
 |  | MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, fmt, -1, | 
 |  | cnvfmt, NELEMENTS(cnvfmt)); | 
 |  | vswprintf(buf, cnvfmt, ap); | 
 |  | #else | 
 | vsprintf(buf, fmt, ap); | vsprintf(buf, fmt, ap); | 
 |  | #endif | 
 | va_end(ap); | va_end(ap); | 
 | if ((tracewin.en & 4) && (hView)) { | if ((tracewin.en & 4) && (hView)) { | 
 | View_AddString(buf); | View_AddString(buf); | 
| Line 447  void trace_fmt2(const char *fmt, ...) { | Line 481  void trace_fmt2(const char *fmt, ...) { | 
 | } | } | 
 | } | } | 
 | } | } | 
 |  |  | 
 | #endif | #endif | 
 |  |  |