Пример #1
0
 public override void Generate()
 {
     for (int i = 0; i <= nbSteps; i++)
     {
         scaleSteps[i] = new ScaleStep(i, stepCents * i, 0); // no frequency
     }
 }
Пример #2
0
 public override void Generate()
 {
     for (int i = 0; i < intervalRatios.Length; i++)
     {
         double cents = IntervalRatio.CentsFromRatio(intervalRatios[i]);
         scaleSteps[i] = new ScaleStep(i, cents, 0);
     }
 }
Пример #3
0
 protected void GenerateSteps(double[] orwellCents)
 {
     Array.Sort(orwellCents);
     for (int i = 0; i < nbSteps; i++)
     {
         scaleSteps[i] = new ScaleStep(i, orwellCents[i], 0);
     }
     scaleSteps[nbSteps] = new ScaleStep(nbSteps, 1200, 0);
 }
Пример #4
0
        private void ScaleText(TextFigure tf, Point pos)
        {
            if (_nowScaling == null)
            {
                _originalX = tf.X.CachedValue.AsDouble;
                _originalY = tf.Y.CachedValue.AsDouble;
                _originalW = tf.Width.CachedValue.AsDouble;
                _originalH = tf.Height.CachedValue.AsDouble;
                var snappedTo   = StepManager.SnapTo(pos, tf.GetMagnets(), tf.Center);
                var bLenSquared = _originalW * _originalW + _originalH * _originalH;
                if ((snappedTo == tf.Start) && (Math.Abs(bLenSquared) > Utils.Tolerance))
                {
                    var ax = _originalX + _originalW - pos.X;
                    var ay = _originalY + _originalH - pos.Y;

                    _nowScaling = new ScaleTextStep(tf, ScaleTextStep.Side.End,
                                                    (ax * _originalW + ay * _originalH) / bLenSquared);
                }
                else if ((snappedTo == tf.End) && (Math.Abs(bLenSquared) > Utils.Tolerance))
                {
                    var ax = pos.X - _originalX;
                    var ay = pos.Y - _originalY;

                    _nowScaling = new ScaleTextStep(tf, ScaleTextStep.Side.Start,
                                                    (ax * _originalW + ay * _originalH) / bLenSquared);
                }
                if (_nowScaling == null)
                {
                    return;
                }
                StepManager.InsertNext(_nowScaling);
            }
            else
            {
                var sts = (ScaleTextStep)_nowScaling;

                if (sts.ScaleAround == ScaleTextStep.Side.Start)
                {
                    var bLenSquared = _originalW * _originalW + _originalH * _originalH;

                    var ax = pos.X - _originalX;
                    var ay = pos.Y - _originalY;

                    sts.Scale((ax * _originalW + ay * _originalH) / bLenSquared);
                }
                else if (sts.ScaleAround == ScaleTextStep.Side.End)
                {
                    var bLenSquared = _originalW * _originalW + _originalH * _originalH;

                    var ax = _originalX + _originalW - pos.X;
                    var ay = _originalY + _originalH - pos.Y;

                    sts.Scale((ax * _originalW + ay * _originalH) / bLenSquared);
                }
            }
        }
Пример #5
0
 public override void Generate()
 {
     for (int j = 0; j < 3; j++)
     {
         for (int i = 0; i < 34; i++)
         {
             scaleSteps[i + 34 * j] = new ScaleStep(i + 34 * j, stepCents * i + 1200 * j, 0); // no frequency
         }
     }
 }
Пример #6
0
        private void ScaleEllipse(EllipseFigure ef, Point pos)
        {
            if (_nowScaling == null)
            {
                _originalW = ef.Radius1.CachedValue.AsDouble;
                _originalH = ef.Radius2.CachedValue.AsDouble;
                var snappedTo = StepManager.SnapTo(pos, ef.GetMagnets(), ef.Center);
                if ((snappedTo == ef.Left) && (Math.Abs(_originalW) > Utils.Tolerance))
                {
                    _nowScaling = new ScaleEllipseStep(ef, ScaleEllipseStep.Side.Right,
                                                       1 - (pos.X - _downPos.X) / _originalW);
                }
                else if ((snappedTo == ef.Right) && (Math.Abs(_originalW) > Utils.Tolerance))
                {
                    _nowScaling = new ScaleEllipseStep(ef, ScaleEllipseStep.Side.Left,
                                                       1 + (pos.X - _downPos.X) / _originalW);
                }
                else if ((snappedTo == ef.Top) && (Math.Abs(_originalH) > Utils.Tolerance))
                {
                    _nowScaling = new ScaleEllipseStep(ef, ScaleEllipseStep.Side.Bottom,
                                                       1 - (pos.Y - _downPos.Y) / _originalH);
                }
                else if ((snappedTo == ef.Bottom) && (Math.Abs(_originalH) > Utils.Tolerance))
                {
                    _nowScaling = new ScaleEllipseStep(ef, ScaleEllipseStep.Side.Top,
                                                       1 + (pos.Y - _downPos.Y) / _originalH);
                }
                if (_nowScaling == null)
                {
                    return;
                }
                StepManager.InsertNext(_nowScaling);
            }
            else
            {
                var srs = (ScaleEllipseStep)_nowScaling;

                if (srs.ScaleAround == ScaleEllipseStep.Side.Right)
                {
                    srs.Scale(1 - (pos.X - _downPos.X) / _originalW);
                }
                else if (srs.ScaleAround == ScaleEllipseStep.Side.Left)
                {
                    srs.Scale(1 + (pos.X - _downPos.X) / _originalW);
                }
                else if (srs.ScaleAround == ScaleEllipseStep.Side.Top)
                {
                    srs.Scale(1 + (pos.Y - _downPos.Y) / _originalH);
                }
                else if (srs.ScaleAround == ScaleEllipseStep.Side.Bottom)
                {
                    srs.Scale(1 - (pos.Y - _downPos.Y) / _originalH);
                }
            }
        }
Пример #7
0
        public override void Generate()
        {
            double a = Math.Pow(2, 1.0 / nbSteps);

            for (int i = 0; i <= nbSteps; i++)
            {
                double freq  = refFrequency * Math.Pow(a, i);
                double cents = 1200.0 / nbSteps * i;

                scaleSteps[i] = new ScaleStep(i, cents, freq);

                if (OutputCents)
                {
                    Console.WriteLine("{0:F2}", cents);
                }
            }
        }
Пример #8
0
        public void GenerateFromEDO(int edoNbSteps, int generatorNbSteps)
        {
            var edoSteps = GenerateEDOSteps(edoNbSteps);

            double[] orwellCents = new double[nbSteps];

            int genIdx = generatorNbSteps; // start here

            scaleSteps[0] = new ScaleStep(0, 0, 0);
            for (int i = 1; i < nbSteps; i++)
            {
                orwellCents[i] = edoSteps[genIdx];

                // go to next generator in EDO scale
                genIdx = (genIdx + generatorNbSteps) % edoNbSteps;
            }

            GenerateSteps(orwellCents);
        }
Пример #9
0
 public bool Reset()
 {
     _nowScaling = null;
     return(_moved);
 }