aboutsummaryrefslogtreecommitdiffhomepage
path: root/tensorflow/tensorboard
diff options
context:
space:
mode:
authorGravatar Charles Nicholson <nicholsonc@google.com>2016-11-18 08:10:53 -0800
committerGravatar TensorFlower Gardener <gardener@tensorflow.org>2016-11-18 08:25:36 -0800
commitc9bd46f0ff07d5b415a220e3a2dae81bf4b65b7a (patch)
tree1fa2ebd6e9c20bf022f2b8a1cb132ae2088351db /tensorflow/tensorboard
parent662533b85c66f198b779bea147397e1441f3e482 (diff)
Start paring down the visualizer interface. Remove the label accessor from the
interface, the adapter provides it directly to the 3d label renderer. The label accessor is duplicated in the LabelRenderParams, because the canvas label renderer uses that structure. Will clean up + de-duplicate soon, this is just a first step. Change: 139582630
Diffstat (limited to 'tensorflow/tensorboard')
-rw-r--r--tensorflow/tensorboard/components/vz_projector/projectorScatterPlotAdapter.ts19
-rw-r--r--tensorflow/tensorboard/components/vz_projector/renderContext.ts2
-rw-r--r--tensorflow/tensorboard/components/vz_projector/scatterPlot.ts14
-rw-r--r--tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizer.ts8
-rw-r--r--tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizer3DLabels.ts2
-rw-r--r--tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerCanvasLabels.ts3
-rw-r--r--tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerSprites.ts1
-rw-r--r--tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerTraces.ts1
-rw-r--r--tensorflow/tensorboard/components/vz_projector/vz-projector.ts6
9 files changed, 23 insertions, 33 deletions
diff --git a/tensorflow/tensorboard/components/vz_projector/projectorScatterPlotAdapter.ts b/tensorflow/tensorboard/components/vz_projector/projectorScatterPlotAdapter.ts
index ecf34cb977..7fa9924813 100644
--- a/tensorflow/tensorboard/components/vz_projector/projectorScatterPlotAdapter.ts
+++ b/tensorflow/tensorboard/components/vz_projector/projectorScatterPlotAdapter.ts
@@ -82,9 +82,12 @@ export class ProjectorScatterPlotAdapter {
private selectedPointIndices: number[];
private neighborsOfFirstSelectedPoint: NearestEntry[];
private renderLabelsIn3D: boolean = false;
+ private labelPointAccessor: (index: number) => string;
private legendPointColorer: (index: number) => string;
private distanceMetric: DistanceFunction;
+ private labels3DVisualizer: ScatterPlotVisualizer3DLabels;
+
constructor(
scatterPlotContainer: d3.Selection<any>,
projectorEventContext: ProjectorEventContext) {
@@ -132,6 +135,13 @@ export class ProjectorScatterPlotAdapter {
this.legendPointColorer = legendPointColorer;
}
+ setLabelPointAccessor(labelPointAccessor: (index: number) => string) {
+ this.labelPointAccessor = labelPointAccessor;
+ if (this.labels3DVisualizer != null) {
+ this.labels3DVisualizer.setLabelAccessor(labelPointAccessor);
+ }
+ }
+
resize() {
this.scatterPlot.resize();
}
@@ -303,8 +313,8 @@ export class ProjectorScatterPlotAdapter {
}
return new LabelRenderParams(
- visibleLabels, scale, opacityFlags, LABEL_FONT_SIZE, fillColors,
- strokeColors);
+ this.labelPointAccessor, visibleLabels, scale, opacityFlags,
+ LABEL_FONT_SIZE, fillColors, strokeColors);
}
generatePointScaleFactorArray(
@@ -532,8 +542,11 @@ export class ProjectorScatterPlotAdapter {
private createVisualizers(inLabels3DMode: boolean) {
const scatterPlot = this.scatterPlot;
scatterPlot.removeAllVisualizers();
+ this.labels3DVisualizer = null;
if (inLabels3DMode) {
- scatterPlot.addVisualizer(new ScatterPlotVisualizer3DLabels());
+ this.labels3DVisualizer = new ScatterPlotVisualizer3DLabels();
+ this.labels3DVisualizer.setLabelAccessor(this.labelPointAccessor);
+ scatterPlot.addVisualizer(this.labels3DVisualizer);
} else {
scatterPlot.addVisualizer(new ScatterPlotVisualizerSprites());
scatterPlot.addVisualizer(
diff --git a/tensorflow/tensorboard/components/vz_projector/renderContext.ts b/tensorflow/tensorboard/components/vz_projector/renderContext.ts
index 544f23538c..27c1310992 100644
--- a/tensorflow/tensorboard/components/vz_projector/renderContext.ts
+++ b/tensorflow/tensorboard/components/vz_projector/renderContext.ts
@@ -19,6 +19,7 @@ limitations under the License.
*/
export class LabelRenderParams {
constructor(
+ public labelAccessor: (index: number) => string,
public pointIndices: Float32Array, public scaleFactors: Float32Array,
public useSceneOpacityFlags: Int8Array, public defaultFontSize: number,
public fillColors: Uint8Array, public strokeColors: Uint8Array) {}
@@ -45,7 +46,6 @@ export class RenderContext {
public screenHeight: number, public nearestCameraSpacePointZ: number,
public farthestCameraSpacePointZ: number, public backgroundColor: number,
public pointColors: Float32Array, public pointScaleFactors: Float32Array,
- public labelAccessor: (index: number) => string,
public labels: LabelRenderParams,
public traceColors: {[trace: number]: Float32Array},
public traceOpacities: Float32Array, public traceWidths: Float32Array) {}
diff --git a/tensorflow/tensorboard/components/vz_projector/scatterPlot.ts b/tensorflow/tensorboard/components/vz_projector/scatterPlot.ts
index 47036fa6c7..3a30a74503 100644
--- a/tensorflow/tensorboard/components/vz_projector/scatterPlot.ts
+++ b/tensorflow/tensorboard/components/vz_projector/scatterPlot.ts
@@ -79,7 +79,6 @@ export class ScatterPlot {
private containerNode: HTMLElement;
private visualizers: ScatterPlotVisualizer[] = [];
- private labelAccessor: (index: number) => string;
private onCameraMoveListeners: OnCameraMoveListener[] = [];
private height: number;
@@ -560,9 +559,6 @@ export class ScatterPlot {
if (this.scene) {
visualizer.setScene(this.scene);
}
- if (this.labelAccessor) {
- visualizer.onSetLabelAccessor(this.labelAccessor);
- }
visualizer.onResize(this.width, this.height);
if (this.dataSet) {
visualizer.onPointPositionsChanged(
@@ -610,8 +606,7 @@ export class ScatterPlot {
this.camera, cameraType, this.orbitCameraControls.target, this.width,
this.height, cameraSpacePointExtents[0], cameraSpacePointExtents[1],
this.backgroundColor, this.pointColors, this.pointScaleFactors,
- this.labelAccessor, this.labels, this.traceColors, this.traceOpacities,
- this.traceWidths);
+ this.labels, this.traceColors, this.traceOpacities, this.traceWidths);
// Render first pass to picking target. This render fills pickingTexture
// with colors that are actually point ids, so that sampling the texture at
@@ -637,13 +632,6 @@ export class ScatterPlot {
this.renderer.render(this.scene, this.camera);
}
- setLabelAccessor(labelAccessor: (index: number) => string) {
- this.labelAccessor = labelAccessor;
- this.visualizers.forEach(v => {
- v.onSetLabelAccessor(labelAccessor);
- });
- }
-
setMouseMode(mouseMode: MouseMode) {
this.mouseMode = mouseMode;
if (mouseMode === MouseMode.AREA_SELECT) {
diff --git a/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizer.ts b/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizer.ts
index 07ffd0b011..2d7f5cd640 100644
--- a/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizer.ts
+++ b/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizer.ts
@@ -13,8 +13,8 @@ See the License for the specific language governing permissions and
limitations under the License.
==============================================================================*/
-import {RenderContext} from './renderContext';
import {DataSet} from './data';
+import {RenderContext} from './renderContext';
/**
* ScatterPlotVisualizer is an interface used by ScatterPlotContainer
@@ -36,12 +36,6 @@ export interface ScatterPlotVisualizer {
onPointPositionsChanged(
newWorldSpacePointPositions: Float32Array, dataSet: DataSet);
/**
- * Called when the label accessor (functor that maps point ids to text labels)
- * changes. The label accessor is also part of RenderContext, but visualizers
- * may need it outside of a render call, to learn when it changes.
- */
- onSetLabelAccessor(labelAccessor: (index: number) => string);
- /**
* Called immediately before the main scatter plot performs a picking
* (selection) render. Set up render state for any geometry to use picking IDs
* instead of visual colors.
diff --git a/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizer3DLabels.ts b/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizer3DLabels.ts
index 6a698bcbef..3811e10c57 100644
--- a/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizer3DLabels.ts
+++ b/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizer3DLabels.ts
@@ -319,7 +319,7 @@ export class ScatterPlotVisualizer3DLabels implements ScatterPlotVisualizer {
}
}
- onSetLabelAccessor(labelAccessor: (index: number) => string) {
+ setLabelAccessor(labelAccessor: (index: number) => string) {
this.labelAccessor = labelAccessor;
this.dispose();
this.onPointPositionsChanged(this.worldSpacePointPositions, this.dataSet);
diff --git a/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerCanvasLabels.ts b/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerCanvasLabels.ts
index bcb48c8344..959b077a4d 100644
--- a/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerCanvasLabels.ts
+++ b/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerCanvasLabels.ts
@@ -112,7 +112,7 @@ export class ScatterPlotVisualizerCanvasLabels implements
};
if (grid.insert(textBoundingBox, true)) {
- const text = rc.labelAccessor(index);
+ const text = lrc.labelAccessor(index);
const fontSize = lrc.defaultFontSize * lrc.scaleFactors[i] * dpr;
this.gc.font = fontSize + 'px roboto';
@@ -176,5 +176,4 @@ export class ScatterPlotVisualizerCanvasLabels implements
setScene(scene: THREE.Scene) {}
onPickingRender(renderContext: RenderContext) {}
- onSetLabelAccessor(labelAccessor: (index: number) => string) {}
}
diff --git a/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerSprites.ts b/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerSprites.ts
index 5af3eea92b..db1fb691fa 100644
--- a/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerSprites.ts
+++ b/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerSprites.ts
@@ -387,5 +387,4 @@ export class ScatterPlotVisualizerSprites implements ScatterPlotVisualizer {
}
onResize(newWidth: number, newHeight: number) {}
- onSetLabelAccessor(labelAccessor: (index: number) => string) {}
}
diff --git a/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerTraces.ts b/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerTraces.ts
index 57d4b0611b..ec71a93414 100644
--- a/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerTraces.ts
+++ b/tensorflow/tensorboard/components/vz_projector/scatterPlotVisualizerTraces.ts
@@ -146,5 +146,4 @@ export class ScatterPlotVisualizerTraces implements ScatterPlotVisualizer {
onPickingRender(renderContext: RenderContext) {}
onResize(newWidth: number, newHeight: number) {}
- onSetLabelAccessor(labelAccessor: (index: number) => string) {}
}
diff --git a/tensorflow/tensorboard/components/vz_projector/vz-projector.ts b/tensorflow/tensorboard/components/vz_projector/vz-projector.ts
index 3b03b2f8fc..655a75b7f4 100644
--- a/tensorflow/tensorboard/components/vz_projector/vz-projector.ts
+++ b/tensorflow/tensorboard/components/vz_projector/vz-projector.ts
@@ -130,8 +130,7 @@ export class Projector extends ProjectorPolymer implements
.metadata[this.selectedLabelOption] as string;
};
this.metadataCard.setLabelOption(this.selectedLabelOption);
- this.projectorScatterPlotAdapter.scatterPlot.setLabelAccessor(
- labelAccessor);
+ this.projectorScatterPlotAdapter.setLabelPointAccessor(labelAccessor);
this.projectorScatterPlotAdapter.render();
}
@@ -402,8 +401,7 @@ export class Projector extends ProjectorPolymer implements
'' + this.dataSet.points[i].metadata[this.selectedLabelOption];
this.projectorScatterPlotAdapter = new ProjectorScatterPlotAdapter(
this.getScatterContainer(), this as ProjectorEventContext);
- this.projectorScatterPlotAdapter.scatterPlot.setLabelAccessor(
- labelAccessor);
+ this.projectorScatterPlotAdapter.setLabelPointAccessor(labelAccessor);
}
this.projectorScatterPlotAdapter.scatterPlot.onCameraMove(