diff --git a/examples/al-footprints.html b/examples/al-footprints.html
index 3dee780d..43a5a92a 100644
--- a/examples/al-footprints.html
+++ b/examples/al-footprints.html
@@ -13,7 +13,7 @@
// Start up Aladin Lite
aladin = A.aladin('#aladin-lite-div', {survey: "CDS/P/DSS2/color", target: 'M 1', fov: 0.2, showContextMenu: true, fullScreen: true});
var overlay = A.graphicOverlay({color: '#ee2345', lineWidth: 3, lineDash: [2, 2]});
- aladin.addOverlay(overlay);
+ /*aladin.addOverlay(overlay);
overlay.addFootprints([
A.polygon([[83.64287, 22.01713], [83.59872, 22.01692], [83.59852, 21.97629], [83.64295, 21.97629]], {hoverColor: 'green'}),
A.polygon([[83.62807, 22.06330], [83.58397, 22.02280], [83.62792, 22.02258]]),
@@ -21,7 +21,7 @@
]);
overlay.add(A.circle(83.66067, 22.03081, 0.04, {color: 'cyan'})); // radius in degrees
overlay.add(A.vector(83.66067, 22.03081, 0.04, {color: 'cyan'})); // radius in degrees
-
+ */
aladin.on("footprintClicked", (footprint, xyMouseCoords) => {
console.log("footprint clicked catched: ", footprint, "mouse coords xy: ", xyMouseCoords.x, xyMouseCoords.y);
})
@@ -35,7 +35,7 @@
console.log("Object hovered stopped: ", object, "mouse coords xy: ", xyMouseCoords.x, xyMouseCoords.y);
})
- const cat = A.catalogFromVizieR('B/assocdata/obscore', 'M 1', 10, {onClick: 'showTable', hoverColor: 'purple', limit: 10000});
+ const cat = A.catalogFromVizieR('B/assocdata/obscore', 'M 1', 10, {onClick: 'showTable', selectionColor: "orange", hoverColor: 'red', limit: 10000});
aladin.addCatalog(cat);
});
diff --git a/examples/al-hips-cube.html b/examples/al-hips-cube.html
index b66b6e0c..627ec159 100644
--- a/examples/al-hips-cube.html
+++ b/examples/al-hips-cube.html
@@ -30,8 +30,8 @@
}
);
- hips = aladin.newImageSurvey("https://alasky.cds.unistra.fr/CALIFA/V500DR2/");
- aladin.setImageLayer(hips)
+ //hips = aladin.newImageSurvey("https://alasky.cds.unistra.fr/GALFAHI/GALFAHI-Narrow-DR2/");
+ //aladin.setImageLayer(hips)
/*let id;
aladin.on("zoomChanged", () => {
diff --git a/src/core/src/renderable/hips/d3/buffer.rs b/src/core/src/renderable/hips/d3/buffer.rs
index 46ac7338..d75f089b 100644
--- a/src/core/src/renderable/hips/d3/buffer.rs
+++ b/src/core/src/renderable/hips/d3/buffer.rs
@@ -20,7 +20,6 @@ pub struct HiPS3DBuffer {
textures: HashMap,
config: HiPSConfig,
- num_root_textures_available: u8,
available_tiles_during_frame: bool,
@@ -31,14 +30,12 @@ impl HiPS3DBuffer {
pub fn new(gl: &WebGlContext, config: HiPSConfig) -> Result {
let textures = HashMap::new();
- let num_root_textures_available = 0;
let available_tiles_during_frame = false;
let gl = gl.clone();
Ok(Self {
config,
- num_root_textures_available,
textures,
available_tiles_during_frame,
gl,
@@ -135,14 +132,12 @@ impl HpxTileBuffer for HiPS3DBuffer {
fn new(gl: &WebGlContext, config: HiPSConfig) -> Result {
let textures = HashMap::new();
- let num_root_textures_available = 0;
let available_tiles_during_frame = false;
let gl = gl.clone();
Ok(Self {
config,
- num_root_textures_available,
textures,
available_tiles_during_frame,
gl,
@@ -158,7 +153,15 @@ impl HpxTileBuffer for HiPS3DBuffer {
}
fn set_image_ext(&mut self, gl: &WebGlContext, ext: ImageExt) -> Result<(), JsValue> {
- todo!();
+ self.config.set_image_ext(ext)?;
+
+ let channel = self.config.get_format().get_channel();
+
+ self.textures.clear();
+ //self.ready = false;
+ self.available_tiles_during_frame = true;
+
+ Ok(())
}
fn read_pixel(&self, pos: &LonLatT, camera: &CameraViewPort) -> Result {
diff --git a/src/core/src/renderable/hips/d3/mod.rs b/src/core/src/renderable/hips/d3/mod.rs
index 7b794692..0be3436c 100644
--- a/src/core/src/renderable/hips/d3/mod.rs
+++ b/src/core/src/renderable/hips/d3/mod.rs
@@ -580,7 +580,7 @@ impl HiPS3D {
// * there are new available tiles for the GPU
let mut off_idx = 0;
- let shader = get_raster_shader(cmap, &self.gl, shaders, &hips_cfg)?.bind(&self.gl);
+ let shader = get_raster_shader(cmap, &self.gl, shaders, &hips_cfg)?;
for (slice_idx, (cell, num_indices)) in self
.slice_indices
@@ -588,7 +588,11 @@ impl HiPS3D {
.zip(self.cells.iter().zip(self.num_indices.iter()))
{
blend_cfg.enable(&self.gl, || {
- shader
+ // Bind the shader at each draw of a cell to not exceed the max number of tex image units bindable
+ // to a shader. It is 32 in my case
+ let shaderbound = shader.bind(&self.gl);
+
+ shaderbound
.attach_uniform(
"tex",
self.buffer
diff --git a/src/core/src/renderable/hips/d3/texture.rs b/src/core/src/renderable/hips/d3/texture.rs
index e27d3d32..c51edfa1 100644
--- a/src/core/src/renderable/hips/d3/texture.rs
+++ b/src/core/src/renderable/hips/d3/texture.rs
@@ -147,7 +147,14 @@ impl HpxTexture3D {
}
}
Err(i) => {
- match (self.block_indices.get(i - 1), self.block_indices.get(i)) {
+ let prev_block = if i > 0 {
+ self.block_indices.get(i - 1)
+ } else {
+ None
+ };
+
+ let cur_block = self.block_indices.get(i);
+ match (prev_block, cur_block) {
(Some(b_idx_1), Some(b_idx_2)) => {
let b1 = self.blocks[*b_idx_1];
let b2 = self.blocks[*b_idx_2];
@@ -184,9 +191,9 @@ impl HpxTexture3D {
}
pub fn get_3d_block_from_slice(&self, slice: u16) -> Option<&Texture3D> {
- let block_idx = slice >> 5;
+ let block_idx = (slice >> 5) as usize;
- self.textures[block_idx as usize].as_ref()
+ self.textures[block_idx].as_ref()
}
pub fn extract_2d_slice_texture(&self, slice: u16) -> Option {
diff --git a/src/js/A.js b/src/js/A.js
index 1ee99e4e..fed74b01 100644
--- a/src/js/A.js
+++ b/src/js/A.js
@@ -570,39 +570,41 @@ A.catalog = function (options) {
*/
A.catalogFromURL = function (url, options, successCallback, errorCallback, useProxy) {
options.url = url;
- var catalog = A.catalog(options);
+ var c = A.catalog(options);
const processVOTable = function (table) {
let {sources, fields} = table;
- catalog.setFields(fields);
- catalog.addSources(sources);
+ c.setFields(fields);
+ c.addSources(sources);
const s_regionFieldFound = Array.from(Object.keys(fields)).find((f) => f.toLowerCase() === 's_region');
- if (s_regionFieldFound && typeof catalog.shape !== 'function') {
+ if (s_regionFieldFound && typeof c.shape !== 'function') {
// set the shape
- catalog.setShape((s) => {
+ c.setShape((s) => {
if (!s.data.s_region)
return;
const shapes = A.footprintsFromSTCS(s.data.s_region, options)
let fp = new Footprint(shapes, s);
- fp.setColor(catalog.color);
+ fp.setColor(c.color);
+ fp.setHoverColor(c.hoverColor);
+ fp.setSelectionColor(c.selectionColor);
return fp;
})
}
if (successCallback) {
- successCallback(catalog);
+ successCallback(c);
}
if (sources.length === 0) {
- console.warn(catalog.name + ' has no sources!')
+ console.warn(c.name + ' has no sources!')
}
// Even if the votable is not a proper ObsCore one, try to see if specific columns are given
// e.g. access_format and access_url
- //ObsCore.handleActions(catalog);
+ //ObsCore.handleActions(c);
};
if (useProxy !== undefined) {
@@ -610,9 +612,9 @@ A.catalogFromURL = function (url, options, successCallback, errorCallback, usePr
url,
processVOTable,
errorCallback,
- catalog.maxNbSources,
+ c.maxNbSources,
useProxy,
- catalog.raField, catalog.decField
+ c.raField, c.decField
);
} else {
Catalog.parseVOTable(
@@ -623,18 +625,18 @@ A.catalogFromURL = function (url, options, successCallback, errorCallback, usePr
url,
processVOTable,
errorCallback,
- catalog.maxNbSources,
+ c.maxNbSources,
true,
- catalog.raField, catalog.decField
+ c.raField, c.decField
);
},
- catalog.maxNbSources,
+ c.maxNbSources,
false,
- catalog.raField, catalog.decField
+ c.raField, c.decField
);
}
- return catalog;
+ return c;
};
/**
diff --git a/src/js/Catalog.js b/src/js/Catalog.js
index f6f5d303..694b2144 100644
--- a/src/js/Catalog.js
+++ b/src/js/Catalog.js
@@ -116,6 +116,7 @@ export let Catalog = (function () {
this.filterFn = options.filter || undefined; // TODO: do the same for catalog
this.selectionColor = options.selectionColor || "#00ff00";
this.hoverColor = options.hoverColor || this.color;
+
this.displayLabel = options.displayLabel || false;
this.labelColor = options.labelColor || this.color;
this.labelFont = options.labelFont || "10px sans-serif";
@@ -499,7 +500,7 @@ export let Catalog = (function () {
options = options || {};
this.color = options.color || this.color || Color.getNextColor();
this.selectionColor = options.selectionColor || this.selectionColor || Color.getNextColor();
- this.hoverColor = options.hoverColor || this.color;
+ this.hoverColor = options.hoverColor || this.hoverColor || this.color;
this.sourceSize = options.sourceSize || this.sourceSize || 6;
this.shape = options.shape || this.shape || "square";
this.onClick = options.onClick || this.onClick;
diff --git a/src/js/Footprint.js b/src/js/Footprint.js
index a9e487bb..5932a572 100644
--- a/src/js/Footprint.js
+++ b/src/js/Footprint.js
@@ -70,7 +70,7 @@ export let Footprint= (function() {
if (this.source) {
this.source.setCatalog(catalog);
- for (var s of this.shapes) {
+ /*for (var s of this.shapes) {
if (!s.color) {
s.setColor(catalog.color);
}
@@ -78,7 +78,7 @@ export let Footprint= (function() {
// Selection and hover color are catalog options
s.setSelectionColor(catalog.selectionColor);
s.setHoverColor(catalog.hoverColor);
- }
+ }*/
}
};
diff --git a/src/js/gui/Box/HiPSBrowserBox.js b/src/js/gui/Box/HiPSBrowserBox.js
index 441bf774..ab36d969 100644
--- a/src/js/gui/Box/HiPSBrowserBox.js
+++ b/src/js/gui/Box/HiPSBrowserBox.js
@@ -116,9 +116,6 @@ export class HiPSBrowserBox extends Box {
searchDropdown.removeClass('aladin-valid')
searchDropdown.removeClass('aladin-not-valid')
},
- change(e) {
- _parseHiPS(e)
- },
},
});
@@ -277,6 +274,7 @@ export class HiPSBrowserBox extends Box {
}
_addHiPS(id) {
+ console.log("add hips", id)
let self = this;
let hips = A.imageHiPS(id, {
successCallback: (hips) => {
diff --git a/src/js/shapes/Polyline.js b/src/js/shapes/Polyline.js
index d07acebd..563a36d9 100644
--- a/src/js/shapes/Polyline.js
+++ b/src/js/shapes/Polyline.js
@@ -236,6 +236,8 @@ export let Polyline = (function() {
if (!color || this.hoverColor == color) {
return;
}
+
+ console.log(color)
this.hoverColor = color;
if (this.overlay) {
this.overlay.reportChange();