Исходник [mimgui] GoogleIcons

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Автор темы
Друг
8,747
11,157
Еще один аналог fAwesome
1680634789911.png
Установка: перенести файл GoogleIcons.lua в папку moonloader\lib
Авторы модуля:
  • @СоМиК - идея​
  • @chapo - модуль​
  • @neverlane - помощь в переводе кодировок иконок (да и вообще он мой кумир)​
  • и еще 27 юзеров чата луашных сениоров​

Доступные типы шрифта:
  • GoogleIcons.FontType.Default
  • GoogleIcons.FontType.Outlined
  • GoogleIcons.FontType.Round
  • GoogleIcons.FontType.Sharp
  • GoogleIcons.FontType.TwoTone
Lua:
local GoogleIcons = require('GoogleIcons') -- подключаем модуль
local icon, iconFont -- определяем переменные в которых у нас будет хранится функция и шрифт (необязательно)

imgui.OnInitialize(function()
    icon, iconFont = GoogleIcons.LoadFont(FontType.Default, 14) -- подгружаем шрифт
    --[[
        Аргументы функции:
         - тип шрифта (необязательно)
         - размер шрифта (необязательно)
         - список подгружаемых иконок (что бы не подгружать сразу все, например {'название_иконки'}) (необязательно)
         - свой конфиг шрифта (необязательно)
    ]]
end)

-- отрисовка: imgui.Text(icon('название_иконки'))
Lua:
local imgui = require('mimgui')
local GoogleIcons = require('GoogleIcons') -- подключаем модуль

imgui.OnInitialize(function()
    icon = GoogleIcons.LoadFont(GoogleIcons.FontType.Default, 14, {'person'}) -- загружаем шрифт
end)
local frame = imgui.OnFrame(
    function() return true end,
    function(this)
        if imgui.Begin('Window') then
            imgui.Text(icon('person')) -- рисуем иконку
        end
        imgui.End()
    end
)

Lua:
local ffi = require('ffi')
local imgui = require('mimgui')
local GoogleIcons = require('GoogleIcons')
local icon, iconFont

local renderWindow = imgui.new.bool(false)
local search = imgui.new.char[64]('')

imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
    imgui.GetStyle().WindowPadding = imgui.ImVec2(5, 5)
    icon, iconFont = GoogleIcons.LoadFont(FontType.Default, 14)
end)

local frame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(this)
        local size, res = imgui.ImVec2(300, 500), imgui.ImVec2(getScreenResolution())
        imgui.SetNextWindowPos(imgui.ImVec2(res.x / 2, res.y / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(size, imgui.Cond.FirstUseEver)
        if imgui.Begin('GoogleIcons test', renderWindow) then
            local size = imgui.GetWindowSize()
            imgui.InputText('Search', search, ffi.sizeof(search))
            if imgui.BeginChild('icons', imgui.ImVec2(size.x - 10, size.y - imgui.GetCursorPosY() - 5), true) then
                imgui.Columns(2)
                imgui.Text('icon')
                imgui.NextColumn()
                imgui.Text('name')
                imgui.Columns(1)
                imgui.Separator()
                for name in pairs(GoogleIcons.Icon) do
                    if #ffi.string(search) == 0 or name:lower():find(ffi.string(search):lower()) then
                        imgui.Columns(2)
                        imgui.Text(icon(name))
                        imgui.NextColumn()
                        imgui.Text(name)
                        imgui.Columns(1)
                    end
                end
                imgui.EndChild()
            end
            imgui.End()
        end
    end
)

function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('googleicons', function()
        renderWindow[0] = not renderWindow[0]
    end)
    wait(-1)
end
 

Вложения

  • GoogleIcons.lua
    2 MB · Просмотры: 28
Последнее редактирование: