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); } }