Compile Time Changes

ConnectArc

  • New helper methods
/**
 * Line that spans the arc in snapper coordinates.
 */
extend public line spanLine()

/**
 * Return this connect arc in snapper coordinates.
 */
extend  public arc snapperArc()

/**
 * Return this connect arc in space coordinates.
 */
extend public arc spaceArc()
  • Made some methods no longer final
/**
 * Return arc of this.
 */
extend public arc arc()

/**
 * Param.
 */
extend public double param(Connector c, line ln, bool asSnap)
  • Added support for dbg graphcis for connect arcs on Snapper class.

Other Changes

  • Moved csvExporter to core from AO
  • Added a flag to propertyStretchAnimation to toggle between using a connectors actual position and it’s visual position for calculations.
  • Moved xmlDynamicTree.cm from abstact.office.

gFieldBox.cm

  • Added new parameter formatterBreakLines to the constructor of GFieldBox to make use of the breakLinesViaFormatter() that was added in 11.5 and allow field box graphs to break lines.
  • Default is false to prevent affecting older drawings.
  • Might cause compilation errors to any extended subclasses.
/**
 * Constructor.
 */
public constructor(str fieldName,
                   point2D pos=(0, 0), size2D size=(20, 100), bool clipEdges=false,
                   double nominalFontSize=1cm,
                   angle rot=0deg, alignment align=alignment.upLeft,
                   color textColor=color(0, 0, 0),
                   bool breakLines=false, bool formatterBreakLines=false,
                   bool increaseFontSizeToFitSize=false, bool decreaseFontSizeToFitSize=false,
                   bool insertLineSpacing=true, bool insertCharSpacing=true,
                   lineFormats lineFormat=lfLeft,
                   columnFormats columnFormat=cfTop,
                   bool stableLineBreaks=false,
                   double externalMargin=0,
                   LayerExpr layer=null,
                   bool alwaysReadable=true) {
    super(text="",
          pos=pos, size=size, clipEdges=clipEdges,
          nominalFontSize=nominalFontSize,
          rot=rot, align=align,
          textColor=textColor,
          breakLines=breakLines,
          formatterBreakLines=formatterBreakLines,
          increaseFontSizeToFitSize=increaseFontSizeToFitSize, decreaseFontSizeToFitSize=decreaseFontSizeToFitSize,
          insertLineSpacing=insertLineSpacing, insertCharSpacing=insertCharSpacing,
          columnFormat=columnFormat,
          lineFormat=lineFormat,
          stableLineBreaks=stableLineBreaks,
          externalMargin=externalMargin,
          layer=layer,
          useNewStyleFormatting=true,
          alwaysReadable=alwaysReadable);

     this.fieldName = fieldName;
}

snapper.cm

The holder field has been made private. Use the rawHolder method for direct access to the holder. The old accessor functions _holder() and _holder= has been deprecated.

// Class: Snapper
Old: public Holder _holder : copy=null, ignore modify notice;
New: private Holder __holder : copy=null, ignore modify notice;

Old: final public Holder _holder() : deprecated;
New: final public Holder rawHolder(bool ignoreParent=false);

Old: final public Holder _holder=(Holder h) : deprecated;
New: final public Holder holder=(Holder z)

The selection method has been made final. Use the methods singleSelection and/or groupSelection to customize selection.

// Class: Snapper
Old: extend public SnapperSelection selection(Line mouseLine);
New: final public SnapperSelection selection(Line mouseLine);

The method alignConnectors got an additional parameter.

Old: extend public void alignConnectors(Connector snap, Connector attach, Snapper{} visited,
                                        bool invalidate3D=false, bool removeFromBsp=false,
                                        bool tryRealign=false, bool forcePropagate=false);

New: extend public void alignConnectors(Connector snap, Connector attach, Snapper{} visited,
                                        bool invalidate3D=false, bool removeFromBsp=false,
                                        bool tryRealign=false, bool forcePropagate=false,
                                        Snapper originator=null);

As part of the development of child snappers the child snapper protocol of Snapper has been revived and changed.

// Class: Snapper
New: final public Snapper{} children(bool recursive=false);
Old: extend public Snapper{} children();

Old: extend public bool isChildSnapper();
New: final public bool isChildSnapper() : inline;

Removed: extend public bool isParentSnapper();
Removed: extend public Snapper{} recursiveChildren();
Removed: extend public bool includeChildrensBounds();
Removed: public bool includeChildrens2D();
Removed: extend public bool includeChildrens3D();

neighbors.cm

Old: public Snapper{} allConnected(Snapper this, bool includeSelf=false, bool ignoreRefConnectors=false);

New: public Snapper{} allConnected(Snapper this, bool includeSelf=false, bool ignoreRefConnectors=false,
                                   bool ignoreChildSnappers=true);

Old: public Snapper{} allConnected(Snapper{} snappers, bool includeSelf=false,
                                   bool ignoreChildSnappers=true);

New: public Snapper{} allConnected(Snapper{} snappers, bool includeSelf=false,
                                   bool ignoreChildSnappers=true);

Additional changes in cm.core

// Class: GraphSnapper
Removed: public void loaded1(ObjectFormatter formatter, LoadFailInfo failInfo);

// Class: Model3DSnapper
Removed: public void loaded1(ObjectFormatter formatter, LoadFailInfo failInfo);

// Class: ModelSnapper
Removed: public void loaded1(ObjectFormatter formatter, LoadFailInfo failInfo);

cm.core.stream.load.cm

Added new arguments to the following method.

public bool externalLoadDecompress(LoadWorldEnv env, Url path, Url head, Url tail, Url localPath);

cm.core.stream.save.cm

Added new arguments to the following methods.

public bool saveHeaderStyle3(World world, WorldFileHeader header, Url path, Url headUrl, Url tailUrl, Url tailCrcUrl,
                             MemoryImage thumbnailImage, int tailSize, bool progress, userSaveAction action,
                             bool searchKeywords, Url[] mirrors, StrBuf log, RangeI resourceRange,
                             WorldSaveStats stats, Url backupTarget=null);

private void callCetSave(Url headUrl, int headSize, Url headCrcUrl,
                         Url tailUrl, int tailSize, Url tailCrcUrl,
                         Url target, Url[] mirrors,
                         StrBuf logBuf, Url backupTarget=null,
                         userSaveAction action=userSaveAction.user, World world=null,
                         function(CETSaveEnv) saveCompletedCB=null);

public void cetSave(StrBuf cmd, Url headUrl, int headSize, Url headCrcUrl,
                    Url tailUrl, int tailSize, Url tailCrcUrl, Url target,
                    Url log=null, Url backupTarget=null, int compress=3);

Changed return type for the following methods.

private Url checkBeforeSave(World world, Url path, Url head, Url tail, Url tailCrc, userSaveAction action);

private Url copyOriginalBeforeSave(Url path, userSaveAction action);