allow loading of files with or without rgb colour data
This commit is contained in:
@@ -5,7 +5,7 @@ end
|
|||||||
|
|
||||||
structure ParseFile :> PARSE_FILE =
|
structure ParseFile :> PARSE_FILE =
|
||||||
struct
|
struct
|
||||||
datatype triangle_token = X | Y | COORD of Real32.real | UNKNOWN of string
|
datatype triangle_token = X | Y | R | G | B | COORD of Real32.real | UNKNOWN of string
|
||||||
|
|
||||||
val zero: Real32.real = 0.0
|
val zero: Real32.real = 0.0
|
||||||
|
|
||||||
@@ -26,6 +26,7 @@ struct
|
|||||||
, Y
|
, Y
|
||||||
, COORD y3
|
, COORD y3
|
||||||
] =>
|
] =>
|
||||||
|
(* file format not specifying any colours *)
|
||||||
SOME
|
SOME
|
||||||
{ x1 = x1
|
{ x1 = x1
|
||||||
, y1 = y1
|
, y1 = y1
|
||||||
@@ -37,6 +38,40 @@ struct
|
|||||||
, g = zero
|
, g = zero
|
||||||
, b = zero
|
, b = zero
|
||||||
}
|
}
|
||||||
|
| [ X
|
||||||
|
, COORD x1
|
||||||
|
, Y
|
||||||
|
, COORD y1
|
||||||
|
|
||||||
|
, X
|
||||||
|
, COORD x2
|
||||||
|
, Y
|
||||||
|
, COORD y2
|
||||||
|
|
||||||
|
, X
|
||||||
|
, COORD x3
|
||||||
|
, Y
|
||||||
|
, COORD y3
|
||||||
|
|
||||||
|
, R
|
||||||
|
, COORD r
|
||||||
|
, G
|
||||||
|
, COORD g
|
||||||
|
, B
|
||||||
|
, COORD b
|
||||||
|
] =>
|
||||||
|
(* file format specifying rgb *)
|
||||||
|
SOME
|
||||||
|
{ x1 = x1
|
||||||
|
, y1 = y1
|
||||||
|
, x2 = x2
|
||||||
|
, y2 = y2
|
||||||
|
, x3 = x3
|
||||||
|
, y3 = y3
|
||||||
|
, r = r
|
||||||
|
, g = g
|
||||||
|
, b = b
|
||||||
|
}
|
||||||
| _ => NONE
|
| _ => NONE
|
||||||
|
|
||||||
fun tokeniseString str =
|
fun tokeniseString str =
|
||||||
@@ -44,6 +79,12 @@ struct
|
|||||||
X
|
X
|
||||||
else if str = "y" then
|
else if str = "y" then
|
||||||
Y
|
Y
|
||||||
|
else if str = "r" then
|
||||||
|
R
|
||||||
|
else if str = "g" then
|
||||||
|
G
|
||||||
|
else if str = "B" then
|
||||||
|
B
|
||||||
else
|
else
|
||||||
case Real32.fromString str of
|
case Real32.fromString str of
|
||||||
SOME num => COORD num
|
SOME num => COORD num
|
||||||
|
|||||||
Reference in New Issue
Block a user