| 323 | } |
| 324 | |
| 325 | void AnnotationDisplay::itemClicked(RDTreeWidgetItem *item, int column) |
| 326 | { |
| 327 | if(!m_HasGoColumn || column != 2) |
| 328 | return; |
| 329 | |
| 330 | QVariant tag = item->tag(); |
| 331 | |
| 332 | if(!tag.canConvert<AnnotationResourceTag>()) |
| 333 | return; |
| 334 | |
| 335 | AnnotationResourceTag resTag = tag.value<AnnotationResourceTag>(); |
| 336 | |
| 337 | if(resTag.resourceType == ResourceType::Buffer) |
| 338 | { |
| 339 | IBufferViewer *viewer = m_Ctx.ViewBuffer(resTag.bufferOffset, resTag.bufferSize, |
| 340 | resTag.resourceId, resTag.bufferFormat); |
| 341 | m_Ctx.AddDockWindow(viewer->Widget(), DockReference::MainToolArea, NULL); |
| 342 | } |
| 343 | else if(resTag.resourceType == ResourceType::Texture) |
| 344 | { |
| 345 | if(!m_Ctx.HasTextureViewer()) |
| 346 | m_Ctx.ShowTextureViewer(); |
| 347 | ITextureViewer *viewer = m_Ctx.GetTextureViewer(); |
| 348 | viewer->ViewTexture(resTag.resourceId, CompType::Typeless, true); |
| 349 | } |
| 350 | else if(resTag.resourceType == ResourceType::Shader) |
| 351 | { |
| 352 | ResourceId id = resTag.resourceId; |
| 353 | ICaptureContext *ctx = &m_Ctx; |
| 354 | m_Ctx.Replay().AsyncInvoke([this, ctx, id](IReplayController *r) { |
| 355 | rdcarray<ShaderEntryPoint> entries = r->GetShaderEntryPoints(id); |
| 356 | if(entries.isEmpty()) |
| 357 | return; |
| 358 | |
| 359 | const ShaderReflection *refl = r->GetShader(ResourceId(), id, entries[0]); |
| 360 | if(!refl) |
| 361 | return; |
| 362 | |
| 363 | GUIInvoke::call(this, [ctx, refl] { |
| 364 | IShaderViewer *viewer = ctx->ViewShader(refl, ResourceId()); |
| 365 | ctx->AddDockWindow(viewer->Widget(), DockReference::MainToolArea, NULL); |
| 366 | }); |
| 367 | }); |
| 368 | } |
| 369 | } |
nothing calls this directly
no test coverage detected