当前位置: 首页>>代码示例>>C#>>正文


C# Cluster.InsertDeco方法代码示例

本文整理汇总了C#中Cluster.InsertDeco方法的典型用法代码示例。如果您正苦于以下问题:C# Cluster.InsertDeco方法的具体用法?C# Cluster.InsertDeco怎么用?C# Cluster.InsertDeco使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Cluster的用法示例。


在下文中一共展示了Cluster.InsertDeco方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: GatherIntoClusters

    /**
     * @brief Gather the separate decoded characters into clusters.
     */
    private static void GatherIntoClusters ()
    {
        while (allDecos.Count > 0) {

            /*
             * Find leftmost character.
             */
            Deco deco = allDecos.First.Value;
            allDecos.RemoveFirst ();

            bool debug = false; // (deco.x >= 1420) && (deco.x <= 1540) && (deco.y >= 2210) && (deco.y <= 2250);
            if (debug) Console.WriteLine ("GatherIntoClusters*: " + deco.x + "," + deco.y + " <" + deco.c + ">");

            /*
             * Sometimes there are stray marks around that look like ' and ..
             * Skip over them so they don't obscure a nearby legitimate number.
             * See BAB 39^07'N.
             */
            if ((deco.c == '\'') || (deco.c == '.')) continue;

            /*
             * Create a cluster for it.
             */
            Cluster cluster = new Cluster ();
            cluster.vertical = landscape;

            /*
             * Append first character to cluster and likewise with all
             * subsequent nearby characters to its right that overlap on
             * the Y axis.
             */
        useit:
            if (debug) Console.WriteLine ("GatherIntoClusters*:   " + deco.c);
            cluster.InsertDeco (deco);
            if ((deco.c == 'N') || (deco.c == 'S') || (deco.c == 'E') || (deco.c == 'W')) goto endclus;

            for (LinkedListNode<Deco> ptr = allDecos.First; ptr != null; ptr = ptr.Next) {
                Deco dd = ptr.Value;                      // scan by ascending X value
                if (debug) Console.WriteLine ("GatherIntoClusters*: ? " + dd.c + " " + dd.x + "," + dd.y);
                if (dd.x > cluster.hix + MAXGAP) break;   // if too far right, nothing more can match
                if (dd.x < cluster.hix - 2) continue;     // if too far left, just ignore it

                /*
                 * We have char dd just to the right of char deco
                 * but we don't know if they are vertically aligned.
                 *
                 * Sometimes we mis-decode an apostrophe as a dot.
                 * Eg, HOP 36^40'N
                 * So we have to fix it in context.
                 */
                int ydiff = dd.y - deco.y;
                if (dd.c == '.') {
                    if ((ydiff >= -YOVER) && (ydiff <= YOVER)) {
                        // the dot is near the top of the line of chars
                        dd.c = '\'';
                    } else {
                        ydiff += dd.h - deco.h;
                        if ((ydiff < -YOVER) || (ydiff > YOVER)) continue;
                        // the dot is near the bottom of the line of chars
                    }
                    dd.y = deco.y;
                    dd.h = deco.h;
                } else {
                    if ((ydiff < -YOVER) || (ydiff > YOVER)) continue;
                }

                /*
                 * Remove from allDecos and append to cluster.
                 */
                allDecos.Remove (ptr);
                deco = dd;
                goto useit;
            }

            /*
             * If valid size, append to list of all clusters and draw box around it.
             */
        endclus:
            if (verbose) Console.WriteLine ("cluster " + cluster.lox + "," + cluster.loy + " <" + cluster.Result + ">");
            if (cluster.IsLatLon) {
                clusters.AddLast (cluster);
            }
        }
    }
开发者ID:ajluca1984,项目名称:avare,代码行数:87,代码来源:ReadArptDgmPng.cs


注:本文中的Cluster.InsertDeco方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。