///---------------------------------------------------------------------- /// BGを描画する void timeline_draw_bg(tTJSVariant item, tTJSVariant view, tjs_int y, tjs_int fromTime, tjs_int toTime) { ncbPropAccessor itemObj(item); ncbPropAccessor viewObj(view); ncbPropAccessor rootObj(itemObj.GetValue(L"root", ncbTypedefs::Tag<tTJSVariant>(), 0, &rootHint)); ncbPropAccessor ownerObj(rootObj.GetValue(L"owner", ncbTypedefs::Tag<tTJSVariant>(), 0, &ownerHint)); tjs_int fps = ownerObj.GetValue(L"framePerSecond", ncbTypedefs::Tag<tjs_int>(), 0 ,&framePerSecondHint); iTJSDispatch2 *global = TVPGetScriptDispatch(); ncbPropAccessor globalObj(global); global->Release(); tjs_int TIMELINE_FRAME_WIDTH = itemObj.GetValue(L"TIMELINE_FRAME_WIDTH", ncbTypedefs::Tag<tjs_int>(), 0, &timeLineFrameWidthHint); tjs_int TIMELINE_FRAME_HEIGHT = globalObj.GetValue(L"TIMELINE_FRAME_HEIGHT", ncbTypedefs::Tag<tjs_int>(), 0, &timelineFrameHeightHint); tTJSVariant oneSecondFrameBgLayer, halfSecondFrameBgLayer, fifthFrameBgLayer, normalFrameBgLayer; // バックグラウンドを描画 for (tjs_int time = fromTime; time < toTime; time ++) { tjs_int x = time * TIMELINE_FRAME_WIDTH; tTJSVariant layer; if (time % fps == 0) { if (oneSecondFrameBgLayer.Type() == tvtVoid) oneSecondFrameBgLayer = viewObj.GetValue(L"oneSecondFrameBgLayer", ncbTypedefs::Tag<tTJSVariant>(), 0, &oneSecondFrameBgLayerHint); layer = oneSecondFrameBgLayer; } else if (time % fps * 2 == fps) { if (halfSecondFrameBgLayer.Type() == tvtVoid) halfSecondFrameBgLayer = viewObj.GetValue(L"halfSecondFrameBgLayer", ncbTypedefs::Tag<tTJSVariant>(), 0, &halfSecondFrameBgLayerHint); layer = halfSecondFrameBgLayer; } else if (time % 5 == 0) { if (fifthFrameBgLayer.Type() == tvtVoid) fifthFrameBgLayer = viewObj.GetValue(L"fifthFrameBgLayer", ncbTypedefs::Tag<tTJSVariant>(), 0, &fifthFrameBgLayerHint); layer = fifthFrameBgLayer; } else { if (normalFrameBgLayer.Type() == tvtVoid) normalFrameBgLayer = viewObj.GetValue(L"normalFrameBgLayer", ncbTypedefs::Tag<tTJSVariant>(), 0, &normalFrameBgLayerHint); layer = normalFrameBgLayer; } viewObj.FuncCall(0, L"copyRect", ©RectHint, NULL, x, y, layer, 0, 0, TIMELINE_FRAME_WIDTH, TIMELINE_FRAME_HEIGHT); } }
int ZSplitTaskUploadCommand::run( const std::vector<std::string> &input, const std::string &/*output*/, const ZJsonObject &config) { ZJsonObject dvidJson(config.value("dvid")); if (dvidJson.isEmpty()) { std::cerr << "No dvid server specified. Abort." << std::endl; return 1; } if (input.empty()) { std::cerr << "No input file specified. Abort." << std::endl; return 1; } ZDvidTarget target; target.loadJsonObject(dvidJson); if (!target.isValid()) { std::cerr << "No valide dvid server specified. Abort." << std::endl; return 1; } if (target.getBodyLabelName().empty()) { std::cerr << "No sparsevol data specified. Abort." << std::endl; return 1; } ZJsonObject docJson; docJson.load(input.front()); ZJsonArray rootObj(docJson.value("meshReview")); if (rootObj.isEmpty()) { std::cerr << "Unrecognized input format. Abort." << std::endl; return 1; } ZDvidWriter *writer = ZGlobal::GetInstance().getDvidWriterFromUrl( GET_FLYEM_CONFIG.getTaskServer()); if (writer == NULL) { std::cerr << "Unable to Initialize the task server: " << GET_FLYEM_CONFIG.getTaskServer() << std::endl; std::cerr << "Abort" << std::endl; return 1; } else { std::cout << "Task server: " << writer->getDvidTarget().getSourceString() << std::endl; } ZDvidUrl dvidUrl(target); std::cout << std::endl; std::cout << "Uploading tasks: " << std::endl << std::endl; int count = 0; for (size_t i = 0; i < rootObj.size(); ++i) { ZJsonObject obj(rootObj.value(i)); ZJsonArray markerJson(obj.value("pointMarkers")); #ifdef _DEBUG_2 std::cout << "Here"; #endif if (!markerJson.isEmpty()) { uint64_t bodyId = ZString(obj.value("file").toString()).firstUint64(); if (bodyId > 0) { ZJsonObject taskJson; ZFlyEmMisc::SetSplitTaskSignalUrl(taskJson, bodyId, target); for (size_t i = 0; i < markerJson.size(); ++i) { ZJsonObject markerObj(markerJson.value(i)); ZStroke2d stroke = ZFlyEmMisc::SyGlassSeedToStroke(markerObj); ZFlyEmMisc::AddSplitTaskSeed(taskJson, stroke); } std::string location = writer->writeServiceTask("split", taskJson); ZJsonObject entryJson; entryJson.setEntry(neutube::json::REF_KEY, location); QString taskKey = dvidUrl.getSplitTaskKey(bodyId).c_str(); writer->writeSplitTask(taskKey, taskJson); std::cout << "* Task for " << bodyId << " is saved @ " << taskKey.toStdString() << "->" << location << std::endl; ++count; } } } std::cout << std::endl; std::cout << count << " tasks uploaded." << std::endl; return 0; }