; ============================================================
; moon.gp — WS4000 GP translation of the JS moon-icon draw list
;
; Source API being translated:
;   drawEllipse(cx, cy, radiusX, radiusY, fillColor, strokeColor,
;               strokeWidth, priority = 0)
;   drawLine(x1, y1, x2, y2, color, weight = 1, priority = 0)
;
; Mapping used for every ellipse:
;   CO   <- strokeColor
;   FC   <- fillColor
;   MO   S                          ; stroke with CO, fill interior with FC
;   EX   strokeWidth strokeWidth    ; ring thickness -> stroke width on both axes
;   EL   (cx-rx) (cy-ry) (cx+rx) (cy+ry)
;
; Mapping used for every line:
;   CO   <- color
;   EX   weight weight              ; pen thickness, must be >= 1
;   LI   x1 y1 x2 y2
;
; priority (z-order) isn't a GP concept — painter's order does the job,
; so primitives are emitted in the same back-to-front order as the
; original call list.
; ============================================================

; ---- palette constants (same names/values as the JS source) ----
moonColorIdx_base  = 58
moonColorIdx_gray0 = 56
moonColorIdx_gray1 = 55
moonColorIdx_gray2 = 54
moonColorIdx_gray3 = 3   ; declared upstream, unused there too

;; NEWMN
;moonColorIdx_base  = 213;
;moonColorIdx_gray0 = 214;
;moonColorIdx_gray1 = 215;
;moonColorIdx_gray2 = 216;
;moonColorIdx_gray3 = 3;

MO S     ; every ellipse below uses shape+interior mode

; ---- drawEllipse(62, 51, 53,43, 218, 1,0,0) ----
CO 218
FC 218
EX 0 0
EL 9 8 115 94

; ---- drawEllipse(53, 43, 53,43, moonColorIdx_base, 1,3,0) ----
CO 1
FC moonColorIdx_base
EX 3 3
EL 0 0 106 86

; ---- drawEllipse(55, 43, 46,38, moonColorIdx_gray0, 1,0,0) ----
CO moonColorIdx_gray0
FC moonColorIdx_gray0
EX 0 0
EL 9 5 101 81

; ---- drawEllipse(46, 42, 34,24, moonColorIdx_gray1, 1,0,0) ----
CO moonColorIdx_gray1
FC moonColorIdx_gray1
EX 0 0
EL 12 18 80 66

; ---- drawEllipse(70, 18, 16,6, moonColorIdx_gray1, 1,0,0) ----
CO moonColorIdx_gray1
FC moonColorIdx_gray1
EX 0 0
EL 54 12 86 24

; ---- drawEllipse(72, 50, 24,26, moonColorIdx_gray1, 1,0,0) ----
CO moonColorIdx_gray1
FC moonColorIdx_gray1
EX 0 0
EL 48 24 96 76

; ---- drawEllipse(65, 33, 16,11, moonColorIdx_gray0, 1,0,0) ----
CO moonColorIdx_gray0
FC moonColorIdx_gray0
EX 0 0
EL 49 22 81 44

; ---- drawEllipse(67, 35, 16,11, moonColorIdx_gray2, 1,0,0) ----
CO moonColorIdx_gray2
FC moonColorIdx_gray2
EX 0 0
EL 51 24 83 46

; ---- drawEllipse(68, 37, 13,9, moonColorIdx_gray0, 1,0,0) ----
CO moonColorIdx_gray0
FC moonColorIdx_gray0
EX 0 0
EL 55 28 81 46

; ---- drawEllipse(67, 35, 12,8, moonColorIdx_gray1, moonColorIdx_gray2, 1,0) ----
CO moonColorIdx_gray2
FC moonColorIdx_gray1
EX 1 1
EL 55 27 79 43

; ---- drawEllipse(48, 44, 15,8, moonColorIdx_gray1, 1,0,0) ----
CO moonColorIdx_gray1
FC moonColorIdx_gray1
EX 0 0
EL 33 36 63 52

; ---- drawEllipse(52, 45, 10,6, moonColorIdx_gray2, 1,0,0) ----
CO moonColorIdx_gray2
FC moonColorIdx_gray2
EX 0 0
EL 42 39 62 51

; ---- drawEllipse(54, 46, 8,4, moonColorIdx_gray0, 1,0,0) ----
CO moonColorIdx_gray0
FC moonColorIdx_gray0
EX 0 0
EL 46 42 62 50

; ---- drawEllipse(52, 44, 6,3, moonColorIdx_gray1, moonColorIdx_gray2, 1,0) ----
CO moonColorIdx_gray2
FC moonColorIdx_gray1
EX 1 1
EL 46 41 58 47

; ---- drawEllipse(35, 59, 11,8, moonColorIdx_gray0, 1,0,0) ----
CO moonColorIdx_gray0
FC moonColorIdx_gray0
EX 0 0
EL 24 51 46 67

; ---- drawEllipse(36, 60, 10,6, moonColorIdx_gray2, 1,0,0) ----
CO moonColorIdx_gray2
FC moonColorIdx_gray2
EX 0 0
EL 26 54 46 66

; ---- drawEllipse(38, 61, 8,5, moonColorIdx_gray0, 1,0,0) ----
CO moonColorIdx_gray0
FC moonColorIdx_gray0
EX 0 0
EL 30 56 46 66

; ---- drawEllipse(40, 59, 9,3, moonColorIdx_gray1, 1,0,0) ----
CO moonColorIdx_gray1
FC moonColorIdx_gray1
EX 0 0
EL 31 56 49 62

; ---- drawEllipse(22, 24, 7,5, moonColorIdx_gray1, moonColorIdx_gray2, 1,0) ----
CO moonColorIdx_gray2
FC moonColorIdx_gray1
EX 1 1
EL 15 19 29 29

; ---- drawEllipse(26, 25, 6,8, moonColorIdx_gray0, moonColorIdx_gray2, 2,0) ----
CO moonColorIdx_gray2
FC moonColorIdx_gray0
EX 2 2
EL 20 17 32 33

; ---- drawEllipse(42, 74, 6,4, moonColorIdx_gray1, moonColorIdx_gray2, 1,0) ----
CO moonColorIdx_gray2
FC moonColorIdx_gray1
EX 1 1
EL 36 70 48 78

; ---- drawEllipse(45, 75, 4,4, moonColorIdx_gray0, moonColorIdx_gray2, 1,0) ----
; equal radii -> could also be written as: CI 45 75 4
CO moonColorIdx_gray2
FC moonColorIdx_gray0
EX 1 1
EL 41 71 49 79

; ---- rays: five drawLine calls, all moonColorIdx_gray0, weight 2 ----
CO moonColorIdx_gray0
EX 2 2
LI 88 50 80 64
LI 87 50 72 52
LI 87 50 96 53
LI 87 50 82 44
LI 87 50 87 41

; arc overlay

;; FSTMN
;CO 214
;FC 216
;EX 4 4
;AR 0 0 106 86 180 180

;; LSTMN
;CO 214
;FC 216
;EX 4 4
;AR 0 0 106 86 0 180