Skip to content

Releases: saket/telephoto

0.14.0

13 Nov 22:36
Compare
Choose a tag to compare

New changes

Bug fixes

  • #95: Removed explicit recycling of bitmap decoders
  • #97: Added protection against NaN velocities
  • #99: Added handling for non-existent content URIs to prevent crashes
  • #110: Added workaround for a Compose UI issue with unknown color spaces
  • ZoomableImage() will now display its contentDescription even if the image isn't loaded yet
  • Content alignment can now be updated even if the image is zoomed in
  • Prevented multiple buffering of SubSamplingImageSource.rawSource()

Deprecations

  • ZoomableContentLocation#size() is no longer used
  • SubSamplingImageState#isImageLoadedisImageDisplayed
  • SubSamplingImageState#isImageLoadedInFullQualityisImageDisplayedInFullQuality
  • ZoomableState#setContentLocation()setContentLocationSynchronously()

0.13.0

22 Aug 03:21
Compare
Choose a tag to compare

Bug fixes

  • #94: Sub-sampling does not work for images smaller than the minimum tile size in height
  • #95: IllegalStateException: getWidth called on recycled region decoder
  • #96: IllegalStateException: another transformation is already in progress

0.12.1

20 Jul 05:50
Compare
Choose a tag to compare

New changes

Bug fixes

  • Fixed a bug that prevented back buttons from working when ZoomableImage() was focused.

0.12.0

13 Jul 20:08
Compare
Choose a tag to compare

New changes

  • #78: Support for keyboard and mouse shortcuts (by @evant)
  • #67: New APIs in ZoomableState for controlling zoom from code: panBy, zoomBy, and zoomTo
  • #32: New onDoubleClick parameters in ZoomableImage() and Modifier.zoomable() for customizing double-click behavior
  • #91: Reduced minSdk to 21 (by @iwb-florien-flament)
  • Significantly reduced the amount of work required by a ZoomableImageSource by offloading the detection of bad content URIs to SubSamplingImageSource.contentUriOrNull()

Bug fixes

  • #93: NullPointerException when an image is zoomed before it is initialized
  • #50: FileNotFoundException: No content provider when disk caching of an image is disabled using Cache-Control HTTP headers.
  • Fixed infinite reloading of images when unstable image request listener are used in ZoomableAsyncImage(). This removes the need for using remember with ImageRequest.listener and ImageRequest.placeholder values.

0.11.2

28 Apr 06:51
Compare
Choose a tag to compare

Bug fixes

  • #84: Fixed an issue causing placeholders to sometimes take up the full screen (by @rharter)
  • #37: Prevent a crash in ZoomableAsyncImage() after the app's disk cache is cleared
  • #83: Correctly display single-frame GIFs

New changes

  • Increase memory cache hit rate with Coil by using Precision.INEXACT

0.10.0

14 Apr 19:24
Compare
Choose a tag to compare

Bug fixes

  • #70, #72: Correctly update ZoomableState when Modifier.zoomable() is reused
  • #71: Make sure velocity tracker tracks the same pointer
  • #81: Read maximum fling velocity from composition locals

Dependency updates

  • Compose compiler: 1.5.11
  • Compose UI: 1.6.4
  • Compose multiplatform: 1.6.4

0.9.0

25 Mar 22:58
Compare
Choose a tag to compare

Bug fixes

  • #70, #72: Zoomable modifier loses state after ZoomableState gets disposed and recreated

Dependency updates

  • Compose compiler: 1.5.10
  • Compose UI: 1.6.3
  • Compose multiplatform: 1.6.1

0.8.0

18 Feb 06:13
Compare
Choose a tag to compare

Breaking changes

  • Reordered SubSamplingImage()'s parameters to move Modifier below all required parameters.

New changes

  • Update Compose UI to 1.6.1 and Compose Multiplatform to 1.6.0-rc02
  • Introduced ZoomableState#transformedContentBounds for observing transformed content bounds. This can be used for drawing decorations around the content or performing hit tests.
  • Placeholder images now respond to click listeners. Additionally, they will swallow all other zoom gestures instead of ignoring them.
  • #3: Read color space of bitmaps from Coil and Glide.

Bug fixes

  • #60, #65: Improved detection of pinch-to-zoom gestures.
  • #8: Composables with Modifier.zoomable() are now drawn on the first frame. This fixes their broken layout preview.
  • #58: Fixed a resource leak when an image's EXIF metadata is read.
  • ZoomableState#resetZoom() now calculates the content's position on the same UI frame.
  • Images no longer flicker on start when they can't zoom-in any further.

0.7.1

18 Nov 07:14
Compare
Choose a tag to compare
  • Migrated all usages of Modifier.composed() to the new Modifier.Node architecture. This should help with performance, especially if your app uses multiple zoomable content on the same screen.
  • #54: ZoomableContentTransformation now includes additional information about the content's scale: ScaleMetadata.

Breaking changes

  • Reduced the public API surface by replacing all data classes with plain classes. These classes still implement equals and hashCode (thanks to poko), but they no longer offer any componentN() or copy() functions.

Bug fixes

  • #53: Prevent crashes when Compose UI reports the velocity of a gesture to be infinite.
  • #41: Fixed a crash where touch events received after the UI was restored would cause a division by zero error if the layout wasn't measured yet.

0.6.2

23 Sep 19:17
Compare
Choose a tag to compare

#49: Fix a crash when image size is smaller than half of canvas in width