1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /*
- * Copyright (c) Facebook, Inc. and its affiliates.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
- #pragma once
- #include <react/components/image/ImageEventEmitter.h>
- #include <react/components/image/ImageProps.h>
- #include <react/components/image/ImageState.h>
- #include <react/components/view/ConcreteViewShadowNode.h>
- #include <react/imagemanager/ImageManager.h>
- #include <react/imagemanager/primitives.h>
- namespace facebook {
- namespace react {
- extern const char ImageComponentName[];
- /*
- * `ShadowNode` for <Image> component.
- */
- class ImageShadowNode final : public ConcreteViewShadowNode<
- ImageComponentName,
- ImageProps,
- ImageEventEmitter,
- ImageState> {
- public:
- using ConcreteViewShadowNode::ConcreteViewShadowNode;
- /*
- * Associates a shared `ImageManager` with the node.
- */
- void setImageManager(const SharedImageManager &imageManager);
- static ImageState initialStateData(
- ShadowNodeFragment const &fragment,
- SurfaceId const surfaceId,
- ComponentDescriptor const &componentDescriptor) {
- auto imageSource = ImageSource{ImageSource::Type::Invalid};
- return {imageSource, {imageSource, nullptr}};
- }
- #pragma mark - LayoutableShadowNode
- void layout(LayoutContext layoutContext) override;
- private:
- ImageSource getImageSource() const;
- SharedImageManager imageManager_;
- void updateStateIfNeeded();
- };
- } // namespace react
- } // namespace facebook
|