nF3hB‖

Tpn7D‖LibreLogo

HvLY3‖LibreLogo is a simple, localized, Logo-like programming environment with turtle vector graphics for teaching of computing (programming and word processing), DTP and graphic design. See http://www.numbertext.org/logo/librelogo.pdf.

DSP7N‖LibreLogo toolbar

SbjVB‖The LibreLogo toolbar (View - Toolbars - Logo) contains turtle moving, program start, stop, home, clear screen, program editor/syntax highlighting/translating icons and an input bar (command line).

UBade‖Turtle moving icons

oXi7C‖They are equivalents of the Logo commands “FORWARD 10”, “BACK 10”, “LEFT 15”, “RIGHT 15”. Clicking on one of the icons will also focus the turtle shape scrolling the page to its position.

PGyCh‖Start Logo program

kD2YZ‖Click on the icon “Start Logo program” to execute the text (or only the selected) text of the Writer document as a LibreLogo program. In an empty document an example program will be inserted and executed.

UF8fq‖Click on the icon “Stop” to stop the program execution.

FEceD‖Home

9UuRt‖Click on the icon “Home” to reset the position and settings of the turtle.

u8zpe‖Clear screen

mGCgn‖Click on the icon “Clear screen” to remove the drawing objects of the document.

sxaa2‖Program editor/Syntax highlighting/Translating

5FEvG‖The “magic wand” icon sets 2-page layout for program editing, expands and converts to uppercase the abbreviated, lowercase Logo commands in the Writer document. Change the language of the document ( - Languages and Locales - General - Western) and click on this icon to translate the Logo program to the selected language.

UXKqW‖Command line

3YCDe‖Hit Enter in the command line to execute its content. To stop the program use the icon “Stop”.

GZJWN‖Hold down the Enter to repeat the command line, for example, on the following command sequence:

tmBA6‖ FORWARD 200 LEFT 89

7gs6L‖To reset the command line triple-click it or press +A to select the previous commands, and type the new commands.

bqE8E‖Graphical user interface of basic turtle settings

eEgBe‖Turtle shape of LibreLogo is a normal fixed size drawing object. You can position and rotate it on standard way, too, using the mouse and the Rotate icon of the Drawing Object Properties toolbar. Modify Line Thickness, Line Color and Area Color settings of the turtle shape to set PENSIZE, PENCOLOR and FILLCOLOR attributes of LibreLogo.

fqYbT‖Program editing

9v92E‖LibreLogo drawings and programs use the same Writer document. The LibreLogo canvas is on the first page of the Writer document. You can insert a page break before the LibreLogo programs and set page zoom using the “magic wand” icon of the Logo toolbar, also change the font size for a comfortable 2-page layout for LibreLogo programming: left (first) page is the canvas, right (second) page is the LibreLogo program editor.

SSNHJ‖LibreLogo programming language

ykQmR‖LibreLogo is an easily localizable, Logo-like programming language, localized in several languages by LibreOffice native language communities. It is back-compatible with the older Logo systems in the case of the simple Logo programs used in education, eg.

xHmDQ‖ TO triangle :size
REPEAT 3 [
FORWARD :size
LEFT 120
]
END

triangle 10 triangle 100 triangle 200

NCcWh‖Differences from the Logo programming language

QgffB‖Other features of LibreLogo

usjNU‖LibreLogo commands

DAWVV‖Basic syntax

SmyWu‖Case sensitivity

s6ExK‖Commands, color constants are case insensitive:

ZzSpc‖ PRINT “Hello, World!”
print “Hello, World, again!”

gPcBk‖Variable names are case sensitive:

CMnh6‖ a = 5
A = 7
PRINT a
PRINT A

CBUNL‖Program lines

HAgWc‖Lines of a LibreLogo program are paragraphs in the Writer document. A program line can contain multiple commands:

FkH7s‖ PRINT “Hello, World!” PRINT “LibreLogo”

