-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathModuleHandler.py
55 lines (50 loc) · 1.51 KB
/
ModuleHandler.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
from modules.Blur import Blur
from modules.Darkness import Darkness
from modules.Resizer import Resizer
from modules.Dog import Dog
from modules.Zw import Zw
from modules.Glitch import Glitch
from modules.Recording import Recording
from modules.Lens import Lens
from modules.Face import Face
from modes.Fps import Fps
from modes.Pause import Pause
class ModuleHandler:
modules = []
modes = {}
def __init__(self, camera):
self.camera = camera
self.modules = [
Blur(),
Darkness(),
Resizer(camera=camera),
Dog(camera=camera),
Zw(camera=camera),
Glitch(),
Recording(camera=camera, handler=self),
Lens(),
Face(camera=camera),
]
self.modes = {
'f': Fps(),
'p': Pause(),
}
def tick(self, img):
sortedModules = sorted(self.modules, key=lambda el: el.priority)
for module in sortedModules:
img = module.process(img)
return img
def updateConfig(self, key):
keys = key.split()
if len(keys):
key = keys[0]
lvl = int(keys[1]) if len(keys) > 1 else 0
for module in self.modules:
if module.name == key:
module.toggle(lvl)
if key in self.modes:
self.modes[key].updateValue(lvl)
def getMode(self, key):
if key in self.modes:
return self.modes[key].getValue()
return False