Handbook
Glossary
draw-interior ( gadget pen -- )
Factor handbook
»
UI framework
»
Implementing new gadgets
»
Customizing gadget appearance
»
UI pen protocol
Next:
draw-boundary ( gadget pen -- )
Vocabulary
ui
.
pens
Inputs
gadget
a
gadget
pen
an
object
Outputs
None
Generic word contract
Draws the interior of a gadget by making OpenGL calls. The
interior
slot may be set to objects implementing this generic word.
Definition
IN:
ui.pens
GENERIC:
draw-interior
( gadget pen -- )
Methods
USING:
kernel
ui.gadgets.buttons
ui.pens
;
M:
button-pen
draw-interior
lookup-button-pen
[
draw-interior
]
[
drop
]
if*
;
USING:
accessors
combinators
kernel
math
namespaces
opengl
opengl.gl
sequences
ui.pens
ui.pens.caching
ui.pens.gradient
ui.pens.gradient.private
ui.render
;
M:
gradient
draw-interior
{
[
compute-pen
]
[
last-vertices>>
]
[
last-colors>>
]
[
colors>>
]
}
cleave
gl3-mode?
get-global
[
2drop
use-vertex-colors
[
upload-vertices
]
[
length
6
/i
]
bi
GL_TRIANGLES
0
rot
glDrawArrays
]
[
[
gl-vertex-pointer
]
[
gl-color-pointer
]
[
draw-gradient
]
tri*
]
if
;
USING:
accessors
kernel
math
opengl
sequences
ui.images
ui.pens
ui.pens.image
;
M:
image-pen
draw-interior
[
dim>>
]
[
[
image>>
]
[
fill?>>
]
bi
]
bi*
[
draw-scaled-image
]
[
[
image-dim
[
-
2
/
gl-round
]
2map
]
keep
[
draw-image
]
curry
with-translation
]
if
;
USING:
kernel
opengl
ui.pens
ui.render.test
;
M:
line-test
draw-interior
2drop
{
0 0
}
{
0 10
}
gl-line
;
USING:
accessors
grouping
kernel
namespaces
opengl
opengl.gl
ui.pens
ui.pens.polygon
ui.render
;
M:
polygon
draw-interior
nip
gl3-mode?
get-global
[
[
color>>
gl-color
]
[
interior-vertices>>
2
<groups>
make-position-vertices
upload-vertices
]
[
[
GL_TRIANGLE_FAN
0
]
dip
interior-count>>
glDrawArrays
]
tri
]
[
[
color>>
gl-color
]
[
interior-vertices>>
gl-vertex-pointer
]
[
[
GL_POLYGON
0
]
dip
interior-count>>
glDrawArrays
]
tri
]
if
;
USING:
accessors
kernel
math
namespaces
opengl
opengl.gl
sequences
ui.pens
ui.pens.rounded
ui.pens.rounded.private
ui.render
;
M:
rounded
draw-interior
[
(rounded)
]
[
interior-vertices>>
]
bi
gl3-mode?
get-global
[
[
upload-vertices
]
[
length
6
/i
]
bi
GL_TRIANGLE_FAN
0
rot
glDrawArrays
]
[
[
gl-vertex-pointer
]
[
length
2/
]
bi
GL_POLYGON
0
rot
glDrawArrays
]
if
;
USING:
accessors
kernel
math.vectors
opengl
ui.gadgets.menus.private
ui.pens
;
M:
separator-pen
draw-interior
color>>
gl-color
dim>>
[
{
0 0.5
}
v*
]
[
{
1 0.5
}
v*
]
bi
[
v>integer
]
bi@
gl-line
;
USING:
kernel
ui.gadgets.sliders.private
ui.pens
;
M:
slider-pen
draw-interior
dupd
current-pen
draw-interior
;
USING:
accessors
kernel
namespaces
opengl
ui.pens
ui.pens.solid
ui.pens.solid.private
ui.render
;
M:
solid
draw-interior
[
(solid)
]
[
interior-vertices>>
]
bi
gl3-mode?
get-global
[
upload-vertices
(gl3-fill-rect)
]
[
gl-vertex-pointer
(gl-fill-rect)
]
if
;
USING:
accessors
combinators
kernel
opengl
ui.pens
ui.pens.caching
ui.pens.theme
;
M:
theme-pen
draw-interior
[
compute-pen
]
[
background>>
( -- color )
call-effect
gl-color
]
[
interior-vertices>>
gl-vertex-pointer
]
tri
(gl-fill-rect)
;
USING:
combinators
kernel
ui.pens
ui.pens.tile
;
M:
tile-pen
draw-interior
{
[
nip
>tile-pen<
]
[
compute-tile-xs
]
[
compute-tile-widths
]
[
drop
]
}
2cleave
[
render-tile
]
curry
tri-curry@
tri-curry*
tri*
;