-
Notifications
You must be signed in to change notification settings - Fork 4
/
Glk-Spec-Changes.txt
158 lines (101 loc) · 5.18 KB
/
Glk-Spec-Changes.txt
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
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
* version 0.1 (Dec 16, 1997)
Initial release.
* version 0.1.1 (Dec 20, 1997)
Added upper and lower case conversion. (glk_char_to_lower(), glk_char_to_upper())
Added the ability to exit the process. (glk_exit())
* version 0.2 (Feb 7, 1998)
Changed the startup process so that there is no initial window. You can then
call glk_window_open() to create the initial window, not splitting anything.
It is also now legal to close all windows.
Removed the attr argument from glk_set_style() and glk_set_style_stream(),
since text can only be in one style at a time.
Changed the defining metric of a fixed-size window split from a window *type*
to a particular key *window*. (If the split's key window is closed, the split
defaults to zero size.) Changed glk_window_set_arrangement() and
glk_window_get_arrangement() to reflect this.
* version 0.3 (Mar 5, 1998)
Added the sections on styles and style hints. Functions glk_stylehint_set(),
glk_stylehint_clear(), glk_style_distinguish(), glk_style_measure().
Made timer events optional -- the library need not implement them. Added
gestalt_Timer to test for whether they're supported.
* version 0.4 (May 3, 1998)
Added the big final chapter, on porting and portability.
Noted that styles and style hints may be added in the future, so any
value is legal to pass to Glk style and hint functions.
The Great Typedef Change -- uint32 is now called glui32. This is to prevent
possible namespace clashes.
Added a short section about basic types (glui32, etc.)
Added a glsi32 type (signed 32-bit integer), and changed the arguments in
glk_stream_set_position() and glk_stylehint_set() to use it.
Added glk_select_poll(), to check for events and flush the screen without
pausing.
Added glk_tick(), to do annoying OS tasks on platforms which require it.
Defined glk_get_line_stream() and glk_get_buffer_stream(), and changed
their return type to glui32 (number of characters read.)
Added appendix with a list of function call selectors -- a fixed id number
for each Glk call. Also added gestalt_FunctionNameToID and
gestalt_FunctionIDToName to find functions at run-time.
* version 0.5 (January 1, 1999)
Clarified the use of the second argument in gestalt selectors which don't
use it. To wit -- always pass 0.
Fixed some fuzzy thinking about how C can pad structures (ie, any way it
wants to.) The dispatch layer now handles this.
Clarified the policy on calling glk_set_interrupt_handler() twice. The new
handler function just replaces the old one.
Added the dispatch layer. Changed all the integer identifiers to opaque
structure pointers.
Removed gestalt_FunctionToID and gestalt_IDToFunction; that functionality
has been moved to the dispatch layer.
Changed the void* buffer arguments in glk_stream_open_memory() and
glk_request_line_event() to char*.
Changed the return type of glk_get_char_stream() to glsi32, so that it
could sensibly return -1 for end-of-file.
Added glk_window_get_sibling().
* version 0.5.1 (January 27, 1999)
Added all the graphics stuff, and the Blorb layer.
* version 0.5.2 (July 1, 1999)
Changed the Blorb layer slightly. FORM chunks (such as AIFF) are now
searched for and returned as their subtype, rather than just FORM.
Added the sound stuff.
Added glk_fileref_create_from_fileref().
* version 0.6.0 (March 26, 2000)
Added the hyperlinks stuff.
Changed glk_gestalt_ext() to use a glui32 array, instead of a void
pointer.
* version 0.6.1 (June 29, 2000)
Added gestalt_SoundMusic and gestalt_GraphicsTransparency.
Added stylehint_ReverseColor.
Noted that negative event type values are reserved for implementation-
defined events.
* version 0.7.0 (August 13, 2006)
Added gestalt_Unicode, and many Unicode calls.
* version 0.7.1 (January 22, 2011)
Adjusted the glk.h header to use 32-bit typedefs for glui32 and glsi32,
rather than assuming that "long" is the right length.
New features:
- winmethod_Border and winmethod_NoBorder constants, to request a border
or no border between Glk windows.
- glk_set_terminators_line_event(), to allow line input to be submitted
when specific special keys (e.g., function keys) are hit.
- glk_set_echo_line_event(), to control whether line input is echoed when
the line is submitted or cancelled.
- glk_buffer_canon_decompose_uni() and glk_buffer_canon_normalize_uni(),
to normalize Unicode strings (Normalization Forms D and C).
* version 0.7.2 (February 17, 2011)
Added the clock date and time functions, along with gestalt_DateTime.
* version 0.7.3 (October 10, 2011)
Added some new sound-playing functions, along with gestalt_Sound2.
New features:
- can pause and unpause a sound channel.
- can change a sound channel's volume gradually over an interval, and
get an event notification when the volume change is complete.
* version 0.7.4 (January 29, 2012)
- recommendation for unifying the way interpreters handle file suffixes.
For data files, at least.
- a way to embed data files in a Blorb archive, so that the game can read
them directly.
- ADDITION (July 2012): clarify that IFF-style data files (FORM chunks)
are considered to include their headers when embedded.
* version 0.7.5 (February 13, 2017)
- graphics windows can support character input.
- specify that a Unicode file stream in text mode should use UTF-8.