About CET

Some informational CET windows have been removed and consolidated into a new About CET window.

Canvas and Device

Canvas

Using GDI or integer-based method on the PdfCanvas is causing a lot of precision problems for PDFs and printing. To make PDF and printing more robust, the Canvas class will now be separated into two subclasses, ToPixelCanvas and VectorCanvas. In the future, PdfVectorCanvas will be used instead, and it subclasses from VectorCanvas where the methods will be floating-point based.

Device

The PixelDevice dc field on Canvas will be moved to ToPixelCanvas. Since VectorCanvas will not use GDI, it's device context or dc field will not be the PixelDevice type, but VectorDevice instead. The VectorDevice will support floating-point based methods instead.

Data Variables

The DRecord class now supports indexing into StrArray.

Snapper Graph Cache Debug Tool

Variants Constraints

The dsiConstraintsApplyStyle enumeration is not used anymore because we are limiting the constraint apply style options to only Top Down. As a result, all relevant interfaces in OFDAHeaderData will be deprecated and the ConstraintsApplyStyle tag will not be used.

cm.abstract

A bug would be triggered if an imageSnapper was placed in paperSpace and then stretched or scaled followed by an undo/redo operation. The same problem occured with all classes derived from drawRect if the layer was set to bottom. In order to remedy this issue the previously named photoSnapperUndoHook has been moved into the drawRect super class and renamed drawRectUndoHook.

COMaterials

COMaterials have been changed to always use GMaterial3D. Previously WrappedImageMaterial3D was used for texture materials and ColorMaterial3D for color materials.

cm.abstract.materialHandling

A few interfaces in the Material Handling Abstract related to the Animation Tool Spreading functionality has been reworked to be easier to use and customize.

  • MhSpreadPatternBehavior has been extended to allow for easier customization of snapper spreading cache keys. As a result, MhSpreadPatternBehavior and MhSpreadCacheKeyBehavior functionalities has been merged, with MhSpreadCacheKeyBehavior removed.
  • Some of the redundant SpreadPattern classes in the abstract has been removed, e.g. MhUnitLoadLevelSpreadPattern, MhUnitLoadNoSpreadPattern; along with the behaviors that existed solely to enable usage of these customized spread patterns.
  • MhSnapperSpreadVessel, MhSnapperRemoverVessel, MhSnapperSpreadToolAnimation, and MhSnapperInsertToolAnimation refactoring to consolidate spreading-related functionalities and various caching, with the introduction of a MhSpreadToolEnv structure.

cm.application

When copying papers within within a group, the copied paper would be assigned a new group instance, resulting in the paper ordering being incorrect. To solve this we now make sure the copied paper belongs to the same group as the original. We then rebuild the panel to update and get the correct paper ordering.

Additionally, when multiple papers within a group where copied one of the papers would have an additional copy made. This has been fixed by making sure the specific paper is only copied once.

cm.core

cm.core

Previously when changing any of the pageSetup settings in paperSpace (such as paper resolution, margins or paper dimensions) and creating a new drawing, the settings were reset to their default values. Changes have now been made to reflect the most recent change made to a paper. A new drawing will thus have the same settings as the last paper created.

cm.core.xclip

When moving the 2D view rectangle in paperspace users would experience significant lag due to a costly rebuild2D invalidation call each frame. This lag is mitigated by instead running the rebuild in the snappers' updateContent method.

cm.std.photo

PhotoSnapper now shows unrendered photos in the photo series. Double clicking a PhotoSnapper now opens a SelectPhotoDialog.

cm.track.probe

Rewrite of probes.

  • Probe syntax have less overhead while probes are disabled.
  • Opened up the interface to allow utils outside of probes package.
  • Started work on probe utilities under cm.track.probe.util though that work is still WIP.
Public classes:
Probe - Single probe.
Probes - Collection of all probes.
ProbeTest - Single probe test.
ProbeTests - All probe tests for a single probe.
ProbeTestResult - Calculates median, avg, min, max etc for a ProbeTests.

cm.track.probe.util

Contains functionallity to:

  • Monitor probes in real time. 'monitor.cm'
  • Diff/Compare probe results. 'diff.cm'
  • Save probe tests and diff results. 'stream.cm'