)]}'
{
  "commit": "61d6fbb5cfd89aff9ab20ad8a21e58bf8753b807",
  "tree": "b7ed45fa3541d295df906878bd7873927f17f3f6",
  "parents": [
    "2c45ce80234671ff07236baf8e4f3aef3e7cd8ba"
  ],
  "author": {
    "name": "csmartdalton",
    "email": "hello@rive.app",
    "time": "Tue May 21 21:13:37 2024 +0000"
  },
  "committer": {
    "name": "csmartdalton",
    "email": "hello@rive.app",
    "time": "Tue May 21 21:13:37 2024 +0000"
  },
  "message": "Make ContourMeasure more robust\n\nMake assertions and operations inside ContourMeasure more robust with degenerate data and NaN.\n\nAdd a rive::math::clamp() method with better behavior surrounding NaN.\n\nChange the ContourMeasureIter constructor to accept a \"const RawPath*\". (The former definition with \"const RawPath\u0026\" accepted r-values, which was unsafe since the iterator stored raw pointers directly to objects owned by the RawPath.)\n\nDelete RawPath operator*(). The way this operator was defined, the matrix had to go on the wrong side of the path relative to how it operated on the data.\n\nDiffs\u003d\ncd6210f42 Make ContourMeasure more robust (#7294)\n\nCo-authored-by: Chris Dalton \u003c99840794+csmartdalton@users.noreply.github.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "618f3804d6366fe26c591acc4286bbcd0c316b95",
      "old_mode": 33188,
      "old_path": ".rive_head",
      "new_id": "29b2afd9e04403268ed5cf770b0cd7716cf48939",
      "new_mode": 33188,
      "new_path": ".rive_head"
    },
    {
      "type": "modify",
      "old_id": "8077ee68b059dfcf9da68e177210bf4dafa01c81",
      "old_mode": 33188,
      "old_path": "include/rive/math/contour_measure.hpp",
      "new_id": "93eea52c8b692372d04ea207ce187c5a3f6fcf69",
      "new_mode": 33188,
      "new_path": "include/rive/math/contour_measure.hpp"
    },
    {
      "type": "modify",
      "old_id": "481c9b54177540789b99d3ee529b55f815c1da93",
      "old_mode": 33188,
      "old_path": "include/rive/math/math_types.hpp",
      "new_id": "17dfaeab340d2c71e90ef8574ab1a8f49acbd14c",
      "new_mode": 33188,
      "new_path": "include/rive/math/math_types.hpp"
    },
    {
      "type": "modify",
      "old_id": "7f277f84c1a766f7b6246c743fc792aedbaa0fc5",
      "old_mode": 33188,
      "old_path": "include/rive/math/raw_path.hpp",
      "new_id": "df5024504f0f748cec05b2957b86e1ed5a5bba44",
      "new_mode": 33188,
      "new_path": "include/rive/math/raw_path.hpp"
    },
    {
      "type": "modify",
      "old_id": "fa3bb212fbef256b527bf1b549ec5dbee625a25f",
      "old_mode": 33188,
      "old_path": "src/constraints/follow_path_constraint.cpp",
      "new_id": "0b8096f67acbde12ac80b140f9246be384ab68d3",
      "new_mode": 33188,
      "new_path": "src/constraints/follow_path_constraint.cpp"
    },
    {
      "type": "modify",
      "old_id": "247f908250883457bd60cf05085e943ca92e1dc0",
      "old_mode": 33188,
      "old_path": "src/math/contour_measure.cpp",
      "new_id": "89c1e425683a6f4a0237b99578b914f9735fd67a",
      "new_mode": 33188,
      "new_path": "src/math/contour_measure.cpp"
    },
    {
      "type": "modify",
      "old_id": "46fea411a90e0901f2fd76d70e74a2c64298a775",
      "old_mode": 33188,
      "old_path": "src/shapes/metrics_path.cpp",
      "new_id": "f66aa5e4ac20e01de2d9a04c7a4a1b462f19291d",
      "new_mode": 33188,
      "new_path": "src/shapes/metrics_path.cpp"
    },
    {
      "type": "modify",
      "old_id": "a52f1b6cb9ded91db2da04506d12d57fc6a6172a",
      "old_mode": 33188,
      "old_path": "test/contour_measure_test.cpp",
      "new_id": "c9164d6881a183028a2b351f20dbf56ab075b5d0",
      "new_mode": 33188,
      "new_path": "test/contour_measure_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "44efab79cbc92ed4da6cda5b5ca0523ed4995006",
      "old_mode": 33188,
      "old_path": "test/metrics_path_test.cpp",
      "new_id": "cde4727616db50390afa3cfb7cd49b2bcb775af3",
      "new_mode": 33188,
      "new_path": "test/metrics_path_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "7838c36c8a61f763216aad53a97b29c31c9c7353",
      "old_mode": 33188,
      "old_path": "test/simd_test.cpp",
      "new_id": "2192f12043fde57fff8c15aa8132331009d36396",
      "new_mode": 33188,
      "new_path": "test/simd_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "69fe3fd033ecef9a2bd9088c97ee7ff9b4ca9791",
      "old_mode": 33188,
      "old_path": "viewer/src/viewer_content/textpath_content.cpp",
      "new_id": "9b05375c7295ddbc871a462b782e7a04d889e772",
      "new_mode": 33188,
      "new_path": "viewer/src/viewer_content/textpath_content.cpp"
    },
    {
      "type": "modify",
      "old_id": "af28c42e06444a8d8f0963ae6a9084ef66bacf5f",
      "old_mode": 33188,
      "old_path": "viewer/src/viewer_content/trimpath_content.cpp",
      "new_id": "d4ffb3d117a1213adf329bd455cef2d3bb488aa3",
      "new_mode": 33188,
      "new_path": "viewer/src/viewer_content/trimpath_content.cpp"
    }
  ]
}
