c1f171a3ae134b969467ff3580abaf2707e8118f
- Author
- Pavle Portic <pavle.portic@tilda.center>
- Committer
- Pavle Portic <pavle.portic@tilda.center>
- Date
Message
Diff
This diff is truncated to protect this page.
1diff --git a/README.md b/README.md
2index 36433f27bf0b12d4ee2c7e867e8d261738f7fb0a..85499a0543c284f035ba3e5bfc1a750b1c156034 100644
3--- a/README.md
4+++ b/README.md
5@@ -8,3 +8,5 @@ A simple python script that draws an interactive mandelbrot set in the terminal
6 - `(`/`)` - Zoom in and out
7 - `=` - Reset zoom
8 - `+`/`-` - Change the number of iterations to run per pixel
9+- `c` - Toggle between color and monochrome mode
10+- `q` - Quit
11diff --git a/colors.py b/colors.py
12new file mode 100644
13index 0000000000000000000000000000000000000000..d55743d6306bf226ed699119ca88b0a8b4551561
14--- /dev/null
15+++ b/colors.py
16@@ -0,0 +1,514 @@
17+#! /usr/bin/env python
18+# -*- coding: utf-8 -*-
19+# vim:fenc=utf-8
20+#
21+# Copyright © 2019 pavle <pavle.portic@tilda.center>
22+#
23+# Distributed under terms of the BSD-3-Clause license.
24+
25+import curses
26+
27+
28+def init_21_colors():
29+ curses.init_color(1, 0, 0, 0)
30+ curses.init_color(2, 1000, 0, 0)
31+ curses.init_color(3, 1000, 333, 0)
32+ curses.init_color(4, 1000, 666, 0)
33+ curses.init_color(5, 1000, 1000, 0)
34+ curses.init_color(6, 666, 1000, 0)
35+ curses.init_color(7, 333, 1000, 0)
36+ curses.init_color(8, 0, 1000, 0)
37+ curses.init_color(9, 0, 1000, 333)
38+ curses.init_color(10, 0, 1000, 666)
39+ curses.init_color(11, 0, 1000, 1000)
40+ curses.init_color(12, 0, 666, 1000)
41+ curses.init_color(13, 0, 333, 1000)
42+ curses.init_color(14, 0, 0, 1000)
43+ curses.init_color(15, 333, 0, 1000)
44+ curses.init_color(16, 666, 0, 1000)
45+ curses.init_color(17, 1000, 0, 1000)
46+ curses.init_color(18, 1000, 0, 666)
47+ curses.init_color(19, 1000, 0, 333)
48+ curses.init_color(20, 1000, 0, 0)
49+ curses.init_color(21, 800, 800, 800)
50+ curses.init_color(22, 50, 50, 50)
51+ curses.init_pair(1, 0, 1)
52+ curses.init_pair(2, 0, 2)
53+ curses.init_pair(3, 0, 3)
54+ curses.init_pair(4, 0, 4)
55+ curses.init_pair(5, 0, 5)
56+ curses.init_pair(6, 0, 6)
57+ curses.init_pair(7, 0, 7)
58+ curses.init_pair(8, 0, 8)
59+ curses.init_pair(9, 0, 9)
60+ curses.init_pair(10, 0, 10)
61+ curses.init_pair(11, 0, 11)
62+ curses.init_pair(12, 0, 12)
63+ curses.init_pair(13, 0, 13)
64+ curses.init_pair(14, 0, 14)
65+ curses.init_pair(15, 0, 15)
66+ curses.init_pair(16, 0, 16)
67+ curses.init_pair(17, 0, 17)
68+ curses.init_pair(18, 0, 18)
69+ curses.init_pair(19, 0, 19)
70+ curses.init_pair(20, 0, 20)
71+ curses.init_pair(21, 21, 22)
72+ return 21
73+
74+
75+def init_21_monochrome():
76+ curses.init_color(1, 0, 0, 0)
77+ curses.init_color(2, 50, 50, 50)
78+ curses.init_color(3, 100, 100, 100)
79+ curses.init_color(4, 150, 150, 150)
80+ curses.init_color(5, 200, 200, 200)
81+ curses.init_color(6, 250, 250, 250)
82+ curses.init_color(7, 300, 300, 300)
83+ curses.init_color(8, 350, 350, 350)
84+ curses.init_color(9, 400, 400, 400)
85+ curses.init_color(10, 450, 450, 450)
86+ curses.init_color(11, 500, 500, 500)
87+ curses.init_color(12, 550, 550, 550)
88+ curses.init_color(13, 600, 600, 600)
89+ curses.init_color(14, 650, 650, 650)
90+ curses.init_color(15, 700, 700, 700)
91+ curses.init_color(16, 750, 750, 750)
92+ curses.init_color(17, 800, 800, 800)
93+ curses.init_color(18, 850, 850, 850)
94+ curses.init_color(19, 900, 900, 900)
95+ curses.init_color(20, 950, 950, 950)
96+ curses.init_pair(1, 0, 1)
97+ curses.init_pair(2, 0, 2)
98+ curses.init_pair(3, 0, 3)
99+ curses.init_pair(4, 0, 4)
100+ curses.init_pair(5, 0, 5)
101+ curses.init_pair(6, 0, 6)
102+ curses.init_pair(7, 0, 7)
103+ curses.init_pair(8, 0, 8)
104+ curses.init_pair(9, 0, 9)
105+ curses.init_pair(10, 0, 10)
106+ curses.init_pair(11, 0, 11)
107+ curses.init_pair(12, 0, 12)
108+ curses.init_pair(13, 0, 13)
109+ curses.init_pair(14, 0, 14)
110+ curses.init_pair(15, 0, 15)
111+ curses.init_pair(16, 0, 16)
112+ curses.init_pair(17, 0, 17)
113+ curses.init_pair(18, 0, 18)
114+ curses.init_pair(19, 0, 19)
115+ curses.init_pair(20, 0, 20)
116diff --git a/mandelbrot.py b/mandelbrot.py
117index 97a9b85a6541aa9cb5f6d5393bcc249178b042a0..b093aae1d10e75e8f552ddccca740e45266506d8 100644
118--- a/mandelbrot.py
119+++ b/mandelbrot.py
120@@ -10,8 +10,11 @@
121 import numpy as np
122 import curses
123
124+import colors
125+
126 MAX_ITERS = 100
127 COLOR_COUNT = 101
128+MONOCHROME = False
129 ZOOM_LEVEL = 0
130 X_SCALE = 1.75
131 Y_SCALE = 1
132@@ -69,6 +72,8 @@ def handle_keyboard(char):
133 global Y_MID
134 global ZOOM_LEVEL
135 global MAX_ITERS
136+ global MONOCHROME
137+ global COLOR_COUNT
138
139 if char == 113:
140 return True
141@@ -100,313 +105,22 @@ def handle_keyboard(char):
142 elif char == 45: # Iterations down
143 MAX_ITERS -= 1
144 return False
145+ elif char == 99: # Toggle colors
146+ if MONOCHROME:
147+ COLOR_COUNT = colors.init_101_colors()
148+ MONOCHROME = False
149+ else:
150+ COLOR_COUNT = colors.init_101_monochrome()
151+ MONOCHROME = True
152
153-
154-def init_colors():
155- global COLOR_COUNT
156- COLOR_COUNT = 21
157- curses.init_color(1, 0, 0, 0)
158- curses.init_color(2, 1000, 0, 0)
159- curses.init_color(3, 1000, 333, 0)
160- curses.init_color(4, 1000, 666, 0)
161- curses.init_color(5, 1000, 1000, 0)
162- curses.init_color(6, 666, 1000, 0)
163- curses.init_color(7, 333, 1000, 0)
164- curses.init_color(8, 0, 1000, 0)
165- curses.init_color(9, 0, 1000, 333)
166- curses.init_color(10, 0, 1000, 666)
167- curses.init_color(11, 0, 1000, 1000)
168- curses.init_color(12, 0, 666, 1000)
169- curses.init_color(13, 0, 333, 1000)
170- curses.init_color(14, 0, 0, 1000)
171- curses.init_color(15, 333, 0, 1000)
172- curses.init_color(16, 666, 0, 1000)
173- curses.init_color(17, 1000, 0, 1000)
174- curses.init_color(18, 1000, 0, 666)
175- curses.init_color(19, 1000, 0, 333)
176- curses.init_color(20, 1000, 0, 0)
177- curses.init_color(21, 50, 50, 50)
178- curses.init_color(22, 800, 800, 800)
179- curses.init_pair(1, 0, 1)
180- curses.init_pair(2, 0, 2)
181- curses.init_pair(3, 0, 3)
182- curses.init_pair(4, 0, 4)
183- curses.init_pair(5, 0, 5)
184- curses.init_pair(6, 0, 6)
185- curses.init_pair(7, 0, 7)
186- curses.init_pair(8, 0, 8)
187- curses.init_pair(9, 0, 9)
188- curses.init_pair(10, 0, 10)
189- curses.init_pair(11, 0, 11)
190- curses.init_pair(12, 0, 12)
191- curses.init_pair(13, 0, 13)
192- curses.init_pair(14, 0, 14)
193- curses.init_pair(15, 0, 15)
194- curses.init_pair(16, 0, 16)
195- curses.init_pair(17, 0, 17)
196- curses.init_pair(18, 0, 18)
197- curses.init_pair(19, 0, 19)
198- curses.init_pair(20, 0, 20)
199- curses.init_pair(21, 22, 21)
200-
201-
202-def init_monochrome():
203- global COLOR_COUNT
204- COLOR_COUNT = 21
205- curses.init_color(1, 0, 0, 0)
206- curses.init_color(2, 50, 50, 50)
207- curses.init_color(3, 100, 100, 100)
208- curses.init_color(4, 150, 150, 150)
209- curses.init_color(5, 200, 200, 200)
210- curses.init_color(6, 250, 250, 250)
211- curses.init_color(7, 300, 300, 300)
212- curses.init_color(8, 350, 350, 350)
213- curses.init_color(9, 400, 400, 400)
214- curses.init_color(10, 450, 450, 450)
215- curses.init_color(11, 500, 500, 500)
216- curses.init_color(12, 550, 550, 550)
217- curses.init_color(13, 600, 600, 600)
218- curses.init_color(14, 650, 650, 650)
219- curses.init_color(15, 700, 700, 700)