PhotoViewerTest.Droid.PhotoViewDroidAttacher.UpdateBaseMatrix C# (CSharp) 메소드

UpdateBaseMatrix() 개인적인 메소드

private UpdateBaseMatrix ( Android d ) : void
d Android
리턴 void
        private void UpdateBaseMatrix(Android.Graphics.Drawables.Drawable d)
        {
            ImageView imageView = GetImageView ();
            if (null == imageView || null == d) {
                return;
            }

            float viewWidth = GetImageViewWidth (imageView);
            float viewHeight = GetImageViewHeight (imageView);
            int drawableWidth = d.IntrinsicWidth;
            int drawableHeight = d.IntrinsicHeight;

            mBaseMatrix.Reset ();

            float widthScale = viewWidth / drawableWidth;
            float heightScale = viewHeight / drawableHeight;

            if (mScaleType == Android.Widget.ImageView.ScaleType.Center) {
                mBaseMatrix.PostTranslate ((viewWidth - drawableWidth) / 2F,
                    (viewHeight - drawableHeight) / 2F);

            } else if (mScaleType == Android.Widget.ImageView.ScaleType.CenterCrop) {
                float scale = Math.Max (widthScale, heightScale);
                mBaseMatrix.PostScale (scale, scale);
                mBaseMatrix.PostTranslate ((viewWidth - drawableWidth * scale) / 2F,
                    (viewHeight - drawableHeight * scale) / 2F);
            } else if (mScaleType == Android.Widget.ImageView.ScaleType.CenterInside) {
                float scale = Math.Min (1.0f, Math.Min (widthScale, heightScale));
                mBaseMatrix.PostScale (scale, scale);
                mBaseMatrix.PostTranslate ((viewWidth - drawableWidth * scale) / 2F,
                    (viewHeight - drawableHeight * scale) / 2F);

            } else {
                RectF mTempSrc = new RectF (0, 0, drawableWidth, drawableHeight);
                RectF mTempDst = new RectF (0, 0, viewWidth, viewHeight);

                if (mScaleType.Name ().Equals (ImageView.ScaleType.FitCenter.Name ())) {
                    mBaseMatrix.SetRectToRect (mTempSrc, mTempDst, Matrix.ScaleToFit.Center);
                } else if (mScaleType.Name ().Equals (ImageView.ScaleType.FitStart.Name ())) {
                    mBaseMatrix.SetRectToRect (mTempSrc, mTempDst, Matrix.ScaleToFit.Start);
                } else if (mScaleType.Name().Equals (ImageView.ScaleType.FitEnd.Name()))
                    mBaseMatrix.SetRectToRect (mTempSrc, mTempDst, Matrix.ScaleToFit.End);
                else if (mScaleType.Name ().Equals (ImageView.ScaleType.FitXy.Name ()))
                    mBaseMatrix.SetRectToRect (mTempSrc, mTempDst, Matrix.ScaleToFit.Fill);
            }
            ResetMatrix ();
        }