Exemple #1
0
        /// <summary>
        /// See interface docs.
        /// </summary>
        /// <param name="webSiteAddress"></param>
        /// <param name="isIPad"></param>
        /// <param name="pathParts"></param>
        /// <returns></returns>
        public IImage CreateIPhoneSplash(string webSiteAddress, bool isIPad, List <string> pathParts)
        {
            if (!isIPad && pathParts.Where(pp => pp.Equals("file-ipad", StringComparison.OrdinalIgnoreCase)).Any())
            {
                isIPad = true;
            }

            IImage splashImage;
            float  titleSize, addressSize, lineHeight;

            if (!isIPad)
            {
                splashImage = _ImageFile.LoadFromByteArray(Images.IPhoneSplash);
                titleSize   = 24f;
                addressSize = 12f;
                lineHeight  = 40f;
            }
            else
            {
                splashImage = _ImageFile.LoadFromByteArray(Images.IPadSplash);
                titleSize   = 36f;
                addressSize = 14f;
                lineHeight  = 50f;
            }

            var          titleBounds   = new RectangleF(5, (splashImage.Height - 5) - (lineHeight * 2f), splashImage.Width - 10f, lineHeight);
            var          addressBounds = new RectangleF(5, titleBounds.Bottom + 5, splashImage.Width - 10f, lineHeight);
            const string title         = "Virtual Radar Server";

            return(_ImageFile.CloneAndDraw(splashImage, drawing => {
                using (var fontAndText = _FontFactory.GetFontForRectangle(
                           drawing,
                           _SplashFontFamily,
                           _SplashFontStyle,
                           titleSize,
                           6.0F,
                           titleBounds.Width,
                           titleBounds.Height,
                           title,
                           useCache: true
                           )) {
                    drawing.DrawText(
                        fontAndText.Text,
                        fontAndText.Font,
                        _SplashFillBrush,
                        null,
                        titleBounds.Left + (titleBounds.Width / 2.0F),
                        titleBounds.Top + lineHeight,
                        HorizontalAlignment.Centre,
                        preferSpeedOverQuality: false
                        );
                }

                using (var fontAndText = _FontFactory.GetFontForRectangle(
                           drawing,
                           _SplashFontFamily,
                           _SplashFontStyle,
                           addressSize,
                           6.0F,
                           addressBounds.Width,
                           addressBounds.Height,
                           webSiteAddress,
                           useCache: true
                           )) {
                    drawing.DrawText(
                        fontAndText.Text,
                        fontAndText.Font,
                        _SplashFillBrush,
                        null,
                        addressBounds.Left + (addressBounds.Width / 2.0F),
                        addressBounds.Top + lineHeight,
                        HorizontalAlignment.Centre,
                        preferSpeedOverQuality: false
                        );
                }
            }));
        }
