Ejemplo n.º 1
0
        public IFuturePrototype GetImagePrototype(ImageParameterTypeIfc parameterType, FutureFeatures features)
        {
            List <IFuturePrototype> list = new List <IFuturePrototype>();

            list.Add(parameterType.GetSizeParameter());
            foreach (SourceMap current in layer)
            {
                if (current.ReadyToLock())
                {
                    IDisplayableSource displayableSource =
                        mapTileSourceFactory.CreateDisplayableWarpedSource(current);
                    list.Add(displayableSource.GetImagePrototype(parameterType, features));
                }
            }

            IFuturePrototype futurePrototype = new ApplyPrototype(new CompositeImageVerb(), list.ToArray());

            if (UnwarpedMapTileSource.HasFeature(features, FutureFeatures.DiskCached))
            {
                futurePrototype = new DiskCachePrototype(mapTileSourceFactory.GetCachePackage().diskCache,
                                                         futurePrototype);
            }

            if (UnwarpedMapTileSource.HasFeature(features, FutureFeatures.MemoryCached))
            {
                futurePrototype = new MemCachePrototype(mapTileSourceFactory.GetCachePackage().computeCache,
                                                        futurePrototype);
            }

            return(futurePrototype);
        }
Ejemplo n.º 2
0
        public IFuturePrototype GetImagePrototype(ImageParameterTypeIfc parameterType, FutureFeatures features)
        {
            if (cachedImageRequest == null || lastImageRequest_parameterType != parameterType ||
                lastImageRequest_features != features)
            {
                lastImageRequest_parameterType = parameterType;
                lastImageRequest_features      = features;
                cachedImageRequest             = backingSource.GetImagePrototype(parameterType, features);
            }

            return(cachedImageRequest);
        }
Ejemplo n.º 3
0
        public IFuture GetRenderedLegendFuture(IDisplayableSource displayableSource, FutureFeatures features)
        {
            RenderRegion renderRegion = latentRegionHolder.renderRegion;

            if (renderRegion == null)
            {
                throw new RenderFailedException("Region unavailable");
            }

            renderRegion = renderRegion.Copy(new DirtyEvent());
            MapRectangleParameter mapRectangleParameter = new MapRectangleParameter(renderRegion.GetBoundingBox());
            Size             outputSize     = OutputSizeFromRenderRegion(renderRegion);
            IFuturePrototype imagePrototype =
                displayableSource.GetImagePrototype(new ImageParameterFromRawBounds(outputSize), features);

            return(imagePrototype.Curry(new ParamDict(new object[] { TermName.ImageBounds, mapRectangleParameter })));
        }
