mimgui размер окна

fakelag46

Новичок
Автор темы
14
8
Версия MoonLoader
.026-beta
При открытии окна mimgui, оно открывается совершенно не в том месте и не имеет установленных размеров. Ошибок в логе никаких нет.
Исходник взял с темы https://www.blast.hk/threads/37724/
Lua:
script_name("Test")

local imgui, ffi = require 'mimgui', require 'ffi'
local new, str = imgui.new, ffi.string
local vkeys = require 'vkeys'
local encoding = require 'encoding'
encoding.default = 'CP1251'
local u8 = encoding.UTF8
local faicons = require 'fa-icons'

local bWindow = new.bool()
local colorstyle = 0

--local mainc = imgui.ImVec4(0.0, 0.52, 0.74, 1.0) -- Синий
-- local mainc = imgui.ImVec4(0.0, 0.55, 0.0, 1.0) -- Зеленый
-- local mainc = imgui.ImVec4(0.33, 0.0, 0.74, 1.0) -- Фиолетовый
-- local mainc = imgui.ImVec4(0.75, 0.70, 0.4, 1.0) -- Кукурузный
-- local mainc = imgui.ImVec4(0.92, 0.27, 0.92, 1.0) -- Розовый
local mainc = imgui.ImVec4(0.27, 0.63, 0.62, 1.0) -- Хз чо за цвет, похож не берюзовый

function main()
   if not isSampfuncsLoaded() or not isSampLoaded() then return end
   while not isSampAvailable() do wait(100) end
   while not isSampAvailable() do
      wait(1000)
   end
   while true do
      wait(0)
      if wasKeyPressed(vkeys.VK_L) then
         bWindow[0] = not bWindow[0]
      end
   end
end

function apply_custom_style()
   local style = imgui.GetStyle()
   local colors = style.Colors
   local clr = imgui.Col
   local ImVec4 = imgui.ImVec4
   style.WindowRounding = 0.5
   style.WindowTitleAlign = imgui.ImVec2(0.5, 0.5)
   style.FrameRounding = 1.0
   style.ItemSpacing = imgui.ImVec2(4.0, 4.0)
   style.ScrollbarSize = 13.0
   style.ScrollbarRounding = 0
   style.GrabMinSize = 8.0
   style.GrabRounding = 1.0
   style.WindowBorderSize = 0.0
   style.WindowPadding = imgui.ImVec2(4.0, 4.0)
   style.FramePadding = imgui.ImVec2(2.5, 3.5)
   style.ButtonTextAlign = imgui.ImVec2(0.5, 0.35)
 
 
   colors[clr.Text]                   = ImVec4(1.00, 1.00, 1.00, 1.00)
   colors[clr.TextDisabled]           = ImVec4(0.7, 0.7, 0.7, 1.0)
   colors[clr.WindowBg]               = ImVec4(0.07, 0.07, 0.07, 1.0)
   colors[clr.PopupBg]                = ImVec4(0.08, 0.08, 0.08, 0.94)
   colors[clr.Border]                 = ImVec4(mainc.x, mainc.y, mainc.z, 0.4)
   colors[clr.BorderShadow]           = ImVec4(0.00, 0.00, 0.00, 0.00)
   colors[clr.FrameBg]                = ImVec4(mainc.x, mainc.y, mainc.z, 0.7)
   colors[clr.FrameBgHovered]         = ImVec4(mainc.x, mainc.y, mainc.z, 0.4)
   colors[clr.FrameBgActive]          = ImVec4(mainc.x, mainc.y, mainc.z, 0.9)
   colors[clr.TitleBg]                = ImVec4(mainc.x, mainc.y, mainc.z, 1.0)
   colors[clr.TitleBgActive]          = ImVec4(mainc.x, mainc.y, mainc.z, 1.0)
   colors[clr.TitleBgCollapsed]       = ImVec4(mainc.x, mainc.y, mainc.z, 0.79)
   colors[clr.MenuBarBg]              = ImVec4(0.14, 0.14, 0.14, 1.00)
   colors[clr.ScrollbarBg]            = ImVec4(0.02, 0.02, 0.02, 0.53)
   colors[clr.ScrollbarGrab]          = ImVec4(mainc.x, mainc.y, mainc.z, 0.8)
   colors[clr.ScrollbarGrabHovered]   = ImVec4(0.41, 0.41, 0.41, 1.00)
   colors[clr.ScrollbarGrabActive]    = ImVec4(0.51, 0.51, 0.51, 1.00)
   colors[clr.CheckMark]              = ImVec4(mainc.x + 0.13, mainc.y + 0.13, mainc.z + 0.13, 1.00)
   colors[clr.SliderGrab]             = ImVec4(0.28, 0.28, 0.28, 1.00)
   colors[clr.SliderGrabActive]       = ImVec4(0.35, 0.35, 0.35, 1.00)
   colors[clr.Button]                 = ImVec4(mainc.x, mainc.y, mainc.z, 0.8)
   colors[clr.ButtonHovered]          = ImVec4(mainc.x, mainc.y, mainc.z, 0.63)
   colors[clr.ButtonActive]           = ImVec4(mainc.x, mainc.y, mainc.z, 1.0)
   colors[clr.Header]                 = ImVec4(mainc.x, mainc.y, mainc.z, 0.6)
   colors[clr.HeaderHovered]          = ImVec4(mainc.x, mainc.y, mainc.z, 0.43)
   colors[clr.HeaderActive]           = ImVec4(mainc.x, mainc.y, mainc.z, 0.8)
   colors[clr.Separator]              = colors[clr.Border]
   colors[clr.SeparatorHovered]       = ImVec4(0.26, 0.59, 0.98, 0.78)
   colors[clr.SeparatorActive]        = ImVec4(0.26, 0.59, 0.98, 1.00)
   colors[clr.ResizeGrip]             = ImVec4(mainc.x, mainc.y, mainc.z, 0.8)
   colors[clr.ResizeGripHovered]      = ImVec4(mainc.x, mainc.y, mainc.z, 0.63)
   colors[clr.ResizeGripActive]       = ImVec4(mainc.x, mainc.y, mainc.z, 1.0)
   colors[clr.PlotLines]              = ImVec4(0.61, 0.61, 0.61, 1.00)
   colors[clr.PlotLinesHovered]       = ImVec4(1.00, 0.43, 0.35, 1.00)
   colors[clr.PlotHistogram]          = ImVec4(0.90, 0.70, 0.00, 1.00)
   colors[clr.PlotHistogramHovered]   = ImVec4(1.00, 0.60, 0.00, 1.00)
   colors[clr.TextSelectedBg]         = ImVec4(0.26, 0.59, 0.98, 0.35)
   colors[clr.Tab]                    = ImVec4(mainc.x, mainc.y, mainc.z, 0.8)
   colors[clr.TabHovered]             = ImVec4(mainc.x, mainc.y, mainc.z, 0.63)
   colors[clr.TabActive]              = ImVec4(mainc.x, mainc.y, mainc.z, 1.0)
   colors[clr.TabUnfocused]           = ImVec4(mainc.x + 0.13, mainc.y + 0.13, mainc.z + 0.13, 1.00)
 end