Exemple #2
0
        /// <summary>
        /// Fills either of the stock image or temporary image parameters with the initial image to use (before any alterations are made).
        /// </summary>
        /// <param name="context"></param>
        /// <param name="imageRequest"></param>
        /// <param name="stockImage"></param>
        /// <param name="tempImage"></param>
        /// <returns></returns>
        private bool BuildInitialImage(OwinContext context, ImageRequest imageRequest, ref IImage stockImage, ref IImage tempImage)
        {
            var result = true;

            if (imageRequest.WebSiteFileName != null)
            {
                stockImage = _ImageServerConfiguration.ImageFileManager.LoadFromStandardPipeline(imageRequest.WebSiteFileName, !imageRequest.NoCache, context.Environment);
            }
            else
            {
                switch (imageRequest.ImageName)
                {
                case "AIRPLANE":                stockImage = _ImageFile.LoadFromByteArray(Images.Marker_Airplane); break;

                case "AIRPLANESELECTED":        stockImage = _ImageFile.LoadFromByteArray(Images.Marker_AirplaneSelected); break;

                case "BLANK":                   tempImage = _Graphics.CreateBlankImage(imageRequest.Width.GetValueOrDefault(), imageRequest.Height.GetValueOrDefault()); break;

                case "CHEVRONBLUECIRCLE":       stockImage = _ImageFile.LoadFromByteArray(Images.ChevronBlueCircle); break;

                case "CHEVRONGREENCIRCLE":      stockImage = _ImageFile.LoadFromByteArray(Images.ChevronGreenCircle); break;

                case "CHEVRONREDCIRCLE":        stockImage = _ImageFile.LoadFromByteArray(Images.ChevronRedCircle); break;

                case "CLOSESLIDER":             stockImage = _ImageFile.LoadFromByteArray(Images.CloseSlider); break;

                case "COMPASS":                 stockImage = _ImageFile.LoadFromByteArray(Images.Compass); break;

                case "CORNER-TL":               stockImage = _ImageFile.LoadFromByteArray(Images.Corner_TopLeft); break;

                case "CORNER-TR":               stockImage = _ImageFile.LoadFromByteArray(Images.Corner_TopRight); break;

                case "CORNER-BL":               stockImage = _ImageFile.LoadFromByteArray(Images.Corner_BottomLeft); break;

                case "CORNER-BR":               stockImage = _ImageFile.LoadFromByteArray(Images.Corner_BottomRight); break;

                case "CROSSHAIR":               stockImage = _ImageFile.LoadFromByteArray(Images.Crosshair); break;

                case "GOTOCURRENTLOCATION":     stockImage = _ImageFile.LoadFromByteArray(Images.GotoCurrentLocation); break;

                case "GROUNDVEHICLE":           stockImage = _ImageFile.LoadFromByteArray(Images.FollowMe); break;

                case "GROUNDVEHICLESELECTED":   stockImage = _ImageFile.LoadFromByteArray(Images.FollowMe); break;

                case "HEADING":                 stockImage = _ImageFile.LoadFromByteArray(Images.SmallPlaneNorth); break;

                case "HIDELIST":                stockImage = _ImageFile.LoadFromByteArray(Images.HideList); break;

                case "IPHONEBACKBUTTON":        stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneBackButton); break;

                case "IPHONEBLUEBUTTON":        stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneBlueButton); break;

                case "IPHONECHEVRON":           stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneChevron); break;

                case "IPHONEGRAYBUTTON":        stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneGrayButton); break;

                case "IPHONEICON":              stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneIcon); break;

                case "IPHONELISTGROUP":         stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneListGroup); break;

                case "IPHONEONOFF":             stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneOnOff); break;

                case "IPHONEPINSTRIPES":        stockImage = _ImageFile.LoadFromByteArray(Images.IPhonePinstripes); break;

                case "IPHONESELECTEDTICK":      stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneSelectedTick); break;

                case "IPHONESELECTION":         stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneSelection); break;

                case "IPHONESPLASH":
                    var webSiteAddress = new StringBuilder();
                    webSiteAddress.Append(String.IsNullOrEmpty(context.RequestScheme) ? "http" : context.RequestScheme);
                    webSiteAddress.Append("://");
                    webSiteAddress.Append(String.IsNullOrEmpty(context.RequestHost) ? "127.0.0.1" : context.RequestHost);
                    webSiteAddress.Append(context.RequestPathBase);
                    tempImage = _Graphics.CreateIPhoneSplash(
                        webSiteAddress.ToString(),
                        context.RequestHeadersDictionary.UserAgentValue.IsTabletUserAgentString,
                        new List <string>(context.RequestPathParts)
                        );
                    break;

                case "IPHONETOOLBAR":           stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneToolbar); break;

                case "IPHONETOOLBUTTON":        stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneToolButton); break;

                case "IPHONEWHITEBUTTON":       stockImage = _ImageFile.LoadFromByteArray(Images.IPhoneWhiteButton); break;

                case "MINUS":                   stockImage = _ImageFile.LoadFromByteArray(Images.Collapse); break;

                case "MOVINGMAPCHECKED":        stockImage = _ImageFile.LoadFromByteArray(Images.MovingMapChecked); break;

                case "MOVINGMAPUNCHECKED":      stockImage = _ImageFile.LoadFromByteArray(Images.MovingMapUnchecked); break;

                case "OPENSLIDER":              stockImage = _ImageFile.LoadFromByteArray(Images.OpenSlider); break;

                case "OPFLAG":                  tempImage = CreateLogoImage(imageRequest.File, _ImageServerConfiguration.OperatorFolder); break;

                case "PICTURE":
                    tempImage = CreateAirplanePicture(
                        imageRequest.File,
                        imageRequest.Size,
                        context.IsInternet,
                        imageRequest.Width,
                        imageRequest.Height
                        );
                    imageRequest.Width = imageRequest.Height = null;
                    break;

                case "PLUS":                    stockImage = _ImageFile.LoadFromByteArray(Images.Expand); break;

                case "ROWHEADER":               stockImage = _ImageFile.LoadFromByteArray(Images.RowHeader); break;

                case "ROWHEADERSELECTED":       stockImage = _ImageFile.LoadFromByteArray(Images.RowHeaderSelected); break;

                case "SHOWLIST":                stockImage = _ImageFile.LoadFromByteArray(Images.ShowList); break;

                case "TESTSQUARE":              stockImage = _ImageFile.LoadFromByteArray(Images.TestSquare); break;

                case "TOWER":                   stockImage = _ImageFile.LoadFromByteArray(Images.Tower); break;

                case "TOWERSELECTED":           stockImage = _ImageFile.LoadFromByteArray(Images.Tower); break;

                case "TRANSPARENT-25":          stockImage = _ImageFile.LoadFromByteArray(Images.Transparent_25); break;

                case "TRANSPARENT-50":          stockImage = _ImageFile.LoadFromByteArray(Images.Transparent_50); break;

                case "TYPE":                    tempImage = CreateLogoImage(imageRequest.File, _ImageServerConfiguration.SilhouettesFolder); break;

                case "VOLUME0":                 stockImage = _ImageFile.LoadFromByteArray(Images.Volume0); break;

                case "VOLUME25":                stockImage = _ImageFile.LoadFromByteArray(Images.Volume25); break;

                case "VOLUME50":                stockImage = _ImageFile.LoadFromByteArray(Images.Volume50); break;

                case "VOLUME75":                stockImage = _ImageFile.LoadFromByteArray(Images.Volume75); break;

                case "VOLUME100":               stockImage = _ImageFile.LoadFromByteArray(Images.Volume100); break;

                case "VOLUMEDOWN":              stockImage = _ImageFile.LoadFromByteArray(Images.VolumeDown); break;

                case "VOLUMEMUTE":              stockImage = _ImageFile.LoadFromByteArray(Images.VolumeMute); break;

                case "VOLUMEUP":                stockImage = _ImageFile.LoadFromByteArray(Images.VolumeUp); break;

                case "YOUAREHERE":              stockImage = _ImageFile.LoadFromByteArray(Images.BlueBall); break;

                default:                        result = false; break;
                }
            }

            if (result)
            {
                result = stockImage != null || tempImage != null;
            }

            return(result);
        }