Blob Blame Raw
"""
This module will store all the functions required for fill effects of lottie
"""

import sys
import settings
from common.Count import Count
from common.Layer import Layer
from effects.fillmask import gen_effects_fillmask
from effects.allmask import gen_effects_allmask
from effects.color import gen_effects_color
from effects.invert import gen_effects_invert
from effects.feather import gen_effects_hfeather, gen_effects_vfeather
from effects.opacity import gen_effects_opacity
sys.path.append("../")


def gen_effects_fill(lottie, layer, idx):
    """
    Generates the dictionary corresponding to effects/fill.json

    Args:
        lottie (dict)               : Lottie format layer
        layer  (common.Layer.Layer)  : Synfig format layer
        idx    (int)                : Index/Count of effect

    Returns:
        (None)
    """
    index = Count()
    lottie["ty"] = settings.EFFECTS_FILL    # Effect type
    lottie["nm"] = "Fill"                   # Name
    lottie["ix"] = idx                      # Index
    lottie["ef"] = []                       # Effect list of properties

    # generating the fill mask, has no use in Synfig. But a necessity for
    # running the .json file
    lottie["ef"].append({})
    gen_effects_fillmask(lottie["ef"][-1], index.inc())

    # generating the all mask property as required by lottie
    lottie["ef"].append({})
    gen_effects_allmask(lottie["ef"][-1], index.inc())

    # generating the color property
    lottie["ef"].append({})
    gen_effects_color(lottie["ef"][-1], layer, index.inc())

    # generating the invert property as required by lottie
    lottie["ef"].append({})
    gen_effects_invert(lottie["ef"][-1], index.inc())

    # generating the horizontal feather as required by lottie
    lottie["ef"].append({})
    gen_effects_hfeather(lottie["ef"][-1], index.inc())

    # generating the vertical feather as required by lottie
    lottie["ef"].append({})
    gen_effects_vfeather(lottie["ef"][-1], index.inc())

    # generating the opacity
    lottie["ef"].append({})
    gen_effects_opacity(lottie["ef"][-1], layer, index.inc())