| 6149 | } |
| 6150 | |
| 6151 | void ShaderViewer::updateVariableTooltip() |
| 6152 | { |
| 6153 | if(!m_Trace || m_States.empty()) |
| 6154 | return; |
| 6155 | |
| 6156 | ShaderVariable var; |
| 6157 | SourceVariableMapping mapping; |
| 6158 | |
| 6159 | if(!getVarFromPath(m_TooltipVarPath, &var, NULL, &mapping)) |
| 6160 | return; |
| 6161 | |
| 6162 | if(var.type != VarType::Unknown) |
| 6163 | { |
| 6164 | QString tooltip; |
| 6165 | |
| 6166 | if(var.type == VarType::Sampler || var.type == VarType::ReadOnlyResource || |
| 6167 | var.type == VarType::ReadWriteResource || var.type == VarType::GPUPointer) |
| 6168 | { |
| 6169 | tooltip = QFormatStr("%1: ").arg(var.name) + RichResourceTextFormat(m_Ctx, stringRep(var, 0)); |
| 6170 | } |
| 6171 | else if(var.type == VarType::ConstantBlock) |
| 6172 | { |
| 6173 | tooltip = QFormatStr("<pre>%1: { ... }</pre>").arg(var.name); |
| 6174 | } |
| 6175 | else |
| 6176 | { |
| 6177 | tooltip = QFormatStr("<pre>%1: %2\n").arg(var.name).arg(RowString(var, 0)); |
| 6178 | QString spacing = QString(var.name.count(), QLatin1Char(' ')); |
| 6179 | for(int i = 1; i < var.rows; i++) |
| 6180 | tooltip += QFormatStr("%1 %2\n").arg(spacing).arg(RowString(var, i)); |
| 6181 | tooltip += lit("</pre>"); |
| 6182 | } |
| 6183 | |
| 6184 | if(mapping.type != VarType::Unknown && mapping.undefinedValue) |
| 6185 | tooltip = tr("%1: <undefined value>").arg(var.name); |
| 6186 | |
| 6187 | QToolTip::showText(m_TooltipPos, tooltip); |
| 6188 | return; |
| 6189 | } |
| 6190 | else if(var.members.size() == 2 && var.members[0].type == VarType::ReadOnlyResource && |
| 6191 | var.members[1].type == VarType::Sampler) |
| 6192 | { |
| 6193 | // combined image/sampler structs |
| 6194 | QToolTip::showText(m_TooltipPos, |
| 6195 | QFormatStr("%1: %2 & %3") |
| 6196 | .arg(var.name) |
| 6197 | .arg(RichResourceTextFormat(m_Ctx, stringRep(var.members[0], 0))) |
| 6198 | .arg(RichResourceTextFormat(m_Ctx, stringRep(var.members[1], 0)))); |
| 6199 | return; |
| 6200 | } |
| 6201 | else if(!var.members.empty()) |
| 6202 | { |
| 6203 | QString tooltip = tr("%1: { ... }").arg(var.name); |
| 6204 | |
| 6205 | if(mapping.type != VarType::Unknown && mapping.undefinedValue) |
| 6206 | tooltip = tr("%1: <undefined value>").arg(var.name); |
| 6207 | |
| 6208 | // other structs |
nothing calls this directly
no test coverage detected