-
Notifications
You must be signed in to change notification settings - Fork 27
Expand file tree
/
Copy pathChangeLog
More file actions
309 lines (285 loc) · 14.1 KB
/
ChangeLog
File metadata and controls
309 lines (285 loc) · 14.1 KB
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
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
## [1.12.1] - 2025-11-18
### Changed
- Bump cxxopts to 3.x to fix compilation issues.
### Fixed
- Fix compilation issues with GCC 15.
## [1.12] - 2025-11-12
### Added
- Switch to libplanes 2.x with support for the DRM Atomic API, which can
improve performance when multiple planes are updated simultaneously.
- Introduce an is_cached parameter accross several Image constructors/methods
(default: false) to reduce memory usage.
- New CMake option WITH_LIBM2D to enable/disable libm2d support.
- Add Screen::flush(); the event loop now calls this after draw(). This is
especially useful for the DRM/KMS backend to collect all the updates from draw(),
and push them to the display in flush().
### Changed
- ImageCache can now load images at the target scale factors directly, avoiding
storage of both unscaled and scaled versions.
### Removed
- Drop the autotools support in favor of CMake.
- Remove pre-blending pass code for GPU paths now handled by libm2d 2.1.0.
### Fixed
- Miscellaneous issues affecting 2D acceleration.
## [1.11] - 2025-05-07
### Added
- The new Surface class has been introduced to abstract 'cairo_surface_t'.
- The GPUSurface and GPUPainter classes have been created to abstract hardware
GPUs, frame buffers (screen surfaces) and textures (image surfaces) so GPUs
could handle some rendering operations.
- The new Painter::sources() methods have been added to set the source pattern.
- New Painter::draw() overloads have been added to draw images more efficiently.
- The Painter::{low,height}_fidelity() methods have been added; The existing
Screen::{low,height}_fidelity() methods now call the new Painter methods.
- The Application::gpu_enabled() and Application::enable_gpu() methods have been
added to test whether the GPU is enabled at the EGT application level or to
enable/disable it dynamically.
- The EGT_GPU_DISABLED environment variable is now tested when some EGT
application starts to disable the GPU if requested (by default, the GPU, if any,
is enabled).
- Introduce the SoundEffect class to asynchronously play sound in a fast and
lightweight way compare to the AudioPlayer. For more details, check the audio
page of the EGT documentation and the API documentation.
- The new ListBoxMulti widget provides support for multi-selection.
- The new Picture widget is a helper widget. To display an image, Picture can
be used as a replacement of ImageLabel, it avoids to take care of not showing
the label.
### Changed
- Image::surface() now returns a const reference rather than a copy.
- Widget::paint_to_file() is no longer virtual, hence no longer overridden.
- When libm2d is available, first try to allocate surface memory for images
with libm2d then fall back to malloc'ed memory; also make libm2d import
libplanes screen frame buffers; indeed, unlike user space allocated memory,
kernel DRM GEM objects created by both libplanes and libm2d can be passed down
to the hardware GPU, if any, to fasten the rendering and to offload the CPU.
- If libm2d and a GPU are both available, perform rendering operations with the
hardware GPU rather than the CPU (with cairo) whenever possible.
- Sliders have been reworked when images are provided to draw the widget
background and its handle; these changes allow to reproduce the design of the
SliderB class (from egt-sample-contribution) but drawing the slider components
with images rather than relying on cairo to draw curves.
### Removed
- The deprecated support of the GFX2D GPU through a patched cairo has been
removed since it has been superseded by a new implementation based on the new
libm2d library and the new GPUPainter and GPUSurface classes.
- Any reference to the cairo library has been removed from libegt public API:
header files under include/egt/ and 'Requires' in libegt.pc: opaque classes are
now used to hide the actual internal implementation; these classes wrap the
different cairo types like 'cairo_t', 'cairo_surface_t', 'cairo_pattern_t',
'cairo_scaled_font_t', 'cairo_font_extent' and 'cairo_text_extent'.
- The Canvas class has been removed because it was nothing more than a helper
class to bundle a 'cairo_t*' with a 'cairo_surface_t*', but now this can easily
be replaced with just a Painter created from a Surface.
- The detail::alpha_collision() function has been removed as it was not used at
all.
- The Sprite::surface() method has been removed as it was not used at all.
- The detail::read_resource_stream() function has been removed as it was not
used at all.
- The Image::crop() float variant method has been removed as it doesn't make
much sense as it deals with pixels.
- The Image::copy() method has been removed as it is no longer used internally
and also because the Image class provides a copy constructor and a copy
assignment operator, hence Image instances can still be copied anyway.
- The Image::pattern() method has been removed as it is no longer used since
the Painter implementation changed when setting an Image instance as source.
- Remove the experimental::Sound class that is replaced with the SoundEffect
class.
### Fixed
- The project configuration with either autotools or cmake has been fixed so the
compilation works again when SIMD is enabled.
## [1.10] - 2024-10-16
### Added
- The GstDecoderImpl class now supports custom GStreamer pipeline descriptions.
A new parameter has been introduced in the video example to allow for a custom
pipeline. For further information, please refer to the newly added GStreamer
page in the documentaion.
### Changed
- Multimedia support has been restructured. This change is internal and should
not affect multimedia widgets. The update eliminates code duplication by
consolidating all GStreamer-related code within the GstDecoderImpl class.
## [1.9] - 2024-05-03
### Added
- CMake: add support for the CMake build system in addition to the autotools
one.
- ImageGroup: new utility class to handled images tied to a palette group id.
- MouseGesture: the distance to travel to enable the drag mode is
configurable.
- PointType: add unary 'operator-'.
- resolve_path: add support for the svg icons.
- ScrolledView: handle keyboard events.
- Slider: an image can be used for the handle.
- Switch: new class to factorize code from Checkbox and RadioBox. It provides
support for an image that depends on the checked flag.
- ValueRangeWidget: add support for steps to manage the difference between two
consecutive values of the range.
- Widget: all widgets can set an image background per palette group.
### Changed
- Application: change input backend logic. libinput was always enabled. Now,
libinput is used only if it is requested with the help of the
EGT_INPUT_DEVICES environment variable or if there is no valid input backend
configured.
- Button: reduce the minimal size hint for multiline text buttons.
- Checkbox: performance improvement.
- Check|RadioBox: if the widget's text is not empty, then the minimum size
hint is computed from the text height.
- ListBox: add the horizontal orientation.
- MouseGesture: continue to emit the hold event when dragging starts. When
holding ends, don't send a pointer_click event.
- ScrolledView: rework to improve its behavior.
- ScrolledView: no longer damage the whole box if not needed.
- ScrolledView: pass mouse events only to the first child that intersects.
- Slider: damage only the handle, line and label rects when the value is
updated.
- ValueRangeWidget: allow m_start and m_end to be equal.
- Widget: send drag events only to the widgets which accepted the drag start.
Before, it was sent unconditionally.
- Widget: stop handling drag events when they leave the dragged widget box.
- Widget:
- Rework the layout of several examples.
### Fixed
- CheckButton: the handle() method is now public, and is exported to the API.
- Input: fix evedev support.
- Input: fix tslib support.
- Pattern: fix the == operator.
- Slider: don't shrink the size of the label based on the size of the handle.
- ScrolledView: fix non-zero moat handling.
- ScrolledView: fix the drawing of boarders.
- ScrolledView: handle other fill flags than solid.
- ScrolledView: draw sliders within the widget borders.
- Theme: fix draw_box() to display the plane windows at the right position.
## [1.8] - 2023-12-08
### Added
- The audioplayer example displays an error message when there is no sound
card instead of crashing.
- ProgressBar: add a style property to choose the direction: left to right,
right to left, bottom to top, or top to bottom.
- Sound: add media, stop, and enumerate_pcm_devices methods to the API
### Fixed
- GStreamer: fix memory leaks related to GStreamer usage.
- PlaneWindow: the show method bypasses the EventLoop to display the overlay.
It prevents glitches when switching from one window to another.
- ProgressBar: the show_percentage property is now serialized/deserialized.
- TextBox: fix a crash happening with sliders when there was no size defined
for the textbox.
- TextBox: fix position computation with UTF-8 characters.
## [1.7] - 2023-05-12
### Added
- Use C++17 std::filesystem API.
- GstDecoderImpl: can output the pipeline graph if GST_DEBUG_DUMP_DOT_DIR is
set.
- Multiline support for Button and Label.
- TextBox: add selection support.
- TextBox: add UP, DOWN, HOME, and END keys support.
- TopWindow title can be set when using X11 or SDL2 backends.
### Changed
- Discard libmagic for SVG file detection.
- Serialization improvements.
- Inheritance: widgets that are not aimed to offer public API to add or remove
child widgets can inherit from Widget instead of Frame.
- Operating System: Windows support improved.
- TextBox: horizontal and vertical scrollbars are optionals.
### Fixed
- CameraImpl: fix camera detection.
- ComboBox: fix sizing issues, scrollbar no longer displayed if not needed.
- StaticGrid: fix serialization of children.
- TextBox: fix multiline layout bugs, there are still issues with right alignment.
- Video player: fix GStreamer issues on desktop distributions.
## [1.6] - 2022-12-02
### Added
- Widget/Frame: new zorder setter to be able to set a specific rank instead of
using top, bottom, up and down.
### Changed
- Move from C++14 to C++17.
- AlignFlag: transform the AlignFlag enum into a main AlignFlag class plus
few subclasses and define opertor| for all valid combination of those classes
in order to discard invalid AlignFlag combinations at compilation time.
- WindowHint, Justification, Orientation: change enums values from flags to
regular enum values.
- ImageHolder: de-templatize the ImageHolder class.
- Horizontal/Vertical/FlexBoxSizer: dedicated name instead of BoxSizer.
### Fixed
- Pattern: add Pattern::operator== and Pattern::operator!= to fix a crash in
'void Widget::Color(Paletter::ColorId, const Pattern&, Palette::GroupId)' when
changing a Pattern that already exists in the widget's palette.
- Label: add missing move constructor annd move assignment operator.
- ImageHolder: fix the copy and move constructors.
- ImageButton, ImageLabel: fix their move constructor and add their default move
assignement operator.
- ComboBox, Dialog, ImageButton, LevelMeter, NotebookTab, ProgressBar,
ScrollWheel, Slider, SpinProgress, TextBox: fix deserialization issues of
inherited properties.
## [1.5] - 2022-11-09
### Added
- Support for Windows build.
- Documentation for the Microchip Graphics Composer.
### Changed
- TextBox: handle_key method is now virtual.
- ImageButton/Label: the text method has no longer side effects on the visible
property.
### Fixed
- BoxSizer: layout is now recomputed when a BoxSizer is resized.
- Image: fix alignment issue when align flags are empty.
- Serialization: several fixes.
## [1.4] - 2022-07-12
### Added
- Application: allow non-zero exit values.
- ComposerScreen: introduce a new backend for the Microchip Graphics Composer.
- Global Palette/Font: setters and getters added, reset function added as well.
- ProgressBar: can display a percentage of the progression instead of the basic
value.
- SliderType: introduce the inverted flag to change slider direction of
progression.
### Changed
- To get detailed API changes, check the 'API Changes' page in the documentation.
- ImageButton/Label: show_label is automatically set to false if text string is
empty, otherwise it is set to true.
- Serialization/de-serialization: improvements for the composer
- Widget: removal of local theme support. There is only a global theme.
### Fixed
- CircleWidget: radius now updated on resize.
- Git commit id with a newer version of git was set to n/a.
fix clear()
- Sound: the same file can be played several times when using ifstream instead of
libsndfile.
## [1.3.2] - 2022-05-10
### Changed
- Gstcameraimpl: default device node is /dev/video0.
## [1.3.1] - 2022-05-03
### Fixed
- TextBox: text display issue when moved/resized non left-aligned texts rendering,
## [1.3] - 2021-12-10
### Added
- TextBox: performance optimization for text rendering.
- i18n example uses gettext and provides a new window with runtime translation.
- AnimationSequence: addition of removeLast and removeAt methods. Now,
AnimationSequence allows to use several times the same sub animation.
### Changed
- Default widget and font size based on the screen size instead of an arbitrary
value.
### Fixed
- Git commit id was incorrect when EGT was built from Buildroot.
## [1.2] - 2020-06-28
### Added
- ImageLabel/ImageButton: add an option to keep the image ratio when the image
is auto-scaled.
- Serialization/de-serialization: continue to improve the support but still
experimental.
- The git commit id and the state of the tree used to build the library can be
displayed:
EGT_DEBUG=1 examples/basic/basic
633509063 [info] EGT Git Version b1fabd9d-dirty
### Changed
- ValueRangeWidget: change min and max value management. Switch to start and
end which removes the constraint start < end.
### Fixed
- Size of overlay plane windows is now updated when scaling happens.
- Crashes with low-resolution screen.
- Mpeg4 video decoding.
- Font: check if the font requested is installed.
- ComboBox: wrong rendering in some conditions.
- ImageLabel/ImageButton: auto scale.
- ScrolledView: event dispatching and background drawing.
- Chart: display of the axis labels.