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