| 252 | #endif |
| 253 | |
| 254 | static 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 | } |
no test coverage detected