-- imgui.OnInitialize() вызывается всего раз, перед первым показом рендера
imgui.OnInitialize(function()
   apply_custom_style() -- применим кастомный стиль
   local defGlyph = imgui.GetIO().Fonts.ConfigData.Data[0].GlyphRanges
   imgui.GetIO().Fonts:Clear() -- очистим шрифты
   local font_config = imgui.ImFontConfig() -- у каждого шрифта есть свой конфиг
   font_config.SizePixels = 16.0;
   font_config.GlyphExtraSpacing.x = 0.1
   -- основной шрифт
   local def = imgui.GetIO().Fonts:AddFontFromFileTTF(getFolderPath(0x14) .. '\\arialbd.ttf', font_config.SizePixels, font_config, defGlyph)
  
   local config = imgui.ImFontConfig()
   config.MergeMode = true
   config.PixelSnapH = true
   config.FontDataOwnedByAtlas = false
   config.GlyphOffset.y = 1.0 -- смещение на 1 пиксеот вниз
   local fa_glyph_ranges = new.ImWchar[3]({ faicons.min_range, faicons.max_range, 0 })
   -- иконки
   local faicon = imgui.GetIO().Fonts:AddFontFromMemoryCompressedBase85TTF(faicons.get_font_data_base85(), font_config.SizePixels, config, fa_glyph_ranges)

   imgui.GetIO().ConfigWindowsMoveFromTitleBarOnly = true
  
end)

imgui.OnFrame(function () return bWindow[0] end,
function ()
   local sizeX, sizeY = getScreenResolution()
   imgui.SetNextWindowPos(imgui.ImVec2(sizeX / 2, sizeY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
   imgui.SetNextWindowSize(imgui.ImVec2(1000, 530), imgui.Cond.FirstUseEver)
   imgui.Begin(faicons.ICON_SHIELD .. u8" Теест", bWindow, --[[imgui.WindowFl, ]]imgui.WindowFlags.NoMove--[[ + imgui.WindowFlags.AlwaysAutoResize ]]+ imgui.WindowFlags.NoResize + imgui.WindowFlags.NoCollapse)
   if imgui.BeginTabBar('Tabs') then
         if imgui.BeginTabItem(u8'Первая') then -- задаём название первой вкладки
                -- далее идёт содержимое вкладки
            imgui.Text(u8'Test!')
            imgui.Text(u8'Test123.')
            imgui.EndTabItem()
         end
         if imgui.BeginTabItem(u8'Вторая') then -- задаём название второй вкладки
            if imgui.Button('Test') then
            end
            imgui.EndTabItem()
         end
      imgui.EndTabBar()
   end
   imgui.End()
end)