Public Types

Data refers to any piece of information that enters or exits your GUI. Every piece of data has a type, which lets designers and programmers communicate about what information needs to be displayed and interacted with. This page contains all the types of data that are at your disposal.


Boolean Values

The value of a boolean type can be either True or False. Boolean values are commonly used for calculating more complex conditions and some properties such as disabled.

Boolean values in Quill are special in that any other type can automatically be interpreted as a boolean value. For example, a List type is considered True if it has one or more items and a number value of 0 is considered False.


All text, sometimes referred to as strings, in uiink are encoded with UTF-8.


Color values are stored as RGBA in a 32 bit unsigned integer. Red is the most significant byte with Alpha as the least significant byte. So for example, the value 0x00FF00FF is the color green at full opacity.


An approximation of a real number. In uiink, Numbers are implemented using single-precision floating points.


Due to how CPUs handle floating point numbers, comparing for equality can be tricky and may have very surprising results. For example, 0.6/0.2-3==0 will on most computers evaluate to False. The Number Math Node does properly handle this issue, but any equal comparisons you make in a Lua Node will not.


A number without a fractional component.


Images can either be a traditional bitmap or a scalable vector image.


Identifiers are most commonly used in the Data API to refer to names used in Quill. For example the name of a Source Node and its fields. Refer to the Identifiers Documentation for more details.



Impulses are events, usually generated from user input, that flow right to left.

Impulses can be used to show and hide scenes, change values with nodes like value backflow and toggle, or be handled by application code.

Multiple impulses may be fired within a single step.


Triggers are a bit like impulses the go the opposite direction; left to right. Many nodes that perform operations when impulsed also have triggers. Triggers are most useful when you want application code to initiate some component of your GUI, such are run an animation or modify the scene stack.


A list is zero or more sequential items, with each item containing a set of data. Refer to the Data API docs for details on how to manipulate list data.

Private Types

These types will only be found in Quill and can not be read or written in a source node.


Dimension types consist of two components; a number and a unit. They can be constructed using the Number Dimension and Integer Dimension nodes.

The default unit in Quill is the Pixel (PX). Pixels only map to screen pixels when scaling is set to 100%. In the uncommon case when you want a dimension's to measurement to be in screen pixels, us the Real Pixel unit (RPX).

View Width (VW) and View Height (VH) units measure as a percentage of the GUI's viewport width and height.


For performance reasons the number component of a dimension uses fixed-point arithmetic. Be mindful of presion loss when converting numbers, which used floating-point, to dimensions with number dimension nodes. Presicion loss when converting numbers to PX dimensions varies depending on scaling.

It's usually best to avoid relying on the backflow of a dimension typed value.

View Reference

Used for specifying view anchors.