LINUX.ORG.RU

Сообщения Sullome

 

DeaDBeeF, обложки альбомов, для которых нет обложки

По умолчанию используется изображение виниловой пластинки с надписью «Неизвестный альбом».

Есть ли способ изменить эту заглушку или вообще сделать так, чтобы она не показывалась?

 ,

Sullome
()

Не понимаю, как работает cairo_mask_surface

Собственно, суть проблемы в названии.

Копаюсь с настройкой awesome. Для одного конкретного imagebox'а переопределяю функцию отрисовки, и всё неплохо за одним минусом — cairo отказывается использовать маску.

Вероятно, проблема в моей голове или в каком-то невозможно базовом понятии. Поиск ничего не дал, чтение документации тоже.

-- Это обычная функция отрисовки imagebox'а, за исключением конечных строк
function l_box:draw (wibox, cr, width, height)
    if not self._image then return end

    cr:save()

    if not self.resize_forbidden then
        -- Let's scale the image so that it fits into (width, height)
        local w = self._image:get_width()
        local h = self._image:get_height()
        local aspect = width / w
        local aspect_h = height / h
        if aspect > aspect_h then aspect = aspect_h end

        cr:scale(aspect, aspect)
    end

    -- Вот тут и изменения
    if l_box._mask then -- _mask — это просто true/false
        cr:set_source_rgb(0, 0, 0) -- источник заполняем чёрным
        cr:mask_surface(self._image,0,0) -- как я думаю, это должно заставить cairo
                                         -- закрасить чёрным только те области,
                                         -- которые в self._image непрозрачны. Но почему-то,
                                         -- если добавить эту строчку, ничего не рисуется вообще.
                                         -- Если убрать, то, как и надо, область изображения
                                         -- целиком заливается чёрным.
        cr:paint()
    else
        cr:set_source_surface(self._image, 0, 0)
        cr:paint()
    end

    cr:restore()
end
Очень хочется, чтобы всё таки эта маска заработала, однако куда копать, уже просто не знаю.

 , , , lgi,

Sullome
()

RSS подписка на новые темы