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