Last major version of Ab2d.ReaderSvg and ZoomPanel published

by abenedik 17. December 2021 11:01

I would like to inform you that the last major version of Ab2d.ReaderSvg and ZoomPanel libraries have been published.

With this release both libraries have got special builds for .Net 5.0 and .Net 6.0. Also, both libraries are available as NuGet packages. Note that the version that is distributed through NuGet uses a different licensing mechanism than the version that is installed by the evaluation or commercial version installer. The same assembly from NuGet can be used for evaluation and commercial usage. The commercial usage can be activated by calling the SetLicense method. The code for that method can be obtained from the User Account web page.

With the support for the latest .Net versions and NuGet both libraries are updated to the latest standards. 

The Ab2d.ReaderSvg library also got some additional new features that improve reading some more complex svg files that use "use" or "marker" elements. See the changelog for more info.

Both libraries are used by many customers in many commercial products. In the last years, they have received many new features and fixes. This makes then are very mature.

The development at AB4D company is focused on 3D products. Therefore, the 2D products (including Ab2d.ReaderSvg and ZoomPanel) will get only limited support. Also, there are no major new versions planned. The future development will cover only simpler or critical issues or be based on custom development.

Tags:

ReaderSvg | ZoomPanel

A maintenance update of the ZoomPanel library published

by abenedik 28. February 2018 09:11

I would like to inform you that a new maintenance update of ZoomPanel library has been published.

The following is a list of improvements:

  • Prevented slight content movement that occurred when a user clicked on ZoomPanel (the movement was noticeable when the content was zoomed in).
  • Added ViewboxAnimationStarted event to be notified when the zooming animation is started (there is already a ViewboxAnimationCompleted event).
  • Added UseLowQualityBitmapScalingModeWhenAnimating property that allows using LowQuality BitmapScalingMode during animation to improve the performance of animations (for very big bitmaps or for animations on slow computers).

Commercial users with a valid updates subscription can download the new version for their User Account web pages. Others can check it by installing the evaluation version from the Downloads web page.

Tags:

ZoomPanel

Maintenance update of Ab2d.ReaderSvg published

by abenedik 24. January 2017 10:09

I would like to inform you that a new maintenance update of Ab2d.ReaderSvg has been published.

The new version adds the following new properties to the ReaderSvg object: IsCorrectingNamesForWpf, MakeNamesUnique and GetCustomSvgElementNameCallback.

They can be used to better control how the names defined in svg file are used on the WPF objects. Before ReaderSvg always corrected the names when they did not fit into WPF’s naming schema. It also made the name unique by adding indexes after duplicated names. But now it is possible to preserve the names as they are in the svg file.

What is more, user now have full control on defining the name with using a custom callback that can be assigned to the new GetCustomSvgElementNameCallback property.

The new version also fixes a rare problem that could occur when an unknow transformation type is defined in svg file.

Also, some users reported that Visual Studio analyzer could in some cases report CA0055 and CA0052 errors when using Ab2d.ReaderSvg library. This has been fixed.

 

The new release also brings a new sample to ZoomPanel project that shows how easy is to use ZoomPanen in WinForms application.

Tags:

ReaderSvg | ZoomPanel

All AB4D libraries improved with new licensing code and many new features

by abenedik 26. April 2016 21:39

I would like to inform you that today new versions of all the AB4D products have been published.

The main reason for this release is that the evaluation and commercial licensing code that is included in all the products have been greatly improved. What is more, the deployment script that I use to prepare all release version have been improved.

Also, all the products got some additional functionality or fixed bugs. For example, the following image shows new ViewCubeCameraController from Ab3d.PowerToys library:

3D ViewCube in Ab3d.PowerToys library

The main benefits of the new licensing and deployment are:

  • All products are now also compiled for .Net 4.5 target framework. This means that all products are available for .Net 3.5, .Net 4.0 and also .Net 4.5 (an exception is Ab3d.DXEngine that does not support .Net 3.5). This will allow using new language features in the libraries – especially async and await support.
  • New evaluation and commercial licensing code is now faster and required less resources.
  • New evaluation code allows starting ad-hock evaluation on a computer that do not have the evaluation version installed. This means that you will be able to create a sample project with an evaluation version and then just copy your application to another computer. At the first start of your application you will get a dialog to start a new evaluation and then be able to continue running your application. In the previous version you needed to install evaluation version on the other computer too.
  • Improved commercial licensing code that brings new options to embed license key into your project and allows using special license key for application. This simplifies compiling projects on cloud base build servers and allows some other non-standard distributions. More details about that can be found in the new “Using commercial version” help file.

