ThoughtWorks.QRCode/ThoughtWorks/QRCode/Codec/Reader/Pattern/AlignmentPattern.cs

(开头部分) 9KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

namespace ThoughtWorks.QRCode.Codec.Reader.Pattern
{
    using System;
    using ThoughtWorks.QRCode.Codec.Util;
    using ThoughtWorks.QRCode.ExceptionHandler;
    using ThoughtWorks.QRCode.Geom;

    public class AlignmentPattern
    {
        internal const int RIGHT = 1;
        internal const int BOTTOM = 2;
        internal const int LEFT = 3;
        internal const int TOP = 4;
        internal static DebugCanvas canvas = QRCodeDecoder.Canvas;
        internal Point[][] center;
        internal int patternDistance;

        internal AlignmentPattern(Point[][] center, int patternDistance)
        {
            this.center = center;
            this.patternDistance = patternDistance;
        }

        public static AlignmentPattern findAlignmentPattern(bool[][] image, FinderPattern finderPattern)
        {
            Point[][] logicalCenters = getLogicalCenter(finderPattern);
            int patternDistance = logicalCenters[1][0].X - logicalCenters[0][0].X;
            return new AlignmentPattern(getCenter(image, finderPattern, logicalCenters), patternDistance);
        }

        public virtual Point[][] getCenter() => 
            this.center;

        internal static Point[][] getCenter(bool[][] image, FinderPattern finderPattern, Point[][] logicalCenters)
        {
            int modulePitch = finderPattern.getModuleSize();
            Axis axis = new Axis(finderPattern.getAngle(), modulePitch);
            int length = logicalCenters.Length;
            Point[][] pointArray = new Point[length][];
            for (int i = 0; i < length; i++)
            {
                pointArray[i] = new Point[length];
            }
            axis.Origin = finderPattern.getCenter(0);
            pointArray[0][0] = axis.translate(3, 3);
            canvas.drawCross(pointArray[0][0], Color_Fields.BLUE);
            axis.Origin = finderPattern.getCenter(1);
            pointArray[length - 1][0] = axis.translate(-3, 3);
            canvas.drawCross(pointArray[length - 1][0], Color_Fields.BLUE);
            axis.Origin = finderPattern.getCenter(2);
            pointArray[0][length - 1] = axis.translate(3, -3);
            canvas.drawCross(pointArray[0][length - 1], Color_Fields.BLUE);
            Point point = pointArray[0][0];
            for (int j = 0; j < length; j++)
            {
                for (int k = 0; k < length; k++)
                {
                    if ((((k != 0) || (j != 0)) && ((k != 0) || (j != (length - 1)))) && ((k != (length - 1)) || (j != 0)))
                    {
                        Point point2 = null;
后面还有 148 行代码,解锁后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。