5qYG3‖Comments

4JcBh‖Lines or line parts are comments from a semicolon to the end of the line (paragraph):

jyGDw‖ ; some comments
PRINT 5 * 5 ; some comments

yPcmh‖Break program lines to multiple paragraphs

gVQMD‖It’s possible to break a program line for more paragraphs using the character tilde at the end of the line:

EABCT‖ PRINT “This is a very long ” + ~
“warning message”

xq6rn‖Turtle moving

Bc2Xp‖FORWARD (fd)

aYtXE‖ FORWARD 10 ; move forward 10pt (1pt = 1/72 inch)
FORWARD 10pt ; see above
FORWARD 0.5in ; move forward 0.5 inch (1 inch = 2.54 cm)
FORWARD 1" ; see above
FD 1mm
FD 1cm

Th6Me‖BACK (bk)

FiJJR‖ BACK 10 ; move back 10pt

2cCtc‖LEFT (lt)

d7KCJ‖ LEFT 90 ; turn counterclockwise 90 degrees
LEFT 90° ; see above
LT 3h ; see above (clock position)
LT any ; turn to a random position

wj3EW‖RIGHT (rt)

9Xe9B‖ RIGHT 90 ; turn clockwise 90 degrees

CDpQs‖PENUP (pu)

PAb5b‖ PENUP ; turtle will move without drawing

kkoap‖PENDOWN (pd)

9mam4‖ PENDOWN ; turtle will move with drawing

TRbg5‖POSITION (pos)

yCK3c‖ POSITION [0, 0] ; turn and move to the top-left corner
POSITION PAGESIZE ; turn and move to the bottom-right corner
POSITION [PAGESIZE[0], 0] ; turn and move to the top-right corner
POSITION ANY ; turn and move to a random position

mWd4t‖HEADING (seth)

ExfCU‖ HEADING 0 ; turn north
HEADING 12h ; see above
HEADING [0, 0] ; turn to the top-left corner
HEADING ANY ; turn to a random direction

yMGj6‖Other turtle commands

EFDpU‖HIDETURTLE (ht)

umAMK‖ HIDETURTLE ; hide turtle (until the showturtle command)

ykGZp‖SHOWTURTLE (st)

dtMrF‖ SHOWTURTLE ; show turtle

R4ZHY‖HOME

AicpA‖ HOME ; reset initial turtle position

pSuHE‖CLEARSCREEN (cs)

hF9P9‖ CLEARSCREEN ; remove drawing objects of the document

gmCye‖FILL and CLOSE

KD7YE‖ FILL ; close and fill the actual line shape or points
CLOSE ; close the actual line shape or join the actual points

H56YC‖Example: filling a regular triangle:

qVcJU‖ FORWARD 50 LEFT 120 FORWARD 50 FILL

Y6joB‖Example: drawing a regular triangle:

pnXMT‖ FORWARD 50 LEFT 120 FORWARD 50 CLOSE

TwFEE‖Pen settings

53iBR‖PENSIZE (ps)

uHwFA‖ PENSIZE 100 ; line thickness is 100 points
PENSIZE ANY ; equivalent of PENSIZE RANDOM 10

vD65H‖PENCOLOR/PENCOLOUR (pc)

GopnE‖ PENCOLOR “red” ; set red pen color (by color name, see color constants)
PENCOLOR [255, 255, 0] ; set yellow color (RGB list)
PENCOLOR 0xffff00 ; set yellow color (hexa code)
PENCOLOR 0 ; set black color (0x000000)
PENCOLOR ANY ; random color
PENCOLOR [5] ; set red color (by color identifier, see color constants)
PENCOLOR “invisible” ; invisible pen color for shapes without visible outline
PENCOLOR “~red” ; set random red color

DDRa6‖PENTRANSPARENCY

EzADg‖ PENTRANSPARENCY 80 ; set the transparency of the actual pen color to 80%

