decimal pGetReferenceValue(int refElement, PatternElement.properties_decimal prop, int subshapeindex)
 {
     return(commonVars.stitcher
            .getPatternElement(patternIndex: 0, refElement)
            .getDecimal(prop, subshapeindex));
 }
        void pSetReferenceValues(int index, int subshapeindex, ObservableCollection <string> uilist, PatternElement.properties_decimal targetValue, PatternElement.properties_i propertyIndex, PatternElement.properties_i subShapeIndex, DropDown cb, NumericStepper ns)
        {
            uilist.Clear();
            uilist.Add("1");

            decimal val = commonVars.stitcher.getPatternElement(patternIndex: 0, index).getDecimal(targetValue, subshapeindex);

            int refElement = commonVars.stitcher.getPatternElement(patternIndex: 0, index).getInt(propertyIndex, subshapeindex);

            bool refActive = (refElement != 0);

            if (refActive)
            {
                if (refElement <= index)
                {
                    refElement--;
                }
                int refSubShapeCount = commonVars.stitcher.getPatternElement(patternIndex: 0, refElement).getSubShapeCount();

                for (int i = 1; i < refSubShapeCount; i++)
                {
                    uilist.Add((i + 1).ToString());
                }

                int _subShapeRef = commonVars.stitcher.getPatternElement(patternIndex: 0, index).getInt(subShapeIndex, subshapeindex);

                // Safety check in case our reference element shifted under us.
                if (_subShapeRef >= refSubShapeCount)
                {
                    _subShapeRef = 0;
                    commonVars.stitcher.getPatternElement(patternIndex: 0, index).setInt(subShapeIndex, _subShapeRef, subshapeindex);
                }

                cb.SelectedIndex = _subShapeRef;

                val = pGetReferenceValue(refElement, targetValue, _subShapeRef);
            }
            else
            {
                cb.SelectedIndex = 0;
            }
            ns.Value = Convert.ToDouble(val);
            commonVars.stitcher.getPatternElement(patternIndex: 0, index).setDecimal(targetValue, val, subshapeindex);
        }