Skip to content

Commit

Permalink
fix(cubeaxesactor): resize texture when number of ticks changes
Browse files Browse the repository at this point in the history
  • Loading branch information
finetjul committed Apr 5, 2024
1 parent 92ee3a3 commit ad7435e
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 27 deletions.
18 changes: 8 additions & 10 deletions Examples/Geometry/CubeAxes/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,17 +44,15 @@ const cubeAxes = vtkCubeAxesActor.newInstance();
cubeAxes.setCamera(renderer.getActiveCamera());
cubeAxes.setDataBounds(actor.getBounds());
// Replace ticks from axis 0
function myGenerateTicks(defaultGenerateTicks) {
return (dataBounds) => {
const res = defaultGenerateTicks(dataBounds);
const scale = d3scale.scaleLinear().domain([dataBounds[0], dataBounds[1]]);
res.ticks[0] = d3array.range(dataBounds[0], dataBounds[1], 0.1);
const format = scale.tickFormat(res.ticks[0].length);
res.tickStrings[0] = res.ticks[0].map(format);
return res;
};
function myGenerateTicks(dataBounds) {
const res = vtkCubeAxesActor.defaultGenerateTicks(dataBounds);
const scale = d3scale.scaleLinear().domain([dataBounds[0], dataBounds[1]]);
res.ticks[0] = d3array.range(dataBounds[0], dataBounds[1], 0.1);
const format = scale.tickFormat(res.ticks[0].length);
res.tickStrings[0] = res.ticks[0].map(format);
return res;
}
cubeAxes.setGenerateTicks(myGenerateTicks(cubeAxes.getGenerateTicks()));
cubeAxes.setGenerateTicks(myGenerateTicks);
renderer.addActor(cubeAxes);

renderer.resetCamera();
Expand Down
37 changes: 20 additions & 17 deletions Sources/Rendering/Core/CubeAxesActor/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -81,20 +81,18 @@ function applyTextStyle(ctx, style) {
ctx.font = `${style.fontStyle} ${style.fontSize}px ${style.fontFamily}`;
}

function defaultGenerateTicks(publicApi, model) {
return (dataBounds) => {
const ticks = [];
const tickStrings = [];
for (let i = 0; i < 3; i++) {
const scale = d3
.scaleLinear()
.domain([dataBounds[i * 2], dataBounds[i * 2 + 1]]);
ticks[i] = scale.ticks(5);
const format = scale.tickFormat(5);
tickStrings[i] = ticks[i].map(format);
}
return { ticks, tickStrings };
};
function defaultGenerateTicks(dataBounds) {
const ticks = [];
const tickStrings = [];
for (let i = 0; i < 3; i++) {
const scale = d3
.scaleLinear()
.domain([dataBounds[i * 2], dataBounds[i * 2 + 1]]);
ticks[i] = scale.ticks(5);
const format = scale.tickFormat(5);
tickStrings[i] = ticks[i].map(format);
}
return { ticks, tickStrings };
}

// many properties of this actor depend on the API specific view The main
Expand Down Expand Up @@ -824,7 +822,7 @@ function defaultValues(publicAPI, model, initialValues) {
axisLabels: null,
axisTitlePixelOffset: 35.0,
tickLabelPixelOffset: 12.0,
generateTicks: defaultGenerateTicks(publicAPI, model),
generateTicks: defaultGenerateTicks,
...initialValues,
axisTextStyle: {
fontColor: 'white',
Expand Down Expand Up @@ -865,7 +863,7 @@ export function extend(publicAPI, model, initialValues = {}) {
model._tmAtlas = new Map();

// for texture atlas
model.tmTexture = vtkTexture.newInstance();
model.tmTexture = vtkTexture.newInstance({ resizable: true });
model.tmTexture.setInterpolate(false);

publicAPI.getProperty().setDiffuse(0.0);
Expand Down Expand Up @@ -913,4 +911,9 @@ export const newInstance = macro.newInstance(extend, 'vtkCubeAxesActor');

// ----------------------------------------------------------------------------

export default { newInstance, extend, newCubeAxesActorHelper };
export default {
newInstance,
extend,
newCubeAxesActorHelper,
defaultGenerateTicks,
};

0 comments on commit ad7435e

Please sign in to comment.