aMsXi‖PENCAP/LINECAP

AcYuv‖ PENCAP “none” ; without extra line end (default)
PENCAP “round” ; rounded line end
PENCAP “square” ; square line end

Y9CXT‖PENJOINT/LINEJOINT

VV4C6‖ PENJOINT “rounded” ; rounded line joint (default)
PENJOINT “miter” ; sharp line joint
PENJOINT “bevel” ; bevel line joint
PENJOINT “none” ; without line joint

GDsYJ‖PENSTYLE

VSwuD‖ PENSTYLE “solid” ; solid line (default)
PENSTYLE “dotted” ; dotted line
PENSTYLE “dashed” ; dashed line

; custom dot–dash pattern specified by a list with the following arguments:
; – number of the neighbouring dots
; – length of a dot
; – number of the neighbouring dashes
; – length of a dash
; – distance of the dots/dashes
; – type (optional):
; 0 = dots are rectangles (default)
; 2 = dots are squares (lengths and distances are relative to the pensize)

PENSTYLE [3, 1mm, 2, 4mm, 2mm, 2] ; ...––...––...––

D4Edp‖Fill settings

Q8Gqd‖FILLCOLOR/FILLCOLOUR (fc)

cotHx‖ FILLCOLOR “blue” ; fill with blue color, see also PENCOLOR
FILLCOLOR “invisible” CIRCLE 10 ; unfilled circle
FILLCOLOR [“blue”, “red”] ; gradient between red and blue
FILLCOLOR [[255, 255, 255], [255, 128, 0]] ; between white and orange
FILLCOLOR [“blue”, “red”, 1, 0, 0] ; set axial gradient (with the required rotation and border settings), possible values: 0-5 = linear, axial, radial, elliptical, square and rectangle gradients
FILLCOLOR [“red”, “blue”, 0, 90, 20] ; linear with 20% border, rotated with 90 degrees from the actual heading of the turtle
FILLCOLOR [“red”, “blue”, 0, 90, 20, 0, 0, 200, 50] ; from 200% to 50% intensity
FILLCOLOR [ANY, ANY, 2, 0, 0, 50, 50] ; radial gradient with random colors and 50-50% horizontal and vertical positions of the center

vhN7n‖FILLTRANSPARENCY

EBFzj‖ FILLTRANSPARENCY 80 ; set the transparency of the actual fill color to 80%
FILLTRANSPARENCY [80] ; set linear transparency gradient from 80% to 0%
FILLTRANSPARENCY [80, 20] ; set linear transparency gradient from 80% to 20%
FILLTRANSPARENCY [80, 20, 1, 90] ; set axial transparency gradient rotated with 90 degrees from the actual heading of the turtle
FILLTRANSPARENCY [80, 20, 2, 0, 20, 50, 50] ; set radial transparency gradient from outer 80% to inner 20% transparency with 20% border and with 50-50% horizontal and vertical positions of the center

9dQuv‖FILLSTYLE

W7mtK‖ FILLSTYLE 0 ; fill without hatches (default)
FILLSTYLE 1 ; black single hatches (horizontal)
FILLSTYLE 2 ; black single hatches (45 degrees)
FILLSTYLE 3 ; black single hatches (-45 degrees)
FILLSTYLE 4 ; black single hatches (vertical)
FILLSTYLE 5 ; red crossed hatches (45 degrees)
FILLSTYLE 6 ; red crossed hatches (0 degrees)
FILLSTYLE 7 ; blue crossed hatches (45 degrees)
FILLSTYLE 8 ; blue crossed hatches (0 degrees)
FILLSTYLE 9 ; blue triple crossed
FILLSTYLE 10 ; black wide single hatches (45 degrees)

; custom hatches specified by a list with the following arguments:
; – style (1 = single, 2 = double, 3 = triple hatching)
; – color
; – distance
; – degree

FILLSTYLE [2, “green”, 3pt, 15°] ; green crossed hatches (15 degrees)

