Commit Graph

1203 Commits

Author SHA1 Message Date
Kim Woelders f0acaee282 Merge x11_draw.c/h into x11_pixmap.c/h
Closely related, might as well combine.
2022-03-06 18:03:01 +01:00
Kim Woelders ac1d4b0520 Deal consistently with including Imlib2.h
- Always include config.h before Imlib2.h
  Needed for X_DISPLAY_MISSING.
- Always include config.h and Imlib2.h first
  Should make it more likely to spot stuff missing but required
  in Imlib2.h, like stddef.h.
  gtest.h apparently must be included before X headers though.
- Make sure we use the Imlib2.h here and not the one in /usr/include

Also ensure that the tests build when building without X.
2022-03-03 07:35:39 +01:00
Tobias Stoeckmann b70777f38a imlib2: allow compilation without x headers
Although configure can be called to ignore x headers, eventually the
compilation of api_obsolete.c fails because the configuration results
in config.h are not evaluated.

For successful compilation with `./configure --without-x` and adding
config.h I also needed stddef.h, which is added as well.
2022-03-03 07:21:04 +01:00
Kim Woelders 188cad2329 JPEG, XBM loaders: Drop pointless clearing of flag
im->flags F_HAS_ALPHA should always be clear at this point.
In any case it should not be the responsibility of the loader to clear it.
2022-02-27 08:32:47 +01:00
Kim Woelders b8e8fd5f20 Remove some unused image flags and deprecate functions referencing them
imlib_image_set_irrelevant_border() and imlib_image_set_irrelevant_alpha()
have never done anything useful.
2022-02-26 09:14:17 +01:00
Kim Woelders fb4fb24e44 Refactor image flags stuff
For improved grepability.
2022-02-26 09:09:25 +01:00
Kim Woelders ea19ed87c8 XPM loader: Reduce signature window size some more
Now back (approximately) to the size before the mmap refactoring in
88231b52, included in release 1.7.5.
2022-02-24 19:37:51 +01:00
NRK ac59f89870 XPM Loader: limit signature check to first 4KiB
this prevents the loader from spending unreasonable amount of time going
through the entire file in case someone opens a directory which might
contain large videos or files.
2022-02-24 19:37:51 +01:00
Matthias Grosser 37e8c95788 imlib2: saving progressive JPEG 2022-02-18 13:25:48 +01:00
Kim Woelders 346449a6b2 PNM, XPM loaders: Fix trouble with non-ascii characters
The loaders would quit if e.g. a comment contains a non-ascii character
(byte with MSB set).
2022-02-12 17:25:23 +01:00
Kim Woelders abc16b8c2c Add imlib_version() 2022-02-06 13:07:47 +01:00
Kim Woelders b27b625f25 HEIF loader: Header cleanups
sys/stat.h is unused.
stdio.h is more or less per convention included via loader_common.h ->
common.h.
2022-02-04 14:08:11 +01:00
Kim Woelders 2b6a2d7640 TGA loader: Make function order same as in other loaders 2022-02-04 14:02:47 +01:00
Kim Woelders 6d4c4de75a Fix gcc12 warning in __imlib_stripwhitespace()
Warning seems to be incorrect though..

In function ‘__imlib_stripwhitespace’,
    inlined from ‘__imlib_script_parse’ at ../../../../src/lib/script.c:256:21:
../../../../src/lib/script.c:53:4: error: pointer may be used after ‘free’ [-Werror=use-after-free]
   53 |    strcpy(str, tmpstr);
      |    ^~~~~~~~~~~~~~~~~~~
../../../../src/lib/script.c:54:4: note: call to ‘free’ here
   54 |    free(tmpstr);
      |    ^~~~~~~~~~~~
2022-01-29 19:59:47 +01:00
Kim Woelders 749c6ab254 Fix gcc12 warning in __imlib_ConsumeImage()
Although the warning is technically correct it is not a problem as the
address is just used to match if an ImlibImagePixmap references it.

../../../../src/lib/image.c: In function ‘__imlib_ConsumeImage’:
../../../../src/lib/image.c:111:4: error: pointer ‘im’ used after ‘free’ [-Werror=use-after-free]
  111 |    __imlib_PixmapUnrefImage(im);
      |    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../../../../src/lib/image.c:108:4: note: call to ‘free’ here
  108 |    free(im);
      |    ^~~~~~~~
2022-01-29 19:59:47 +01:00
Kim Woelders 4384b8ee43 Add some missing const qualifiers 2022-01-29 19:59:47 +01:00
Kim Woelders 9f58303ac4 Refactoring around font glyph lookup
Avoiding some code duplication.
2022-01-29 19:59:47 +01:00
Kim Woelders c74cb9f1a9 Mark obsolete TTF encoding functions as deprecated
and move them to separate file.

Haven't done anything useful for ~20 years.
2022-01-28 08:29:55 +01:00
Kim Woelders 3157181bc3 HEIF loader: Avoid memory leak when module is loaded more than once
Memory leak can be reproduced by running valgrind on test_load (which
calls imlib_flush_loaders()).
2022-01-28 08:29:55 +01:00
Kim Woelders 91a2ab9b14 SVG loader: Fix memory leak on error 2022-01-28 08:29:55 +01:00
Kim Woelders f9aca8ff43 autofoo: Sort loaders 2022-01-26 22:54:04 +01:00
Kim Woelders 5d6ed3db15 loaders.c: Add heif to known loaders 2022-01-26 20:28:06 +01:00
Kim Woelders 1c7446ee9d HEIF loader: A couple of cleanups and fixes
- No need to check fileno
  Should be valid on entry
- No need for stat()
  File size is passed via im
- Call __imlib_FreeData() on error like the other loaders do
2022-01-26 20:27:18 +01:00
Rishvic Pushpakaran b9668a0851 imlib2: added loader for HEIF files (uses libheif), implemented just `load2` for now
Summary: Implemented a loader for HEIF images. Uses libheif, and implemented the `load2` function as of now

Reviewers: raster

Subscribers: Colocasian, eworm, kwo

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D12267
2022-01-26 20:26:06 +01:00
Kim Woelders 5261da4a6e Move some code as suggested in source 2022-01-26 20:23:46 +01:00
Kim Woelders 60fb882dad Drop/adjust a few comments 2022-01-26 20:23:36 +01:00
Kim Woelders 31982cbe63 imlib2_view: Avoid clang error
imlib2_view.c:206:33: error: initializer element is not a compile-time constant
   static rect_t       r_prev = r_zero;
                                ^~~~~~
