Commit Graph

67 Commits

Author SHA1 Message Date
Přemysl Eric Janouch 604594a8f1
Prepare for parallelized colour management
This rewrite is more or less necessary for:
 - colour-managed browser thumbnails,
 - asynchronous image loading,
 - turning fiv-io into a reusable library.

Little CMS has a fairly terrible API in this regard.
2024-01-28 01:48:28 +01:00
Přemysl Eric Janouch 3c8a280546
Move colour management to its own compilation unit
Also make it apparent that CMM profiles are pointer types.

This isn't all that pretty, but it's a necessary first step.
2024-01-26 19:17:54 +01:00
Přemysl Eric Janouch ee08565389
Resolve spurious overshoot indicators
_gtk_scrolled_window_get_overshoot() decrements the page size
from the upper value before using it for comparisons.
2023-12-28 11:22:17 +01:00
Přemysl Eric Janouch b07fba0c9c
Make multi-monitor CM work better with xiccd
Let's assume the profile it picks is appropriate for all monitors.
2023-10-17 15:34:44 +02:00
Přemysl Eric Janouch 5ec5f5bdbd
Slightly optimize SVG loading 2023-07-09 10:40:32 +02:00
Přemysl Eric Janouch 840e7f172c
Colour-manage SVGs 2023-07-09 10:40:32 +02:00
Přemysl Eric Janouch 4b5b8ec9fa
Implement our own Preferences dialog
And fix a resource leak.
2023-06-24 22:13:08 +02:00
Přemysl Eric Janouch 2ff853b7e0
Improve looped animation behaviour 2023-06-24 14:36:24 +02:00
Přemysl Eric Janouch 074bd4d37f
Stop abusing Cairo user data, part 2
With the shift from cairo_surface_t, we've lost our ability
to directly render vector surfaces, but it doesn't matter.
2023-06-24 14:36:24 +02:00
Přemysl Eric Janouch add96b37a6
Stop abusing Cairo user data, part 1
This commit temporarily breaks multi-page images and animations.
2023-06-24 13:56:36 +02:00
Přemysl Eric Janouch 44f2f5d4f5
Make the mirror command intuitive 2023-03-25 11:52:33 +01:00
Přemysl Eric Janouch 9cdc641b0a
Center view rotations/flips 2022-10-03 23:00:16 +02:00
Přemysl Eric Janouch 7b88e89489
Allow dragging with the middle mouse button 2022-09-03 16:17:21 +02:00
Přemysl Eric Janouch 086dd66aa9
Add the information dialog to context menus
Images don't need to be open for ExifTool to work.

This also enables inspecting unsupported files, such as video.
2022-08-05 11:38:12 +02:00
Přemysl Eric Janouch ca51c9413b
Show parse names in Information dialog subtitles 2022-08-05 08:57:55 +02:00
Přemysl Eric Janouch 857917aa92
Make file information retrieval asynchronous
Also, make error output scrollable.
2022-08-05 08:03:37 +02:00
Přemysl Eric Janouch bb669743b6
Fix default filenames in the "Save as" dialog
- Don't assume the filesystem is in UTF-8.
 - Don't try to extract basenames directly from URIs.
2022-08-05 04:15:37 +02:00
Přemysl Eric Janouch d590d1da46
Add support for copying to clipboard 2022-08-04 00:35:22 +02:00
Přemysl Eric Janouch d1d9caaa5e
Capitalize modifier names, prefer Command on macOS
So far, the macOS special casing is only partial.

