Skip to content

Commit 7f66d0b

Browse files
committed
[1.3.53] 2025-10-10
- The visualizer can now render images with a transparent background. This is enabled with `Visualizer::setBackgroundTransparent` - `Visualizer::printWindow` can now write images in PNG format (necessary for transparent backgrounds) - Added navigation gizmo to visualizer window to make it easier to orient the view. This can be disabled with `Visualizer::hideNavigationGizmo()`. - The line width argument to `Visualizer::addLine()` now works properly on all platforms. - Fixed a bug where rectangle vertices were not returning the correct values when queried due to improper application of transformations. - By default, the visualizer now uses a gradient background texture image. The user can also manually set their own using `Visualizer::setBackgroundImage()`. - Added `Visualizer::setBackgroundSkyTexture()` to add a skybox background that automatically scales with the scene size. - Deprecated `Visualizer::addSkyDomeByCenter()` in favor of `Visualizer::setBackgroundSkyTexture()`. - Implemented Heckbert's "Nice Numbers" algorithm that generates clean, evenly-spaced tick values for the colorbar. - Implemented more efficient setting of optional object data `age`, which yields a huge speedup when setting age for many thousands of compound objects.
1 parent 6a1e8be commit 7f66d0b

38 files changed

+4076
-1138
lines changed

core/src/global.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1053,7 +1053,7 @@ bool helios::open_xml_file(const std::string &xml_file, pugi::xml_document &xmld
10531053
error_string = std::string(e.what());
10541054
return false;
10551055
}
1056-
1056+
10571057
// load file
10581058
pugi::xml_parse_result load_result = xmldoc.load_file(resolvedPath.string().c_str());
10591059

