Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/games/colorbars new colorbars program from Nathanial Sloss
details: https://anonhg.NetBSD.org/src/rev/d142ce11a88d
branches: trunk
changeset: 779624:d142ce11a88d
user: christos <christos%NetBSD.org@localhost>
date: Wed Jun 06 00:13:36 2012 +0000
description:
new colorbars program from Nathanial Sloss
diffstat:
games/colorbars/Makefile | 6 ++
games/colorbars/colorbars.6 | 47 ++++++++++++++++
games/colorbars/colorbars.c | 124 ++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 177 insertions(+), 0 deletions(-)
diffs (189 lines):
diff -r 757a386b3e07 -r d142ce11a88d games/colorbars/Makefile
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/games/colorbars/Makefile Wed Jun 06 00:13:36 2012 +0000
@@ -0,0 +1,6 @@
+PROG= colorbars
+MAN= colorbars.6
+DPADD= ${LIBCURSES}
+LDADD= -lcurses
+
+.include <bsd.prog.mk>
diff -r 757a386b3e07 -r d142ce11a88d games/colorbars/colorbars.6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/games/colorbars/colorbars.6 Wed Jun 06 00:13:36 2012 +0000
@@ -0,0 +1,47 @@
+.\" $NetBSD: colorbars.6,v 1.1 2012/06/06 00:13:36 christos Exp $
+.\"
+.\" Copyright (c) 2012 Nathanial Sloss <nathanialsloss%yahoo.com.au@localhost>
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\" 1. Redistributions of source code must retain the above copyright
+.\" notice, this list of conditions and the following disclaimer.
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\" notice, this list of conditions and the following disclaimer in the
+.\" documentation and/or other materials provided with the distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+.\" POSSIBILITY OF SUCH DAMAGE.
+.\"
+.Dd June 5, 2012
+.Dt COLORBARS 6
+.Os
+.Sh NAME
+.Nm colorbars
+.Nd display ANSI color bars
+.Sh SYNOPSIS
+.Nm
+.Sh DESCRIPTION
+The
+.Nm
+command displays ANSI color bars on a color capable terminal using
+.Xr curses 3 .
+.Sh SEE ALSO
+.Xr curses 3
+.Sh AUTHORS
+Nathanial Sloss
+.Sh HISTORY
+.Nm
+appeared in
+.Nx 7 .
diff -r 757a386b3e07 -r d142ce11a88d games/colorbars/colorbars.c
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/games/colorbars/colorbars.c Wed Jun 06 00:13:36 2012 +0000
@@ -0,0 +1,124 @@
+/* $NetBSD: colorbars.c,v 1.1 2012/06/06 00:13:36 christos Exp $ */
+
+/*-
+ * Copyright (c) 2012 Nathanial Sloss <nathanialsloss%yahoo.com.au@localhost>
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
+ * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ * POSSIBILITY OF SUCH DAMAGE.
+ */
+#include <sys/cdefs.h>
+__RCSID("$NetBSD: colorbars.c,v 1.1 2012/06/06 00:13:36 christos Exp $");
+
+#include <curses.h>
+#include <stdio.h>
+#include <string.h>
+#include <err.h>
+#include <stdlib.h>
+
+int
+main(void)
+{
+ static struct colorInfo {
+ const char *name;
+ int color;
+ } colorInfo[] = {
+ { "Black", COLOR_BLACK },
+ { "Red", COLOR_RED },
+ { "Green", COLOR_GREEN },
+ { "Yellow", COLOR_YELLOW },
+ { "Blue", COLOR_BLUE },
+ { "Magenta", COLOR_MAGENTA },
+ { "Cyan", COLOR_CYAN },
+ { "White", COLOR_WHITE },
+ };
+ size_t lengths[__arraycount(colorInfo)];
+
+ static const size_t numcolors = __arraycount(colorInfo);
+ size_t labelwidth;
+
+ int colorOK;
+ int spacing, offsetx, labeloffsety, labeloffsetx;
+
+ if (!initscr())
+ errx(EXIT_FAILURE, "Cannot initialize curses");
+
+ colorOK = has_colors();
+ if (!colorOK) {
+ endwin();
+ errx(EXIT_FAILURE, "Terminal cannot display color");
+ }
+
+ if (COLS < 45 || LINES < 10) {
+ endwin();
+ errx(EXIT_FAILURE, "Terminal size must be at least 45x10.");
+ }
+
+ spacing = COLS / numcolors;
+ offsetx = (COLS - (spacing * numcolors)) / 2;
+
+
+ start_color();
+
+ labelwidth = 0;
+ for (size_t i = 0; i < numcolors; i++) {
+ lengths[i] = strlen(colorInfo[i].name);
+ if (lengths[i] > labelwidth)
+ labelwidth = lengths[i];
+ init_pair(i, COLOR_WHITE, colorInfo[i].color);
+ }
+
+ labeloffsetx = spacing / 2;
+ labeloffsety = (LINES - 1 - labelwidth) / 2;
+ clear();
+
+ move(0, 0);
+
+ for (size_t i = 0; i < numcolors; i++) {
+ int xoffs = offsetx + spacing * i;
+
+ attrset(COLOR_PAIR(i));
+
+ for (int line = 0; line < LINES - 1; line++)
+ for (int xpos = 0; xpos < spacing; xpos++)
+ mvprintw(line, xoffs + xpos, " ");
+
+ attrset(COLOR_PAIR(0));
+
+ xoffs += labeloffsetx;
+ for (size_t line = 0; line < lengths[i]; line++)
+ mvprintw(line + labeloffsety, xoffs, "%c",
+ colorInfo[i].name[line]);
+ }
+
+ attrset(COLOR_PAIR(0));
+
+ mvprintw(LINES - 1, 0, "ANSI Color chart - Press any key to exit: ");
+
+ refresh();
+
+ getch();
+
+ endwin();
+
+ return EXIT_SUCCESS;
+}
+
Home |
Main Index |
Thread Index |
Old Index