You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
120 lines
3.9 KiB
120 lines
3.9 KiB
//
|
|
// C++ Implementation: komposegltaskwidget
|
|
//
|
|
// Description:
|
|
//
|
|
//
|
|
// Author: Hans Oischinger <oisch@sourceforge.net>, (C) 2004
|
|
//
|
|
// Copyright: See COPYING file that comes with this distribution
|
|
//
|
|
//
|
|
#include "komposegltaskwidget.h"
|
|
|
|
#include "komposetaskmanager.h"
|
|
#include "komposetask.h"
|
|
#include "komposelayout.h"
|
|
#include <kdebug.h>
|
|
|
|
#include <tqgl.h>
|
|
#include <tqimage.h>
|
|
|
|
|
|
|
|
KomposeGLTaskWidget::KomposeGLTaskWidget(KomposeTask *t, TQObject *parent, KomposeLayout *l, const char *name)
|
|
: KomposeGLWidget(parent, l),
|
|
task(t)
|
|
{
|
|
TQImage img = task->getScreenshot().convertToImage();
|
|
img = img.smoothScale( 256, 256, TQImage::ScaleMin );
|
|
tex = TQGLWidget::convertToGLFormat( img );
|
|
glGenTextures(1, &texture);
|
|
glBindTexture(GL_TEXTURE_2D, texture);
|
|
/* glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); // cheap scaling when image bigger than texture
|
|
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); // cheap scaling when image smalled than texture*/
|
|
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S, GL_REPEAT);
|
|
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T, GL_REPEAT);
|
|
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // scale linearly when image bigger than texture
|
|
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); // scale linearly when image smalled than texture
|
|
|
|
glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE );
|
|
|
|
glTexImage2D( GL_TEXTURE_2D, 0, 3, 256, 256, 0,
|
|
GL_RGBA, GL_UNSIGNED_BYTE, tex.bits() );
|
|
|
|
|
|
|
|
|
|
connect( t, TQ_SIGNAL( closed() ), this, TQ_SLOT( slotTaskDestroyed() ) );
|
|
connect( t, TQ_SIGNAL( stateChanged() ), this, TQ_SLOT( draw() ) );
|
|
}
|
|
|
|
|
|
KomposeGLTaskWidget::~KomposeGLTaskWidget()
|
|
{}
|
|
|
|
void KomposeGLTaskWidget::slotTaskDestroyed()
|
|
{
|
|
disconnect( task, TQ_SIGNAL( closed() ), this, TQ_SLOT( slotTaskDestroyed() ) );
|
|
disconnect( task, TQ_SIGNAL( stateChanged() ), this, TQ_SLOT( draw() ) );
|
|
if (KomposeTaskManager::instance()->hasActiveView())
|
|
{
|
|
this->parent()->removeChild( this );
|
|
}
|
|
}
|
|
|
|
int KomposeGLTaskWidget::getHeightForWidth ( int w ) const
|
|
{
|
|
tqDebug("KomposeGLTaskWidget::getHeightForWidth()");
|
|
return task->getHeightForWidth(w);
|
|
}
|
|
|
|
int KomposeGLTaskWidget::getWidthForHeight ( int h ) const
|
|
{
|
|
tqDebug("KomposeGLTaskWidget::getWidthForHeight()");
|
|
return task->getWidthForHeight(h);
|
|
}
|
|
|
|
double KomposeGLTaskWidget::getAspectRatio()
|
|
{
|
|
tqDebug("KomposeGLTaskWidget::getAspectRatio()");
|
|
return task->getAspectRatio();
|
|
}
|
|
|
|
void KomposeGLTaskWidget::draw()
|
|
{
|
|
KomposeGLWidget::draw();
|
|
tqDebug("KomposeGLTaskWidget::draw() - %d,%d %dx%d", getRect().x(), getRect().y(), getRect().width(), getRect().height());
|
|
glColor3f(1.0f, 0.0f, 0.0f);
|
|
|
|
glBindTexture(GL_TEXTURE_2D, texture);
|
|
|
|
/* glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
|
glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );*/
|
|
glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL);
|
|
glEnable( GL_TEXTURE_2D );
|
|
|
|
// glTexImage2D( GL_TEXTURE_2D, 0, 3, tex.width(), tex.height(), 0,
|
|
// GL_RGBA, GL_UNSIGNED_BYTE, tex.bits() );
|
|
// tqDebug("KomposeGLTaskWidget::draw() - tex: %dx%d", tex.width(), tex.height() );
|
|
|
|
glBegin( GL_QUADS );
|
|
glTexCoord2f(0.0, 0.0);
|
|
glVertex2i( getRect().x(), getRect().y() );
|
|
glTexCoord2f(0.0, 1.0);
|
|
glVertex2i( getRect().x(), getRect().y() + getRect().height() );
|
|
glTexCoord2f(1.0, 1.0);
|
|
glVertex2i( getRect().x() + getRect().width(), getRect().y() + getRect().height() );
|
|
glTexCoord2f(1.0, 0.0);
|
|
glVertex2i( getRect().x() + getRect().width(), getRect().y() );
|
|
glEnd();
|
|
|
|
glDisable( GL_TEXTURE_2D );
|
|
/*
|
|
glRasterPos2i (getRect().x(), getRect().y());
|
|
glPixelZoom( (GLfloat)(getSize().width())/(GLfloat)(tex.width()), (GLfloat)(getSize().height())/(GLfloat)(tex.height()) );
|
|
glDrawPixels(tex.width(), tex.height(), GL_RGBA, GL_UNSIGNED_BYTE, tex.bits() ); */
|
|
}
|
|
|
|
#include "komposegltaskwidget.moc"
|