mirror of
https://github.com/Insality/druid.git
synced 2025-09-27 10:02:18 +02:00
Update docs
This commit is contained in:
@@ -19,6 +19,8 @@
|
||||
--
|
||||
-- • To animate a small icon on a big button panel, you can use an animation node.
|
||||
-- The trigger node name should be set as "big panel," and the animation node should be set as "small icon."
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_buttons" target="_blank"><b>Example Link</b></a>
|
||||
-- @usage
|
||||
-- local function on_button_click(self, args, button)
|
||||
-- print("Button has clicked with params: " .. args)
|
||||
|
@@ -4,6 +4,8 @@
|
||||
-- Drag have correct handling for multitouch and swap
|
||||
-- touched while dragging. Drag will be processed even
|
||||
-- the cursor is outside of node, if drag is already started
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_drag" target="_blank"><b>Example Link</b></a>
|
||||
-- @module Drag
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.drag
|
||||
|
@@ -31,6 +31,8 @@
|
||||
--
|
||||
-- • Multitouch is required for scrolling. The scroll component correctly handles
|
||||
-- touch ID swaps while dragging the scroll.
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_scroll" target="_blank"><b>Example Link</b></a>
|
||||
-- @module Scroll
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.scroll
|
||||
|
@@ -29,6 +29,8 @@
|
||||
--
|
||||
-- • You can specify a position_function for animations using the
|
||||
-- _static_grid:set_position_function(node, pos) callback. The default position function is gui.set_position().
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_grid" target="_blank"><b>Example Link</b></a>
|
||||
-- @module StaticGrid
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.static_grid
|
||||
|
@@ -29,6 +29,8 @@
|
||||
-- For better effect, use with a stencil node.
|
||||
--
|
||||
-- - const.TEXT_ADJUST.SCALE_THEN_SCROLL: Combines two modes: limited downscale first, then scroll.
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=texts_general" target="_blank"><b>Example Link</b></a>
|
||||
-- @module Text
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.text
|
||||
|
@@ -449,9 +449,9 @@ function M.set_text_scale(words, settings, scale)
|
||||
end
|
||||
|
||||
|
||||
---@param words rich_text.word[]
|
||||
---@param settings rich_text.settings
|
||||
---@param lines_metrics rich_text.lines_metrics
|
||||
---@param words druid.rich_text.word[]
|
||||
---@param settings druid.rich_text.settings
|
||||
---@param lines_metrics druid.rich_text.lines_metrics
|
||||
function M.adjust_to_area(words, settings, lines_metrics)
|
||||
local last_line_metrics = lines_metrics
|
||||
|
||||
|
@@ -1,40 +1,89 @@
|
||||
-- Copyright (c) 2022 Maksim Tuprikov <insality@gmail.com>. This code is licensed under MIT license
|
||||
|
||||
--- Druid Rich Text custom component.
|
||||
--- Druid Rich Text Custom Component.
|
||||
-- <b># Overview #</b>
|
||||
--
|
||||
-- Heavily inspired by <a href="https://github.com/britzl/defold-richtext" target="_blank">https://github.com/britzl/defold-richtext</a>.
|
||||
-- This custom component is inspired by <a href="https://github.com/britzl/defold-richtext" target="_blank">defold-richtext</a> by britzl.
|
||||
-- It uses a similar syntax for tags but currently supports fewer tags.
|
||||
--
|
||||
-- Uses the same syntax for tags, but currently have less tags support.
|
||||
-- All parameters for the Rich Text component are adjusted in the GUI scene.
|
||||
--
|
||||
-- All Rich Text params are adjusted in GUI scene
|
||||
-- This component uses GUI component template. (/druid/custom/rich_text/rich_text.gui).
|
||||
--
|
||||
-- The Rich Text template should have next scheme:
|
||||
-- You able to customize it or make your own with the next node scructure:
|
||||
--
|
||||
-- root
|
||||
--
|
||||
-- - text_prefab
|
||||
-- - text_prefab
|
||||
--
|
||||
-- - icon_prefab
|
||||
-- - icon_prefab
|
||||
--
|
||||
-- <b># Rich Text Setup #</b>
|
||||
-- • Root node size - maximum width and height of the text
|
||||
-- • Root anchor - Aligment of the Rich Text inside root node size area
|
||||
-- • Text prefab - all text params for the text node
|
||||
-- • Text prefab anchor - Anchor for each text node (you should adjust this only if animate text)
|
||||
-- • Icon prefab - all node params for the icon node
|
||||
-- • Icon prefab anchor - Anchor for each icon node (you should adjust this only if animate icon)
|
||||
--
|
||||
-- • Root node size: Set the maximum width and height of the text.
|
||||
--
|
||||
-- • Root anchor: Define the alignment of the Rich Text inside the root node size area.
|
||||
--
|
||||
-- • Text prefab: Configure all default text parameters for the text node.
|
||||
--
|
||||
-- • Text prefab anchor: Set the anchor for each text node (adjust this only if animating text).
|
||||
--
|
||||
-- • Icon prefab: Configure all default node parameters for the icon node.
|
||||
--
|
||||
-- • Icon prefab anchor: Set the anchor for each icon node (adjust this only if animating the icon).
|
||||
--
|
||||
-- <b># Notes #</b>
|
||||
--
|
||||
-- • Nested tags are supported
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=custom_rich_text" target="_blank"><b>Example Link</b></a>
|
||||
-- @usage
|
||||
-- local RichText = require("druid.custom.rich_text.rich_text")
|
||||
-- ...
|
||||
-- self.rich_text = self.druid:new(RichText, "rich_text")
|
||||
-- self.rich_text:set_text("Hello, Druid Rich Text!")
|
||||
-- @usage
|
||||
-- type druid.rich_text.word = {
|
||||
-- node: Node,
|
||||
-- relative_scale: number,
|
||||
-- color: vector4,
|
||||
-- position: vector3,
|
||||
-- offset: vector3,
|
||||
-- scale: vector3,
|
||||
-- size: vector3,
|
||||
-- metrics: druid.rich_text.metrics,
|
||||
-- pivot: Pivot,
|
||||
-- text: string,
|
||||
-- shadow: vector4,
|
||||
-- outline: vector4,
|
||||
-- font: string,
|
||||
-- image: druid.rich_text.image,
|
||||
-- default_animation: string,
|
||||
-- anchor: number,
|
||||
-- br: boolean,
|
||||
-- nobr: boolean,
|
||||
-- }
|
||||
--
|
||||
-- type druid.rich_text.word.image = {
|
||||
-- texture: string,
|
||||
-- anim: string,
|
||||
-- width: number,
|
||||
-- height: number,
|
||||
-- }
|
||||
--
|
||||
-- type druid.rich_text.lines_metrics = {
|
||||
-- text_width: number,
|
||||
-- text_height: number,
|
||||
-- lines: table<number, druid.rich_text.metrics>,
|
||||
-- }
|
||||
--
|
||||
-- type druid.rich_text.metrics = {
|
||||
-- width: number,
|
||||
-- height: number,
|
||||
-- offset_x: number|nil,
|
||||
-- offset_y: number|nil,
|
||||
-- node_size: vector3|nil @For images only,
|
||||
-- }
|
||||
-- @module RichText
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.rich_text
|
||||
@@ -79,8 +128,8 @@ end
|
||||
--- Set text for Rich Text
|
||||
-- @tparam RichText self @{RichText}
|
||||
-- @tparam string text The text to set
|
||||
-- @treturn table words
|
||||
-- @treturn table line_metrics
|
||||
-- @treturn druid.rich_text.word[] words
|
||||
-- @treturn druid.rich_text.lines_metrics line_metrics
|
||||
-- @usage
|
||||
-- • color: Change text color
|
||||
--
|
||||
|
@@ -1,6 +1,8 @@
|
||||
-- Copyright (c) 2021 Maksim Tuprikov <insality@gmail.com>. This code is licensed under MIT license
|
||||
|
||||
--- Druid checkbox component
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_checkboxes" target="_blank"><b>Example Link</b></a>
|
||||
-- @module Checkbox
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.checkbox
|
||||
|
@@ -1,6 +1,8 @@
|
||||
-- Copyright (c) 2021 Maksim Tuprikov <insality@gmail.com>. This code is licensed under MIT license
|
||||
|
||||
--- Checkbox group module
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_checkboxes" target="_blank"><b>Example Link</b></a>
|
||||
-- @module CheckboxGroup
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.checkbox_group
|
||||
|
@@ -2,6 +2,8 @@
|
||||
|
||||
--- Component to manage data for huge dataset in scroll.
|
||||
-- It requires Druid Scroll and Druid Grid (Static or Dynamic) components
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_data_list" target="_blank"><b>Example Link</b></a>
|
||||
-- @module DataList
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.data_list
|
||||
|
@@ -1,6 +1,8 @@
|
||||
-- Copyright (c) 2021 Maksim Tuprikov <insality@gmail.com>. This code is licensed under MIT license
|
||||
|
||||
--- Component to handle placing components in row
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_grid" target="_blank"><b>Example Link</b></a>
|
||||
-- @module DynamicGrid
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.dynamic_grid
|
||||
|
@@ -1,6 +1,8 @@
|
||||
-- Copyright (c) 2021 Maksim Tuprikov <insality@gmail.com>. This code is licensed under MIT license
|
||||
|
||||
--- Druid hotkey component
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_hotkey" target="_blank"><b>Example Link</b></a>
|
||||
-- @module Hotkey
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.hotkey
|
||||
|
@@ -2,6 +2,8 @@
|
||||
|
||||
--- Druid input text component.
|
||||
-- Carry on user text input
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_input" target="_blank"><b>Example Link</b></a>
|
||||
-- @author Part of code from Britzl gooey input component
|
||||
-- @module Input
|
||||
-- @within BaseComponent
|
||||
|
@@ -12,6 +12,7 @@
|
||||
--
|
||||
-- <b># Notes #</b>
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=texts_lang_text" target="_blank"><b>Example Link</b></a>
|
||||
-- @module LangText
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.lang_text
|
||||
|
@@ -1,6 +1,8 @@
|
||||
-- Copyright (c) 2021 Maksim Tuprikov <insality@gmail.com>. This code is licensed under MIT license
|
||||
|
||||
--- Layout management on node
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_layout" target="_blank"><b>Example Link</b></a>
|
||||
-- @module Layout
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.layout
|
||||
|
@@ -13,6 +13,8 @@
|
||||
--
|
||||
-- • If you have glitchy or dark texture bug with progress bar, try to disable mipmaps in your texture profiles
|
||||
--
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_progress_bar" target="_blank"><b>Example Link</b></a>
|
||||
-- @module Progress
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.progress
|
||||
|
@@ -1,6 +1,8 @@
|
||||
-- Copyright (c) 2021 Maksim Tuprikov <insality@gmail.com>. This code is licensed under MIT license
|
||||
|
||||
--- Radio group module
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_checkboxes" target="_blank"><b>Example Link</b></a>
|
||||
-- @module RadioGroup
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.radio_group
|
||||
|
@@ -1,6 +1,8 @@
|
||||
-- Copyright (c) 2021 Maksim Tuprikov <insality@gmail.com>. This code is licensed under MIT license
|
||||
|
||||
--- Druid slider component
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_sliders" target="_blank"><b>Example Link</b></a>
|
||||
-- @module Slider
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.slider
|
||||
|
@@ -3,6 +3,8 @@
|
||||
--- Component to handle swipe gestures on node.
|
||||
-- Swipe will be triggered, if swipe was started and
|
||||
-- ended on one node
|
||||
--
|
||||
-- <a href="https://insality.github.io/druid/druid/index.html?example=general_swipe" target="_blank"><b>Example Link</b></a>
|
||||
-- @module Swipe
|
||||
-- @within BaseComponent
|
||||
-- @alias druid.swipe
|
||||
|
@@ -10,6 +10,7 @@
|
||||
local const = require("druid.const")
|
||||
|
||||
local M = {}
|
||||
M._some = { pepepe = true }
|
||||
|
||||
|
||||
local function get_text_width(text_node)
|
||||
@@ -393,7 +394,14 @@ end
|
||||
--- Get text metric from GUI node.
|
||||
-- @function helper.get_text_metrics_from_node
|
||||
-- @tparam Node text_node
|
||||
-- @treturn GUITextMetrics Fields: width, height, max_ascent, max_descent
|
||||
-- @treturn pepepe
|
||||
-- @usage
|
||||
-- type GUITextMetrics = {
|
||||
-- width: number,
|
||||
-- height: number,
|
||||
-- max_ascent: number,
|
||||
-- max_descent: number
|
||||
-- }
|
||||
function M.get_text_metrics_from_node(text_node)
|
||||
local font_resource = gui.get_font_resource(gui.get_font(text_node))
|
||||
local options = {
|
||||
|
@@ -43,27 +43,29 @@
|
||||
--
|
||||
-- @module DruidInstance
|
||||
-- @alias druid_instance
|
||||
-- @see Button
|
||||
-- @see Blocker
|
||||
-- @see BackHandler
|
||||
-- @see Input
|
||||
-- @see Text
|
||||
-- @see LangText
|
||||
-- @see Timer
|
||||
-- @see Progress
|
||||
-- @see StaticGrid
|
||||
-- @see DynamicGrid
|
||||
-- @see Scroll
|
||||
-- @see Slider
|
||||
-- @see Blocker
|
||||
-- @see Button
|
||||
-- @see Checkbox
|
||||
-- @see CheckboxGroup
|
||||
-- @see RadioGroup
|
||||
-- @see Swipe
|
||||
-- @see Drag
|
||||
-- @see DataList
|
||||
-- @see Hover
|
||||
-- @see Layout
|
||||
-- @see Drag
|
||||
-- @see DynamicGrid
|
||||
-- @see Hotkey
|
||||
-- @see Hover
|
||||
-- @see Input
|
||||
-- @see LangText
|
||||
-- @see Layout
|
||||
-- @see Progress
|
||||
-- @see RadioGroup
|
||||
-- @see RichInput
|
||||
-- @see RichText
|
||||
-- @see Scroll
|
||||
-- @see Slider
|
||||
-- @see StaticGrid
|
||||
-- @see Swipe
|
||||
-- @see Text
|
||||
-- @see Timer
|
||||
|
||||
local helper = require("druid.helper")
|
||||
local class = require("druid.system.middleclass")
|
||||
|
Reference in New Issue
Block a user