Colour bars/Display: Difference between revisions

m
size of picture adjusted
No edit summary
m (size of picture adjusted)
 
(84 intermediate revisions by 28 users not shown)
Line 10:
::::::*   red
::::::*   green
::::::*   blue
::::::*   magenta
::::::*   cyan
Line 15 ⟶ 16:
::::::*   white
<br>
 
=={{header|6502 Assembly}}==
Implemented using Easy6502, this displays a pinstripe using the system palette. There are 16 colors, and the bottom 4 bits of A are the color index.
<syntaxhighlight lang="6502asm">lda #0
tax
tay ;clear regs
 
;video ram on Easy6502 is four pages ranging from $0200-$0500
 
loop:
sta $0200,x
sta $0220,x
sta $0240,x
sta $0260,x
sta $0280,x
sta $02A0,x
sta $02C0,x
sta $02E0,x
 
sta $0300,x
sta $0320,x
sta $0340,x
sta $0360,x
sta $0380,x
sta $03A0,x
sta $03C0,x
sta $03E0,x
 
sta $0400,x
sta $0420,x
sta $0440,x
sta $0460,x
sta $0480,x
sta $04A0,x
sta $04C0,x
sta $04E0,x
 
sta $0500,x
sta $0520,x
sta $0540,x
sta $0560,x
sta $0580,x
sta $05A0,x
sta $05C0,x
sta $05E0,x
 
inx
txa ;effectively increment A
cpx #$20 ;32 columns of video memory
beq exit
jmp loop
exit:
brk ;on easy6502 this terminates a program. </syntaxhighlight>
 
 
 
=={{header|Action!}}==
<syntaxhighlight lang="action!">PROC Main()
BYTE
i,
CH=$02FC, ;Internal hardware value for last key pressed
PALNTSC=$D014, ;To check if PAL or NTSC system is used
PCOLR0=$02C0,PCOLR1=$02C1,
PCOLR2=$02C2,PCOLR3=$02C3,
COLOR0=$02C4,COLOR1=$02C5,
COLOR2=$02C6,COLOR3=$02C7,
COLOR4=$02C8
Graphics(10)
PCOLR0=$04 ;gray
PCOLR1=$00 ;black
IF PALNTSC=15 THEN
PCOLR2=$42 ;red for NTSC
PCOLR3=$C6 ;green for NTSC
COLOR0=$84 ;blue for NTSC
COLOR1=$66 ;magenta for NTSC
COLOR2=$A6 ;cyan for NTSC
COLOR3=$FC ;yellow for NTSC
ELSE
PCOLR2=$22 ;red for PAL
PCOLR3=$B6 ;green for PAL
COLOR0=$74 ;blue for PAL
COLOR1=$48 ;magenta for PAL
COLOR2=$96 ;cyan for PAL
COLOR3=$EC ;yellow for PAL
FI
COLOR4=$0F ;white
 
FOR i=0 TO 79
DO
Color=i/10+1
Plot(i,0)
DrawTo(i,191)
OD
 
DO UNTIL CH#$FF OD
CH=$FF
RETURN</syntaxhighlight>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Colour_bars_display.png Screenshot from Atari 8-bit computer]
 
=={{header|ActionScript}}==
<syntaxhighlight lang="actionscript3">
<lang ActionScript3>
package {
Line 47 ⟶ 148:
}
</syntaxhighlight>
</lang>
 
=={{header|Ada}}==
{{libheader|SDLAda}}
<syntaxhighlight lang="ada">with SDL.Video.Windows.Makers;
with SDL.Video.Renderers.Makers;
with SDL.Video.Palettes;
with SDL.Events.Events;
with SDL.Events.Keyboards;
 
procedure Colour_Bars_Display is
use type SDL.Events.Event_Types;
use SDL.C;
 
Colours : constant array (0 .. 7) of SDL.Video.Palettes.Colour :=
((0, 0, 0, 255), (255, 0, 0, 255),
(0, 255, 0, 255), (0, 0, 255, 255),
(255, 0, 255, 255), (0, 255, 255, 255),
(255, 255, 0, 255), (255, 255, 255, 255));
Window : SDL.Video.Windows.Window;
Renderer : SDL.Video.Renderers.Renderer;
Event : SDL.Events.Events.Events;
Bar_Width : int;
begin
if not SDL.Initialise (Flags => SDL.Enable_Screen) then
return;
end if;
 
SDL.Video.Windows.Makers.Create (Win => Window,
Title => "",
Position => SDL.Natural_Coordinates'(0, 0),
Size => SDL.Positive_Sizes'(0, 0),
Flags => SDL.Video.Windows.Full_Screen_Desktop);
SDL.Video.Renderers.Makers.Create (Renderer, Window.Get_Surface);
 
Bar_Width := Window.Get_Size.Width / 8;
for A in Colours'Range loop
Renderer.Set_Draw_Colour (Colour => Colours (A));
Renderer.Fill (Rectangle => (X => SDL.C.int (A) * Bar_Width, Y => 0,
Width => Bar_Width,
Height => Window.Get_Size.Height));
end loop;
Window.Update_Surface;
 
Wait_Loop : loop
while SDL.Events.Events.Poll (Event) loop
exit Wait_Loop when Event.Common.Event_Type = SDL.Events.Keyboards.Key_Down;
end loop;
delay 0.050;
end loop Wait_Loop;
Window.Finalize;
SDL.Finalise;
end Colour_Bars_Display;</syntaxhighlight>
 