@@ -2597,7 +2597,7 @@ bool helios::isDirectoryPath(const std::string &path) {
25972597

25982598
// Handle special cases: dotfiles are usually files, not directories
25992599
if (filename.front() == '.' && filename != "." && filename != "..") {
2600-
return false; // .bashrc, .gitignore, .hidden files, etc.
2600+
return false; // .bashrc, .gitignore, .hidden files, etc.
26012601
}
26022602

26032603
// For other cases without extension, assume it's a directory

core/tests/Test_OBJ.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -701,7 +701,7 @@ TEST_CASE("OBJ File I/O - Correctness Validation") {
701701

702702
// Load the written file
703703
std::vector<uint> roundtrip_uuids;
704-
DOCTEST_CHECK_NOTHROW(roundtrip_uuids = ctx2.loadOBJ(intermediate_file.c_str(), true));
704+
DOCTEST_CHECK_NOTHROW(roundtrip_uuids = ctx2.loadOBJ(intermediate_file.c_str(), true));
705705

706706
// Write again
707707
std::string final_file = "lib/models/test_roundtrip2.obj";
@@ -1227,7 +1227,7 @@ map_d lib/images/solid.jpg
12271227
// Load the OBJ file with a default color (green) to ensure materials override it properly
12281228
std::vector<uint> UUIDs;
12291229
RGBcolor default_color = RGB::green;
1230-
DOCTEST_CHECK_NOTHROW(UUIDs = ctx.loadOBJ("lib/models/test_material_color.obj", make_vec3(0,0,0), make_vec3(1,1,1), nullrotation, default_color, "ZUP", true));
1230+
DOCTEST_CHECK_NOTHROW(UUIDs = ctx.loadOBJ("lib/models/test_material_color.obj", make_vec3(0, 0, 0), make_vec3(1, 1, 1), nullrotation, default_color, "ZUP", true));
12311231
DOCTEST_CHECK(UUIDs.size() == 1);
12321232

12331233
// Verify that the triangle was loaded

core/tests/Test_context.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@ TEST_CASE("Object Management") {
651651
Context ctx;
652652

653653
// Create a tile with texture
654-
std::vector<uint> UUIDs = ctx.addTile(nullorigin, make_vec2(1,1), nullrotation, make_int2(2,2), "lib/images/disk_texture.png");
654+
std::vector<uint> UUIDs = ctx.addTile(nullorigin, make_vec2(1, 1), nullrotation, make_int2(2, 2), "lib/images/disk_texture.png");
655655

656656
// Set color and override texture
657657
RGBcolor green_color = make_RGBcolor(0, 1, 0);
@@ -674,8 +674,7 @@ TEST_CASE("Object Management") {
674674
DOCTEST_CHECK(ctx.isPrimitiveTextureColorOverridden(UUIDs_copy[0]));
675675

676676
// Test with Triangle as well
677-
uint triangle = ctx.addTriangle(make_vec3(0,0,0), make_vec3(1,0,0), make_vec3(0,1,0), "lib/images/disk_texture.png",
678-
make_vec2(0,0), make_vec2(1,0), make_vec2(0,1));
677+
uint triangle = ctx.addTriangle(make_vec3(0, 0, 0), make_vec3(1, 0, 0), make_vec3(0, 1, 0), "lib/images/disk_texture.png", make_vec2(0, 0), make_vec2(1, 0), make_vec2(0, 1));
679678
RGBcolor blue_color = make_RGBcolor(0, 0, 1);
680679
ctx.setPrimitiveColor(triangle, blue_color);
681680
ctx.overridePrimitiveTextureColor(triangle);

core/tests/Test_functions.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -457,7 +457,7 @@ TEST_CASE("String, File Path, and Parsing Utilities") {
457457
}
458458
SUBCASE("Directory path detection") {
459459
// Test cases that should be detected as directories
460-
DOCTEST_CHECK(isDirectoryPath("./annotations") == true); // The bug case
460+
DOCTEST_CHECK(isDirectoryPath("./annotations") == true); // The bug case
461461
DOCTEST_CHECK(isDirectoryPath("./output") == true);
462462
DOCTEST_CHECK(isDirectoryPath("results") == true);
463463
DOCTEST_CHECK(isDirectoryPath("data/") == true);
@@ -477,7 +477,7 @@ TEST_CASE("String, File Path, and Parsing Utilities") {
477477
DOCTEST_CHECK(isDirectoryPath(".bashrc") == false);
478478

479479
// Edge cases
480-
DOCTEST_CHECK(isDirectoryPath("") == false); // empty path
480+
DOCTEST_CHECK(isDirectoryPath("") == false); // empty path
481481

482482
// Test with existing directories if they exist
483483
if (std::filesystem::exists("core/tests")) {

doc/CHANGELOG.md

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,21 @@
11
# Changelog
22

3+
# [1.3.53] 2025-10-10
4+
5+
# Visualizer
6+
- The visualizer can now render images with a transparent background. This is enabled with `Visualizer::setBackgroundTransparent`
7+
- `Visualizer::printWindow` can now write images in PNG format (necessary for transparent backgrounds)
8+
- Added navigation gizmo to visualizer window to make it easier to orient the view. This can be disabled with `Visualizer::hideNavigationGizmo()`.
9+
- The line width argument to `Visualizer::addLine()` now works properly on all platforms.
10+
- Fixed a bug where rectangle vertices were not returning the correct values when queried due to improper application of transformations.
11+
- By default, the visualizer now uses a gradient background texture image. The user can also manually set their own using `Visualizer::setBackgroundImage()`.
12+
- Added `Visualizer::setBackgroundSkyTexture()` to add a skybox background that automatically scales with the scene size.
13+
- Deprecated `Visualizer::addSkyDomeByCenter()` in favor of `Visualizer::setBackgroundSkyTexture()`.
14+
- Implemented Heckbert's "Nice Numbers" algorithm that generates clean, evenly-spaced tick values for the colorbar.
15+
16+
## Plant Architecture
17+
- Implemented more efficient setting of optional object data `age`, which yields a huge speedup when setting age for many thousands of compound objects.
18+
319
# [1.3.52] 2025-10-02
420

521
## Plant Architecture

0 commit comments

Comments
 (0)