## Image Visualizer

### Introduction

The Image Visualizer shows the contents of a region of memory as an image.

### Operation

There are various things to control how the image is display.

* Starting address entry field
* Image format
* Image width
* Image height
* Refresh
* Auto Refresh

A check is done to ensure the amount of memory given to the Memory Visualizer will cover the image size. If there is a problem, it's
likely the wrong format is selected.

### Starting address entry field

The 'Starting Address' input field takes the name of a variable that is in the current Stack Frame (selected by the Stack Frame browser). This variable should result in an address. For example, take this code:
```
    int var = 10;
```
To visualize the memory for 'var', the variable should be '&var', not 'var'. As 'var' doesn't resolve to an address.

Note, the variable name can be an address. Enter the address like:
```
    0xdeadbeaf
```
It can be the result of a function in your program.
```
    myimage.pointer()
```
It can also be one of gdb' special variables. Like the program counter. Enter it like:
```
    $pc
```

### Image format.

Two supported formats are available. Others can be added easily.

* RGBA8888
* RGB888

### Image dimensions.

The image width and height, in pixels.

These fields can take a gdb expression that result with an integer.
```
    An integer value
    A function that returns an integer value
    A gdb special variable.
```
Examples are:
```
    256
    myimage.width()
    $r9
```

### Refresh

This will refresh the image since the last time.

### Auto mode

This mode will refresh the image each time Seer reaches a stopping point (when you 'step' or 'next' or reach a 'breakpoint').

### Image interaction

Available Quick keys while in the Image Visualizer:
```
    '+'   zoom in
    '-'   zoom out
    ESC   reset to default zoom level.
```

