cushy 0.4.0

A wgpu-powered graphical user interface (GUI) library with a reactive data model
Documentation
{ "frames": {
   "Swaying_0.aseprite": {
    "frame": { "x": 0, "y": 0, "w": 32, "h": 32 },
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
    "sourceSize": { "w": 32, "h": 32 },
    "duration": 300
   },
   "Swaying_1.aseprite": {
    "frame": { "x": 32, "y": 0, "w": 32, "h": 32 },
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
    "sourceSize": { "w": 32, "h": 32 },
    "duration": 500
   },
   "Still_2.aseprite": {
    "frame": { "x": 64, "y": 0, "w": 32, "h": 32 },
    "rotated": false,
    "trimmed": false,
    "spriteSourceSize": { "x": 0, "y": 0, "w": 32, "h": 32 },
    "sourceSize": { "w": 32, "h": 32 },
    "duration": 500
   }
 },
 "meta": {
  "app": "http://www.aseprite.org/",
  "version": "1.2.17",
  "image": "grass.png",
  "format": "RGBA8888",
  "size": { "w": 96, "h": 32 },
  "scale": "1",
  "frameTags": [
   { "name": "Swaying", "from": 0, "to": 1, "direction": "forward" },
   { "name": "Still", "from": 2, "to": 2, "direction": "forward" }
  ],
  "layers": [
   { "name": "Layer 1", "opacity": 255, "blendMode": "normal" },
   { "name": "Layer 2", "opacity": 255, "blendMode": "normal" }
  ],
  "slices": [
  ]
 }
}