S9sEF‖Drawing objects

BCBzz‖CIRCLE

uqABH‖ CIRCLE 100 ; draw a circle shape (diameter = 100pt)

ZdgFJ‖ELLIPSE

Tfz7T‖ ELLIPSE [50, 100] ; draw an ellipse with 50 and 100 diameters
ELLIPSE [50, 100, 2h, 12h] ; draw an elliptical sector (from 2h clock position to 12h)
ELLIPSE [50, 100, 2h, 12h, 2] ; draw an elliptical segment
ELLIPSE [50, 100, 2h, 12h, 3] ; draw an elliptical arc

5E7Rd‖SQUARE

x8mXp‖ SQUARE 100 ; draw a square shape (size = 100pt)

RhcV8‖RECTANGLE

sAShE‖ RECTANGLE [50, 100] ; draw a rectangle shape (50×100pt)
RECTANGLE [50, 100, 10] ; draw a rectangle with rounded corners

bjBw8‖POINT

fQB2X‖ POINT ; draw a point with size and color of the pen

rTcpT‖CLOSE can join the last points, FILL can fill the shape defined by points. For example, it’s easy to draw a “flat” star starting from its center:

8UezE‖ PENUP
REPEAT 5 [
FORWARD 80
POINT
BACK 80
RIGHT 36
FORWARD 50
POINT
BACK 50
RIGHT 120
] FILL

WKi7Y‖LABEL

WgYvf‖ LABEL “text” ; print text in the turtle position
LABEL 'text' ; see above
LABEL "text ; see above (only for single words)

ssDZz‖TEXT

PFV3A‖ CIRCLE 10 TEXT “text” ; set text of the actual drawing object

Wzzbj‖Font settings

zraHT‖FONTCOLOR/FONTCOLOUR

84otL‖ FONTCOLOR “green” ; set font color

4qRMC‖FONTFAMILY

F7FCE‖ FONTFAMILY “Linux Libertine G” ; set font (family)
FONTFAMILY “Linux Libertine G:smcp=1” ; set also font feature (small caps)
FONTFAMILY “Linux Libertine G:smcp=1&onum=1” ; small caps + old figures

BSv3E‖FONTSIZE

xDfj5‖ FONTSIZE 12 ; set 12pt

xFvP5‖FONTWEIGHT

HEACy‖ FONTWEIGHT “bold” ; set bold font
FONTWEIGHT “normal” ; set normal weight

Us7Tp‖FONTSTYLE

7Nwi7‖ FONTSTYLE “italic” ; set italic variant
FONTSTYLE “normal” ; set normal variant

QgMhh‖PICTURE (pic)

D7QbZ‖PICTURE is for

ZUYEG‖Shape grouping

VGtR2‖ ; PICTURE [ LibreLogo_commands ]
PICTURE [ FORWARD 100 CIRCLE 100 ] ; tree-like grouped shape

GYSXb‖See also “Group” in LibreOfficeDev Writer Help.

qWZVW‖ TO tree location
PENUP POSITION location HEADING 0 PENDOWN
PICTURE [ FORWARD 100 CIRCLE 100 ] ; tree-like grouped shape
END

PICTURE [ tree [230, 400] tree [300, 400] ] ; grouped shapes in a grouped shape

UTobM‖Starting new line shapes

o6vEb‖ PICTURE ; start a new line shape
FORWARD 10 PICTURE FORWARD 10 ; two line shapes

fnUBZ‖Saving SVG images

XGX3a‖ PICTURE “example.svg” [ CIRCLE 5 ] ; save the picture as an SVG image file in the user folder
PICTURE “Desktop/example.svg” [ FORWARD 100 CIRCLE 5 ] ; as above, with a relative path
PICTURE “/home/user/example.svg” [ CIRCLE 5 ] ; absolute path for Unix/Linux
PICTURE “C:\example.svg” [ CIRCLE 5 ] ; absolute path for Windows

