mirror of
https://github.com/Swiftgram/Telegram-iOS.git
synced 2025-09-07 13:09:49 +00:00
* Initial commit for ASStackLayoutSpec improvements * Remove the lock in ASStackLayoutSpec and make the ASStackLayoutSpecStyle const I think we don't need lock here as the style already has a lock while we set the value * Add ASStackLayoutSpecItem that replaces layout specific items * Prevent baseline pass if not needed * Update comments
48 lines
1.7 KiB
Objective-C
48 lines
1.7 KiB
Objective-C
//
|
|
// ASStackUnpositionedLayout.h
|
|
// AsyncDisplayKit
|
|
//
|
|
// Copyright (c) 2014-present, Facebook, Inc. All rights reserved.
|
|
// This source code is licensed under the BSD-style license found in the
|
|
// LICENSE file in the root directory of this source tree. An additional grant
|
|
// of patent rights can be found in the PATENTS file in the same directory.
|
|
//
|
|
|
|
#import <vector>
|
|
|
|
#import "ASLayout.h"
|
|
#import "ASStackLayoutSpecUtilities.h"
|
|
#import "ASStackLayoutSpec.h"
|
|
|
|
struct ASStackLayoutSpecChild {
|
|
/** The original source child. */
|
|
id<ASLayoutElement> element;
|
|
/** Style object of element. */
|
|
ASLayoutElementStyle *style;
|
|
/** Size object of the element */
|
|
ASLayoutElementSize size;
|
|
};
|
|
|
|
struct ASStackLayoutSpecItem {
|
|
/** The original source child. */
|
|
ASStackLayoutSpecChild child;
|
|
/** The proposed layout or nil if no is calculated yet. */
|
|
ASLayout *layout;
|
|
};
|
|
|
|
|
|
/** Represents a set of stack layout children that have their final layout computed, but are not yet positioned. */
|
|
struct ASStackUnpositionedLayout {
|
|
/** A set of proposed child layouts, not yet positioned. */
|
|
const std::vector<ASStackLayoutSpecItem> items;
|
|
/** The total size of the children in the stack dimension, including all spacing. */
|
|
const CGFloat stackDimensionSum;
|
|
/** The amount by which stackDimensionSum violates constraints. If positive, less than min; negative, greater than max. */
|
|
const CGFloat violation;
|
|
|
|
/** Given a set of children, computes the unpositioned layouts for those children. */
|
|
static ASStackUnpositionedLayout compute(const std::vector<ASStackLayoutSpecChild> &children,
|
|
const ASStackLayoutSpecStyle &style,
|
|
const ASSizeRange &sizeRange);
|
|
};
|