def __init__(self, num_side, size_img, rules, selection=False):
     self.n = num_side
     self.selection = selection
     self.s = size_img
     self.r = []
     for rule in rules:
         if rule == 'progress':
             self.r.append(
                 RuleProgressSingle(get_bounds(self.n), get_attributions(),
                                    {
                                        'color': (0.2, 0.3),
                                        'size': (0.2, 0.25)
                                    }))
             self.r.append(
                 RuleProgressSingle(get_bounds(self.n), get_attributions(),
                                    {
                                        'color': (0.2, 0.3),
                                        'size': (0.2, 0.25)
                                    }))
             self.r.append(
                 RuleBiProgress(get_bounds(self.n), get_attributions(), {
                     'color': (0.15, 0.3),
                     'size': (0.15, 0.25)
                 }))
     self.instanceDrawer = InstanceDrawer(self.n, self.s)
     self.ruleMaker = RuleMaker(self.r, self.n)
     self.selectionGenerator = SelectionGenerator(get_bounds(self.n),
                                                  get_attributions())
 def __init__(self, size_img, rules, selection=False):
     self.s = size_img
     self.selection = selection
     self.r = []
     for rule in rules:
         if rule == 'progress':
             self.r.append(
                 RuleProgressSingle(get_bounds(), get_attributions(),
                                    get_steps()))
     self.instanceDrawer = InstanceDrawerComplexCircle(self.s)
     self.ruleMaker = RuleMaker(self.r)
     self.selectionGenerator = SelectionGenerator(get_bounds(),
                                                  get_attributions())
class PanelDrawer:
    def __init__(self, size_img, rules, selection=False):
        self.s = size_img
        self.selection = selection
        self.r = []
        for rule in rules:
            if rule == 'progress':
                self.r.append(
                    RuleProgressSingle(get_bounds(), get_attributions(),
                                       get_steps()))
        self.instanceDrawer = InstanceDrawerComplexCircle(self.s)
        self.ruleMaker = RuleMaker(self.r)
        self.selectionGenerator = SelectionGenerator(get_bounds(),
                                                     get_attributions())

    def draw(self):
        rule_panel = self.ruleMaker.draw()
        pics = []
        for rule_pic in rule_panel:
            pic = self.instanceDrawer.draw(rule_pic)
            pics.append(pic[None, None, ...])
        if self.selection:
            rule_selections, answer = self.selectionGenerator.draw(
                rule_panel[-1])
            selection_pics = []
            for rule_selection in rule_selections:
                selection_pics.append(
                    self.instanceDrawer.draw(rule_selection)[None, None, ...])
            return np.concatenate(pics, axis=0), np.concatenate(
                selection_pics, axis=0), np.array([answer])
        return np.concatenate(pics, axis=0)
 def __init__(self, size_img, rules, selection=False):
     self.s = size_img
     self.r = []
     self.selection = selection
     for rule in rules:
         if rule == 'progress':
             self.r.append(
                 RuleProgressSingle(get_bounds(), get_attributions(),
                                    get_steps()))
         elif rule == 'progress_multi':
             self.r.append(
                 RuleMultiProgress(get_bounds(), get_attributions(),
                                   get_changeable_attributions(),
                                   get_steps()))
     self.instanceDrawer = InstanceDrawerContinue(self.s)
     self.ruleMaker = RuleMaker(self.r)
     self.selectionGenerator = SelectionGenerator(get_bounds(),
                                                  get_attributions())
class PanelDrawer:
    def __init__(self, num_side, size_img, rules, selection=False):
        self.n = num_side
        self.s = size_img
        self.selection = selection
        self.r = []
        for rule in rules:
            if rule == 'progress':
                self.r.append(
                    RuleProgressSingle(
                        get_bounds(self.n), get_attributions(), {
                            'color': (0.2, 0.3),
                            'size': (0.1, 0.15),
                            'xpos': (0.1, 0.15),
                            'ypos': (0.1, 0.15),
                        }))
                self.r.append(
                    RuleProgressSingle(
                        get_bounds(self.n), get_attributions(), {
                            'color': (0.2, 0.3),
                            'size': (0.1, 0.15),
                            'xpos': (0.1, 0.15),
                            'ypos': (0.1, 0.15),
                        }))
                self.r.append(
                    RuleBiProgress(
                        get_bounds(self.n), get_attributions(), {
                            'color': (0.2, 0.3),
                            'size': (0.1, 0.15),
                            'xpos': (0.1, 0.15),
                            'ypos': (0.1, 0.15),
                        }))
        self.instanceDrawer = InstanceDrawer(self.n, self.s)
        self.ruleMaker = RuleMaker(self.r, self.n)
        self.selectionGenerator = SelectionGenerator(get_bounds(self.n),
                                                     get_attributions())

    def draw(self):
        rule_panel = self.ruleMaker.draw()
        pics = []
        for rule_pic in rule_panel:
            pic = self.instanceDrawer.draw(rule_pic)
            pics.append(pic[None, None, ...])
        if self.selection:
            rule_selections, answer = self.selectionGenerator.draw(
                rule_panel[-1])
            selection_pics = []
            for rule_selection in rule_selections:
                selection_pics.append(
                    self.instanceDrawer.draw(rule_selection)[None, None, ...])
            return np.concatenate(pics, axis=0), np.concatenate(
                selection_pics, axis=0), np.array([answer])
        return np.concatenate(pics, axis=0)
 def __init__(self,
              num_side,
              size_img,
              color_out,
              size_in,
              rules,
              selection=False):
     self.n = num_side
     self.s = size_img
     self.c = color_out
     self.sz = size_in
     self.selection = selection
     self.r = []
     for rule in rules:
         if rule == 'progress':
             self.r.append(
                 RuleProgressSingle(get_bounds(self.n), get_attributions(),
                                    get_steps()))
     self.instanceDrawer = InstanceDrawerComplexPolygon(
         self.n, self.n, self.c, self.sz, self.s)
     self.ruleMaker = RuleMaker(self.r, self.n)
     self.selectionGenerator = SelectionGenerator(get_bounds(self.n),
                                                  get_attributions())