91 lines
3.2 KiB
XML
91 lines
3.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
|
|
<!--
|
|
Debug visualizers for a few common ScummVM types for Visual Studio 2012 and up.
|
|
|
|
To use, copy this file into Documents\Visual Studio 20xx\Visualizers.
|
|
|
|
Known issues:
|
|
|
|
* Lists appear to be infinite (the same elements repeat over and over again).
|
|
Unfortunately, Lists don't store length information, and it's not possible to
|
|
detect whether a Node is the last one by the Node itself.
|
|
|
|
* In HashMaps, missing and dummy nodes are shown along with the useful ones.
|
|
-->
|
|
|
|
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
|
<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" MenuName="Add to Image Watch"/>
|
|
|
|
<Type Name="Graphics::Surface">
|
|
<UIVisualizer ServiceId="{A452AFEA-3DF6-46BB-9177-C0B08F318025}" Id="1" />
|
|
</Type>
|
|
|
|
<Type Name="Graphics::Surface">
|
|
<Expand>
|
|
<Synthetic Name="[type]">
|
|
<DisplayString>UINT8</DisplayString>
|
|
</Synthetic>
|
|
<Item Name="[channels]" Condition="format.bytesPerPixel==1">1</Item>
|
|
<Item Name="[channels]" Condition="format.bytesPerPixel==2">2</Item>
|
|
<Synthetic Name="[channels]" Condition="format.bytesPerPixel==4">
|
|
<DisplayString>RGBA</DisplayString>
|
|
</Synthetic>
|
|
<Item Name="[width]">w</Item>
|
|
<Item Name="[height]">h</Item>
|
|
<Item Name="[stride]">pitch</Item>
|
|
<Item Name="[data]">pixels</Item>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="Common::Array<*>">
|
|
<DisplayString>{{size = {_size}}}</DisplayString>
|
|
<Expand>
|
|
<Item Name="[size]">_size</Item>
|
|
<Item Name="[capacity]">_capacity</Item>
|
|
<ArrayItems>
|
|
<Size>_size</Size>
|
|
<ValuePointer>_storage</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="Common::HashMap<*,*,*,*>">
|
|
<DisplayString>{{ size = {_size} }}</DisplayString>
|
|
<Expand>
|
|
<Item Name="[size]">_size</Item>
|
|
<Item Name="[capacity]">_mask + 1</Item>
|
|
<Item Name="[deleted]">_deleted</Item>
|
|
<IndexListItems>
|
|
<Size>_mask + 1</Size>
|
|
<ValueNode Condition="_storage[$i] && _storage[$i] != (Common::HashMap<$T1,$T2,$T3,$T4>::Node *)1">*_storage[$i]</ValueNode>
|
|
</IndexListItems>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="Common::List<*>">
|
|
<DisplayString Condition="&_anchor == _anchor._next">{{ empty }}</DisplayString>
|
|
<DisplayString Condition="&_anchor != _anchor._next">{{ non-empty }}</DisplayString>
|
|
<Expand>
|
|
<LinkedListItems Condition="&_anchor != _anchor._next">
|
|
<HeadPointer>_anchor._next</HeadPointer>
|
|
<NextPointer>_next</NextPointer>
|
|
<ValueNode>((Common::ListInternal::Node<$T1>*)this)->_data</ValueNode>
|
|
</LinkedListItems>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="Common::String">
|
|
<DisplayString>{_str,[_size]}</DisplayString>
|
|
<StringView>_str,[_size]</StringView>
|
|
<Expand>
|
|
<Item Name="[size]">_size</Item>
|
|
<Item Condition="_str != _storage" Name="[capacity]">_extern._capacity</Item>
|
|
<Item Condition="_str != _storage" Name="[refCount]">*_extern._refCount</Item>
|
|
<ArrayItems>
|
|
<Size>_size</Size>
|
|
<ValuePointer>_str</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
</AutoVisualizer>
|