Also, GtkShortcutsWindow confusingly labels Command as Meta.
2022-08-04 00:34:05 +02:00
Přemysl Eric Janouch ea75579b33
Fix a crash with empty exiftool stderr output 2022-07-31 03:54:53 +02:00
Přemysl Eric Janouch 8437164dec
Try a bit harder to get a file's local path 2022-07-31 02:52:20 +02:00
Přemysl Eric Janouch fec64d5595
Support file information for non-local files 2022-07-31 01:14:42 +02:00
Přemysl Eric Janouch fefb4c16ac
Support file information for FUSE-mounted paths 2022-07-31 00:12:53 +02:00
Přemysl Eric Janouch dcc5b6c719
Use GSettings for a new native window toggle
Also, redo desktop files handling.
2022-07-25 19:05:27 +02:00
Přemysl Eric Janouch 817f1b6000
Support colour management on Windows
There is also an alternative WcsGetDefaultColorProfile() path
that might be necessary on some broken versions of Microsoft Windows,
which I certainly do not want to support.
2022-07-23 22:59:29 +02:00
Přemysl Eric Janouch b067c1948b
Use GDK event handling return value constants 2022-07-21 16:03:36 +02:00
Přemysl Eric Janouch 876fda4f55
Handle the long press gesture on browser items
Unfortunately, this doesn't work on X11, though Wayland seems fine.
2022-07-21 12:28:01 +02:00
Přemysl Eric Janouch 94f6938b9a
Add a key binding for keeping the zoom/position 2022-07-17 15:26:20 +02:00
Přemysl Eric Janouch bd2e929b77
Add ability to keep zoom/position when browsing 2022-07-17 13:04:29 +02:00
Přemysl Eric Janouch 9a0647fdfd
Improve the workaround for native GdkWindows
Overshooting caused the image to be one pixel taller/wider,
due to using ceil() within get_display_dimensions().
2022-07-17 11:45:02 +02:00
Přemysl Eric Janouch 47b7600f5e
Work around a mysterious no-image zoom issue 2022-07-17 09:57:28 +02:00
Přemysl Eric Janouch 8f98c623ee
Center zoom around pointer or middle of the view 2022-07-17 09:13:12 +02:00
Přemysl Eric Janouch 4efda5347c
Let FivView take care of its drag gesture
Making the GtkScrolledWindow's scrollbars draggable again.
2022-07-17 07:16:41 +02:00
Přemysl Eric Janouch 23429d9631
Implement GtkScrollable in FivView
This fixes rendering and positioning behaviour when dragging on X11,
where we aim to use a native GdkWindow.
2022-07-17 05:27:06 +02:00
Přemysl Eric Janouch c55500f51a
Support dragging the view
It would also be possible to handle this through press/motion/release
event handlers, though GtkGestureDrag is more convenient for hacking in
support for dragging to widgets not supporting GtkScrollable (yet).

There may be some undesired interactions lurking, besides the jarring
movements when dragging native GdkWindows (these are a pain).
2022-07-15 14:00:31 +02:00
Přemysl Eric Janouch 1fee920902
Make the browser scroll with touchpad on Wayland
And generally clear up scroll handling.
2022-07-15 07:35:33 +02:00
Přemysl Eric Janouch 4ca8825e02
Clean up
Use gchar when memory is allocated through GLib.
2022-06-05 13:30:53 +02:00
Přemysl Eric Janouch 788485d81e
Redirect warnings to the info bar
And speed up thumbnailing of animated images while at it.

Also, fix thumbnailing SVGs with external links.
2022-01-24 05:48:13 +01:00
Přemysl Eric Janouch 991e74b99b
Redirect image open failure messages
Pop-up dialogs are quite annoying, as is not being able to
iterate over broken images.

This will also be useful for warnings and asynchronous loading.
2022-01-24 02:48:38 +01:00
Přemysl Eric Janouch 235b14dc11
Fix a case in orientation mirroring 2022-01-23 04:15:48 +01:00
Přemysl Eric Janouch 6ce5c7c2b6
Scale SVGs accurately in the viewing widget 2022-01-23 04:15:48 +01:00
Přemysl Eric Janouch f632510d2a
Put reloading the image as its own action 2022-01-12 10:58:33 +01:00
Přemysl Eric Janouch 25dcc3b136
Handle view bindings through an action signal
This makes them adjustable.
2022-01-09 07:48:44 +01:00
Přemysl Eric Janouch 6a878fd3c4
Bump more copyright years 2022-01-07 09:53:58 +01:00
Přemysl Eric Janouch 3274b64f5a
Fix SVG thumbnailing
They're not loaded as image surfaces.
2022-01-07 09:43:28 +01:00
Přemysl Eric Janouch 685defa684
Rename the whole project shorter
There is no point in claiming speed, it turns out to be a strange focus
to have, considering the amount of available innovations to make.

The new name does not appear to be taken by anything important.
2022-01-05 04:45:46 +01:00
Přemysl Eric Janouch 380ddd540b
Convert all loading to use GFile
Now we're able to make use of GVfs, with some caveats.
2021-12-30 22:32:29 +01:00
Přemysl Eric Janouch 98bdab443a
Hardcode Exif orientation in thumbnails 2021-12-28 23:29:58 +01:00
Přemysl Eric Janouch 336053f24d
Implement trivial wide thumbnail production
Also make libwebp a required dependency.
2021-12-27 21:51:01 +01:00
Přemysl Eric Janouch e5b1a1861c
Avoid double CM in saved WebPs 2021-12-26 02:02:57 +01:00