Commit Graph

9 Commits

Author SHA1 Message Date
DreamPiggy 19f45a3cf4 Feature refactor built-in coders and support animated webp on macOS (#2082)
* Refactor code. Move the C global function to a new SDWebImageCoderHelper class.

1. Create two method for animated image parse. Provide the way to allow animates on macOS
2. Create a new class called SDWebImageFrame to allow abstract usage for animated image
3. Fix EXIF orientation method will crash on iOS 7 because it’s a iOS 8 above API

* Change sd_imageLoopCount to retrieve GIF loop count for NSImage on macOS

* Adopt the refactor code, change our build-in coder with that coder helper method to reduce complexity

* Update the demo project on macOS to show animated WebP
2017-10-31 20:34:05 +02:00
DreamPiggy a0879fc049 Feature: refactor decoding code and provide decoding plugin
- open the decoding/encoding procedures to the users
- switch from hardcoded decoding/encoding to pluginable decoders/encoders (builtin + user created)
- `SDWebImageCodersManager` is a singleton holding an array of `SDImageCoder` (protocol). Even though a singleton is not necesarily a good pattern, in this case it eliminates dealing with passing this array around
- uses a priority queue behind scenes, which means the latest added coders have priority.
- the priority is crucial when encoding/decoding something, we go through the list and ask each coder if they can handle the current data (see `canDecodeFromData:`, `canEncodeToFormat:`, `canIncrementallyDecodeFromData:`)
- each coder must conform to this protocol `SDImageCoder` describing all the required behavior for a coder
- we provide 3 built-in coders: `SDWebImageImageIOCoder` (for JPEG, PNG, TIFF), `SDWebImageGIFCoder` (for GIF), `SDWebImageWebPCoder` (for WebP and animated WebP)
- the user of SDWebImage can create custom coders by conforming to `SDImageCoder` and adding the coders to `SDWebImageCodersManager`. See `addCoder:` or `removeCoder:` or `coders` getter to get the array
- in order to preserve backwards compatibility, the UIImage categories were preserved, calling the new coders APIs described above
2017-10-16 19:52:18 +03:00
Bogdan Poplauschi d9f7cf417b Fixed #1776 Umbrella header warning for the FLAnimatedImage (while using Carthage) - replaces #1781 2017-07-31 14:19:02 +03:00
Bogdan Poplauschi f1a19df721 Added SDImageCacheConfig.h and UIView+WebCache.h to the umbrella header 2016-09-30 09:33:06 +03:00
Bogdan Poplauschi f5171b3ba8 Added tvOS demo 2016-06-13 01:13:46 +03:00
Bogdan Poplauschi 442b134206 OSX Example 2016-06-13 00:09:55 +03:00
Bogdan Poplauschi 4c6eb5e72e OSX compatibility and target. (NSImage+WebCache) for UIImage compatibility
Clarified and simplified the usage of TARGET_OS_* macros. Added SD_MAC, SD_UIKIT, SD_IOS, SD_TV, SD_WATCH.
Updated Travis CI
2016-06-12 23:23:53 +03:00
Bogdan Poplauschi 94c1ec3ed0 Revisited all copyright comments and decided for just one format 2016-06-01 15:53:08 +03:00
Bogdan Poplauschi e3ba4110a9 Renamed the schemes for consistency, dynamic frameworks are named SDWebImage instead of WebImage. Updated the Tests Podfile + project. Renamed the WebImage.h to SDWebImage.h to match the framework naming 2016-05-08 22:59:32 +03:00