c1f171a3ae134b969467ff3580abaf2707e8118f

Author
Pavle Portic <pavle.portic@tilda.center>
Committer
Pavle Portic <pavle.portic@tilda.center>
Date

Message

Add Keybind to toggle between color and monochrome mode

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)