# NodeBox

Create visual output with Python programming code
Home Download Reference Tutorial Library Gallery About

# Gravital | natural language bindings

A first set of statements are those that have a direct visual representation, involving structural units like line, shape, color, motion, texture, pattern, direction, orientation, scale, angle, space and proportion.

## Individual object definition:

Statements that define the outlook of elementary shapes (rectangles, circles, text or an image).

- Naming: the title is a line of text, the background is blue, the right column, the header image, the school logo, everything, everything except the title
- Type: is a rectangle, is a circle, is a text paragraph, an image from the flower.jpg file
- Color properties: is red, is a red square, is a blue circle with a thick green edge
- Color contrast properties: monotone/colorful, deep, dark/light, soft/hard, silent/loud, soft/hard, warm/cold
- Text properties: header texts are set in a 15pt bold Arial font, paragraph text is 10pt Arial, display the key concepts in bold, the last line in the paragraph is in italic
- Image properties: blur the image, apply a blur filter to the image, apply a gradient mask to the image, put the image in hue blend mode (see NodeBox Core Image documentation for possible statements).

## Individual absolute transformations of objects:

Statements that define an object's absolute position. "Absolute" here means in relation to the implicit canvas/page/window: the title is at the top. See also the transformation commands in the NodeBox reference.

- Position: at the left, at the right, in the top corner, centrally on the canvas, ten pixels from the right
- Size and scaling: big, small, very big, tiny, huge, fills the entire canvas, half the original size, one tenth the original size, has a width of 200 pixels
- Rotation and flipping: rotated 90 degrees, flipped horizontally, flip along the vertical axis, rotate around center of object, rotate from bottom left corner of object
- Stacking order: on top, in the background

## Relative proportional transformations of objects:

Statements that define how an object is arranged in explicit relation to another object on the canvas: the company image is below the title.

- Position: next to, below, left of, inside, centered inside, sticks to the right edge of, ten pixels from the bottom border of
- Size and scaling: bigger than, smaller than, as big as, slightly smaller than, with a width as wide as the text paragraph above, as wide as
- Rotation and flipping: rotated 2 degrees more than previous
- Stacking order: below, on top of, underneath

## Relative definition of object properties:

Object properties like color and font are based on other objects on the canvas: the company image has the same shade of blue as the title but slightly smaller.

- Color properties: is greener than, is more transparent than, has the same color as, everything is a shade of blue, the title is the darkest blue
- Text properties: paragraphs are 5pt smaller than titles

## Indefinite objects:

These are individual objects that are not a rectangle, oval, image, line or text. Stuff like: a sharp, curved shape, a rough and pointy shape, something resembling an amoeba.

Gravital users should be able to expand the database of objects by building new shapes and tagging them (flower, spikes, rabbit, ...) - a node network is a crucial part of Gravital.

## Mass objects:

Some named objects can be groups of objects, or a "mass object": everything, all of the blue circles, all text to the left, all ovals in the flower shape, all titles. An image can be made up of layers (i.e. PhotoShop): the bottom layer in the image is slightly blurred, the next layer in the image is "flower.jpg". In this case the image is a "canvas" to the layers inside it.

## Composition of objects:

These are statements which we cannot map directly to short programming commands. They involve the layout of a group of object or the entire canvas. For this we will need to write code that visualises composition units like chaos, dynamical, explode, grow, focus, hairy.

- Structural grids: the images are arranged in a grid of 10 rows and 20 columns, fill the page with a grid of images, the text is divided in three columns, divide the page in a top and bottom area, the company image fills the top section, the bottom area has three text columns
- Natural grids / dynamics and physics: the page is a mess, rotate and scale everything chaotically, keep a clean, crisp layout with a lot of whitespace, put a lot of dynamic curves on the page like the OS X desktop [1], arrange all the ovals as if exploding from the center of the page [2], swirl the text on the page using a sine function, image grow smaller and smaller near the bottom of the page.

Some possibilities on how to discern between composition units:

- Emotional: happy, angry, peaceful, neutral, corporate, confusing

- Physical: hairy, fluid, growing, harmonious, chaotic, slow/fast, geometric
- Uncategorised: ritmical/chaotic

See also http://research.nodebox.net/Tom_Van_Iersel

An extensive library of tagged composition algorithms / nodes (grid, sine, grow, bloom, explode, wave, columns, recurse, ...) is essential in Gravital.

A second set of statements are those that work on the conceptual level. These we need to parse for keywords that are mapped to a series of composition units, image finders and indefinite-object-generators.

- "A poster for a jazz concert": poster in this case is the canvas, jazz concert is a named object without any description. Since we have nothing like a rectangle or a circle to map "jazz" to, we need to find out what shapes and composition algorithms to use: is "jazz" happy or sad? Is it wild and loud or silent and orderly? What color represents jazz? Do we use small and elegant text or loud and trashy text?

- "Draw something organic for a telecom company"

- "The style of the book should be simple and straightforward. The company's clients are not much of a candidate for visual experiment. However, the company is active in some innovative IT domains so we need a way to console the "corporate dullness" with something visually intelligent": evidently not many triples will be parsed from this description. However, the text is still full of relevant information like simple, straightforward, experiment, innovative, dullness, intelligent which can be weighed against each other and mapped to compositions. Gravital will only be able to offer suggestions, studies, brainstorms for this description

Gravital users should be able to see the decision-making process. A graphing algorithm and commonsense networks are crucial.