Skip to content

Commit 9613bc5

Browse files
authored
👁️ Additional defaults for blend modes (#124)
Blend mode appears to be omitted from the `fig` model when it's set to `NORMAL`. This leads to a key error when processing a node. This small tweak uses `get` to ensure we fall back to `NORMAL` when the `blendMode` key isn't set.
1 parent f47fdd9 commit 9613bc5

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

src/converter/style.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,8 @@ def convert_crop_image_to_mask(fig_node: dict) -> None:
164164
"visible": old.get("visible", True),
165165
"horizontalConstraint": old.get("horizontalConstraint", "MIN"),
166166
"verticalConstraint": old.get("verticalConstraint", "MIN"),
167-
"blendMode": old["blendMode"],
168-
"opacity": old["opacity"],
167+
"blendMode": old.get("blendMode", "NORMAL"),
168+
"opacity": old.get("opacity", 1),
169169
"resizeToFit": True,
170170
"children": [
171171
{
@@ -205,8 +205,8 @@ def cropped_image_layer(fig_node: dict, fill: dict) -> dict:
205205
"visible": fig_node.get("visible", True),
206206
"horizontalConstraint": fig_node.get("horizontalConstraint", "MIN"),
207207
"verticalConstraint": fig_node.get("verticalConstraint", "MIN"),
208-
"blendMode": fig_node["blendMode"],
209-
"opacity": fig_node["opacity"],
208+
"blendMode": fig_node.get("blendMode", "NORMAL"),
209+
"opacity": fig_node.get("opacity", 1),
210210
"fillPaints": [fill],
211211
}
212212
del image_layer["fillPaints"][0]["transform"]
@@ -375,10 +375,10 @@ def convert_effects(fig_node: dict) -> _Effects:
375375

376376

377377
def context_settings(fig_node: dict) -> ContextSettings:
378-
blend_mode = BLEND_MODE[fig_node["blendMode"]]
379-
opacity = fig_node["opacity"]
378+
blend_mode = BLEND_MODE[fig_node.get("blendMode", "NORMAL")]
379+
opacity = fig_node.get("opacity", 1)
380380

381-
if fig_node["blendMode"] == "NORMAL" and opacity == 1:
381+
if blend_mode == BlendMode.NORMAL and opacity == 1:
382382
# Sketch interprets normal at 100% opacity as pass-through
383383
opacity = 0.99
384384

0 commit comments

Comments
 (0)