Example #1
0
        /// <summary>
        /// bitmap cache get ->
        /// background thread hand-off -> multiplex ->
        /// bitmap cache -> decode -> branch on separate images
        ///   -> exif resize and rotate -> exif thumbnail creation
        ///   -> local image resize and rotate -> add meta data producer
        ///   -> multiplex -> encoded cache -> (webp transcode)
        ///   -> local asset fetch.
        /// </summary>
        private IProducer <CloseableReference <CloseableImage> > GetLocalAssetFetchSequence()
        {
            lock (_gate)
            {
                if (_localAssetFetchSequence == null)
                {
                    LocalAssetFetchProducer localAssetFetchProducer =
                        _producerFactory.NewLocalAssetFetchProducer();

                    _localAssetFetchSequence =
                        NewBitmapCacheGetToLocalTransformSequence(localAssetFetchProducer);
                }
                return(_localAssetFetchSequence);
            }
        }
        /// <summary>
        /// encoded cache multiplex -> encoded cache -> local asset fetch.
        /// </summary>
        private IProducer <CloseableReference <IPooledByteBuffer> > GetEncodedLocalAssetFetchSequence()
        {
            lock (_gate)
            {
                if (_encodedLocalAssetFetchSequence == null)
                {
                    LocalAssetFetchProducer localAssetFetchProducer =
                        _producerFactory.NewLocalAssetFetchProducer();

                    _encodedLocalAssetFetchSequence = new RemoveImageTransformMetaDataProducer(
                        NewEncodedCacheMultiplexToTranscodeSequence(localAssetFetchProducer));
                }

                return(_encodedLocalAssetFetchSequence);
            }
        }