34 lines
1.7 KiB
Markdown
34 lines
1.7 KiB
Markdown
|
# Cacao
|
||
|
Cacao is a UI framework for Fabric/Minecraft mods based on Apple's [Cocoa](https://en.wikipedia.org/wiki/Cocoa_(API)
|
||
|
UI toolkit.
|
||
|
|
||
|
## Architecture
|
||
|
### Screen
|
||
|
A [CacaoScreen][] is the object that acts as the interface between Minecraft GUI code and the Cacao framework.
|
||
|
|
||
|
The CacaoScreen draws Cacao views on screen and passes Minecraft input events to the appropriate Views. The CacaoScreen
|
||
|
owns a group of [Window](#window) objects which are displayed on screen, one on top of the other.
|
||
|
|
||
|
[CacaoScreen]: https://git.shadowfacts.net/minecraft/ASMR/src/branch/master/src/main/kotlin/net/shadowfacts/cacao/CacaoScreen.kt
|
||
|
|
||
|
### Window
|
||
|
A [Window][] object has a root [View Controller](#view-controller) that it displays on screen.
|
||
|
|
||
|
The Window occupies the entire screen space and translates events from the screen to the root View Controller's View.
|
||
|
It owns a Solver object that manages layout constraints. The window also handles screen resizing and re-lays out the
|
||
|
view hierarchy.
|
||
|
|
||
|
[Window]: https://git.shadowfacts.net/minecraft/ASMR/src/branch/master/src/main/kotlin/net/shadowfacts/cacao/Window.kt
|
||
|
|
||
|
### View Controller
|
||
|
A [ViewController][] object owns a view, receives lifecycle events for it, and is generally used to control the view.
|
||
|
|
||
|
Each View Controller has a single root [View](#view) which in turn may have subviews.
|
||
|
|
||
|
[ViewController]: https://git.shadowfacts.net/minecraft/ASMR/src/branch/master/src/main/kotlin/net/shadowfacts/cacao/viewcontroller/ViewController.kt
|
||
|
|
||
|
### View
|
||
|
A [View][] object represents a single view on screen. It handles drawing, positioning, and directly handles input.
|
||
|
|
||
|
[View]: https://git.shadowfacts.net/minecraft/ASMR/src/branch/master/src/main/kotlin/net/shadowfacts/cacao/view/View.kt
|