Initial commit
This commit is contained in:
		
				commit
				
					
						e4b9b64056
					
				
			
		
					 17 changed files with 247 additions and 0 deletions
				
			
		
							
								
								
									
										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