diff options
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( |