{
  "dependencies": [
    {
      "typeId": "nodra.adjust.huesat",
      "version": "0.1.0"
    },
    {
      "typeId": "nodra.ai.classmask",
      "version": "0.2.0"
    },
    {
      "typeId": "nodra.ai.mattemask",
      "version": "0.1.0"
    },
    {
      "typeId": "nodra.analyze.dimensions",
      "version": "0.1.0"
    },
    {
      "typeId": "nodra.blend.maskmix",
      "version": "0.1.0"
    },
    {
      "typeId": "nodra.gen.gradient",
      "version": "0.1.0"
    },
    {
      "typeId": "nodra.gen.masktopath",
      "version": "0.2.0"
    },
    {
      "typeId": "nodra.gen.pathmask",
      "version": "0.1.0"
    },
    {
      "typeId": "nodra.io.fileinput",
      "version": "0.2.0"
    },
    {
      "typeId": "nodra.io.hostpathout",
      "version": "0.1.0"
    },
    {
      "typeId": "nodra.path.align",
      "version": "0.1.0"
    },
    {
      "typeId": "nodra.view.preview",
      "version": "0.1.0"
    }
  ],
  "editor": {
    "names": {
      "1": "Fallback Image",
      "10": "Dusk Sky",
      "11": "Ground at Dusk",
      "12": "New Sky",
      "13": "Building Warmth",
      "14": "Building Stays Bright",
      "15": "Path Masking Preview",
      "16": "Find the Building (AI Cutout)",
      "2": "Source Image",
      "3": "Image Size",
      "5": "Clean Pen Path along the Building",
      "6": "Snap Verticals Upright",
      "7": "Building Path for Photoshop",
      "8": "Building Mask from the Path",
      "9": "Find the Sky"
    },
    "pluginPreviewNode": 15,
    "positions": {
      "1": [
        0.0,
        0.0
      ],
      "10": [
        780.0,
        260.0
      ],
      "11": [
        520.0,
        560.0
      ],
      "12": [
        1040.0,
        140.0
      ],
      "13": [
        520.0,
        680.0
      ],
      "14": [
        1560.0,
        0.0
      ],
      "15": [
        1820.0,
        0.0
      ],
      "16": [
        520.0,
        800.0
      ],
      "2": [
        260.0,
        0.0
      ],
      "3": [
        520.0,
        0.0
      ],
      "5": [
        780.0,
        0.0
      ],
      "6": [
        1040.0,
        0.0
      ],
      "7": [
        1300.0,
        0.0
      ],
      "8": [
        1300.0,
        120.0
      ],
      "9": [
        520.0,
        380.0
      ]
    },
    "schemaVersion": 1
  },
  "format": "nodra-patch",
  "formatVersion": 1,
  "graph": {
    "connections": [
      {
        "dst": [
          2,
          1
        ],
        "src": [
          1,
          0
        ]
      },
      {
        "dst": [
          3,
          0
        ],
        "src": [
          2,
          0
        ]
      },
      {
        "dst": [
          10,
          0
        ],
        "src": [
          3,
          0
        ]
      },
      {
        "dst": [
          10,
          1
        ],
        "src": [
          3,
          1
        ]
      },
      {
        "dst": [
          5,
          0
        ],
        "src": [
          16,
          0
        ]
      },
      {
        "dst": [
          5,
          1
        ],
        "src": [
          2,
          0
        ]
      },
      {
        "dst": [
          6,
          0
        ],
        "src": [
          5,
          7
        ]
      },
      {
        "dst": [
          7,
          0
        ],
        "src": [
          6,
          1
        ]
      },
      {
        "dst": [
          8,
          0
        ],
        "src": [
          2,
          0
        ]
      },
      {
        "dst": [
          8,
          1
        ],
        "src": [
          6,
          1
        ]
      },
      {
        "dst": [
          9,
          0
        ],
        "src": [
          2,
          0
        ]
      },
      {
        "dst": [
          11,
          0
        ],
        "src": [
          2,
          0
        ]
      },
      {
        "dst": [
          12,
          0
        ],
        "src": [
          11,
          0
        ]
      },
      {
        "dst": [
          12,
          1
        ],
        "src": [
          10,
          0
        ]
      },
      {
        "dst": [
          12,
          2
        ],
        "src": [
          9,
          0
        ]
      },
      {
        "dst": [
          13,
          0
        ],
        "src": [
          2,
          0
        ]
      },
      {
        "dst": [
          14,
          0
        ],
        "src": [
          12,
          0
        ]
      },
      {
        "dst": [
          14,
          1
        ],
        "src": [
          13,
          0
        ]
      },
      {
        "dst": [
          14,
          2
        ],
        "src": [
          8,
          0
        ]
      },
      {
        "dst": [
          15,
          0
        ],
        "src": [
          14,
          0
        ]
      },
      {
        "dst": [
          16,
          0
        ],
        "src": [
          2,
          0
        ]
      }
    ],
    "nodes": [
      {
        "id": 1,
        "params": {
          "colorA": {
            "t": "color",
            "v": [
              0.32314324378967285,
              0.36625269055366516,
              0.4178851544857025,
              1.0
            ]
          },
          "colorB": {
            "t": "color",
            "v": [
              0.8148466944694519,
              0.7912980318069458,
              0.7379105687141418,
              1.0
            ]
          },
          "height": {
            "t": "int",
            "v": 768
          },
          "type": {
            "t": "int",
            "v": 1
          },
          "width": {
            "t": "int",
            "v": 768
          }
        },
        "type": "nodra.gen.gradient"
      },
      {
        "id": 2,
        "params": {
          "containerMode": {
            "t": "int",
            "v": 0
          },
          "exifOrientation": {
            "t": "int",
            "v": 0
          },
          "file": {
            "t": "string",
            "v": ""
          },
          "tiffPage": {
            "t": "int",
            "v": 1
          }
        },
        "type": "nodra.io.fileinput"
      },
      {
        "id": 3,
        "params": {},
        "type": "nodra.analyze.dimensions"
      },
      {
        "id": 5,
        "params": {
          "band": {
            "t": "float",
            "v": 24.0
          },
          "cornerAngle": {
            "t": "float",
            "v": 35.0
          },
          "edgeGuide": {
            "t": "bool",
            "v": true
          },
          "edgeThreshold": {
            "t": "float",
            "v": 4.0
          },
          "equalRadii": {
            "t": "bool",
            "v": false
          },
          "extremes": {
            "t": "bool",
            "v": true
          },
          "holes": {
            "t": "bool",
            "v": false
          },
          "inset": {
            "t": "float",
            "v": 0.5
          },
          "minArea": {
            "t": "float",
            "v": 2000.0
          },
          "previewMode": {
            "t": "int",
            "v": 0
          },
          "radiusTolerance": {
            "t": "float",
            "v": 4.0
          },
          "shapes": {
            "t": "int",
            "v": 2
          },
          "showStats": {
            "t": "bool",
            "v": true
          },
          "smooth": {
            "t": "float",
            "v": 3.0
          },
          "symmetry": {
            "t": "bool",
            "v": false
          },
          "symmetryTolerance": {
            "t": "float",
            "v": 1.0
          },
          "threshold": {
            "t": "float",
            "v": 0.5
          },
          "tolerance": {
            "t": "float",
            "v": 2.0
          }
        },
        "type": "nodra.gen.masktopath"
      },
      {
        "id": 6,
        "params": {
          "angleTolerance": {
            "t": "float",
            "v": 2.0
          },
          "diagonals": {
            "t": "bool",
            "v": false
          }
        },
        "type": "nodra.path.align"
      },
      {
        "id": 7,
        "params": {
          "name": {
            "t": "string",
            "v": "Freisteller"
          },
          "nameEn": {
            "t": "string",
            "v": ""
          },
          "target": {
            "t": "int",
            "v": 1
          }
        },
        "type": "nodra.io.hostpathout"
      },
      {
        "id": 8,
        "params": {
          "coordinateMode": {
            "t": "int",
            "v": 0
          },
          "feather": {
            "t": "float",
            "v": 1.0
          },
          "fillRule": {
            "t": "int",
            "v": 0
          },
          "invert": {
            "t": "bool",
            "v": false
          },
          "offsetX": {
            "t": "float",
            "v": 0.0
          },
          "offsetY": {
            "t": "float",
            "v": 0.0
          },
          "path": {
            "t": "string",
            "v": "M 0.5,0.05 C 0.77,0.05 0.95,0.23 0.95,0.45 C 0.95,0.68 0.73,0.86 0.5,0.98 C 0.27,0.86 0.05,0.68 0.05,0.45 C 0.05,0.23 0.23,0.05 0.5,0.05 Z"
          },
          "rotation": {
            "t": "float",
            "v": 0.0
          },
          "scale": {
            "t": "float",
            "v": 1.0
          }
        },
        "type": "nodra.gen.pathmask"
      },
      {
        "id": 9,
        "params": {
          "classKind": {
            "t": "int",
            "v": 0
          },
          "computeUnits": {
            "t": "int",
            "v": 0
          },
          "customClasses": {
            "t": "string",
            "v": ""
          },
          "edgeRefine": {
            "t": "float",
            "v": 8.0
          },
          "feather": {
            "t": "float",
            "v": 3
          },
          "invert": {
            "t": "bool",
            "v": false
          },
          "margin": {
            "t": "float",
            "v": 10
          }
        },
        "type": "nodra.ai.classmask"
      },
      {
        "id": 10,
        "params": {
          "colorA": {
            "t": "color",
            "v": [
              0.01228648703545332,
              0.023153364658355713,
              0.10702311247587204,
              1.0
            ]
          },
          "colorB": {
            "t": "color",
            "v": [
              0.8713672161102295,
              0.25415217876434326,
              0.07036010921001434,
              1.0
            ]
          },
          "height": {
            "t": "int",
            "v": 512
          },
          "type": {
            "t": "int",
            "v": 1
          },
          "width": {
            "t": "int",
            "v": 512
          }
        },
        "type": "nodra.gen.gradient"
      },
      {
        "id": 11,
        "params": {
          "colorSpace": {
            "t": "int",
            "v": 0
          },
          "hue": {
            "t": "float",
            "v": 0.0
          },
          "lightness": {
            "t": "float",
            "v": -0.45
          },
          "saturation": {
            "t": "float",
            "v": -0.3
          }
        },
        "type": "nodra.adjust.huesat"
      },
      {
        "id": 12,
        "params": {
          "invert": {
            "t": "bool",
            "v": false
          },
          "opacity": {
            "t": "float",
            "v": 1.0
          }
        },
        "type": "nodra.blend.maskmix"
      },
      {
        "id": 13,
        "params": {
          "colorSpace": {
            "t": "int",
            "v": 0
          },
          "hue": {
            "t": "float",
            "v": 0.0
          },
          "lightness": {
            "t": "float",
            "v": -0.12
          },
          "saturation": {
            "t": "float",
            "v": 0.0
          }
        },
        "type": "nodra.adjust.huesat"
      },
      {
        "id": 14,
        "params": {
          "invert": {
            "t": "bool",
            "v": false
          },
          "opacity": {
            "t": "float",
            "v": 1.0
          }
        },
        "type": "nodra.blend.maskmix"
      },
      {
        "id": 15,
        "params": {},
        "type": "nodra.view.preview"
      },
      {
        "id": 16,
        "params": {
          "band": {
            "t": "float",
            "v": 40.0
          },
          "computeUnits": {
            "t": "int",
            "v": 0
          },
          "decontaminate": {
            "t": "bool",
            "v": true
          },
          "feather": {
            "t": "float",
            "v": 0.0
          },
          "invert": {
            "t": "bool",
            "v": false
          },
          "margin": {
            "t": "float",
            "v": 0.0
          },
          "quality": {
            "t": "int",
            "v": 0
          },
          "refine": {
            "t": "float",
            "v": 0.3
          }
        },
        "type": "nodra.ai.mattemask"
      }
    ]
  },
  "metadata": {
    "author": "",
    "description": "Masking with a pen path instead of pixels: Studio Cutout finds the building, Mask to Path traces it along the real image edges as a clean Bézier path with straight lines, Align Path snaps the verticals upright, and Path Mask turns the path into a razor-sharp mask. The building stays bright in front of a new dusk sky; the same path also goes to Photoshop. Pick your own photo in the Image Input node; without one, a synthetic image is used.",
    "i18n": {
      "de": {
        "description": "Maskieren mit einem Zeichenpfad statt mit Pixeln: Die „Studio-Freistellung“ findet das Gebäude, „Maske zu Pfad“ zeichnet es entlang der echten Bildkanten als sauberen Bézierpfad mit geraden Linien nach, „Pfad ausrichten“ stellt die Senkrechten gerade, und die „Pfadmaske“ macht daraus eine messerscharfe Maske. Das Gebäude bleibt hell vor einem neuen Abendhimmel; derselbe Pfad geht auch an Photoshop. Eigenes Foto im Bild-Eingang wählen; ohne Foto wird ein synthetisches Bild verwendet.",
        "name": "Showcase: Maske über Pfade"
      }
    },
    "name": "Showcase: Path Masking"
  },
  "ui": {
    "assets": {},
    "elements": [
      {
        "frame": {
          "h": 8,
          "w": 8,
          "x": 0,
          "y": 0
        },
        "id": 1,
        "size": 1,
        "text": "Maske über Pfade",
        "textEn": "Path Masking",
        "type": "heading"
      },
      {
        "frame": {
          "h": 8,
          "w": 8,
          "x": 0,
          "y": 0
        },
        "help": "Wie genau der Pfad der Kante folgt; größer gibt weniger Ankerpunkte und ruhigere Linien.",
        "helpEn": "How closely the path follows the edge; larger gives fewer anchor points and calmer lines.",
        "id": 2,
        "label": "Pfadtoleranz",
        "labelEn": "Path Tolerance (px)",
        "nodeId": "5",
        "param": "tolerance",
        "showValue": true,
        "type": "control",
        "widget": "slider"
      },
      {
        "frame": {
          "h": 8,
          "w": 8,
          "x": 0,
          "y": 0
        },
        "help": "Bis zu welcher Abweichung fast senkrechte und waagerechte Linien gerade gestellt werden.",
        "helpEn": "Up to which tilt nearly vertical and horizontal lines are snapped straight.",
        "id": 3,
        "label": "Senkrechte ausrichten",
        "labelEn": "Straighten Lines (°)",
        "nodeId": "6",
        "param": "angleTolerance",
        "showValue": true,
        "type": "control",
        "widget": "slider"
      },
      {
        "frame": {
          "h": 8,
          "w": 8,
          "x": 0,
          "y": 0
        },
        "help": "Farbe des neuen Himmels oben.",
        "helpEn": "Colour of the new sky at the top.",
        "id": 4,
        "label": "Himmel oben",
        "labelEn": "Sky Top",
        "nodeId": "10",
        "param": "colorA",
        "showValue": true,
        "type": "control",
        "widget": "colorwheel"
      },
      {
        "frame": {
          "h": 8,
          "w": 8,
          "x": 0,
          "y": 0
        },
        "help": "Farbe des neuen Himmels am Horizont.",
        "helpEn": "Colour of the new sky at the horizon.",
        "id": 5,
        "label": "Himmel unten",
        "labelEn": "Sky Horizon",
        "nodeId": "10",
        "param": "colorB",
        "showValue": true,
        "type": "control",
        "widget": "colorwheel"
      },
      {
        "frame": {
          "h": 8,
          "w": 8,
          "x": 0,
          "y": 0
        },
        "help": "Wie dunkel alles außer dem Gebäude wird.",
        "helpEn": "How dark everything except the building becomes.",
        "id": 6,
        "label": "Umgebung abdunkeln",
        "labelEn": "Darken Surroundings",
        "nodeId": "11",
        "param": "lightness",
        "showValue": true,
        "type": "control",
        "widget": "slider"
      }
    ],
    "layout": {
      "align": "stretch",
      "direction": "vertical",
      "gap": "md",
      "justify": "start",
      "mode": "stack",
      "padding": "lg",
      "wrap": false
    },
    "minWidth": 240,
    "style": {
      "template": "infiniteDark"
    },
    "stylePresets": [],
    "version": 3
  }
}