=={{header|AutoHotkey}}==
{{libheader|GDI+}} (available at http://www.autohotkey.net/~tic/Gdip.ahk)
<langsyntaxhighlight AutoHotkeylang="autohotkey">#SingleInstance, Force
#NoEnv
SetBatchLines, -1
Line 143 ⟶ 296:
Gdip_Shutdown(pToken)
ExitApp
Return</langsyntaxhighlight>
 
=={{header|AWK}}==
<syntaxhighlight lang="awk">
BEGIN {
nrcolors = 8
 
for (height=0; height<20; height++) {
for (width=0; width<nrcolors; width++) {
# print (ANSI) basic color and amount of spaces
printf("\033[%dm%*s", width + 40, 64 / nrcolors, " ")
}
# reset color and print newline
printf("\033[0m\n")
}
}
</syntaxhighlight>
 
=={{header|BASIC}}==
==={{header|AmigaBASIC}}===
<syntaxhighlight lang="amigabasic">SCREEN 1,320,200,5,1
WINDOW 2,"Color bars",(0,10)-(297,186),15,1
FOR a=0 TO 300
LINE (a,0)-(a,186),(a+10)/10
NEXT
loop: GOTO loop</syntaxhighlight>
 
==={{header|Applesoft BASIC}}===
<langsyntaxhighlight ApplesoftBasiclang="applesoftbasic">1 DATA1,12,6,3,14,13,15
2 HOME : GR : FOR I = 1 TO 7
3 READ C(I) : NEXT
4 FOR I = 0 TO 39
5 COLOR= C(I / 5)
6 VLIN 0,39 AT I : NEXT</langsyntaxhighlight>
 
==={{header|BBC BASIC}}===
{{works with|BBC BASIC for Windows}}
<langsyntaxhighlight lang="bbcbasic"> SW_MAXIMIZE = 3
SYS "ShowWindow", @hwnd%, SW_MAXIMIZE
VDU 26
Line 176 ⟶ 353:
RECTANGLE FILL C%*W%, 0, W%, H%
NEXT
</syntaxhighlight>
</lang>
 
==={{header|Chipmunk Basic}}===
The sequence of colors.
<syntaxhighlight lang="basic">
100 rem Colour bars/Display
110 graphics 0 : graphics cls
120 for i = 0 to 7
130 read r,g,b
140 graphics color r,g,b
150 for j = 0 to 79
160 x = i*80+j
170 graphics moveto x,0
180 graphics lineto x,399
190 next j
200 next i
500 data 0,0,0 : rem black
510 data 100,0,0 : rem red
520 data 0,100,0 : rem green
530 data 0,0,100 : rem blue
540 data 100,0,100 : rem magenta
550 data 0,100,100 : rem cyan
560 data 100,100,0 : rem yellow
570 data 100,100,100 : rem white
</syntaxhighlight>
 
==={{header|Commodore BASIC}}===
This task achieved only on Commodore computers with color capabilities. The example below tested as-is in VICE on the following machines:
* Commodore 64
* Commodore 128
* Commodore Plus 4
* Commodore CBM-II (with VIC-II video)
* Commodore SX-64
 
It will also work well on the VIC-20 if you either omit line 310 or comment (REM) it out as the VIC-20 has only an eight-color palette.
 
This cross-compatibility is achieved by using the PETSCII control codes (CHR$(x)) for changing color, which are generally the same across all platforms, although the system palettes themselves may differ. This is combined with printing a "reverse video" space (solid block) character in the color selected.
 
<syntaxhighlight lang="gwbasic">5 rem color bars program
10 print chr$(147);:dim co(17):c=1
20 read co(c):if co(c)>0 then c=c+1:goto 20
25 sp$=" ":h=22:c=c-1:rem sp$=5 spaces
30 for r=1 to c step int(c/2)
40 for h=1 to 10
50 for b=r to (r+int(c/2))-1
60 print chr$(18);chr$(co(b));sp$;
70 next b
75 rem check if palette is only 8 (vic-20).
76 rem if so, we need to fill the last two spaces.
80 if c<=8 then print " ";
90 next h:next r
100 get k$:if k$="" then 100
110 end
280 rem because the control codes for color are non-sequential,
285 rem we put them into a sequential array for use
300 data 144,5,28,159,156,30,31,158
305 rem omit or rem the next line for vic-20
310 data 129,149,150,151,152,153,154,155
320 data 0:rem data terminato</syntaxhighlight>
 
==={{header|FreeBASIC}}===
<syntaxhighlight lang="freebasic">' FB 1.05.0 Win64
 
' Draw the color bars on an 80 x 25 console using the system palette of 16 colors
' i.e. 5 columns per color
Width 80, 25
Shell "cls"
Locate ,, 0 '' turn cursor off
For clr As UInteger = 0 To 15
Color 0, clr
For row As Integer = 1 to 25
Locate row, clr * 5 + 1
Print Space(5);
Next row
Next clr
 
Sleep
' restore default settings
Locate ,, 1 '' turn cursor on
Color 7, 0 '' white text on black background</syntaxhighlight>
 
==={{header|FutureBasic}}===
[[File:ColorBarsDisplayFB300.png|right]]
<syntaxhighlight lang="futurebasic">
void local fn DoIt
long index, x = 0
CFArrayRef colors = @[fn ColorBlack,fn ColorRed,
fn ColorGreen,fn ColorBlue,fn ColorMagenta,
fn ColorCyan,fn ColorYellow,fn ColorWhite]
window 1, @"Color bars/Display", (0,0,480,270), NSWindowStyleMaskTitled
pen -1
for index = 0 to len(colors) - 1
rect fill (x,0,60,270), colors[index]
x += 60
next
end fn
 
fn DoIt
 
HandleEvents
</syntaxhighlight>
 
==={{header|Gambas}}===
<syntaxhighlight lang="gambas">Public Sub Form_Open()
Dim iColour As Integer[] = [Color.Black, Color.red, Color.Green, Color.Magenta, Color.Cyan, Color.Yellow, Color.white]
Dim hPanel As Panel
Dim siCount As Short
 
With Me
.Arrangement = Arrange.Horizontal
.Height = 300
.Width = 400
End With
 
For siCount = 0 To 6
hpanel = New Panel(Me)
hpanel.Expand = True
hpanel.H = 500
HPanel.Background = iColour[siCount]
Next
 
End</syntaxhighlight>
 
==={{header|IS-BASIC}}===
<syntaxhighlight lang="is-basic">100 GRAPHICS LORES 16
110 SET PALETTE BLACK,RED,GREEN,BLUE,MAGENTA,CYAN,YELLOW,WHITE
120 FOR I=1 TO 7
130 CALL BAR(I)
140 NEXT
150 DEF BAR(C)
160 SET INK C
170 PLOT C*160,0;C*160,719;C*160+152,719;C*160+152,0;C*160,0
180 PLOT C*160+16,16,PAINT
190 END DEF</syntaxhighlight>
 
==={{header|Liberty BASIC}}===
<langsyntaxhighlight lang="lb">nomainwin
colors$="black red green blue pink cyan yellow white"
WindowWidth=DisplayWidth:WindowHeight=DisplayHeight
Line 199 ⟶ 511:
wait
[quit] close #main:end
</langsyntaxhighlight>
 
==={{header|Locomotive Basic}}===
 
[[File:CPC color bars.png|thumb|right]]
 
Show the default MODE 0 palette (includes two blinking colors at the end):
<syntaxhighlight lang="locobasic">10 MODE 0:BORDER 23
 
<lang locobasic>10 MODE 0:BORDER 23
20 FOR x=0 TO 15
30 ORIGIN x*40,0
40 FOR z=0 TO 39 STEP 4:MOVE z,0:DRAW z,400,x:NEXT z
40 GRAPHICS PEN x
50 NEXT x
50 FOR z=0 TO 39 STEP 4:MOVE z,0:DRAW z,400:NEXT
60 CALL &bb06 ' wait for key press</syntaxhighlight>
60 NEXT
70 CALL &bb06 ' wait for key press</lang>
 
==={{header|PureBasic}}===
Press Enter or Escape to exit the program.
<langsyntaxhighlight PureBasiclang="purebasic">Dim color(7)
color(0) = RGB($00, $00, $00) ;black
color(1) = RGB($FF, $00, $00) ;red
Line 247 ⟶ 555:
Until KeyboardPushed(#PB_Key_Escape) Or KeyboardPushed(#PB_Key_Return)
CloseScreen()
EndIf</langsyntaxhighlight>
====Alternate method using console====
<langsyntaxhighlight PureBasiclang="purebasic">DataSection
;Black, Red, Green, Blue, Magenta, Cyan, Yellow, White
Data.i 0, 12, 10, 9, 13, 11, 14, 15
Line 272 ⟶ 580:
ConsoleTitle("Press ENTER to exit"): Input()
CloseConsole()
EndIf</langsyntaxhighlight>
 
==={{header|Run BASIC}}===
<langsyntaxhighlight lang="runbasic">colors$ = "black,red,green,blue,magenta,cyan,yellow,white"
html "<TABLE BORDER=1 CELLPADDING=0 CELLSPACING=4><tr height=70>"
for i = 1 to 8
html "<td width=20 bgcolor='";word$(colors$,i,",");"'</td>"
next i
html "</tr></table>"</langsyntaxhighlight>
<pre>Output</pre>
 
[[File:ColorBarRunBasic.png]]
 
==={{header|SmileBASIC}}===
<syntaxhighlight lang="smilebasic">FOR I=0 TO 7
READ R,G,B
GFILL I*50,0,I*50+49,239,RGB(R,G,B)
NEXT
REPEAT UNTIL BUTTON(0) AND #B
 
DATA 0,0,0
DATA 255,0,0
DATA 0,255,0
DATA 0,0,255
DATA 255,0,255
DATA 0,255,255
DATA 255,255,0
DATA 255,255,255</syntaxhighlight>
 
==={{header|TI Basic}}===
<syntaxhighlight lang="basic">100 REM SMPTE Format Color Bars
110 REM with 400 Hz reference tone
120 CALL CLEAR
130 CALL SCREEN(2)
140 CALL COLOR(8,15,1)
150 CALL COLOR(9,11,1)
160 CALL COLOR(10,8,1)
170 CALL COLOR(11,13,1)
180 CALL COLOR(12,14,1)
190 CALL COLOR(13,10,1)
200 CALL COLOR(14,5,1)
210 CALL COLOR(15,2,1)
220 CALL COLOR(16,16,1)
230 GOSUB 510
240 REM color bars
250 CALL VCHAR(1,3,88,96)
260 CALL VCHAR(1,7,96,96)
270 CALL VCHAR(1,11,104,96)
280 CALL VCHAR(1,15,112,96)
290 CALL VCHAR(1,19,120,96)
300 CALL VCHAR(1,23,128,96)
310 CALL VCHAR(1,27,136,96)
320 REM BLACK BAR
330 CALL HCHAR(19,1,144,224)
340 REM WHITE BOX
350 FOR I=19 TO 24
360 CALL HCHAR(I,8,152,6)
370 NEXT I
410 REM SMPTE Complementary boxes
420 CALL HCHAR(18,3,136,4)
430 CALL HCHAR(18,7,144,4)
440 CALL HCHAR(18,11,120,4)
450 CALL HCHAR(18,15,144,4)
460 CALL HCHAR(18,19,104,4)
470 CALL HCHAR(18,23,144,4)
480 CALL HCHAR(18,27,88,4)
490 CALL SOUND(3000,400,12)
500 GOTO 490
510 SQUARE$="FFFFFFFFFFFFFFFF"
520 FOR I = 88 TO 152 STEP 8
530 CALL CHAR(I,SQUARE$)
540 NEXT I
590 RETURN
</syntaxhighlight>
 
==={{header|ZX Spectrum Basic}}===
<langsyntaxhighlight lang="zxbasic">10 REM The ZX Spectrum display is 32 columns wide, so we have 8 columns of 4 spaces
20 FOR r=0 TO 20: REM There are 21 rows
30 FOR c=0 TO 7: REM We use the native colour sequence here
Line 293 ⟶ 663:
60 NEXT c
70 REM at this point the cursor has wrapped, so we don't need a newline
80 NEXT r</langsyntaxhighlight>
 
=={{header|Befunge}}==
Assuming a terminal with support for ANSI escape sequences, this fills the screen with the colour sequence: black, red, green, blue, magenta, cyan, yellow and white. It then waits for the user to press ''Enter'' before terminating.
<langsyntaxhighlight lang="befunge"><v%"P": <<*"(2"
v_:"P"/"["39*,, :55+/68v
v,,,";1H" ,+*86%+55 ,+*<
73654210v,,\,,,*93"[4m"<
>$:55+%#v_:1-"P"%55+/3g^
39*,,,~@>48*,1-:#v_$"m["</langsyntaxhighlight>
 
=={{header|C}}==
Line 309 ⟶ 679:
===Text Mode===
The required functions and structures are in conio.h
<syntaxhighlight lang="c">
<lang C>
/*Abhishek Ghosh, 6th November 2013, Rotterdam*/
 
#include<conio.h>
 
Line 344 ⟶ 712:
return 0;
}
</syntaxhighlight>
</lang>
 
===Graphics Mode===
The required functions and structures are in graphics.h, conio.h is included for getch().
<syntaxhighlight lang="c">
<lang C>
/*Abhishek Ghosh, 6th November 2013, Rotterdam*/
#include<graphics.h>
#include<conio.h>
Line 372 ⟶ 739:
return 0;
}
</syntaxhighlight>
</lang>
 
