QuickFont.QFont.OrthogonalTransform C# (CSharp) Method

OrthogonalTransform() private static method

When TransformToOrthogProjection is enabled, we need to get the current orthogonal transformation, the font scale, and ensure that the projection is actually orthogonal
private static OrthogonalTransform ( float &fontScale ) : TransformViewport
fontScale float
return TransformViewport
        private static TransformViewport OrthogonalTransform(out float fontScale)
        {
            bool isOrthog;
            float left,right,bottom,top;
            ProjectionStack.GetCurrentOrthogProjection(out isOrthog,out left,out right,out bottom,out top);

            if (!isOrthog)
                throw new ArgumentOutOfRangeException("Current projection matrix was not Orthogonal. Please ensure that you have set an orthogonal projection before attempting to create a font with the TransformToOrthogProjection flag set to true.");

            var viewportTransform = new TransformViewport(left, top, right - left, bottom - top);
            fontScale = Math.Abs((float)ProjectionStack.CurrentViewport.Value.Height / viewportTransform.Height);
            return viewportTransform;
        }

Usage Example

Beispiel #1
0
        public static QFont FromQFontFile(string filePath, float downSampleFactor, QFontLoaderConfiguration loaderConfig = null, ProjectionStack proj = null)
        {
            if (loaderConfig == null)
                loaderConfig = new QFontLoaderConfiguration();

            QFont qfont = new QFont();
            if (proj != null)
                qfont.ProjectionStack = proj;

            TransformViewport? transToVp = null;
            float fontScale = 1f;
            if (loaderConfig.TransformToCurrentOrthogProjection)
                transToVp = qfont.OrthogonalTransform(out fontScale);

            qfont.fontData = Builder.LoadQFontDataFromFile(filePath, downSampleFactor * fontScale, loaderConfig);

            if (loaderConfig.ShadowConfig != null)
                qfont.Options.DropShadowActive = true;
            if (transToVp != null)
                qfont.Options.TransformToViewport = transToVp;

            return qfont;
        }