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.