=={{header|C++}}==
Line 379 ⟶ 746:
file <code>colorbars.h</code>:
 
<langsyntaxhighlight lang="cpp">#ifndef MYWIDGET_H
#define MYWIDGET_H
#include <QWidget>
Line 396 ⟶ 763:
const int colornumber ;
} ;
#endif</langsyntaxhighlight>
 
file <code>colorbars.cpp</code>:
 
<langsyntaxhighlight lang="cpp">#include <QtGui>
#include "colorbars.h"
 
Line 426 ⟶ 793:
xstart += rectwidth + 1 ;
}
}</langsyntaxhighlight>
 
file <code>main.cpp</code>:
 
<langsyntaxhighlight lang="cpp">#include <QApplication>
#include "colorbars.h"
 
Line 439 ⟶ 806:
window.show( ) ;
return app.exec( ) ;
}</langsyntaxhighlight>
 
=={{header|COBOL}}==
{{works with|OpenCOBOL}}
<langsyntaxhighlight lang="cobol"> IDENTIFICATION DIVISION.
PROGRAM-ID. terminal-colour-bars.
 
Line 494 ⟶ 861:
 
GOBACK
.</langsyntaxhighlight>
 
=={{header|Common Lisp}}==
==={{header|ncurses}}===
To interface the ncurses C library from Lisp, the ''croatoan'' library is used.
<syntaxhighlight lang="lisp">(defun color-bars ()
(with-screen (scr :input-blocking t :input-echoing nil :cursor-visible nil)
(dotimes (i (height scr))
(move scr i 0)
(dolist (color '(:red :green :yellow :blue :magenta :cyan :white :black))
(add-char scr #\space :bgcolor color :n (floor (/ (width scr) 8)))))
(refresh scr)
;; wait for keypress
(get-char scr)))</syntaxhighlight>
=={{header|Delphi}}==
{{libheader| Winapi.Windows}}
{{libheader| System.SysUtils}}
{{libheader| System.Classes}}
{{libheader| Vcl.Graphics}}
{{libheader| Vcl.Forms}}
<syntaxhighlight lang="delphi">
unit Colour_barsDisplay;
 
interface
 
uses
Winapi.Windows, System.SysUtils, System.Classes, Vcl.Graphics, Vcl.Forms;
 
type
TfmColourBar = class(TForm)
procedure FormPaint(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
 
var
fmColourBar: TfmColourBar;
Colors: array of TColor = [clblack, clred, clgreen, clblue, clFuchsia, clAqua,
clyellow, clwhite];
 
implementation
 
{$R *.dfm}
 
procedure TfmColourBar.FormPaint(Sender: TObject);
var
w, h, i: Integer;
r: TRect;
begin
w := ClientWidth div length(Colors);
h := ClientHeight;
r := Rect(0, 0, w, h);
 
with Canvas do
for i := 0 to High(Colors) do
begin
Brush.Color := Colors[i];
FillRect(r);
r.Offset(w, 0);
end;
end;
 
procedure TfmColourBar.FormResize(Sender: TObject);
begin
Invalidate;
end;
end.</syntaxhighlight>
Form resource:
<syntaxhighlight lang="delphi">
object fmColourBar: TfmColourBar
Caption = 'fmColourBar'
OldCreateOrder = False
OnPaint = FormPaint
OnResize = FormResize
end
</syntaxhighlight>
 
=={{header|EasyLang}}==
 
[https://easylang.dev/show/#cod=TYyxCoAwDET3fsWNKqjpmMEvKZ1KhUK1UER/34uTQ7i7l0tSqyFiQ4CIQDmiHFF6pacyKzW6hz3PxoqaTyS7dHvrKMZxtR8GzHBnsXz5aHfGgwlDwQw/Qoz2nC5SvnWLewE= Run it]
 
<syntaxhighlight lang="text">
col[] = [ 000 900 090 009 909 099 990 999 ]
w = 100 / len col[]
for i = 1 to len col[]
color col[i]
move w * (i - 1) 0
rect w 100
.
</syntaxhighlight>
 
=={{header|Factor}}==
<langsyntaxhighlight lang="factor">USING: accessors colors.constants kernel math sequences ui
ui.gadgets ui.gadgets.tracks ui.pens.solid ;
IN: rosetta-code.colour-bars-display
Line 519 ⟶ 978:
"bars" open-window
] with-ui ;
MAIN: colors</langsyntaxhighlight>
 
=={{header|FreeBASICForth}}==
This program extends ANS Forth to control the TMS9918 Video display processor in the TI-99 computer.
<lang freebasic>' FB 1.05.0 Win64
<br> The color bars are shown in Society of Motion Picture and Television Engineers (SMPTE) order.
 
<syntaxhighlight lang="forth">
' Draw the color bars on an 80 x 25 console using the system palette of 16 colors
\ Color Bars for TI-99 CAMEL99 Forth
' i.e. 5 columns per color
Width 80, 25
Shell "cls"
Locate ,, 0 '' turn cursor off
For clr As UInteger = 0 To 15
Color 0, clr
For row As Integer = 1 to 25
Locate row, clr * 5 + 1
Print Space(5);
Next row
Next clr
 
NEEDS HCHAR FROM DSK1.GRAFIX \ TMS9918 control lexicon
Sleep
NEEDS CHARSET FROM DSK1.CHARSET \ restores default character data
' restore default settings
NEEDS ENUM FROM DSK1.ENUM \ add simple enumerator to Forth
Locate ,, 1 '' turn cursor on
Color 7, 0 '' white text on black background</lang>
 
\ Name TI-99 colors
=={{header|Gambas}}==
1 ENUM CLR ENUM BLK ENUM MGRN ENUM LGRN
<lang gambas>Public Sub Form_Open()
ENUM BLU ENUM LBLU ENUM RED ENUM CYAN
Dim iColour As Integer[] = [Color.Black, Color.red, Color.Green, Color.Magenta, Color.Cyan, Color.Yellow, Color.white]
ENUM MRED ENUM LRED ENUM YEL ENUM LYEL
Dim hPanel As Panel
ENUM GRN ENUM MAG ENUM GRY ENUM WHT
Dim siCount As Short
DROP
 
\ square character data
With Me
HEX
.Arrangement = Arrange.Horizontal
CREATE SQUARE FFFF , FFFF , FFFF , FFFF ,
.Height = 300
.Width = 400
End With
 
DECIMAL
For siCount = 0 To 6
: COLOR-BARS ( -- )
hpanel = New Panel(Me)
24 0 DO
hpanel.Expand = True
\ col row char wid
hpanel.H = 500
\ --- --- ---- ---
HPanel.Background = iColour[siCount]
2 I 88 4 HCHAR
Next
6 I 96 4 HCHAR
10 I 104 4 HCHAR
14 I 112 4 HCHAR
18 I 120 4 HCHAR
22 I 128 4 HCHAR
26 I 136 4 HCHAR
LOOP ;
 
DECIMAL
: DEFCHARS ( pattern first last -- )
1+ SWAP ?DO DUP I CHARDEF 8 +LOOP DROP ;
 
: SET-COLORS ( -- )
\ charset fg bg
\ ------- -- --
88 SET# GRY CLR COLOR
96 SET# YEL CLR COLOR
104 SET# CYAN CLR COLOR
112 SET# GRN CLR COLOR
120 SET# MAG CLR COLOR
128 SET# RED CLR COLOR
136 SET# BLU CLR COLOR
144 SET# BLK CLR COLOR ;
 
\ restore characters and colors
: DEFAULTS
8 SCREEN
4 19 BLK CLR COLORS
CLEAR
CHARSET ;
 
: BARS
CLEAR BLK SCREEN
SET-COLORS
SQUARE 88 152 DEFCHARS
COLOR-BARS
BEGIN ?TERMINAL UNTIL
DEFAULTS
;
 
CR .( Done. Type BARS to run)
</syntaxhighlight>
 
=={{header|Go}}==
{{libheader|Go Graphics}}
<syntaxhighlight lang="go">package main
 
import "github.com/fogleman/gg"
 
var colors = [8]string{
"000000", // black
"FF0000", // red
"00FF00", // green
"0000FF", // blue
"FF00FF", // magenta
"00FFFF", // cyan
"FFFF00", // yellow
"FFFFFF", // white
}
 
func drawBars(dc *gg.Context) {
w := float64(dc.Width() / len(colors))
h := float64(dc.Height())
for i := range colors {
dc.SetHexColor(colors[i])
dc.DrawRectangle(w*float64(i), 0, w, h)
dc.Fill()
}
}
 
func main() {
dc := gg.NewContext(400, 400)
drawBars(dc)
dc.SavePNG("color_bars.png")
}</syntaxhighlight>
 
{{out}}
<pre>
Image similar to R entry.
</pre>
 
End</lang>
=={{header|Haskell}}==
 
Terminal-based version.
 
<langsyntaxhighlight lang="haskell">#!/usr/bin/env stack
-- stack --resolver lts-7.0 --install-ghc runghc --package vty -- -threaded
 
Line 586 ⟶ 1,113:
where attrs = map color2attr colors
nBars = length colors
colors = [black, brightRed, brightGreen, brightBlue, brightMagenta, brightCyan, brightYellow, brightWhite]
color2attr c = Attr Default Default (SetTo c)
 
main :: IO ()
main = do
cfg <- standardIOConfig
Line 603 ⟶ 1,131:
_ -> return ()
showBars bounds
shutdown vty</langsyntaxhighlight>
 
[[File:Haskell_Colourbars_A_0.png|700px]]
 
Graphical version using SFML.
 
<langsyntaxhighlight lang="haskell">-- Before you can install the SFML Haskell library, you need to install
-- the CSFML C library. (For example, "brew install csfml" on OS X.)
 
Line 657 ⟶ 1,187:
withResource (createRenderWindow vMode "color bars" wStyle Nothing) $
\wnd -> withResources (mapM (makeBar $ barSize vMode) $ zip colors [0..]) $
\bars -> loop wnd bars</langsyntaxhighlight>
 
=={{header|Icon}} and {{header|Unicon}}==
The procedure below is generalized to take a description of a ''test card'' and display it.
[[File:Colourbars_Simple_Unicon.png|thumb|right]]
<langsyntaxhighlight Iconlang="icon">link graphics,printf
procedure main() # generalized colour bars
Line 698 ⟶ 1,228:
bar(width) ] ),
band(height) ])
end</langsyntaxhighlight>
 
The following example is a wee tiny bit more interesting.
[[File:Colourbars_SMPTE_Unicon.png|thumb|right]]
<langsyntaxhighlight Iconlang="icon">procedure SMPTE_TestCard() #: return structure with 480i(ish) testcard
return testcard(,"SMPTE TV Test Card",width := 672,height := 504,
[ band( 1, [ bar( 1, "#c0c0c0"),
Line 730 ⟶ 1,260:
bar(width) ] ),
band(height) ])
end</langsyntaxhighlight>
 
{{libheader|Icon Programming Library}}
Line 738 ⟶ 1,268:
=={{header|J}}==
 
<langsyntaxhighlight lang="j"> load 'viewmat'
size=: 2{.".wd'qm' NB. J6
size=: getscreenwh_jgtk_ '' NB. J7
'rgb'viewmat (|.size){. (>.&.(%&160)|.size)$ 20# 256#.255*#:i.8</langsyntaxhighlight>
 
Note: You need to pick an implementation of <code>size</code> based on the version of J you are using.
 
=={{header|Java}}==
<langsyntaxhighlight lang="java">
import java.awt.Color;
import java.awt.Graphics;
Line 775 ⟶ 1,305:
}
}
</syntaxhighlight>
</lang>
 
=={{header|Julia}}==
{{works with|Julia|0.6}}
 
<langsyntaxhighlight lang="julia">using Images
 
colors = [colorant"black", colorant"red", colorant"green", colorant"darkblue",
Line 790 ⟶ 1,320:
img[:, j:j+wcol] = col
end
save("data/colourbars.jpg", img)</langsyntaxhighlight>
 
=={{header|Kotlin}}==
{{trans|Java}}
<langsyntaxhighlight lang="scala">import java.awt.Color
import java.awt.Graphics
import javax.swing.JFrame
Line 818 ⟶ 1,348:
fun main(args: Array<String>) {
ColorFrame(400, 400)
}</langsyntaxhighlight>
Editing Babbage problem
 
=={{header|Lua}}==
{{libheader|nw}}
{{libheader|cairo}}
<syntaxhighlight lang="lua">local nw = require("nw")
local app = nw:app()
local cw, ch = 320, 240
local win = app:window(cw, ch, "Color Bars", false)
local colors = {{0,0,0}, {1,0,0}, {0,1,0}, {0,0,1}, {1,0,1}, {0,1,1}, {1,1,0}, {1,1,1}}
local unpack = unpack or table.unpack -- polyfill 5.2 vs 5.3
function win:repaint()
local cr = win:bitmap():cairo()
for i = 1, #colors do
cr:rectangle((i-1)*cw/#colors, 0, cw/#colors, ch)
cr:rgb(unpack(colors[i]))
cr:fill()
end
end
win:show()
app:run()</syntaxhighlight>
 
=={{header|M2000 Interpreter}}==
Calling a module can be done by using name or call name. The later used for recursive call. Here we use it for beautify the code.
<syntaxhighlight lang="m2000 interpreter">
<lang M2000 Interpreter>
Module Checkit {
Module Bars {
Line 847 ⟶ 1,397:
}
Checkit
</syntaxhighlight>
</lang>
 
 
=={{header|Maple}}==
<syntaxhighlight lang="maple">
<lang Maple>
with(plottools):
plots:-display([rectangle([0, 0], [.3, 2.1], color = black), rectangle([.3, 0], [.6, 2.1], color = red), rectangle([.6, 0], [.9, 2.1], color = green), rectangle([.9, 0], [1.2, 2.1], color = magenta), rectangle([1.2, 0], [1.5, 2.1], color = cyan), rectangle([1.5, 0], [1.8, 2.1], color = white), rectangle([1.8, 0], [2.1, 2.1], color = yellow)])
</syntaxhighlight>
</lang>
 
=={{header|Mathematica}} / {{header|Wolfram Language}}==
 
<langsyntaxhighlight lang="mathematica">ArrayPlot[
ConstantArray[{Black, Red, Green, Blue, Magenta, Cyan, Yellow,
White}, 5]]</langsyntaxhighlight>
 
[[File:ColourBarsMathematica.png]]
 
=={{header|Nim}}==
{{libheader|gintro}}
<syntaxhighlight lang="nim">import gintro/[glib, gobject, gtk, gio, cairo]
 
const
Width = 400
Height = 300
 
#---------------------------------------------------------------------------------------------------
 
proc draw(area: DrawingArea; context: Context) =
## Draw the color bars.
 
const Colors = [[0.0, 0.0, 0.0], [255.0, 0.0, 0.0],
[0.0, 255.0, 0.0], [0.0, 0.0, 255.0],
[255.0, 0.0, 255.0], [0.0, 255.0, 255.0],
[255.0, 255.0, 0.0], [255.0, 255.0, 255.0]]
 
const
RectWidth = float(Width div Colors.len)
RectHeight = float(Height)
 
var x = 0.0
for color in Colors:
context.rectangle(x, 0, RectWidth, RectHeight)
context.setSource(color)
context.fill()
x += RectWidth
 
#---------------------------------------------------------------------------------------------------
 
proc onDraw(area: DrawingArea; context: Context; data: pointer): bool =
## Callback to draw/redraw the drawing area contents.
 
area.draw(context)
result = true
 
#---------------------------------------------------------------------------------------------------
 
proc activate(app: Application) =
## Activate the application.
 
let window = app.newApplicationWindow()
window.setSizeRequest(Width, Height)
window.setTitle("Color bars")
 
# Create the drawing area.
let area = newDrawingArea()
window.add(area)
 
# Connect the "draw" event to the callback to draw the spiral.
discard area.connect("draw", ondraw, pointer(nil))
 
window.showAll()
 
#———————————————————————————————————————————————————————————————————————————————————————————————————
 
let app = newApplication(Application, "Rosetta.ColorBars")
discard app.connect("activate", activate)
discard app.run()</syntaxhighlight>
 
=={{header|OCaml}}==
 
<langsyntaxhighlight lang="ocaml">open Graphics
 
let round x =
Line 885 ⟶ 1,495:
) colors;
ignore (read_key ());
;;</langsyntaxhighlight>
 
execute with:
Line 891 ⟶ 1,501:
 
=={{header|Perl}}==
<syntaxhighlight lang="perl">use strict;
<lang Perl>#!/usr/bin/perl -w
use strict warnings;
use GD ;
 
my %colors = ( white => [ 255 , 255 , 255 ] , red => [255 , 0 , 0 ] ,
white => [255,255,255], red green => [255, 0 0, 255 0], green => [ 0,255, ] 0], blue => [ 0 0, 0 , 255 ] ,
magenta => [255, 0,255], magentayellow => [ 255 ,255, 0 0], 255cyan ] => [ 0,255,255], yellowblack => [ 255 0, 255 0, 0 ] ,);
 
cyan => [ 0 , 255 , 255 ] , black => [ 0 , 0 , 0 ] ) ;
my $barwidthstart = 160 / 8= 0;
my $imagebarwidth = new GD::Image( 160 , 100 )/ 8;
my $startimage = 0GD::Image->new( 160 , 100 );
 