McF6a‖Saving SVG/SMIL animations (drawings with SLEEP commands)

S5Qi8‖ PICTURE “animation.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 ] ; save as an SVG/SMIL animation (see also SLEEP)
PICTURE “animation2.svg” [ CIRCLE 5 SLEEP 1000 CIRCLE 99 SLEEP 2000 ] ; as above, but using SLEEP after the last object will result looping: after 2 seconds the SVG animation restarts in SMIL-conformant browsers

oY4Fh‖Consistency at the left border

cacUL‖Use PICTURE to keep the consistency of positions and line shapes at the left border of Writer:

mVYEq‖ PICTURE [ CIRCLE 20 POSITION [-100, 100] CIRCLE 20 ]

zFRw4‖Loops

xMcpN‖REPEAT

h4pDQ‖ ; REPEAT number [ commands ]

REPEAT 10 [ FORWARD 10 LEFT 45 CIRCLE 10 ] ; repeat 10 times
hbDZm‖ ; number is optional

REPEAT [ POSITION ANY ] ; endless loop

5qg3D‖REPCOUNT

vCcSe‖Loop variable (also in the FOR and WHILE loops).

DaCVG‖ REPEAT 100 [ FORWARD REPCOUNT LEFT 90 ]

LrLWT‖FOR IN

vkhbq‖Loop for the list elements:

C9Vqu‖ FOR i IN [1, 5, 7, 9, 11] [
FORWARD i
LEFT 90
]

Z6Gbt‖Loop for the characters of a character sequence:

48stD‖ FOR i IN “text” [
LABEL i
FORWARD 10
]

FRgJc‖WHILE

Nrzj2‖ WHILE TRUE [ POSITION ANY ] ; endless loop
WHILE REPCOUNT <= 10 [ FORWARD 50 LEFT 36 ] ; as REPEAT 10 [ ... ]

h8DGE‖BREAK

hnUaX‖Stop the loop.

FE6kC‖ REPEAT [ ; endless loop
POSITION ANY
IF REPCOUNT = 100 [ BREAK ] ; equivalent of the REPEAT 100 [ ... ]
]

MVZar‖CONTINUE

fAdUo‖Jump into the next iteration of the loop.

HzFB2‖ REPEAT 100 [
POSITION ANY
IF REPCOUNT % 2 = 0 [ CONTINUE ]
CIRCLE 10 ; draw circles on every 2nd positions
]

Ewq3B‖Conditions

96Fh3‖IF

bjhkY‖ ; IF condition [ true block ]
; IF condition [ true block ] [ false block ]

IF a < 10 [ PRINT “Small” ]
IF a < 10 [ PRINT “Small” ] [ PRINT “Big” ]

v5BCa‖AND, OR, NOT

Nzfwg‖Logical operators.

zEPVo‖ IF a < 10 AND NOT a = 5 [ PRINT “0, 1, 2, 3, 4, 6, 7, 8 or 9” ]
IF a < 10 AND a != 5 [ PRINT “0, 1, 2, 3, 4, 6, 7, 8 or 9” ] ; as above

tiPPk‖Subroutines

fzc68‖TO, END

nCqVS‖New word (or procedure).

AMCrD‖ TO triangle
REPEAT 2 [ FORWARD 100 RIGHT 120 ] FILL
END

REPEAT 10 [ triangle PENUP POSITION ANY PENDOWN ]

6KiG9‖OUTPUT

jXNws‖Return value of the function.

BGCn2‖ TO randomletter
OUTPUT RANDOM “qwertzuiopasdfghjklyxcvbnm”
END

PRINT randomletter + randomletter + randomletter ; print 3-letter random character sequence

eQwMS‖STOP

Yo67V‖Return from the procedure.

YGWiC‖ TO example number
IF number < 0 [ STOP ]
PRINT SQRT number ; print square root
]

example 100
example -1 ; without output and error
example 25

