The glisph Reference Manual

This is the glisph Reference Manual, version 0.1, generated automatically by Declt version 4.0 beta 2 "William Riker" on Sun Sep 15 05:22:36 2024 GMT+0.

Table of Contents


1 Introduction


2 Systems

The main system appears first, followed by any subsystem dependency.


2.1 glisph

Glyph rendering engine using OpenGL shading language

Author

Tamamu

License

MIT

Long Description

# GLisph

[![Quicklisp](http://quickdocs.org/badge/glisph.svg)](http://quickdocs.org/glisph/)

![Screen Shot](screenshot.gif)

GLisph is a glyph rendering engine using OpenGL shader language. The engine draws string clearly by vector based font rendering on an OpenGL context. TrueType (TTF) is the only drawable format currently.

## Usage

Initialize the engine as below first.

“‘lisp
(gli:init 800 600)
“‘

Load TrueType font file and make glyph table. Glyph table manages the contour points of the glyphs.

“‘lisp
(defvar *font* (gli:open-font-loader "/path/to/display-font.ttf")
(defvar *glyph-table* (gli:make-glyph-table *font*))
“‘

Then you can regist and draw glyphs!

“‘lisp
;;; For CL-GLUT, you should require these display mode keywords before display-window section.
(glut:set-display-mode :stencil :multisample)

;; Before draw section
(defvar *text-buffer*
(gli:draw *glyph-table*
’(:x 120 :y 40 :size 20
:text "Hello World!"
:y 64
:text "Common Lisp")))

;;; In draw section, you can set some parameters to draw for GLisph context.
(gli:gcolor 0.8 0.2 0.5)

;;; This is rotation example.
(gli:grotate 0.0 0.0 0.5)

;; Render
(gli:render *text-buffer*)

“‘

## Dependencies

* cl-annot
* cl-opengl
* cl-glu
* zpb-ttf
* cl-glut (optional - only required when you test GLisph)

## Installation

* Quicklisp

“‘lisp
(ql:quickload :glisph)
“‘

* Roswell

“‘bash
$ ros install glisph
“‘

* Test

“‘lisp
(asdf:test-system :glisph)
“‘

## Author

* Tamamu

## Copyright

Copyright (c) 2017 Tamamu

## License

Licensed under the MIT License.

Version

0.1

Dependencies
  • cl-annot (system).
  • cl-opengl (system).
  • cl-glu (system).
  • cl-reexport (system).
  • zpb-ttf (system).
Source

glisph.asd.

Child Component

src (module).


3 Modules

Modules are listed depth-first from the system components tree.


3.1 glisph/src

Source

glisph.asd.

Parent Component

glisph (system).

Child Components

4 Files

Files are sorted by type and then listed depth-first from the systems components trees.


4.1 Lisp


4.1.1 glisph/glisph.asd

Source

glisph.asd.

Parent Component

glisph (system).

ASDF Systems

glisph.

Packages

glisph-asd.


4.1.2 glisph/src/glisph.lisp

Dependency

shader.lisp (file).

Source

glisph.asd.

Parent Component

src (module).

Packages

glisph.

Public Interface
Internals

4.1.3 glisph/src/shader.lisp

Source

glisph.asd.

Parent Component

src (module).

Packages

glisph.shader.

Public Interface

5 Packages

Packages are listed by definition order.


5.1 glisph

Glyph rendering engine using OpenGL shading language

Source

glisph.lisp.

Nickname

gli

Use List

common-lisp.

Public Interface
Internals

5.2 glisph-asd

Source

glisph.asd.

Use List
  • asdf/interface.
  • common-lisp.

5.3 glisph.shader

Source

shader.lisp.

Use List

common-lisp.

Public Interface

6 Definitions

Definitions are sorted by export status, category, package, and then by lexicographic order.


6.1 Public Interface


6.1.1 Special variables

Special Variable: +bounding-box-fs+
Package

glisph.shader.

Source

shader.lisp.

Special Variable: +bounding-box-vs+
Package

glisph.shader.

Source

shader.lisp.

Special Variable: +glyph-fs+
Package

glisph.shader.

Source

shader.lisp.

Special Variable: +glyph-vs+
Package

glisph.shader.

Source

shader.lisp.


6.1.2 Macros

Macro: %set-glyph-table (context table)
Package

glisph.

Source

glisph.lisp.

Macro: %set-letter-spacing (context width)
Package

glisph.

Source

glisph.lisp.

Macro: %set-size (context size)
Package

glisph.

Source

glisph.lisp.

Macro: %set-x (context x)
Package

glisph.

Source

glisph.lisp.

Macro: %set-y (context y)
Package

glisph.

Source

glisph.lisp.

Macro: draw (glyph-table proc-list)
Package

glisph.

Source

glisph.lisp.

Macro: make-glyph-table (font)

Make glyphs cache table.

Package

glisph.

Source

glisph.lisp.

Macro: regist-glyphs (table str)

Regist glyphs of the string to the glyph table.

Package

glisph.

Source

glisph.lisp.


6.1.3 Ordinary functions

Function: %draw-string (context str)
Package

glisph.

Source

glisph.lisp.

Function: delete-glyph-table (table)

Delete font data from the glyph table.

Package

glisph.

Source

glisph.lisp.

Function: finalize ()

Delete GLisph shader programs.
Please call this function before exit program.

Package

glisph.

Source

glisph.lisp.

Function: gcolor (r g b a)

Set render color of glyphs.

Package

glisph.

Source

glisph.lisp.

Function: grotate (x y z)

Set the rotate matrix of glyphs.

Package

glisph.

Source

glisph.lisp.

Function: gscale (x y z)

Set the scale matrix of glyphs.

Package

glisph.

Source

glisph.lisp.

Function: gtrans (x y z)

Set the translation matrix of glyphs.

Package

glisph.

Source

glisph.lisp.

Function: init (&optional width height)

Initialize GLisph engine.
Please call this function before draw glyphs.

Package

glisph.

Source

glisph.lisp.

Function: render (buffer)

Render the text buffer.

Package

glisph.

Source

glisph.lisp.

Function: set-render-size (width height)
Package

glisph.

Source

glisph.lisp.


6.2 Internals


6.2.1 Special variables

Special Variable: *bounding-box-color*
Package

glisph.

Source

glisph.lisp.

Special Variable: *bounding-box-program*
Package

glisph.

Source

glisph.lisp.

Special Variable: *bounding-box-rotate*
Package

glisph.

Source

glisph.lisp.

Special Variable: *bounding-box-scale*
Package

glisph.

Source

glisph.lisp.

Special Variable: *bounding-box-translation*
Package

glisph.

Source

glisph.lisp.

Special Variable: *glyph-program*
Package

glisph.

Source

glisph.lisp.

Special Variable: *glyph-rotate*
Package

glisph.

Source

glisph.lisp.

Special Variable: *glyph-rotate-mat*
Package

glisph.

Source

glisph.lisp.

Special Variable: *glyph-scale*
Package

glisph.

Source

glisph.lisp.

Special Variable: *glyph-scale-mat*
Package

glisph.

Source

glisph.lisp.

Special Variable: *glyph-trans-mat*
Package

glisph.

Source

glisph.lisp.

Special Variable: *glyph-translation*
Package

glisph.

Source

glisph.lisp.

Special Variable: *render-height*
Package

glisph.

Source

glisph.lisp.

Special Variable: *render-width*
Package

glisph.

Source

glisph.lisp.

Special Variable: +bounding-box-vertex-loc+
Package

glisph.

Source

glisph.lisp.

Special Variable: +glyph-attrib-loc+
Package

glisph.

Source

glisph.lisp.

Special Variable: +glyph-vertex-loc+
Package

glisph.

Source

glisph.lisp.


6.2.2 Macros

Macro: make-gl-array (data)
Package

glisph.

Source

glisph.lisp.

Macro: regist-glyph-helper (table ch)
Package

glisph.

Source

glisph.lisp.

Macro: vector-push-extend-to (vec &rest rest)
Package

glisph.

Source

glisph.lisp.


6.2.3 Ordinary functions

Function: %add-glyph (context vglyph x y)
Package

glisph.

Source

glisph.lisp.

Function: %calc-advance-width (context glyph)
Package

glisph.

Source

glisph.lisp.

Function: %calc-kerning (context vglyph-1 vglyph-2)

Calc offsets of kerning and advance width between two glyphs.

Package

glisph.

Source

glisph.lisp.

Reader: context-count (instance)
Writer: (setf context-count) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

count.

Reader: context-glyph-table (instance)
Writer: (setf context-glyph-table) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

glyph-table.

Reader: context-letter-spacing (instance)
Writer: (setf context-letter-spacing) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

letter-spacing.

Function: context-p (object)
Package

glisph.

Source

glisph.lisp.

Reader: context-size (instance)
Writer: (setf context-size) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

size.

Reader: context-vertex (instance)
Writer: (setf context-vertex) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

vertex.

Reader: context-x (instance)
Writer: (setf context-x) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

x.

Reader: context-y (instance)
Writer: (setf context-y) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

y.

Function: copy-context (instance)
Package

glisph.

Source

glisph.lisp.

Function: copy-text-buffer (instance)
Package

glisph.

Source

glisph.lisp.

Function: copy-vglyph (instance)
Package

glisph.

Source

glisph.lisp.

Function: create-program (vsource fsource)

Create GLSL program.

Package

glisph.

Source

glisph.lisp.

Function: make-context (&key glyph-table vertex x y size letter-spacing count)
Package

glisph.

Source

glisph.lisp.

Function: make-text-buffer (&key width height polygon-buffer fill-buffer count)
Package

glisph.

Source

glisph.lisp.

Function: make-vglyph (&key source xmin ymin xmax ymax vertex count)
Package

glisph.

Source

glisph.lisp.

Function: matrix4f (a b c d e f g h i j k l m n o p)
Package

glisph.

Source

glisph.lisp.

Reader: text-buffer-count (instance)
Writer: (setf text-buffer-count) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

count.

Reader: text-buffer-fill-buffer (instance)
Writer: (setf text-buffer-fill-buffer) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

fill-buffer.

Reader: text-buffer-height (instance)
Writer: (setf text-buffer-height) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

height.

Function: text-buffer-p (object)
Package

glisph.

Source

glisph.lisp.

Reader: text-buffer-polygon-buffer (instance)
Writer: (setf text-buffer-polygon-buffer) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

polygon-buffer.

Reader: text-buffer-width (instance)
Writer: (setf text-buffer-width) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

width.

Function: vertex-fill (glyph scale)

Make vertex of filled region of the glyph.

Package

glisph.

Source

glisph.lisp.

Reader: vglyph-count (instance)
Writer: (setf vglyph-count) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

count.

Function: vglyph-p (object)
Package

glisph.

Source

glisph.lisp.

Reader: vglyph-source (instance)
Writer: (setf vglyph-source) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

source.

Reader: vglyph-vertex (instance)
Writer: (setf vglyph-vertex) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

vertex.

Reader: vglyph-xmax (instance)
Writer: (setf vglyph-xmax) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

xmax.

Reader: vglyph-xmin (instance)
Writer: (setf vglyph-xmin) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

xmin.

Reader: vglyph-ymax (instance)
Writer: (setf vglyph-ymax) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

ymax.

Reader: vglyph-ymin (instance)
Writer: (setf vglyph-ymin) (instance)
Package

glisph.

Source

glisph.lisp.

Target Slot

ymin.


6.2.4 Structures

Structure: context
Package

glisph.

Source

glisph.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: glyph-table
Type

hash-table

Readers

context-glyph-table.

Writers

(setf context-glyph-table).

Slot: vertex
Type

array

Initform

(make-array 0 :element-type (quote single-float) :fill-pointer 0 :adjustable t)

Readers

context-vertex.

Writers

(setf context-vertex).

Slot: x
Type

fixnum

Initform

0

Readers

context-x.

Writers

(setf context-x).

Slot: y
Type

fixnum

Initform

0

Readers

context-y.

Writers

(setf context-y).

Slot: size
Type

fixnum

Initform

10

Readers

context-size.

Writers

(setf context-size).

Slot: letter-spacing
Type

fixnum

Initform

0

Readers

context-letter-spacing.

Writers

(setf context-letter-spacing).

Slot: count
Package

common-lisp.

Type

fixnum

Initform

0

Readers

context-count.

Writers

(setf context-count).

Structure: text-buffer
Package

glisph.

Source

glisph.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: width
Type

float

Initform

0.0

Readers

text-buffer-width.

Writers

(setf text-buffer-width).

Slot: height
Type

float

Initform

0.0

Readers

text-buffer-height.

Writers

(setf text-buffer-height).

Slot: polygon-buffer
Readers

text-buffer-polygon-buffer.

Writers

(setf text-buffer-polygon-buffer).

Slot: fill-buffer
Readers

text-buffer-fill-buffer.

Writers

(setf text-buffer-fill-buffer).

Slot: count
Package

common-lisp.

Type

fixnum

Initform

0

Readers

text-buffer-count.

Writers

(setf text-buffer-count).

Structure: vglyph
Package

glisph.

Source

glisph.lisp.

Direct superclasses

structure-object.

Direct slots
Slot: source
Type

zpb-ttf::glyph

Readers

vglyph-source.

Writers

(setf vglyph-source).

Slot: xmin
Type

single-float

Initform

0.0

Readers

vglyph-xmin.

Writers

(setf vglyph-xmin).

Slot: ymin
Type

single-float

Initform

0.0

Readers

vglyph-ymin.

Writers

(setf vglyph-ymin).

Slot: xmax
Type

single-float

Initform

1.0

Readers

vglyph-xmax.

Writers

(setf vglyph-xmax).

Slot: ymax
Type

single-float

Initform

1.0

Readers

vglyph-ymax.

Writers

(setf vglyph-ymax).

Slot: vertex
Type

array

Readers

vglyph-vertex.

Writers

(setf vglyph-vertex).

Slot: count
Package

common-lisp.

Type

fixnum

Initform

0

Readers

vglyph-count.

Writers

(setf vglyph-count).


Appendix A Indexes


A.1 Concepts


A.2 Functions

Jump to:   %   (  
C   D   F   G   I   M   R   S   T   V  
Index Entry  Section

%
%add-glyph: Private ordinary functions
%calc-advance-width: Private ordinary functions
%calc-kerning: Private ordinary functions
%draw-string: Public ordinary functions
%set-glyph-table: Public macros
%set-letter-spacing: Public macros
%set-size: Public macros
%set-x: Public macros
%set-y: Public macros

(
(setf context-count): Private ordinary functions
(setf context-glyph-table): Private ordinary functions
(setf context-letter-spacing): Private ordinary functions
(setf context-size): Private ordinary functions
(setf context-vertex): Private ordinary functions
(setf context-x): Private ordinary functions
(setf context-y): Private ordinary functions
(setf text-buffer-count): Private ordinary functions
(setf text-buffer-fill-buffer): Private ordinary functions
(setf text-buffer-height): Private ordinary functions
(setf text-buffer-polygon-buffer): Private ordinary functions
(setf text-buffer-width): Private ordinary functions
(setf vglyph-count): Private ordinary functions
(setf vglyph-source): Private ordinary functions
(setf vglyph-vertex): Private ordinary functions
(setf vglyph-xmax): Private ordinary functions
(setf vglyph-xmin): Private ordinary functions
(setf vglyph-ymax): Private ordinary functions
(setf vglyph-ymin): Private ordinary functions

C
context-count: Private ordinary functions
context-glyph-table: Private ordinary functions
context-letter-spacing: Private ordinary functions
context-p: Private ordinary functions
context-size: Private ordinary functions
context-vertex: Private ordinary functions
context-x: Private ordinary functions
context-y: Private ordinary functions
copy-context: Private ordinary functions
copy-text-buffer: Private ordinary functions
copy-vglyph: Private ordinary functions
create-program: Private ordinary functions

D
delete-glyph-table: Public ordinary functions
draw: Public macros

F
finalize: Public ordinary functions
Function, %add-glyph: Private ordinary functions
Function, %calc-advance-width: Private ordinary functions
Function, %calc-kerning: Private ordinary functions
Function, %draw-string: Public ordinary functions
Function, (setf context-count): Private ordinary functions
Function, (setf context-glyph-table): Private ordinary functions
Function, (setf context-letter-spacing): Private ordinary functions
Function, (setf context-size): Private ordinary functions
Function, (setf context-vertex): Private ordinary functions
Function, (setf context-x): Private ordinary functions
Function, (setf context-y): Private ordinary functions
Function, (setf text-buffer-count): Private ordinary functions
Function, (setf text-buffer-fill-buffer): Private ordinary functions
Function, (setf text-buffer-height): Private ordinary functions
Function, (setf text-buffer-polygon-buffer): Private ordinary functions
Function, (setf text-buffer-width): Private ordinary functions
Function, (setf vglyph-count): Private ordinary functions
Function, (setf vglyph-source): Private ordinary functions
Function, (setf vglyph-vertex): Private ordinary functions
Function, (setf vglyph-xmax): Private ordinary functions
Function, (setf vglyph-xmin): Private ordinary functions
Function, (setf vglyph-ymax): Private ordinary functions
Function, (setf vglyph-ymin): Private ordinary functions
Function, context-count: Private ordinary functions
Function, context-glyph-table: Private ordinary functions
Function, context-letter-spacing: Private ordinary functions
Function, context-p: Private ordinary functions
Function, context-size: Private ordinary functions
Function, context-vertex: Private ordinary functions
Function, context-x: Private ordinary functions
Function, context-y: Private ordinary functions
Function, copy-context: Private ordinary functions
Function, copy-text-buffer: Private ordinary functions
Function, copy-vglyph: Private ordinary functions
Function, create-program: Private ordinary functions
Function, delete-glyph-table: Public ordinary functions
Function, finalize: Public ordinary functions
Function, gcolor: Public ordinary functions
Function, grotate: Public ordinary functions
Function, gscale: Public ordinary functions
Function, gtrans: Public ordinary functions
Function, init: Public ordinary functions
Function, make-context: Private ordinary functions
Function, make-text-buffer: Private ordinary functions
Function, make-vglyph: Private ordinary functions
Function, matrix4f: Private ordinary functions
Function, render: Public ordinary functions
Function, set-render-size: Public ordinary functions
Function, text-buffer-count: Private ordinary functions
Function, text-buffer-fill-buffer: Private ordinary functions
Function, text-buffer-height: Private ordinary functions
Function, text-buffer-p: Private ordinary functions
Function, text-buffer-polygon-buffer: Private ordinary functions
Function, text-buffer-width: Private ordinary functions
Function, vertex-fill: Private ordinary functions
Function, vglyph-count: Private ordinary functions
Function, vglyph-p: Private ordinary functions
Function, vglyph-source: Private ordinary functions
Function, vglyph-vertex: Private ordinary functions
Function, vglyph-xmax: Private ordinary functions
Function, vglyph-xmin: Private ordinary functions
Function, vglyph-ymax: Private ordinary functions
Function, vglyph-ymin: Private ordinary functions

G
gcolor: Public ordinary functions
grotate: Public ordinary functions
gscale: Public ordinary functions
gtrans: Public ordinary functions

I
init: Public ordinary functions

M
Macro, %set-glyph-table: Public macros
Macro, %set-letter-spacing: Public macros
Macro, %set-size: Public macros
Macro, %set-x: Public macros
Macro, %set-y: Public macros
Macro, draw: Public macros
Macro, make-gl-array: Private macros
Macro, make-glyph-table: Public macros
Macro, regist-glyph-helper: Private macros
Macro, regist-glyphs: Public macros
Macro, vector-push-extend-to: Private macros
make-context: Private ordinary functions
make-gl-array: Private macros
make-glyph-table: Public macros
make-text-buffer: Private ordinary functions
make-vglyph: Private ordinary functions
matrix4f: Private ordinary functions

R
regist-glyph-helper: Private macros
regist-glyphs: Public macros
render: Public ordinary functions

S
set-render-size: Public ordinary functions

T
text-buffer-count: Private ordinary functions
text-buffer-fill-buffer: Private ordinary functions
text-buffer-height: Private ordinary functions
text-buffer-p: Private ordinary functions
text-buffer-polygon-buffer: Private ordinary functions
text-buffer-width: Private ordinary functions

V
vector-push-extend-to: Private macros
vertex-fill: Private ordinary functions
vglyph-count: Private ordinary functions
vglyph-p: Private ordinary functions
vglyph-source: Private ordinary functions
vglyph-vertex: Private ordinary functions
vglyph-xmax: Private ordinary functions
vglyph-xmin: Private ordinary functions
vglyph-ymax: Private ordinary functions
vglyph-ymin: Private ordinary functions


A.3 Variables

Jump to:   *   +  
C   F   G   H   L   P   S   V   W   X   Y  
Index Entry  Section

*
*bounding-box-color*: Private special variables
*bounding-box-program*: Private special variables
*bounding-box-rotate*: Private special variables
*bounding-box-scale*: Private special variables
*bounding-box-translation*: Private special variables
*glyph-program*: Private special variables
*glyph-rotate*: Private special variables
*glyph-rotate-mat*: Private special variables
*glyph-scale*: Private special variables
*glyph-scale-mat*: Private special variables
*glyph-trans-mat*: Private special variables
*glyph-translation*: Private special variables
*render-height*: Private special variables
*render-width*: Private special variables

+
+bounding-box-fs+: Public special variables
+bounding-box-vertex-loc+: Private special variables
+bounding-box-vs+: Public special variables
+glyph-attrib-loc+: Private special variables
+glyph-fs+: Public special variables
+glyph-vertex-loc+: Private special variables
+glyph-vs+: Public special variables

C
count: Private structures
count: Private structures
count: Private structures

F
fill-buffer: Private structures

G
glyph-table: Private structures

H
height: Private structures

L
letter-spacing: Private structures

P
polygon-buffer: Private structures

S
size: Private structures
Slot, count: Private structures
Slot, count: Private structures
Slot, count: Private structures
Slot, fill-buffer: Private structures
Slot, glyph-table: Private structures
Slot, height: Private structures
Slot, letter-spacing: Private structures
Slot, polygon-buffer: Private structures
Slot, size: Private structures
Slot, source: Private structures
Slot, vertex: Private structures
Slot, vertex: Private structures
Slot, width: Private structures
Slot, x: Private structures
Slot, xmax: Private structures
Slot, xmin: Private structures
Slot, y: Private structures
Slot, ymax: Private structures
Slot, ymin: Private structures
source: Private structures
Special Variable, *bounding-box-color*: Private special variables
Special Variable, *bounding-box-program*: Private special variables
Special Variable, *bounding-box-rotate*: Private special variables
Special Variable, *bounding-box-scale*: Private special variables
Special Variable, *bounding-box-translation*: Private special variables
Special Variable, *glyph-program*: Private special variables
Special Variable, *glyph-rotate*: Private special variables
Special Variable, *glyph-rotate-mat*: Private special variables
Special Variable, *glyph-scale*: Private special variables
Special Variable, *glyph-scale-mat*: Private special variables
Special Variable, *glyph-trans-mat*: Private special variables
Special Variable, *glyph-translation*: Private special variables
Special Variable, *render-height*: Private special variables
Special Variable, *render-width*: Private special variables
Special Variable, +bounding-box-fs+: Public special variables
Special Variable, +bounding-box-vertex-loc+: Private special variables
Special Variable, +bounding-box-vs+: Public special variables
Special Variable, +glyph-attrib-loc+: Private special variables
Special Variable, +glyph-fs+: Public special variables
Special Variable, +glyph-vertex-loc+: Private special variables
Special Variable, +glyph-vs+: Public special variables

V
vertex: Private structures
vertex: Private structures

W
width: Private structures

X
x: Private structures
xmax: Private structures
xmin: Private structures

Y
y: Private structures
ymax: Private structures
ymin: Private structures