From 995564382ab477df0802bd985ca939f88d4d12ca Mon Sep 17 00:00:00 2001 From: LordBaryhobal Date: Sat, 15 Jun 2024 13:17:27 +0200 Subject: [PATCH] added color support for json, yaml and xml --- gallery/test.json | 6 ++++++ gallery/test.pdf | Bin 53286 -> 53418 bytes gallery/test.xml | 3 +++ gallery/test.yaml | 8 ++++++++ src/schema.typ | 22 ++++++++++++++++++++++ src/xml-loader.typ | 15 ++++++++++++++- 6 files changed, 53 insertions(+), 1 deletion(-) diff --git a/gallery/test.json b/gallery/test.json index fc15e6d..f247bea 100644 --- a/gallery/test.json +++ b/gallery/test.json @@ -101,5 +101,11 @@ } } } + }, + "colors": { + "main": { + "31-28": "#FF0000", + "11-4": [34, 176, 43] + } } } diff --git a/gallery/test.pdf b/gallery/test.pdf index 925be2cc4343370fe8ff5679751f2898de13dd5a..d08058f4e325c793ef21fbe391a6440d406ebf04 100644 GIT binary patch delta 18375 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 diff --git a/gallery/test.xml b/gallery/test.xml index ab92e22..4a8b716 100644 --- a/gallery/test.xml +++ b/gallery/test.xml @@ -65,4 +65,7 @@ offset register + + + \ No newline at end of file diff --git a/gallery/test.yaml b/gallery/test.yaml index 2ca7964..f7119ae 100644 --- a/gallery/test.yaml +++ b/gallery/test.yaml @@ -71,3 +71,11 @@ structures: 3-0: name: Rm description: offset register + +colors: + main: + 31-28: "#3EFA6B" + 25-23: + - 100 + - 150 + - 200 \ No newline at end of file diff --git a/src/schema.typ b/src/schema.typ index 0602329..5c1f650 100644 --- a/src/schema.typ +++ b/src/schema.typ @@ -50,6 +50,28 @@ parse-raw(path-or-schema) } + if "colors" in schema { + for struct in schema.colors.keys() { + for (span, col) in schema.colors.at(struct) { + if type(col) == str { + if col.starts-with("#") { + col = rgb(col) + } else { + let (r, g, b) = col.split(",").map(v => int(v)) + col = rgb(r, g, b) + } + } else if type(col) == array { + col = rgb(..col) + } else if type(col) != color { + panic("Invalid color format") + } + schema.colors.at(struct).at(span) = col + } + } + } else { + schema.insert("colors", (:)) + } + let structures = (:) for (id, data) in schema.structures { id = str(id) diff --git a/src/xml-loader.typ b/src/xml-loader.typ index 1f00c42..9513766 100644 --- a/src/xml-loader.typ +++ b/src/xml-loader.typ @@ -83,8 +83,10 @@ #let parse(content) = { let struct-elmts = content.children.filter(e => "tag" in e and e.tag == "structure") + let color-elmts = content.children.filter(e => "tag" in e and e.tag == "color") let structures = (:) + let colors = (:) for struct-elmt in struct-elmts { structures.insert( @@ -93,8 +95,19 @@ ) } + for color-elmt in color-elmts { + let struct = color-elmt.attrs.structure + if not struct in colors { + colors.insert(struct, (:)) + } + + let span = color-elmt.attrs.end + "-" + color-elmt.attrs.start + colors.at(struct).insert(span, color-elmt.attrs.color) + } + return ( - structures: structures + structures: structures, + colors: colors ) }