-
Notifications
You must be signed in to change notification settings - Fork 2
containment
Containment in uiz is making sure that objects don't draw outside the locations they are supposed to draw. < For example, you might have an object with a size of 500x500 inside a frame that is only 100x100. Uiz will then detect that there is a bigger object inside another smaller object. It will then make sure that the big object won't draw outside the canvas of the frame.
First uiz checks if an object exceeds any boundaries. This check is partly done in the uiz_fix functions. If the object is completely outside of boundaries and shouldn't be visible, the drawing of the object is disabled. If the object is partly within boundaries, and partly outside of them, a containment method will be used. There are 2 ways of containing something in uiz: shaders and surfaces.
Shaders are the default way to handle containment as it is faster and doesn't use any extra ram. However, some systems don't support shaders or you are using code that isn't compatible with shaders. In such cases uiz will use surfaces instead of shaders to contain objects. Note that almost all testing has been done with shaders, and that the surface method is only included as a very, very last resort.
The following functions are available to change the way containment is handled:
-
uiz_shader_setEnabled(enabled): Globally enables or disabled the use of shaders by uiZ.
- enabled[true]: Whether to have shaders enabled or disabled
-
uiz_shader_object(instanceid, enabled): Enable or disable the use of shaders for a specific object.
- instanceid: The instanceid of a uiZ object you want to modify.
- enabled[true]: Whether to enabled the use of containment shaders for this object.
-
uiz_shader_useFallbackShader(enabled): if this option is enabled, uiZ will not pass uniform values directly to fragment shaders, but will make uniforms pass trough the vertex shader. Some platforms have problems with passing uniforms directly to fragment shaders. you need to do a uiz_shader_update after calling this script.
- enabled: Enable of disabled the use of the fallback shader.
For containment to work, the code "if uiz_cntn() then{" at the beginning, and "uiz_containend()}" at the end of the user 0 event (the uiZ draw event) of an uiz object is needed. See the basic object template.
For your custom ui widgets, these functions are available:
-
uiz_cntn(): To be called in the user 0 event to start uiZ containment functionality. Returns whether the object has to draw any code at all. (false if the object is outside of the view of the parent)
-
uiz_containend(): To be placed at the end of the user 0 event to stop uiZ from containing drawn objects.
-
uiz_contain_custom(x1, y1, x2, y2): Set a custom area in which to contain your drawing code. The area is given in pixel values as global gui coordinate (so not local to any parent).
- x1: The x coordinate of the left side of your custom contain area.
- y1: The y coordinate of the top side of your custom contain area.
- x2: The x coordinate of the right side of your custom contain area.
- y2: The y coordinate of the bottom side of your custom contain area.
-
uiz_contain_custom_min(x1, y1, x2, y2): Set a custom area in which to contain your drawing code. However, the area is cut off if exceeds the boundaries of the original contain area as calculated by uiZ. The area is given in pixel values as global gui coordinate (so not local to any parent). This function needs to be called after calling uiz_cntn and before calling uiz_containend.
- x1: The x coordinate of the left side of your custom contain area.
- y1: The y coordinate of the top side of your custom contain area.
- x2: The x coordinate of the right side of your custom contain area.
- y2: The y coordinate of the bottom side of your custom contain area.
-
uiz_contain_custom_min_left(x1): Allows you to make change the left coordinate of the uiZ contain area. The new coordinate may not be smaller than the original one. This function needs to be called after calling uiz_cntn and before calling uiz_containend.
- x1: The x coordinate of the left side of your custom contain area.
-
uiz_contain_custom_min_top(y1): Allows you to make change the top coordinate of the uiZ contain area. The new coordinate may not be smaller than the original one. This function needs to be called after calling uiz_cntn and before calling uiz_containend.
- y1: The y coordinate of the top side of your custom contain area.
-
uiz_contain_custom_min_right(x2): Allows you to make change the right coordinate of the uiZ contain area. The new coordinate may not be smaller than the original one. This function needs to be called after calling uiz_cntn and before calling uiz_containend.
- x2: The x coordinate of the right side of your custom contain area.
-
uiz_contain_custom_min_bottom(y2): Allows you to make change the bottom coordinate of the uiZ contain area. The new coordinate may not be smaller than the original one. This function needs to be called after calling uiz_cntn and before calling uiz_containend.
- y2: The y coordinate of the bottom side of your custom contain area.
πTutorials
Basics 1: Basic positioning
Basics 2: Parenting system
Basics 3: Advanced positioning
Basics 4: Advanced sizing and set point
Basics 5: Canvas and containment
Basics 6: Alpha and depth
Basics 7: Using the manual and Animations
Basics 8: Object backgrounds
Basics 9: Grids
Basics 10: Framesets
Basics 11: Windows
Basics 12: Scroll bars
βοΈ Positioning
π Depth
π Structures
π Objects
obj_uiZ_3waybutton
obj_uiZ_button
obj_uiZ_checkbox
obj_uiZ_clock
obj_uiZ_colorbox
obj_uiZ_cover
obj_uiZ_drawdslist
obj_uiZ_dropdown
obj_uiZ_easybutton
obj_uiZ_frame
obj_uiZ_framescrollbar
obj_uiZ_functionbar
obj_uiZ_gradientsquare
obj_uiZ_gradientroundrect
obj_uiZ_gridlist
obj_uiZ_huesquare
obj_uiZ_loadingbar
obj_uiZ_loadingcircle
obj_uiZ_menubutton
obj_uiZ_mousemenu
obj_uiZ_radiobox
obj_uiZ_rotator
obj_uiZ_slider
obj_uiZ_scrollbar
obj_uiZ_slider_2col
obj_uiZ_slickslider
obj_uiZ_slideframe
obj_uiZ_sprbutton
obj_uiZ_spriteanimationbutton
obj_uiZ_spritecounter
obj_uiZ_stringbox
obj_uiZ_sliderstruct
obj_uiZ_surfacecanvas
obj_uiZ_sprite
obj_uiZ_square
obj_uiZ_squarebutton
obj_uiZ_swipicon
obj_uiZ_switch
obj_uiZ_tabslider
obj_uiZ_tabs
obj_uiZ_treelist
obj_uiZ_text
obj_uiZ_text_background
obj_uiZ_textarea
obj_uiZ_valuebox
π Strings
uiz_addChar
uiz_changechar
uiz_charCanHaveAddon
uiz_returnCharAddon
uiz_charIsNumber
uiz_charIsNumberOrText
uiz_getlines
uiz_gettext_contained
uiz_gettextlines_contained
uiz_getValidVariableName
uiz_isSpaceChar
uiz_lastStringChars
uiz_removeChar
uiz_replaceChars_
uiz_string_copy
uiz_string_digits
uiz_string_format
uiz_string_fromReal
uiz_string_real_getFracLength
uiz_string_real_getIntLength
uiz_string_repeat
uiz_string_replace
uiz_string_pos_at
uiz_stringUntilNewline