Ejemplo n.º 4
0
        private List <ViewerControl.PaintKit> AssembleLayer(PaintSpecification e, LatLonZoom llz, IDisplayableSource tileSource, int stackOrder)
        {
            List <ViewerControl.PaintKit> list = new List <ViewerControl.PaintKit>();
            CoordinateSystemIfc           defaultCoordinateSystem = tileSource.GetDefaultCoordinateSystem();
            TileDisplayDescriptorArray    tileArrayDescriptor     = defaultCoordinateSystem.GetTileArrayDescriptor(llz, e.Size);
            AsyncRef asyncRef;

            try
            {
                asyncRef = (AsyncRef)tileSource.GetUserBounds(null, (FutureFeatures)7).Realize("ViewerControl.PaintLayer boundsRef");
            }
            catch (Exception ex)
            {
                ViewerControl.MessagePainter item = new ViewerControl.MessagePainter(stackOrder * 12, BigDebugKnob.theKnob.debugFeaturesEnabled ? ex.ToString() : "X", stackOrder == 0);
                foreach (TileDisplayDescriptor current in tileArrayDescriptor)
                {
                    list.Add(new ViewerControl.PaintKit(current.paintLocation)
                    {
                        annotations =
                        {
                            item
                        }
                    });
                }
                return(list);
            }
            Region clipRegion = null;

            if (asyncRef.present == null)
            {
                asyncRef.AddCallback(new AsyncRecord.CompleteCallback(this.BoundsRefAvailable));
                asyncRef.SetInterest(524290);
            }
            if ((this.ShowSourceCrop == null || this.ShowSourceCrop.Enabled) && asyncRef.present is IBoundsProvider)
            {
                clipRegion = ((IBoundsProvider)asyncRef.present).GetRenderRegion().GetClipRegion(defaultCoordinateSystem.GetUnclippedMapWindow(this.center().llz, e.Size), this.center().llz.zoom, defaultCoordinateSystem);
                this.UpdateUserRegion();
            }
            new PersistentInterest(asyncRef);
            int num = 0;

            foreach (TileDisplayDescriptor current2 in tileArrayDescriptor)
            {
                ViewerControl.PaintKit paintKit = new ViewerControl.PaintKit(current2.paintLocation);
                D.Sayf(10, "count {0} tdd {1}", new object[]
                {
                    num,
                    current2.tileAddress
                });
                num++;
                if (e.SynchronousTiles)
                {
                    D.Sayf(0, "PaintLayer({0}, tdd.ta={1})", new object[]
                    {
                        tileSource.GetHashCode(),
                        current2.tileAddress
                    });
                }
                bool    arg_1F5_0 = e.SynchronousTiles;
                Present present   = tileSource.GetImagePrototype(null, (FutureFeatures)15).Curry(new ParamDict(new object[]
                {
                    TermName.TileAddress,
                    current2.tileAddress
                })).Realize("ViewerControl.PaintLayer imageAsyncRef");
                AsyncRef  asyncRef2 = (AsyncRef)present;
                Rectangle rectangle = Rectangle.Intersect(e.ClipRectangle, current2.paintLocation);
                int       interest  = rectangle.Height * rectangle.Width + 524296;
                asyncRef2.SetInterest(interest);
                if (asyncRef2.present == null)
                {
                    ViewerControl.AsyncNotifier @object = new ViewerControl.AsyncNotifier(this);
                    asyncRef2.AddCallback(new AsyncRecord.CompleteCallback(@object.AsyncRecordComplete));
                }
                this.activeTiles.Add(asyncRef2);
                asyncRef2 = (AsyncRef)asyncRef2.Duplicate("ViewerControl.PaintLayer");
                if (e.SynchronousTiles)
                {
                    D.Assert(false, "unimpl");
                }
                if (asyncRef2.present == null)
                {
                    D.Assert(!e.SynchronousTiles);
                }
                bool flag;
                if (asyncRef2.present != null && asyncRef2.present is ImageRef)
                {
                    flag = false;
                    ImageRef imageRef = (ImageRef)asyncRef2.present.Duplicate("tpc");
                    paintKit.meatyParts.Add(new ViewerControl.ImagePainter(imageRef, clipRegion));
                }
                else
                {
                    if (asyncRef2.present != null && asyncRef2.present is BeyondImageBounds)
                    {
                        flag = false;
                    }
                    else
                    {
                        if (asyncRef2.present != null && asyncRef2.present is PresentFailureCode)
                        {
                            flag = false;
                            PresentFailureCode           presentFailureCode = (PresentFailureCode)asyncRef2.present;
                            ViewerControl.MessagePainter item2 = new ViewerControl.MessagePainter(stackOrder * 12, BigDebugKnob.theKnob.debugFeaturesEnabled ? StringUtils.breakLines(presentFailureCode.ToString()) : "X", stackOrder == 0);
                            paintKit.annotations.Add(item2);
                        }
                        else
                        {
                            flag = true;
                            ViewerControl.MessagePainter item3 = new ViewerControl.MessagePainter(stackOrder * 12, stackOrder.ToString(), stackOrder == 0);
                            if (stackOrder == 0)
                            {
                                paintKit.meatyParts.Add(item3);
                            }
                            else
                            {
                                paintKit.annotations.Add(item3);
                            }
                        }
                    }
                }
                this.tilesRequired++;
                if (!flag)
                {
                    this.tilesAvailable++;
                }
                if ((flag && stackOrder == 0) || MapDrawingOption.IsEnabled(this.ShowTileBoundaries))
                {
                    paintKit.annotations.Add(new ViewerControl.TileBoundaryPainter());
                }
                if (MapDrawingOption.IsEnabled(this.ShowTileNames))
                {
                    paintKit.annotations.Add(new ViewerControl.TileNamePainter(current2.tileAddress.ToString()));
                }
                asyncRef2.Dispose();
                list.Add(paintKit);
            }
            return(list);
        }
