MindFusion.WPF Pack 2023.R2

Released: Dec 21, 2023

Updates in 2023.R2

Features

New in MindFusion.Diagramming

  • Model / view separation - Diagram is now considered a model class and must be displayed inside a DiagramView control.
  • UI virtualization - DiagramView and ContainerNode now add UI elements to the WPF visual tree only for diagram items that are currently visible in their respective viewports. This should improve diagram's rendering / refresh speed.
  • Spatial index - You can now set the Diagram 'EnableSpatialIndex' property to create an index of item positions for faster hit-testing and viewport clipping queries. When combined with UI virtualization, this should greatly improve user interaction and rendering speed for diagrams containing tens of thousands or more items.
  • Multi-touch support - DiagramView now handles WPF touch messages and implements multitouch gestures that can be controlled via following properties:
    • If MultiTouchZoom property is enabled (default), the view can be zoomed or panned using two-touch pinch / flick gestures.
    • If MultiTouchModify property is enabled (default), diagram nodes can be moved, scaled and rotated using two-touch pinch / flick gestures.
    • If MultiTouchZoom property is disabled, each touch draws diagram items corresponding to current behavior.
    • If MultiTouchModify property is disabled, each touch started from a node draws a diagram link.
    • Latter modes can be used for collaborative whiteboarding / classroom scenarios.
    • Setting MultiTouchDraw to false lets you prevent drawing multiple items simultaneously, while keeping other multitouch gestures enabled.
    • If MultiTouchDraw is enabled (default), a second touch will still cancel first-touch drawing if added within TouchGestureInterval time and TouchGestureDistance distance, and start a multi-touch gesture.
    • Additional Diagram.TouchHitDistance property makes it easier to grab adjustment handles on touch screens, without increasing the AdjustmentHandlesSize value.
  • Async serialization - Files can now be saved and loaded asynchronously.
  • Miscellaneous
    • PageMoved and PageRenaming events have been added to TabbedDiagramView.
    • Different arrowhead shapes can now be filled with distinct brushes as set through HeadBrush, BaseBrush and IntermediateBrush.
    • Added DiagramDocument JSON serialization methods.
    • You can now selectively prevent adding or removing child nodes to/from a container by handling the ContainerChildAdding and ContainerChildRemoving events.
    • FoldIconSize property has been added to ContainerNode.
    • Added Clone methods of Diagram and DiagramDocument which return a copy of the diagram / document and its items.
    • You can now set GridPatternHatch and GridPatternThreshold to replace alignment grid with hatch pattern at low zoom levels for faster drawing.
    • Improved precision of baseline alignment in exported SVG texts.
    • SvgNode parser now supports multiple class names in the "class" attribute of SVG elements.
    • RemoveLabel now automatically repaints the node.
    • OriginAnchor and DestinationAnchor setters now realign segments of cascading links.
    • SnapMarksToPixels and MarkLength properties added to Ruler control.
  • API changes
    • Diagram should now be hosted inside DiagramView. For time being it can still be used as a standalone control, but support for this will be removed in a future release.
    • Set Behavior, ZoomFactor, Scroll*, *ButtonActions properties of DiagramView instead of Diagram.
    • Instead of setting Document property of Overview to a Diagram instance, set its DiagramView property.
    • Instead of setting Document property of Ruler to a Diagram instance, set its DiagramView property. The latter is the default content property now. If you still need to show stand-alone diagram inside Ruler from Xaml, you must explicitly set it through <diag:Ruler.Document> tag.
    • For consistency with other MindFusion diagram libraries, DiagramNodeAdapter has been renamed to ControlNode. Its UIElement property has been renamed to Control.

New in MindFusion.Spreadsheet

  • The CellIndex class can now be used to convert between integer column/row and string representation of a cell address.
  • Added a new [] indexer of CellCollection which accepts CellIndex as parameter.
  • OldValue, CurrentColumn and CurrentRow properties of IExpressionEvaluatorContext now provide more contextual information for custom function evaluation.

New in MindFusion.Scheduling

  • AppointmentForm now accepts return keys in description field to create new lines.
  • AppointmentDeleted property has been added to AppointmentForm.
  • Appointment form arrow bitmaps have been replaced with vector ones.

Fixes

Fixed in MindFusion.Diagramming

  • Miscellaneous
    • Fixed ShapeNode.Clone not copying ImagePadding value.
    • Fixed CreateImage results when called with Windows display scaling enabled.
    • Fixed HorizontalScaleHeight and VerticalScaleWidth setters not updating the Ruler.

Fixed in MindFusion.Spreadsheet

  • Fixed incorrect bitmap size imported by ExcelImporter.

Fixed in Virtual Keyboard

  • Fixed AltGr grapheme generation not working in some applications.