Example #1
0
        public static ImageSetLayer Create(Imageset set)
        {
            ImageSetLayer isl = new ImageSetLayer();

            isl.imageSet = set;
            return(isl);
        }
Example #2
0
        public static void UpdateImage(ImageSetLayer isl, double z)
        {
            FitsImage    image = isl.ImageSet.WcsImage as FitsImage;
            SkyImageTile Tile  = (SkyImageTile)TileCache.GetTile(0, 0, 0, isl.ImageSet, null);
            double       low   = image.lastBitmapMin;
            double       hi    = image.lastBitmapMax;

            Tile.texture2d = image.GetScaledBitmap(low, hi, image.lastScale, Math.Floor(z * (image.Depth - 1)), null).GetTexture();
        }
Example #3
0
        public static void UpdateScale(ImageSetLayer isl, ScaleTypes scale, double low, double hi)
        {
            FitsImage    image           = isl.ImageSet.WcsImage as FitsImage;
            SkyImageTile Tile            = (SkyImageTile)TileCache.GetTile(0, 0, 0, isl.ImageSet, null);
            int          z               = image.lastBitmapZ;
            string       colorMapperName = image.lastBitmapColorMapperName;

            Tile.texture2d = image.GetScaledBitmap(low, hi, scale, z, colorMapperName).GetTexture();
        }
Example #4
0
 public static void UpdateImage(ImageSetLayer isl, double z)
 {
     if (!RenderContext.UseGlVersion2)
     {
         FitsImageJs  image = isl.ImageSet.WcsImage as FitsImageJs;
         SkyImageTile Tile  = (SkyImageTile)TileCache.GetTile(0, 0, 0, isl.ImageSet, null);
         Tile.texture2d = image.GetBitmap().GetTexture();
     }
 }
Example #5
0
 public static void UpdateColorMapper(ImageSetLayer isl, string colorMapperName)
 {
     isl.ImageSet.FitsProperties.ColorMapName = colorMapperName;
     if (!RenderContext.UseGlVersion2)
     {
         FitsImageJs  image = isl.ImageSet.WcsImage as FitsImageJs;
         SkyImageTile Tile  = (SkyImageTile)TileCache.GetTile(0, 0, 0, isl.ImageSet, null);
         Tile.texture2d = image.GetBitmap().GetTexture();
     }
 }
        public static Layer FromXml(XmlNode layerNode, bool someFlag)
        {
            string layerClassName = layerNode.Attributes.GetNamedItem("Type").Value.ToString();

            string overLayType = layerClassName.Replace("TerraViewer.", "");

            if (overLayType == null)
            {
                return(null);
            }

            Layer newLayer = null;

            switch (overLayType)
            {
            case "SpreadSheetLayer":
                newLayer = new SpreadSheetLayer();
                break;

            case "GreatCirlceRouteLayer":
                newLayer = new GreatCirlceRouteLayer();
                break;

            case "GridLayer":
                newLayer = new GridLayer();
                break;

            case "ImageSetLayer":
                newLayer = new ImageSetLayer();
                break;

            case "Object3dLayer":
                newLayer = new Object3dLayer();
                break;

            case "OrbitLayer":
                newLayer = new OrbitLayer();
                break;

            case "VoTableLayer":
                newLayer = new VoTableLayer();
                break;

            default:
                return(null);
            }

            //Force inheritance.
            // TODO: Understand why this breaks in SS .8
            //Script.Literal("for(var method in this){\n /*if (({}).toString.call(this[method]).match(/\\s([a-zA-Z]+)/)[1].toLowerCase() == 'function'){\n*/ newLayer[method] = this[method];/*\n}*/\n}");

            newLayer.InitFromXml(layerNode);

            return(newLayer);
        }
Example #7
0
 public static void UpdateScale(ImageSetLayer isl, ScaleTypes scale, double low, double hi)
 {
     isl.ImageSet.FitsProperties.ScaleType = scale;
     isl.ImageSet.FitsProperties.LowerCut  = low;
     isl.ImageSet.FitsProperties.UpperCut  = hi;
     if (!RenderContext.UseGlVersion2)
     {
         FitsImageJs  image = isl.ImageSet.WcsImage as FitsImageJs;
         SkyImageTile Tile  = (SkyImageTile)TileCache.GetTile(0, 0, 0, isl.ImageSet, null);
         Tile.texture2d = image.GetBitmap().GetTexture();
     }
 }
