diff options
Diffstat (limited to 'colordlg.c')
-rw-r--r-- | colordlg.c | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/colordlg.c b/colordlg.c new file mode 100644 index 0000000..599b64c --- /dev/null +++ b/colordlg.c @@ -0,0 +1,96 @@ +/* +Copyright (c) 2003 Bruno T. C. de Oliveira + +LICENSE INFORMATION: +This program is free software; you can redistribute it and/or +modify it under the terms of the GNU General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public +License along with this program; if not, write to the Free Software +Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +Copyright (c) 2002 Bruno T. C. de Oliveira + +INFORMAÇÕES DE LICENÇA: +Este programa é um software de livre distribuição; você pode +redistribuí-lo e/ou modificá-lo sob os termos da GNU General +Public License, conforme publicado pela Free Software Foundation, +pela versão 2 da licença ou qualquer versão posterior. + +Este programa é distribuído na esperança de que ele será útil +aos seus usuários, porém, SEM QUAISQUER GARANTIAS; sem sequer +a garantia implícita de COMERCIABILIDADE ou DE ADEQUAÇÃO A +QUALQUER FINALIDADE ESPECÍFICA. Consulte a GNU General Public +License para obter mais detalhes (uma cópia acompanha este +programa, armazenada no arquivo COPYING). +*/ + +#include "bores/bores.h" +#include <ncurses.h> + +#include "colordlg.h" +#include "psd.h" + +static void paint_dlg(void) { + int x0, y0; int i, j; + char hexdigit[] = "0123456789abcdef"; + + kurses_color(7, 0); + draw_centered_window(39, 21, "Choose Color", &x0, &y0); + + /* draw bg color knob */ + kurses_color(12, 0); + kurses_move(x0 + 4 + 2 * _bg, y0); + addch('b'); + + /* draw fg color knob */ + kurses_color(10, 0); + kurses_move(x0, y0 + 2 + _fg); + addch('f'); + + /* draw horizontal (bg) ruler */ + kurses_color(7, 0); + kurses_move(x0 + 4, y0 + 1); + addstr("0 1 2 3 4 5 6 7 8 9 a b c d e f"); + + /* draw vertical (fg) ruler */ + for (i = 0; i < 16; i++) { + kurses_move(x0 + 2, y0 + 2 + i); + addch(hexdigit[i]); + } + + /* draw squares */ + for (i = 0; i < 16; i++) { + kurses_move(x0 + 4, y0 + 2 + i); + for (j = 0; j < 16; j++) { + kurses_color(i, j); + addstr("Aa"); + } + } + + /* place cursor on selected square */ + kurses_move(x0 + 4 + 2 * _bg, y0 + 2 + _fg); +} + +void show_color_dlg(void) { + int ch; + while (1) { + paint_dlg(); + refresh(); + ch = getch(); + switch (ch) { + case 27: case 3: case 7: case 10: return; + case KEY_UP: if (--_fg < 0) _fg = 15; break; + case KEY_DOWN: if (++_fg >= 16) _fg = 0; break; + case KEY_LEFT: if (--_bg < 0) _bg = 15; break; + case KEY_RIGHT: if (++_bg >= 16) _bg = 0; break; + } + } +} + |