Files
react-native/ReactCommon/fabric/components/slider/SliderLocalData.h
Joshua Gross b6318acbab Support image props for Slider component, feature parity with pre-Fabric Slider
Summary: The biggest change is that (1) the image proxy/observer code from the Image component has been generalized, (2) the four image props for the Slider component are fully supported, (3) a handful of props that were ignored or buggy on iOS now perform as expected.

Reviewed By: shergin

Differential Revision: D13954892

fbshipit-source-id: bec8ad3407c39a1cb186d9541a73b509dccc92ce
2019-02-05 17:31:40 -08:00

109 lines
3.1 KiB
C++

/**
* 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/core/LocalData.h>
#include <react/imagemanager/ImageRequest.h>
#include <react/imagemanager/primitives.h>
namespace facebook {
namespace react {
class SliderLocalData;
using SharedSliderLocalData = std::shared_ptr<const SliderLocalData>;
/*
* LocalData for <Slider> component.
* Represents the image request state and (possible) retrieved image bitmap.
*/
class SliderLocalData : public LocalData {
public:
SliderLocalData(
const ImageSource &trackImageSource,
ImageRequest trackImageRequest,
const ImageSource &minimumTrackImageSource,
ImageRequest minimumTrackImageRequest,
const ImageSource &maximumTrackImageSource,
ImageRequest maximumTrackImageRequest,
const ImageSource &thumbImageSource,
ImageRequest thumbImageRequest)
: trackImageSource_(trackImageSource),
trackImageRequest_(std::move(trackImageRequest)),
minimumTrackImageSource_(minimumTrackImageSource),
minimumTrackImageRequest_(std::move(minimumTrackImageRequest)),
maximumTrackImageSource_(maximumTrackImageSource),
maximumTrackImageRequest_(std::move(maximumTrackImageRequest)),
thumbImageSource_(thumbImageSource),
thumbImageRequest_(std::move(thumbImageRequest)){};
/*
* Returns stored ImageSource object.
*/
ImageSource getTrackImageSource() const;
/*
* Exposes for reading stored `ImageRequest` object.
* `ImageRequest` object cannot be copied or moved from `ImageLocalData`.
*/
const ImageRequest &getTrackImageRequest() const;
/*
* Returns stored ImageSource object.
*/
ImageSource getMinimumTrackImageSource() const;
/*
* Exposes for reading stored `ImageRequest` object.
* `ImageRequest` object cannot be copied or moved from `ImageLocalData`.
*/
const ImageRequest &getMinimumTrackImageRequest() const;
/*
* Returns stored ImageSource object.
*/
ImageSource getMaximumTrackImageSource() const;
/*
* Exposes for reading stored `ImageRequest` object.
* `ImageRequest` object cannot be copied or moved from `ImageLocalData`.
*/
const ImageRequest &getMaximumTrackImageRequest() const;
/*
* Returns stored ImageSource object.
*/
ImageSource getThumbImageSource() const;
/*
* Exposes for reading stored `ImageRequest` object.
* `ImageRequest` object cannot be copied or moved from `ImageLocalData`.
*/
const ImageRequest &getThumbImageRequest() const;
#pragma mark - DebugStringConvertible
#if RN_DEBUG_STRING_CONVERTIBLE
std::string getDebugName() const override;
SharedDebugStringConvertibleList getDebugProps() const override;
#endif
private:
ImageSource trackImageSource_;
ImageRequest trackImageRequest_;
ImageSource minimumTrackImageSource_;
ImageRequest minimumTrackImageRequest_;
ImageSource maximumTrackImageSource_;
ImageRequest maximumTrackImageRequest_;
ImageSource thumbImageSource_;
ImageRequest thumbImageRequest_;
};
} // namespace react
} // namespace facebook