コード例 #1
0
        /// <summary>
        /// Rotates given model by given isomorphic transform.
        /// Bounding box for an object of the model is transformed in such a way that it is still the minimal rectangle with sides parallel to coordinate axes contaning original box rotated.
        /// </summary>
        /// <param name="model">The model to process</param>
        /// <param name="transform">The transform to apply</param>
        /// <param name="targetWidth">Target model width</param>
        /// <param name="targetHeight">Target model height</param>
        /// <returns></returns>
        public static TextGeometryModel RotateModel(this TextGeometryModel model, IsometricTransform transform, int targetWidth, int targetHeight)
        {
            var targetModel = new TextGeometryModel(new BoundingBox(0, 0, targetWidth, targetHeight), model.GridUnit);

            ModelGeometryTransformer.TransformModelGeometry(model, targetModel,
                                                            box => RotateBoundingBox(box, transform));
            return(targetModel);
        }
コード例 #2
0
        public static TextGeometryModel ScaleModel(this TextGeometryModel model, double scaleFactor)
        {
            var targetModel = new TextGeometryModel(ScaleBoundingBox(model.PageBox, scaleFactor), GridUnit.ByResolution(Round(model.GridUnit.Divisor * scaleFactor)));

            ModelGeometryTransformer.TransformModelGeometry(model, targetModel,
                                                            box => ScaleBoundingBox(box, scaleFactor));
            return(targetModel);
        }
コード例 #3
0
        /// <summary>
        /// Transforms given model by rotating it by specified set of parameters. If the set of parameters is not given (null) then it will be calculated
        /// in such a way that a resulting model contains text lines aligned strictly horizontally.
        /// </summary>
        /// <param name="model">The model to transform</param>
        /// <param name="deskewParameters">Set of transformation parameters (or null, if transformation should be determined automatically)</param>
        /// <returns>The transformed model</returns>
        public static TextGeometryModel DeskewModel(this TextGeometryModel model, DeskewParameters deskewParameters = null)
        {
            var desckewParams = deskewParameters ?? DetectDeskewParameters(model);
            var transform     = desckewParams.Transform;
            // Console.Out.WriteLine(desckewParams);

            var targetModel = new TextGeometryModel(new BoundingBox(0, 0, desckewParams.TargetWidth, desckewParams.TargetHeight), model.GridUnit);

            ModelGeometryTransformer.TransformModelGeometry(model, targetModel,
                                                            box => DeskewBoundingBox(box, transform));

            return(targetModel);
        }