From 59abff0d03403344619420aa0bcd9c2b28ff3522 Mon Sep 17 00:00:00 2001
From: yy1717 <fctom1215@outlook.com>
Date: 星期三, 08 四月 2020 11:06:58 +0800
Subject: [PATCH] 坐标

---
 lib/src/main/cpp/master/comm_if.cpp |  101 ++++++++++++++++++++++++++------------------------
 1 files changed, 52 insertions(+), 49 deletions(-)

diff --git a/lib/src/main/cpp/master/comm_if.cpp b/lib/src/main/cpp/master/comm_if.cpp
index 90b4b1a..2dd5537 100644
--- a/lib/src/main/cpp/master/comm_if.cpp
+++ b/lib/src/main/cpp/master/comm_if.cpp
@@ -749,69 +749,73 @@
             Document doc;
             doc.Parse(value);
             if (!doc.HasParseError()) {
-                ClearMap();
+                ClearAreaMap();
 
-                const Value &a = doc.GetArray();
+                if (doc.HasMember("items")) {
 
-                if (a.IsArray()) {
-                    for (Value::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr) {
-                        // a Map
-                        int id, type, pointNum = 0, point2Num = 0;
-                        double (*map)[2] = NULL, (*map2)[2] = NULL;
+                    const Value &a = doc["items"];
 
-                        if (itr->IsObject()) {
-                            if (itr->HasMember("id")) {
-                                const Value &s = (*itr)["id"];
-                                id = s.GetInt();
-                            }
-                            if (itr->HasMember("item")) {
-                                const Value &s = (*itr)["item"];
-                                type = s.GetInt();
-                            }
-                            if (itr->HasMember("point")) {
-                                const Value &s = (*itr)["point"];
-                                int map_index = 0;
+                    if (a.IsArray()) {
+                        for (Value::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr) {
+                            // a Map
+                            int id, type, pointNum = 0, point2Num = 0;
+                            double (*map)[2] = NULL, (*map2)[2] = NULL;
 
-                                for (Value::ConstValueIterator itr2 = s.Begin();
-                                     itr2 != s.End(); ++itr2, ++map_index) {
-                                    // 鏇茬嚎椹鹃┒鏈�2缁�
-                                    const Value &s2 = (*itr2)["x-y"];
+                            if (itr->IsObject()) {
+                                if (itr->HasMember("id")) {
+                                    const Value &s = (*itr)["id"];
+                                    id = s.GetInt();
+                                }
+                                if (itr->HasMember("item")) {
+                                    const Value &s = (*itr)["item"];
+                                    type = s.GetInt();
+                                }
+                                if (itr->HasMember("point")) {
+                                    const Value &s = (*itr)["point"];
+                                    int map_index = 0;
 
-                                    if (map_index == 0) {
-                                        int i = 0, j = 0;
-                                        pointNum = s2.Size()/2;
-                                        map = (double (*)[2]) new double[pointNum][2];
+                                    for (Value::ConstValueIterator itr2 = s.Begin();
+                                         itr2 != s.End(); ++itr2, ++map_index) {
+                                        // 鏇茬嚎椹鹃┒鏈�2缁�
+                                        const Value &s2 = (*itr2)["x-y"];
+
+                                        if (map_index == 0) {
+                                            int i = 0, j = 0;
+                                            pointNum = s2.Size() / 2;
+                                            map = (double (*)[2]) new double[pointNum][2];
 //                                        map = (double (*)[2]) malloc(pointNum * 2 * sizeof(double));
 
-                                        for (Value::ConstValueIterator itr3 = s2.Begin();
-                                             itr3 != s2.End(); ++itr3) {
-                                            map[i][j] = (*itr3).GetDouble();
-                                            if (++j == 2) {
-                                                j = 0;
-                                                i++;
+                                            for (Value::ConstValueIterator itr3 = s2.Begin();
+                                                 itr3 != s2.End(); ++itr3) {
+                                                map[i][j] = (*itr3).GetDouble();
+                                                if (++j == 2) {
+                                                    j = 0;
+                                                    i++;
+                                                }
                                             }
-                                        }
-                                    } else if (map_index == 1) {
-                                        int i = 0, j = 0;
-                                        point2Num = s2.Size()/2;
-                                        map2 = (double (*)[2]) new double[s2.Size()][2];
+                                        } else if (map_index == 1) {
+                                            int i = 0, j = 0;
+                                            point2Num = s2.Size() / 2;
+                                            map2 = (double (*)[2]) new double[s2.Size()][2];
 //                                        map2 = (double (*)[2]) malloc(point2Num * 2 * sizeof(double));
 
-                                        for (Value::ConstValueIterator itr3 = s2.Begin();
-                                             itr3 != s2.End(); ++itr3) {
-                                            map2[i][j] = (*itr3).GetDouble();
-                                            if (++j == 2) {
-                                                j = 0;
-                                                i++;
+                                            for (Value::ConstValueIterator itr3 = s2.Begin();
+                                                 itr3 != s2.End(); ++itr3) {
+                                                map2[i][j] = (*itr3).GetDouble();
+                                                if (++j == 2) {
+                                                    j = 0;
+                                                    i++;
+                                                }
                                             }
                                         }
                                     }
                                 }
-                            }
 
-                            AddMap(id, type, map, pointNum, map2, point2Num);
-                            if (map) delete []map;
-                            if (map2) delete []map2;
+                                AddAreaMap(id, type, map, pointNum, map2, point2Num);
+
+                                if (map) delete[]map;
+                                if (map2) delete[]map2;
+                            }
                         }
                     }
                 }
@@ -1006,7 +1010,6 @@
                     Value& s = doc["map_id"];
                     Value& s2 = doc["exam"];
 
-                    StartMapExam(s.GetInt(), s2.GetInt());
                 }
             }
             break;

--
Gitblit v1.8.0