void udg_create_tag(double *vec) { ENode *g_node; UNDOEvent *event; char *name = "group"; uint16 group_id; uint i; event = get_next_undo_event(); event->type = UNDOET_TAG_CREATE; event->id = -1; event->event[0].tag.group[0] = 0; event->event[0].tag.tag[0] = 0; g_node = e_ns_get_node(0, UNDOGlobal.g_node); if((group_id = e_ns_get_next_tag_group(g_node, 0)) != (uint16)-1) name = e_ns_get_tag_group(g_node, group_id); for(i = 0; name[i] != 0; i++) event->event[1].tag.group[i] = name[i]; event->event[1].tag.group[i] = 0; name = "tag"; for(i = 0; name[i] != 0; i++) event->event[1].tag.tag[i] = name[i]; event->event[1].tag.tag[i] = 0; event->event[1].tag.vec[0] = vec[0]; event->event[1].tag.vec[1] = vec[1]; event->event[1].tag.vec[2] = vec[2]; event->event[1].tag.select = 0; execute_event(event, 1); }
void FileChooser::MOD_ACTION_SIG(open) { switch (type) { case Type::OPEN: dialog = clQt::invokeMethod(window, "showOpenDialog"); break; case Type::SAVE: dialog = clQt::invokeMethod(window, "showSaveAsDialog"); break; default: abort(); break; } auto &dlgObject = clMisc::deref(dialog.value<QObject*>()); lqt_connect_signal(accepted, (this)(&dlgObject)(eventExecuter), ) { auto fileUrls = dlgObject.property("fileUrls").value<QList<QVariant>>(); for (const auto &fileUrl : fileUrls) { auto url = fileUrl.value<QUrl>().path().toStdString(); execute_event(fileChosen)(url); } })));
void udg_crease_set(uint32 id, uint32 a, uint32 b, uint32 c, uint32 d) { UNDOEvent *event; if(UNDOGlobal.crease == NULL) return; event = get_next_undo_event(); event->type = UNDOET_CREASE; event->id = id; if(id < UNDOGlobal.ref_length) { event->event[0].crease.a = UNDOGlobal.crease[id * 4]; event->event[0].crease.b = UNDOGlobal.crease[id * 4 + 1]; event->event[0].crease.c = UNDOGlobal.crease[id * 4 + 2]; event->event[0].crease.d = UNDOGlobal.crease[id * 4 + 3]; }else { event->event[0].crease.a = 0; event->event[0].crease.b = 0; event->event[0].crease.c = 0; event->event[0].crease.d = 0; } event->event[1].crease.a = a; event->event[1].crease.b = b; event->event[1].crease.c = c; event->event[1].crease.d = d; execute_event(event, 1); }
/** Accept's handler. */ void Network::acceptHandler(const ClientSPtr &client, const boost::system::error_code &ec, ev_executer_arg(acceptClient)) { if (ec) BOOST_THROW_EXCEPTION(boost::system::system_error(ec)); client->setId(findId()); clients.insert(ClientMap::value_type(client->getId(), client)); execute_event(clientConnected)(client->getId()); }
/** Read's handler. */ void Network::writeHandler(const ClientSPtr &client, const boost::system::error_code &ec, unsigned bytesTransferred, ev_executer_arg(sendMessage)) { if (ec) { clients.erase(client->getId()); execute_event(connectionError)(client->getId(), boost::system::system_error(ec).what()); } }
void udg_polygon_delete(uint32 id) { UNDOEvent *event; if(UNDOGlobal.crease != 0) { event = get_next_undo_event(); event->type = UNDOET_CREASE; event->id = id; event->event[0].crease.a = UNDOGlobal.crease[id * 4]; event->event[0].crease.b = UNDOGlobal.crease[id * 4 + 1]; event->event[0].crease.c = UNDOGlobal.crease[id * 4 + 2]; event->event[0].crease.d = UNDOGlobal.crease[id * 4 + 3]; event->event[1].crease.a = UNDOGlobal.crease[id * 4]; event->event[1].crease.b = UNDOGlobal.crease[id * 4 + 1]; event->event[1].crease.c = UNDOGlobal.crease[id * 4 + 2]; event->event[1].crease.d = UNDOGlobal.crease[id * 4 + 3]; } event = get_next_undo_event(); event->type = UNDOET_POLYGON; event->id = id; event->event[0].polygon.a = UNDOGlobal.ref[id * 4]; event->event[0].polygon.b = UNDOGlobal.ref[id * 4 + 1]; event->event[0].polygon.c = UNDOGlobal.ref[id * 4 + 2]; event->event[0].polygon.d = UNDOGlobal.ref[id * 4 + 3]; event->event[1].polygon.a = -1; event->event[1].polygon.b = -1; event->event[1].polygon.c = -1; event->event[1].polygon.d = -1; { double pos_a[3]; double pos_b[3]; double pos_c[3]; // printf("polygon %u %u %u %u \n", event->event[0].polygon.a, event->event[0].polygon.b, event->event[0].polygon.c, event->event[0].polygon.d); udg_get_vertex_pos(pos_a, event->event[0].polygon.a); udg_get_vertex_pos(pos_b, event->event[0].polygon.b); la_pfx_create_dust_line(pos_a, pos_b); udg_get_vertex_pos(pos_c, event->event[0].polygon.c); la_pfx_create_dust_line(pos_c, pos_b); // printf("vertex %f %f %f\n", pos_a[0], pos_a[1], pos_a[2]); // printf("vertex %f %f %f\n", pos_b[0], pos_b[1], pos_b[2]); // printf("vertex %f %f %f\n", pos_c[0], pos_c[1], pos_c[2]); if(event->event[0].polygon.d < UNDOGlobal.vertex_length) { udg_get_vertex_pos(pos_b, event->event[0].polygon.d); // printf("vertex %f %f %f\n", pos_b[0], pos_b[1], pos_b[2]); la_pfx_create_dust_line(pos_c, pos_b); la_pfx_create_dust_line(pos_a, pos_b); }else la_pfx_create_dust_line(pos_c, pos_a); } UNDOGlobal.vertex_delete = TRUE; execute_event(event,1); }
void udg_destroy_tag(uint tag) { UNDOEvent *event; event = get_next_undo_event(); event->type = UNDOET_TAG_CREATE; event->id = -1; event->event[1].tag.group[0] = 0; event->event[1].tag.tag[0] = 0; event->event[0].tag = UNDOGlobal.tags[tag]; execute_event(event, 1); }
void udg_set_select(uint vertex, double value) { UNDOEvent *event; if(vertex < UNDOGlobal.vertex_length && UNDOGlobal.vertex[vertex * 3] != V_REAL64_MAX) { event = get_next_undo_event(); event->type = UNDOET_SELECT; event->id = vertex; event->event[0].select = UNDOGlobal.select[vertex]; event->event[1].select = value; execute_event(event, 1); } }
void udg_move_tag(uint tag, double *vec) { UNDOEvent *event; event = get_next_undo_event(); event->type = UNDOET_TAG_MOVE; event->id = tag; event->event[0].tag = UNDOGlobal.tags[tag]; event->event[1].tag = UNDOGlobal.tags[tag]; event->event[1].tag.vec[0] = vec[0]; event->event[1].tag.vec[1] = vec[1]; event->event[1].tag.vec[2] = vec[2]; execute_event(event, 1); }
/** Read's handler. */ void Network::readHandler(const ClientSPtr &client, const BufferSCPtr &buffer, const boost::system::error_code &ec, ev_executer_arg(readMessage)) { if (ec) { clients.erase(client->getId()); if (ec == boost::asio::error::connection_reset || ec == boost::asio::error::connection_aborted || ec == boost::asio::error::eof) { execute_event(clientDisconnected)(client->getId()); } else { execute_event(connectionError)(client->getId(), boost::system::system_error(ec).what()); } } else { execute_event(msgReceived)(client->getId(), buffer); } }
void udg_rename_group_func(void *user, boolean cancel) { UNDOEvent *event; uint i; if(cancel || UNDOGlobal.tag_type_in_text[0] == 0) return; event = get_next_undo_event(); event->type = UNDOET_TAG_GROUP; event->id = -1; event->event[1].tag = UNDOGlobal.tags[UNDOGlobal.tag_type_in_tag]; event->event[0].tag = UNDOGlobal.tags[UNDOGlobal.tag_type_in_tag]; for(i = 0; UNDOGlobal.tag_type_in_text[i] != 0; i++) event->event[1].tag.group[i] = UNDOGlobal.tag_type_in_text[i]; event->event[1].tag.group[i] = 0; execute_event(event, 1); }
void udg_vertex_delete(uint32 id) { UNDOEvent *event; event = get_next_undo_event(); event->type = UNDOET_VERTEX; event->id = id; event->event[0].vertex.layer = UNDOGlobal.vertex_layer; event->event[1].vertex.layer = 65535; event->event[0].vertex.x = UNDOGlobal.vertex[id * 3]; event->event[0].vertex.y = UNDOGlobal.vertex[id * 3 + 1]; event->event[0].vertex.z = UNDOGlobal.vertex[id * 3 + 2]; event->event[1].vertex.x = V_REAL64_MAX; event->event[1].vertex.y = V_REAL64_MAX; event->event[1].vertex.z = V_REAL64_MAX; execute_event(event, 1); }
void udg_redo_geometry(void) { if(UNDOGlobal.redos > 0) { uint i; i = UNDOGlobal.pos; while(UNDOGlobal.event[++UNDOGlobal.pos].type != UNDOET_STOPP) { if(UNDOGlobal.pos == ~0u) UNDOGlobal.pos = UNDOGlobal.length; execute_event(&UNDOGlobal.event[UNDOGlobal.pos], 1); } } UNDOGlobal.undos++; UNDOGlobal.redos--; }
/* returns the time (since 1970) of next event (tick) */ int check_event(int time, struct session *ses) { int tt; /* tick time */ int et; /* event time */ struct eventnode *ev; assert(ses != NULL); /* events check - that should be done in #delay */ while ((ev=ses->events) && (ev->time<=time)) { ses->events=ev->next; execute_event(ev, ses); TFREE(ev, struct eventnode); if (any_closed) return -1; } et = (ses->events) ? ses->events->time : 0; /* ticks check */ tt = ses->time0 + ses->tick_size; /* expected time of tick */ if (tt <= time) { if (ses->tickstatus) tintin_puts1("#TICK!!!", ses); if (any_closed) return -1; ses->time0 = time - (time - ses->time0) % ses->tick_size; tt = ses->time0 + ses->tick_size; } else if (ses->tickstatus && tt-ses->pretick==time && ses->tick_size>ses->pretick && time!=ses->time10) { tintin_puts1("#10 SECONDS TO TICK!!!", ses); if (any_closed) return -1; ses->time10=time; } if (ses->tickstatus && ses->tick_size>ses->pretick && tt-time>ses->pretick) tt-=ses->pretick; return (et<tt && et!=0) ? et : tt; }
void udg_destroy_edge(uint id) { if(UNDOGlobal.edge_count > id && UNDOGlobal.edge_count != 0) { UNDOEvent *event; event = get_next_undo_event(); event->type = UNDOET_EDGE; event->id = id; event->event[0].edge.a = UNDOGlobal.edges[id * 2]; event->event[0].edge.b = UNDOGlobal.edges[id * 2 + 1]; event->event[1].edge.a = -1; event->event[1].edge.b = -1; /* UNDOGlobal.edge_count--; UNDOGlobal.edges[id * 2] = UNDOGlobal.edges[UNDOGlobal.edge_count * 2]; UNDOGlobal.edges[id * 2 + 1] = UNDOGlobal.edges[UNDOGlobal.edge_count * 2 + 1]; UNDOGlobal.edge_version++; UNDOGlobal.vertex_delete = TRUE;*/ execute_event(event, 1); } }
void udg_polygon_set(uint32 id, uint32 a, uint32 b, uint32 c, uint32 d) { UNDOEvent *event; event = get_next_undo_event(); event->type = UNDOET_POLYGON; event->id = id; if(id < UNDOGlobal.ref_length) { event->event[0].polygon.a = UNDOGlobal.ref[id * 4]; event->event[0].polygon.b = UNDOGlobal.ref[id * 4 + 1]; event->event[0].polygon.c = UNDOGlobal.ref[id * 4 + 2]; event->event[0].polygon.d = UNDOGlobal.ref[id * 4 + 3]; }else event->event[0].polygon.a = -1; event->event[1].polygon.a = a; event->event[1].polygon.b = b; event->event[1].polygon.c = c; event->event[1].polygon.d = d; execute_event(event, 1); }
void udg_create_edge(uint vertex0, uint vertex1) { UNDOEvent *event; event = get_next_undo_event(); event->type = UNDOET_EDGE; event->id = UNDOGlobal.edge_count; event->event[0].edge.a = -1; event->event[0].edge.b = -1; event->event[1].edge.a = vertex0; event->event[1].edge.b = vertex1; /* if(UNDOGlobal.edge_count == UNDOGlobal.edge_alocated) { UNDOGlobal.edge_alocated += 16; UNDOGlobal.edges = realloc(UNDOGlobal.edges, (sizeof *UNDOGlobal.edges) * 2 * UNDOGlobal.edge_alocated); } UNDOGlobal.edges[UNDOGlobal.edge_count * 2] = vertex0; UNDOGlobal.edges[UNDOGlobal.edge_count * 2 + 1] = vertex1; UNDOGlobal.edge_count++; UNDOGlobal.edge_version++;*/ execute_event(event, 1); }
void udg_vertex_set(uint32 id, double *state, double x, double y, double z) { UNDOEvent *event; // int32 grid; event = get_next_undo_event(); event->type = UNDOET_VERTEX; event->id = id; if(state == NULL) event->event[0].vertex.layer = 65535; else event->event[0].vertex.layer = UNDOGlobal.vertex_layer; /* if(UNDOGlobal.grid_active); { UNDOGlobal.grid_center[0] = 0; UNDOGlobal.grid_center[1] = 0; UNDOGlobal.grid_center[2] = 0; x = (double)((uint)(x / UNDOGlobal.grid_size)) * UNDOGlobal.grid_size; y = (double)((uint)(y / UNDOGlobal.grid_size)) * UNDOGlobal.grid_size; z = (double)((uint)(z / UNDOGlobal.grid_size)) * UNDOGlobal.grid_size; }*/ event->event[1].vertex.layer = UNDOGlobal.vertex_layer; if(id < UNDOGlobal.vertex_length && state != NULL) { event->event[0].vertex.x = state[0]; event->event[0].vertex.y = state[1]; event->event[0].vertex.z = state[2]; } event->event[1].vertex.x = x; event->event[1].vertex.y = y; event->event[1].vertex.z = z; /* if(UNDOGlobal.grid_active) { grid = (uint32)(2147483647.0 * UNDOGlobal.grid_size); event->event[1].vertex.x = (event->event[1].vertex.x / grid) * grid; event->event[1].vertex.y = (event->event[1].vertex.y / grid) * grid; event->event[1].vertex.z = (event->event[1].vertex.z / grid) * grid; }*/ execute_event(event, 1); }
void FileChooser::MOD_ACTION_SIG(launcher_start) { execute_event(launcher_started)(); }
void TextMessageCreator::takeBufferPrv(const char *bufBegin, const char* bufEnd, unsigned sessionId, ev_executer_arg(takeBuffer)) { if (bufBegin == bufEnd) return; CharVectorSPtr &sessionBuffer = getSessionBuffer(sessionId, eventExecuter); const char *it = bufBegin; while (it != bufEnd) { bool criteriaMet = false; switch (criteria) { case connection::MsgReadCriteriaEnum::NLCR: for (;it != bufEnd; it++) { if (*it == '\n' || *it == '\r') { criteriaMet = true; break; } } break; case connection::MsgReadCriteriaEnum::LENGTH: { unsigned msgSize = criteriaValue; unsigned capacityLeft = msgSize - sessionBuffer->size(); if ((bufEnd - bufBegin) >= capacityLeft) { criteriaMet = true; it += capacityLeft; } else { it = bufEnd; } } break; default: abort(); break; } sessionBuffer->insert(sessionBuffer->end(), bufBegin, it); if (criteriaMet) { execute_event(messageObtained)(sessionBuffer, sessionId, messageCount++); sessionBuffer = std::make_shared<CharVector>(); sessionBuffer->reserve(bufferSize); if (criteria == connection::MsgReadCriteriaEnum::NLCR) for (; it != bufEnd && (*it == '\n' || *it == '\r'); ++it) // [test: 10<9>]; bufBegin = it; } } }