/* *createLane function * *p : a pointer to an array of strings represinting a lane * *this function will take an array of strings represinting a lane *and return a struct lane */ struct lane *createLane(char **p) { struct lane *l; char *temp; char **params; int now; int n = 0; int i; int numOfCkPts; int numOfSps; int numOfEts; l = malloc(sizeof(struct lane)); assert( l != 0); now = numberOfWords(p[n]); assert(now == 2); params = divideLine(p[n], now, MAX_STRING_LENGTH); assert(params != 0); l -> lane_id = createId(params[1]); freeCharArray(params, now); n++; now = numberOfWords(p[n]); assert(now == 2); params = divideLine(p[n], now, MAX_STRING_LENGTH); assert(params != 0); l -> number_of_waypoints = atoi(params[1]); freeCharArray(params, now); n++; temp = "lane_width"; now = numberOfWords(p[n]); params = divideLine(p[n], now, MAX_STRING_LENGTH); assert(params != 0); if(compTwoStrings(params[0], temp)){ assert(now == 2); l -> lane_width = atoi(params[1]); n++; } else l -> lane_width = -1; freeCharArray(params, now); temp = "left_boundary"; now = numberOfWords(p[n]); params = divideLine(p[n], now, MAX_STRING_LENGTH); assert(params != 0); if(compTwoStrings(params[0], temp)){ assert(now == 2); l -> left_boundary = malloc(MAX_STRING_LENGTH * sizeof(char)); stringCopy(params[1],l -> left_boundary); n++; } else l -> left_boundary = 0; freeCharArray(params, now); temp = "right_boundary"; now = numberOfWords(p[n]); params = divideLine(p[n], now, MAX_STRING_LENGTH); assert(params != 0); if(compTwoStrings(params[0], temp)){ assert(now == 2); l -> right_boundary = malloc(MAX_STRING_LENGTH * sizeof(char)); stringCopy(params[1],l -> right_boundary); n++; } else l -> right_boundary = 0; freeCharArray(params, now); numOfCkPts = 0; temp = "checkpoint"; now = numberOfWords(p[n]); params = divideLine(p[n], now, MAX_STRING_LENGTH); assert(params != 0); while(compTwoStrings(params[0], temp)){ assert(now == 3); freeCharArray(params, now); numOfCkPts++; now = numberOfWords(p[n + numOfCkPts]); params = divideLine(p[n + numOfCkPts], now, MAX_STRING_LENGTH); assert(params != 0); } freeCharArray(params, now); l -> number_of_checkpoints = numOfCkPts; if(numOfCkPts > 0) l -> checkpoints_list = malloc(numOfCkPts * sizeof(struct checkpoint)); else l -> checkpoints_list = 0; for(i = 0; i < numOfCkPts; i++){ l -> checkpoints_list[i] = createCheckpoint(p[n]); n++; } numOfSps = 0; temp = "stop"; now = numberOfWords(p[n]); params = divideLine(p[n], now, MAX_STRING_LENGTH); assert(params != 0); while(compTwoStrings(params[0], temp)){ assert(now == 2); freeCharArray(params, now); numOfSps++; now = numberOfWords(p[n + numOfSps]); params = divideLine(p[n + numOfSps], now, MAX_STRING_LENGTH); assert(params != 0); } freeCharArray(params, now); l -> number_of_stops = numOfSps; if(numOfSps > 0) l -> stops_list = malloc(numOfSps * sizeof(struct stop)); else l -> stops_list = 0; for(i = 0; i < numOfSps; i++){ l -> stops_list[i] = createStop(p[n]); n++; } numOfEts = 0; temp = "exit"; now = numberOfWords(p[n]); params = divideLine(p[n], now, MAX_STRING_LENGTH); assert(params != 0); while(compTwoStrings(params[0], temp)){ assert(now == 3); freeCharArray(params, now); numOfEts++; now = numberOfWords(p[n + numOfEts]); params = divideLine(p[n + numOfEts], now, MAX_STRING_LENGTH); assert(params != 0); } freeCharArray(params, now); l -> number_of_exits = numOfEts; if(numOfEts > 0) l -> exits_list = malloc(numOfEts * sizeof(struct stop)); else l -> exits_list = 0; for(i = 0; i < numOfEts; i++){ l -> exits_list[i] = createExit(p[n]); n++; } l -> waypoints_list = malloc( (l -> number_of_waypoints) * sizeof(struct waypoint)); assert((l -> waypoints_list) != 0); for(i = 0; i < l -> number_of_waypoints; i++){ l -> waypoints_list[i] = createWaypoint(p[n]); n++; } return l; }
bool MapHelperUniversal::keyPress(QKeyEvent *event) { Q_UNUSED(event); #if 0 Q_D(MapHelperUniversal); switch (event->key()) { case Qt::Key_Q: { if (Qt::NoModifier == event->modifiers()) { move(); qDebug() << "Move On"; } else if (Qt::ShiftModifier == event->modifiers()) { moveStop(); qDebug() << "Move Off"; } break; } case Qt::Key_W: { if (Qt::NoModifier == event->modifiers()) { rotate(); qDebug() << "Rotate On"; } else if (Qt::ShiftModifier == event->modifiers()) { rotateStop(); qDebug() << "Rotate Off"; } break; } case Qt::Key_E: { if (Qt::NoModifier == event->modifiers()) { scale(); qDebug() << "Scale On"; } else if (Qt::ShiftModifier == event->modifiers()) { scaleStop(); qDebug() << "Scalse Off"; } break; } case Qt::Key_R: { if (Qt::NoModifier == event->modifiers()) { select(); qDebug() << "Select On"; } else if (Qt::ShiftModifier == event->modifiers()) { selectStop(); qDebug() << "Select Off"; } break; } case Qt::Key_T: { if (Qt::NoModifier == event->modifiers()) { edit(); qDebug() << "Edit On"; } else if (Qt::ShiftModifier == event->modifiers()) { editStop(); qDebug() << "Edit Off"; } break; } case Qt::Key_Y: { if (Qt::NoModifier == event->modifiers()) { create(); qDebug() << "Create On"; } else if (Qt::ShiftModifier == event->modifiers()) { createStop(); qDebug() << "Create Off"; } break; } case Qt::Key_A: { qDebug() << "Custom No On"; d->customAction = 0; break; } case Qt::Key_S: { qDebug() << "Custom Move On"; d->customAction = 1; break; } case Qt::Key_D: { qDebug() << "Custom Select On"; d->customAction = 2; break; } case Qt::Key_F: { qDebug() << "Custom Edit On"; d->customAction = 4; break; } case Qt::Key_G: { qDebug() << "Custom Create On"; d->customAction = 3; break; } default: qDebug() << event; break; } QString types = ""; foreach (MapSubHelper *sub, d->subhelpers) types += QString::number(sub->type()) + " "; qDebug() << types; #endif return true; }