foreach my $rgb ( values %colors ) {
for my $rgb ( values %colors ) {
my $paintcolor = $image->colorAllocate( @$rgb ) ;
$image->filledRectangle( $start * $barwidth , 0 , $start * $barwidth +
$barwidth - 1 , 99 , $paintcolorimage->colorAllocate( @$rgb ) );
$start++ ;
}
open ( DISPLAY , ">" , "testprogrambars.png" ) ||or die ;
binmode DISPLAY ;
print DISPLAY $image->png ;
close DISPLAY ;#to be watched with <image viewer> testprogram.png</langsyntaxhighlight>
=={{header|Perl 6}}==
{{works with|Rakudo|2015.12}}
<lang perl6>my $HOR = 1280;
my $VERT = 720;
 
my @colors = map -> $r, $g, $b { Buf.new: |(($r, $g, $b) xx $HOR div 8) },
0, 0, 0,
255, 0, 0,
0,255, 0,
0, 0,255,
255, 0,255,
0,255,255,
255,255, 0,
255,255,255;
 
my $PPM = open "colorbars.ppm", :w or die "Can't create colorbars.ppm: $!";
 
$PPM.print: qq:to/EOH/;
P6
# colorbars.ppm
$HOR $VERT
255
EOH
 
for ^$VERT -> $v {
for ^@colors -> $h {
$PPM.write: @colors[$h];
}
}
 
$PPM.close;</lang>
 
=={{header|Phix}}==
{{libheader|Phix/pGUI}}
<!--<syntaxhighlight lang="phix">(phixonline)-->
<lang Phix>--
<span style="color: #000080;font-style:italic;">-- demo\rosetta\Colour_bars.exw</span>
<span style="color: #008080;">with</span> <span style="color: #008080;">javascript_semantics</span>
--
<span style="color: #008080;">include</span> <span style="color: #000000;">pGUI</span><span style="color: #0000FF;">.</span><span style="color: #000000;">e</span>
include pGUI.e
 
<span style="color: #008080;">constant</span> <span style="color: #000000;">colours</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{</span><span style="color: #004600;">CD_BLACK</span><span style="color: #0000FF;">,</span> <span style="color: #004600;">CD_RED</span><span style="color: #0000FF;">,</span> <span style="color: #004600;">CD_GREEN</span><span style="color: #0000FF;">,</span> <span style="color: #004600;">CD_BLUE</span><span style="color: #0000FF;">,</span> <span style="color: #004600;">CD_MAGENTA</span><span style="color: #0000FF;">,</span> <span style="color: #004600;">CD_CYAN</span><span style="color: #0000FF;">,</span> <span style="color: #004600;">CD_YELLOW</span><span style="color: #0000FF;">,</span> <span style="color: #004600;">CD_WHITE</span><span style="color: #0000FF;">}</span>
constant colours = {CD_BLACK, CD_RED, CD_GREEN, CD_MAGENTA, CD_CYAN, CD_YELLOW, CD_WHITE}
 
<span style="color: #004080;">Ihandle</span> <span style="color: #000000;">dlg</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">canvas</span>
Ihandle dlg, canvas
<span style="color: #004080;">cdCanvas</span> <span style="color: #000000;">cdcanvas</span>
cdCanvas cddbuffer, cdcanvas
 
<span style="color: #008080;">function</span> <span style="color: #000000;">redraw_cb</span><span style="color: #0000FF;">(</span><span style="color: #004080;">Ihandle</span> <span style="color: #000080;font-style:italic;">/*ih*/</span><span style="color: #0000FF;">,</span> <span style="color: #004080;">integer</span> <span style="color: #000080;font-style:italic;">/*posx*/</span><span style="color: #0000FF;">,</span> <span style="color: #000080;font-style:italic;">/*posy*/</span><span style="color: #0000FF;">)</span>
function redraw_cb(Ihandle /*ih*/, integer /*posx*/, integer /*posy*/)
<span style="color: #004080;">integer</span> <span style="color: #0000FF;">{</span><span style="color: #000000;">width</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">height</span><span style="color: #0000FF;">}</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupGetIntInt</span><span style="color: #0000FF;">(</span><span style="color: #000000;">canvas</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"DRAWSIZE"</span><span style="color: #0000FF;">),</span>
cdCanvasActivate(cddbuffer)
<span style="color: #000000;">x</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">lc</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">colours</span><span style="color: #0000FF;">)</span>
integer {width, height} = IupGetIntInt(canvas, "DRAWSIZE")
<span style="color: #7060A8;">cdCanvasActivate</span><span style="color: #0000FF;">(</span><span style="color: #000000;">cdcanvas</span><span style="color: #0000FF;">)</span>
integer x = 0, lc = length(colours)
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">lc</span> <span style="color: #008080;">do</span>
for i=1 to lc do
<span style="color: #004080;">integer</span> <span style="color: #000000;">w</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">floor</span><span style="color: #0000FF;">((</span><span style="color: #000000;">width</span><span style="color: #0000FF;">-</span><span style="color: #000000;">x</span><span style="color: #0000FF;">)/(</span><span style="color: #000000;">lc</span><span style="color: #0000FF;">-</span><span style="color: #000000;">i</span><span style="color: #0000FF;">+</span><span style="color: #000000;">1</span><span style="color: #0000FF;">))</span>
integer w = floor((width-x)/(lc-i+1))
<span style="color: #7060A8;">cdCanvasSetForeground</span><span style="color: #0000FF;">(</span><span style="color: #000000;">cdcanvas</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">colours</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">])</span>
cdCanvasSetForeground(cddbuffer, colours[i])
<span style="color: #7060A8;">cdCanvasBox</span><span style="color: #0000FF;">(</span><span style="color: #000000;">cdcanvas</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">x</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">x</span><span style="color: #0000FF;">+</span><span style="color: #000000;">w</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">0</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">height</span><span style="color: #0000FF;">)</span>
cdCanvasBox(cddbuffer, x, x+w, 0, height)
<span style="color: #000000;">x</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">w</span>
x += w
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
end for
<span style="color: #7060A8;">cdCanvasFlush</span><span style="color: #0000FF;">(</span><span style="color: #000000;">cdcanvas</span><span style="color: #0000FF;">)</span>
cdCanvasFlush(cddbuffer)
<span style="color: #008080;">return</span> <span style="color: #004600;">IUP_DEFAULT</span>
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
end function
 