The new version also introduces new directory structure that is created after the libraries are installed. In the previous version the libraries for .Net 3.5 framework were installed into “bin” folder and libraries for .Net 4.0 framework were installed into “bin\.Net 4” folder. Now the organization is much more standard: the .Net 3.5 assemblies are in “bin\net35” folder, .Net 4.0 assemblies are in “bin\net40” folder and .Net 4.5 assemblies are in “bin\net45” folder.

This means that you might need to update your references.

The new .Net 4.5 versions of the libraries will allow using async keywords. Currently this has not yet been added to any of the libraries. But in the near future I plan to add support for async to all of the libraries. For example, async loading of 3D models or svg files. Another possibility is to create async methods to animate camera or ZoomPanel.

 

As mentioned before, this release also brings other improvements and fixes.

Ab3d.PowerToys got some great new features. The most highly anticipated feature is the ability to control the camera with 3D cube. The image with three possible cubes was shown before.

Another great addition to the library are new TubePathVisual3D and TubePathMesh3D that allows creating various tube based objects:

3D tube path in Ab3d.PowerToys library

The following is a full list of new features in Ab3d.PowerToys library

  • Added ViewCubeCameraController.
  • Added TubePathVisual3D and TubePathMesh3D.
  • Added support to create extruded MeshGeometry3D that has custom orientation (not only in the direction of Y axis). This can be achieved with using a new override of CreateExtrudedMeshGeometry that also takes shapeYVector parameter.
  • Added IsStartPositionClosed and IsEndPositionClosed properties to TubeLineVisual3D. Also added additional isStartPositionClosed and isEndPositionClosed constructor parameters to the TubeLineMesh3D.
  • Added FreezeMeshGeometry3D to BoxVisual3D and SphereVisual3D to control if the MeshGeometry3D is frozen.
  • Improved TubeVisual3D that now allows setting Height to 0 - this creates an optimized TubeVisual3D without creating both bottom and top ring - in this case only bottom ring is created.
  • Fixed using adjustmentFactor in FitIntoView method.
  • Fixed using FitIntoView when it is called in Loaded method and the Viewport3D is shown in Ab3d.DXEngine.
  • Fixed type used by ShowMovablePlanes property.
  • Improved MouseCameraController to capture the mouse only when the mouse rotation / movement is bigger than a few pixels. This prevents "swallowing" MouseUp event for processing mouse click in EventManager3D.
  • Added UsePreviewEvents property to EventManager3D – when set to true the EventManager3D subscribes to Preview mouse and touch events instead of standard events - for example PreviewMouseUp event instead of MouseUp event. This can be used to use left mouse button for camera rotation and also for click events.
  • Added TurnTo method to FirstPersonCamera - this turns the camera towards the specified position or to the specified direction vector.
  • CameraControlPanel now moves the FirstPersonCamera forward or backwards when ZoomIn or ZoomOut buttons are clicked.
  • When MouseCameraController is used for FirstPersonCamera the mouse wheel now moves camera forward and backwards.

The library also got a few new samples. Two are to demonstrate the ViewCubeCameraController and TubePathVisual3D. There is also a greatly improved FirstPersonCamera sample that also shows how to turn the camera toward the clicked object. Another new sample shows how to create an application where user can draw to a 3D texture – for example to write annotation to a 3D height map.

 

Ab2d.ReaderSvg library that can read svg files also got many new features. 

The new version now supports textPath element that can render text on a path:

Support for svg textPath element in Ab2d.ReaderSvg

Another very interesting new feature is the new GetElementSvgText method that returns the outer xml text of the specified element. This can be very useful when you add some special attributes or elements to the svg elements. If those elements are not standard svg elements, then ReaderSvg cannot read them. But with using GetElementSvgText you can get the xml text from the specified element and then parse the data out of the xml.

The following is a list of all new features:

  • Added support for textPath elements (positioning text on a path).
  • Added GetElementSvgText to get the svg text of the element with the specified id (can be used to read some additional svg properties that are not read by ReaderSvg).
  • Added support for dx and dy properties on the text element.
  • Fixed writing new line characters in XAML.
  • Added support for vertical text (glyph-orientation-vertical svg property).
  • Improved writing images in XAML that are now written in more clear XAML. Also fixed setting Source for images that are created from foreign objects.
  • Added support for reading number lists that end with comma - for example "12, 34, 56," - this prevented reading svg file in the previous version.
  • Improved support for rounder corners on rectangles in case when only rx or only ry is specified - in this case the other value is set to the same value.

 

Other libraries got only a few updates.

For example, the Ab3d.DXEngine library does not have any new feature in the core libraries but there are three new samples that show how to use standard DirectX rendering code inside DXEngine. The samples show how to render 3D cube with SharpDX code, use the camera and camera controller from Ab3d.PowerToys and mix the rendered 3D cube with other 3D objects from Ab3d.PowerToys library.

