Esempio n. 1
0
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);
}
Esempio n. 2
0
    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);
            }
        })));
Esempio n. 3
0
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);
}
Esempio n. 4
0
    /** 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());
    }
Esempio n. 5
0
 /** 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());
     }
 }
Esempio n. 6
0
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);
}
Esempio n. 7
0
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);
}
Esempio n. 8
0
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);
	}
}
Esempio n. 9
0
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);
}
Esempio n. 10
0
    /** 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);
        }
    }
Esempio n. 11
0
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);
}
Esempio n. 12
0
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);
}
Esempio n. 13
0
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--;
}
Esempio n. 14
0
/* 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;
}
Esempio n. 15
0
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);
	}
}
Esempio n. 16
0
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);
}
Esempio n. 17
0
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);
}
Esempio n. 18
0
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);
}
Esempio n. 19
0
 void FileChooser::MOD_ACTION_SIG(launcher_start)
 {
     execute_event(launcher_started)();
 }
Esempio n. 20
0
    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;
            }
        }

    }