Ejemplo n.º 5
0
        public Pixel GetBaseLayerCenterPixel()
        {
            IDisplayableSource         displayableSource       = this.baseLayer;
            CoordinateSystemIfc        defaultCoordinateSystem = displayableSource.GetDefaultCoordinateSystem();
            TileDisplayDescriptorArray tileArrayDescriptor     = defaultCoordinateSystem.GetTileArrayDescriptor(this.center().llz, base.Size);
            int num  = base.Size.Width / 2;
            int num2 = base.Size.Height / 2;

            foreach (TileDisplayDescriptor current in tileArrayDescriptor)
            {
                Rectangle paintLocation = current.paintLocation;
                if (paintLocation.Left <= num)
                {
                    Rectangle paintLocation2 = current.paintLocation;
                    if (paintLocation2.Right > num)
                    {
                        Rectangle paintLocation3 = current.paintLocation;
                        if (paintLocation3.Top <= num2)
                        {
                            Rectangle paintLocation4 = current.paintLocation;
                            if (paintLocation4.Bottom > num2)
                            {
                                int       arg_D1_0       = num;
                                Rectangle paintLocation5 = current.paintLocation;
                                int       x              = arg_D1_0 - paintLocation5.Left;
                                int       arg_E6_0       = num2;
                                Rectangle paintLocation6 = current.paintLocation;
                                int       y              = arg_E6_0 - paintLocation6.Top;
                                Present   present        = displayableSource.GetImagePrototype(null, (FutureFeatures)19).Curry(new ParamDict(new object[]
                                {
                                    TermName.TileAddress,
                                    current.tileAddress
                                })).Realize("ViewerControl.GetBaseLayerCenterPixel imageRef");
                                Pixel result;
                                if (!(present is ImageRef))
                                {
                                    result = new UndefinedPixel();
                                    return(result);
                                }
                                ImageRef          imageRef = (ImageRef)present;
                                GDIBigLockedImage image;
                                Monitor.Enter(image = imageRef.image);
                                Pixel pixel2;
                                try
                                {
                                    Image  image2 = imageRef.image.IPromiseIAmHoldingGDISLockSoPleaseGiveMeTheImage();
                                    Bitmap bitmap = (Bitmap)image2;
                                    Color  pixel  = bitmap.GetPixel(x, y);
                                    pixel2 = new Pixel(pixel);
                                }
                                finally
                                {
                                    Monitor.Exit(image);
                                }
                                imageRef.Dispose();
                                result = pixel2;
                                return(result);
                            }
                        }
                    }
                }
            }
            return(new UndefinedPixel());
        }
Ejemplo n.º 6
0
		public IFuture GetRenderedLegendFuture(IDisplayableSource displayableSource, FutureFeatures features)
		{
			RenderRegion renderRegion = this.latentRegionHolder.renderRegion;
			if (renderRegion == null)
			{
				throw new Legend.RenderFailedException("Region unavailable");
			}
			renderRegion = renderRegion.Copy(new DirtyEvent());
			MapRectangleParameter mapRectangleParameter = new MapRectangleParameter(renderRegion.GetBoundingBox());
			Size outputSize = this.OutputSizeFromRenderRegion(renderRegion);
			IFuturePrototype imagePrototype = displayableSource.GetImagePrototype(new ImageParameterFromRawBounds(outputSize), features);
			return imagePrototype.Curry(new ParamDict(new object[]
			{
				TermName.ImageBounds,
				mapRectangleParameter
			}));
		}
