summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/libwt.cc
diff options
context:
space:
mode:
Diffstat (limited to 'crawl-ref/source/libwt.cc')
-rw-r--r--crawl-ref/source/libwt.cc562
1 files changed, 0 insertions, 562 deletions
diff --git a/crawl-ref/source/libwt.cc b/crawl-ref/source/libwt.cc
deleted file mode 100644
index df86c5fe87..0000000000
--- a/crawl-ref/source/libwt.cc
+++ /dev/null
@@ -1,562 +0,0 @@
-/*
- * File: guic-win.cc
- * Created by: ennewalker on Sat Jan 5 01:33:53 2008 UTC
- *
- * Modified for Crawl Reference by $Author: j-p-e-g $ on $Date: 2008-03-07 $
- */
-
-#define _WIN32_WINNT 0x0501
-
-#include <windows.h>
-#include <windowsx.h>
-#include <commdlg.h>
-#include <commctrl.h>
-
-// GDT_NONE in commctrl.h conflicts with enum.h
-#ifdef GDT_NONE
-#undef GDT_NONE
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <malloc.h>
-#include <memory.h>
-#include <tchar.h>
-#include <fcntl.h>
-
-#include "AppHdr.h"
-#include "cio.h"
-#include "debug.h"
-#include "externs.h"
-#include "files.h"
-#include "guic.h"
-#include "itemprop.h"
-#include "state.h"
-#include "tiles.h"
-
-extern int old_main(int argc, char *argv[]);
-
-extern WinClass *win_main;
-extern TileRegionClass *region_tile;
-extern img_type TileImg;
-extern BYTE pix_transparent;
-
-typedef struct ev_data
-{
- int type;
- int key;
- int x1, y1;
- bool sh, ct;
-}ev_data;
-
-#define EV_MAX 1024
-struct ev_data ev_cue[EV_MAX];
-
-static int ev_head = 0;
-static int ev_tail = 0;
-void ev_push(struct ev_data *e);
-static bool skip_key = false;
-
-// Tip text
-static TOOLINFO tiTip;
-static HWND hTool;
-static HWND pWin;
-
-#ifdef USE_TILE
-#define PAL_STD 0 //standard palette
-#define PAL_BER 1 //berserk palette
-#define PAL_SHA 2 //shadow palette
-static int palette = PAL_STD;
-LPBYTE lpPalettes[3] ;
-#endif
-
-#define DF_TOOLTIP_WIDTH 300
-
-ATOM MyRegisterClass( HINSTANCE hInstance );
-BOOL InitInstance( HINSTANCE, int );
-LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM );
-
-bool libgui_init_sys();
-void libgui_shutdown_sys();
-void update_tip_text(const char *tip);
-
-void GetNextEvent(int *etype, int *key, bool *shift, bool *ctrl,
- int *x1, int *y1, int *x2, int *y2);
-void TileInitWin();
-void delay(unsigned long ms);
-int kbhit();
-
-/***************************/
-void TileInitWin()
-{
- int i;
-
- TileImg->pDib->bmiColors[pix_transparent].rgbRed = 0;
- TileImg->pDib->bmiColors[pix_transparent].rgbGreen = 0;
- TileImg->pDib->bmiColors[pix_transparent].rgbBlue = 0;
-
- RegionClass::set_std_palette(&TileImg->pDib->bmiColors[0]);
-
- WORD chcol;
- lpPalettes[0] = (LPBYTE) (&TileImg->pDib->bmiColors[0]);
- lpPalettes[1] = (LPBYTE)GlobalAlloc(GPTR, 256 * sizeof(RGBQUAD) );
- lpPalettes[2] = (LPBYTE)GlobalAlloc(GPTR, 256 * sizeof(RGBQUAD) );
- for (i = 0; i < 256; i++)
- {
- chcol = (TileImg->pDib->bmiColors[i].rgbRed * 30
- + TileImg->pDib->bmiColors[i].rgbGreen * 59
- + TileImg->pDib->bmiColors[i].rgbBlue * 11) / 100;
- LPBYTE ptr = lpPalettes[1] + i * sizeof(RGBQUAD);
- ptr[2] = (BYTE)chcol;
- ptr[0] = (BYTE)( (chcol +1)/6 );
- ptr[1] = (BYTE)( (chcol +1)/6 );
-
- ptr = lpPalettes[2] + i * sizeof(RGBQUAD);
- ptr[2] = ptr[0] = ptr[1] = (BYTE)chcol;
- }
-}
-
-void update_tip_text(const char *tip)
-{
-#define MAXTIP 512
- static char oldtip[MAXTIP+1];
- if (strncmp(oldtip, tip, MAXTIP) == 0)
- return;
-
- strncpy(oldtip, tip, MAXTIP);
- tiTip.lpszText = (char *)tip;
- SendMessage(hTool, TTM_UPDATETIPTEXT, 0, (LPARAM)&tiTip);
-}
-
-bool libgui_init_sys( )
-{
- return (true);
-}
-
-void libgui_shutdown_sys()
-{
- GlobalFree(lpPalettes[1]);
- GlobalFree(lpPalettes[2]);
- DestroyWindow( pWin );
-}
-
-void GetNextEvent(int *etype, int *key, bool *sh, bool *ct,
- int *x1, int *y1, int *x2, int *y2)
-{
- MSG msg;
-
- while ( GetMessage(&msg, NULL, 0, 0) )
- {
- TranslateMessage( &msg );
- DispatchMessage( &msg );
- if (ev_tail != ev_head)
- break;
- }
- struct ev_data *e = &ev_cue[ev_head];
- ev_head++;
- if (ev_head == EV_MAX)
- ev_head = 0;
-
- *etype = e->type;
- *key = e->key;
- *sh = e->sh;
- *ct = e->ct;
- *x1 = e->x1;
- *y1 = e->y1;
-}
-
-void ev_push(struct ev_data *e)
-{
- ev_cue[ev_tail] = *e;
- ev_tail++;
- if (ev_tail == EV_MAX)
- ev_tail = 0;
-}
-
-int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
- LPSTR lpCmdLine, int nCmdShow )
-{
- MSG msg;
-
- MyRegisterClass( hInstance );
-
- GuicInit(hInstance, nCmdShow);
-
- // Redirect output to the console
- AttachConsole(ATTACH_PARENT_PROCESS);
- freopen("CONOUT$", "wb", stdout);
- freopen("CONOUT$", "wb", stderr);
-
- // I'll be damned if I have to parse lpCmdLine myself...
- int argc;
- LPWSTR *wargv = CommandLineToArgvW(GetCommandLineW(), &argc);
- char **argv = new char*[argc];
- int args_len = wcslen(GetCommandLineW()) + argc;
- char *args = new char[args_len];
-
- char *ptr = args;
- for (int i = 0; i < argc; i++)
- {
- wsprintfA(ptr, "%S", wargv[i]);
- argv[i] = ptr;
- ptr += strlen(argv[i]) + 1;
- }
- ASSERT(ptr <= args + args_len);
-
- old_main(argc, argv);
-
- delete args;
- delete argv;
-
- FreeConsole();
-
- return msg.wParam;
-}
-
-
-ATOM MyRegisterClass( HINSTANCE hInstance )
-{
- WNDCLASSEX wcex;
-
- wcex.cbSize = sizeof(WNDCLASSEX);
-
- wcex.style = CS_HREDRAW | CS_VREDRAW;
- wcex.lpfnWndProc = (WNDPROC)WndProc;
- wcex.cbClsExtra = 0;
- wcex.cbWndExtra = 0;
- wcex.hInstance = hInstance;
- wcex.hIcon = LoadIcon(hInstance, TEXT("CRAWL_ICON"));
- wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
- wcex.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
- wcex.lpszMenuName = "CRAWL";
- wcex.lpszClassName = "CrawlList";
- wcex.hIconSm = NULL;//LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL);
-
- return RegisterClassEx( &wcex );
-}
-
-LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- int wmId, wmEvent;
- PAINTSTRUCT ps;
- HDC hdc;
-
- struct ev_data ev;
- static int clix = 0;
- static int cliy = 0;
-
- // For keypad
- const unsigned char ck_table[9] =
- {
- CK_END, CK_DOWN, CK_PGDN,
- CK_LEFT, CK_INSERT, CK_RIGHT,
- CK_HOME, CK_UP, CK_PGUP
- };
-
- switch( message )
- {
- case WM_CREATE:
- {
- pWin = hWnd;
-
- // Example taken from
- // http://black.sakura.ne.jp/~third/system/winapi/common10.html
- InitCommonControls();
- hTool = CreateWindowEx( 0 , TOOLTIPS_CLASS ,
- NULL , TTS_ALWAYSTIP ,
- CW_USEDEFAULT , CW_USEDEFAULT ,
- CW_USEDEFAULT , CW_USEDEFAULT ,
- hWnd , NULL , ((LPCREATESTRUCT)(lParam))->hInstance ,
- NULL
- );
- GetClientRect(hWnd , &tiTip.rect);
-
- tiTip.cbSize = sizeof (TOOLINFO);
- tiTip.uFlags = TTF_SUBCLASS;
- tiTip.hwnd = hWnd;
- tiTip.lpszText = (char *)
- "This text will tell you" EOL
- " what you are pointing";
- SendMessage(hTool, TTM_ADDTOOL , 0 , (LPARAM)&tiTip);
- // Allow line wrap
- SendMessage(hTool, TTM_SETMAXTIPWIDTH, 0, DF_TOOLTIP_WIDTH);
- return 0;
- }
-
- case WM_RBUTTONDOWN:
- case WM_LBUTTONDOWN:
- case WM_MBUTTONDOWN:
- {
- ev.type = EV_BUTTON;
- ev.x1 = LOWORD(lParam);
- ev.y1 = HIWORD(lParam);
- ev.key = 1;
- ev.sh = ((GetKeyState(VK_SHIFT) & 0x80) != 0)? true : false;
- ev.ct = ((GetKeyState(VK_CONTROL) & 0x80) != 0)? true : false;
- if (message == WM_RBUTTONDOWN) ev.key = 2;
- if (message == WM_MBUTTONDOWN) ev.key = 3;
- ev_push(&ev);
- return 0;
- }
-
- case WM_RBUTTONUP:
- {
- ev.type = EV_UNBUTTON;
- ev.x1 = LOWORD(lParam);
- ev.y1 = HIWORD(lParam);
- ev.key = 1;
- if (message == WM_RBUTTONUP) ev.key = 2;
- if (message == WM_MBUTTONUP) ev.key = 3;
- ev_push(&ev);
- return 0;
- }
-
- case WM_MOUSEWHEEL:
- {
- int z = (short)HIWORD(wParam);
- ev.x1 = LOWORD(lParam) - clix;
- ev.y1 = HIWORD(lParam) - cliy;
- ev.type = EV_BUTTON;
- ev.sh = ((GetKeyState(VK_SHIFT) & 0x80) != 0) ? true : false;
- ev.ct = ((GetKeyState(VK_CONTROL) & 0x80) != 0) ? true : false;
- ev.key = (z > 0) ? 4 : 5;
- ev_push(&ev);
- return 0;
- }
-
- case WM_MOUSEMOVE:
- {
- ev.type = EV_MOVE;
- ev.x1 = LOWORD(lParam);
- ev.y1 = HIWORD(lParam);
- ev_push(&ev);
- return 0;
- }
-
- case WM_KEYDOWN:
- {
- int ch = (int) wParam;
- int result = 0;
- int dir = 0;
- bool fs = ((GetKeyState(VK_SHIFT) & 0x80) != 0)? true : false;
- bool fc = ((GetKeyState(VK_CONTROL)& 0x80) != 0)? true : false;
- bool fa = ((GetKeyState(VK_MENU) & 0x80) != 0)? true : false;
-
- if (ch >= VK_NUMPAD1 && ch <= VK_NUMPAD9)
- {
- skip_key = true;
- dir = ch - VK_NUMPAD0;
- }
- else if (VK_PRIOR <= ch && ch <= VK_DOWN || ch == VK_CLEAR)
- {
- switch(ch)
- {
- case VK_LEFT: dir = 4; break;
- case VK_RIGHT: dir = 6; break;
- case VK_UP: dir = 8; break;
- case VK_DOWN: dir = 2; break;
- case VK_HOME: dir = 7; break;
- case VK_PRIOR: dir = 9; break;
- case VK_NEXT: dir = 3; break;
- case VK_END: dir = 1; break;
- case VK_CLEAR: dir = 5; break;
- }
- }
-
- if (dir != 0)
- {
- ch = ck_table[dir-1];
- if (fc)
- ch += CK_CTRL_UP - CK_UP;
- if (fs)
- ch += CK_SHIFT_UP - CK_UP;
-
- if (fa)
- ch |= 2048;
- ev.key = ch;
- ev.type = EV_KEYIN;
- ev_push(&ev);
- return 0;
- }
- else if (ch >= VK_PAUSE
- && (ch < VK_CAPITAL || ch > VK_SPACE)
- && ch != VK_PROCESSKEY
- && ch != VK_NUMLOCK
- && (ch < VK_LSHIFT || ch > VK_RMENU)
- && (ch < 0x30 || ch > 0x39)
- && (ch < 0x41 || ch > 0x5a)
- && (ch < 0xa6 || ch > 0xe4))
- {
- result = 300 + ch;
- }
-
- if (result)
- {
- if (fs) result |= 512;
- if (fc) result |= 1024;
- if (fa) result |= 2048;
- ev.key = result;
- ev.type = EV_KEYIN;
- ev_push(&ev);
- }
-
- return 0;
- }
-
- case WM_CHAR:
- {
- if (skip_key)
- {
- skip_key = false;
- return 0;
- }
- ev.key = (int)wParam;
- ev.type = EV_KEYIN;
- ev_push(&ev);
- return 0;
- }
-
- case WM_PAINT:
- {
- hdc = BeginPaint(hWnd, &ps);
- win_main->redraw();
- EndPaint(hWnd, &ps);
- return 0;
- }
-
- case WM_MOVE:
- {
- clix = LOWORD(lParam);
- cliy = HIWORD(lParam);
- return 0;
- }
-
- case WM_COMMAND:
- {
- wmId = LOWORD(wParam);
- wmEvent = HIWORD(wParam);
- switch( wmId )
- {
- // XXX: Isn't that always the case?
- default:
- return DefWindowProc( hWnd, message, wParam, lParam );
- }
- return 0;
- }
- case WM_CLOSE:
- if (mouse_get_mode() == MOUSE_MODE_COMMAND
- || !crawl_state.need_save )
- {
- if (crawl_state.need_save)
- save_game(true);
-
- libgui_shutdown();
- }
- break;
-
- case WM_DESTROY:
- {
- PostQuitMessage( 0 );
- exit(0);
- break;
- }
- default:
- return DefWindowProc( hWnd, message, wParam, lParam );
- }
- return 0;
-}
-
-#ifdef USE_TILE
-void TileDrawDungeonAux()
-{
- dib_pack *pBuf = region_tile->backbuf;
-
- int new_palette = PAL_STD; // standard
- if (you.duration[DUR_BERSERKER])
- new_palette = PAL_BER;
-
- // XXX: is this supposed to override Berserk?
- if (you.special_wield == SPWLD_SHADOW)
- new_palette = PAL_SHA;
-
- if (new_palette != palette)
- {
- palette = new_palette;
- SetDIBColorTable(pBuf->hDC, 0, 256, (RGBQUAD *)lpPalettes[palette]);
- }
-}
-#endif
-
-bool windows_change_font(char *font_name, int *font_size, bool dos)
-{
- CHOOSEFONT cf;
-
- memset(&cf, 0, sizeof(cf));
- cf.lStructSize = sizeof(cf);
- cf.iPointSize = *font_size;
- cf.nSizeMin = 8;
- cf.nSizeMax = 24;
- cf.Flags = CF_SCREENFONTS | CF_FIXEDPITCHONLY | CF_NOVERTFONTS
- | CF_INITTOLOGFONTSTRUCT | CF_LIMITSIZE | CF_FORCEFONTEXIST;
-
- LOGFONT lf;
- strcpy(lf.lfFaceName, font_name);
- lf.lfHeight = 16;
- lf.lfWidth = 0;
- lf.lfEscapement = 0;
- lf.lfOrientation = lf.lfEscapement;
- lf.lfWeight = FW_NORMAL;
- lf.lfItalic = FALSE;
- lf.lfUnderline = FALSE;
- lf.lfStrikeOut = FALSE;
- lf.lfOutPrecision = OUT_DEFAULT_PRECIS;
- lf.lfClipPrecision = CLIP_DEFAULT_PRECIS;
- lf.lfQuality = DEFAULT_QUALITY;
- lf.lfPitchAndFamily = FF_MODERN | FIXED_PITCH;
- lf.lfCharSet = (dos)? OEM_CHARSET:ANSI_CHARSET;
- cf.lpLogFont = &lf;
-
- if (ChooseFont(&cf))
- {
- *font_size = (cf.iPointSize / 10);
- strcpy(font_name, lf.lfFaceName);
- return (true);
- }
- return (false);
-}
-
-void windows_get_winpos(int *x, int *y)
-{
- WINDOWPLACEMENT wndpl;
-
- // set length
- wndpl.length = sizeof( WINDOWPLACEMENT );
-
- if (GetWindowPlacement( win_main->hWnd, &wndpl ) != 0)
- {
- *x = wndpl.rcNormalPosition.top;
- *y = wndpl.rcNormalPosition.left;
- }
-}
-
-void delay(unsigned long ms)
-{
- Sleep((DWORD)ms);
-}
-
-int kbhit()
-{
- MSG msg;
-
- if (PeekMessage(&msg, NULL, WM_CHAR, WM_CHAR, PM_NOREMOVE)
- || PeekMessage(&msg, NULL, WM_KEYDOWN, WM_KEYDOWN, PM_NOREMOVE))
- {
- return 1;
- }
- else
- return 0;
-}
-
-void update_screen()
-{
-}