# 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
        """
        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)):
        assert type(order) is int or order is None
        assert type(name) is str or not name
        self.name = name
        self.frame = [copy.deepcopy(a), copy.deepcopy(b)]
        self.default = [None, None]
        self.inter = False
        self.noswap = False
        self.mirror = False
        self.order = order

    def str_title():
        return "Key A%s\tB%s  Name" % (Frame.str_title(), Frame.str_title())

    def __str__(self):
        def hidden( x, hidden ):
            return str(x).replace(' ','_') if hidden else str(x)

        return "%s A%s\tB%s  %s" % (" * " if self.A().key else "   ",
                                    hidden(self.A(), self.A().invisible() or self.covered()),

# 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

        """
        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)):
        assert type(order) is int or order is None
        assert type(name) is str or not name
        self.name = name
        self.frame = [copy.deepcopy(a), copy.deepcopy(b)]
        self.default = [None, None]
        self.inter = False
        self.noswap = False
        self.mirror = False
        self.order = order

    def str_title():
        return "Key A%s\tB%s  Name" % (Frame.str_title(), Frame.str_title())

    def __str__(self):
        def hidden( x, hidden ):
            return str(x).replace(' ','_') if hidden else str(x)

        return "%s A%s\tB%s  %s" % (" * " if self.A().key else "   ",
                                    hidden(self.A(), self.A().invisible() or self.covered()),

                                    hidden(self.B(), self.B().invisible()),