Example #8
0
        private static ImageSetLayer AddImageSet(string name, bool gotoTarget, ImagesetLoaded loaded, Imageset imageset)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                name = LayerManager.GetNextImageSetName();
            }
            ImageSetLayer imagesetLayer = LayerManager.AddImageSetLayer(imageset, name);

            if (gotoTarget)
            {
                WWTControl.Singleton.GotoRADecZoom(imageset.CenterX / 15, imageset.CenterY,
                                                   WWTControl.Singleton.RenderContext.ViewCamera.Zoom, false, null);
            }
            if (loaded != null)
            {
                loaded(imagesetLayer);
            }

            return(imagesetLayer);
        }
Example #9
0
        private static ImageSetLayer AddImageSet(string name, bool gotoTarget, ImagesetLoaded loaded, Imageset imageset)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                name = LayerManager.GetNextImageSetName();
            }

            ImageSetLayer imagesetLayer = LayerManager.AddImageSetLayerCallback(imageset, name, loaded);

            if (gotoTarget)
            {
                double zoom = imageset.GuessZoomSetting(WWTControl.Singleton.RenderContext.ViewCamera.Zoom);

                WWTControl.Singleton.GotoRADecZoom(
                    imageset.ViewCenterX / 15,
                    imageset.ViewCenterY,
                    zoom,
                    false,
                    null
                    );
            }

            return(imagesetLayer);
        }
Example #10
0
        private static ImageSetLayer AddFitsLayer(string url, string name, bool gotoTarget, ImagesetLoaded loaded)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                name = LayerManager.GetNextFitsName();
            }

            ImageSetLayer imagesetLayer = new ImageSetLayer();
            Imageset      imageset      = new Imageset();

            WcsLoaded wcsLoaded = delegate(WcsImage wcsImage)
            {
                if (((FitsImage)wcsImage).errored)
                {
                    return;
                }

                int width  = (int)wcsImage.SizeX;
                int height = (int)wcsImage.SizeY;
                //TODO make sure dataset URL is unique
                imageset.SetInitialParameters(
                    wcsImage.Description,
                    wcsImage.Filename,
                    ImageSetType.Sky,
                    BandPass.Visible,
                    ProjectionType.SkyImage,
                    Util.GetHashCode(wcsImage.Filename),
                    0,
                    0,
                    wcsImage.ScaleY,
                    ".fits",
                    wcsImage.ScaleX > 0,
                    "",
                    wcsImage.CenterX,
                    wcsImage.CenterY,
                    wcsImage.Rotation,
                    false,
                    "",
                    false,
                    false,
                    1,
                    wcsImage.ReferenceX,
                    wcsImage.ReferenceY,
                    wcsImage.Copyright,
                    wcsImage.CreditsUrl,
                    "",
                    "",
                    0,
                    ""
                    );

                imageset.WcsImage      = wcsImage;
                imagesetLayer.ImageSet = imageset;
                LayerManager.AddFitsImageSetLayer(imagesetLayer, name);

                if (gotoTarget)
                {
                    double zoom = imageset.GuessZoomSetting(WWTControl.Singleton.RenderContext.ViewCamera.Zoom);

                    WWTControl.Singleton.GotoRADecZoom(
                        wcsImage.ViewCenterX / 15,
                        wcsImage.ViewCenterY,
                        zoom,
                        false,
                        null
                        );
                }

                if (loaded != null)
                {
                    loaded(imagesetLayer);
                }
            };

            if (string.IsNullOrWhiteSpace(name))
            {
                name = LayerManager.GetNextFitsName();
            }

            if (RenderContext.UseGlVersion2)
            {
                new FitsImage(imageset, url, null, wcsLoaded);
            }
            else
            {
                new FitsImageJs(imageset, url, null, wcsLoaded);
            }
            return(imagesetLayer);
        }
