From eaff50ee1fb64f236ba715d2099a3a3011280c08 Mon Sep 17 00:00:00 2001 From: pommicket Date: Wed, 30 Aug 2023 00:15:41 -0400 Subject: change up guide a bit --- guide-src/index.html | 2 +- guide-src/make.py | 59 ++++++++++++++++++++++------------- guide-src/outline.txt | 7 ++--- guide-src/widget-inputs.html | 41 ++++++++++++++++++++++++ guide-src/widget-inputs/builtins.html | 20 ------------ guide-src/widget-inputs/syntax.html | 16 ---------- style.css | 28 ++++++++++------- 7 files changed, 99 insertions(+), 74 deletions(-) create mode 100644 guide-src/widget-inputs.html delete mode 100644 guide-src/widget-inputs/builtins.html delete mode 100644 guide-src/widget-inputs/syntax.html diff --git a/guide-src/index.html b/guide-src/index.html index c4f0869..c755491 100644 --- a/guide-src/index.html +++ b/guide-src/index.html @@ -1,4 +1,4 @@ ---- guide +--- introduction

your first pugl

diff --git a/guide-src/make.py b/guide-src/make.py index 058a63b..6f03513 100644 --- a/guide-src/make.py +++ b/guide-src/make.py @@ -32,34 +32,46 @@ class Section: def __repr__(self): return ''.join(['Section(path=', repr(self.path), ', name=', repr(self.name), ', items=', repr(self.items), ')']) - + outline = [l.strip() for l in readlines('{}/outline.txt'.format(INPUT_DIR)) if l.strip()] -sections = [] +entries = [] for item in outline: if item[0] == '/': assert item.endswith('.html'), 'expected path ending in .html' - sections[-1].items.append(item[1:]) - else: + entries[-1].items.append(item[1:]) + elif ':' in item: [path, name] = item.split(': ') - sections.append(Section(path, name)) + entries.append(Section(path, name)) + else: + entries.append(item) sidebar_content = [ ('', 'back to pugl'), - ('index.html', 'the basics'), ] -for section in sections: - sidebar_content.append(('', '

{}

'.format(section.name))) - for item in section.items: - path = '{}/{}/{}'.format(INPUT_DIR, section.path, item) - file = open(path) - first_line = file.readline().strip() - file.close() - assert first_line.startswith(TITLE_PREFIX), 'file {} doesn\'t start with title prefix {}'.format(path, TITLE_PREFIX) - title = first_line[len(TITLE_PREFIX):].strip() - assert '"' not in path, 'path {} should not contain "'.format(path) - url = quote('{}/{}'.format(section.path, item)) - sidebar_content.append((section.path + '/' + item, '{}'.format(url, html.escape(title)))) +def add_sidebar_link_for_page(path, indented): + file = open(INPUT_DIR + '/' + path) + first_line = file.readline().strip() + file.close() + assert first_line.startswith(TITLE_PREFIX), 'file {} doesn\'t start with title prefix {}'.format(path, TITLE_PREFIX) + title = first_line[len(TITLE_PREFIX):].strip() + sidebar_content.append(( + path, + '{title}'.format( + url=quote(path), c=' guide-sidebar-item-indented' if indented else '', title=html.escape(title) + ) + )) + +for entry in entries: + if isinstance(entry, Section): + section = entry + sidebar_content.append(('', '

{}

'.format(section.name))) + for item in section.items: + path = '{}/{}/{}'.format(INPUT_DIR, section.path, item) + add_sidebar_link_for_page(section.path + '/' + item, True) + else: + assert isinstance(entry, str) + add_sidebar_link_for_page(entry, False) def process_file(path): count = path.count('/') @@ -102,7 +114,10 @@ def process_file(path): f.write(output) f.close() -process_file('index.html') -for section in sections: - for item in section.items: - process_file('{}/{}'.format(section.path, item)) +for entry in entries: + if isinstance(entry, Section): + section = entry + for item in section.items: + process_file('{}/{}'.format(section.path, item)) + else: + process_file(entry) diff --git a/guide-src/outline.txt b/guide-src/outline.txt index 5ded64c..df12f5d 100644 --- a/guide-src/outline.txt +++ b/guide-src/outline.txt @@ -1,6 +1,5 @@ -widget-inputs: Widget inputs -/syntax.html -/builtins.html -development: Development +index.html +widget-inputs.html +development: development /index.html /js-features.html diff --git a/guide-src/widget-inputs.html b/guide-src/widget-inputs.html new file mode 100644 index 0000000..f0e8bdb --- /dev/null +++ b/guide-src/widget-inputs.html @@ -0,0 +1,41 @@ +--- widget inputs + +

syntax

+ +

+here are the various ways of specifying widget inputs: +

+ + + + + + + + + + + +
formatexampledescription
<number>5.3a number
#RRGGBB#ff831ca 3-component vector whose values are taken from the given color code. a color picker will be shown next to the input.
#RRGGBBAA#ff831c22a 4-component vector whose values are taken from the color code.
<widget name>add1the output from another widget
<input>,<input>.pos,0a vector composed of a and b (which can themselves be vectors)
<input>.<component>.pos.xextract a single component from a vector
<input>.<swizzle>.pos.yxyreorder vector components (this example is equivalent to .pos.y, .pos.x, .pos.y)
+ + +

built-in values

+ +all of pugl's built-in values begin with a . to distinguish +them from your widgets. +here they all are. +below, float refers to a plain old number, +vec2 is a 2-component vector, etc. + + + + + + + + + + + + +
built‑intypedescription
.posvec2the position of the pixel, with (−1, −1) being the bottom-left corner, and (+1, +1) being the top-right corner.
.pos01vec2the position of the pixel, with (0, 0) being the bottom-left corner, and (+1, +1) being the top-right corner.
.timefloatthe amount of time that has passed (wraps around every hour to prevent imprecision issues).
.mousevec2the position of the mouse ranging from (−1, −1) to (+1, +1).
.mouse01vec2the position of the mouse ranging from (0, 0) to (+1, +1).
.pifloatπ (3.1415…).
.2pifloat2π (6.2831…).
diff --git a/guide-src/widget-inputs/builtins.html b/guide-src/widget-inputs/builtins.html deleted file mode 100644 index 32cb3b1..0000000 --- a/guide-src/widget-inputs/builtins.html +++ /dev/null @@ -1,20 +0,0 @@ ---- built-in values - -all of pugl's built-in values begin with a . to distinguish -them from your widgets. -here they all are. -below, float refers to a plain old number, -vec2 is a 2-component vector, etc. - - - - - - - - - - - - -
built‑intypedescription
.posvec2the position of the pixel, with (−1, −1) being the bottom-left corner, and (+1, +1) being the top-right corner.
.pos01vec2the position of the pixel, with (0, 0) being the bottom-left corner, and (+1, +1) being the top-right corner.
.timefloatthe amount of time that has passed (wraps around every hour to prevent imprecision issues).
.mousevec2the position of the mouse ranging from (−1, −1) to (+1, +1).
.mouse01vec2the position of the mouse ranging from (0, 0) to (+1, +1).
.pifloatπ (3.1415…).
.2pifloat2π (6.2831…).
diff --git a/guide-src/widget-inputs/syntax.html b/guide-src/widget-inputs/syntax.html deleted file mode 100644 index 8026b33..0000000 --- a/guide-src/widget-inputs/syntax.html +++ /dev/null @@ -1,16 +0,0 @@ ---- syntax -

-here are the various ways of specifying widget inputs: -

- - - - - - - - - - - -
formatexampledescription
<number>5.3a number
#RRGGBB#ff831ca 3-component vector whose values are taken from the given color code. a color picker will be shown next to the input.
#RRGGBBAA#ff831c22a 4-component vector whose values are taken from the color code.
<widget name>add1the output from another widget
<input>,<input>.pos,0a vector composed of a and b (which can themselves be vectors)
<input>.<component>.pos.xextract a single component from a vector
<input>.<swizzle>.pos.yxyreorder vector components (this example is equivalent to .pos.y, .pos.x, .pos.y)
diff --git a/style.css b/style.css index 816d95d..7a44e57 100644 --- a/style.css +++ b/style.css @@ -1,6 +1,5 @@ :root { - --ui-border: white; - --ui-height: 2.5em; + --color-text: #ddd; } body { @@ -10,7 +9,7 @@ body { body, dialog { background-color: black; - color: white; + color: var(--color-text); } a, a:visited { @@ -69,7 +68,14 @@ h6 { cursor: col-resize; display: flex; justify-content: center; - background: linear-gradient(90deg, #000, #444 30%, #fff 50%, #444 70%, #000); + background: linear-gradient( + 90deg, + #000, + #444 30%, + var(--color-text) 50%, + #444 70%, + #000 + ); } #ui { overflow-x: auto; @@ -82,9 +88,9 @@ h6 { } input, button { - border: 1px solid var(--ui-border); + border: 1px solid var(--color-text); background-color: transparent; - color: white; + color: var(--color-text); } input[type='submit']:hover, button:hover { @@ -131,7 +137,7 @@ input[type='color'] { padding: 0; margin: 0.2em 0.5em; border: 2px solid #000; - outline: 1px solid #fff; + outline: 1px solid var(--color-text); height: 1.3em; width: 1.3em; } @@ -190,7 +196,7 @@ input[type='checkbox'] { } .widget-choice { width: calc(100% - 0.4em); - border: 1px solid white; + border: 1px solid var(--color-text); margin: 0.2em; padding: 0.1em 0; } @@ -201,7 +207,7 @@ input[type='checkbox'] { #widget-choices { margin: 0.2em; padding-bottom: 0.3em; - border-bottom: 2px solid white; + border-bottom: 2px solid var(--color-text); } summary { cursor: pointer; @@ -255,7 +261,7 @@ input[type='number'] { #guide-sidebar { flex: 1; - border-right: 2px solid white; + border-right: 2px solid var(--color-text); height: 100vh; background: #333; overflow: auto; @@ -309,7 +315,7 @@ table { td, th { - border: 2px solid white; + border: 2px solid var(--color-text); margin: 0; padding: 0.2em; } -- cgit v1.2.3