* [sup-devel] [PATCH] add a mouse-enabled colorpicker to contrib
@ 2010-01-03 15:33 Rich Lane
2010-01-05 21:04 ` William Morgan
0 siblings, 1 reply; 2+ messages in thread
From: Rich Lane @ 2010-01-03 15:33 UTC (permalink / raw)
To: sup-devel
Intended to make colorscheme creation easier.
---
contrib/colorpicker.rb | 104 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 104 insertions(+), 0 deletions(-)
create mode 100644 contrib/colorpicker.rb
diff --git a/contrib/colorpicker.rb b/contrib/colorpicker.rb
new file mode 100644
index 0000000..c981a23
--- /dev/null
+++ b/contrib/colorpicker.rb
@@ -0,0 +1,104 @@
+require 'rubygems'
+
+begin
+ require 'ncursesw'
+rescue LoadError
+ require 'ncurses'
+end
+
+Ncurses.initscr
+Ncurses.noecho
+Ncurses.cbreak
+Ncurses.start_color
+
+Ncurses.curs_set 0
+Ncurses.move 0, 0
+Ncurses.clear
+Ncurses.refresh
+cc = Ncurses.COLORS
+
+Ncurses::keypad(Ncurses::stdscr, 1)
+Ncurses::mousemask(Ncurses::ALL_MOUSE_EVENTS | Ncurses::REPORT_MOUSE_POSITION, [])
+
+fail "color count is #{cc}, expected 256" unless cc == 256
+
+1.upto(255) do |c|
+ Ncurses.init_pair(c, 0, c)
+end
+
+def cell y, x, c
+ @map[[y,x]] = c
+ Ncurses.attron(Ncurses.COLOR_PAIR(c))
+ Ncurses.mvaddstr(y, x, " ")
+ Ncurses.attroff(Ncurses.COLOR_PAIR(c))
+end
+
+def handle_click y, x
+ c = @map[[y,x]] or return
+ name = case c
+ when 0...16
+ c.to_s
+ when 16...232
+ 'c' + (c-16).to_s(6).rjust(3,'0')
+ when 232...256
+ 'g' + (c-232).to_s
+ end
+
+ Ncurses.mvaddstr 11, 0, "#{name} "
+
+ Ncurses.attron(Ncurses.COLOR_PAIR(c))
+ 10.times do |i|
+ 20.times do |j|
+ y = 13 + i
+ x = j
+ Ncurses.mvaddstr(y, x, " ")
+ end
+ end
+ Ncurses.attroff(Ncurses.COLOR_PAIR(c))
+end
+
+@map = {}
+@fg = @bg = 0
+
+begin
+ 16.times do |i|
+ cell 0, i, i
+ end
+
+ 6.times do |i|
+ 6.times do |j|
+ 6.times do |k|
+ c = 16 + 6*6*i + 6*j + k
+ y = 2 + j
+ x = 7*i + k
+ cell y, x, c
+ end
+ end
+ end
+
+ 16.times do |i|
+ c = 16 + 6*6*6 + i
+ cell 9, i, c
+ end
+
+ handle_click 0, 0
+ Ncurses.refresh
+
+ while (c = Ncurses.getch)
+ case c
+ when 113 #q
+ break
+ when Ncurses::KEY_MOUSE
+ mev = Ncurses::MEVENT.new
+ Ncurses.getmouse(mev)
+ case(mev.bstate)
+ when Ncurses::BUTTON1_CLICKED
+ handle_click mev.y, mev.x
+ end
+ end
+ Ncurses.refresh
+ end
+
+ensure
+ Ncurses.endwin
+end
--
1.6.3.3
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [sup-devel] [PATCH] add a mouse-enabled colorpicker to contrib
2010-01-03 15:33 [sup-devel] [PATCH] add a mouse-enabled colorpicker to contrib Rich Lane
@ 2010-01-05 21:04 ` William Morgan
0 siblings, 0 replies; 2+ messages in thread
From: William Morgan @ 2010-01-05 21:04 UTC (permalink / raw)
To: sup-devel
I've also thrown this on the colors branch. Looks fun!
--
William <wmorgan-sup@masanjin.net>
_______________________________________________
Sup-devel mailing list
Sup-devel@rubyforge.org
http://rubyforge.org/mailman/listinfo/sup-devel
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2010-01-05 21:04 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-01-03 15:33 [sup-devel] [PATCH] add a mouse-enabled colorpicker to contrib Rich Lane
2010-01-05 21:04 ` William Morgan
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox