Initial commit
This commit is contained in:
		
				commit
				
					
						e4b9b64056
					
				
			
		
					 17 changed files with 247 additions and 0 deletions
				
			
		
							
								
								
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					book
 | 
				
			||||||
							
								
								
									
										7
									
								
								.woodpecker.yml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								.woodpecker.yml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,7 @@
 | 
				
			||||||
 | 
					steps:
 | 
				
			||||||
 | 
					  - name: deploy
 | 
				
			||||||
 | 
					    image: allfunc/mdbook
 | 
				
			||||||
 | 
					    commands:
 | 
				
			||||||
 | 
					      - mdbook build -d /var/woodpecker/grezi-book
 | 
				
			||||||
 | 
					    volumes:
 | 
				
			||||||
 | 
					      - /var/woodpecker:/var/woodpecker
 | 
				
			||||||
							
								
								
									
										6
									
								
								book.toml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								book.toml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,6 @@
 | 
				
			||||||
 | 
					[book]
 | 
				
			||||||
 | 
					authors = ["Isaac Mills"]
 | 
				
			||||||
 | 
					language = "en"
 | 
				
			||||||
 | 
					multilingual = false
 | 
				
			||||||
 | 
					src = "src"
 | 
				
			||||||
 | 
					title = "Grezi"
 | 
				
			||||||
							
								
								
									
										11
									
								
								src/SUMMARY.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								src/SUMMARY.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,11 @@
 | 
				
			||||||
 | 
					# Summary
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- [Grezi](./chapter_1.md)
 | 
				
			||||||
 | 
					- [Viewboxes](./viewboxes.md)
 | 
				
			||||||
 | 
					- [Objects](./objects.md)
 | 
				
			||||||
 | 
					  - [Paragraphs](./paragraphs.md)
 | 
				
			||||||
 | 
					  - [Headers](./headers.md)
 | 
				
			||||||
 | 
					  - [Images](./images.md)
 | 
				
			||||||
 | 
					- [Slides](./slides.md)
 | 
				
			||||||
 | 
					  - [Functions](./functions.md)
 | 
				
			||||||
 | 
					- [Actions](./actions.md)
 | 
				
			||||||
							
								
								
									
										1
									
								
								src/actions.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/actions.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					# Actions
 | 
				
			||||||
							
								
								
									
										29
									
								
								src/chapter_1.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								src/chapter_1.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					# Grezi: Make high-effort presentations, easier
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Grezi is a platform to help you make engaging, and animated presentations, using just plain text, and your favorite text-editor.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					ViewBox: Size[0] ^
 | 
				
			||||||
 | 
					    1:2,
 | 
				
			||||||
 | 
					    1:2,
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Title: Header(
 | 
				
			||||||
 | 
					    value: "*Hello World*",
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subtitle: Paragraph(
 | 
				
			||||||
 | 
					    value: "By author",
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    Title: ViewBox[0]^^..,
 | 
				
			||||||
 | 
					    Subtitle: ViewBox[1]__..,
 | 
				
			||||||
 | 
					}[]
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Let's get started!
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										1
									
								
								src/functions.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								src/functions.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1 @@
 | 
				
			||||||
 | 
					# Functions
 | 
				
			||||||
							
								
								
									
										3
									
								
								src/headers.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/headers.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					# Headers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Headers are literally just paragraphs with a different font size. See [Paragraphs](/paragraphs.html)
 | 
				
			||||||
							
								
								
									
										22
									
								
								src/images.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								src/images.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					# Images
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Images in grezi can be on your local system, or web URLs. Grezi supports any image format supported by the [image](https://lib.rs/crates/image) crate, including animated images. Images inherit the size of the viewbox they're in, and smoothly transition sizes between viewboxes.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Images look like this
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					TitleImage: Image(
 | 
				
			||||||
 | 
					    value: "file:recursion.webp",
 | 
				
			||||||
 | 
					    tint: "oklab(30% 0.0 0.0)",
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are the key-value pairs that are valid for Images
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `value`: The image you want the object to load. Can either be
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - `file:{file path relative to grz file}`
 | 
				
			||||||
 | 
					  - `http[s]://{web url}`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `scale`: The logical size to scale the image to. This ignores the size of the viewbox. Can either be a single number which resolves to `{number}x{number}`, or a size in the format of `{width}x{height}`. The image will be resized to fit inside the scale specified, and keep it's aspect ratio. 
 | 
				
			||||||
 | 
					- `tint`: [A CSS color 4](https://developer.chrome.com/docs/css-ui/high-definition-css-color-guide) color that will be multiplied by the image.
 | 
				
			||||||
							
								
								
									
										
											BIN
										
									
								
								src/images/TopHeaderHalves.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/images/TopHeaderHalves.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 109 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/images/TopHeaderThirdsLeft.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/images/TopHeaderThirdsLeft.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 109 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/images/TopHeaderView.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/images/TopHeaderView.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 109 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								src/images/boilerplate.png
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/images/boilerplate.png
									
										
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 55 KiB  | 
							
								
								
									
										56
									
								
								src/objects.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								src/objects.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,56 @@
 | 
				
			||||||
 | 
					# Objects
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Objects in Grezi describe things that you want to put on screen. Objects fade in when entering slides, persist between slides, and then either disappear, or fade-out when leaving slides.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Here's a few example objects:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					Title: Header(
 | 
				
			||||||
 | 
					    value: "## Let's talk about Strings
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Strings are cool!",
 | 
				
			||||||
 | 
					    align: "center"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Subtitle: Paragraph(
 | 
				
			||||||
 | 
					    value: "A presentation by StratusFearMe21",
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					StringType: Paragraph(
 | 
				
			||||||
 | 
					    font_family: "Fira Code",
 | 
				
			||||||
 | 
					    value: "new String()",
 | 
				
			||||||
 | 
					    language: "java",
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					StringClass: Paragraph(
 | 
				
			||||||
 | 
					    value: "public class String {
 | 
				
			||||||
 | 
					    char charAt(int index) {}
 | 
				
			||||||
 | 
					    int compareTo(String anotherString) {}
 | 
				
			||||||
 | 
					    String concat(String str) {}
 | 
				
			||||||
 | 
					    boolean equals(Object anObject) {}
 | 
				
			||||||
 | 
					    int indexOf(int ch) {}
 | 
				
			||||||
 | 
					    int indexOf(String str) {}
 | 
				
			||||||
 | 
					    int length() {}
 | 
				
			||||||
 | 
					    String toUpperCase() {}
 | 
				
			||||||
 | 
					    String toLowerCase() {}
 | 
				
			||||||
 | 
					    String trim() {}
 | 
				
			||||||
 | 
					    String substring(int beginIndex) {}
 | 
				
			||||||
 | 
					    String substring(int beginIndex, int endIndex) {}
 | 
				
			||||||
 | 
					    char[] toCharArray() {}
 | 
				
			||||||
 | 
					}",
 | 
				
			||||||
 | 
					    font_size: "32",
 | 
				
			||||||
 | 
					    font_family: "Fira Code",
 | 
				
			||||||
 | 
					    language: "java",
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Objects are described like this
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					{name}: {type}(
 | 
				
			||||||
 | 
					    {key}: {value},
 | 
				
			||||||
 | 
					    {key}: {value},
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The object types are described on the following pages
 | 
				
			||||||
							
								
								
									
										45
									
								
								src/paragraphs.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								src/paragraphs.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,45 @@
 | 
				
			||||||
 | 
					# Paragraphs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Paragraphs describe text that you want to put on screen.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					They look like this:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					StringType: Paragraph(
 | 
				
			||||||
 | 
					    font_family: "Fira Code",
 | 
				
			||||||
 | 
					    value: "new String()",
 | 
				
			||||||
 | 
					    language: "java",
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					(It's worth noting that strings can have newlines. Every character inside of the quotes except for the quotes themselves are acceptable inside a string. Quotes can be escaped with `\"`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					These are the key-value pairs that are valid for Paragraphs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `value`: The text you want to put inside the object. Text is compatible with the [djot](https://djot.net/) markup syntax. The text will be wrapped to the size of the viewbox it's in, and adjust if it's moved to a different sized viewbox. The formatter will automatically change instances of `value` to `code` if a `language` is present in the object.
 | 
				
			||||||
 | 
					- `align`: If the text is wrapped, or the text is multiple lines, this is how the new lines of text will be aligned. Can be one of
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - `left`
 | 
				
			||||||
 | 
					  - `center`
 | 
				
			||||||
 | 
					  - `right`
 | 
				
			||||||
 | 
					  - `justified`
 | 
				
			||||||
 | 
					  - `end`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  These are based on [cosmic-text's `Aligns`](https://docs.rs/cosmic-text/0.12.1/cosmic_text/enum.Align.html)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `vertical_spacing`: Can be one of
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - `normal`
 | 
				
			||||||
 | 
					  - `even`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `font_family`: The font that you want to use for the text. If you're using the LSP, you should get autocomplete for this parameter. This must be a font on your computer or one of the following
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - `serif`
 | 
				
			||||||
 | 
					  - `sans-serif`
 | 
				
			||||||
 | 
					  - `cursive`
 | 
				
			||||||
 | 
					  - `fantasy`
 | 
				
			||||||
 | 
					  - `monospace`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `font_size`: The font size of you want to use for the text. The unit is logical pixels.
 | 
				
			||||||
 | 
					- `line_height`: The separation between two different lines in the wrapped text. The separation between two different paragraphs is `line_height * 2`
 | 
				
			||||||
 | 
					- `language`: The programming language to syntax highlight the text as. You must have the [Helix text editor](https://helix-editor.com/) somewhere on your system in order for this to work. It only depends on the runtime dir, which can be set as the `HELIX_RUNTIME` environment variable
 | 
				
			||||||
							
								
								
									
										3
									
								
								src/slides.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								src/slides.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,3 @@
 | 
				
			||||||
 | 
					# Slides
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
							
								
								
									
										62
									
								
								src/viewboxes.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								src/viewboxes.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,62 @@
 | 
				
			||||||
 | 
					# Viewboxes
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Viewboxes are the mechanism by which things are positioned on the screen.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Viewboxes allow you to split the screen (`Size`) into many different sections. You can then anchor objects to specific anchor points within each box you create.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For instance: Here's a few Viewboxes:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					TopHeaderView: Size[0] ^
 | 
				
			||||||
 | 
					    100~,
 | 
				
			||||||
 | 
					    0-,
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TopHeaderHalves: TopHeaderView[1] >
 | 
				
			||||||
 | 
					    1:2,
 | 
				
			||||||
 | 
					    1:2,
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					TopHeaderThirdsLeft: TopHeaderHalves[0] ^
 | 
				
			||||||
 | 
					    1:3,
 | 
				
			||||||
 | 
					    1:3,
 | 
				
			||||||
 | 
					    1:3,
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The viewboxes above resolve to these
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `TopHeaderView`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `TopHeaderHalves`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `TopHeaderThirdsLeft`
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					The only Viewbox that's provided for you is `Size`, which is just one box, that is the full size of the screen.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `TopHeaderView` splits `Size` into 2 boxes
 | 
				
			||||||
 | 
					  - One box is 100 logical pixels long
 | 
				
			||||||
 | 
					  - And the second box has a minimum length of 0 logical pixels (you can use `0-` to just make the box take the rest of the splitting area).
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `TopHeaderHalves` splits `TopHeaderView` into 2 more boxes
 | 
				
			||||||
 | 
					  - One box takes one half of the splitting area
 | 
				
			||||||
 | 
					  - And the other box takes the other half of the splitting area
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- Finally, `TopHeaderThirdsLeft` splits `TopHeaderView` into 3 more boxes
 | 
				
			||||||
 | 
					  - One box takes one third of the splitting area
 | 
				
			||||||
 | 
					  - Another box takes one third of the splitting area
 | 
				
			||||||
 | 
					  - And the last box takes one third of the splitting area
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					You'll also notice that each viewbox is split in different directions
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  - `^` and `_` mean that the viewbox is splititng horizontally, or that the boxes are travelling downwards as the box index increases
 | 
				
			||||||
 | 
					  - `>` and `<` mean that the viewbox is splitting vertically, or that the boxes are travelling to the right as the box index increases
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Viewboxes support many constraints aside from just ratios
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					- `{number}%`: Allocates a given percentage of the splitting area
 | 
				
			||||||
 | 
					- `{number}-`: Allocates at least a given size of the splitting area 
 | 
				
			||||||
 | 
					- `{number}+`: Allocates at most a given size of the splitting area
 | 
				
			||||||
 | 
					- `{number}~`: Allocates the exact size given of the splitting area
 | 
				
			||||||
 | 
					- `{number}:{number}`: Allocates the given ratio of the splitting area
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue