Skip to content

ENH: Add complete pole figure generation#42

Merged
imikejackson merged 8 commits intoBlueQuartzSoftware:developfrom
imikejackson:topic/complete_pole_figures
Apr 9, 2026
Merged

ENH: Add complete pole figure generation#42
imikejackson merged 8 commits intoBlueQuartzSoftware:developfrom
imikejackson:topic/complete_pole_figures

Conversation

@imikejackson
Copy link
Copy Markdown
Collaborator

Add utility to compose together 3 pole figures and optional legend into a single image.

@imikejackson imikejackson force-pushed the topic/complete_pole_figures branch 2 times, most recently from df141c2 to 9b9c17a Compare April 9, 2026 21:33
imikejackson and others added 8 commits April 9, 2026 19:14
…ration

Introduces the PoleFigureCompositor class with all required types
(CompositePoleFigureConfiguration_t, CompositePoleFigureResult, LayoutMetrics,
PoleFigureLayoutType) and stub method bodies. Registers the new .h and .cpp in
SourceList.cmake so EbsdLib builds them automatically.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Create PoleFigureCompositorTest.cpp with 4 test cases covering
  ConfigDefaults, Horizontal, Vertical, and Square layout metrics
- Add test file to Source/Test/CMakeLists.txt
- Implement computeLayoutMetrics in PoleFigureCompositor.cpp with
  font-measured xCharWidth for accurate subCanvasWidth, and correct
  page dimensions and figure origins for all three layout types

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… canvas composition

Fill in all remaining stub methods in PoleFigureCompositor: generatePoleFigures,
preprocessImages, flipAndMirror, convertColorOrder, drawPoleFigure, drawScalarBar,
drawInfoBlock, drawTitle, compositeToCanvas, and generateCompositeImage. Add fmt::fmt
link dependency to EbsdLib. Add 3 end-to-end tests covering horizontal/discrete/all
layout modes.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…ale propagation

- Use ebsdlib::constants::k_2PiF instead of inline 2*pi for arc drawing
- Match SIMPLNX ColorTable static_cast<float> pattern for float consistency
- Fix font accessor functions to not re-decode base64 on every call
- Propagate minScale/maxScale from LaueOps back through generateCompositeImage
- Change generateCompositeImage to take non-const config reference

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The sub-canvas width now includes an additional margin between the pole figure
image and the X axis label, preventing the label from being cut off at the
right edge, particularly visible in Square layout.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…Figures

Exemplars added for discrete pole figures.
@imikejackson imikejackson force-pushed the topic/complete_pole_figures branch from 9b9c17a to d6f889b Compare April 9, 2026 23:15
@imikejackson imikejackson merged commit edde3bf into BlueQuartzSoftware:develop Apr 9, 2026
6 checks passed
@imikejackson imikejackson deleted the topic/complete_pole_figures branch April 9, 2026 23:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant