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; }
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; }