-
Notifications
You must be signed in to change notification settings - Fork 20
/
changelog.txt
410 lines (370 loc) · 22 KB
/
changelog.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
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
v2.0.0:
Major changes:
- general: switched to MIT license
- general: added support for WebAssembly (pure SDL, or SDL + OpenGL ES3)
- general: dropped support for C++ version earlier than C++17
- general: switched to observable_unique_ptr for ownership and observable pointers
- general: return references (&) instead of pointers (*) if an object cannot be null
- input: added SDL input implementation
- input: removed OIS input implementation
- input: removed GLFW input implementation
- gui: added a pure SFML implementation for the rendering
- gui: added a pure SDL implementation for the rendering
- gui: added a faster OpenGL 3 implementation, alternative to fixed pipeline legacy OpenGL
- gui: added documentation for the Lua API
- gui: added support for high-DPI systems using a global scaling factor (with hints from OS)
- gui: added vertex_cache to speed up rendering (only available with OpenGL renderer)
- gui: added texture atlases to speed up rendering
- gui: added quad batching to speed up rendering
- gui: added localizer class for handling languages, translations, and string formatting
- gui: added animated_texture region type for animated textures
- gui: font_string can now render icons/smileys mixed with the rendered text
- gui: fonts are no longer limited to the first 255 unicode characters
- gui: the order in which widgets are created from XML is now tightly specified. For any frame:
- the frame itself is created (without any of its regions or children)
- the special regions are created (e.g., slider thumb texture, button texture, etc.)
- the regions are created, in order of declaration in the XML file
- the special frames are created (e.g., scroll child)
- the children frames are created, in order of declaration in the XML file
- gui: scripts are now handled with signals and slots in C++, for better control of lifetime
- gui: inherited scripts will be preserved and executed before the scripts defined in the frames
- gui: focus is now handled as a stack rather than binary
- gui: keyboard input is now given to topmost frame registered for the pressed key
- lua: removed custom lua wrapper, using sol2 instead
- xml: removed custom xml parser, using pugixml instead
- yaml: added yaml parser for GUI layout
Other changes:
- general: various fixes and improvements to the build system
- general: fixed various warnings and minor bugs detected by clang
- general: moved away from using reference-counted smart pointers whenever possible
- general: moved all code into the lxgui namespace
- general: exceptions now inherit from std::exception
- general: moved all enums to C++11 enum class
- general: added C++11 noexcept specifiers where appropriate
- general: removed foreach() macro in favor of C++11 range-based for loop
- general: use override instead of virtual whenever applicable
- general: made all single argument constructors explicit where appropriate
- general: removed lua::var (custom std::any) and added utils::variant (using std::variant)
- general: renamed "sensibility" to "sensitivity"
- general: renamed "overed" to "hovered"
- general: now using non-static data member initialisers whenever possible
- utils: removed broken custom code for UTF8-UTF32 conversion and use a library instead
- utils: string conversion functions are now locale-independent; use localizer class otherwise
- utils: added observer/owner smart pointers
- utils: added signal
- lua: added support for Lua versions later than 5.1
- lua: removed unusual constructs to serialize a table
- input: simplified class hierarchy by merging handler+handler_impl into input::source
- input: vastly improved performance of SFML input implementation
- input: renamed input::manager into input::dispatcher
- input: get_key_name() is now a free function renamed to get_key_code_name()
- input: get_key_code_name() is now platform-independent, and only returns English
- input: added set_mouse_cursor() and reset_mouse_cursor()
- input: added get_interface_scaling_factor_hint()
- input: added set_interface_scaling_factor()
- input: removed key_is_down_long() and mouse_is_down_long()
- input: added world_dispatcher
- input: added window
- gui: added error message when trying to anchor to a "$parent..." when there is no parent
- gui: added support for nested manually-rendered objects (scroll frame inside scroll frame)
- gui: added renderer::set_view() to allow arbitrary view transforms
- gui: added color::from_hsv and color::to_hsv
- gui: added support for custom frame/layered_region factory functions
- gui: added EditBox:set_font Lua function
- gui: added FontString:set_line_spacing and get_line_spacing Lua functions
- gui: added explicit =delete for copy and move constructors when appropriate
- gui: added event_data class
- gui: added frame::get_rough_num_children and get_rough_num_regions
- gui: added root to hold root frames
- gui: added virtual_uiroot to hold virtual root frames
- gui: added factory to manage region creation functions
- gui: added registry and virtual_registry to handle gion lookup by name
- gui: added addon_registry to load and manage addons
- gui: added keybinder to manage Lua key bindings
- gui: added gion::is_loaded() and clarify the semantic
- gui: added input::get_localizable_key_name and input::get_localizable_mouse_button_name
- gui: added input::window as an interface to implementation-dependent concepts (clipboard...)
- gui: added frame::enable_key_capture
- gui: added OnKeyRepeat frame event
- gui: added OnReceiveDrag for frame
- gui: added OnCursorChanged for edit_box
- gui: added OnUpPressed and OnDownPressed callbacks to edit_box
- gui: added set_cursor_position()/get_cursor_position() to edit_box
- gui: added clear_history_lines() to edit_box
- gui: added clipboard support to edit_box
- gui: added automatic un-focus of edit_box when clicking outside of the box
- gui: added frame::get_script
- gui: added slider::set_orientation(const std::string&)
- gui: added status_bar::set_orientation(const std::string&)
- gui: added manager::close_ui_now and made close_ui safer
- gui: added frame::enable_mouse_click and frame::enable_mouse_move
- gui: added font_string::set_vertex_cache_strategy
- gui: added frame::set_update_rate
- gui: added render_target::save_to_file
- gui: added region::is_valid
- gui: renamed gui::uiobject into gui::region, and merged with previous gui::region
- gui: renamed gui::manager_impl into gui::renderer
- gui: renamed gui::gl::manager into gui::gl::renderer
- gui: renamed gui::gl::matrix4f into gui::matrix4f and reworked internals of the class
- gui: renamed frame::on into frame::fire_script
- gui: renamed frame::fire_build_layer_list into frame::notify_layers_need_update
- gui: renamed frame_renderer::fire_redraw into notify_strata_needs_redraw
- gui: renamed region::fire_udpate_borders to region::notify_borders_need_update
- gui: renamed color::chanel to color::channel
- gui: renamed quad2 to bounds2
- gui: renamed font_string::set_offsets to set_offset
- gui: renamed font_string::get_offsets to get_offset
- gui: renamed font_string::set_shadow_offsets to set_shadow_offset
- gui: renamed font_string::get_shadow_offsets to get_shadow_offset
- gui: renamed region::set_abs_width/height/dimensions to set_width/height/dimensions
- gui: renamed region::set_rel_width/height/dimensions to set_relative_width/height/dimensions
- gui: renamed frame::get/set_min/max_resize to get/set_min/max_dimensions
- gui: renamed manager::update to update_ui
- gui: renamed manager::read_files to load_ui
- gui: renamed manager::create_lua to register_lua_glues
- gui: renamed event_manager to event_emitter
- gui: renamed input::manager::get_key_name into input::get_key_codename
- gui: renamed input::manager::get_mouse_button_string into input::get_mouse_button_codename
- gui: renamed input::manager::get_key_name overloads with modifiers
- gui: renamed input::manager to input::dispatcher
- gui: renamed layer to layer_container
- gui: renamed layer_type to layer
- gui: renamed TOPLEFT to TOP_LEFT, BOTTOMRIGHT to BOTTOM_RIGHT, etc.
- gui: renamed justifyH to alignX, justifyV to alignY
- gui: renamed anchor_point to point
- gui: renamed register_for_drag to enable_drag
- gui: renamed get_object_type to get_region_type
- gui: renamed clear_all_points to clear_all_anchors
- gui: renamed [get/set/modify]_point to [get/set/modify]_anchor
- gui: renamed any function of the form "get_num_[...]()" into "get_[...]_count()"
- gui: renamed set_all_points/clear_all_points to set_all_anchors/clear_all_anchors
- gui: renamed strata to strata_data
- gui: renamed frame_level/frameLevel to level
- gui: renamed frame_strata/frameStrata to strata
- gui: renamed can_non_space_wrap to is_non_space_wrap_enabled
- gui: renamed set_non_space_wrap to set_non_space_wrap_enabled
- gui: renamed has_shadow to is_shadow_enabled
- gui: renamed set_shadow to set_shadow_enabled
- gui: renamed set_word_wrap to set_word_wrap_enabled
- gui: renamed can_word_wrap to is_word_wrap_enabled
- gui: renamed can_non_space_wrap to is_non_space_wrap_enabled
- gui: renamed set_non_space_wrap to set_word_wrap_enabled
- gui: renamed nonspacewrap to nonSpaceWrap
- gui: renamed enable_mouse* to set_mouse*_enabled
- gui: renamed enable_key* to set_key*_enabled
- gui: renamed is_password to is_password_mode_enabled
- gui: renamed set_password to set_password_mode_enabled
- gui: renamed blink_period/blinkPeriod to blink_time/blinkTime
- gui: removed Frame:on from Lua API (instead, call scripts directly, e.g.: frame:on_update())
- gui: removed the sprite class
- gui: removed region::get_base()
- gui: removed region::push_on_lua()
- gui: removed region::get_id() and set_id()
- gui: removed anchor::set_object() (now a reference, cannot change)
- gui: removed font_string::get_shadow_x_offset()
- gui: removed font_string::get_shadow_y_offset()
- gui: removed region::set_abs_point and region::set_rel_point, use set_point() instead
- gui: removed anchor::get_abs_x/get_abs_y and added anchor::get_point
- gui: removed region::get_abs_width/height and added region::get_dimensions()
- gui: removed region::get_apparent_width/height and added region::get_apparent_dimensions()
- gui: removed region::set_newly_created/is_newly_created (no longer necessary)
- gui: removed manager::is_loading_ui() (no longer necessary)
- gui: removed manager::begin() and end()
- gui: removed frame::is_mouse_enabled; use is_mouse_click_enabled and is_mouse_move_enabled
- gui: removed frame::is_in_frame; use is_in_region instead
- gui: removed frame::register_all_events and unregister_all_events
- gui: removed event class; generic events are now only using event_data
- gui: removed get_frame_type, use get_region_type instead
- gui: edit_box::set_text_insets now takes a single bounds2f argument
- gui: frame::on_script now takes the full script name ("OnUpdate" vs "Update")
- gui: frame::on_script now takes a 'const event_data&' instead of an 'event*' argument
- gui: font_string::set_offset now takes a single vector2f argument
- gui: font_string::set_shadow_offset now takes a single vector2f argument
- gui: the GUI will now properly handle render window being resized
- gui: all UI objects are now managed with explicit single ownership (unique_ptr)
- gui: added frame_renderer class interface to clarify the frame class
- gui: only frames can now be flagged as having a frame_renderer
- gui: frame::get_children and frame::get_regions return views rather than containers
- gui: added gui::down_cast for safer down casting
- gui: removed clear_links() in favor of using destructors
- gui: added mechanism to handle most cases where a widget is destroyed in a callback
- gui: relative sizing is now only applicable to XML <Size>
- gui: split anchor into anchor (logic) + anchor_data (data)
- gui: region::set_parent() and region::set_name() are no longer public
- gui: Lua key binding functions now expect Lua functions as handlers, not strings
- gui: renamed OnEditFocusGained to OnFocusGained (now available for FocusFrame too)
- gui: renamed OnEditFocusLost to OnFocusLost (now available for FocusFrame too)
- gui: key and mouse events no longer contain string names of buttons and keys
- gui: objects inside a scroll_frame can now correctly anchor to other objects
- gui: render targets can now have texture filtering other than nearest
- gui: GUI caching is now disabled by default
- gui: improved peformance of "update borders" notifications
- gui: improved peformance of font outline rendering
- gui: improved quality and consistency of font rendering in OpenGL back-end
- gui: fixed rare crash in edit_box
- gui: fixed crash when calling Lua delete_frame() twice on same frame
- gui: fixed Lua get_width()/get_height() returning incorrect values
- gui: fixed crash when currently hovered/focussed frame is deleted
- gui: fixed virtual gui::scroll_frame not able to be inherited from
- gui: fixed frame OnSizeChanged not always triggered
- gui: fixed text coloring not working when applied to first character of a manual new line
- gui: fixed text coloring not working correctly when immediately reset with |r
- gui: fixed up/down keys for single-line edit_box just moving the cursor and not using history
- gui: fixed left/right keys not moving the carret as expected when text is selected in edit_box
- gui: fixed crash when inherited child's name is already taken
- gui: fixed incorrect handling of optional parameter in Frame:enable_mouse() lua function
- gui: fixed Frame:get_script() always returning nil
- gui: fixed edit_box stealing mouse click events from other frames
- gui: fixed edit_box carret appearing after set_text() even if the box is not focussed
- gui: fixed edit_box getting stuck when pressing Backspace to delete all partially-displayed text
- gui: fixed edit_box integer_only setting not always checking for validity of the current content
- gui: fixed edit_box numeric-only mode not accepting input correctly
- gui: fixed edit_box key repeat duplicating low-level repetitions from the OS
- gui: fixed FontString:set_font() outline flags not handled correctly
- gui: fixed scroll_frame not propagating all size updates to its scroll child
- gui: fixed is_visible() for layered_regions always returning false
- gui: fixed hovered frame not updated when hide/show is called
- gui: fixed OnEnter/OnLeave not always triggered when hide/show is called
- gui: fixed set_alpha() not doing anything
- gui: fixed focus_frame::set_auto_focus() not doing anything
- gui: fixed button text not updated when changing font objects after creation
- gui: fixed frame title region not having a .TitleRegion shortcut in Lua
- gui: fixed shortcut to frame children and regions in Lua not removed if child/region removed
- gui: fixed frame::get_num_children and get_num_regions not accurate
- gui: fixed Frame:on_* Lua handlers not set to nil if handler removed in C++
- gui: fixed frame not marked as "user placed" when moved or resized
- gui: fixed missing 'const' for slider::are_clicks_outside_thumb_allowed()
- gui: fixed missing 'const' for region::render()
- gui: fixed status_bar not firing OnValueChanged
v1.2.0:
- added support for MSVC 2010
- gui: added the quad2<T> type
- gui::layer: added missing default constructor
- gui::text, gui::font_string, gui::edit_box: cleaned some UTF8 to unicode conversions
- gui::manager: fixed bug when parsing empty lines in toc files
- xml::document: fixed bug with multiline comments
- various fixes detected by MSVC
v1.1.6:
- colors can now be given with the standard '#RRGGBB[AA]' format (both in C++ and XML/Lua)
- gui::color: added hue/luminosity/saturation operations and istream >> operator
v1.1.5:
- gui::texture: added texture filtering mode (none or linear)
v1.1.4:
- gui: uiobject types should now have a CLASS_NAME static member containing the class name
- gui::frame: create_child() and create_region() can now have a template argument to cast their return value
- gui::manager: create_frame() can now have a template argument to cast its return value
- gui::manager: added new versions of register_frame_type() and register_region_type()
- note: the older versions of the above two are deprecated (will be removed in the future)
- replaced remaining "can't", "couldn't", "doesn't" in error messages
- test: now also displaying the C++ created frames by default (check of the recent template stuff)
v1.1.3:
- gui::event::get() now has a template version, shortcut to the underlying lua::var
- lua: improved performances of lua::var
v1.1.2:
- replaced "can't" by "cannot" in error messages
v1.1.1:
- gui::frame: get_child() and get_region() can now have a template argument to cast their return value
- gui::frame: the above two functions can now find objects with their relative names
- gui::uiobject: added set_abs_dimensions() and set_rel_dimensions()
v1.1.0:
- added Findlxgui.cmake helper to locate the library with CMake
- changed the version number of the library to 1.1 in the CMake scripts (for future release)
- added the lxgui.hpp file (contains the version number of the library)
v1.0.32:
- added CMake build scripts
v1.0.31:
- fixed 64bit build
- input: fixed GLFW Linux implementation
- gui::slider: fixed uninitialized variable
v1.0.29:
- gui::frame: can now use std::function as script handler
- gui::backdrop: can now change vertex color
- gui::uiobject: the last two arguments of set_abs_point() and set_rel_point() are now optional (default: 0)
v1.0.28:
- input: SFML and GLFW implementations now provide mouse delta information
v1.0.27:
- gui::manager: fixed const-correctness of render_ui()
v1.0.26:
- updating parts of the code to use C++11
v1.0.25:
- input: renamed the GLFW implementation from input_glfw to input_glfw2 (anticipating the release of GLFW3)
v1.0.24:
- input: added a new implementation for GLFW (not fully functional: no keyboard layout independence input and no mouse grab)
v1.0.23:
- input: fixed Windows code of the SFML input handler
v1.0.22:
- input: implemented mouse wheel for the SFML handler
- input: renamed input::sfml_handler::on_text_entered() to a more generic on_sfml_event()
- gui::edit_box: fixed focus not always being removed when hiding an edit_box
- gui::manager: removed a remaining reference to gui::locale
v1.0.21:
- input: fixed outputting the 'A' key press when an unkown key is pressed for the SFML handler (fix from SFML)
v1.0.20:
- input: improved the output of get_key_name() for the SFML handler (names will still always be in english though)
- gui test: removed virtual build targets from the code::blocks project file
v1.0.19: (warning: API breaking update)
- input: removed the locale class (now useless, see below)
- input: added a way to get system interpreted keyboard characters
- input: get_key_name() is now implementation dependent
- input: to be fully functional, the SFML handler now needs to be notified of window events (see the test application)
- input: mouse grab is not a feature required for all input handlers (added implementation for OIS handler)
- gui: fixed class names in lua::functions not being capitalized
- gui: added missing "reverse" flag to StatusBar
- gui::edit_box: updated to use the new key localization system
- gui::manager: fixed saved variables directory not being created
- gui::manager: now using lower case folders by default
- lua: improved exception message when casting a lua::var to a wrong type
- utils: fixed make_directory() when some directories already extist
v1.0.18:
- using std::ifstream and std::ofstream instead of std::fstream all the time
- input: updated the SFML handler to the lastest SFML 2.0 snapshot
- gui::manager: fixed bug with windows line endings when reading addons.txt
v1.0.17:
- input: implemented mouse grab in SFML handler (toggle_mouse_grab())
- input: added a get_impl() method to input::handler
v1.0.16:
- input: fixed some input data not being properly updated when using manually updated input::handlers
- input: fixed focus not being properly removed when calling set_focus(false)
- gui::focus_frame: fixed set_focus(false) removing any focus even if the frame wasn't focused in the first place
- gui::manager: fixed request_focus() doing useless work if the requested focus is already focused
v1.0.15:
- input: fixed SFML handler not giving mouse position relative to the window, but to the desktop
- input: fixed wrong logic in input::manager::force_input_allowed()
- gui::frame: using std::set instead of std::map (redundant information)
- gui::edit_box: added missing "positive" and "integer" parameters to the UI XML definition file
- gui::anchor: removed useless warning when an anchor has no parent
- lua: added lua::state::push_userdata() and lua::state::get_userdata()
- lua: fixed const correctness of lua::var::operator!=()
- utils: addded utils::make_directory()
v1.0.14:
- input: added screen relative mouse movement
- utils: added uchar typedef
- utils: ustring (unicode string) is now using char32_t instead of unsiged int interally
- gui test: added an accentuated character to check that unicode characters are properly displayed
v1.0.13:
- improved doxygen documentation for disk usage (not using directories)
v1.0.12:
- made lua::state, lua::function and lua::argument explictely non copiable classes
v1.0.11:
- fixed new render strata not being rendered when caching is enabled
v1.0.10:
- fixed frame_strata::HIGH being misspelled as frame_strata::HPPIGH (careless find & replace)
- removed old and unused code in gui::backdrop
v1.0.9:
- fixed input::manager::mouse_last_dragged() not working
v1.0.8:
- fixed code::blocks project files
v1.0.7:
- fixed bug introduced in last version (uninitialized variable)
v1.0.6:
- fixed badly formatted error message in xml library
v1.0.5:
- fixed missing documentation for input::handler and input::handler_impl
- added a "manually updated" flag to input::handler, so that is can be shared by several input::managers (hence several gui::managers)
v1.0.4:
- changed the project's directory structure
- fixed missing constructor and destructor for gui::strata
v1.0.3:
- changed licence from GPL to LGPL
v1.0.0:
- first version