Revision history for Perl module Prima 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" 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") 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