<span style="color: #7060A8;">IupOpen</span><span style="color: #0000FF;">()</span>
function map_cb(Ihandle ih)
<span style="color: #000000;">canvas</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupCanvas</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">Icallback</span><span style="color: #0000FF;">(</span><span style="color: #008000;">"redraw_cb"</span><span style="color: #0000FF;">),</span><span style="color: #008000;">"RASTERSIZE=600x400"</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- initial size</span>
cdcanvas = cdCreateCanvas(CD_IUP, ih)
<span style="color: #000000;">dlg</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">IupDialog</span><span style="color: #0000FF;">(</span><span style="color: #000000;">canvas</span><span style="color: #0000FF;">,</span><span style="color: #008000;">`TITLE="Colour bars"`</span><span style="color: #0000FF;">)</span>
cddbuffer = cdCreateCanvas(CD_DBUFFER, cdcanvas)
<span style="color: #7060A8;">IupMap</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">)</span>
return IUP_DEFAULT
<span style="color: #000000;">cdcanvas</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">cdCreateCanvas</span><span style="color: #0000FF;">(</span><span style="color: #004600;">CD_IUP</span><span style="color: #0000FF;">,</span> <span style="color: #000000;">canvas</span><span style="color: #0000FF;">)</span>
end function
<span style="color: #7060A8;">IupShow</span><span style="color: #0000FF;">(</span><span style="color: #000000;">dlg</span><span style="color: #0000FF;">)</span>
 