2022-01-21 16:32:27 +01:00
Kim Woelders 838c391093 image.c: Avoid potential compile error
gcc 11.2.1 with -pedantic:
image.c: In function ‘__imlib_LoadImage’:
image.c:567:9: error: a label can only be part of a statement and a declaration is not a statement [-Werror=pedantic]
  567 |         ImlibLoader ** loaders = __imlib_GetLoaderList();

clang 13.0.0:
image.c:567:9: error: expected expression
        ImlibLoader ** loaders = __imlib_GetLoaderList();
        ^

Also remove pointless self-assignment.
2022-01-21 16:32:19 +01:00
Kim Woelders 510938f097 PNM loader: Fix "XV thumbnail" (P7 332) loading
Not sure this has ever worked.
2022-01-19 19:10:23 +01:00
Kim Woelders f4e8e1414b PNM loader: Fix P1 when spaces are omitted 2022-01-18 20:44:26 +01:00
Kim Woelders cd6c00b1ce Avoid redundant operations when non-existing file has no "key" 2022-01-17 13:08:58 +01:00
Kim Woelders 9afad50f97 Simplify __imlib_FileKey()
And avoid malloc when not needed.
2022-01-17 13:06:22 +01:00
Kim Woelders 8891246610 PNG loader: Add multiframe support 2022-01-16 20:53:58 +01:00
Kim Woelders 5dfccd5713 PNG loader: Rewrite to use callback API
Preparing for multiframe support.
2022-01-16 20:53:58 +01:00
Kim Woelders 83f55515fb PNG loader: Disable Imlib2-Comment stuff
Not useful, AFAICT.
2022-01-16 20:53:58 +01:00
Kim Woelders 1f883a721a Add dispose-to-previous frame handling
Dispose to previous appears to be used often by apng's.
2022-01-16 20:53:58 +01:00
Kim Woelders b26150d9f4 imlib2_load: Add no-data option
Also start using stdbool for boolean stuff.
2022-01-16 20:53:31 +01:00
Kim Woelders ffbd8bbca0 SVG loader: Avoid problems when loading the module more than once
It appears that the svg loader fails when dlopen'ed a second time,
presumably due to some issue in librsvg2:

thread '<unnamed>' panicked at 'Type RsvgHandle has already been registered', /builddir/build/BUILD/librsvg-2.52.4/vendor/glib/src/subclass/types.rs:751:13
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
fatal runtime error: failed to initiate panic, error 5

A second load of a loader will only happen if an application calls
imlib_flush_loaders(), which I don't see why regular applications would
need to do.
However, calling imlib_flush_loaders() shouldn't cause applications to
potentially fail (abort) anyway.

The failure can be avoided by dlopen'ing with RTLD_NODELETE, but that
would apply to all loaders, which doesn't seem right.
With the solution here the svg.so module is marked to be un-unloadable
which seems to solve the problem and doesn't affect other modules.
2022-01-08 16:08:38 +01:00
Kim Woelders a542fb6724 Add svg loader 2022-01-08 16:08:37 +01:00
Kim Woelders 04b8c35e17 XBM loader: Correct load2() result when no header is found
Also require that the header is found within the first 30 lines in the
file.
Otherwise we may waste some time parsing large C files.
2022-01-07 21:17:50 +01:00
Kim Woelders 564334d708 LZMA loader: Fix potential warning 2022-01-04 09:36:03 +01:00
Sören Tempel 7d60151ba9 ICO loader: Fix compilation on big endian architectures
Commit ff79901a07 refactors the
ico_read_idir function and removed the local nr variable. Unfortunately,
this variable is still used within an `#ifdef WORDS_BIGENDIAN` block on
big endian architectures as a for loop index variable. As such, the code
does presently not compile since the aforementioned commit. This patch
fixes this issue by re-introducing the variable conditionally on big
endian architectures.

Note: It would likely be cleaner to declare the nr variable as part of
the loop declaration, however, this C99 feature does not seem to be used
anywhere in the code base, hence I refrained from using it here.
2022-01-03 17:29:06 +01:00
Kim Woelders 31d6d8532c imlib2_load: Verbosity twaeks 2022-01-02 12:59:24 +01:00
Kim Woelders 8f65acf7c2 imlib2_view: Verbosity twaeks 2022-01-02 12:51:24 +01:00
Kim Woelders 86e3b4fada imlib2_grab: Print error message if saving fails 2021-12-30 06:56:35 +01:00
Kim Woelders 503e8527c3 Add lzma loader 2021-12-28 16:08:06 +01:00
Kim Woelders c880edac55 BZ2, ZLIB loaders: Move duplicated code to separate file
Also change decompressors to use mmap'ed data.
2021-12-28 16:08:06 +01:00
Kim Woelders bf93574b8b Introduce more loader return codes
Used to avoid potentially wasting time trying to load corrupt images
by trying loaders which won't recognize the image anyway.
2021-12-28 16:08:06 +01:00
Kim Woelders f3db9c99b6 imlib2_view: Rework display of animated images 2021-12-28 16:07:19 +01:00
Kim Woelders 350101ff62 GIF loader: Always set BLEND flag
... always?
2021-12-28 16:06:38 +01:00
Kim Woelders 34b54a8fc2 ICO loader: Mostly cosmetic changes (inline ico_read())
Avoids unnecessary memory allocation, simplifies error handling.
2021-12-26 12:22:20 +01:00
Kim Woelders 8bc72491e8 ICO loader: Minor optimization
Or maybe not. A decent compiler would probably do this anyway.
2021-12-26 12:22:20 +01:00
Kim Woelders 71a905d700 imlib2_view: Fix(?) animated image frame dispose handling
Still need to deal with the blend flag.
2021-12-26 11:00:14 +01:00
Kim Woelders 2bbd3dc7f9 Updates for animated image handling 2021-12-26 11:00:14 +01:00
Kim Woelders 31d5eb6dbf autofoo/loader cosmetics
Consistently place loaders in same order.
2021-12-23 17:51:24 +01:00
Kim Woelders 40b6498281 Drop some intermediate type definitions
Not helpful, IMO.
2021-12-21 06:05:32 +01:00
Kim Woelders b28d9110e4 updates: Reduce memory usage
Apparently, sizeof(struct _tile) was 4 (gcc 11.2.1) ?!?
Weird - I think that once upon a time it was 1.
Anyway, avoid having ill defined struct size.

