Revision history for Perl module Prima
1.72 202X-XX-XX
-
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
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