Ejemplo n.º 7
0
 private List<ViewerControl.PaintKit> AssembleLayer(PaintSpecification e, LatLonZoom llz, IDisplayableSource tileSource, int stackOrder)
 {
     List<ViewerControl.PaintKit> list = new List<ViewerControl.PaintKit>();
     CoordinateSystemIfc defaultCoordinateSystem = tileSource.GetDefaultCoordinateSystem();
     TileDisplayDescriptorArray tileArrayDescriptor = defaultCoordinateSystem.GetTileArrayDescriptor(llz, e.Size);
     AsyncRef asyncRef;
     try
     {
         asyncRef = (AsyncRef)tileSource.GetUserBounds(null, (FutureFeatures)7).Realize("ViewerControl.PaintLayer boundsRef");
     }
     catch (Exception ex)
     {
         ViewerControl.MessagePainter item = new ViewerControl.MessagePainter(stackOrder * 12, BigDebugKnob.theKnob.debugFeaturesEnabled ? ex.ToString() : "X", stackOrder == 0);
         foreach (TileDisplayDescriptor current in tileArrayDescriptor)
         {
             list.Add(new ViewerControl.PaintKit(current.paintLocation)
             {
                 annotations =
                 {
                     item
                 }
             });
         }
         return list;
     }
     Region clipRegion = null;
     if (asyncRef.present == null)
     {
         asyncRef.AddCallback(new AsyncRecord.CompleteCallback(this.BoundsRefAvailable));
         asyncRef.SetInterest(524290);
     }
     if ((this.ShowSourceCrop == null || this.ShowSourceCrop.Enabled) && asyncRef.present is IBoundsProvider)
     {
         clipRegion = ((IBoundsProvider)asyncRef.present).GetRenderRegion().GetClipRegion(defaultCoordinateSystem.GetUnclippedMapWindow(this.center().llz, e.Size), this.center().llz.zoom, defaultCoordinateSystem);
         this.UpdateUserRegion();
     }
     new PersistentInterest(asyncRef);
     int num = 0;
     foreach (TileDisplayDescriptor current2 in tileArrayDescriptor)
     {
         ViewerControl.PaintKit paintKit = new ViewerControl.PaintKit(current2.paintLocation);
         D.Sayf(10, "count {0} tdd {1}", new object[]
         {
             num,
             current2.tileAddress
         });
         num++;
         if (e.SynchronousTiles)
         {
             D.Sayf(0, "PaintLayer({0}, tdd.ta={1})", new object[]
             {
                 tileSource.GetHashCode(),
                 current2.tileAddress
             });
         }
         bool arg_1F5_0 = e.SynchronousTiles;
         Present present = tileSource.GetImagePrototype(null, (FutureFeatures)15).Curry(new ParamDict(new object[]
         {
             TermName.TileAddress,
             current2.tileAddress
         })).Realize("ViewerControl.PaintLayer imageAsyncRef");
         AsyncRef asyncRef2 = (AsyncRef)present;
         Rectangle rectangle = Rectangle.Intersect(e.ClipRectangle, current2.paintLocation);
         int interest = rectangle.Height * rectangle.Width + 524296;
         asyncRef2.SetInterest(interest);
         if (asyncRef2.present == null)
         {
             ViewerControl.AsyncNotifier @object = new ViewerControl.AsyncNotifier(this);
             asyncRef2.AddCallback(new AsyncRecord.CompleteCallback(@object.AsyncRecordComplete));
         }
         this.activeTiles.Add(asyncRef2);
         asyncRef2 = (AsyncRef)asyncRef2.Duplicate("ViewerControl.PaintLayer");
         if (e.SynchronousTiles)
         {
             D.Assert(false, "unimpl");
         }
         if (asyncRef2.present == null)
         {
             D.Assert(!e.SynchronousTiles);
         }
         bool flag;
         if (asyncRef2.present != null && asyncRef2.present is ImageRef)
         {
             flag = false;
             ImageRef imageRef = (ImageRef)asyncRef2.present.Duplicate("tpc");
             paintKit.meatyParts.Add(new ViewerControl.ImagePainter(imageRef, clipRegion));
         }
         else
         {
             if (asyncRef2.present != null && asyncRef2.present is BeyondImageBounds)
             {
                 flag = false;
             }
             else
             {
                 if (asyncRef2.present != null && asyncRef2.present is PresentFailureCode)
                 {
                     flag = false;
                     PresentFailureCode presentFailureCode = (PresentFailureCode)asyncRef2.present;
                     ViewerControl.MessagePainter item2 = new ViewerControl.MessagePainter(stackOrder * 12, BigDebugKnob.theKnob.debugFeaturesEnabled ? StringUtils.breakLines(presentFailureCode.ToString()) : "X", stackOrder == 0);
                     paintKit.annotations.Add(item2);
                 }
                 else
                 {
                     flag = true;
                     ViewerControl.MessagePainter item3 = new ViewerControl.MessagePainter(stackOrder * 12, stackOrder.ToString(), stackOrder == 0);
                     if (stackOrder == 0)
                     {
                         paintKit.meatyParts.Add(item3);
                     }
                     else
                     {
                         paintKit.annotations.Add(item3);
                     }
                 }
             }
         }
         this.tilesRequired++;
         if (!flag)
         {
             this.tilesAvailable++;
         }
         if ((flag && stackOrder == 0) || MapDrawingOption.IsEnabled(this.ShowTileBoundaries))
         {
             paintKit.annotations.Add(new ViewerControl.TileBoundaryPainter());
         }
         if (MapDrawingOption.IsEnabled(this.ShowTileNames))
         {
             paintKit.annotations.Add(new ViewerControl.TileNamePainter(current2.tileAddress.ToString()));
         }
         asyncRef2.Dispose();
         list.Add(paintKit);
     }
     return list;
 }
Ejemplo n.º 8
0
        public IFuturePrototype GetImagePrototype(ImageParameterTypeIfc parameterType, FutureFeatures features)
        {
            FutureFeatures features2 = features & (FutureFeatures)(-9);

            return(underSource.GetImagePrototype(parameterType, features2));
        }