107 lines
5 KiB
Markdown
107 lines
5 KiB
Markdown
# Presentationmaker.js
|
|
![PresentationMaker.js logo](public/img/presentationmaker.png)
|
|
|
|
## What is
|
|
A simple(ish) tool to create presentation from XML source.
|
|
For those who fight against typical presentation tools.
|
|
|
|
## Demo
|
|
A live demo can be found [here](https://userdata.contentnation.net/a5970e0955da4472b5f84a8dbb740273/presentation/)
|
|
|
|
## Features
|
|
* HTML output for use in browser
|
|
* input from XML file (either single file or embedded into HTML)
|
|
* transition between pages
|
|
* HTML in elements supported
|
|
* Custom templates, you define them, combine them and use it
|
|
* powerful calculation inside description and templates thanks to [fparser](https://fparser.alexi.ch/)
|
|
* presentation can be formatted via normal CSS
|
|
|
|
## Installation
|
|
If you just want to use it, take a look at the [public/index.html](public/index.html) file. It is a good start to use it. Additionally, you need the [public/presentationmaker.js](public/presentationmaker.js) script.
|
|
The CSS is optional, but encouraged.
|
|
It provides all the needed boilerplate to get you running.
|
|
### Development
|
|
If you want to help with development or want to see live updates if you change your xml, check out the project and use
|
|
```
|
|
npm install
|
|
npx webpack serve
|
|
```
|
|
and a browser pointing to localhost:8080
|
|
|
|
## Usage
|
|
The main presentation file is pure XML with a <presentation> root node.
|
|
Below this there are
|
|
### <defintions>
|
|
These are in the form of
|
|
```<name>value<name>```
|
|
Later "name" can be used via ```${name}``` in the templates/pages
|
|
### <modules>
|
|
Similar to the definitions, a <module_name>...</module_name>
|
|
Creates a module that can be used later.
|
|
The module itself can use other previously defined modules as
|
|
```<module_name optional="value">optional inner content</module_name>```
|
|
The parameter you add during use will be available to the module as ```${optional}```
|
|
Existing internal modules are
|
|
#### calc
|
|
Calculates a formula and stores the result in a variable for later use.
|
|
Parameters:
|
|
* ```name``` the name of the variable
|
|
inner text is the formular to be used to calculate the value
|
|
#### img
|
|
Shows an image.
|
|
Parameters:
|
|
* ```src``` file name of the image
|
|
* ```x``` Left position of the image (relative to the page)
|
|
* ```y``` Top position of the image (relative to the page)
|
|
* ```width``` Image width
|
|
* ```height``` Image height
|
|
### options
|
|
Creates an effect or transformation layer to affect content that is rendered inside.
|
|
Parameters:
|
|
* ```opacity``` optional opacity value 0: fully transparent, 1: fully visible
|
|
* ```blendmode``` optional one the https://developer.mozilla.org/docs/Web/CSS/mix-blend-mode values
|
|
* ```flip``` optional flipping of the image (currently only y supported)
|
|
* ```rotate``` rotation values in X,Y,Z form
|
|
* ```y``` optional y axis to flip at
|
|
Inner XML is the content to display
|
|
#### text
|
|
Show a text in an invisible bounding box.
|
|
Parameters:
|
|
* ```x0``` left side of the bounding box.
|
|
* ```y0``` top side of the bounding box.
|
|
* ```x1``` right side of the bounding box (mutally exclusive to width)
|
|
* ```y1``` bottom side of the bounding box (mutally exclisve to height)
|
|
* ```pos``` shortcut to x0,y0,x1,y1 (mutually exclusive to above values)
|
|
* ```halign``` horizontal alignment in the bounding box, possible values: ```left```, ```center```, ```right```, defaults to ```center```
|
|
* ```valign``` vertical alignment in the bounding box, possible value: ```top```, ```center```, ```bottom```, default to ```top```
|
|
* ```fontsize``` optional font size in pixel
|
|
* ```color``` optional color
|
|
Inside the XML is the text to display
|
|
### page
|
|
This is the section for the actual pages to show.
|
|
In the pages, modules, variables as well as calulation can be used.
|
|
Parameters:
|
|
* ```id``` optional id of the page (useful for CSS styling)
|
|
* ```width``` page width, default to the ```width``` variable in the definitions section
|
|
* ```height``` page height, default to the ```height``` variable in the definitions section
|
|
* ```x``` X position of the page in the canvas, defaults to 0
|
|
* ```y``` Y position of the page in the canvas, defaults to 0
|
|
* ```z``` Z position of the page in the canvas, defaults to 0
|
|
* ```rx``` rotation of the page on the X-Axis in °, defaults to 0
|
|
* ```ry``` rotation of the page on the Y-Axis in °, defaults to 0
|
|
* ```rz``` rotation of the page on the Z-Axis in °, defaults to 0
|
|
* ```vx``` viewport position in X, defaults to ```x```
|
|
* ```vy``` viewport position in Y, defaults to ```y```
|
|
* ```vz``` viewport position in Z, defaults to ```z```
|
|
* ```vwidth``` viewport width, defaults to ```width```
|
|
* ```vheight``` viewport width, defaults to ```height```
|
|
* ```vrx``` rotation of the vieport on the X-Axis in °, defaults to 0
|
|
* ```vry``` rotation of the vieport on the Y-Axis in °, defaults to 0
|
|
* ```vrz``` rotation of the vieport on the Z-Axis in °, defaults to 0
|
|
* ```name``` name of the page (shown in drop down), defaults to page number
|
|
|
|
## Example
|
|
For a fully featured example, take a look at [public/example.xml](public/example.xml) file.
|
|
It show multiple modules, some of them nested, many formular and some HTML inside the text.
|
|
|