/// <summary>
        /// Scales top mipmap and DESTROYS ALL OTHERS.
        /// </summary>
        /// <param name="scale">Scaling factor. </param>
        public void Resize(double scale)
        {
            MipMap closestMip  = null;
            double newScale    = 0;
            double desiredSize = MipMaps[0].Width * scale;

            double min = double.MaxValue;

            foreach (var mip in MipMaps)
            {
                double temp = Math.Abs(mip.Width - desiredSize);
                if (temp < min)
                {
                    closestMip = mip;
                    min        = temp;
                }
            }

            newScale = desiredSize / closestMip.Width;

            MipMaps[0] = ImageEngine.Resize(closestMip, newScale);
            MipMaps.RemoveRange(1, NumMipMaps - 1);
        }
Esempio n. 2
0
 /// <summary>
 /// Scales top mipmap and DESTROYS ALL OTHERS.
 /// </summary>
 /// <param name="scale">Scaling factor. </param>
 /// <param name="mergeAlpha">True = flattens alpha, directly affecting RGB.</param>
 public void Resize(double scale, bool mergeAlpha)
 {
     MipMaps[0] = ImageEngine.Resize(MipMaps[0], scale, mergeAlpha);
     MipMaps.RemoveRange(1, NumMipMaps - 1);
 }