)]}'
{
  "commit": "7b2347c9df351c17c0f8e4e29f9bb26f0d7112c5",
  "tree": "75b8a70b979a1b930a3aa422db2d2bfbecf93bbd",
  "parents": [
    "15101782a0e888cfc74353db96dcb14f4041d1ab"
  ],
  "author": {
    "name": "csmartdalton",
    "email": "hello@rive.app",
    "time": "Fri Jul 26 23:10:22 2024 +0000"
  },
  "committer": {
    "name": "csmartdalton",
    "email": "hello@rive.app",
    "time": "Fri Jul 26 23:10:22 2024 +0000"
  },
  "message": "Simple procedural text rendering API\n\nThis adds `rive::RawText` can be used to append text runs with different styles and set layout rules for the text. It\u0027s pretty full featured.\n\nSimple example (trimmed for brevity):\n```\nauto roboto \u003d loadFont(\"RobotoFlex.ttf\");\n\n// setup text object\nrive::RawText text(RiveFactory());\ntext.append(\"Hello world! \", roboto);\n\n// later during rendering\ntext.render(renderer);\n```\n\n\u003cimg width\u003d\"538\" alt\u003d\"CleanShot 2024-07-25 at 21 59 43@2x\" src\u003d\"https://github.com/user-attachments/assets/7c421cca-ec91-4978-b358-7ba5d457746a\"\u003e\n\nA few more complex examples:\n```\nauto roboto \u003d loadFont(\"RobotoFlex.ttf\");\nauto montserrat \u003d loadFont(\"Montserrat.ttf\");\n\nrive::RawText text(RiveFactory());\ntext.append(\"Hello world! \", roboto, 72.0f);\ntext.append(\"Moon\u0027s cool too. \", montserrat, 64.0f);\n```\n\u003cimg width\u003d\"491\" alt\u003d\"CleanShot 2024-07-25 at 22 01 28@2x\" src\u003d\"https://github.com/user-attachments/assets/06272869-11dc-43f3-a7a3-6bde7a226238\"\u003e\n\nBecause `RawText` represents one contiguous styled block of text, you can apply rules like overflow, sizing, alignment, different paint, etc:\n\n```\nrive::RawText text(RiveFactory());\ntext.maxWidth(450.0f);\ntext.maxHeight(330.0f);\ntext.sizing(rive::TextSizing::fixed);\ntext.overflow(rive::TextOverflow::ellipsis);\ntext.append(\"Hello world! \", roboto, 72.0f);\ntext.append(\"Moon\u0027s cool too. \", montserrat, 64.0f);\n\nauto paint \u003d RiveFactory()-\u003emakeRenderPaint();\npaint-\u003ecolor(0x88ff0000);\ntext.append(\"Mars is red.\", roboto, 72.0f, paint);\n```\n\u003cimg width\u003d\"401\" alt\u003d\"CleanShot 2024-07-25 at 22 03 01@2x\" src\u003d\"https://github.com/user-attachments/assets/bf03d1e6-c966-4834-92ab-20d9918186ad\"\u003e\n\nYou can also supply an override paint during rendering to force paint the whole thing with one color:\n```\nauto paint \u003d RiveFactory()-\u003emakeRenderPaint();\npaint-\u003ecolor(0xff00ff00);\ntext.render(renderer, paint);\n```\n\u003cimg width\u003d\"321\" alt\u003d\"CleanShot 2024-07-25 at 22 04 44@2x\" src\u003d\"https://github.com/user-attachments/assets/eaaf2983-4cd5-45e0-96fd-5edc72da211a\"\u003e\n\nDiffs\u003d\na56419984 Simple procedural text rendering API (#7701)\n\nCo-authored-by: Chris Dalton \u003cchris@rive.app\u003e\nCo-authored-by: Luigi Rosso \u003cluigi-rosso@users.noreply.github.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "69a431e2ab15dc4e562da1d216653b9f25b2e08f",
      "old_mode": 33188,
      "old_path": ".rive_head",
      "new_id": "fdd6112f4c98d5b37b80338577e201f7f13e2089",
      "new_mode": 33188,
      "new_path": ".rive_head"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "2d76fb8c0bd836df8a024b1a36200e237f252620",
      "new_mode": 33188,
      "new_path": "include/rive/text/raw_text.hpp"
    },
    {
      "type": "modify",
      "old_id": "7d0ae9acd4c2b8955a95cd09e57c449358368509",
      "old_mode": 33188,
      "old_path": "include/rive/text/text.hpp",
      "new_id": "b0267aba234ddf81328e84d75db094fc883b45f5",
      "new_mode": 33188,
      "new_path": "include/rive/text/text.hpp"
    },
    {
      "type": "modify",
      "old_id": "07e352acf2d2788bac44f38844512761576316e7",
      "old_mode": 33188,
      "old_path": "src/factory.cpp",
      "new_id": "09c670a9a6a8714b637b5c7d759e4edfc047d900",
      "new_mode": 33188,
      "new_path": "src/factory.cpp"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "abc7bba58376f2f237c0219c369e08de3c66eb39",
      "new_mode": 33188,
      "new_path": "src/text/raw_text.cpp"
    },
    {
      "type": "modify",
      "old_id": "59403c7a221329195272d589f33d856886c47473",
      "old_mode": 33188,
      "old_path": "src/text/text.cpp",
      "new_id": "03a47efd97da8b93dc2f5246a8a0167659c51c49",
      "new_mode": 33188,
      "new_path": "src/text/text.cpp"
    }
  ]
}
