91 Commits
Author SHA1 Message Date
ricky 5d75e12fd3 [iOS26] Fix warning in iOS26 (#2126)
When compiling in Xcode 26 we get the warning `variable length array folded to constant array as an extension` for the arrays in this struct:
```
typedef struct ASLayoutElementStyleExtensions {
  // Values to store extensions
  BOOL boolExtensions[kMaxLayoutElementBoolExtensions];
  NSInteger integerExtensions[kMaxLayoutElementStateIntegerExtensions];
  UIEdgeInsets edgeInsetsExtensions[kMaxLayoutElementStateEdgeInsetExtensions];
} ASLayoutElementStyleExtensions;
```
To make it happy we could make these constants `#define` or stick them in an `enum`. I chose the latter.
2025-09-12 11:14:14 -07:00
ricky 2d7bf71e7c [_ASDisplayLayer] Add protection around setting a layer’s position and transform (#2116)
There is built in protection around setting invalid bounds for `_ASDisplayLayer`. Let’s extend this to also include protecting against setting an invalid position and an invalid transform.
2024-09-04 08:44:57 -07:00
Carlos Compean 923901a1ce Fix build errors and a crash in xcode 15 (#2093)
* Fix build errors and a crash in xcode 15

* early return if 0 or negative dimensions found
2023-09-11 10:43:37 -07:00
Koichiro Ueki 68dd71cf70 fix typo: ASStackLayoutElement.h (#2067) 2023-04-05 11:30:40 -07:00
Sylvain Defresne 39ea9fe2f2 Remove trailing semicolons between method parameters and body (#1973)
Having a semi-colon between a method parameters list and a method
body is not not correct and is usually caused by a copy and paste
error while creating the method definition from its declaration.

Fixes the following compilation warnings when building with
-Wsemicolon-before-method-body (which is part of -Wextra):

  ASPINRemoteImageDownloader.mm:230:85: error: semicolon before method body is ignored [-Werror,-Wsemicolon-before-method-body]
  - (id <ASImageContainerProtocol>)synchronouslyFetchedCachedImageWithURL:(NSURL *)URL;
                                                                                      ^
  ASPINRemoteImageDownloader.mm:275:76: error: semicolon before method body is ignored [-Werror,-Wsemicolon-before-method-body]
                           completion:(ASImageDownloaderCompletion)completion;
                                                                             ^
  2 errors generated.

Fixes applied to both code, examples and samples in documentation.
2021-03-26 11:07:31 -07:00
Garrett Moon c5f69f0b01 Renames AS_EXTERN and ASViewController (#1876)
* Renames AS_EXTERN and ASViewController

To ASDK_EXTERN and ASDKViewController.
This is to avoid conflicting with AuthenticationServices in
Xcode 12

* Fix up examples and docs

* Add bit about updating ASViewController rename
2020-06-29 12:49:59 -07:00
Huy Nguyen cfaa55cdb4 Link to IGListDiffKit in our IGListKit subspec (#1756)
- In IGListDiff is no longer part of IGListKit as of 4.0. It has its own podspec now. After bumping our IGListKit dependency of our subspec, we got an "Undefined symbol: _IGListDiff" error which breaks podspec linting CI job (as well as some of our clients as reported in #1749).
- To fix it, we can either remove the IGListDiff dependency since it's used once in the entire project, or link to IGListDiffKit. I opt for the latter because I imagine many IGListKit users would have IGListDiffKit anyway so we can still take advantage of it (it's faster than our built in diffing algorithm). Plus, it's not a big dependency.
2020-01-03 11:55:11 -08:00
Hanton Yang 762c8e8bff Keep using unowned macro (#1626) 2019-08-22 17:02:50 -07:00
Hanton Yang ad1ed9f6b6 Remove unused headers (#1615)
* Improve compilation time by reducing unnecessary compilation dependencies
* More clean code
2019-08-15 05:42:26 -07:00
Michael Schneider 0c78681cdc Cleanup for cgFloatForYogaFloat (#1571)
- Return CGFloat
- Proper check for YGUndefined
- Add YGUndefined default return value
2019-08-12 14:05:23 -07:00
Greg Bolsinga 7fb427e0f3 Shrink LayoutSpec classes (#1502)
- Resize enums to make `ASStackLayoutSpec` 40 bytes smaller. This applies to the subclasses too.
2019-05-09 20:19:07 -07:00
Greg Bolsinga e35db6bb0f Shrink ASLayout (#1503)
- Shrink the enum. Save 8 bytes. There are 1000s of these in the heap after running Pinterest for 10 minutes.
2019-05-09 07:49:07 -07:00
Greg Bolsinga 2fdcee81cd Shrink Button Node (#1494)
Button: 1312 to 1288 bytes, running on iPhone SE simulator. 1.9% reduction.

Shrink the enums it stores, and place them next to each other (along with a BOOL) to reduce instance size.
2019-05-07 09:57:03 -07:00
Wu Zhong 5aef12d4fb Try to remove global lock when initialising TextKit components (#1455)
* Try to remove global lock when initialising TextKit components

* Adding experiment flag to dis/enable lock of textkit component

* Adding tests

* code clean

fix typo

Make remove lock optional

Keep locks

code clean
2019-04-22 11:29:34 -07:00
Michael Schneider 838ab85a99 Use instance lock for ASPrimitiveTraitCollection (#1442)
* Use instance lock for ASPrimitiveTraitCollection

* Remove the atomic
2019-04-04 07:32:29 -07:00
Kevin f4d6b95f1c Add support for reverse direction to yoga layouts (#1413)
* Add support for reverse direction to yoga layouts

* #ifdef YOGA yoga-specific additions

* oops
2019-03-20 15:09:21 -07:00
Adlai Holler 9cd0d58373 Rename ASDN C++ namespace to AS (#1366)
* Rename ASDN C++ namespace to "AS." Referring to the framework as ASDisplayNode is pretty out-dated and verbose. See CoreAnimation which usees CA for their internal namespace.

More using

* More cases
2019-03-09 12:14:58 -08:00
Kevin 3089a3e3b0 Expose initial constrained size before layout in case anyone is interested later during the layout on the same thread. (#1377)
Optionally, clients are expected to clean it up after usage to avoid accessing outdated data.
2019-03-08 08:26:35 -08:00
Kevin 65061b9d3d Catch invalid sizes during yoga layout (#1376) 2019-03-08 08:24:08 -08:00
Kevin babd81bd23 Add setNeedsLayout to yoga tree changes. (#1361) 2019-03-04 17:33:28 -08:00
Adlai Holler 2a4b77b6d5 Remove let and var macros now that we're all-C++ (#1312)
* Remove let and var macros now that we're all-C++

* Another fix

* More!

* And more!
2019-01-17 10:16:53 -08:00
Michael Schneider ab0a00c21c Copy yogaChildren in accessor method. Avoid using accessor method internally (#1283)
* Copy yogaChildren in accessor method. Avoid using accessor method internally.

* Further improvements
2018-12-20 17:45:52 +01:00
Tim Norman 5be2213c50 Convert YGUndefined back to CGFLOAT_MAX for Texture layout (#1244)
* Convert YGUndefined back to CGFLOAT_MAX for Texture layout

* Update ASYogaUtilities.mm

Quick fix to brace style
2018-11-20 07:27:53 -08:00
Adlai Holler d0ba092a77 Convert the codebase to Objective-C++ (#1206)
* Convert the codebase to Objective-C++ throughout. One language is better than two.

* Put it back

* Fix linker

* Point explicitly to updated Weaver to unblock build

* Revert "Point explicitly to updated Weaver to unblock build"

This reverts commit fdc25296e8794d4e6e56c35f5fe6da2be3f71dbc.

* Revert "Fix linker"

This reverts commit 7be25f91519b8497ef42de79f115bcfbdb965c39.

* Add in the frameworks

* no message

* Address spec lint warnings

* Fix tvos build

* Put that back

* Address Michael's review

* Add comment to kick CI
2018-11-02 12:04:14 -07:00
Michael Schneider 097790317e Yoga integration improvements (#1187)
* Thread safety for Yoga layout

* Support baseline alignments for ASYogaLayout

* Refactor ASLayoutElementYogaBaselineFunc to not require yogaParent (its parent style is set into a private var on ASLayoutElementStyle before layout instead)

* Only set the accessibility element if the view is loaded

* Add nodeWillCalculateLayout to ASNodeController

* Update Changelog

* Address first comments
2018-10-24 10:27:58 -07:00
Adlai Holler 69ed9562df Remove ASRectMap, which is not worth its own weight (#1127) 2018-09-18 11:58:24 -07:00
Adlai Holler d2984ced8d Make yoga & layout specs faster by eliminating some copies (#1128) 2018-09-18 07:26:29 -07:00
appleguy 465abb1ded [License] Simplify the Texture license to be pure Apache 2 (removing ASDK-Licenses). (#1077)
* [License] Simplify the Texture license to be pure Apache 2 (removing ASDK-Licenses)

With permission of the Facebook Open Source team, we are simplifying the Texture
license so that clients can rely on the Apache 2 terms that most of Texture is
already covered by. This means that code originally forked from AsyncDisplayKit
will be re-licensed from "BSD 3-clause + PATENTS v2" to Apache 2 without a
PATENTS file.

After getting confirmation that the updates to these core files look good, we'll
propagate this new license header to all files (in this same PR) and get sign-off
from all parties before landing.

* [License] Update all Texture source files to be pure Apache 2.

* Changelog entry for Apache 2 license update.

* Revert "[License] Update all Texture source files to be pure Apache 2."

This reverts commit ffa0fbbba9.

* [License] Update all Texture source files to be pure Apache 2, maintaining copyrights.

* [License] Update CONTRIBUTING, README, Podspec & Dangerfile.
2018-08-28 07:39:18 -07:00
Michael Schneider 9e2947e7fb Revert "Optimize drawing code + add examples how to round corners (#996)" (#1055)
This reverts commit eb4c21c545.
2018-07-31 04:40:18 -07:00
Michael Schneider eb4c21c545 Optimize drawing code + add examples how to round corners (#996)
* Use CoreGraphics for drawing and cropping of node content

* Smaller fixes
2018-07-26 09:44:10 -07:00
Michael Schneider 736e200407 Fix warning for ASLayout method override for the designated initializer of the superclass '-init' not found #trivial (#1036)
* Fix warning for ASLayout method override for the designated initializer of the superclass '-init' not found

* Move unavailable init into header
2018-07-18 02:57:35 -07:00
Adlai Holler db0f515812 Revert unreleased layout debug method name change from #1030 #trivial (#1039)
* Revert unreleased layout debugging method name change from #1030 #trivial

* Eh make less changes
2018-07-17 21:08:29 -07:00
Adlai Holler cf810acaa3 Fix the bug I introduced in #1030 (#1035) 2018-07-16 20:43:58 -07:00
Adlai Holler 0b9f12716e Remove NSMutableArray for retaining sublayout elements (#1030)
* Remove NSMutableArray for retaining sublayout elements

* Kick the CI

* Kick the CI again

* Smash that CI button

* Murder the CI
2018-07-15 18:41:23 -07:00
Kevin 8986838b48 Add move detection and support to ASLayoutTransition (#1006)
* Add move detection and support to ASLayoutTransition

...and NSArray+Diffing.
Add some tests.

* Update CHANGELOG.md

* Update CHANGELOG.md

* Update ASLayout+IGListKit.h

* Update ASLayout+IGListKit.mm

* Use std collections to avoid NSNumber boxing

* Update ASLayoutTransition.mm

* Code review updates.

* Use `unordered_multimap` on stack instead of unordered_map<id,queue> on heap
* Remove notFound BOOL (use NSNotFound sentinel value) and put some vars inside the if (insertions/moves) loop
* Don't copy defaultCompare block (redundant under ARC)
* Whitespace
* Remove unneeded mutableCopy-s in ArrayDiffingTests

* Code review updates.

* Type _subnodeMoves pair.first to ASDisplayNode * instead of id
* C++ enumeration
* unowned refs for adding previousLayout nodes to _subnodeMoves
* Remove unreleated ASDynamicCast that is probably right though

* Add commentary to NSArray+Diffing.h; make multimap elements unowned

* Use std::make_pair, optimize ASLayout+IGListKit

* Oops I thought I had added these headers but nope

* Simplify simplify

* Diff subnodes instead of sublayouts

* Another randomized test with actual ASLayouts
2018-07-13 10:19:03 -07:00
Adlai Holler 7c1aee7315 Fix i386 build by providing fallbacks to thread_local variables (#1025) 2018-07-12 21:09:24 -07:00
Michael Schneider 55abeed743 Introduce let / var macros and some further cleanup (#1012)
* Introduce let / var and some further cleanup

* Address first comments

* Update changelog

* Move the const before auto
2018-07-10 09:37:53 -07:00
Adlai Holler 75594affe2 Remove yoga layout spec, which has been superseded (#999)
* Remove yoga layout spec, which has been superseded by tighter yoga-display node integration

* Changelog
2018-06-30 09:42:27 -07:00
Adlai Holler 77e2d28919 Create transfer-array method and use it (#987)
* Create transfer-array method and use it

* License headers

* Update ASArrayByFlatMapping
2018-06-29 18:21:55 -07:00
Adlai Holler 0fe991f818 Optimize layout flattening (#982)
* Optimize layout flattening

* Changelog

* Remove whitespace

* Update ASLayout.mm

Add comment
2018-06-22 14:20:33 -07:00
Adlai Holler dbe469a94a Standardize "extern" decls on AS_EXTERN (#972)
* Standardize "extern" decls on AS_EXTERN

* Rebase & remove from implementation files
2018-06-18 15:53:34 -07:00
Adlai Holler a11506564a Reduce usage of autorelease pools (#968)
* Reduce reliance on the autorelease pool

* changelog

* A few more places

* Use it in another place
2018-06-15 10:15:25 -07:00
Adlai Holler 35d59acd83 Add support for acquiring multiple locks at once (#958)
* Add ASLocking which supports -tryLock and taking multiple locks safely

* Better multi locking

* Assert about lock set capacity
2018-06-05 12:31:30 -07:00
Adlai Holler cac14e0bce Standardize Property Declaration Style in Core Classes (#870)
* Audit property attributes for core classes

* Update style guide

* Go crazy

* Update changelog
2018-05-24 14:42:43 -07:00
Adlai Holler 0f9b1e6789 Make objects conform to NSLocking (#851)
* Make display node, layout spec, and style conform to NSLocking so that users/subclasses can access their locks

* Update the changelog

* Align slashes

* Put it back, when we're in ASDisplayNode

* Go a little further

* Put back the changes I didn't mean to commit

* Kick the CI

* Fix yoga build

* Put back non-locking change

* Address comments from Scott
2018-03-25 10:46:04 -07:00
Adlai Holler 2b12654810 Use NS_RETURNS_RETAINED macro to save time (#843)
* Use NS_RETURNS_RETAINED macro to save time

* Update changelog and do the thing with the license headers
2018-03-21 08:13:09 -07:00
Adlai Holler a1055254f7 Replace pthread specifics with C11 thread-local variables (#811)
* Replace pthread specifics with C11 thread-local variables for speed and safety

* Increment changelog
2018-02-28 12:42:30 -08:00
Adlai Holler 9b8a919a93 Revert "Faster collection operations (#748)" (#759)
This reverts commit 5c13403ef7.
2018-01-22 11:38:09 -08:00
Adlai Holler 5c13403ef7 Faster collection operations (#748)
* Faster collection operations

* Fix a few things

* Put the stupid semicolon

* Address warning

* Cut down retain/releases during collection operations

* Update CHANGELOG.md
2018-01-22 13:22:03 +00:00
Adlai Holler 5e73396cde Enable collection node interactive moves (#735)
* Add support for interactive moves

* Enable drag & drop in collection view example

* Update changelog

* Change the gating logic to match UIKit

* Add a warning when we prevent interactive movement due to async layout
2018-01-09 14:34:32 -08:00