Ab2d.ReaderWmf got the following new features:

  • Improved reading images with negative scale transformations.
  • Improved positioning text for some special use cases (correctly position text based on the TextAlign mode).
  • Fixed ResourceDictionaryWriter so that the ResolveResourceKeyCallback is called also for root keys.

 

ZoomPanel library was only slightly improved – the number of history items was increased to 100.

Also Ab3d.Reader3ds got only one improvement. The support for reading broken 3ds files has been improved so that some invalid positions that are not used in TriangleIndices are fixed. This prevents creating too big bounds value that is usually used to position the camera after the model is loaded. 

 

I am really excited about this release. It improves many aspects of the libraries that are not related to the core functionality but are needed because of licensing. It also enables many new features that are possible with .Net 4.5 and allows creating more user friendly APIs with async methods.

Tags: , , , , ,

Ab3d.PowerToys | DXEngine | Reader3ds | ReaderSvg | ReaderWmf | ZoomPanel

Improved multi-touch support in new version of ZoomPanel

by abenedik 13. January 2015 15:44

I am happy to announce that a new version of ZoomPanel has been just released.

The new version brings improved support for touch and multi-touch.

The previous version of ZoomPanel already has touch support. But for that you need to use a custom MultiTouchZoomPanel control that was available in a separate project.

The reason for that separation was that the ZoomPanel library was built with .Net 3.5 framework that do not have support for touch. The MultiTouchZoomPanel was built on .Net 4 framework and was able to use touch events.

In the new version the code from MultiTouchZoomPanel is integrated into the core ZoomPanel control. The trick is that ZoomPanel comes with two builds: one .Net 3.5 and one .Net 4.0. This allows us to implement all the touch manipulation in the .Net build. The .Net 3.5 build preserves all the new properties that control the touch behaviour but an error is thrown if user wants to enable touch support.

So if you want to use touch controls all you need to do is to use the .Net 4 build of ZoomPanel. Touch controls are already enabled by default.

 

What is more, this version improves the pinch to zoom behavior with improving the position where the zoom occurs - now the center of zoom is between the fingers that do the pinch.

Tags:

ZoomPanel

New maintenance release for almost all products published

by abenedik 15. October 2013 23:02

After quite a long time I am happy to announce that a maintenance release for the following products has been released:

  • Ab2d.ReaderSvg with ViewerSvg,
  • Ab2d.ReaderWmf with Paste2Xaml,
  • Ab2d.ZoomPanel,
  • Ab3d.Reader3ds with Viewer3ds.

 

New version mainily include some bug fixes and improvements that were created based on users feedback.

The following is the what's new list:

 

Ab2d.ReaderSvg

  • Fixed reading text with gradient fill or stroke brush.
  • Prevent throwing exception when incorrect number text was used for numbers.
  • Invisible objects (Visibility != Visible) are not exported to geometry any more.
  • Shapes with Opacity set (Opacity < 1.0) are now correctly exported as geometries.

 

Ab2d.ReaderWmf

  • Added reading images from EMR_ALPHABLEND records. Note that usually those images are not rendered correctly because the blend dwRop operations are not supported by WPF, but at least user can get the image and convert it manually to a transparent image that could be used to achieve correct results.
  • Added ResolveBitmapOperation that is called in processing EMR_ALPHABLEND record - here the user can change the bitmap to get correct results - for example convert black to transparent.
  • Invisible objects (Visibility != Visible) are not exported to geometry any more.
  • Shapes with Opacity set (Opacity < 1.0) are now correctly exported as geometries.

 

Ab2d.ZoomPanel

  • Fixed using ZoomPanel under some circumstances when viewbox limits is set.

 

Ab3d.Reader3ds

  • Small fix for a problem that can occure when one object has multiple materials assigned.
  • Improved reading broken files - no exception is thrown when the animation data for camera is broken.

 

You could say that this is not much for quite a long time since last update. And you would be right.

The reason for that is that I am preparing a new major release of Ab3d.PowerToys which will be hopefully ready until beginning of the next week. It will have much much more to show.

And that is not all. With the release of the new version of Ab3d.PowerToys I will also announce a brand new project that I have been working on for almost a year. I am very excited about that project and I am sure you will also like it.

Tags: , , ,

Reader3ds | ReaderSvg | ReaderWmf | ZoomPanel

Improved version of ZoomPanel available

by abenedik 20. March 2013 22:13

I am happy to say that a new version of ZoomPanel control is available.

After some straggling to fix some problems with using ViewboxLimits, FitToHeight and FitToWidth I have decided to rewrite part of the code again. Hopefully this time the ZoomPanel should work regardless of the ViewboxLimits, content size and available ZoomPanel size.

There are no new features in this version. I think that ZoomPanel already has many great features and is a complete solution for any possible scenario that needs zooming and panning.

As always the existing customers can download the new version from their User Account page. Others can try the new version with downloaded the new evaluation version.

Tags:

ZoomPanel