Example #11
0
        public ImageSetLayer LoadFitsLayer(string url, string name, bool gotoTarget, ImagesetLoaded loaded)
        {
            if (string.IsNullOrWhiteSpace(name))
            {
                name = LayerManager.GetNextFitsName();
            }

            ImageSetLayer imagesetLayer = new ImageSetLayer();

            FitsImage img = new FitsImage(url, null, delegate(WcsImage wcsImage)
            {
                int width  = (int)wcsImage.SizeX;
                int height = (int)wcsImage.SizeY;

                Imageset imageset = Imageset.Create(
                    wcsImage.Description,
                    Util.GetHashCode(wcsImage.Filename).ToString(),
                    ImageSetType.Sky,
                    BandPass.Visible,
                    ProjectionType.SkyImage,
                    Util.GetHashCode(wcsImage.Filename),
                    0,
                    0,
                    256,
                    wcsImage.ScaleY,
                    ".tif",
                    wcsImage.ScaleX > 0,
                    "",
                    wcsImage.CenterX,
                    wcsImage.CenterY,
                    wcsImage.Rotation,
                    false,
                    "",
                    false,
                    false,
                    1,
                    wcsImage.ReferenceX,
                    wcsImage.ReferenceY,
                    wcsImage.Copyright,
                    wcsImage.CreditsUrl,
                    "",
                    "",
                    0,
                    ""
                    );

                imageset.WcsImage      = wcsImage;
                imagesetLayer.ImageSet = imageset;
                LayerManager.AddFitsImageSetLayer(imagesetLayer, name);
                LayerManager.LoadTree();
                if (gotoTarget)
                {
                    WWTControl.Singleton.GotoRADecZoom(wcsImage.CenterX / 15, wcsImage.CenterY, 10 * wcsImage.ScaleY * height, false);
                }
                if (loaded != null)
                {
                    loaded(imagesetLayer);
                }
            });

            return(imagesetLayer);
        }
        public string GetTourXML()
        {
            XmlTextWriter xmlWriter = new XmlTextWriter();

            xmlWriter.Formatting = Formatting.Indented;
            xmlWriter.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");
            xmlWriter.WriteStartElement("Tour");

            xmlWriter.WriteAttributeString("ID", this.id);
            xmlWriter.WriteAttributeString("Title", this.title);
            xmlWriter.WriteAttributeString("Descirption", this.Description);
            xmlWriter.WriteAttributeString("Description", this.Description);
            xmlWriter.WriteAttributeString("RunTime", ((double)this.RunTime / 1000.0).ToString());
            xmlWriter.WriteAttributeString("Author", this.author);
            xmlWriter.WriteAttributeString("AuthorEmail", this.authorEmail);
            xmlWriter.WriteAttributeString("OrganizationUrl", this.organizationUrl);
            xmlWriter.WriteAttributeString("OrganizationName", this.OrgName);
            xmlWriter.WriteAttributeString("Keywords", this.Keywords);
            xmlWriter.WriteAttributeString("UserLevel", Enums.ToXml("UserLevel", (int)level));
            xmlWriter.WriteAttributeString("Classification", Enums.ToXml("Classification", (int)type));
            xmlWriter.WriteAttributeString("Taxonomy", taxonomy.ToString());
            // xmlWriter.WriteAttributeString("DomeMode", DomeMode.ToString());
            bool timeLineTour = IsTimelineTour();

            xmlWriter.WriteAttributeString("TimeLineTour", timeLineTour.ToString());


            xmlWriter.WriteStartElement("TourStops");
            foreach (TourStop stop in TourStops)
            {
                stop.SaveToXml(xmlWriter, true);
            }
            xmlWriter.WriteEndElement();


            List <Guid> masterList = CreateLayerMasterList();

            // This will now save and sync emtpy frames...
            List <ReferenceFrame> referencedFrames = GetReferenceFrameList();

            xmlWriter.WriteStartElement("ReferenceFrames");
            foreach (ReferenceFrame item in referencedFrames)
            {
                item.SaveToXml(xmlWriter);
            }
            xmlWriter.WriteEndElement();


            xmlWriter.WriteStartElement("Layers");
            foreach (Guid id in masterList)
            {
                if (LayerManager.LayerList.ContainsKey(id))
                {
                    Layer    layer    = LayerManager.LayerList[id];
                    string   name     = layer.Name;
                    Imageset imageset = WWTControl.Singleton.RenderContext.GetCatalogHipsByName(name);
                    if (imageset != null)
                    {
                        ImageSetLayer imageSetLayer = ImageSetLayer.Create(imageset);
                        imageSetLayer.ID             = id;
                        imageSetLayer.Name           = name;
                        imageSetLayer.ReferenceFrame = "Sky";
                        imageSetLayer.SaveToXml(xmlWriter);
                    }
                    else
                    {
                        LayerManager.LayerList[id].SaveToXml(xmlWriter);
                    }
                }
            }
            xmlWriter.WriteEndElement();


            xmlWriter.WriteFullEndElement();
            xmlWriter.Close();

            return(xmlWriter.Body);
        }
        public void FromXml(XmlDocument doc)
        {
            XmlNode root = Util.SelectSingleNode(doc, "Tour");


            id     = root.Attributes.GetNamedItem("ID").Value.ToString();
            Title  = root.Attributes.GetNamedItem("Title").Value.ToString();
            Author = root.Attributes.GetNamedItem("Author").Value.ToString();

            if (root.Attributes.GetNamedItem("Descirption") != null)
            {
                Description = root.Attributes.GetNamedItem("Descirption").Value;
            }

            if (root.Attributes.GetNamedItem("AuthorEmail") != null)
            {
                authorEmail = root.Attributes.GetNamedItem("AuthorEmail").Value;
            }

            if (root.Attributes.GetNamedItem("Keywords") != null)
            {
                Keywords = root.Attributes.GetNamedItem("Keywords").Value;
            }

            if (root.Attributes.GetNamedItem("OrganizationName") != null)
            {
                OrgName = root.Attributes.GetNamedItem("OrganizationName").Value;
            }



            organizationUrl = root.Attributes.GetNamedItem("OrganizationUrl").Value;

            level = (UserLevel)Enums.Parse("UserLevel", root.Attributes.GetNamedItem("UserLevel").Value);

            type = (Classification)Enums.Parse("Classification", root.Attributes.GetNamedItem("Classification").Value);

            taxonomy = root.Attributes.GetNamedItem("Taxonomy").Value.ToString();
            XmlNode TourStops = Util.SelectSingleNode(root, "TourStops");

            foreach (XmlNode tourStop in TourStops.ChildNodes)
            {
                if (tourStop.Name == "TourStop")
                {
                    AddTourStop(TourStop.FromXml(this, tourStop));
                }
            }

            XmlNode Frames = Util.SelectSingleNode(root, "ReferenceFrames");

            if (Frames != null)
            {
                foreach (XmlNode frame in Frames.ChildNodes)
                {
                    if (frame.Name == "ReferenceFrame")
                    {
                        ReferenceFrame newFrame = new ReferenceFrame();
                        newFrame.InitializeFromXml(frame);
                        if (!LayerManager.AllMaps.ContainsKey(newFrame.Name))
                        {
                            LayerMap map = new LayerMap(newFrame.Name, ReferenceFrames.Custom);
                            map.Frame          = newFrame;
                            map.LoadedFromTour = true;
                            LayerManager.AllMaps[newFrame.Name] = map;
                        }
                    }
                }
                LayerManager.ConnectAllChildren();
                LayerManager.LoadTree();
            }

            XmlNode Layers = Util.SelectSingleNode(root, "Layers");

            if (Layers != null)
            {
                foreach (XmlNode layer in Layers.ChildNodes)
                {
                    if (layer.Name == "Layer")
                    {
                        Layer newLayer = Layer.FromXml(layer, true);//.Layer.FromXml(layer, true);
                        if (newLayer != null)
                        {
                            if (newLayer is ImageSetLayer)
                            {
                                ImageSetLayer imageSetLayer = (ImageSetLayer)newLayer;
                                Imageset      imageset      = imageSetLayer.ImageSet;
                                if (imageset.Projection == ProjectionType.Healpix && imageset.Extension == ".tsv")
                                {
                                    WWTControl.Singleton.AddCatalogHips(imageset);
                                    continue;
                                }
                            }
                            string fileName = string.Format("{0}.txt", newLayer.ID.ToString());
                            if (LayerManager.LayerList.ContainsKey(newLayer.ID)) // && newLayer.ID != ISSLayer.ISSGuid)
                            {
                                //if (!CollisionChecked)
                                //{
                                //    if (UiTools.ShowMessageBox(Language.GetLocalizedText(958, "There are layers with the same name. Overwrite existing layers?"), Language.GetLocalizedText(3, "Microsoft WorldWide Telescope"), System.Windows.Forms.MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.Yes)
                                //    {
                                //        OverWrite = true;
                                //    }
                                //    else
                                //    {
                                //        OverWrite = false;

                                //    }
                                //    CollisionChecked = true;
                                //}

                                //if (OverWrite)
                                //{
                                LayerManager.DeleteLayerByID(newLayer.ID, true, false);
                                //}
                            }
                            try
                            {
                                newLayer.LoadedFromTour = true;
                                newLayer.LoadData(this, fileName);
                                LayerManager.Add(newLayer, false);
                            }
                            catch
                            {
                            }
                        }
                    }
                }
                LayerManager.LoadTree();
            }

            //todo author
            //if (File.Exists(WorkingDirectory + "Author.png"))
            //{
            //    authorImage = UiTools.LoadBitmap(WorkingDirectory + "Author.png");
            //}

            tourDirty = 0;
        }