MCPcopy Create free account
hub / github.com/DISTRHO/Cardinal / scope_time

Function scope_time

plugins/Cardinal/src/sassy/sassy_scope.cpp:254–365  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

252#endif
253
254static void scope_time(ScopeData* gScope, const float uiScale, int index)
255{
256 ImVec2 p = ImGui::GetItemRectMin();
257 const float gSamplerate = gScope->mSampleRate;
258 int cycle = gSamplerate * 10;
259 ImDrawList* dl = ImGui::GetWindowDrawList();
260 /*
261 Okay, max scale is 1 second, so..
262 */
263 int samples = (int)(gSamplerate * gScope->mTimeScale);
264
265 scope_grid(uiScale);
266
267 int ofs = scope_sync(gScope, index);
268
269 if (samples > grid_size)
270 {
271 for (int j = 0; j < 4; j++)
272 {
273 if (gScope->mCh[j].mEnabled)
274 {
275 float* graphdata = gScope->mCh[j].mData;
276 ImVec2 vert[grid_size];
277 for (int i = 0; i < grid_size; i++)
278 {
279 float v0 = -graphdata[(index - ofs + i * samples / grid_size + cycle) % cycle];
280 float v1 = -graphdata[(index - ofs + (i + 1) * samples / grid_size + cycle) % cycle];
281 v0 = v0 * gScope->mCh[j].mScale - gScope->mCh[j].mOffset;
282 v1 = v1 * gScope->mCh[j].mScale - gScope->mCh[j].mOffset;
283 vert[i].x = p.x + i * uiScale;
284 vert[i].y = p.y + (grid_size / 2 + v0 * grid_quarter_size) * uiScale;
285 }
286 float v0 = p.y + (grid_size / 2 + (-gScope->mCh[j].mOffset) * grid_quarter_size) * uiScale;
287 dl->Flags = 0;
288 for (int i = 0; i < grid_size-1; i++)
289 {
290 ImVec2 quad[4];
291 quad[0] = ImVec2(vert[i].x, v0);
292 quad[1] = ImVec2(vert[i].x, vert[i].y);
293 quad[2] = ImVec2(vert[i + 1].x, vert[i + 1].y);
294 quad[3] = ImVec2(vert[i + 1].x, v0);
295 dl->AddConvexPolyFilled(quad, 4, (gScope->colors[j] & 0xffffff) | 0x3f000000 );
296
297 }
298
299 if (gScope->mTimeScale < 0.1)
300 {
301 dl->Flags = ImDrawListFlags_AntiAliasedLines;
302 dl->AddPolyline(vert, grid_size, gScope->colors[j], false, 2 * uiScale);
303 }
304 else
305 {
306 dl->Flags = ImDrawListFlags_AntiAliasedLines;
307 dl->AddPolyline(vert, grid_size, gScope->colors[j], false, 1);
308
309 }
310 }
311 }

Callers 1

do_show_scope_windowFunction · 0.85

Calls 8

scope_gridFunction · 0.85
scope_syncFunction · 0.85
ImVec2Function · 0.85
AddConvexPolyFilledMethod · 0.80
AddPolylineMethod · 0.80
AddCircleFilledMethod · 0.80
AddLineMethod · 0.80
AddTextMethod · 0.80

Tested by

no test coverage detected