<span style="color: #7060A8;">IupSetAttribute</span><span style="color: #0000FF;">(</span><span style="color: #000000;">canvas</span><span style="color: #0000FF;">,</span> <span style="color: #008000;">"RASTERSIZE"</span><span style="color: #0000FF;">,</span> <span style="color: #004600;">NULL</span><span style="color: #0000FF;">)</span> <span style="color: #000080;font-style:italic;">-- release the minimum limitation</span>
function unmap_cb(Ihandle /*ih*/)
<span style="color: #008080;">if</span> <span style="color: #7060A8;">platform</span><span style="color: #0000FF;">()!=</span><span style="color: #004600;">JS</span> <span style="color: #008080;">then</span>
cdKillCanvas(cddbuffer)
<span style="color: #7060A8;">IupMainLoop</span><span style="color: #0000FF;">()</span>
cdKillCanvas(cdcanvas)
<span style="color: #7060A8;">IupClose</span><span style="color: #0000FF;">()</span>
return IUP_DEFAULT
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
end function
<!--</syntaxhighlight>-->
 
function esc_close(Ihandle /*ih*/, atom c)
if c=K_ESC then return IUP_CLOSE end if
return IUP_CONTINUE
end function
 
procedure main()
IupOpen()
 
canvas = IupCanvas(NULL)
IupSetAttribute(canvas, "RASTERSIZE", "600x400") -- initial size
 
