import "./param-blend" as paramBlend export : define [build parametersData styles blendParams] : begin local param {.} define [introStyle style] : begin local hive parametersData.(style) if (!hive) : return nothing if hive.inherits : foreach [h : items-of hive.inherits] : introStyle h foreach [k : items-of : Object.keys hive] : piecewise (k === "multiplies") : foreach [k : items-of : Object.keys hive.multiplies] : begin set param.(k) : param.(k) * hive.multiplies.(k) (k === "adds") : foreach [k : items-of : Object.keys hive.adds] : begin set param.(k) : param.(k) + hive.adds.(k) (k === "appends") : foreach [k : items-of : Object.keys hive.appends] : begin set param.(k) : (param.(k) || {}).concat(hive.appends.(k)) true : set param.(k) hive.(k) paramBlend style hive blendParams param foreach [style : items-of styles] : introStyle style return param extern isFinite define [numericConfigExists x] : [isFinite x] && (x != null) export : define [applyMetricOverride para mo] : begin if [numericConfigExists mo.leading] set para.leading mo.leading if [numericConfigExists mo.winMetricAscenderPad] set para.winMetricAscenderPad mo.winMetricAscenderPad if [numericConfigExists mo.winMetricDescenderPad] set para.winMetricDescenderPad mo.winMetricDescenderPad if [numericConfigExists mo.powerlineScaleY] set para.powerlineScaleY mo.powerlineScaleY if [numericConfigExists mo.powerlineScaleX] set para.powerlineScaleX mo.powerlineScaleX if [numericConfigExists mo.powerlineShiftY] set para.powerlineShiftY mo.powerlineShiftY if [numericConfigExists mo.powerlineShiftX] set para.powerlineShiftX mo.powerlineShiftX