190 lines
11 KiB
Factor
190 lines
11 KiB
Factor
|
! Copyright (C) 2019 Jack Lucas
|
||
|
! See http://factorcode.org/license.txt for BSD license.
|
||
|
! These should be complete bindings to the Raygui library 2.0
|
||
|
! Most of the comments are included from the original header
|
||
|
! for your convenience.
|
||
|
USING: alien alien.c-types alien.enums alien.libraries
|
||
|
alien.libraries.finder alien.syntax classes.struct combinators
|
||
|
kernel quotations system vocabs raylib.ffi ;
|
||
|
IN: raylib.modules.gui
|
||
|
|
||
|
! Enumerations ----------------------------------------------------------
|
||
|
|
||
|
! Gui global state enum
|
||
|
ENUM: GuiControlState
|
||
|
GUI_STATE_NORMAL
|
||
|
GUI_STATE_FOCUSED
|
||
|
GUI_STATE_PRESSED
|
||
|
GUI_STATE_DISABLED ;
|
||
|
|
||
|
! Gui global text alignment
|
||
|
ENUM: GuiTextAlignment
|
||
|
GUI_TEXT_ALIGN_LEFT
|
||
|
GUI_TEXT_ALIGN_CENTER
|
||
|
GUI_TEXT_ALIGN_RIGHT ;
|
||
|
|
||
|
! Gui standard controls
|
||
|
ENUM: GuiControlStandard
|
||
|
DEFAULT
|
||
|
LABEL ! LABELBUTTON
|
||
|
BUTTON ! IMAGEBUTTON
|
||
|
TOGGLE ! TOGGLEGROUP
|
||
|
SLIDER ! SLIDERBAR
|
||
|
PROGRESSBAR
|
||
|
CHECKBOX
|
||
|
COMBOBOX
|
||
|
DROPDOWNBOX
|
||
|
TEXTBOX ! VALUEBOX SPINNER
|
||
|
LISTVIEW
|
||
|
COLORPICKER
|
||
|
SCROLLBAR ;
|
||
|
|
||
|
! Gui default properties for every control
|
||
|
ENUM: GuiControlProperty
|
||
|
BORDER_COLOR_NORMAL
|
||
|
BASE_COLOR_NORMAL
|
||
|
TEXT_COLOR_NORMAL
|
||
|
BORDER_COLOR_FOCUSED
|
||
|
BASE_COLOR_FOCUSED
|
||
|
TEXT_COLOR_FOCUSED
|
||
|
BORDER_COLOR_PRESSED
|
||
|
BASE_COLOR_PRESSED
|
||
|
TEXT_COLOR_PRESSED
|
||
|
BORDER_COLOR_DISABLED
|
||
|
BASE_COLOR_DISABLED
|
||
|
TEXT_COLOR_DISABLED
|
||
|
BORDER_WIDTH
|
||
|
INNER_PADDING
|
||
|
TEXT_ALIGNMENT
|
||
|
RESERVED02 ;
|
||
|
|
||
|
! Gui extended properties depending on control type
|
||
|
! NOTE: We reserve a fixed size of additional properties per control (8)
|
||
|
|
||
|
! Default properties
|
||
|
ENUM: GuiDefaultProperty
|
||
|
{ TEXT_SIZE 16 }
|
||
|
{ TEXT_SPACING 17 }
|
||
|
{ TEXT_COLOR 18 }
|
||
|
{ BACKGROUND_COLOR 19 } ;
|
||
|
|
||
|
! Toggle / ToggleGroup
|
||
|
ENUM: GuiToggleProperty
|
||
|
{ GROUP_PADDING 16 } ;
|
||
|
|
||
|
! Slider / SliderBar
|
||
|
ENUM: GuiSliderProperty
|
||
|
{ SLIDER_WIDTH 16 }
|
||
|
{ TEXT_PADDING 17 } ;
|
||
|
|
||
|
! TextBox / ValueBox / Spinner
|
||
|
ENUM: GuiTextBoxProperty
|
||
|
{ MULTILINE_PADDING 16 }
|
||
|
{ SPINNER_BUTTON_WIDTH 17 }
|
||
|
{ SPINNER_BUTTON_PADDING 18 }
|
||
|
{ SPINNER_BUTTON_BORDER_WIDTH 19 } ;
|
||
|
|
||
|
! CheckBox
|
||
|
ENUM: GuiCheckBoxProperty
|
||
|
{ CHECK_TEXT_PADDING 16 } ;
|
||
|
|
||
|
! ComboBox
|
||
|
ENUM: GuiComboBoxProperty
|
||
|
{ SELECTOR_WIDTH 16 }
|
||
|
{ SELECTOR_PADDING 17 } ;
|
||
|
|
||
|
! DropdownBox
|
||
|
ENUM: GuiDropdownBoxProperty
|
||
|
{ ARROW_RIGHT_PADDING 16 } ;
|
||
|
|
||
|
! ColorPicker
|
||
|
ENUM: GuiColorPickerProperty
|
||
|
{ COLOR_SELECTOR_SIZE 16 }
|
||
|
{ BAR_WIDTH 17 } ! Lateral bar width
|
||
|
{ BAR_PADDING 18 } ! Later bar separation from panel
|
||
|
{ BAR_SELECTOR_HEIGHT 19 } ! Lateral bar selector height
|
||
|
{ BAR_SELECTOR_PADDING 20 } ; ! Later bar selector outer padding
|
||
|
|
||
|
! ListView
|
||
|
ENUM: GuiListViewProperty
|
||
|
{ ELEMENTS_HEIGHT 16 }
|
||
|
{ ELEMENTS_PADDING 17 }
|
||
|
{ SCROLLBAR_WIDTH 18 }
|
||
|
{ SCROLLBAR_SIDE 19 } ; ! This property defines vertical scrollbar side
|
||
|
|
||
|
! ScrollBar
|
||
|
ENUM: GuiScrollBarProperty
|
||
|
{ SCROLLBAR_BORDER 16 }
|
||
|
{ SCROLLBAR_SHOW_SPINNER_BUTTONS 17 }
|
||
|
{ SCROLLBAR_ARROWS_SIZE 18 }
|
||
|
{ SCROLLBAR_PADDING 19 }
|
||
|
{ SCROLLBAR_SLIDER_PADDING 20 }
|
||
|
{ SCROLLBAR_SLIDER_SIZE 21 }
|
||
|
{ SCROLLBAR_SCROLL_SPEED 22 } ;
|
||
|
|
||
|
! ScrollBar side
|
||
|
ENUM: GuiScrollBarSide
|
||
|
SCROLLBAR_LEFT_SIDE
|
||
|
SCROLLBAR_RIGHT_SIDE ;
|
||
|
|
||
|
! Functions ---------------------------------------------------------
|
||
|
|
||
|
|
||
|
! Global gui modification functions
|
||
|
FUNCTION-ALIAS: rl-gui-enable void GuiEnable ( ) ! Enable gui controls ( global state )
|
||
|
FUNCTION-ALIAS: rl-gui-disable void GuiDisable ( ) ! Disable gui controls ( global state )
|
||
|
FUNCTION-ALIAS: rl-gui-lock void GuiLock ( ) ! Lock gui controls ( global state )
|
||
|
FUNCTION-ALIAS: rl-gui-unlock void GuiUnlock ( ) ! Unlock gui controls ( global state )
|
||
|
FUNCTION-ALIAS: rl-gui-state void GuiState ( int state ) ! Set gui state ( global state )
|
||
|
FUNCTION-ALIAS: rl-gui-font void GuiFont ( Font font ) ! Set gui custom font ( global state )
|
||
|
FUNCTION-ALIAS: rl-gui-fade void GuiFade ( float alpha ) ! Set gui controls alpha ( global state ) , alpha goes from 0.0f to 1.0f
|
||
|
|
||
|
! Style set/get functions
|
||
|
FUNCTION-ALIAS: rl-gui-set-style void GuiSetStyle ( int control, int property, int value ) ! Set one style property
|
||
|
FUNCTION-ALIAS: rl-gui-get-style int GuiGetStyle ( int control, int property ) ! Get one style property
|
||
|
|
||
|
! Container/separator controls, useful for controls organization
|
||
|
FUNCTION-ALIAS: rl-gui-window-box bool GuiWindowBox ( Rectangle bounds, c-string text ) ! Window Box control, shows a window that can be closed
|
||
|
FUNCTION-ALIAS: rl-gui-group-box void GuiGroupBox ( Rectangle bounds, c-string text ) ! Group Box control with title name
|
||
|
FUNCTION-ALIAS: rl-gui-line void GuiLine ( Rectangle bounds, c-string text ) ! Line separator control, could contain text
|
||
|
FUNCTION-ALIAS: rl-gui-panel void GuiPanel ( Rectangle bounds ) ! Panel control, useful to group controls
|
||
|
FUNCTION-ALIAS: rl-gui-scrollpanel Rectangle GuiScrollPanel ( Rectangle bounds, Rectangle content, Vector2 *scroll ) ! Scroll Panel control
|
||
|
|
||
|
! Basic controls set
|
||
|
FUNCTION-ALIAS: rl-gui-label void GuiLabel ( Rectangle bounds, c-string text ) ! Label control, shows text
|
||
|
FUNCTION-ALIAS: rl-gui-button bool GuiButton ( Rectangle bounds, c-string text ) ! Button control, returns true when clicked
|
||
|
FUNCTION-ALIAS: rl-gui-label-button bool GuiLabelButton ( Rectangle bounds, c-string text ) ! Label button control, show true when clicked
|
||
|
FUNCTION-ALIAS: rl-gui-image-button bool GuiImageButton ( Rectangle bounds, Texture2D texture ) ! Image button control, returns true when clicked
|
||
|
FUNCTION-ALIAS: rl-gui-image-button-ex bool GuiImageButtonEx ( Rectangle bounds, Texture2D texture, Rectangle texSource, c-string text ) ! Image button extended control, returns true when clicked
|
||
|
FUNCTION-ALIAS: rl-gui-toggle bool GuiToggle ( Rectangle bounds, c-string text, bool active ) ! Toggle Button control, returns true when active
|
||
|
FUNCTION-ALIAS: rl-gui-toggle-group int GuiToggleGroup ( Rectangle bounds, c-string text, int active ) ! Toggle Group control, returns active toggle index
|
||
|
FUNCTION-ALIAS: rl-gui-check-box bool GuiCheckBox ( Rectangle bounds, c-string text, bool checked ) ! Check Box control, returns true when active
|
||
|
FUNCTION-ALIAS: rl-gui-combo-box int GuiComboBox ( Rectangle bounds, c-string text, int active ) ! Combo Box control, returns selected item index
|
||
|
FUNCTION-ALIAS: rl-gui-dropdown-box bool GuiDropdownBox ( Rectangle bounds, c-string text, int* active, bool editMode ) ! Dropdown Box control, returns selected item
|
||
|
FUNCTION-ALIAS: rl-gui-spinner bool GuiSpinner ( Rectangle bounds, int* value, int minValue, int maxValue, bool editMode ) ! Spinner control, returns selected value
|
||
|
FUNCTION-ALIAS: rl-gui-value-box bool GuiValueBox ( Rectangle bounds, int* value, int minValue, int maxValue, bool editMode ) ! Value Box control, updates input text with numbers
|
||
|
FUNCTION-ALIAS: rl-gui-text-box bool GuiTextBox ( Rectangle bounds, char *text, int textSize, bool editMode ) ! Text Box control, updates input text
|
||
|
FUNCTION-ALIAS: rl-gui-text-box-multi bool GuiTextBoxMulti ( Rectangle bounds, char *text, int textSize, bool editMode ) ! Text Box control with multiple lines
|
||
|
FUNCTION-ALIAS: rl-gui-slider float GuiSlider ( Rectangle bounds, c-string text, float value, float minValue, float maxValue, bool showValue ) ! Slider control, returns selected value
|
||
|
FUNCTION-ALIAS: rl-gui-slider-bar float GuiSliderBar ( Rectangle bounds, c-string text, float value, float minValue, float maxValue, bool showValue ) ! Slider Bar control, returns selected value
|
||
|
FUNCTION-ALIAS: rl-gui-progress-bar float GuiProgressBar ( Rectangle bounds, c-string text, float value, float minValue, float maxValue, bool showValue ) ! Progress Bar control, shows current progress value
|
||
|
FUNCTION-ALIAS: rl-gui-status-bar void GuiStatusBar ( Rectangle bounds, c-string text ) ! Status Bar control, shows info text
|
||
|
FUNCTION-ALIAS: rl-gui-dummy-rec void GuiDummyRec ( Rectangle bounds, c-string text ) ! Dummy control for placeholders
|
||
|
FUNCTION-ALIAS: rl-gui-scroll-bar int GuiScrollBar ( Rectangle bounds, int value, int minValue, int maxValue ) ! Scroll Bar control
|
||
|
|
||
|
! Advance controls set
|
||
|
FUNCTION-ALIAS: rl-gui-list-view bool GuiListView ( Rectangle bounds, c-string text, int* active, int* scrollIndex, bool editMode ) ! List View control, returns selected list element index
|
||
|
FUNCTION-ALIAS: rl-gui-list-view-ex bool GuiListViewEx ( Rectangle bounds, c-string *text, int count, int* enabled, int* active, int* focus, int* scrollIndex, bool editMode ) ! List View with extended parameters
|
||
|
FUNCTION-ALIAS: rl-gui-message-box int GuiMessageBox ( Rectangle bounds, c-string windowTitle, c-string message, c-string buttons ) ! Message Box control, displays a message
|
||
|
FUNCTION-ALIAS: rl-gui-color-picker Color GuiColorPicker ( Rectangle bounds, Color color ) ! Color Picker control
|
||
|
FUNCTION-ALIAS: rl-gui-grid Vector2 GuiGrid ( Rectangle bounds, float spacing, int subdivs ) ! Grid
|
||
|
|
||
|
! Styles loading functions
|
||
|
FUNCTION-ALIAS: rl-gui-load-style void GuiLoadStyle ( c-string fileName ) ! Load style file ( .rgs )
|
||
|
FUNCTION-ALIAS: rl-gui-load-style-props void GuiLoadStyleProps ( int* props, int count ) ! Load style properties from array
|
||
|
FUNCTION-ALIAS: rl-gui-load-style-default void GuiLoadStyleDefault ( ) ! Load style default over global style
|
||
|
FUNCTION-ALIAS: rl-gui-update-style-complete void GuiUpdateStyleComplete ( ) ! Updates full style properties set with default values
|
||
|
|
||
|
|
||
|
FUNCTION-ALIAS: rl-gui-icon-text c-string GuiIconText ( int iconId, c-string text ) ! Get text with icon id prepended
|