#include <clickableLabel.h>
Inheritance diagram for ClickableLabel:


Definition at line 23 of file clickableLabel.h.
Public Slots | |
| void | setEnabled (bool val) |
| void | setPixmap (const QPixmap &p) |
Signals | |
| void | clicked () |
Public Member Functions | |
| ClickableLabel (QWidget *parent=0, const char *name=0) | |
| void | setInvisible (bool val) |
Protected Member Functions | |
| void | paintEvent (QPaintEvent *e) |
| double buffer to avoid flicker | |
| void | enterEvent (QEvent *) |
| void | leaveEvent (QEvent *) |
| void | mouseMoveEvent (QMouseEvent *e) |
| void | mousePressEvent (QMouseEvent *) |
| void | mouseReleaseEvent (QMouseEvent *e) |
Private Member Functions | |
| void | setActive () |
| void | setHighlighted () |
Private Attributes | |
| QPixmap | defaultPixmap |
| bool | enabled |
| bool | invisible |
| bool | pressed |
|
||||||||||||
|
Definition at line 22 of file clickableLabel.cpp. References enabled, invisible, and pressed. 00022 : QLabel( parent, name ) 00023 { 00024 setWFlags(WRepaintNoErase); 00025 enabled = true; 00026 invisible = false; 00027 pressed = false; 00028 setMouseTracking(true); 00029 }
|
|
|
Referenced by mouseReleaseEvent(). |
|
|
Definition at line 117 of file clickableLabel.cpp. References setActive(), and setHighlighted(). 00118 {
00119 if( !enabled ) return;
00120
00121 if( pressed )
00122 setActive();
00123 else
00124 setHighlighted();
00125 }
|
|
|
Definition at line 109 of file clickableLabel.cpp. References defaultPixmap, and setPixmap(). 00110 {
00111 if( !enabled ) return;
00112
00113 if(!defaultPixmap.isNull())
00114 { this->setPixmap( defaultPixmap ); }
00115 }
|
|
|
Definition at line 89 of file clickableLabel.cpp. References defaultPixmap, height, setActive(), setHighlighted(), setPixmap(), and width. 00090 {
00091 if( !enabled ) return;
00092
00093 QPoint p = e->pos();
00094 if( p.x() < 0 || p.y() < 0 ||
00095 p.x() >= width() || p.y() >= height() )
00096 {
00097 if(!defaultPixmap.isNull())
00098 { this->setPixmap( defaultPixmap ); }
00099 }
00100 else
00101 {
00102 if( pressed )
00103 setActive();
00104 else
00105 setHighlighted();
00106 }
00107 }
|
|
|
Definition at line 185 of file clickableLabel.cpp. References pressed, and setActive().
|
|
|
Definition at line 193 of file clickableLabel.cpp. References clicked(), defaultPixmap, enabled, height, pressed, setPixmap(), and width. 00194 {
00195 if( !enabled || invisible ) return;
00196
00197 pressed = false;
00198
00199 //restore pixmap if exists
00200 if(!defaultPixmap.isNull())
00201 { this->setPixmap( defaultPixmap ); }
00202
00203 //if mouse still over button emit clicked signal
00204 if(e->pos().x() >= 0 &&
00205 e->pos().y() >= 0 &&
00206 e->pos().x() < width() &&
00207 e->pos().y() < height() )
00208 {
00209 emit clicked();
00210 }
00211 }
|
|
|
double buffer to avoid flicker
Definition at line 31 of file clickableLabel.cpp. References buffer. 00032 {
00033 QPixmap buffer( size() );
00034 QPainter bufferPainter( &buffer );
00035 bufferPainter.setClipping(false);
00036 bufferPainter.fillRect( buffer.rect(), backgroundBrush() );
00037
00038 //only paint label if not invisible
00039 if( !invisible )
00040 { bufferPainter.drawImage( QPoint(0,0), pixmap()->convertToImage() ); }
00041
00042 bufferPainter.end();
00043 bitBlt( this, e->rect().x(), e->rect().y(),
00044 &buffer,
00045 e->rect().x(), e->rect().y(),
00046 e->rect().width(), e->rect().height() );
00047 }
|
|
|
Definition at line 127 of file clickableLabel.cpp. References b, and defaultPixmap. Referenced by enterEvent(), mouseMoveEvent(), and mousePressEvent(). 00128 {
00129 if( ! defaultPixmap.isNull() )
00130 {
00131 //create darkened out version
00132 QImage newImage = defaultPixmap.convertToImage();
00133 QImage alpha = newImage.createAlphaMask();
00134 int x, y;
00135 for(y=0; y<newImage.height(); y++)
00136 {
00137 for(x=0; x<newImage.width(); x++)
00138 {
00139 if(alpha.isNull() || qRed(alpha.pixel(x,y)) == 0)
00140 {
00141 QRgb rgb = newImage.pixel(x,y);
00142 int r = (int) (0.5*qRed(rgb));
00143 int g = (int) (0.5*qGreen(rgb));
00144 int b = (int) (0.5*qBlue(rgb));
00145 rgb = qRgb( r, g, b );
00146 newImage.setPixel( x, y, rgb );
00147 }
00148 }
00149 }
00150 QPixmap newPixmap;
00151 newPixmap.convertFromImage( newImage );
00152 QLabel::setPixmap( newPixmap );
00153 }
00154 }
|
|
|
Definition at line 56 of file clickableLabel.cpp. References defaultPixmap, enabled, and setPixmap(). Referenced by EditingInterface::EditingInterface(), EditingInterface::handleSelectionChanged(), EditingInterface::setPhoto(), and MosaicOptionsDialog::updateImagesFromOptions(). 00057 {
00058 if( val )
00059 setPixmap( defaultPixmap );
00060 else if( ! defaultPixmap.isNull() )
00061 {
00062 //create over exposed gray version
00063 QImage newImage = defaultPixmap.convertToImage();
00064 QImage alpha = newImage.createAlphaMask();
00065 int x, y;
00066 for(y=0; y<newImage.height(); y++)
00067 {
00068 for(x=0; x<newImage.width(); x++)
00069 {
00070 if(alpha.isNull() || qRed(alpha.pixel(x,y)) == 0)
00071 {
00072 QRgb rgb = newImage.pixel(x,y);
00073 int gray = qGray(rgb);
00074 double alpha = 0.5;
00075 gray = (int) (alpha*gray+(1-alpha)*255);
00076 rgb = qRgb( gray, gray, gray );
00077 newImage.setPixel( x, y, rgb );
00078 }
00079 }
00080 }
00081 QPixmap newPixmap;
00082 newPixmap.convertFromImage( newImage );
00083 QLabel::setPixmap( newPixmap );
00084 }
00085
00086 enabled = val;
00087 }
|
|
|
Definition at line 156 of file clickableLabel.cpp. References b, and defaultPixmap. Referenced by enterEvent(), and mouseMoveEvent(). 00157 {
00158 if( ! defaultPixmap.isNull() )
00159 {
00160 //create slightly darker version
00161 QImage newImage = defaultPixmap.convertToImage();
00162 QImage alpha = newImage.createAlphaMask();
00163 int x, y;
00164 for(y=0; y<newImage.height(); y++)
00165 {
00166 for(x=0; x<newImage.width(); x++)
00167 {
00168 if(alpha.isNull() || qRed(alpha.pixel(x,y)) == 0)
00169 {
00170 QRgb rgb = newImage.pixel(x,y);
00171 int r = (int) (0.8*qRed(rgb));
00172 int g = (int) (0.8*qGreen(rgb));
00173 int b = (int) (0.8*qBlue(rgb));
00174 rgb = qRgba( r, g, b, qAlpha(rgb) );
00175 newImage.setPixel( x, y, rgb );
00176 }
00177 }
00178 }
00179 QPixmap newPixmap;
00180 newPixmap.convertFromImage( newImage );
00181 QLabel::setPixmap( newPixmap );
00182 }
00183 }
|
|
|
Definition at line 213 of file clickableLabel.cpp. References invisible. Referenced by SaveDialog::nextScreenShot(), SaveDialog::prevScreenShot(), EditingInterface::setPhoto(), EditingInterface::showNextPrevFirstLastPhoto(), and SaveDialog::updatePreview(). 00214 {
00215 //avoid repainting when not necessary
00216 if( invisible != val)
00217 {
00218 invisible = val;
00219 repaint();
00220 }
00221 }
|
|
|
Definition at line 49 of file clickableLabel.cpp. References defaultPixmap. Referenced by EditingInterface::EditingInterface(), GrainEditor::GrainEditor(), HistogramEditor::HistogramEditor(), leaveEvent(), MosaicOptionsDialog::MosaicOptionsDialog(), mouseMoveEvent(), mouseReleaseEvent(), SaveDialog::SaveDialog(), and setEnabled(). 00050 {
00051 defaultPixmap = p;
00052 defaultPixmap.detach();
00053 QLabel::setPixmap( p );
00054 }
|
|
|
Definition at line 56 of file clickableLabel.h. Referenced by leaveEvent(), mouseMoveEvent(), mouseReleaseEvent(), setActive(), setEnabled(), setHighlighted(), and setPixmap(). |
|
|
Definition at line 57 of file clickableLabel.h. Referenced by ClickableLabel(), mouseReleaseEvent(), and setEnabled(). |
|
|
Definition at line 58 of file clickableLabel.h. Referenced by ClickableLabel(), and setInvisible(). |
|
|
Definition at line 59 of file clickableLabel.h. Referenced by ClickableLabel(), mousePressEvent(), and mouseReleaseEvent(). |
1.3.9.1