All pastes #904518 Raw Edit

Unnamed

public text v1 · immutable
·published 2008-02-15 00:18 UTC
rendered paste body
package org.ucam.ned.foxtrot.engine.renderer;

import com.trolltech.qt.gui.QGraphicsPixmapItem;
import com.trolltech.qt.gui.QGraphicsSceneMouseEvent;
import com.trolltech.qt.gui.QPixmap;
import com.trolltech.qt.gui.QColor;
import org.ucam.ned.foxtrot.components.*;

public class FoxtrotButton extends QGraphicsPixmapItem
{
    QPixmap m_depressedImage;
    QPixmap m_defaultImage;
    Button m_button;

    public FoxtrotButton(Button b)
    {
        m_button = b;

        m_defaultImage = new QPixmap(b.getDefaultImage().getSource());
        m_depressedImage = new QPixmap(b.getDepressedImage().getSource());
        
        setAlpha(m_defaultImage, b.getOpacity());
        setAlpha(m_depressedImage, b.getOpacity());
        
        setPixmap(m_defaultImage);
        setPos(b.getX(), b.getY());
    }

    @Override
    public void mousePressEvent(QGraphicsSceneMouseEvent arg0)
    {
        setPixmap(m_depressedImage);

        m_button.fireButton();
    }

    @Override
    public void mouseReleaseEvent(QGraphicsSceneMouseEvent arg0)
    {
        setPixmap(m_defaultImage);
    }
    
    private void setAlpha(QPixmap pixmap, int opacity)
    {
        QPixmap alphaMask = new QPixmap(pixmap.width(), pixmap.height());
        opacity = (opacity * 255) / 100;
        alphaMask.fill(new QColor(opacity | opacity << 8 | opacity << 16));

        // and apply it
        pixmap.setAlphaChannel(alphaMask);
    }
}