)]}'
{
  "commit": "f450f95611a5485741f959d816833f2ee1f76a24",
  "tree": "5ad47a422738616f0585e08bea9625fb3d8bfd8a",
  "parents": [
    "a7a0a016a2b08a755aba67885819c0e64dda9a57"
  ],
  "author": {
    "name": "susan101566",
    "email": "hello@rive.app",
    "time": "Wed Aug 14 22:01:30 2024 +0000"
  },
  "committer": {
    "name": "susan101566",
    "email": "hello@rive.app",
    "time": "Wed Aug 14 22:01:30 2024 +0000"
  },
  "message": "editor: nine-slicing core data type definitions\n\nThis PR adds the core data types to support n-slicing. There are three main types: Axis, NSlicer and NSlicerTileMode.\n1. Axis: I didn\u0027t want to make this super specific, since it could be used for grids later. So rn, it just represents some position in some dimension, and can either be a value in terms of a positional unit (like 10px) or bounds percentage (like 10%).\n2. NSlicer: It\u0027s as simple as a component gets, we\u0027ll just use it to be a parent of all the n-slicer Axes, and have it be a child of Image later.\n3. NSlicerTileMode: The main data here is \u0027style\u0027. We said to use patchX and patchY separately from patchIndex. The last one is persisted in file, while the other two are actually used at runtime.\n\nThe non-json files are auto generated, with the runtime json files copy pasted from the dev/defs version. I verified that the editor still runs, and the runtime also runs without error.\n\nNext up, I\u0027ll use these definitions to change editor behavior.\n\nDocumentation: https://www.notion.so/rive-app/9-Slice-Tech-Proposal-Image-only-50b25ea8e79c4efabb681110e288f064#15f3a49ce3534baeafc31c37fb30cc0b\n\nFor a rough direction of how to implement nine-slicing, check out this research branch: https://github.com/rive-app/rive/compare/master...susan/nine-slice-research\n\nDiffs\u003d\ned56d2de6 editor: nine-slicing core data type definitions (#7840)\n\nCo-authored-by: Susan Wang \u003csusan@rive.app\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "2db670ff40825a900a2cbfe29bf7fcffb84a8bdd",
      "old_mode": 33188,
      "old_path": ".rive_head",
      "new_id": "ac7db8200d13d2f551e7f72db9bc74be78e8132b",
      "new_mode": 33188,
      "new_path": ".rive_head"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "0703844b974b60bd413572bc5ddb963c13f63c3a",
      "new_mode": 33188,
      "new_path": "dev/defs/layout/axis.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "47774c7bf0ac26d220dae03075e95608aeb4c252",
      "new_mode": 33188,
      "new_path": "dev/defs/layout/axis_x.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b3bd16e5a84ebbaaf57b9697e9405026e12fa30b",
      "new_mode": 33188,
      "new_path": "dev/defs/layout/axis_y.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "d64214235fc79b844718173ba382469484b3c161",
      "new_mode": 33188,
      "new_path": "dev/defs/layout/n_slicer.json"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "fae9388673fa3cbc25a674a19e0b717894f92a14",
      "new_mode": 33188,
      "new_path": "dev/defs/layout/n_slicer_tile_mode.json"
    },
    {
      "type": "modify",
      "old_id": "d38b4517d50b687845185dd89ce7ffe4493775ae",
      "old_mode": 33188,
      "old_path": "include/rive/generated/core_registry.hpp",
      "new_id": "fd25b4ca5cfcf389b596da8511ab0fa62fc55186",
      "new_mode": 33188,
      "new_path": "include/rive/generated/core_registry.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b7bf729aa6776a689b6cbec6b02aba81f0f23984",
      "new_mode": 33188,
      "new_path": "include/rive/generated/layout/axis_base.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "078596203a271a5fca88e04b48aafc0beb2fcb7a",
      "new_mode": 33188,
      "new_path": "include/rive/generated/layout/axis_x_base.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "e54b22a3059a1761b697241edf1620234447ee68",
      "new_mode": 33188,
      "new_path": "include/rive/generated/layout/axis_y_base.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "23fa548763d93e42759791a379e5124b4895a4e3",
      "new_mode": 33188,
      "new_path": "include/rive/generated/layout/n_slicer_base.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "c3673f0f09869364e77702416146d11a8c5eddd3",
      "new_mode": 33188,
      "new_path": "include/rive/generated/layout/n_slicer_tile_mode_base.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "a5eef6e5ab9e2e42a63e3749f348e0a05642fc38",
      "new_mode": 33188,
      "new_path": "include/rive/layout/axis.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3cd9a37c3d917fddbfdf6420e2f8cadc49d827b7",
      "new_mode": 33188,
      "new_path": "include/rive/layout/axis_x.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "3f38d834b6e5ec0e3d56a17bc3bd85d9e60983b6",
      "new_mode": 33188,
      "new_path": "include/rive/layout/axis_y.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7f13a61b7c5009ddaed53d51c560eea9489aca55",
      "new_mode": 33188,
      "new_path": "include/rive/layout/n_slicer.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "06e7cabb2e52e8ba7c625532e7d232fc54a2bea6",
      "new_mode": 33188,
      "new_path": "include/rive/layout/n_slicer_tile_mode.hpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "172c2844bdab1195fc309a8ac97d8eff0a15e9f5",
      "new_mode": 33188,
      "new_path": "src/generated/layout/axis_x_base.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8815cefc400d425d1e201af4d6bdd11b6ef6805a",
      "new_mode": 33188,
      "new_path": "src/generated/layout/axis_y_base.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "49d6f377b44da9825522bd90baa733351f0c89bb",
      "new_mode": 33188,
      "new_path": "src/generated/layout/n_slicer_base.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "068c59ce5897f2d68eb8fcb7a77a7c7e71a6cee5",
      "new_mode": 33188,
      "new_path": "src/generated/layout/n_slicer_tile_mode_base.cpp"
    }
  ]
}
