Exemplo n.º 1
0
 public sealed override void Close()
 {
     lock (this.cache)
         if (this.cache.NotNull())
         {
             this.cache.Apply(frame => frame.Item1.Dispose());
             this.cache = null;
         }
 }
Exemplo n.º 2
0
        public sealed override void Open(Uri.Locator argument)
        {
            this.cache = new Collection.Vector <Tuple <Raster.Image, Tuple <string, object>[]> >(this.Prepare(argument));
            new Action <int>(frame =>
            {
                Tuple <Raster.Image, Tuple <string, object>[]> result = this.Generate(frame);
                Raster.Image generated = result.Item1;
                {
                    switch (this.Format)
                    {
                    default:
                    case Colorspace.Bgra:
                        result = Tuple.Create <Raster.Image, Tuple <string, object>[]>(generated.Convert <Raster.Bgra>(), result.Item2);
                        break;

                    case Colorspace.Bgr:
                        result = Tuple.Create <Raster.Image, Tuple <string, object>[]>(generated.Convert <Raster.Bgr>(), result.Item2);
                        break;

                    case Colorspace.Yuv420:
                        result = Tuple.Create <Raster.Image, Tuple <string, object>[]>(generated.Convert <Raster.Yuv420>(), result.Item2);
                        break;

                    case Colorspace.Yvu420:
                        result = Tuple.Create <Raster.Image, Tuple <string, object>[]>(generated.Convert <Raster.Yvu420>(), result.Item2);
                        break;

                    case Colorspace.Yuyv:
                        result = Tuple.Create <Raster.Image, Tuple <string, object>[]>(generated.Convert <Raster.Yuyv>(), result.Item2);
                        break;

                    case Colorspace.Monochrome:
                        result = Tuple.Create <Raster.Image, Tuple <string, object>[]>(generated.Convert <Raster.Monochrome>(), result.Item2);
                        break;
                    }
                }
                lock (this.cache)
                    this.cache[frame] = result;
            }).For(this.Count);
        }