# Path: vocto/frame.py
# X, Y = 0, 1
# L, T, R, B = 0, 1, 2, 3
# class Frame:
#     def __init__(self, key=False, alpha=255, zorder=None, rect=[0, 0, 0, 0], crop=[0, 0, 0, 0]):
#     def __repr__(self):
#     def str_title():
#     def __str__(self):
#     def __eq__(self, other):
#     def zoomx(self):
#     def zoomy(self):
#     def zoom(self):
#     def cropped(self):
#     def corner(self, ix, iy): return [self.rect[ix], self.rect[iy]]
#     def left(self): return self.rect[L]
#     def top(self): return self.rect[T]
#     def width(self): return self.rect[R] - self.rect[L]
#     def height(self): return self.rect[B] - self.rect[T]
#     def float_alpha(self):
#     def size(self): return self.width(), self.height()
#     def invisible(self):
#     def mirrored(self):
#     def duplicate(self):


import logging
import copy
import re
from vocto.frame import Frame, X, Y, L, T, R, B
                raise RuntimeError(
                    "syntax error in composite config value at '{}':\n{}"
                    .format(name, err))
        add_mirrored_composites(composites)
        if add_swap:
            # add any useful swapped targets
            add_swapped_targets(composites)
        return composites

    def targets(composites):
        """ return a list of all composites that are not intermediate
        """
        result = []
        for c_name, c in composites.items():
            if not c.inter:
                result.append(c)
        return sorted(result, key=lambda c: c.order)

    def intermediates(composites):
        """ return a list of all composites that are intermediate
        """
        result = []
        for c_name, c in composites.items():
            if c.inter:
                result.append(c)
        return sorted(result, key=lambda c: c.order)


class Composite:


# Path: vocto/frame.py
# X, Y = 0, 1
# L, T, R, B = 0, 1, 2, 3
# class Frame:
#     def __init__(self, key=False, alpha=255, zorder=None, rect=[0, 0, 0, 0], crop=[0, 0, 0, 0]):
#     def __repr__(self):
#     def str_title():
#     def __str__(self):
#     def __eq__(self, other):
#     def zoomx(self):
#     def zoomy(self):
#     def zoom(self):
#     def cropped(self):
#     def corner(self, ix, iy): return [self.rect[ix], self.rect[iy]]
#     def left(self): return self.rect[L]
#     def top(self): return self.rect[T]
#     def width(self): return self.rect[R] - self.rect[L]
#     def height(self): return self.rect[B] - self.rect[T]
#     def float_alpha(self):
#     def size(self): return self.width(), self.height()
#     def invisible(self):
#     def mirrored(self):
#     def duplicate(self):


# Path: vocto/composites.py
import logging
import copy
import re
from vocto.frame import Frame, X, Y, L, T, R, B

                raise RuntimeError(
                    "syntax error in composite config value at '{}':\n{}"
                    .format(name, err))
        add_mirrored_composites(composites)
        if add_swap:
            # add any useful swapped targets
            add_swapped_targets(composites)
        return composites

    def targets(composites):
        """ return a list of all composites that are not intermediate
        """
        result = []
        for c_name, c in composites.items():
            if not c.inter:
                result.append(c)
        return sorted(result, key=lambda c: c.order)

    def intermediates(composites):
        """ return a list of all composites that are intermediate
        """
        result = []
        for c_name, c in composites.items():
            if c.inter:
                result.append(c)
        return sorted(result, key=lambda c: c.order)


class Composite:


    def __init__(self, order, name, a=Frame(True), b=Frame(True)):