IupSetCallback(canvas, "MAP_CB", Icallback("map_cb"))
IupSetCallback(canvas, "UNMAP_CB", Icallback("unmap_cb"))
 
dlg = IupDialog(canvas)
IupSetAttribute(dlg, "TITLE", "Colour bars")
IupSetCallback(canvas, "ACTION", Icallback("redraw_cb"))
IupSetCallback(dlg, "K_ANY", Icallback("esc_close"))
 
IupMap(dlg)
IupSetAttribute(canvas, "RASTERSIZE", NULL) -- release the minimum limitation
 
IupShowXY(dlg,IUP_CENTER,IUP_CENTER)
 
IupMainLoop()
 
IupClose()
end procedure
 
main()</lang>
 
=={{header|PHP}}==
{{trans|Perl}}
Will output result directly to the browser. Use it as CGI/BIN script.
<langsyntaxhighlight PHPlang="php"><?php
$colors = array(array( 0, 0, 0), // black
array(255, 0, 0), // red
Line 1,040 ⟶ 1,589:
header('Content-type:image/png');
imagepng($image);
imagedestroy($image);</langsyntaxhighlight>
 
Alternately, with HTML output:
 
<langsyntaxhighlight PHPlang="php"><?php
$colors = array(
"000000", // black
Line 1,060 ⟶ 1,609:
echo '<td style="background-color: #'.$color.'; height: 100px; width: 20px;"></td>';
}
echo '</tr></table>';</langsyntaxhighlight>
 
=={{header|PicoLisp}}==
{{trans|UNIX Shell}}
<langsyntaxhighlight PicoLisplang="picolisp">(call 'clear)
 
(let Width (in '(tput cols) (read))
Line 1,073 ⟶ 1,622:
(prinl) ) )
 
(call 'tput 'sgr0) # reset</langsyntaxhighlight>
 
=={{header|Plain English}}==
<syntaxhighlight lang="plainenglish">To run:
Start up.
Clear the screen.
Divide the screen width by 8 giving a bar width.
Make a bar with 0 and 0 and the bar width and the screen's bottom.
Draw the color bars using the bar.
Refresh the screen.
Wait for the escape key.
Shut down.
 
To divide the screen width by a number giving a width:
Put the screen's right into the width.
Divide the width by the number.
 
A bar is a box.
 
To draw a bar using a color and move it over:
Draw and fill the bar with the color.
Move the bar right the bar's width.
 
To draw the color bars using a bar:
Draw the bar using the black color and move it over.
Draw the bar using the red color and move it over.
Draw the bar using the green color and move it over.
Draw the bar using the blue color and move it over.
Draw the bar using the magenta color and move it over.
Draw the bar using the cyan color and move it over.
Draw the bar using the yellow color and move it over.
Draw and fill the bar using the white color.</syntaxhighlight>
 
=={{header|PowerShell}}==
<syntaxhighlight lang="powershell">
<lang PowerShell>
[string[]]$colors = "Black" , "DarkBlue" , "DarkGreen" , "DarkCyan",
"DarkRed" , "DarkMagenta", "DarkYellow", "Gray",
Line 1,091 ⟶ 1,671:
Write-Host
}
</syntaxhighlight>
</lang>
 
=={{header|Processing}}==
<syntaxhighlight lang="processing">fullScreen();
noStroke();
color[] cs = {
color(0), // black
color(255,0,0), // red
color(0,255,0), // green
color(255,0,255), // magenta
color(0,255,255), // cyan
color(255,255,0), // yellow
color(255) // white
};
for(int i=0; i<7; i++) {
fill(cs[i]);
rect(i*width/8,0,width/8,height);
}</syntaxhighlight>
 
=={{header|Python}}==
<syntaxhighlight lang="python">
<lang Python>
#!/usr/bin/env python
#vertical coloured stripes in window in Python 2.7.1
Line 1,114 ⟶ 1,711:
 
end_graphics()
</syntaxhighlight>
</lang>
 
=={{header|R}}==
Create the color palette, set margins to zero so the image will fill the display, and use image to create the graphic:
[[File:ColorBarR.png|thumb|right]]
<syntaxhighlight lang="r">
<lang R>
pal <- c("black", "red", "green", "blue", "magenta", "cyan", "yellow", "white")
par(mar = rep(0, 4))
image(matrix(1:8), col = pal, axes = FALSE)
</syntaxhighlight>
</lang>
 
=={{header|Racket}}==
 
<syntaxhighlight lang="racket">
<lang Racket>
#lang racket/gui
 
Line 1,152 ⟶ 1,749:
 
(void (new full-frame%))
</syntaxhighlight>
</lang>
 
=={{header|Raku}}==
(formerly Perl 6)
{{works with|Rakudo|2018.10}}
<syntaxhighlight lang="raku" line>my ($x,$y) = 1280, 720;
 
my @colors = map -> $r, $g, $b { Buf.new: |(($r, $g, $b) xx $x div 8) },
0, 0, 0,
255, 0, 0,
0, 255, 0,
0, 0, 255,
255, 0, 255,
0, 255, 255,
255, 255, 0,
255, 255, 255;
 
my $img = open "colorbars.ppm", :w orelse die "Can't create colorbars.ppm: $_";
 
$img.print: qq:to/EOH/;
P6
# colorbars.ppm
$x $y
255
EOH
 
for ^$y {
for ^@colors -> $h {
$img.write: @colors[$h];
}
}
 
$img.close;</syntaxhighlight>
 
=={{header|REXX}}==
Line 1,163 ⟶ 1,792:
Programming note: &nbsp; because of the way the REXX interpreters &nbsp; (being used for this example) &nbsp; ensure screen output fidelity, &nbsp; if ninety characters are displayed on a ninety-byte wide screen, &nbsp; REXX apparently forces an extra blank, &nbsp; causing to what appears to be a blank line after the line displayed. &nbsp; Because of this, &nbsp; the last color bar &nbsp; ('''_.8''') &nbsp; has been shortened by one byte.
 
<langsyntaxhighlight lang="rexx">/*REXX program displays eight colored vertical bars on a full screen. */
parse value scrsize() with sd sw . /*the screen depth and width. */
barWidth=sw%8 /*calculate the bar width. */
Line 1,188 ⟶ 1,817:
say $ /*have REXX display line of bars. */
end /*k*/ /* [↑] Note: SD could be zero. */
/*stick a fork in it, we're done. */</langsyntaxhighlight>
This REXX program makes use of &nbsp; '''scrsize''' &nbsp; REXX program (or BIF) which is used to determine the screen size of the terminal (console).
 
Line 1,196 ⟶ 1,825:
 
=={{header|Ring}}==
<langsyntaxhighlight lang="ring">
load "guilib.ring"
 
Line 1,256 ⟶ 1,885:
}
label1 { setpicture(p1) show() }
</syntaxhighlight>
</lang>
Output :
[https://lh3.googleusercontent.com/-_y0FSmg0NAs/V1xBPvGV2tI/AAAAAAAAAKk/TXYSJnpdZ346aQLd05yE9vLM8V9lEht1QCLcB/s1600/CalmoSoftColourBars.jpg Colour bars]
 
=={{header|Ruby}}==
{{libheader|RubyGems}}
{{libheader|JRubyArt}}
JRubyArt is a port of Processing to the ruby language
<syntaxhighlight lang="ruby">
# Array of web colors black, red, green, blue, magenta, cyan, yellow, white
PALETTE = %w[#000000 #ff0000 #00ff00 #0000ff #ff00ff #00ffff #ffffff].freeze
 
def settings
full_screen
end
 
def setup
PALETTE.each_with_index do |col, idx|
fill color(col)
rect(idx * width / 8, 0, width / 8, height)
end
end
</syntaxhighlight>
 
=={{header|Rust}}==
{{libheader|winit}}
{{libheader|pixels}}
renders into a borderless fullscreen window on the primary display. press ESC to close
<syntaxhighlight lang="rust">use pixels::{Pixels, SurfaceTexture}; // 0.2.0
use winit::event::*; // 0.24.0
use winit::event_loop::{ControlFlow, EventLoop};
use winit::window::{Fullscreen, WindowBuilder};
 
fn main() {
let event_loop = EventLoop::new();
let window = WindowBuilder::new()
.with_title("Colour Bars")
.with_decorations(false)
.with_fullscreen(Some(Fullscreen::Borderless(None)))
.build(&event_loop).unwrap();
let size = window.inner_size();
let texture = SurfaceTexture::new(size.width, size.height, &window);
let mut image_buffer = Pixels::new(8, 1, texture).unwrap();
let frame = image_buffer.get_frame();
frame.copy_from_slice(&[
0x00, 0x00, 0x00, 0xFF, // black
0xFF, 0x00, 0x00, 0xFF, // red
0x00, 0xFF, 0x00, 0xFF, // green
0x00, 0x00, 0xFF, 0xFF, // blue
0xFF, 0x00, 0xFF, 0xFF, // magenta
0x00, 0xFF, 0xFF, 0xFF, // cyan
0xFF, 0xFF, 0x00, 0xFF, // yellow
0xFF, 0xFF, 0xFF, 0xFF, // white
]);
 
image_buffer.render().unwrap();
 
event_loop.run(move |ev, _, flow| {
match ev {
Event::WindowEvent {
event: WindowEvent::KeyboardInput { input, .. }, ..
} => {
if input.virtual_keycode == Some(VirtualKeyCode::Escape) {
*flow = ControlFlow::Exit;
}
}
Event::RedrawRequested(_) | Event::WindowEvent {
event: WindowEvent::Focused(true), ..
} => {
image_buffer.render().unwrap();
}
_ => {}
}
});
}</syntaxhighlight>
 
=={{header|Scala}}==
<langsyntaxhighlight lang="scala">import java.awt.Color
import scala.swing._
 
Line 1,276 ⟶ 1,977:
}
}
}</langsyntaxhighlight>
Open window:
[[File:colorbars_scala.png|thumb|right]]
<langsyntaxhighlight lang="scala">new MainFrame(){
title="Color bars"
visible=true
preferredSize=new Dimension(640, 320)
contents=new ColorBars()
}</langsyntaxhighlight>
 