Also, simplify logic a bit (no need to deal with .usage as bit flags.
2021-12-21 06:05:32 +01:00
Kim Woelders f9e0e92189 Loader loading: Avoid access to uninitialized load() item 2021-12-21 06:05:18 +01:00
Kim Woelders f1bef7ae01 debug: Avoid use of uninitialized data 2021-12-21 06:05:18 +01:00
Kim Woelders 82bbd0a278 Indent 2021-12-21 06:05:18 +01:00
Kim Woelders 6ce28a9380 ICO loader: Debug tweaks 2021-12-19 14:58:43 +01:00
Kim Woelders 179d3b7e05 GIF loader: Multiframe support 2021-12-19 14:58:43 +01:00
Kim Woelders bdfcc554ed GIF loader: Some refactoring, add debug 2021-12-19 14:58:43 +01:00
Kim Woelders 7a0022684d ICO loader: Multiframe support 2021-12-19 14:58:43 +01:00
Kim Woelders b2ac97d93a WEBP loader: Multiframe support 2021-12-19 14:58:43 +01:00
Kim Woelders 549ff77b85 debug: Add DL macro for additional loader debug 2021-12-19 14:58:43 +01:00
Kim Woelders f09d3d022a imlib2_view: Add support for multiframe images 2021-12-19 14:58:43 +01:00
Kim Woelders fdd6419fe4 imlib2_load: Add support for multiframe images 2021-12-19 14:58:43 +01:00
Kim Woelders d105b29017 Enable caching for multiframe images 2021-12-19 14:58:43 +01:00
Kim Woelders 1a57db7dcb Add support for multiframe (animated) images 2021-12-19 14:58:43 +01:00
Kim Woelders d792aaa130 imlib2_view: Fix caching option
As imlib2_view did rendering via the (loader) progress callback, cached
images wouldn't be rendered.
Now, when caching is enabled, we don't use progress callbacks but render
explicitly after the image is loaded.
2021-12-19 09:32:53 +01:00
Kim Woelders 343b2041cf debug: Add some image caching debug 2021-12-19 09:32:34 +01:00
Kim Woelders b5e2bd146d imlib2_view: Tweaks around timeout 2021-12-19 09:32:34 +01:00
Kim Woelders d8e2f7a32d imlib2_view: Remove some pointless function calls 2021-12-19 09:32:13 +01:00
Kim Woelders d5c23565bd imlib2_view: Refactor pixmap rendering 2021-12-18 23:05:36 +01:00
Kim Woelders eb7eee0dfc imlib2_view: Move window background image init to separate function 2021-12-18 23:05:36 +01:00
Kim Woelders f2d98a2c15 imlib2_view: Add 'r' command to refresh 2021-12-18 23:05:29 +01:00
Kim Woelders 45575222f5 imlib2_view: Cosmetics (if -> switch) 2021-12-18 23:03:28 +01:00
Kim Woelders 104f330c9f Trivial cleanups 2021-12-18 06:07:08 +01:00
Kim Woelders 52b0752af4 Pass parameters to __imlib_LoadImage() by struct
Makes it much easier to change stuff.
2021-12-18 06:07:08 +01:00
Kim Woelders 8470ecec66 Use __func__ instead of open coded function names
We are already requiring C99, at least since the recent initial context
changes.
2021-12-18 06:07:08 +01:00
Kim Woelders 89def8bab3 Drop context check/init in API functions
Obsolete as we now have an initial static one.
2021-12-10 19:29:46 +01:00
Kim Woelders 8370777a31 Make initial context static
Avoids having to check on every API function call.
2021-12-08 19:12:29 +01:00
Kim Woelders 01d76b56a0 Drop context image save/restore around __imlib_Load/SaveImage() calls
Should not be necessary.
2021-12-06 14:30:30 +01:00
Kim Woelders 1216f11686 Update doc for imlib_load_image_fd() 2021-12-06 07:08:06 +01:00
Kim Woelders 273a7aaac3 Refactor condition for using assembly functions
Makes it easier to override the decision for testing.

Setting IMLIB2_ASM_OFF will now disable use of assembly functions.
2021-12-04 15:14:50 +01:00
Kim Woelders b1208a1333 Refactoring around mmx and scaling function calls
Move call to __imlib_Scale_mmx_AARGBA() into __imlib_ScaleAARGBA() and
__imlib_ScaleAARGB().

Similar to mmx/rotation handling.
2021-12-04 06:55:21 +01:00
Kim Woelders 1411f6ac69 Refactoring around mmx and rotate function calls
Move call to __imlib_mmx_RotateAA() into __imlib_RotateAA().

Avoids some code duplication.
2021-12-04 06:55:21 +01:00
Kim Woelders f935f31bad Simplify build wrt. asm files 2021-12-04 06:55:21 +01:00
Kim Woelders 8f28d7d706 blend.c: Tweaks, cleanups 2021-12-04 06:55:11 +01:00
Kim Woelders 152366c87e Avoid "exceeds maximum object size" warning
..for 32 bit arch too.
2021-12-02 18:10:18 +01:00
Kim Woelders 84343e5a61 Avoid signedness warning 2021-12-02 18:10:18 +01:00
Kim Woelders 5627edbb76 Speedup in imlib_create_scaled_image_from_drawable()
Avoid intermediate pixmap copy when scaling 1:1 with no offset.
2021-11-29 17:37:20 +01:00
Kim Woelders b2d7af466e x11_grab.c: Introduce function to get shape mask
Avoiding some code duplication.
2021-11-29 17:37:20 +01:00
Kim Woelders 314fb50e92 x11_grab.c: Cosmetics 2021-11-29 17:37:20 +01:00
Kim Woelders 5ab0fa77f1 imlib2_view: Enable grabbing/viewing drawables 2021-11-29 17:37:20 +01:00
Kim Woelders 1471e92f62 Only set MAINTAINERCLEANFILES in top-level Makefile.am
Less likely to forget one (currently in test/).
2021-11-29 17:37:20 +01:00
NRK 524d439adf WEBP loader: fix key selecting last frame
as far as i can tell, iter is being used uninitialized here leading to
reading garbage values resulting in the last frame always being selected
when key is present.
2021-11-29 17:37:20 +01:00
Kim Woelders 6e27c1e2c3 Fix y-upscaling in imlib_create_scaled_image_from_drawable() 2021-11-25 15:45:56 +01:00
Kim Woelders add72b4023 x11_grab.c: Rename source/destination variables for clarity 2021-11-25 09:17:50 +01:00
Kim Woelders 86a5a73b5e Refactor imlib_create_scaled_image_from_drawable() - take 2
The X11 stuff should be in x11_grab.c, like the
imlib_create_image_from_drawable() implementation.
2021-11-25 09:17:50 +01:00
Kim Woelders 4019015a47 Revert "Refactor imlib_create_scaled_image_from_drawable()"
This reverts commit eebe5a2747.

Got source/destination mixed up.
2021-11-25 09:16:54 +01:00
Kim Woelders eebe5a2747 Refactor imlib_create_scaled_image_from_drawable()
The X11 stuff should be in x11_grab.c, like the
imlib_create_image_from_drawable() implementation.
2021-11-23 20:33:25 +01:00
Kim Woelders 892af451f2 Trivial changes in __imlib_Grab...() function prototypes 2021-11-23 20:33:25 +01:00
Kim Woelders 63a0279785 Move pixmap stuff to x11_pixmap.c/h 2021-11-23 20:33:25 +01:00
Kim Woelders 21a4172e81 Move ImlibImagePixmap population to __imlib_AddImagePixmapToCache()
For similarity with __imlib_FindCachedImagePixmap().
2021-11-23 20:07:56 +01:00
Kim Woelders 59d6b148f5 Rename X11 related files for clarity
And only build them when BUILD_X11.
2021-11-23 20:07:56 +01:00
Kim Woelders 601cdb4d0d Remove some unneeded headers 2021-11-23 20:07:56 +01:00
Kim Woelders 688ab0edba Drop unnecessary free() NULL argument checks 2021-11-20 17:02:23 +01:00
Kim Woelders d4fa61dc50 WEBP loader: Enable loading animated images (first frame by default) 2021-11-05 17:22:01 +01:00
Kim Woelders d9e2854f23 Loader loading: Don't bother looking up load() if we have load2() 2021-11-05 17:22:01 +01:00
Kim Woelders ac1f75daf0 Loader loading: Avoid always loading all loaders
Introduce "known loaders" list associating the known loader modules
with the usual file name extensions they handle.
If file name extensions match known ones we will only load the required
loader.
2021-11-05 17:22:01 +01:00
Kim Woelders 1cf913701c Loader loading: Minor loader lookup refactoring
Split off __imlib_LookupLoadedLoader() which just does lookup in loaded
loader list.
2021-11-05 17:22:01 +01:00
Kim Woelders a0b32e292b Loader loading: Move __imlib_GetLoaderList()
Paving the way for other changes.
2021-11-05 17:22:01 +01:00
Kim Woelders b45ea50c4b Loader loading: Move to __imlib_FindBestLoaderForFormat() 2021-11-05 17:22:01 +01:00
Kim Woelders 3b2d26deac Loader loading: Tweaks 2021-11-05 17:22:01 +01:00
Kim Woelders 96426fee70 Loader cosmetics 2021-11-05 17:22:01 +01:00
Kim Woelders 59561dcb1b Introduce ARRAY_SIZE() 2021-11-05 17:22:01 +01:00
Kim Woelders 5433232308 Introduce UPDATE_FLAG()
Somewhat simpler.
2021-11-05 17:22:01 +01:00
Kim Woelders 55a27d01f8 imlib2_view: Add option to cache images 2021-11-05 17:22:01 +01:00
Kim Woelders 88231b52eb XPM loader: Use mmap() for loading 2021-10-22 19:27:47 +02:00
Kim Woelders d812457afe XBM loader: Ignore comments and other stuff in header
Add naive signature check to avoid trivial cases where we might
otherwise scan through large non-xbm file.
2021-10-22 19:27:47 +02:00
Kim Woelders 868f2434f1 XBM loader: Use mmap() for loading 2021-10-22 19:27:47 +02:00
Kim Woelders 9caccf41f6 XBM loader: Cosmetics 2021-10-22 19:27:47 +02:00
Kim Woelders 3e1783b846 XBM loader: Fix potential buffer overrun 2021-10-22 19:27:47 +02:00
Kim Woelders 59dc04fe56 PNM loader: Use mmap() for loading 2021-10-22 19:27:47 +02:00
Kim Woelders 164e628951 LBM loader: Use mmap() for loading 2021-10-22 19:27:47 +02:00
Kim Woelders 64bf73d851 LBM loader: Cleanups 2021-10-22 19:27:47 +02:00
Kim Woelders ff79901a07 ICO loader: Use mmap() for loading 2021-10-22 19:27:47 +02:00
Kim Woelders 7c0ec91fe2 ICO loader: Cosmetics 2021-10-22 19:27:47 +02:00
Kim Woelders b99b984bb8 BMP loader: Use mmap() for loading 2021-10-22 19:27:47 +02:00
Kim Woelders 902427c428 BMP loader: Cosmetics 2021-10-22 19:27:47 +02:00
Kim Woelders ffd356a43a ARGB loader: Use mmap() for loading 2021-10-22 19:27:47 +02:00
Kim Woelders 670a4a41f8 ARGB loader: Cosmetics 2021-10-22 19:27:47 +02:00
Kim Woelders a40971035e FF loader: Use mmap() for loading 2021-10-22 19:27:47 +02:00
Kim Woelders c4e4741cc8 FF loader: Cosmetics 2021-10-22 19:27:47 +02:00
Kim Woelders 51999ad031 WEBP loader: Use mmap() for loading 2021-10-22 19:27:47 +02:00
Kim Woelders 546bb20f52 WEBP loader: Cosmetics
Some variable renaming for consistency.
2021-10-22 19:27:47 +02:00
Kim Woelders b7b72ce0b5 TGA loader: Use im->fsize, cosmetics, debug 2021-10-22 19:27:47 +02:00
Kim Woelders 66c941c267 TIFF loader: Use mmap() during signature check 2021-10-22 19:27:47 +02:00
Kim Woelders 07deb8c893 PNG loader: Use mmap() during signature check 2021-10-22 19:27:47 +02:00
Kim Woelders df050d2dbc PNG loader: Cosmetics 2021-10-22 19:27:47 +02:00
Kim Woelders ae01ddf0b2 Introduce im->fsize 2021-10-22 19:27:47 +02:00
Kim Woelders 9996028e7d debug: Add some debug related to file access and image loading 2021-10-22 19:26:58 +02:00
Kim Woelders e47e32a247 debug: Infrastructure
Add some debug infrastructure.
Disabled by default, enable with --enable-debug.
When enabled, the environment variable IMLIB2_DEBUG controls the amount
of debug output.
2021-10-22 19:24:15 +02:00
Kim Woelders 5a2490eb7f imlib2_load: Use clock_gettime() when available 2021-10-22 15:41:44 +02:00
Kim Woelders e3a2bd5fa6 imlib2_view: If verbose show error message on failure 2021-10-19 09:19:37 +02:00
Kim Woelders 4e15a7974c Fix build (Imlib2.h is now built) 2021-10-08 19:43:14 +02:00
Kim Woelders 675d0084f8 imlib2_load: Add verbose option 2021-10-04 05:19:47 +02:00
Kim Woelders 1f7ef0225e Imlib.h: Add version macros 2021-09-26 17:38:09 +02:00
Kim Woelders ab52c354fe autofoo: Drop support for libungif
Obsolete for 15+ years.
2021-09-26 17:38:09 +02:00
Kim Woelders b200f57e92 JPEG loader: Parse EXIF data and handle orientation 2021-09-25 13:02:06 +02:00
Kim Woelders c5e0e786f9 JPEG loader: Cosmetics
Mostly trivial name changes to facilitate debugging.
2021-09-25 13:02:06 +02:00
Kim Woelders 46fca7c9a7 imlib2_load: Add option to use imlib_load_image_immediately() 2021-09-25 13:02:06 +02:00
Kim Woelders 5512f0a2e3 image.c: Use the LOAD_... macros to check loader return values 2021-09-16 10:54:09 +02:00
Kim Woelders adda6d7b9c GIF, TIFF, WEBP loaders: Fix loading if filename does not have usual suffix - take 2
Better solution from from Daniel Friesel <derf@finalrewind.org> / Lars
Stoltenow.
2021-09-15 19:43:48 +02:00
Kim Woelders b71221ce76 Revert "GIF, TIFF, WEBP loaders: Fix loading if filename does not have usual suffix"
This reverts commit 43f82f3bc8.
2021-09-15 19:43:48 +02:00
Kim Woelders 43f82f3bc8 GIF, TIFF, WEBP loaders: Fix loading if filename does not have usual suffix
Patch from Daniel Friesel <derf@finalrewind.org>:

---
Fix .gif loader if filename does not end in .gif

Imlib2 is currently unable to load gif images if the filename does not end in
.gif. This appears to be caused by imlib2 not resetting the file descriptor
back to 0 after trying to open the image with its different loaders.

While imlib2 does call rewind(FILE* im->fp) before invoking each loader, this
does not guarantee that the underlying FD is seeked as well. However, the GIF
loader uses the FD directly, and therefore tries to read from the middle of the
file (unless it is the first loader). This patch adds an explicit seek in the
same fashion as implemented in the TIFF loader.

Patch and debugging credits go to Lars Stoltenow.
---

Also fix same issue in TIFF and WEBP loaders.
2021-09-14 07:43:55 +02:00
Kim Woelders b78a66195f LBM loader: Fix potential out-of-bounds memory access 2021-09-14 07:42:34 +02:00
Kim Woelders dbeb622c7a WEBP loader: Rename fd variable to be same as everywhere else 2021-09-14 07:42:34 +02:00
Kim Woelders c018a7687c WEBP loader: Remove forgotten debug printout 2021-09-14 07:42:34 +02:00
Kim Woelders 3a4d6d4590 imlib2_view: Fix issue with new default scaling
Need to distinguish between scaling option value and applied scaling
when viewing multiple images.
2021-08-21 12:01:43 +02:00
Kim Woelders ecc7a342ff imlib2_view: Add some debug 2021-08-21 10:05:57 +02:00
Kim Woelders a748550fa4 imlib2_view: By default scale large images to fit on screen 2021-08-21 10:05:57 +02:00
Kim Woelders 34afe297cd imlib2_view: Cleanups 2021-08-21 10:05:57 +02:00
Kim Woelders 0497d2bb0c imlib2_view: Move property stuff to separate file
May reuse it elsewhere.
2021-08-21 10:05:57 +02:00
Kim Woelders 1a439ed4df WEBP saver: Use fopen() etc. like all other savers 2021-07-16 23:08:10 +02:00
Kim Woelders e709825314 Loaders: Remove unnecessary headers 2021-07-16 19:40:03 +02:00
Kim Woelders 3c21caea23 Correct (disabled) debug printouts 2021-07-13 09:07:27 +02:00
Kim Woelders 49af0f9d59 Add feature to build with ASAN (--enable-gcc-asan) 2021-07-13 08:55:33 +02:00
Kim Woelders 651c56bb29 Drop unused Imlib_Object_List:last 2021-07-13 08:20:11 +02:00
Kim Woelders c31a5b98a2 Cleanups: while->for loops (pixmaps list) 2021-07-10 15:44:17 +02:00
Kim Woelders 6cfa4a4505 Cleanups: while->for loops (images list) 2021-07-10 15:44:17 +02:00
Kim Woelders 7a460e6a6e Cleanups: while->for loops (im->tags list) 2021-07-10 15:44:17 +02:00
Kim Woelders 4f3da0de03 Cleanups: while->for loops (context list) 2021-07-10 15:44:17 +02:00
Kim Woelders 3c645829b4 Cleanups: while->for loops (loaders list) 2021-07-10 15:44:17 +02:00
Kim Woelders 407533ebdc TGA loader: Fix loading small images without footer
Patch by noospot <noospot@mail.de>.
2021-07-10 15:40:37 +02:00
Kim Woelders 933fc2ab1f TIFF loader: Drop use of libtiff defined types deprecated in libtiff-4.3.0
Switch to using C99 types, uint8 -> uint8_t, etc. now used by libtiff.
2021-04-30 10:04:05 +02:00
Kim Woelders c1ee164d6d autofoo: Move more to pkg-config
Facilitates testing alternative library versions.
2021-04-30 10:03:49 +02:00
Kim Woelders 27ab891c56 Fix clang-analyzer warnings - lib (less trivial) 2021-04-16 17:15:06 +02:00
Kim Woelders e82a5997ec Fix clang-analyzer warnings - lib (mostly trivial) 2021-04-16 17:15:06 +02:00
Kim Woelders 6f4dc94cc4 Fix clang-analyzer warnings - loaders (suppress bogus) 2021-04-16 17:15:06 +02:00
Kim Woelders cd1a42dd07 Fix clang-analyzer warnings - loaders (trivial) 2021-04-16 17:15:06 +02:00
Kim Woelders 652d30e8fe Fix clang-analyzer warnings - bin (trivial) 2021-04-16 17:15:06 +02:00
Kim Woelders 4fa2ad8566 LBM loader: Fix handling of missing RLE data
The missing bytes were cleared at the start of the line, not the end.
2021-04-16 17:15:06 +02:00
Kim Woelders 90c5f5a26a context.c: Fix potential segv
Also call __imlib_FlushContexts() before adding new context, not after
- It's pointless to check the new context
- Avoids (bogus) clang-analyzer warning
2021-04-13 06:56:32 +02:00
Kim Woelders bdbea7b384 Remove unused Context functions 2021-04-13 06:56:32 +02:00
Kim Woelders 1f6438a1c7 ICO loader: Enable specifying ico image index by key 2021-04-13 06:56:32 +02:00
Kim Woelders 7eb6c6388b ICO loader: Fix (disabled) debug stuff 2021-04-13 06:56:32 +02:00
Kim Woelders 11cc9ffa51 Restore file:key functionality
Broken by 07e1601cd5 (in v1.7.0).
2021-04-12 20:39:36 +02:00
Kim Woelders b215368196 Add XBM loader 2020-12-18 07:18:29 +01:00
Kim Woelders 418d19e066 rend.c: Remove some pointless lines 2020-12-13 06:45:11 +01:00
Kim Woelders f4c04168b4 Remove some unnecessary X_DISPLAY_MISSING stuff 2020-12-13 06:45:11 +01:00
Kim Woelders 381e65f567 Silence a couple of sign-compare warnings 2020-12-09 17:44:16 +01:00
Kim Woelders ae3d501f93 XPM loader: Get transparency right when doing header-only loading
We have to parse the colormap too to figure that out.
2020-12-08 20:07:48 +01:00
Kim Woelders 64df90de3d WEBP loader: Add initial signature check
Avoid potentially wasting much time when loading/checking large
non-webp files.
2020-12-06 18:09:42 +01:00
Kim Woelders e3be3eb0fc grab.c: Support 30bpp display in __imlib_GrabXImageToRGBA()
Patch by the_third.

https://phab.enlightenment.org/T8808
2020-12-06 14:16:45 +01:00
Kim Woelders 9219b2c6a3 rend.c: Fix __imlib_generic_render() when jump != 0
Patch by the_third.

https://phab.enlightenment.org/T8799
2020-12-06 14:14:09 +01:00
Daniel Kolesa 92d3153fee Fix big endian build 2020-08-09 21:00:46 +02:00
Kim Woelders 9e8978c6be Remove a couple of unused includes 2020-07-28 21:35:39 +02:00
Kim Woelders ea5da196cb Fix build without X11 2020-07-28 19:57:11 +02:00
Kim Woelders 06aa6d1bfc imlib2_load: Optionally use imlib_load_image_fd() 2020-04-14 17:47:00 +02:00
Alexander Volkov 204d994d8c Don't rescan loaders
Summary:
Loaders from a newer version of imlib2 may be incompatible with an
older version of imlib2. Thus already running applications may
stop loading images after system upgrade, which can be extremely
unpleasant for the user.

Reviewers: kwo

Reviewed By: kwo

Differential Revision: https://phab.enlightenment.org/D11678
2020-04-14 17:34:41 +02:00
Alexander Volkov 5db012a35e Introduce imlib_load_image_from_fd()
Summary:
It can be used to load files in a process, which has no access to the file,
by passing the file descriptor to it. For example, in a sandboxed process.
Also anonymous files created with O_TMPFILE or by memfd_create() can be loaded.

Reviewers: kwo

Differential Revision: https://phab.enlightenment.org/D10262
2020-03-04 17:15:23 +01:00
Kim Woelders 07e1601cd5 Reduce number of stat() calls during load
Also skip empty files entirely.
2020-03-01 06:28:28 +01:00
Kim Woelders 6c2fe14b82 Move loaders to load2() 2020-02-29 18:04:34 +01:00
Kim Woelders b9166551ac Add infrastructure for new loader entry - load2() 2020-02-29 18:04:34 +01:00
Kim Woelders 57a26386ba JPG, PNG loaders: Avoid clobber warnings - Take N+1 2020-02-29 11:25:18 +01:00
Kim Woelders c608354760 Revert "JPG, PNG loaders: Avoid clobber warnings"
This caused a segv in the jpg loader if trying to load a non-jpg image
(gcc 9.2.1 with -O2, not with -O).

This reverts commit f588650bb6.
2020-02-29 06:55:15 +01:00
Kim Woelders c913f97285 __imlib_FileExtension: Use basename if there are no dots 2020-02-27 21:20:36 +01:00
Kim Woelders ac41eae7fa GZ, BZ2 loaders: Accept more file names
E.g. ".png.gz", "png.gz", ".../png.gz".
2020-02-27 21:20:36 +01:00
Alexander Volkov 97865ad8ef GIF loader: Don't close file descriptor twice
Summary:
DGifOpenFileHandle() closes it on failure and DGifCloseFile()
closes it when working normally.

Reviewers: kwo

Differential Revision: https://phab.enlightenment.org/D11425
2020-02-26 19:06:34 +01:00
Kim Woelders 4d191f6492 ID3 loader: Some mostly cosmetic rearrangements 2020-02-23 13:26:00 +01:00
Kim Woelders 4ec88a0dda TIFF loader: Minor speedup 2020-02-23 13:26:00 +01:00
Kim Woelders b059049034 Add a couple of consts 2020-02-23 13:26:00 +01:00
Kim Woelders f588650bb6 JPG, PNG loaders: Avoid clobber warnings 2020-02-17 18:18:13 +01:00
Kim Woelders 8d9f33d365 Fix enum conversion warnings (gcc10) 2020-02-01 19:30:03 +01:00
Tobias Stoeckmann d5400cc047 ICO loader: Handle malloc failures
If not enough memory is available and a program is run on a system
which returns NULL in such cases, then treat this error gracefully.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2020-01-20 21:49:57 +01:00
Tobias Stoeckmann c95f938ff1 ICO loader: Do not crash on invalid files
If an ICO file contains icons with an excessively large amount of colors
in its color map, an integer overflow can lead to 0 byte allocations of
the color map.

If such an icon is displayed later on, the color map access leads to
out of boundary reads.

Also verify that excessively large icons are not parsed at all to prevent
out of boundary reads of raw pixel data during display.

Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2020-01-20 06:21:15 +01:00
Kim Woelders 9eaed188d2 Make ImlibLoader struct opaque
Loaders should no longer directly access it.
2020-01-11 12:56:08 +01:00
Kim Woelders 875bc82b49 Introduce __imlib_LoaderSetFormats() 2020-01-11 12:55:08 +01:00
Kim Woelders c02dc3c975 Introduce __imlib_LoadEmbedded() 2020-01-11 12:55:08 +01:00
Kim Woelders 10e21579fa Savers: Simplify progress handling 2020-01-04 15:30:20 +01:00
Kim Woelders 0f5b4fb10a Loaders: Simplify/fix progress handling
Progress handling was broken in at least bmp, gif, lbm, and png loaders.
2020-01-04 15:30:20 +01:00
Kim Woelders 87c84278ec image.c: Add infrastructure to simplify progress handling 2020-01-04 15:30:20 +01:00
Kim Woelders 9f479126f9 image.c: Remove redundant pixmap unref
Already done in __imlib_ConsumeImage().
2020-01-04 15:30:20 +01:00
Kim Woelders 495527a74e Fix loader cleanup breakage (gif) 2019-12-29 16:54:26 +01:00
Kim Woelders f4ab8e10b1 imlib2_view: Various tweaks
- Only process latest key press
- Clear to background before drawing new image
- Skip redraw of current image
2019-12-29 16:54:26 +01:00
Kim Woelders 83e7e89348 image.c: Move data_memory_func assignment to better place 2019-12-28 12:06:22 +01:00
Kim Woelders 002df3c1fa image.c: Minor refactoring of pixmap cache cleaners 2019-12-28 12:06:22 +01:00
Kim Woelders a7be91805f image.c: Enable non-dirty pixmap cache cleaning
For whatever reason this does not seem to have ever been active.
Let's activate it now.
2019-12-28 12:06:22 +01:00
Kim Woelders 6acfd27058 image.c: Move loader functions to separate file 2019-12-28 12:06:22 +01:00
Kim Woelders 02e85ee069 image.c: Move image tag functions to separate file 2019-12-28 12:06:22 +01:00
Kim Woelders 0c7464f0db image.c/h: Cleanups
- Make a number of functions static
- Shuffle prototypes around for nicer grouping
- Remove unused __imlib_SetImageAlphaFlag()
- Remove __imlib_FlushCache() prototype (not implemented)
2019-12-28 12:06:22 +01:00
Kim Woelders 6a7eb67f46 Saver cleanups
- Do exit cleanups at exit.
- Use LOAD_FAIL/SUCCESS/BREAK for save() exit code.
- Cosmetics.
2019-12-23 12:55:46 +01:00
Kim Woelders bd3aa88242 Loader cleanups
- Do exit cleanups at exit.
- Merge data load conditions.
- Use LOAD_FAIL/SUCCESS/BREAK for load() exit code.
- Cosmetics.
2019-12-23 12:07:48 +01:00
Kim Woelders 540a98870b image.c: Use loader return value, not im->w to determine load success 2019-12-23 10:53:26 +01:00
Kim Woelders 670c8428a4 image.c: Introduce __imlib_ErrorFromErrno() 2019-12-23 10:53:26 +01:00
Kim Woelders c60ad00b1e image.c: Use real_file to get file time 2019-12-23 10:53:26 +01:00
Kim Woelders 0f4c0d9453 image.c: Don't strdup() real_name when not necessary in __imlib_LoadImage() 2019-12-23 10:53:26 +01:00
Kim Woelders 2c35a349ea image.c: Rework some obscure file name stuff in __imlib_SaveImage() 2019-12-23 10:53:26 +01:00
Kim Woelders c1b2686441 image.c: Remove some unnecessary clearing of calloc'ed structs 2019-12-23 10:53:26 +01:00
Kim Woelders 0c69bb64cc image.c: Add some space for readability 2019-12-23 10:53:26 +01:00
Kim Woelders cdf64148b0 Drop the __imlib_IsRealFile() file check in __imlib_File...() functions
There should be no reason to do this everywhere.
Only keep the one used when doing an image load.
2019-12-23 06:37:00 +01:00
Kim Woelders fa670dcbd7 Refactor many __imlib_File...() functions to use common __imlib_FileStat()
And drop unused __imlib_FilePermissions()
2019-12-23 06:37:00 +01:00
Kim Woelders 57b4b12c7e Simplify __imlib_FileExtension()
__imlib_FileExtension() has (presumably by mistake) never used the
"real" file name to determine the extension so let's just drop all the
strdup'ing and return a pointer into the file string.
2019-12-23 06:37:00 +01:00
Kim Woelders 7b3b5f7f0c imlib2_load: Add repeated load option 2019-12-23 06:37:00 +01:00
Kim Woelders 55da63d700 imlib2_load: Use getopt() 2019-12-23 06:37:00 +01:00
Kim Woelders c396b32739 imlib2_load: Properly check non-full loads (load data too) 2019-12-23 06:37:00 +01:00
Kim Woelders 8e376b549f XPM loader: Major speedup for cpp > 2 2019-12-23 06:37:00 +01:00
Luiz Carlos Ramos 641dd66349 BMP loader: Fix size calculation when saving files
The sizes stored both in BMP file and bitmap headers were not considering the
padding of each row, leading to smaller values when the width was not multiple
of 4.

Fixed by including the padding in the formula.
2019-12-08 14:39:09 +01:00
Kim Woelders 48ff9e10c1 LBM loader: Fix header-only loading 2019-12-03 20:03:21 +01:00
Kim Woelders 503bce9c64 XPM loader: Minor optimization for cpp > 2 2019-12-03 17:26:24 +01:00
Kim Woelders 269e0b8572 BMP loader: Remove some bogus conditions
And tweak (disabled) debug stuff.
2019-12-03 17:26:24 +01:00
Kim Woelders 3bd4e8032c Enable specifying loader/filter paths with environment variables
Useful for testing.
2019-12-03 17:26:24 +01:00
Kim Woelders fdbf1c49e3 imlib2_view: Add progress debug options 2019-12-03 17:26:24 +01:00
Kim Woelders f9c10c19e3 imlib2_load: Optionally write to stderr instead of stdout
Sometimes useful when testing with valgrind.
2019-12-03 17:26:24 +01:00
Kim Woelders 8584b3f88a Rename imlib2_test_load to imlib2_load
imlib2_test_load was a bit long..
2019-12-03 17:26:24 +01:00
Kim Woelders 2d9511d59d Quit on 'q' or 'esc' key press in all imlib2_... test utilities
The ...free... stuff at quit seems to be needed to silence valgrind when
exiting by return from main and not by exit().
2019-12-03 17:26:24 +01:00
Kim Woelders 8bd07dbcea gz, bz2 loaders: Fix recent breakage when file name has more than two dots 2019-11-26 06:20:46 +01:00
Kim Woelders 1a0c29c873 gz loader: Use FILE, not fd
Making it more similar to the bz2 loader.
2019-11-26 06:18:48 +01:00
Kim Woelders f20038b2e7 gz, bz2 loaders: Simplify, eliminate unnecessary strdups, cosmetics
In particular, don't free the original im->real_file.
2019-11-23 07:01:37 +01:00
Kim Woelders 9b0ab12697 XPM loader: Correct signature check (avoid accessing unset data) 2019-11-22 19:08:39 +01:00
Kim Woelders 947b602cca ICO loader: Fix memory leak in error path 2019-11-17 14:52:09 +01:00
Kim Woelders baaddf9366 imlib2_view: Fix next/prev selection if last/first image is bad 2019-11-17 06:13:14 +01:00
Kim Woelders 1a6a6b6433 Remove __imlib_AllocateData() w,h args
im->w and im->h must always be set before __imlib_AllocateData() is
called due to non-immediate loading (__imlib_AllocateData() only
comes in play when the pixel data must be loaded).
2019-11-16 21:18:12 +01:00
Kim Woelders 2339dcb1cf ICO loader: Fix non-immediate loading 2019-11-16 21:09:19 +01:00
Kim Woelders 9bae2c9f02 TGA loader: Tweak error handling 2019-11-16 21:09:16 +01:00
Kim Woelders a2cb8276e5 TGA loader: Add simple 16 bpp handling
Probably not entirely correct (N alpha bits?).
2019-11-16 12:18:33 +01:00
Kim Woelders 0d0a701a96 TGA loader: Support horiontal flip 2019-11-16 12:18:33 +01:00
Kim Woelders 9cdd1bc007 TGA loader: More mostly cosmetic changes 2019-11-16 12:18:33 +01:00
Kim Woelders f01353d155 TGA loader - Mostly cosmetic refactoring 2019-11-16 12:18:33 +01:00
Kim Woelders 83243f08fa imlib2_view: Add verbose option, quit on Escape too 2019-11-16 12:17:27 +01:00
Kim Woelders d6c13ec444 imlib2_test_load: Check progress conditionally 2019-11-16 12:17:27 +01:00
Kim Woelders 6eb958fb1b imlib2_test_load: Fixup recent breakage for real 2019-11-15 17:11:12 +01:00
Olof-Joachim Frahm (欧雅福) fb0cce4caf tga loader: implement handling of palette
Summary:
implemented 8 bit color mapped images with 24/32bpp palette.

This is coming from an issue on [[ https://github.com/derf/feh/issues/491 | feh ]] to support indexed TGA images. Written by [[ https://github.com/rofl0r | rofl0r ]], I'm forwarding it because I already have the tools for submission set up.

N.b. I'm not terribly familiar with the particular code style, if there's anything to format differently I'm happy to update.

Test Plan:
- Compared [[ https://0x0.st/zgB4.tga | example file ]] with known good in GIMP, looks okay.
- Tested that said example file doesn't load without this patch (in feh, which uses Imlib2).

Reviewers: kwo

Differential Revision: https://phab.enlightenment.org/D10618
2019-11-15 17:03:05 +01:00
Kim Woelders bb42ef3f22 imlib2_view: Fix event processing bug 2019-11-10 15:11:56 +01:00
Kim Woelders 3748dd580f imlib2_view: Enable selecting next/prev using keys too 2019-11-10 15:11:56 +01:00
Kim Woelders 5d1e984e57 Simplify loader lookup functions 2019-11-10 15:11:56 +01:00
Kim Woelders 7a2769cad7 XPM loader: Accept signature not at the very start of the file 2019-11-10 15:11:56 +01:00
Kim Woelders 484bd5cc79 Eliminate READ_RGBA() 2019-11-09 12:07:15 +01:00
Kim Woelders 3e082b2310 Use macro for pixel color access in savers 2019-11-09 12:07:15 +01:00
Kim Woelders 755dc017f2 Use pixel instead of r,b,g,a in __imlib_render_str() 2019-11-09 12:07:04 +01:00
Kim Woelders e6269a9b9b Simplify pixel color handling in api.c 2019-11-09 11:32:17 +01:00
Kim Woelders 581e6baed8 Eliminate WRITE_RGBA()
Potentially causing way more memory access than needed.
2019-11-08 19:29:26 +01:00
Kim Woelders 7c426928e9 TGA loader: Refactor
Primarily make a single exit point.
2019-11-08 19:20:14 +01:00
Kim Woelders 2f228adbe1 Re-indent everything using indent-2.2.12 2019-11-08 18:57:36 +01:00
Kim Woelders d41d593e4b imlib2_test_load: Fixup after recent change 2019-11-08 18:57:36 +01:00
Kim Woelders 5e267577bd GZIP loader: Check filename before uncompress
Inspired by corresponding bz2 loader fix.

Also remove pointless call to stat().
2019-10-15 20:39:44 +02:00
Olof-Joachim Frahm (欧雅福) ff3164df37 Check filename before opening archive file.
Summary:
Decompressing should be the last step, otherwise files that can't even be loaded will take unnecessarily long only to be discarded immediately.

This is in reference to [this issue for feh](https://github.com/derf/feh/issues/477) complaining about long load times in case of accidentally trying to open a big .tar.bz2 archive.

Test Plan: Ran on sample from aforementioned ticket, observed immediate response and no further ill effects.

Reviewers: kwo

Differential Revision: https://phab.enlightenment.org/D10398
2019-10-15 20:39:44 +02:00
Kim Woelders ab918a65ac Miscellaneous imlib_test_load tweaks
- Error messages to stdout (not stderr).
- Check progress call.
- Break on error option.
2019-10-13 16:12:28 +02:00
Kim Woelders cb1b2482a3 BMP loader: Major makeover - numerous bug fixes and feature enhancements
The test images at https://entropymine.com/jason/bmpsuite were most
helpful.

Several features have NOT been implemented, including
- Non-square resolution
- "Bottom up" format
- PNG compression
- JPEG compression
- Huffman 1D (OS/2) compression
- 2 bpp (OS/2)
- BA file type (bitmap array - OS/2)
2019-10-13 16:11:13 +02:00
Kim Woelders 450463521f Rename/add byte swap macros 2019-10-11 15:28:53 +02:00
Kim Woelders 77cae4cc86 JPG loader: Refactor error handling
As part of this
- Avoid potential clobber issue in connection with setjmp/longjmp in
  load().
- Fix incorrect error handling in save().
2019-10-10 19:03:28 +02:00
Kim Woelders 675be6a527 ICO loader: Add binary flag to fopen()
As done in all other loaders.
2019-10-10 18:35:53 +02:00
Kim Woelders 7f24775df1 Fix ABI break
And indent.
2019-10-10 17:16:29 +02:00
Alexander Volkov 03665627db Allow to use custom memory management functions for loaded images
Summary:
... and add imlib_create_image_using_data_and_memory_function().

For example, it allows to load an image in one process and then
pass it through shared memory to another process without extra
memory copy.

Reviewers: kwo

Differential Revision: https://phab.enlightenment.org/D10222
2019-09-30 19:11:32 +02:00
Kim Woelders 9977ac2026 JPG loader: Fix memory leaks in error paths 2019-09-29 19:44:41 +02:00
Kim Woelders 701f87ffa6 WepP loader: Fix memory leak in error path 2019-09-29 18:40:03 +02:00
Kim Woelders 09d9a95054 Remove pointless im->data checks in loaders
im->data should always be NULL when entering the load() function.

We can therefore also remove free(im->data) calls before the buffer
is allocated.
2019-09-29 18:39:56 +02:00