public static FitsImageJs CreateHipsTile(Imageset dataset, string file, WcsLoaded callMeBack) { FitsImageJs fits = new FitsImageJs(dataset, file, null, callMeBack); fits.isHipsTile = true; return(fits); }
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(); } }
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 override void RequestImage() { if (IsCatalogTile) { if (!Downloading && !ReadyToRender) { Downloading = true; catalogData = new WebFile(this.URL); catalogData.OnStateChange = LoadCatalogData; catalogData.Send(); } } else if (GetHipsFileExtention() == ".fits") { if (!Downloading && !ReadyToRender) { Downloading = true; if (RenderContext.UseGlVersion2) { fitsImage = new FitsImageTile(dataset, URL, delegate(WcsImage wcsImage) { Downloading = false; errored = fitsImage.errored; TileCache.RemoveFromQueue(this.Key, true); if (!fitsImage.errored) { texReady = true; ReadyToRender = texReady && (DemReady || !demTile); RequestPending = false; MakeTexture(); } }); } else { FitsImageJs image = FitsImageJs.CreateHipsTile(dataset, URL, delegate(WcsImage wcsImage) { texReady = true; Downloading = false; errored = false; ReadyToRender = texReady && (DemReady || !demTile); RequestPending = false; TileCache.RemoveFromQueue(this.Key, true); texture2d = wcsImage.GetBitmap().GetTexture(); }); } } } else { base.RequestImage(); } }
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(); } }
public HistogramEqualization(FitsImageJs image, double min, double max) { this.min = min; this.max = max; factor = max - min; Histogram = image.ComputeHistogram(buckets); maxHistogramValue = Histogram[buckets]; lookup = new Byte[buckets]; int totalCounts = (int)(image.SizeX * image.SizeY); int sum = 0; for (int i = 0; i < buckets; i++) { sum += Histogram[i]; lookup[i] = (Byte)(Math.Min(255, ((sum * 255.0)) / totalCounts) + .5); } }
public override void LoadData(TourDocument tourDoc, string filename) { if (extension.ToLowerCase().StartsWith(".fit")) { System.Html.Data.Files.Blob blob = tourDoc.GetFileBlob(filename.Replace(".txt", extension)); FitsImage fi; if (RenderContext.UseGlVersion2) { fi = new FitsImage(imageSet, "image.fit", blob, DoneLoading); } else { fi = new FitsImageJs(imageSet, "image.fit", blob, DoneLoading); } imageSet.WcsImage = fi; } else { loaded = true; } }
public virtual void RequestImage() { if (dataset.Extension.ToLowerCase().IndexOf("fits") > -1) { if (!Downloading && !ReadyToRender) { Downloading = true; if (RenderContext.UseGlVersion2) { fitsImage = new FitsImageTile(dataset, URL, delegate(WcsImage wcsImage) { Downloading = false; errored = fitsImage.errored; TileCache.RemoveFromQueue(this.Key, true); if (!fitsImage.errored) { // For a non-HiPS tiled FITS, this is our // mechanism for notifying the layer creator // that the initial FITS data have loaded and // the FitsProperties can be trusted. if (Level == 0) { dataset.FitsProperties.FireMainImageLoaded(fitsImage); fitsImage.ApplyDisplaySettings(); } texReady = true; ReadyToRender = texReady && (DemReady || !demTile); RequestPending = false; MakeTexture(); } }); } else { fitsImage = FitsImageJs.CreateTiledFits(dataset, URL, delegate(WcsImage wcsImage) { if (Level == 0) { dataset.FitsProperties.FireMainImageLoaded(fitsImage); } texReady = true; Downloading = false; errored = fitsImage.errored; ReadyToRender = texReady && (DemReady || !demTile); RequestPending = false; TileCache.RemoveFromQueue(this.Key, true); texture2d = wcsImage.GetBitmap().GetTexture(); }); } } } else { if (Dataset.WcsImage != null) { texReady = true; Downloading = false; errored = false; ReadyToRender = true; RequestPending = false; TileCache.RemoveFromQueue(this.Key, true); return; } if (!Downloading && !ReadyToRender) { Downloading = true; texture = (ImageElement)Document.CreateElement("img"); CrossDomainImage xdomimg = (CrossDomainImage)(object)texture; texture.AddEventListener("load", delegate(ElementEvent e) { texReady = true; Downloading = false; errored = false; ReadyToRender = texReady && (DemReady || !demTile); RequestPending = false; TileCache.RemoveFromQueue(this.Key, true); MakeTexture(); }, false); texture.AddEventListener("error", delegate(ElementEvent e) { if (!texture.HasAttribute("proxyattempt")) { texture.SetAttribute("proxyattempt", true); // NOTE: `this.URL` is dynamically generated using // URLHelpers.rewrite(). Say that we request tiles from // example.com, which requires CORS proxying. Say also // that this callback is called for a request to a tile // that should in fact be available. If a different // request fails before this callback is called, // activateProxy() will be called on the example.com // domain, making it so that `this.URL` in the following // call goes through the proxy, making it so that // `new_url` is null, making it so that this tile is // erroneously marked as failed when it should not be. // The solution: make sure to check proxy activation // with the *original* request URL, `texture.Src`, not // the one that may have been updated, `this.URL`. string new_url = URLHelpers.singleton.activateProxy(texture.Src); if (new_url != null) { // null => don't bother: we know that the proxy won't help texture.Src = new_url; return; } } Downloading = false; ReadyToRender = false; errored = true; RequestPending = false; TileCache.RemoveFromQueue(this.Key, true); }, false); xdomimg.crossOrigin = "anonymous"; texture.Src = this.URL; } } }
public override void RequestImage() { fitsImage = dataset.WcsImage as FitsImage; if (fitsImage != null) { texReady = true; Downloading = false; errored = fitsImage.errored; RequestPending = false; TileCache.RemoveFromQueue(this.Key, true); if (RenderContext.UseGlVersion2) { MakeTexture(); ReadyToRender = true; } else { bmp = fitsImage.GetBitmap(); texture2d = bmp.GetTexture(); ReadyToRender = true; } } else if (dataset.Extension == ".fits" && dataset.WcsImage == null) { if (!Downloading && !ReadyToRender) { Downloading = true; if (RenderContext.UseGlVersion2) { fitsImage = new FitsImageTile(dataset, URL, delegate(WcsImage wcsImage) { Downloading = false; errored = fitsImage.errored; TileCache.RemoveFromQueue(this.Key, true); if (!fitsImage.errored) { // For a non-HiPS tiled FITS, this is our // mechanism for notifying the layer creator // that the initial FITS data have loaded and // the FitsProperties can be trusted. if (Level == 0) { dataset.FitsProperties.FireMainImageLoaded(fitsImage); } texReady = true; ReadyToRender = texReady && (DemReady || !demTile); RequestPending = false; MakeTexture(); ReadyToRender = true; } }); } else { fitsImage = FitsImageJs.CreateTiledFits(dataset, URL, delegate(WcsImage wcsImage) { if (Level == 0) { dataset.FitsProperties.FireMainImageLoaded(fitsImage); } texReady = true; Downloading = false; errored = fitsImage.errored; ReadyToRender = texReady && (DemReady || !demTile); RequestPending = false; TileCache.RemoveFromQueue(this.Key, true); bmp = wcsImage.GetBitmap(); texture2d = bmp.GetTexture(); ReadyToRender = true; }); } } } else { base.RequestImage(); } }