File: help.c

package info (click to toggle)
xjewel 1.6-9
  • links: PTS
  • area: main
  • in suites: hamm
  • size: 388 kB
  • ctags: 358
  • sloc: ansic: 2,765; makefile: 59; sh: 10
file content (126 lines) | stat: -rw-r--r-- 3,235 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/*
**
**	X11 Jewel By David Cooper and Jose Guterman 05/92
**
*/

#ifdef VMS
#include <decw$include/Xlib.h>
#include <decw$include/Xutil.h>
#include <decw$include/Xos.h>
#else
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#include <X11/Xos.h>
#endif
 
#include "general.h"
#include "logic.h"
#include "jewel.h"
#include "xhscore.h"
#include "xw.h"


XFontStruct *SymbolFont;
GC SymbolGC;
XFontStruct *HeaderFont;
GC HeaderGC;
#define SYMBOL_FONT "-adobe-symbol-*-*-*-*-18-*-*-*-*-*-adobe-*"
#define HEADER_FONT "-*-*-bold-r-*-*-24-*-*-*-p-*-iso8859-1"
#define HEADER_LOC_Y 100
#define HELP_LEFT_X 100
#define HELP_RIGHT_X (SCREEN_X - HELP_LEFT_X)
char *HeaderString = "\253\253\253 Keys \273\273\273";

#define NUM_HELP 6
static char *HelpStrings[NUM_HELP][3]=
	{
		{ "\254", ", j, 4 ",     " Move Block Left", },
		{ "\255", ", k, 5 ",     " Rotate Block", },
		{ "\256", ", l, 6 ",     " Move Block Right", },
		{ "\257", ", Space, 0 ", " Drop Block", },
		{ " ", "P, p", " Pause/unPause", },
		{ " ", "U, u", " Iconify and Pause", },
	};


void Expose_Help()
	{
	int i, y;
	XCharStruct Sizes;
	int dir, asc, dsc;

	y=HEADER_LOC_Y;

	XTextExtents(HeaderFont,HeaderString,strlen(HeaderString),
		&dir,&asc,&dsc,&Sizes);
	XDrawImageString(xw_display, xw_window, HeaderGC,
		(SCREEN_X - (Sizes.width))/2 , y,
		HeaderString, strlen(HeaderString));

	for (i=0; i< NUM_HELP; i++)
		{
		int len;
		y+=((HeaderFont->ascent+HeaderFont->descent)*2);
		/* draw keypad */
		len=strlen(HelpStrings[i][0]);
		XTextExtents(SymbolFont,HelpStrings[i][0],len,
			&dir,&asc,&dsc,&Sizes);
		XDrawImageString(xw_display, xw_window, SymbolGC, 
			HELP_LEFT_X, y, HelpStrings[i][0],len);
		/* draw keyboard */
		len=strlen(HelpStrings[i][1]);
		XDrawImageString(xw_display, xw_window, HeaderGC,
			(HELP_LEFT_X + Sizes.width), y, HelpStrings[i][1], len);
		/* draw operations */
		len=strlen(HelpStrings[i][2]);
		XTextExtents(HeaderFont,HelpStrings[i][2],len,
			&dir,&asc,&dsc,&Sizes);
		XDrawImageString(xw_display, xw_window, HeaderGC,
			(HELP_RIGHT_X - Sizes.width), y, HelpStrings[i][2], len);
		}

	XTextExtents(VerFont,StartString, strlen(StartString),
		&dir,&asc,&dsc,&Sizes);
	XDrawImageString(xw_display, xw_window, VerGC,
		(SCREEN_X - Sizes.width)/2,
		START_LOC_Y+((VerFont->ascent)*3/2),
		StartString, strlen(StartString));

	XDrawImageString(xw_display, xw_window, VerGC, VER_LOC_X,
		VER_LOC_Y+((VerFont->ascent)*3/2),
		VerString, strlen(VerString));
	XFlush(xw_display);
	}


void Start_Help()
	{
	XClearWindow(xw_display, xw_window);

	Expose_Help();
	JewelState=HELP;
	xw_set_timer(10000L);
	}

void Init_Help()
	{
	XGCValues gcv;
	unsigned long gcvm;

	gcvm=(GCFont | GCGraphicsExposures | GCForeground | GCBackground);

	gcv.graphics_exposures=False;
	gcv.foreground=white;
	gcv.background=black;

	if ( (SymbolFont=XLoadQueryFont(xw_display,SYMBOL_FONT)) == NULL)
		{ xw_fatal("Cannot load SYMBOL font.\n",__LINE__,__FILE__); }
	gcv.font=SymbolFont->fid;
	SymbolGC=XCreateGC(xw_display, xw_window, gcvm, &gcv);

	if ( (HeaderFont=XLoadQueryFont(xw_display,HEADER_FONT)) == NULL)
		{ xw_fatal("Cannot load HEADER font.\n",__LINE__,__FILE__); }
	gcv.font=HeaderFont->fid;
	HeaderGC=XCreateGC(xw_display, xw_window, gcvm, &gcv);
	}