public AttachRulerToBrick(LayerRuler.RulerItem rulerItem, LayerBrick.Brick brick)
 {
     // compute the attach offset in local coordinate
     PointF attachOffset = RulerAttachementSet.Anchor.sComputeLocalOffsetFromLayerItem(brick, rulerItem.CurrentControlPoint);
     // create a new Anchor
     mAnchor = new RulerAttachementSet.Anchor(rulerItem, rulerItem.CurrentControlPointIndex, attachOffset);
     mBrick = brick;
 }
 public MoveRulerControlPoint(LayerRuler layer, LayerRuler.RulerItem rulerItem, PointF originalPosition, PointF newPosition)
 {
     mRulerLayer = layer;
     mRulerItem = rulerItem;
     mControlPointIndex = rulerItem.CurrentControlPointIndex;
     mOriginalPosition = originalPosition;
     mNewPosition = newPosition;
     // compute the new attach offset if the control point is attached
     if (rulerItem.IsCurrentControlPointAttached)
     {
         LayerBrick.Brick attachedBrick = rulerItem.BrickAttachedToCurrentControlPoint;
         mAnchor = attachedBrick.getRulerAttachmentAnchor(rulerItem);
         mOriginalLocalAttachOffset = mAnchor.LocalAttachOffsetFromCenter;
         mNewLocalAttachOffset = RulerAttachementSet.Anchor.sComputeLocalOffsetFromLayerItem(attachedBrick, newPosition);
         mAttachedBrickOrientation = attachedBrick.Orientation;
     }
 }
 public override void recreateLinksAfterLoading()
 {
     // try to find the brick with the id we read
     LayerBrick.Brick brick = Map.sHashtableForRulerAttachementRebuilding[mAttachedBrickHashCodeUsedDuringLoading] as LayerBrick.Brick;
     if (brick != null)
     {
         // compute the attach offset in local coordinate
         PointF attachOffset = RulerAttachementSet.Anchor.sComputeLocalOffsetFromLayerItem(brick, this.Center);
         // create a new Anchor
         RulerAttachementSet.Anchor anchor = new RulerAttachementSet.Anchor(this, 0, attachOffset);
         brick.attachRuler(anchor);
     }
 }