1
1
Fork 0
mirror of https://github.com/QB64-Phoenix-Edition/QB64pe.git synced 2024-06-30 05:10:37 +00:00

Adds support for new _RGB32 syntaxes in CONST statements.

This commit is contained in:
FellippeHeitor 2018-11-02 18:47:55 -03:00
parent 511aee9d3a
commit 7fa762750b

View file

@ -2050,7 +2050,8 @@ DO
DO
finished = -1
L = INSTR(L + 1, UCASE$(wholestv$), " _RGB")
L = INSTR(L + 1, UCASE$(wholestv$), " _RGB32")
IF L = 0 THEN L = INSTR(L + 1, UCASE$(wholestv$), " _RGB")
IF L > 0 THEN
altered = -1
l$ = LEFT$(wholestv$, L - 1)
@ -2058,25 +2059,61 @@ DO
IF vp > 0 THEN
E = INSTR(vp + 1, wholestv$, ")")
IF E > 0 THEN
IF E = vp + 1 THEN a$ = "Syntax error": GOTO errmes
red$ = ""
green$ = ""
blue$ = ""
alpha$ = ""
first = 0: second = 0: third = 0
first = INSTR(vp, wholestv$, ",")
second = INSTR(first + 1, wholestv$, ",")
third = INSTR(second + 1, wholestv$, ",")
red$ = MID$(wholestv$, vp + 1, first - vp - 1)
green$ = MID$(wholestv$, first + 1, second - first - 1)
blue$ = MID$(wholestv$, second + 1)
IF first THEN second = INSTR(first + 1, wholestv$, ",")
IF second THEN third = INSTR(second + 1, wholestv$, ",")
IF first > 0 AND second > 0 AND third > 0 THEN
'rgb + alpha (or _RGB with screen mode)
red$ = MID$(wholestv$, vp + 1, first - vp - 1)
green$ = MID$(wholestv$, first + 1, second - first - 1)
blue$ = MID$(wholestv$, second + 1)
alpha$ = MID$(wholestv$, third + 1)
ELSEIF first > 0 AND second > 0 THEN
'regular rgb
red$ = MID$(wholestv$, vp + 1, first - vp - 1)
green$ = MID$(wholestv$, first + 1, second - first - 1)
blue$ = MID$(wholestv$, second + 1)
ELSEIF first > 0 THEN
'grayscale + alpha
red$ = MID$(wholestv$, vp + 1, first - vp - 1)
alpha$ = MID$(wholestv$, first + 1)
ELSE
'grayscale
red$ = MID$(wholestv$, vp + 1)
END IF
IF MID$(wholestv$, L + 5, 2) = "32" THEN
val$ = "32"
ELSE
val$ = MID$(wholestv$, third + 1)
IF VAL(val$) = 32 THEN val$ = "33"
END IF
SELECT CASE VAL(val$)
CASE 0, 1, 2, 7, 8, 9, 10, 11, 12, 13, 256
CASE 0, 1, 2, 7, 8, 9, 10, 11, 12, 13, 33, 256
IF val$ = "33" THEN val$ = "32"
wi& = _NEWIMAGE(240, 120, VAL(val$))
clr~& = _RGB(VAL(red$), VAL(green$), VAL(blue$), wi&)
_FREEIMAGE wi&
CASE 32
clr~& = _RGB32(VAL(red$), VAL(green$), VAL(blue$))
IF first > 0 AND second > 0 AND third > 0 THEN
'rgb + alpha
clr~& = _RGB32(VAL(red$), VAL(green$), VAL(blue$), VAL(alpha$))
ELSEIF first > 0 AND second > 0 THEN
'regular rgb
clr~& = _RGB32(VAL(red$), VAL(green$), VAL(blue$))
ELSEIF first > 0 THEN
'grayscale + alpha
clr~& = _RGB32(VAL(red$), VAL(alpha$))
ELSE
clr~& = _RGB32(VAL(red$))
END IF
CASE ELSE
a$ = "Invalid screen mode": GOTO errmes
END SELECT
@ -2174,7 +2211,6 @@ DO
'End of Math Support Edit
' _TITLE "Final:" + wholestv$
'Steve edit to update the CONST with the Math and _RGB functions
IF altered THEN