Исходник GifPlayerLua

SR_team

like pancake
Автор темы
BH Team
4,804
6,475
А вот и правильный ответ, правда на не правильный вопрос. Но даваяй для задающих поясню:
  1. OS - Linux, тут это уже писали
  2. Дистрибутив - Arch, но это совершенно не важно, все важное в следующих пунктах
  3. DE - KDE, это в нем такие темы оформления и анимации
  4. Верхняя панель - Latte Dock. Она хоть и является частью проекта KDE, но по умаолчанию в KDE ипользуются панели от plasma, которые менее функциональны
 

SR_team

like pancake
Автор темы
BH Team
4,804
6,475
анимации можно приделать такие к чему угодно, главное чтобы не тайлинговый WM был, это анимации из Compiz, они у меня на крысе стояли когда-то
компиз все еще течет, а kwin не течет.Есть аналог компиза для вяленого - wayfire, но вяленый такое себе.
 
  • Нравится
Реакции: БеzликиЙ

SR_team

like pancake
Автор темы
BH Team
4,804
6,475

Вложения

  • GifPlayerLua.zip
    52.2 KB · Просмотры: 15
  • Нравится
Реакции: kin4stat и MrBidloKoder

Cosmo

Известный
Друг
653
2,724
@SR_team теперь краш при непосредственном использовании
Лог: http://crash.sr.team/index.php?uid=...-be138e75-f4a7cd1f-207ca6e8-082c7502-02a5c3ba
Код с которым крашит:
Lua:
local gif = require 'GifPlayerLua'
local player = gif.GifPlayer.new(getWorkingDirectory()..'\\resource\\cat_jam.gif')
local sw, sh = getScreenResolution()

function onD3DPresent()
    local CATJAM = {
        texture = player:ProcessPlay(),
        w = player:GetWidth(),
        h = player:GetHeight()
    }

    local X = 0
    local Y = sh - CATJAM.h
    renderDrawTexture(CATJAM.texture, X, Y, CATJAM.w, CATJAM.h) -- если закоментить эту строку, то краш исчезает

    if player:IsLoopEnded() then
        player:ResetLoop()
    end
end
 

SR_team

like pancake
Автор темы
BH Team
4,804
6,475
если закоментить эту строку, то краш исчезает
А где можно посмотреть на реализацию renderDrawTexture?

UPD. Я там кастую указатель на текстуру к size_t, потому что иначе sol не хотел его передавать в lua. мб типы не совпадают?
 

RTD

Потужно
Модератор
399
470
Lua:
player:IsLoopEnded()
всегда возращает true возвращает, так и должно быть? Хотя при этом видимо неявно все равно вызывается ResetLoop() в конце, потому что этот код работает
Lua:
local imgui = require("mimgui")
local ffi = require("ffi")
local gif = require("GifPlayerLua")

local player = gif.GifPlayer.new(script.this.directory.."\\cat.gif")
local size = imgui.ImVec2(player:GetWidth(), player:GetHeight())
imgui.OnFrame(function() return true end, function()
    if imgui.Begin("gif", nil, imgui.WindowFlags.AlwaysAutoResize) then
        imgui.Image(ffi.cast("void*", player:ProcessPlay()), size)
        -- if player:IsLoopEnded() then
        --     player:ResetLoop()
        -- end
        imgui.End()
    end
end)
А где можно посмотреть на реализацию renderDrawTexture?
У фипа в исходниках, судя по тому что возвращает renderLoadTextureFromFileInMemory, то sol.sol::detail::unique_usertype<lua_render::LuaDxResource<CD3DTexture> >

Еще загрузка гифки фризит игру, есть готовый фикс? И хотелось бы возможность загружать гиф из файла в памяти как тут
 
Последнее редактирование:

Salik_Davince

Известный
38
3
Можно примерный гиф с выстрелами на видео, с исходником если можно?