## Release history

Release history — Major changes between versions of GtkImageView.

This chapter lists all major changes that has occured in GtkImageView. Each version is sorted in reverse chronological order.

### Major changes in 1.6.4

- Experimental support for the build tool waf.
- Fix test failures when compiling with -O0. See r631.
- Ensure that conversions from double to int are performed correctly. Fixes for ticket31.
- Clarify what `gtk_image_view_get_draw_rect()` and `gtk_image_view_get_viewport()` returns when the view is not allocated.

### Major changes in 1.6.3

- Ensure that the header testlib.h is included in distributed tarball. Fixes ticket30.

### Major changes in 1.6.2

- Fix for ticket11. The tools mouse motion and button release event handlers should return `TRUE` if they handled the event themselves.
- Fix for ticket29. The static image is displayed instead of the first frame of an animation in case that animation only has one frame. This helps make progressive loading work better.
- Fix for ticket23. To small zoom factors are disallowed which should prevent the filter matrices to become rediculously large and eat up all memory.
- Horizontal scrolls should not crash GtkImageView anymore.
- `gtk_image_view_image_to_widget_rect()` ceils the size of the output rectangle. See ticket24.

### Major changes in 1.6.1

None, bugfix release only.

### Major changes in 1.6.0

- `gtk_image_view_image_to_widget_rect()` was added to `GtkImageView`. It is a utility function useful determining where on the widget a certain part of the image is.
- The function `gtk_image_view_damage_pixels()` was added. It is supposed to be used instead of `gtk_image_view_set_pixbuf` to mark an area as damaged.
- `gtk_iimage_tool_pixbuf_changed()` got a third argument which is a pointer either to the changed rectangle in the pixbuf or `NULL`. This was needed to accomodate for the new pixel damage system.
- `ImageViewDrawer` was renamed to `GdkPixbufDrawCache` and placed in the file `gdkpixbufdrawcache.c`. It is now part of the public interface. See its documentation page for more information.
- A new function `gtk_image_view_library_version()` was added to find out the runtime version of GtkImageView.

### Major changes in 1.5.0

- `gtk_image_nav_get_pixbuf()` was added to `GtkImageNav`. It returns the downsampled pixbuf the navigator is showing or `NULL`. The function is mostly useful for testing.
- `GtkImageNav` aquired a flag variable that controls that the downsampled pixbuf is not created unless necessary. It makes the `GtkImageScrollWin` faster to instantiate, but may break ABI.

### Major changes in 1.4.0

- The function `gtk_image_view_get_draw_rect()` was added. It is a useful function used by both of the tools.
- The navigator button in `GtkImageScrollWin` now has a cute tooltip and the same prelight effect that gnome-panel has.
- Redraw speed has been improved greatly. In particular, GtkImageToolSelector and redraws caused by moving other windows on top of the widget should now be much quicker.
- Killed the `gtk_image_view_set_offset_invalidating()` function. Instead, `gtk_image_view_set_offset()` has a boolean flag which indicates whether to do an invalidating redraw or a fast scroll. This change breaks API and maybe also ABI.
- GtkFitMode was removed along with `gtk_image_view_set_fit_mode()` and `gtk_image_view_get_fit_mode()`. Since there were only two items in the enum (fit or not fit), it was much cleaner to just pass a gboolean. The accessor functions has also been renamed to `gtk_image_view_set_fitting()` and `gtk_image_view_get_fit_mode()` to reflect this new and simpler interface. This change also breaks API and perhaps even ABI.

### Major changes in 1.3.0

- The `GtkImageView` widget has undergone major internal reconstruction work. I wanted to support making rectangular selections on the view area. Selections are useful for many reasons -- selecting, cutting, cropping etc. I want to support exactly the kind of selection tool that gThumb's image crop dialog has.

  To implement this feature GtkImageView has been made extensible via aggregation. It now uses an interface called `GtkIImageTool` which encapsulats certain behaviour. This means that it will be possible to extend GtkImageView with other tools too, such as drawing tools.

  The feature isn't completed yet, but I'm checking it in anyway to avoid having to check in a super-large changeset at an even later date. See this blog post for even more details.

  There is currently two tools implemented, `GtkImageToolDragger` and `GtkImageToolSelector`. See their respective manual pages.

- The function `gtk_image_view_set_offset_invalidating()` was added. The function has the same purpose as `gtk_image_view_set_offset()`, but queues the redraw by invalidating the whole widget instead of immediately repainting. The effect is that superfluous redraws can sometimes be avoided at the expense of more cpu usage.

### Major changes in 1.2.0

- The functions `gtk_image_view_get_check_colors()` and `gtk_image_view_set_transp()` was added. These additions enable users to define how GtkImageView should render transparent parts of images with an alpha channel. See `./tests/interactive.c` for an example.

### Major changes in 1.1.0

- `gtk_image_view_set_pixbuf()` was changed to accept three parameters. The third parameter is a gboolean that defines whether to reset fit mode or not. It should almost always be TRUE.

  This change replaces the old (and undocumented) `gtk_image_view_set_pixbuf_no_repaint()` function.