mirror of
https://github.com/penpot/penpot.git
synced 2025-01-04 13:50:12 -05:00
📚 Add serialization docs for gradient stops and path data
This commit is contained in:
parent
c2ffee1683
commit
ef32acdfab
1 changed files with 41 additions and 0 deletions
41
render-wasm/docs/serialization.md
Normal file
41
render-wasm/docs/serialization.md
Normal file
|
@ -0,0 +1,41 @@
|
|||
# Serialization
|
||||
|
||||
## Paths
|
||||
|
||||
Paths are made of segments of **28 bytes** each. The layout (assuming positions in a `Uint8Array`) is the following:
|
||||
|
||||
| Offset | Length (bytes) | Data Type | Field |
|
||||
| ------ | -------------- | --------- | ------- |
|
||||
| 0 | 2 | `u16` | Command |
|
||||
| 2 | 2 | `u16` | Flags |
|
||||
| 4 | 4 | `f32` | `c1_x` |
|
||||
| 8 | 4 | `f32` | `c1_y` |
|
||||
| 12 | 4 | `f32` | `c2_x` |
|
||||
| 16 | 4 | `f32` | `c2_y` |
|
||||
| 20 | 4 | `f32` | `x` |
|
||||
| 24 | 4 | `f32` | `y` |
|
||||
|
||||
**Command** can be one of these values:
|
||||
|
||||
- `:move-to`: `1`
|
||||
- `:line-to`: `2`
|
||||
- `:curve-to`: `3`
|
||||
- `:close-path`: `4`
|
||||
|
||||
**Flags** is not being used at the moment.
|
||||
|
||||
## Gradient stops
|
||||
|
||||
Gradient stops are serialized in a `Uint8Array`, each stop taking **5 bytes**.
|
||||
|
||||
| Offset | Length (bytes) | Data Type | Field |
|
||||
| ------ | -------------- | --------- | ----------- |
|
||||
| 0 | 1 | `u8` | Red |
|
||||
| 1 | 1 | `u8` | Green |
|
||||
| 2 | 1 | `u8` | Blue |
|
||||
| 3 | 1 | `u8` | Alpha |
|
||||
| 4 | 1 | `u8` | Stop Offset |
|
||||
|
||||
**Red**, **Green**, **Blue** and **Alpha** are the RGBA components of the stop.
|
||||
|
||||
**Stop offset** is the offset, being integer values ranging from `0` to `100` (both inclusive).
|
Loading…
Reference in a new issue