=={{header|Sidef}}==
{{trans|Perl}}
<langsyntaxhighlight lang="ruby">require('GD');
 
var colors = Hash.new(
Line 1,311 ⟶ 2,012:
};
 
%f'colorbars.png'.open('>:raw').print(image.png);</langsyntaxhighlight>
 
=={{header|Tcl}}==
{{libheader|Tk}}
<langsyntaxhighlight lang="tcl">package require Tcl 8.5
package require Tk 8.5
 
Line 1,326 ⟶ 2,027:
-fill [lindex $colors 0] -outline {}
set colors [list {*}[lrange $colors 1 end] [lindex $colors 0]]
}</langsyntaxhighlight>
 
== {{header|UNIX Shell}} ==
<langsyntaxhighlight lang="sh">#!/bin/sh
clear
WIDTH=`tput cols`
Line 1,352 ⟶ 2,053:
done
 
tput sgr0 # reset</langsyntaxhighlight>
 
=={{header|Uxntal}}==
<syntaxhighlight lang="uxntal">( uxnasm color-bars.tal color-bars.rom && uxnemu color-bars.rom )
 
|00 @System &vector $2 &expansion $2 &wst $1 &rst $1 &metadata $2 &r $2 &g $2 &b $2 &debug $1 &state $1
|20 @Screen &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1
 
|0100
( set 4 color theme
rgb
color0: 000 - black
color1: f00 - red
color2: 0f0 - green
color3: 00f - blue )
#0f00 .System/r DEO2
#00f0 .System/g DEO2
#000f .System/b DEO2
 
( store bars width )
.Screen/width DEI2 #0004 DIV2 ,&quarter STR2
( set starting position )
#0000 .Screen/y DEO2
 
( draw bars )
#00
&loop
#00 OVR [ LIT2 &quarter $2 ] MUL2
.Screen/x DEO2
DUP #80 ORA .Screen/pixel DEO
INC DUP #04 NEQ ?&loop
BRK</syntaxhighlight>
[[File:Color-bars.png|alt=Color bars task implemented in Uxntal.|thumb|Color bars task implemented in Uxntal.|none]]
=={{header|Wren}}==
{{trans|Go}}
{{libheader|DOME}}
<syntaxhighlight lang="wren">import "graphics" for Canvas, Color
import "dome" for Window
 
class Game {
static init() {
Window.title = "Color bars"
__width = 400
__height = 400
Canvas.resize(__width, __height)
Window.resize(__width, __height)
var colors = [
Color.hex("000000"), // black
Color.hex("FF0000"), // red
Color.hex("00FF00"), // green
Color.hex("0000FF"), // blue
Color.hex("FF00FF"), // magenta
Color.hex("00FFFF"), // cyan
Color.hex("FFFF00"), // yellow
Color.hex("FFFFFF") // white
]
drawBars(colors)
}
 
static drawBars(colors) {
var w = __width / colors.count
var h = __height
for (i in 0...colors.count) {
Canvas.rectfill(w*i, 0, w, h, colors[i])
}
}
 
static update() {}
 
static draw(dt) {}
}</syntaxhighlight>
 
=={{header|XPL0}}==
<langsyntaxhighlight XPL0lang="xpl0">include c:\cxpl\codes; \intrinsic code declarations
int W, X0, X1, Y, C;
[SetVid($13); \320x200x8 graphics
Line 1,366 ⟶ 2,137:
C:= ChIn(1); \wait for keystroke
SetVid(3); \restore normal text mode
]</langsyntaxhighlight>
 
{{omit from|AWK}}
{{omit from|Axe}}
{{omit from|GUISS}}
{{omit from|Minimal BASIC}}
 
[[Category:Test card]]
5

edits