/* memfile is the undo buffer */ int BKE_read_file_from_memfile(bContext *C, MemFile *memfile, ReportList *reports) { BlendFileData *bfd; bfd= BLO_read_from_memfile(CTX_data_main(C), G.main->name, memfile, reports); if (bfd) setup_app_data(C, bfd, "<memory1>"); else BKE_reports_prepend(reports, "Loading failed: "); return (bfd?1:0); }
/* sets curscene */ Main *BKE_undo_get_main(Scene **scene) { Main *mainp = NULL; BlendFileData *bfd = BLO_read_from_memfile(G.main, G.main->name, &curundo->memfile, NULL); if (bfd) { mainp = bfd->main; if (scene) *scene = bfd->curscene; MEM_freeN(bfd); } return mainp; }
/* sets curscene */ Main *BKE_undo_get_main(Scene **r_scene) { Main *mainp = NULL; BlendFileData *bfd = BLO_read_from_memfile(G.main, G.main->name, &curundo->memfile, NULL, BLO_READ_SKIP_NONE); if (bfd) { mainp = bfd->main; if (r_scene) { *r_scene = bfd->curscene; } MEM_freeN(bfd); } return mainp; }
/* memfile is the undo buffer */ int BKE_read_file_from_memfile(bContext *C, MemFile *memfile, ReportList *reports) { BlendFileData *bfd; bfd = BLO_read_from_memfile(CTX_data_main(C), G.main->name, memfile, reports); if (bfd) { /* remove the unused screens and wm */ while (bfd->main->wm.first) BKE_libblock_free(&bfd->main->wm, bfd->main->wm.first); while (bfd->main->screen.first) BKE_libblock_free(&bfd->main->screen, bfd->main->screen.first); setup_app_data(C, bfd, "<memory1>"); } else BKE_reports_prepend(reports, "Loading failed: "); return (bfd ? 1 : 0); }
/* memfile is the undo buffer */ bool BKE_blendfile_read_from_memfile( bContext *C, struct MemFile *memfile, ReportList *reports, int skip_flags) { Main *bmain = CTX_data_main(C); BlendFileData *bfd; bfd = BLO_read_from_memfile(bmain, BKE_main_blendfile_path(bmain), memfile, reports, skip_flags); if (bfd) { /* remove the unused screens and wm */ while (bfd->main->wm.first) BKE_libblock_free(bfd->main, bfd->main->wm.first); while (bfd->main->screen.first) BKE_libblock_free(bfd->main, bfd->main->screen.first); setup_app_data(C, bfd, "<memory1>", reports); } else { BKE_reports_prepend(reports, "Loading failed: "); } return (bfd != NULL); }