FfxUG‖Default variables

HGkUR‖ANY

m66pW‖Default random value of colors, etc.

L7hW3‖ PENCOLOR ANY ; random pen color

kAgtw‖TRUE

TJtzt‖Logical value.

zCrnh‖ WHILE TRUE [ POSITION ANY ] ; endless loop
PRINT TRUE ; print true

5Ftnu‖FALSE

zJfZY‖Logical value.

7BPmG‖ WHILE NOT FALSE [ POSITION ANY ] ; endless loop
PRINT FALSE ; print false

V6gVx‖PAGESIZE

3eWPC‖ PRINT PAGESIZE ; print list of the page sizes in points, eg. [595.30, 841.89]

CiccF‖PI/π

EEV27‖ PRINT PI ; print 3.14159265359

x64GB‖Input/Output

M3wYe‖PRINT

Dc9GV‖ PRINT “text” ; print “text” in a dialog box
PRINT 5 + 10 ; print 15

Dnu5D‖INPUT

NzmBM‖ PRINT INPUT “Input value?” ; ask and print a string by a query dialog box
PRINT FLOAT (INPUT “First number?”) + FLOAT (INPUT “Second number?”) ; simple calculator

3uHob‖SLEEP

Lyc6Z‖ SLEEP 1000 ; wait for 1000 ms (1 sec)

hBgF4‖GLOBAL

UnuYD‖Set global variables used in procedures.

Z367v‖ GLOBAL about
about = “LibreLogo”

TO example
PRINT about
GLOBAL about ; when we want to add a new value
about = “new value for the global variable”
END

example
PRINT about

bnCQa‖Functions

7UaMQ‖RANDOM

Qpv6X‖ PRINT RANDOM 100 ; random float number (0 <= x < 100)
PRINT RANDOM “text” ; random letter of the “text”
PRINT RANDOM [1, 2] ; random list element (1 or 2)

jj6Nx‖INT

L3ZB8‖ PRINT INT 3.8 ; print 3 (integer part of 3.8)
PRINT INT RANDOM 100 ; random integer number (0 <= x < 100)
PRINT INT “7” ; convert the string parameter to integer

ntBsE‖FLOAT

QLNqP‖ ; convert the string parameter to float number
PRINT 2 * FLOAT “5.5” ; print 11.0

KCNJe‖STR

bViGZ‖ ; convert the number parameter to string
PRINT “Result: ” + STR 5 ; print “Result: 5”
PRINT 10 * STR 5 ; print 5555555555

JQfBj‖SQRT

gFEeV‖ PRINT SQRT 100 ; print 10, square root of 100

YHcrt‖SIN

K6aSy‖ PRINT SIN 90 * PI/180 ; print 1.0 (sinus of 90° in radians)

uKTGM‖COS

iJnJK‖ PRINT COS 0 * PI/180 ; print 1.0 (cosinus of 0° in radians)

oWYPt‖LOG10

93Qvr‖ PRINT LOG10 100 ; print 2.0 (common logarithm of 100)

LgRfD‖ROUND

UovT6‖ PRINT ROUND 3.8 ; print 4 (rounding 3.8)
PRINT ROUND RANDOM 100 ; random integer number (0 <= x <= 100)

ypUzL‖ABS

iBs7T‖ PRINT ABS -10 ; print 10, absolute value of -10

gskpN‖COUNT

PdKFJ‖ PRINT COUNT “text” ; print 4, character count of “text”
PRINT COUNT [1, 2, 3] ; print 3, size of the list

b4itb‖SET

yX7X8‖ ; Convert list to Python set
PRINT SET [4, 5, 6, 6] ; print {4, 5, 6}
PRINT SET [4, 5, 6, 6] | SET [4, 1, 9] ; print {1, 4, 5, 6, 9}, union
PRINT SET [4, 5, 6, 6] & SET [4, 1, 9] ; print {4}, intersection
PRINT SET ([4, 5, 6, 6]) - SET [4, 1, 9] ; print {5, 6}, difference
PRINT SET [4, 5, 6, 6] ^ SET [4, 1, 9] ; print {1, 5, 6, 9}, symmetric difference

