Commit graph

15 commits

Author SHA1 Message Date
Sophie Herold
1b2dde79b6 decoder: Use glycin for image loading expect SVG
This gives us sandboxed image decoding and others the
option to extend Loupe with other image formats.
2023-06-07 20:21:28 +00:00
Sophie Herold
f80ec7db56 decoder: Use image-rs, libheif-rs, librsvg
This adds proper support for a lot of image formats including SVGs.
It will be the basis for many features to come. The technical core
is an asynchronous renderer that can arrange textures in smaller tiles
which might be generated on demand.

Closes #34, #40, #41, #49

Basis for fixing the following issues #7, #27, #36, #43, #68, #71
2023-03-04 21:48:51 -05:00
Christopher Davis
5bcf534142 build: Add ci profile that uses --release
As we add more rust crates in performance-critical places,
we run into some performance issues with debug builds.
This makes it hard to get a good feel for the performance
of the application, as something may be slow simply because
it's not been optimized by the compiler.

This commit adds a ci profile to our meson options,
and adjusts our CI configuration to use it. Regular
builds should continue to use the development profile.

Also renames `default` to `release`
2023-03-01 13:05:19 -05:00
Sophie Herold
3b08851cce CI: Generate code docs and publish for main 2023-01-26 17:51:56 +01:00
Sophie Herold
73a1702c47 meson: Cleanup and fix warnings 2022-11-10 19:48:34 +00:00
Christopher Davis
d8e8541059 build: Replace deprecated build_root() and source_root() calls
Also use variables since we call these functions multiple times
- might as well cache them since they stay the same the whole
time.
2022-08-05 00:39:50 -04:00
Christopher Davis
d443107146 build: Drop join_paths() in favor of / 2022-08-05 00:39:50 -04:00
Christopher Davis
8fd63ab9b7 build: Drop custom cargo script 2022-08-05 00:39:50 -04:00
Christopher Davis
ba4661031f Implement Properties
Implement a properties sidebar. In order to prevent
the UI from freezing, we use futures to load and cancel
loading file information. We also make use of
`gdk_pixbuf` and `svg_metadata` in order to get the file's
metadata before the file fully loads, meaning there's
little to no delay between changing files and seeing
the metadata for large images.

The properties widget uses expressions and
properties to avoid glue code for setting each label,
allowing us to have a clean separation between UI
and data.
2022-08-02 19:31:44 -04:00
Christopher Davis
2aa480eee5 widgets: Rework image_view with AdwCarousel, add ImagePage
Previously we loaded images synchronously and manually
changed `LpImage`. This could cause freezes when loading
large images and SVGs. We also had no proper feedback for
when a corrupted or unsupported image was loaded.

This commit introduces a major rework to how we handle
images and the gallery. It introduces a swipeable gallery
that loads files asynchronously via a new widget: LpImagePage.

LpImagePage owns the file and information related to the file,
and on creation it spawns a future that either loads an error
page when it can't load something (file deleted, corrupted, or
unsupported) or the actual image via LpImage. LpImagePage
now holds the right-click popover and the associated gestures.

The gestures needed to be moved to LpImagePage in order to
rework LpImageView's overlay - instead of having an overlay
child that's a box with a few buttons, we now have the buttons
as individual overlay children. This could cause them
to overlap each other at certain sizes, but it's required
in order to allow input to reach the carousel below.

Right now this comes with a few regressions:

* Occasionally input gets blocked across the applications. It's
hard to tell if this is caused by swipes or right clicking. This
input issue can cause a crash - no Rust backtrace, so a debugger
is needed.

* The "current" page doesn't seem to be properly loaded by the
time `set_image_from_file ()` finishes, so we need to rework
resizing from image dimensions

* We need to re-implement loading different directories and
files within directories

There also seems to be an issue on touchscreens, swiping between
images on a touchscreen causes responsiveness issues not present
when swiping on a touchpad. My guess is that it's related to
the long press gesture.
2022-04-20 13:12:45 -07:00
Christopher Davis
3bb48155a0 general: Use a custom ListModel for file tracking
This is more robust than manually keeping a
vector and using indexing.
2022-02-04 16:25:44 -08:00
Maximiliano Sandoval R
13d7a21501 Implement drag source on images
Using a 128x128 thumbnail.
2022-01-09 00:22:50 -08:00
Christopher Davis
4d1141a675 widgets: split view and image
This will make implementing a more comprehensive photo view simpler.
2021-12-20 08:37:50 -08:00
Christopher Davis
84208d2887 image_view: Add directory navigation
This commit adds directory navigation to Image Viewer.
Currently it only sorts images by name, instead of following
directory sorting like the mockups.
2021-09-14 04:21:34 -07:00
Christopher Davis
f692ab5626 Initial Commit
The initial commit of gnome-image-viewer.
Things are in an MVP state, with image viewing and
opening from the desktop functional. We also can
open images externally, print them, and set them as
backgrounds.
2020-12-26 02:18:23 -08:00