forked from dk/Prima
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Changes
464 lines (390 loc) · 16.5 KB
/
Changes
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
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
Revision history for Perl module Prima
1.72 2024-01-31
- Major rehaul of ROP constants with API compatibility break:
-- rop(R), put_image(X,Y,I) will not use rop R but rop::Default instead
-- rop::Blend and rop::CopyPut are no longer equal. rop::XorPut and rop::Xor
are no longer equal; the latter is rop::XorOver now.
- Image.text_out() works outside the paint mode by querying glyph bitmaps.
Other text- and font- related method work too.
- Pod parsing and rendering moved to Prima::Drawable::Pod
-- added utils/pod2pdf that works without needing a X11 server
- Font.underlinePosition and Font.underlineThickness are added
- Image.has_codec added
- Prima::Image::Loader and per-frame image loading and saving is added
- Utils.sound is removed
1.71 2023-10-29
- Add Prima::Image::webp filter dialog
- Add DeviceBitmap.maskPixel
- Add menus to file dialogs
- Remove obsolete RadioGroup and CheckBoxGroup - use GroupBox instead
- Proofread all documentation through Grammarly
- Add progressive image loading and saving
- Deprecate Prima::Utils::sound
1.70 2023-09-03
- Use fading effects in widgets
- Solidify emulated 2D transformations with images
-- Add aperture point for Image.matrix_transform
- Animation is using core image processing instead of DeviceBitmap
- Path rendering is optimized for widened arcs and splines
- Add Widget.is_surface_buffered to check if .buffered(1) was respected
- Edit.find() changed the coordinate system used, from visual to physical
- Core Icon.put_image(Icon) will affect the destinations 1-bit mask
- Image.premultiply_alpha(constant) will work on palettes when bpp <= 8
- Add Image.to_colormask
- Add --no-xrender-matrix command line switch for x11 builds
1.69 2023-05-30
- Fully rewrite win32 socket engine, now is single-threaded
- Drawable.matrix returns Prima::Matrix objects
- Speedup x11 matrix image rendering with XRender
- Use XRender on mac/XQuartz
- Add a 3D demo
- Introduce new Widget.skin
- Flat skin is default now (use Prima::Application skin => 'classic' to revert)
- Add a mechanism to allow secondary roles to override core methods.
- Move scrolling and border width properties to a secondary role Widget::GroupScroller
- Add Component.deepChildLookup to address grand-children by their name same as the direct children
1.68 2023-02-25
- Process signals inside event loop
- Add sys::GUIException, onDie, and a standard dialog for user interactions on exceptions
- Widget.onMouseClick.dblclick::bool is .nth::int now, can report triple, quadruple etc clicks
- Support fillPattern with tiles in the emulated antialiasing
- Add Date and Time widgets (and their example/clock.pl)
- Remove native Win32 support from cygwin builds
- File.onRead supports native Win32 console stdin event
- Support XIM input
- Win32: fix local non-latin months/days of week names in Calendar
- Win32: fix IME input
- Add Prima::sys::AnyEvent - same as AnyEvent::Impl::Prima bridge but now in the core
1.67 2022-11-27
- Links and tooltips extended functionality:
-- Added interactive links in Label
-- Markup recognizes hyperlinks now with new "L<URL|text>" syntax
-- Generic link opening is handled by new module Prima::Widget::Link
-- Pod-embedded base64-encoded images are supported in podview and tooltips
- Some modules were split and moved to Prima::Widget:: namespace
- Compilation update for the latest MSVC
- use Prima qw(MsgBox and the like) re-exports symbols to the caller level:
message() will do now instead of Prima::MsgBox::message()
- Added conversion helpers:
-- Prima::Image.to_rgba()
-- cl::to_gray_byte(), cl::to_gray_rgb(), cl::from_gray_byte()
- ColorDialog and ColorComboBox support grayscale mode
- Image.rotate() has new fill parameter
- Major rewrite of plotting primitives by Drawable:
-- lineEnd,linePattern,lineWidth,miterLimit,lineJoin are served by
Prima::Drawable::Path now if lineWidth > 0
-- Note: antialiased lines with width = 0 are invisible now!
-- Prima::Drawable::Path is heavily optimized
-- Drawable.matrix() is supported for all plotting primitives
-- Drawable.translate() is a syntax sugar for matrix operations
-- Drawable line ends are customizable now (see Drawable.pod, "Custom line end styles" )
-- Regions defined by polylines and images are internally plotted
- Drawable.render_pattern emulates fill patterns distorted via matrix transformations
- X11:
-- better support of window icons
-- better support of multiple monitors
1.66 2022-08-20
- Add HEIF image support
- rop2(rop::NoOper) on fillPattern is now fully supported, but breaks the old code.
Prepend rop2(rop::CopyPut) to fix.
- fillPattern(Image/Icon) can be used for tile and stipple fills
- rop::Blend replaces rop::SrcOver as a default ROP for OS surfaces.
Breaks the old code.
- Migrate to github actions
- GTK3 (vs GTK2) is default
- Support base64-encoded image files
- Implement push/pop operations on the graphic context
- ColorDialog looks better
- Prima::IntUtils is deprecated
1.65 2022-04-21
- Fix broken 1.64 distro
- Fix libgif4 compilation
1.64 2022-04-09
- Use libthai for Drawable.text_wrap
- PS/PDF font metric calculations simplified and fixed
- POD printing quality improved
- Support Drawable.alpha in the PDF backend
1.63 2021-09-10
- Fixes for macOS Catalina
- Drawable changes:
-- .alpha renamed to .bar_alpha
-- .alpha and .antialias properties added
(used GDI+/win32 and XRender/x11 for the implementation)
-- .lineWidth changed to floating point
-- the primitives accept floating point coordinates in
the antialiasing mode
- Path can produce subpixel quality polygons
- Image respects .antialias by using Prima::Drawable::Antialias
- Spinner uses .anitalias (smooth, but slower)
- TabbedNotebook UI scaling looks better
- FontMapper respects font styling now (before only regular fonts could be substituted)
1.62 2021-06-16
- Add opendir/closedir/*dir for unicode operations
- Add Prima::Drawable::Antialias for drawing aliased graphic primitives
- Interactive selection change in Edit and PodView does not flicker now
- Drawable::text_wrap can operate on text together with glyph objects,
allowing for proper wrapping of shaped text
- Added ist::OR and ist::AND image stretch types
- Implemented arabic kashida and interspace justifications for glyphs
- Markup is a first class citizen with $w->text(\"B<bold>") syntax
(note: Q was renamed to G and will be used for quoting instead).
- Minor UI facelift - sliders, buttons, inputline, podview, etc
- Added Prima::Drawable::Metafile
- Recognize mouse buttons 4 and 5 on win32
- win32: support unicode supplementary planes
1.61 2021-04-21
- DWM API Removed (not useful on Windows 10)
- Support regions and paths for the PS backend
- Prima::XXXDialog classes finally moved to Prima::XXX::Dialog
- Support unicode-aware filesystem functions
-- Prima::Utils extended and Prima::sys::FS added
-- Do not use libX11.XReadBitmapFileData as it is not unicode-aware
- Add Application.stop to break from a running event loop
1.60 2020-10-31
- Added ProgressBar with 3d look
- Added PDF generation
-- PrintDialog has extra "Save As PDF" target now
- Clipboard enhancements
-- cmClipboard added for X11 to select type of data to be pasted
-- Image codecs return MIME as part of codec data
-- Special formats Text and Image are documented
-- Added Clipboard.[text/image/copy] KEEP parameter
- Image.put_image supports new rop::ConstantColor
- Optimizations for cache misses in Drawable.text_wrap
- Fixes for unicode handling in FileDialog and Utils::get_dir
- Fixes for XRandr extension
- Fixes for scrolling with synthetic transparency in win32
1.59 2020-05-27
- Added support for unicode bidirectional algorithm and text shaping:
-- All standard widgets are moved to new shaped text implementation:
formerly char-based position properties, such as firstChar and selection,
are now cluster-based.
-- Unicode bidirectional algorithms uses fribidi on all platforms
-- Text shaping uses harfbuzz on unix
-- Text::Bidi is no loger used
-- Text input direction is deduced from new Application.language
- Switch PostScript backend to generate embedded Type1 fonts only
-- Remove bitmap font generation and remove support for native PS fonts
-- Remove support for encodings, leave only Unicode
- Move Prima::*Dialog.pm files into Prima::Dialog::* namespace.
-- The old packages will be alive for a while, but will print a deprecation message
1.58 2020-03-15
- Added drag and drop support. Dragging from/to edit widgets works.
- Added more mouse pointers (drag pointers, crosshair, hand, question, up arrow)
- Menus:
-- added icons, radio groups, customly drawn items
-- extended API (get_item, is_custom, is_submenu, is_separator, execute)
-- .data renamed to .options and is used for new features
-- added Prima::Menus, a full emulation of system menu
-- menu objects can be shared between widgets
- font.vector is now a writeable property and a selector
- Prima::Edit.syntaxHilite work in word-wrapping mode
- Image:
-- rotation works to arbitrary angle
-- added generic 2D transform (.transform)
1.57 2019-11-17
- Add photoshop image operators (rop::Add, rop::Multiply, rop::SoftLight etc)
- Support animated PNG files
- Add Image.flood_fill
1.56 2019-08-19
- Rename and expand Drawable.fillWinding to .fillMode
- Add Drawable.render_glyph and glyph outline functions
- Add Drawable.miterLimit
- Drawable.render_spline produces 8-connected shapes instead of 4-connected
- Image can stroke and fill shapes outside begin_paint now
- Image drawing outside begin_paint supports regions,translations,patterns,and rop2
- Regions can keep a non-OS-specific data copy, when needed by Image drawing
- Region.new(box) supports polybox structure from .get_boxes()
- Add sv::FixedPointerSize do deal with pointer size limits
- Better support for touchpad scrolling
1.55 2019-03-25
- Add WebP images support
1.54 2019-02-09
- Support screen grabbing on Mac and Gnome/Wayland
1.53 2018-10-10
- Image downsampling made consistent; added ict::Posterization;
- Added images to documentations
- Support gtk3 (but prefer gtk2)
1.52 2017-06-28
- Better support for multi-threading
- Better support of MacOS/XQuartz
- Aesthetic fixes for scrollbars, spin edits, and sliders
- Fixes for paths; path demo with PS interpreter
- Add Widget.clipChildren, Drawable.fillPatternOffset, Timer.toggle
- Coredump fix for Data::Dumper::GUI usage pattern
- Support colored cursors on X11
1.51 2017-03-28
- Add graphic paths support
- Add spinner widgets by Maximilian Lika
- Use Region objects for shape and clipping
1.50 2017-01-03
- Renamed utils after debian standard
- Support high-dpi monitors and uiScaling, also with smooth bitmap scaling
- Image.data/Icon.mask made faster by returning a read-only scalar
- Support multiple monitors for win32
- Adapt event loop for AnyEvent integration ( add onIdle and yield(1) )
1.49 2016-09-27
- Fixes for new development bugs in 1.48
1.48 2016-08-21
- Support dynamic font loading
- Added support for invividual horizontal font glyph metrics
- Added afm2prima script to convert .afm PostScript font headers to Prima format
- Add Markup (rich text) widget support, originally implemented by Teo Sankaro
- Add KeySelector integration with menu shortcuts
- Add alpha layering and blending with native win32 and XRender support:
-- New Drawable call .alpha()
-- New Icon.maskType property containing either im::bpp1 or im::bpp8; the latter represents ARGB image
-- Widgets and Windows can request per-pixel alpha transparency with new .layered property
-- DeviceBitmap.monochrome property changed to .type(Bitmap/Pixmap/Layered)
-- put_image and stretch_image support new rops rop::SrcCopy and rop::SrcOver with ARGB images and surfaces
-- put_image and stretch_image support new rop::AlphaCopy with grayscale images to address alpha channel only
-- Image bit operations support 12 Porter-Duff rops and alpha pre-multiplication on ARGB images
and RGB images with constant alpha value
-- PNG codec supports ARGB icons
1.47 2016-06-03
- Add OpenMP support for image scaling and conversion
- Add custom image scaling algorithms
- Support JPEG mirror/rotation tags
- Implement image loading progress display for directions other than top-down (for jpeg and bmp)
1.46 2016-03-16
- Use pkg_config, when available
- Require perl version 5.10
- Add prelighting and gradients to widgets
1.45 2015-11-05
- Add Image .clone,.bar,.mirror,.rotate
- Support bidirectional texts with Text::Bidi
1.44 2015-08-04
- Rewrite rubberband
- Work on portable perls
- Better support of graphic libs where several versions are available
1.43 2015-04-10
- Rewrite font test and polish rough ends in xft font handling
- Copy images to clipboard so that GTK recognizes them
1.42 2015-03-11
- Tests became TAP compliant and using Prima::Test
- Jpeg exif orientation support added
- Scrollbar overriding properties added for scroller widgets
1.41 2014-11-08
- Add ImageViewer.autoZoom
- Fixes to Notebook
1.40 2014-08-17
- Remove Win9X support
- Cygwin default build is for X11
- Compile with giflib 5.1
- Add Drawable::Subcanvas
- Add ImageViewer.stretch
- PS font and eps fixes
- win32.gp cliprect fix
1.39 2014-05-22
- Prepare for perl 5.20
1.38 2014-04-01
- X11: add multimonitor support
- special char @ means auto-toggle in menu items
- AnyEvent example
1.37 2013-08-21
- Support libgif5.
- Podview fixes.
1.36 2012-10-10
- Remove OS/2 support.
- Add binary compatibility checks.
1.35 2012-07-24
- Fixes in unicode, files, documentation, installed POD paths.
1.34 2012-05-27
- Unicode fixes, ready for 5.16
1.33 2012-02-10
- Image codecs: remove prigraph, add XBM, and enhance TIFF support
- Add RubberBand.pm
1.32 2011-10-19
- Major rehaul of Makefile.PL, migrated to ExtUtils::MakeMaker.
- Support image/mime clipboard formats under GTK.
1.31 2011-07-25
- Compile on 5.14 and libpng15.
- Enhance unicode input on win32.
- Better libiconv support.
1.30 2011-05-08
- Compile on 5.13.
- Compile on 64-bit ActiveState and strawberry builds.
- Support Prima::codecs::win64.
1.29 2011-01-12
- Support for 16-bit BMP files.
- Fixes for modern Xorg, macos, and strawberry.
- Optionally support truncated image files.
1.28 2009-02-24
- Fixes in documentation, Sliders, and key event handling.
1.27 2008-10-29
- Support JPEG comments and metadata.
- Save multiframe images.
1.26 2008-04-28
- Abandond prigraph, adopt libjpeg/libpng/etc cohort instead.
- Develop gif animation features.
1.25 2008-04-11
- No new features.
1.24 2007-12-21
- Better support for mingw and cygwin.
- New features in VB.
1.23 2007-09-21
- Images can load and save to streams.
- Image loading process can be watched.
1.22 2007-08-06
- Use GTK file dialogs if compiled with GTK2.
- Better use of mouse wheel for Calendar, ColorDialog, ComboBox, Notebooks,
Scrollbar, and Sliders widgets.
1.21 2006-11-17
- No new features
1.20 2006-01-16
- Add Printer::options
1.19 2005-10-17
- Add Lists::vertical.
- Implement scrollable groups and notebooks.
- Make file and font dialogs resizeable.
1.18 2005-04-20
- Extend function of listboxes and outlines.
- Change syntax of Drawable:: text methods.
1.17 2005-01-27
- Add Window::onTop.
- Add =SYNOPSIS sections in selected modules.
1.16 2004-10-03
- Add Clipboard::UTF8 exchange format.
- Add Drawable ::lineJoin and ::fillWinding.
1.15 2004-05-05
- Add message hooks.
- Add DirectoryOutline widget.
- Add tying properties.
1.14 2004-02-12
- Add system-specific file dialogs.
- Add Edit::undo.
1.13 2003-11-21
- Add themes support.
- Add command-line arguments interface.
1.12 2003-09-05
- Incorporate Tk geometry managers packer and placer
1.11 2003-07-15
- Add support for antialiased fonts under X11.
- Port to cygwin.
1.10 2003-04-24
- Add libtiff support.
- Add grid widgets.
1.09 2003-02-07
- No new features
1.08 2002-11-21
- Add limited utf8/unicode support.
- Enhance image conversion functionality.
1.07 2002-09-25
- Documentation completed.
- Add man pages installation.
1.06 2002-06-26
- Add libXpm support.
1.05 Unknown
- Implement help subsystem.
- Add text viewing modules.
1.04 2002-02-21
- Add core documentation.
- Add font encoding handling.
1.03 Unknown
- Added to FreeBSD ports collection
1.02 2001-07-27
- Add libpng support, make Prima working on sgi, sparc and alpha
1.01 2001-06-14
- Make Prima compileable on 64-bit platforms
1.00 2001-05-16
- CPAN epoch started