3ct8S‖RANGE

vPrJA‖ ; Python-like list generation
PRINT LIST RANGE 10 ; print [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
PRINT LIST RANGE 3 10 ; print [3, 4, 5, 6, 7, 8, 9]
PRINT LIST RANGE 3 10 3 ; print [3, 6, 9]

FOR i IN RANGE 10 50 10 [ ; loop for [10, 20, 30, 40]
FORWARD i
LEFT 90
]

2849D‖LIST

hseso‖ ; remove the repeating elements of a list using set and list conversion
PRINT LIST (SET [1, 3, 5, 5, 2, 1]) ; print [1, 3, 5, 2]

ACErN‖TUPLE

FVmFF‖Conversion to Python tuple (non-modifiable list)

BFt6u‖ PRINT TUPLE [4, 5]

mckf6‖SORTED

TwUpK‖It returns with a sorted list.

NCNM5‖ PRINT SORTED [5, 1, 3, 4] ; print [1, 3, 4, 5]

6wByA‖SUB

swzQ6‖Substitute character sequences using regex (regular expression) patterns.

udFtb‖ PRINT SUB (“t”, “T”, “text”) ; print “Text”, replacing “t” with “T”
PRINT SUB (“(.)”, “\\1\\1”, “text”) ; print “tteexxtt”, doubling every characters

fdz2a‖SEARCH

j7zXx‖Search character sequences patterns using regex patterns.

XSRcS‖ IF SEARCH (“\w”, "word") [ PRINT “Letter in the word.” ]

iYDnc‖FINDALL

AfWqb‖Find all character sequences in the input string matching the given regex pattern.

BbUXG‖ PRINT FINDALL(“\w+”, “Dogs, cats.”) ; print [“Dogs”, “cats”], the list of the words.

uCGUP‖MIN

N9vAV‖ PRINT MIN [1, 2, 3] ; print 1, the lowest element of the list

iTBjA‖MAX

SM7X3‖ PRINT MAX [1, 2, 3] ; print 3, the greatest element of the list

CBQoA‖Color constants

ynmzX‖ PENCOLOR “SILVER” ; set by name
PENCOLOR [1] ; set by identifiers
PENCOLOR “~SILVER” ; random silver color

qTgAw‖Identifier

tGYwr‖Name

EETTf‖0

HPp5u‖BLACK

zRS27‖1

qzGz4‖SILVER

ZmEKg‖2

xgJGR‖GRAY/GREY

ph6GC‖3

DEHEB‖WHITE

vLCPV‖4

265i2‖MAROON

gbfqt‖5

7jWDv‖RED

toCN7‖6

ScBEh‖PURPLE

DiF9i‖7

RHMTj‖FUCHSIA/MAGENTA

YDMDw‖8

AGFdA‖GREEN

qAB4J‖9

GRxor‖LIME

Bi3VZ‖10

Z6iWn‖OLIVE

PZiEE‖11

EPxBY‖YELLOW

WQFet‖12

qq6Eh‖NAVY

p67oX‖13

DGv9K‖BLUE

ssF5U‖14

GDgDh‖TEAL

vsGNB‖15

vzX4a‖AQUA

RMBGU‖16

gh8oP‖PINK

JgaGF‖17

JZF5T‖TOMATO

2Xsfp‖18

jnfBN‖ORANGE

Dxcnb‖19

cFHAN‖GOLD

He5CF‖20

wYkBx‖VIOLET

BPBVe‖21

ALM9a‖SKYBLUE

aWn3M‖22

SwkDB‖CHOCOLATE

tyZM5‖23

JLuy7‖BROWN

o4hc4‖24

2sSBN‖INVISIBLE