Skip to content

Commit 451dffc

Browse files
authored
Update to v2.13.5 (#51)
* Update to v2.13.5 ### 2.13.5 - Add _WebP_ support to Catalyst builds - See `WEBP_README.md` - Miscellaneous performance improvements - Async load the default codes to avoid main thread blockage on app launch - Tighter memory management with autorelease pools - `TIPImageFetchHelper` will now register for all image cache updates and filter on observation vs registering against specific pipelines, which avoids register/unregister locking performance impact - Add `TIPDetectImageTypeFromFile(...)` for efficient and effective image type detection from a file - Add replacements for `UIImagePNGRepresentation` and `UIImageJPEGRepresentation` - Unifies to the __TIP__ codec based encoding rather than the __UIKit__ implementation which can be unreliable for consistency. - Provides progressive support for JPEG variant of functionality. - See `-[UIImage tip_PNGRepresentation]` and `-[UIImage tip_JPEGRepresentationWithQuality:progressive:]` - Add some palette based image utilities - `-[UIImage tip_canLosslesslyEncodeUsingIndexedPaletteWithOptions:]` - Fix bug where a GIF load may be incomplete in response but complete in data loaded failing to load in __TIP__ - Mostly an issue with some CDN vendors terminating the HTTP response incorrectly ### 2.13.2 - Add `[TIPGlobalConfiguration defaultInterpolationQuality]` - By default, will use `CGInterpolationQualityDefault` which is same behavior as before - Add quality arg to image scaling with `[UIImage tip_scaledImageWithTargetDimensions:contentMode:interpolationQuality:decode:]` ### 2.13.1 - Add `[TIPImageFetchDelegate tip_imageFetchOperation:didLoadDirtyPreviewImage:]` support - This allows for the rendered cache to mark a specific entry dirty (by identifier) - On fetch operation load, the dirty preview can be synchronously loaded while the op continues on async - This helps systems where a larger version of an image with a shared identifier loads and matching fetch helpers that are not visible in the UI take note in order to refresh with the better resolution image, but without the risk of clearing that image's render cache which can lead to a 1 or 2 frame "flash" of the image loading async from cache * update podspec and travis yml
1 parent 55ba888 commit 451dffc

File tree

644 files changed

+219271
-610
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

644 files changed

+219271
-610
lines changed

.travis.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
language: objective-c
2-
osx_image: xcode10.2
2+
osx_image: xcode11.4
33
script:
44
./build.sh

BuildConfiguration/TwitterImagePipeline.Debug.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:

BuildConfiguration/TwitterImagePipeline.Release.xcconfig

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,24 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:
1010
// https://help.apple.com/xcode/#/dev745c5c974
1111

1212
#include "TwitterImagePipeline.xcconfig"
1313

14+
// Build Options
15+
16+
// FB7419630 - unless dwarf-with-dsym explicitly set, no dSYM will be generated for mac catalyst build
17+
DEBUG_INFORMATION_FORMAT[sdk=macosx*] = dwarf-with-dsym
18+
19+
1420
// Deployment
1521
COPY_PHASE_STRIP = YES
1622

1723
GCC_OPTIMIZATION_LEVEL = fast
1824

25+
// Swift Compiler - Code Generation
26+
SWIFT_COMPILATION_MODE = wholemodule

BuildConfiguration/TwitterImagePipeline.Test.app.xcconfig

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,14 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:
1010
// https://help.apple.com/xcode/#/dev745c5c974
1111

1212
#include "TwitterImagePipeline.Test.xcconfig"
1313

14-
// Architectures
15-
ONLY_ACTVE_ARCH = YES
16-
17-
// Deployment
18-
COPY_PHASE_STRIP = NO
19-
IPHONEOS_DEPLOYMENT_TARGET = 10.0 // 3 of the 4 sample apps use Foundation or UIKit API introduced in 10.0
20-
21-
// Asset Catalog Compiler - Options
22-
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon
23-
2414
// Apple Clang - Language
2515
GCC_C_LANGUAGE_STANDARD = gnu11
2616

@@ -30,16 +20,31 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"
3020
// Apple Clang - Warnings - All Languages
3121
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
3222

23+
// Architectures
24+
ONLY_ACTVE_ARCH = YES
25+
26+
// Asset Catalog Compiler - Options
27+
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon
28+
3329
// Deployment
3430
SKIP_INSTALL = NO
31+
COPY_PHASE_STRIP = NO
32+
IPHONEOS_DEPLOYMENT_TARGET = 10.0 // 3 of the 4 sample apps use Foundation or UIKit API introduced in 10.0
3533

3634
// Linking
3735
LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks
3836

37+
// Mac Catalyst - Deployment
38+
DERIVE_MACCATALYST_PRODUCT_BUNDLE_IDENTIFIER = YES
39+
SUPPORTS_MACCATALYST = YES
40+
3941
// Packaging
4042
INFOPLIST_FILE = $(TARGET_NAME)/Info.plist
4143
PRODUCT_BUNDLE_IDENTIFIER = com.twitter.${PRODUCT_NAME:rfc1034identifier}
4244
PRODUCT_NAME = $(TARGET_NAME)
4345

4446
// Search Paths
4547
FRAMEWORK_SEARCH_PATHS = $(inherited) $(PROJECT_DIR)/Extended
48+
49+
// Signing
50+
CODE_SIGN_ENTITLEMENTS = $(TARGET_NAME)/$(TARGET_NAME).entitlements

BuildConfiguration/TwitterImagePipeline.Test.ios.xcconfig

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:
@@ -17,6 +17,11 @@ SDKROOT = iphoneos
1717
// Deployment
1818
IPHONEOS_DEPLOYMENT_TARGET = 8.0
1919

20+
// Signing
21+
22+
// This is the result of setting "Sign to run locally" in "Signing & Capabilities" for mac (catalyst)
23+
CODE_SIGN_IDENTITY[sdk=macosx*] = -
24+
2025
// Search Paths
2126

2227
// 1. we keep WebP.framework in our local "Extended" subfolder

BuildConfiguration/TwitterImagePipeline.Test.swift.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:

BuildConfiguration/TwitterImagePipeline.Test.tvos.xcconfig

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:
@@ -18,9 +18,5 @@ SDKROOT = appletvos
1818
TARGETED_DEVICE_FAMILY = 3
1919
TVOS_DEPLOYMENT_TARGET = 9.0
2020

21-
// Search Paths
22-
23-
// while there is an XCTest.framework at the appropriate location in
24-
// Developer/AppleTVOS.platform/Developer/Library/Frameworks, the compiler
25-
// can't find it without the following setting:
26-
FRAMEWORK_SEARCH_PATHS = $(inherited) $(SDKROOT)/../../Library/Frameworks
21+
// Packaging
22+
INFOPLIST_FILE = TIPTests/Info.plist

BuildConfiguration/TwitterImagePipeline.Test.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:

BuildConfiguration/TwitterImagePipeline.framework.ios.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:

BuildConfiguration/TwitterImagePipeline.framework.tvos.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:

BuildConfiguration/TwitterImagePipeline.framework.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:

BuildConfiguration/TwitterImagePipeline.static-library.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
//
2+
// TwitterImagePipeline.webp.framework.xcconfig
3+
// TwitterImagePipeline
4+
//
5+
// Created on 9/25/19.
6+
// Copyright © 2020 Twitter. All rights reserved.
7+
//
8+
// webp.framework as a dynamic .framework built from source is being included
9+
// in TwitterImagePipeline in order to provide support when building for mac-catalyst .
10+
// the settings in this .xcconfig are purposesly confined to "sdk=macos*" wherever the
11+
// settings UI would allow us to do so in order to emphasize this is mac-catalyst only.
12+
13+
// Configuration settings file format documentation can be found at:
14+
// https://help.apple.com/xcode/#/dev745c5c974
15+
16+
17+
// Build Options
18+
APPLICATION_EXTENSION_API_ONLY = YES
19+
20+
// Deployment
21+
SKIP_INSTALL = YES
22+
23+
// Apple Clang - Preprocessing
24+
GCC_PREPROCESSOR_DEFINITIONS[sdk=macosx*] = $(inherited) HAVE_CONFIG_H=1
25+
26+
// Search Paths
27+
HEADER_SEARCH_PATHS[sdk=macosx*] = $(PROJECT_DIR)/Extended/libwebp
28+
29+
// Linking
30+
DYLIB_INSTALL_NAME_BASE = @rpath
31+
LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks @loader_path/Frameworks
32+
33+
// Packaging
34+
DEFINES_MODULE = YES
35+
INFOPLIST_FILE[sdk=macosx*] = $(TARGET_NAME)/Info.plist
36+
37+
PRODUCT_BUNDLE_IDENTIFIER[sdk=macosx*] = com.twitter.${TARGET_NAME:rfc1034identifier}
38+
PRODUCT_MODULE_NAME = $(TARGET_NAME:c99extidentifier)
39+
PRODUCT_NAME = $(TARGET_NAME)
40+
41+
// Versioning
42+
CURRENT_PROJECT_VERSION = 1.0.3
43+

BuildConfiguration/TwitterImagePipeline.xcconfig

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 5/25/19.
6-
// Copyright © 2019 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
// Configuration settings file format documentation can be found at:
@@ -57,7 +57,7 @@ CLANG_MODULES_AUTOLINK = NO
5757
// Apple Clang - Language - Objective C
5858
CLANG_ENABLE_OBJC_ARC = YES
5959
CLANG_ENABLE_OBJC_WEAK = YES
60-
gCLANG_LINK_OBJC_RUNTIME = YES
60+
CLANG_LINK_OBJC_RUNTIME = YES
6161

6262
// Apple Clang - Preprocessing
6363
ENABLE_NS_ASSERTIONS = NO
@@ -96,6 +96,7 @@ GCC_WARN_64_TO_32_BIT_CONVERSION = YES
9696

9797
// Apple Clang - Warnings - C++
9898
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES
99+
CLANG_WARN_SUSPICIOUS_MOVE = YES
99100
GCC_WARN_NON_VIRTUAL_DESTRUCTOR = YES
100101
GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS = YES
101102

CHANGELOG.md

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,46 @@
22

33
## Info
44

5-
**Document version:** 2.13.0
5+
**Document version:** 2.13.5
66

7-
**Last updated:** 07/04/2019
7+
**Last updated:** 04/12/2020
88

99
**Author:** Nolan O'Brien
1010

1111
## History
1212

13+
### 2.13.5
14+
15+
- Add _WebP_ support to Catalyst builds
16+
- See `WEBP_README.md`
17+
- Miscellaneous performance improvements
18+
- Async load the default codes to avoid main thread blockage on app launch
19+
- Tighter memory management with autorelease pools
20+
- `TIPImageFetchHelper` will now register for all image cache updates and filter on observation vs registering against specific pipelines, which avoids register/unregister locking performance impact
21+
- Add `TIPDetectImageTypeFromFile(...)` for efficient and effective image type detection from a file
22+
- Add replacements for `UIImagePNGRepresentation` and `UIImageJPEGRepresentation`
23+
- Unifies to the __TIP__ codec based encoding rather than the __UIKit__ implementation which can be unreliable for consistency.
24+
- Provides progressive support for JPEG variant of functionality.
25+
- See `-[UIImage tip_PNGRepresentation]` and `-[UIImage tip_JPEGRepresentationWithQuality:progressive:]`
26+
- Add some palette based image utilities
27+
- `-[UIImage tip_canLosslesslyEncodeUsingIndexedPaletteWithOptions:]`
28+
- Fix bug where a GIF load may be incomplete in response but complete in data loaded failing to load in __TIP__
29+
- Mostly an issue with some CDN vendors terminating the HTTP response incorrectly
30+
31+
32+
### 2.13.2
33+
34+
- Add `[TIPGlobalConfiguration defaultInterpolationQuality]`
35+
- By default, will use `CGInterpolationQualityDefault` which is same behavior as before
36+
- Add quality arg to image scaling with `[UIImage tip_scaledImageWithTargetDimensions:contentMode:interpolationQuality:decode:]`
37+
38+
### 2.13.1
39+
40+
- Add `[TIPImageFetchDelegate tip_imageFetchOperation:didLoadDirtyPreviewImage:]` support
41+
- This allows for the rendered cache to mark a specific entry dirty (by identifier)
42+
- On fetch operation load, the dirty preview can be synchronously loaded while the op continues on async
43+
- This helps systems where a larger version of an image with a shared identifier loads and matching fetch helpers that are not visible in the UI take note in order to refresh with the better resolution image, but without the risk of clearing that image's render cache which can lead to a 1 or 2 frame "flash" of the image loading async from cache
44+
1345
### 2.13.0
1446

1547
- Separate out authentication support for image requests from hydration support

Extended/TIPXMP4Codec.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 3/16/17.
6-
// Copyright © 2017 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
#import <TwitterImagePipeline/TIPImageCodecs.h>

Extended/TIPXMP4Codec.m

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// TwitterImagePipeline
44
//
55
// Created on 3/16/17.
6-
// Copyright © 2017 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

99
#import <TwitterImagePipeline/TwitterImagePipeline.h>
@@ -36,7 +36,7 @@ __strong tipx_defer_block_t tipx_macro_concat(tipx_stack_defer_block_, __LINE__)
3636

3737
#define TIPXDeferRelease(ref) tipx_defer(^{ if (ref) { CFRelease(ref); } })
3838

39-
#pragma twitter stopignorestylecheck
39+
#pragma twitter endignorestylecheck
4040

4141
#pragma mark - Constants
4242

@@ -286,7 +286,7 @@ - (nullable TIPImageContainer *)renderImageWithMode:(TIPImageDecoderRenderMode)m
286286
message:error.description];
287287
return;
288288
}
289-
289+
290290
CGSize naturalSize = self->_avTrack.naturalSize;
291291

292292
NSDictionary *outputSettings = @{

Extended/TIPXWebPCodec.h

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,15 @@
33
// TwitterImagePipeline
44
//
55
// Created on 11/9/16.
6-
// Copyright © 2016 Twitter. All rights reserved.
6+
// Copyright © 2020 Twitter. All rights reserved.
77
//
88

9-
#include <TargetConditionals.h>
10-
11-
#if !TARGET_OS_MACCATALYST
12-
139
#import <TwitterImagePipeline/TIPImageCodecs.h>
1410

11+
1512
NS_ASSUME_NONNULL_BEGIN
1613

17-
//! Custom image type for WebP, `@"google.webp"`
14+
//! Custom image type for WebP, `@"public.webp"`
1815
FOUNDATION_EXTERN NSString * const TIPXImageTypeWebP;
1916

2017
/**
@@ -32,4 +29,3 @@ FOUNDATION_EXTERN NSString * const TIPXImageTypeWebP;
3229

3330
NS_ASSUME_NONNULL_END
3431

35-
#endif // #if !TARGET_OS_MACCATALYST

0 commit comments

Comments
 (0)