docs for new world words
parent
d546e8c89a
commit
804d4aae81
|
@ -18,7 +18,7 @@ HELP: <status-bar>
|
||||||
{ $notes "If the " { $snippet "model" } " is " { $snippet "status" } ", this gadget will display mouse over help for " { $link "ui.gadgets.presentations" } "." } ;
|
{ $notes "If the " { $snippet "model" } " is " { $snippet "status" } ", this gadget will display mouse over help for " { $link "ui.gadgets.presentations" } "." } ;
|
||||||
|
|
||||||
HELP: open-status-window
|
HELP: open-status-window
|
||||||
{ $values { "gadget" gadget } { "title" string } }
|
{ $values { "gadget" gadget } { "title/attributes" { "a " { $link string } " or a " { $link world-attributes } " tuple" } } }
|
||||||
{ $description "Like " { $link open-window } ", with the additional feature that the new window iwll have a status bar displaying the value stored in the world's " { $slot "status" } " slot." }
|
{ $description "Like " { $link open-window } ", with the additional feature that the new window iwll have a status bar displaying the value stored in the world's " { $slot "status" } " slot." }
|
||||||
{ $see-also show-status hide-status } ;
|
{ $see-also show-status hide-status } ;
|
||||||
|
|
||||||
|
@ -30,4 +30,4 @@ ARTICLE: "ui.gadgets.status-bar" "Status bars and mouse-over help"
|
||||||
{ $subsection hide-status }
|
{ $subsection hide-status }
|
||||||
{ $link "ui.gadgets.presentations" } " use the status bar to display object summary." ;
|
{ $link "ui.gadgets.presentations" } " use the status bar to display object summary." ;
|
||||||
|
|
||||||
ABOUT: "ui.gadgets.status-bar"
|
ABOUT: "ui.gadgets.status-bar"
|
||||||
|
|
|
@ -48,8 +48,8 @@ HELP: world
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
HELP: <world>
|
HELP: <world>
|
||||||
{ $values { "gadget" gadget } { "title" string } { "status" model } { "world" "a new " { $link world } } }
|
{ $values { "world-attributes" world-attributes } { "world" "a new " { $link world } } }
|
||||||
{ $description "Creates a new " { $link world } " delegating to the given gadget." } ;
|
{ $description "Creates a new " { $link world } " or world subclass with the given attributes." } ;
|
||||||
|
|
||||||
HELP: find-world
|
HELP: find-world
|
||||||
{ $values { "gadget" gadget } { "world/f" { $maybe world } } }
|
{ $values { "gadget" gadget } { "world/f" { $maybe world } } }
|
||||||
|
@ -65,6 +65,30 @@ HELP: find-gl-context
|
||||||
{ $description "Makes the OpenGL context of the gadget's containing native window the current OpenGL context." }
|
{ $description "Makes the OpenGL context of the gadget's containing native window the current OpenGL context." }
|
||||||
{ $notes "This word should be called from " { $link graft* } " and " { $link ungraft* } " methods which need to allocate and deallocate OpenGL resources, such as textures, display lists, and so on." } ;
|
{ $notes "This word should be called from " { $link graft* } " and " { $link ungraft* } " methods which need to allocate and deallocate OpenGL resources, such as textures, display lists, and so on." } ;
|
||||||
|
|
||||||
|
HELP: begin-world
|
||||||
|
{ $values { "world" world } }
|
||||||
|
{ $description "Called immediately after " { $snippet "world" } "'s OpenGL context has been created. The world's OpenGL context is current when this method is called." } ;
|
||||||
|
|
||||||
|
HELP: end-world
|
||||||
|
{ $values { "world" world } }
|
||||||
|
{ $description "Called immediately before " { $snippet "world" } "'s OpenGL context is destroyed. The world's OpenGL context is current when this method is called." } ;
|
||||||
|
|
||||||
|
HELP: resize-world
|
||||||
|
{ $values { "world" world } }
|
||||||
|
{ $description "Called when the window containing " { $snippet "world" } " is resized. The " { $snippet "loc" } " and " { $snippet "dim" } " slots of " { $snippet "world" } " will be updated with the world's new position and size. The world's OpenGL context is current when this method is called." } ;
|
||||||
|
|
||||||
|
HELP: draw-world*
|
||||||
|
{ $values { "world" world } }
|
||||||
|
{ $description "Called when " { $snippet "world" } " needs to be redrawn. The world's OpenGL context is current when this method is called." } ;
|
||||||
|
|
||||||
|
ARTICLE: "ui.gadgets.worlds-subclassing" "Subclassing worlds"
|
||||||
|
"The " { $link world } " gadget can be subclassed, giving Factor code full control of the window's OpenGL context. The following generic words can be overridden to replace standard UI behavior:"
|
||||||
|
{ $subsection begin-world }
|
||||||
|
{ $subsection end-world }
|
||||||
|
{ $subsection resize-world }
|
||||||
|
{ $subsection draw-world* }
|
||||||
|
"See the " { $vocab-link "spheres" } " and " { $vocab-link "bunny" } " demos for examples." ;
|
||||||
|
|
||||||
ARTICLE: "ui-paint-custom" "Implementing custom drawing logic"
|
ARTICLE: "ui-paint-custom" "Implementing custom drawing logic"
|
||||||
"The UI uses OpenGL to render gadgets. Custom rendering logic can be plugged in with the " { $link "ui-pen-protocol" } ", or by implementing a generic word:"
|
"The UI uses OpenGL to render gadgets. Custom rendering logic can be plugged in with the " { $link "ui-pen-protocol" } ", or by implementing a generic word:"
|
||||||
{ $subsection draw-gadget* }
|
{ $subsection draw-gadget* }
|
||||||
|
@ -72,7 +96,8 @@ ARTICLE: "ui-paint-custom" "Implementing custom drawing logic"
|
||||||
$nl
|
$nl
|
||||||
"Gadgets which need to allocate and deallocate OpenGL resources such as textures, display lists, and so on, should perform the allocation in the " { $link graft* } " method, and the deallocation in the " { $link ungraft* } " method. Since those words are not necessarily called with the gadget's OpenGL context active, a utility word can be used to find and make the correct OpenGL context current:"
|
"Gadgets which need to allocate and deallocate OpenGL resources such as textures, display lists, and so on, should perform the allocation in the " { $link graft* } " method, and the deallocation in the " { $link ungraft* } " method. Since those words are not necessarily called with the gadget's OpenGL context active, a utility word can be used to find and make the correct OpenGL context current:"
|
||||||
{ $subsection find-gl-context }
|
{ $subsection find-gl-context }
|
||||||
"OpenGL state must not be altered as a result of drawing a gadget, so any flags which were enabled should be disabled, and vice versa."
|
"OpenGL state must not be altered as a result of drawing a gadget, so any flags which were enabled should be disabled, and vice versa. To take full control of the OpenGL context, see " { $link "ui.gadgets.worlds-subclassing" } "."
|
||||||
{ $subsection "ui-paint-coord" }
|
{ $subsection "ui-paint-coord" }
|
||||||
|
{ $subsection "ui.gadgets.worlds-subclassing" }
|
||||||
{ $subsection "gl-utilities" }
|
{ $subsection "gl-utilities" }
|
||||||
{ $subsection "text-rendering" } ;
|
{ $subsection "text-rendering" } ;
|
||||||
|
|
|
@ -2,17 +2,28 @@ USING: help.markup help.syntax strings quotations debugger
|
||||||
namespaces ui.backend ui.gadgets ui.gadgets.worlds
|
namespaces ui.backend ui.gadgets ui.gadgets.worlds
|
||||||
ui.gadgets.tracks ui.gadgets.packs ui.gadgets.grids
|
ui.gadgets.tracks ui.gadgets.packs ui.gadgets.grids
|
||||||
ui.gadgets.private math.rectangles colors ui.text fonts
|
ui.gadgets.private math.rectangles colors ui.text fonts
|
||||||
kernel ui.private ;
|
kernel ui.private classes sequences ;
|
||||||
IN: ui
|
IN: ui
|
||||||
|
|
||||||
HELP: windows
|
HELP: windows
|
||||||
{ $var-description "Global variable holding an association list mapping native window handles to " { $link world } " instances." } ;
|
{ $var-description "Global variable holding an association list mapping native window handles to " { $link world } " instances." } ;
|
||||||
|
|
||||||
{ windows open-window find-window } related-words
|
{ windows open-window find-window world-attributes } related-words
|
||||||
|
|
||||||
HELP: open-window
|
HELP: open-window
|
||||||
{ $values { "gadget" gadget } { "title" string } }
|
{ $values { "gadget" gadget } { "title/attributes" { "a " { $link string } " or a " { $link world-attributes } " tuple" } } }
|
||||||
{ $description "Opens a native window with the specified title." } ;
|
{ $description "Opens a native window containing " { $snippet "gadget" } " with the specified attributes. If a string is provided, it is used as the window title; otherwise, the window attributes are specified in a " { $link world-attributes } " tuple." } ;
|
||||||
|
|
||||||
|
HELP: world-attributes
|
||||||
|
{ $values { "world-class" class } { "title" string } { "status" gadget } { "gadgets" sequence } { "pixel-format-attributes" sequence } }
|
||||||
|
{ $class-description "Tuples of this class can be passed to " { $link open-window } " to control attributes of the window opened. The following attributes can be set:" }
|
||||||
|
{ $list
|
||||||
|
{ { $snippet "world-class" } " specifies the class of world to construct. " { $link world } " is the default." }
|
||||||
|
{ { $snippet "title" } " is the window title." }
|
||||||
|
{ { $snippet "status" } ", if specified, is a gadget that will be used as the window's status bar." }
|
||||||
|
{ { $snippet "gadgets" } " is a sequence of gadgets that will be placed inside the window." }
|
||||||
|
{ { $snippet "pixel-format-attributes" } " is a sequence of " { $link "ui.pixel-formats-attributes" } " that the window will request for its OpenGL pixel format." }
|
||||||
|
} ;
|
||||||
|
|
||||||
HELP: set-fullscreen?
|
HELP: set-fullscreen?
|
||||||
{ $values { "?" "a boolean" } { "gadget" gadget } }
|
{ $values { "?" "a boolean" } { "gadget" gadget } }
|
||||||
|
|
Loading…
Reference in New Issue