Ejemplo n.º 1
0
int DxfMap::save(char *filename, int savefeatureNum, double scaleFactor)
{
    FILE   *fp;
    int    i;
    double x, y;

    for (i = 0; i < savefeatureNum; i++)
    {
        x = feature[i].y / scaleFactor;
        y = feature[i].x / scaleFactor;
        feature[i].x = x;
        feature[i].y = y;

        x = feature[i].y2 / scaleFactor;
        y = feature[i].x2 / scaleFactor;
        feature[i].x2 = x;
        feature[i].y2 = y;
    }

    if ((fp = fopen(filename, "w")) == NULL)
    {
        printf("Can't open dxf file \"%s\"\n", filename);
        return -EIO;
    }

    write_head(fp);

    for (i = 0; i < savefeatureNum; i ++)
    {
        if (feature[i].l == 0)
        {
            write_point(fp, &feature[i]);
        }
        else
        {
            write_line(fp, &feature[i]);
        }
    }

    write_eof(fp);

    fclose(fp);
    return 0;
}
Ejemplo n.º 2
0
int main(int argc, char** argv)
{
	int id = SEGID_APPLICATION;
	struct arg_arr* aarr;
	if (argc > 1){
		if (strcmp(argv[1], "-game") == 0)
			id = SEGID_GAME;
		else if (strcmp(argv[1], "-terminal") == 0)
			id = SEGID_TERMINAL;
		else if (strcmp(argv[1], "-vm") == 0)
			id = SEGID_VM;
		else{
			printf("usage: \n\tiodump to identify as normal application"
				"\n\tiodump -game to identify as game"
				"\n\tiodump -terminal to identify as terminal"
				"\n\tiodump -vm to identify as vm\n"
			);
				return EXIT_FAILURE;
			}
		}

	struct arcan_shmif_cont cont = arcan_shmif_open(
		id, SHMIF_ACQUIRE_FATALFAIL, &aarr);
	printf("open\n");

	arcan_event ev;

/* just send garbage so the correct events are being propagated */
	arcan_shmif_signal(&cont, SHMIF_SIGVID);
	printf("loop\n");
	while (arcan_shmif_wait(&cont, &ev)){
		if (ev.category == EVENT_TARGET){
			switch (ev.tgt.kind){
			case TARGET_COMMAND_BCHUNK_IN:
				printf("bchunk in\n");
				dump_eof(ev.tgt.ioevs[0].iv);
			break;
			case TARGET_COMMAND_BCHUNK_OUT:
				printf("bchunk out\n");
				write_eof(ev.tgt.ioevs[0].iv);
			break;
			case TARGET_COMMAND_MESSAGE:
				printf("message: %s\n", ev.tgt.message);
			break;
			case TARGET_COMMAND_EXIT:
				return EXIT_SUCCESS;
			default:
				printf("event: %s\n", arcan_shmif_eventstr(&ev, NULL, 0));
			break;
			}
		}
		else if (ev.category == EVENT_IO){
			switch (ev.io.datatype){
				case EVENT_IDATATYPE_TRANSLATED:
					printf("(%s)[kbd(%d):%s] %d:mask=%d,sym:%d,code:%d,utf8:%s\n",
						ev.io.label,
						ev.io.devid, ev.io.input.translated.active ? "pressed" : "released",
						(int)ev.io.subid, (int)ev.io.input.translated.modifiers,
						(int)ev.io.input.translated.keysym,
						(int)ev.io.input.translated.scancode,
						ev.io.input.translated.utf8
					);

				break;
				case EVENT_IDATATYPE_ANALOG:
					printf("(%s)[%s(%d):%d] rel: %s, v(%d){%d, %d, %d, %d}\n",
						ev.io.label,
						ev.io.devkind == EVENT_IDEVKIND_MOUSE ? "mouse" : "analog",
						ev.io.devid, ev.io.subid,
						ev.io.input.analog.gotrel ? "yes" : "no",
						(int)ev.io.input.analog.nvalues,
						(int)ev.io.input.analog.axisval[0],
						(int)ev.io.input.analog.axisval[1],
						(int)ev.io.input.analog.axisval[2],
						(int)ev.io.input.analog.axisval[3]
					);
				break;
				case EVENT_IDATATYPE_TOUCH:
					printf("(%s)[touch(%d)] %d: @%d,%d pressure: %f, size: %f\n",
					ev.io.label,
					ev.io.devid,
					ev.io.subid,
					(int) ev.io.input.touch.x,
					(int) ev.io.input.touch.y,
					ev.io.input.touch.pressure,
					ev.io.input.touch.size
				);
				break;
				case EVENT_IDATATYPE_DIGITAL:
					if (ev.io.devkind == EVENT_IDEVKIND_MOUSE)
						printf("[mouse(%d):%d], %s:%s\n", ev.io.devid,
							ev.io.subid, msub_to_lbl(ev.io.subid),
							ev.io.input.digital.active ? "pressed" : "released"
						);
					else
						printf("[digital(%d):%d], %s\n", ev.io.devid,
							ev.io.subid, ev.io.input.digital.active ? "pressed" : "released");
				break;
				default:
				break;
			}
		}
	}

	return EXIT_SUCCESS;
}