Bump the document version
This commit is contained in:
parent
29222700f4
commit
f58aa73edc
|
|
@ -1,647 +0,0 @@
|
||||||
import json
|
|
||||||
import copy
|
|
||||||
import math
|
|
||||||
import numpy
|
|
||||||
|
|
||||||
numpy.set_printoptions(suppress=True)
|
|
||||||
|
|
||||||
def gen_id():
|
|
||||||
new_id = 42
|
|
||||||
while True:
|
|
||||||
yield new_id
|
|
||||||
new_id += 1
|
|
||||||
|
|
||||||
|
|
||||||
def gen_y():
|
|
||||||
y = 7
|
|
||||||
while True:
|
|
||||||
yield y
|
|
||||||
y += 3
|
|
||||||
|
|
||||||
new_id = gen_id()
|
|
||||||
y_position = gen_y()
|
|
||||||
new_nodes = {}
|
|
||||||
shift_left = 32
|
|
||||||
|
|
||||||
def set_transform(node, transform):
|
|
||||||
x_axis = transform[0]
|
|
||||||
y_axis = transform[1]
|
|
||||||
|
|
||||||
# Assuming there is no vertical shear
|
|
||||||
angle = math.atan2( x_axis[1], x_axis[0])
|
|
||||||
(sin, cos) = math.sin(angle), math.cos(angle)
|
|
||||||
scale_x = x_axis[0] / cos if math.fabs(cos) > 1e-10 else x_axis[1] / sin
|
|
||||||
|
|
||||||
shear_x = (sin * y_axis[1] + cos * y_axis[0]) / (sin * sin * scale_x + cos * cos * scale_x);
|
|
||||||
if not numpy.isfinite(shear_x):
|
|
||||||
shear_x = 0.;
|
|
||||||
|
|
||||||
scale_y = (y_axis[1] - scale_x * sin * shear_x) / cos if math.fabs(cos) > 1e-10 else (scale_x * cos * shear_x - y_axis[0]) / sin
|
|
||||||
|
|
||||||
translation = transform[2][:2]
|
|
||||||
node["inputs"][1] = {"Value": { "tagged_value": { "DVec2": [translation[0], translation[1]] }, "exposed": False}}
|
|
||||||
node["inputs"][2] = {"Value": { "tagged_value": { "F32": angle }, "exposed": False}}
|
|
||||||
node["inputs"][3] = {"Value": { "tagged_value": { "DVec2": [scale_x, scale_y] }, "exposed": False}}
|
|
||||||
node["inputs"][4] = {"Value": { "tagged_value": { "DVec2": [shear_x, 0] }, "exposed": False}}
|
|
||||||
node["inputs"][5] = {"Value": { "tagged_value": { "DVec2": [0,0] }, "exposed": False}}
|
|
||||||
|
|
||||||
def to_transform(transform):
|
|
||||||
mat = transform["matrix2"]
|
|
||||||
translation = transform["translation"]
|
|
||||||
return numpy.array([[mat[0], mat[1], 0], [mat[2], mat[3], 0], [translation[0], translation[1], 1]])
|
|
||||||
|
|
||||||
def update_layer(layer, indent, layer_node_id, next_id, opacity):
|
|
||||||
data = layer["data"]
|
|
||||||
|
|
||||||
opacity = opacity * layer["opacity"]
|
|
||||||
|
|
||||||
y = next(y_position)
|
|
||||||
output = None
|
|
||||||
if "Folder" in data:
|
|
||||||
new_layer_ids = list(map(lambda x, _: x, new_id, data["Folder"]["layers"]))
|
|
||||||
output = new_layer_ids[0]
|
|
||||||
insert_transform = "transform" in layer and (numpy.identity(3) != to_transform(layer["transform"])).any()
|
|
||||||
if insert_transform:
|
|
||||||
node = {
|
|
||||||
"name": "Transform",
|
|
||||||
"implementation": {"Unresolved":{"name": "graphene_core::transform::TransformNode<_, _, _, _, _, _>"}},
|
|
||||||
"manual_composition":{"Concrete":{"name":"graphene_core::transform::Footprint","size":72,"align":8}},
|
|
||||||
"metadata": {"position": [-indent-8,y]},
|
|
||||||
"skip_deduplication": False,
|
|
||||||
"path": None,
|
|
||||||
"manual_composition": {"Concrete": {"name": "graphene_core::transform::Footprint","size": 72,"align": 8}},
|
|
||||||
"inputs":[{"Node":{"node_id":output,"output_index":0,"lambda":False}}, None, None, None, None, None]
|
|
||||||
}
|
|
||||||
transform_id = next(new_id)
|
|
||||||
new_nodes[str(transform_id)] = node
|
|
||||||
output = transform_id
|
|
||||||
set_transform(node, to_transform(layer["transform"]))
|
|
||||||
indent += 8
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
for index, layer in enumerate(reversed(data["Folder"]["layers"])):
|
|
||||||
next_index = None
|
|
||||||
if index +1 < len(new_layer_ids):
|
|
||||||
next_index = new_layer_ids[index+1]
|
|
||||||
update_layer(layer, indent + 5, new_layer_ids[index], next_index, opacity)
|
|
||||||
|
|
||||||
if insert_transform:
|
|
||||||
indent -= 8
|
|
||||||
|
|
||||||
if "Layer" in data:
|
|
||||||
network = data["Layer"]["network"]
|
|
||||||
|
|
||||||
nodes = set(filter(lambda old_id: network["nodes"][old_id]["name"] != "Output", set(network["nodes"])))
|
|
||||||
|
|
||||||
new_ids = dict(zip(map(lambda id: int(id), nodes), new_id))
|
|
||||||
|
|
||||||
output_node = network["nodes"][str(network["outputs"][0]["node_id"])]
|
|
||||||
shift_left = output_node["metadata"]["position"][0]
|
|
||||||
output = new_ids[int(output_node["inputs"][0]["Node"]["node_id"])]
|
|
||||||
|
|
||||||
for old_id in nodes:
|
|
||||||
node = network["nodes"][old_id]
|
|
||||||
for node_input in node["inputs"]:
|
|
||||||
if "Node" in node_input:
|
|
||||||
node_input["Node"]["node_id"] = new_ids[node_input["Node"]["node_id"]]
|
|
||||||
if node["name"] == "Transform":
|
|
||||||
node["implementation"]={"Unresolved":{"name": "graphene_core::transform::TransformNode<_, _, _, _, _, _>"}}
|
|
||||||
node["manual_composition"]={"Concrete":{"name":"graphene_core::transform::Footprint","size":72,"align":8}}
|
|
||||||
|
|
||||||
if node["name"] == "Shape":
|
|
||||||
if not any(map(lambda x: network["nodes"][x]["name"] == "Cull", nodes)):
|
|
||||||
node["metadata"]["position"][1] = y
|
|
||||||
node["metadata"]["position"][0] -= shift_left + 8 + indent
|
|
||||||
if opacity != 1:
|
|
||||||
node["metadata"]["position"][0] -= 8
|
|
||||||
shape = next(new_id)
|
|
||||||
cull = next(new_id)
|
|
||||||
|
|
||||||
new_nodes[str(shape)] = copy.deepcopy(node)
|
|
||||||
|
|
||||||
node["name"] = "Cull"
|
|
||||||
node["inputs"] = [{"Node":{"node_id":shape,"output_index":0,"lambda":False}}]
|
|
||||||
node["manual_composition"] = {"Concrete":{"name":"graphene_core::transform::Footprint","size":72,"align":8}}
|
|
||||||
node["has_primary_output"] = True
|
|
||||||
node["implementation"] = {"Unresolved":{"name":"graphene_core::transform::CullNode<_>"}}
|
|
||||||
|
|
||||||
if opacity != 1:
|
|
||||||
node["metadata"]["position"][0] += 8
|
|
||||||
new_nodes[str(cull)] = copy.deepcopy(node)
|
|
||||||
|
|
||||||
node["name"] = "Opacity"
|
|
||||||
node["inputs"] = [{"Node":{"node_id":cull,"output_index":0,"lambda":False}}, {"Value":{"tagged_value":{"F32":opacity * 100},"exposed":False}}]
|
|
||||||
node["manual_composition"] = None
|
|
||||||
node["has_primary_output"] = True
|
|
||||||
node["implementation"] = {"Unresolved":{"name":"graphene_core::raster::OpacityNode<_>"}}
|
|
||||||
node["metadata"]["position"][0] += 8 + shift_left + indent
|
|
||||||
|
|
||||||
node["metadata"]["position"][1] = y
|
|
||||||
node["metadata"]["position"][0] -= shift_left + indent
|
|
||||||
|
|
||||||
new_nodes[str(new_ids[int(old_id)])] = node
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
assert(output == None or str(output) in new_nodes)
|
|
||||||
|
|
||||||
node_to_input = lambda node_id: {"Node": {"node_id": node_id,"output_index": 0,"lambda": False}} if node_id else {"Value":{"tagged_value":{"GraphicGroup":{"elements":[],"opacity":1.0,"transform":[1.0,0.0,0.0,1.0,0.0,0.0]}},"exposed":True}}
|
|
||||||
|
|
||||||
node = {
|
|
||||||
"name": "Layer",
|
|
||||||
"inputs": [
|
|
||||||
node_to_input(output),
|
|
||||||
{
|
|
||||||
"Value": {
|
|
||||||
"tagged_value": {
|
|
||||||
"String": layer["name"] or "Untitled"
|
|
||||||
},
|
|
||||||
"exposed": False
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Value": {
|
|
||||||
"tagged_value": {
|
|
||||||
"BlendMode": layer["blend_mode"]
|
|
||||||
},
|
|
||||||
"exposed": False
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Value": {
|
|
||||||
"tagged_value": {
|
|
||||||
"F32": 100.0
|
|
||||||
},
|
|
||||||
"exposed": False
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Value": {
|
|
||||||
"tagged_value": {
|
|
||||||
"Bool": True
|
|
||||||
},
|
|
||||||
"exposed": False
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Value": {
|
|
||||||
"tagged_value": {
|
|
||||||
"Bool": False
|
|
||||||
},
|
|
||||||
"exposed": False
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Value": {
|
|
||||||
"tagged_value": {
|
|
||||||
"Bool": False
|
|
||||||
},
|
|
||||||
"exposed": False
|
|
||||||
}
|
|
||||||
},
|
|
||||||
node_to_input(next_id)
|
|
||||||
],
|
|
||||||
"manual_composition": None,
|
|
||||||
"has_primary_output": True,
|
|
||||||
"implementation": {
|
|
||||||
"Network": {
|
|
||||||
"inputs": [
|
|
||||||
0,
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
2,
|
|
||||||
2
|
|
||||||
],
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"node_id": 2,
|
|
||||||
"node_output_index": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"nodes": {
|
|
||||||
"1": {
|
|
||||||
"name": "Monitor",
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"Node": {
|
|
||||||
"node_id": 0,
|
|
||||||
"output_index": 0,
|
|
||||||
"lambda": False
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"manual_composition": {
|
|
||||||
"Concrete": {
|
|
||||||
"name": "graphene_core::transform::Footprint",
|
|
||||||
"size": 72,
|
|
||||||
"align": 8
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"has_primary_output": True,
|
|
||||||
"implementation": {
|
|
||||||
"Unresolved": {
|
|
||||||
"name": "graphene_core::memo::MonitorNode<_, _, _>"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"position": [
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"skip_deduplication": True,
|
|
||||||
"world_state_hash": 0,
|
|
||||||
"path": None
|
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"name": "ConstructLayer",
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"Node": {
|
|
||||||
"node_id": 1,
|
|
||||||
"output_index": 0,
|
|
||||||
"lambda": False
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Network": {
|
|
||||||
"Fn": [
|
|
||||||
{
|
|
||||||
"Concrete": {
|
|
||||||
"name": "graphene_core::transform::Footprint",
|
|
||||||
"size": 72,
|
|
||||||
"align": 8
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Concrete": {
|
|
||||||
"name": "graphene_core::graphic_element::GraphicGroup",
|
|
||||||
"size": 12,
|
|
||||||
"align": 4
|
|
||||||
}
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"manual_composition": {
|
|
||||||
"Concrete": {
|
|
||||||
"name": "graphene_core::transform::Footprint",
|
|
||||||
"size": 72,
|
|
||||||
"align": 8
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"has_primary_output": True,
|
|
||||||
"implementation": {
|
|
||||||
"Unresolved": {
|
|
||||||
"name": "graphene_core::ConstructLayerNode<_, _, _, _, _, _, _, _>"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"position": [
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"skip_deduplication": False,
|
|
||||||
"world_state_hash": 0,
|
|
||||||
"path": None
|
|
||||||
},
|
|
||||||
"0": {
|
|
||||||
"name": "To Graphic Element",
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"Network": {
|
|
||||||
"Generic": "T"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"manual_composition": None,
|
|
||||||
"has_primary_output": True,
|
|
||||||
"implementation": {
|
|
||||||
"Unresolved": {
|
|
||||||
"name": "graphene_core::ToGraphicElementNode"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"position": [
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"skip_deduplication": False,
|
|
||||||
"world_state_hash": 0,
|
|
||||||
"path": None
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"disabled": [],
|
|
||||||
"previous_outputs": None
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"position": [
|
|
||||||
-indent,
|
|
||||||
y
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"skip_deduplication": False,
|
|
||||||
"world_state_hash": 0,
|
|
||||||
"path": None
|
|
||||||
}
|
|
||||||
new_nodes[str(layer_node_id)] = node
|
|
||||||
|
|
||||||
def migrate(name, new_name):
|
|
||||||
global new_id, new_id ,y_position, new_nodes
|
|
||||||
new_id = gen_id()
|
|
||||||
y_position = gen_y()
|
|
||||||
new_nodes = {}
|
|
||||||
|
|
||||||
with open(name) as f:
|
|
||||||
document = json.load(f)
|
|
||||||
layer = document["document_legacy"]["root"]
|
|
||||||
data = layer["data"]
|
|
||||||
new_layer_ids = list(map(lambda x, _: x, new_id, data["Folder"]["layers"]))
|
|
||||||
for index, layer in enumerate(reversed(data["Folder"]["layers"])):
|
|
||||||
next_index = None
|
|
||||||
if index + 1 < len(new_layer_ids):
|
|
||||||
next_index = new_layer_ids[index+1]
|
|
||||||
update_layer(layer, 5, new_layer_ids[index], next_index, 1)
|
|
||||||
|
|
||||||
new_nodes["0"] = {
|
|
||||||
"name": "Output",
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"Node": {
|
|
||||||
"node_id": 42,
|
|
||||||
"output_index": 0,
|
|
||||||
"lambda": False
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Network": {
|
|
||||||
"Concrete": {
|
|
||||||
"name": "graphene_core::application_io::EditorApi<graphene_std::wasm_application_io::WasmApplicationIo>",
|
|
||||||
"size": 176,
|
|
||||||
"align": 8
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"manual_composition": None,
|
|
||||||
"has_primary_output": True,
|
|
||||||
"implementation": {
|
|
||||||
"Network": {
|
|
||||||
"inputs": [
|
|
||||||
3,
|
|
||||||
0
|
|
||||||
],
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"node_id": 3,
|
|
||||||
"node_output_index": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"nodes": {
|
|
||||||
"1": {
|
|
||||||
"name": "Create Canvas",
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"Node": {
|
|
||||||
"node_id": 0,
|
|
||||||
"output_index": 0,
|
|
||||||
"lambda": False
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"manual_composition": None,
|
|
||||||
"has_primary_output": True,
|
|
||||||
"implementation": {
|
|
||||||
"Unresolved": {
|
|
||||||
"name": "graphene_std::wasm_application_io::CreateSurfaceNode"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"position": [
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"skip_deduplication": True,
|
|
||||||
"world_state_hash": 0,
|
|
||||||
"path": None
|
|
||||||
},
|
|
||||||
"3": {
|
|
||||||
"name": "RenderNode",
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"Node": {
|
|
||||||
"node_id": 0,
|
|
||||||
"output_index": 0,
|
|
||||||
"lambda": False
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Network": {
|
|
||||||
"Fn": [
|
|
||||||
{
|
|
||||||
"Concrete": {
|
|
||||||
"name": "graphene_core::transform::Footprint",
|
|
||||||
"size": 72,
|
|
||||||
"align": 8
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Generic": "T"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"Node": {
|
|
||||||
"node_id": 2,
|
|
||||||
"output_index": 0,
|
|
||||||
"lambda": False
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"manual_composition": None,
|
|
||||||
"has_primary_output": True,
|
|
||||||
"implementation": {
|
|
||||||
"Unresolved": {
|
|
||||||
"name": "graphene_std::wasm_application_io::RenderNode<_, _, _>"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"position": [
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"skip_deduplication": False,
|
|
||||||
"world_state_hash": 0,
|
|
||||||
"path": None
|
|
||||||
},
|
|
||||||
"2": {
|
|
||||||
"name": "Cache",
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"Node": {
|
|
||||||
"node_id": 1,
|
|
||||||
"output_index": 0,
|
|
||||||
"lambda": False
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"manual_composition": {
|
|
||||||
"Concrete": {
|
|
||||||
"name": "()",
|
|
||||||
"size": 0,
|
|
||||||
"align": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"has_primary_output": True,
|
|
||||||
"implementation": {
|
|
||||||
"Unresolved": {
|
|
||||||
"name": "graphene_core::memo::MemoNode<_, _>"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"position": [
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"skip_deduplication": False,
|
|
||||||
"world_state_hash": 0,
|
|
||||||
"path": None
|
|
||||||
},
|
|
||||||
"0": {
|
|
||||||
"name": "EditorApi",
|
|
||||||
"inputs": [
|
|
||||||
{
|
|
||||||
"Network": {
|
|
||||||
"Concrete": {
|
|
||||||
"name": "graphene_core::application_io::EditorApi<graphene_std::wasm_application_io::WasmApplicationIo>",
|
|
||||||
"size": 176,
|
|
||||||
"align": 8
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"manual_composition": None,
|
|
||||||
"has_primary_output": True,
|
|
||||||
"implementation": {
|
|
||||||
"Unresolved": {
|
|
||||||
"name": "graphene_core::ops::IdentityNode"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"position": [
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"skip_deduplication": False,
|
|
||||||
"world_state_hash": 0,
|
|
||||||
"path": None
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"disabled": [],
|
|
||||||
"previous_outputs": None
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"metadata": {
|
|
||||||
"position": [
|
|
||||||
8,
|
|
||||||
4
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"skip_deduplication": False,
|
|
||||||
"world_state_hash": 0,
|
|
||||||
"path": None
|
|
||||||
}
|
|
||||||
|
|
||||||
document = {
|
|
||||||
"document_legacy": {
|
|
||||||
"root": {
|
|
||||||
"visible": True,
|
|
||||||
"name": None,
|
|
||||||
"data": {
|
|
||||||
"Folder": {
|
|
||||||
"next_assignment_id": 0,
|
|
||||||
"layer_ids": [],
|
|
||||||
"layers": []
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"transform": {
|
|
||||||
"matrix2": [
|
|
||||||
1.0,
|
|
||||||
0.0,
|
|
||||||
0.0,
|
|
||||||
1.0
|
|
||||||
],
|
|
||||||
"translation": [
|
|
||||||
0.0,
|
|
||||||
0.0
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"preserve_aspect": True,
|
|
||||||
"pivot": [
|
|
||||||
0.5,
|
|
||||||
0.5
|
|
||||||
],
|
|
||||||
"blend_mode": "Normal",
|
|
||||||
"opacity": 1.0
|
|
||||||
},
|
|
||||||
"document_network": {
|
|
||||||
"inputs": [],
|
|
||||||
"outputs": [
|
|
||||||
{
|
|
||||||
"node_id": 0,
|
|
||||||
"node_output_index": 0
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"nodes": new_nodes,
|
|
||||||
"disabled": [],
|
|
||||||
"previous_outputs": None
|
|
||||||
},
|
|
||||||
"commit_hash": "ef46080400bc6c4e069765dd2127306abbc9a94b"
|
|
||||||
},
|
|
||||||
"saved_document_identifier": 0,
|
|
||||||
"auto_saved_document_identifier": 0,
|
|
||||||
"name": "Untitled Document 10",
|
|
||||||
"version": "0.0.18",
|
|
||||||
"document_mode": "DesignMode",
|
|
||||||
"view_mode": "Normal",
|
|
||||||
"overlays_visible": True,
|
|
||||||
"layer_metadata": [],
|
|
||||||
"layer_range_selection_reference": None,
|
|
||||||
"navigation_handler": {
|
|
||||||
"pan": [
|
|
||||||
82.0,
|
|
||||||
84.0
|
|
||||||
],
|
|
||||||
"tilt": 0.0,
|
|
||||||
"zoom": 1.0,
|
|
||||||
"transform_operation": "None",
|
|
||||||
"mouse_position": [
|
|
||||||
389.0,
|
|
||||||
507.0
|
|
||||||
],
|
|
||||||
"finish_operation_with_click": False
|
|
||||||
},
|
|
||||||
"properties_panel_message_handler": {
|
|
||||||
"active_selection": None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
with open(new_name, "w+") as f:
|
|
||||||
json.dump(document, f, indent="\t")
|
|
||||||
|
|
||||||
migrate("just-a-potted-cactus.graphite","migrated_just_a_potted_cactus.graphite")
|
|
||||||
migrate("valley-of-spires.graphite","migrated_valley_of_spires.graphite")
|
|
||||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -79,7 +79,7 @@ pub const DEFAULT_FONT_FAMILY: &str = "Merriweather";
|
||||||
pub const DEFAULT_FONT_STYLE: &str = "Normal (400)";
|
pub const DEFAULT_FONT_STYLE: &str = "Normal (400)";
|
||||||
|
|
||||||
// Document
|
// Document
|
||||||
pub const GRAPHITE_DOCUMENT_VERSION: &str = "0.0.18"; // Remember to update the demo artwork in /demos with both this version number and the contents so it remains editable
|
pub const GRAPHITE_DOCUMENT_VERSION: &str = "0.0.19"; // Remember to update the demo artwork in /demos with both this version number and the contents so it remains editable
|
||||||
pub const DEFAULT_DOCUMENT_NAME: &str = "Untitled Document";
|
pub const DEFAULT_DOCUMENT_NAME: &str = "Untitled Document";
|
||||||
pub const FILE_SAVE_SUFFIX: &str = ".graphite";
|
pub const FILE_SAVE_SUFFIX: &str = ".graphite";
|
||||||
pub const MAX_UNDO_HISTORY_LEN: usize = 100; // TODO: Add this to user preferences
|
pub const MAX_UNDO_HISTORY_LEN: usize = 100; // TODO: Add this to user preferences
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue