예제 #1
0
void ThumbView::loadDuplicates()
{
	loadPrepare();

	emit showBusy(true);
	emit setStatus(tr("Searching duplicate images..."));

	dupImageHashes.clear();
	findDupes(true);

	if (GData::includeSubFolders) {
		QDirIterator iterator(GData::currentViewDir, QDirIterator::Subdirectories);
		while (iterator.hasNext()) {
			iterator.next();
			if (iterator.fileInfo().isDir() && iterator.fileName() != "." && iterator.fileName() != "..") {
				thumbsDir->setPath(iterator.filePath());

				findDupes(false);
				if (abortOp) {
					goto finish;
				}
			}
			QApplication::processEvents();
		}
	}

finish:
	busy = false;
	emit showBusy(false);
	return;
}
예제 #2
0
void ThumbView::load()
{
	emit showBusy(true);
	loadPrepare();
	initThumbs();
	updateThumbsCount();
	loadVisibleThumbs();

	if (GData::includeSubFolders) {
		QDirIterator iterator(GData::currentViewDir, QDirIterator::Subdirectories);
		while (iterator.hasNext()) {
			iterator.next();
			if (iterator.fileInfo().isDir() && iterator.fileName() != "." && iterator.fileName() != "..") {
				thumbsDir->setPath(iterator.filePath());

				initThumbs();
				updateThumbsCount();
				loadVisibleThumbs();

				if (abortOp) {
					goto finish;
				}
			}
			QApplication::processEvents();
		}

		QItemSelection dummy;
		handleSelectionChanged(dummy);
	}

finish:
	emit showBusy(false);
	busy = false;
	return;
}
예제 #3
0
void CPictureViewer::Zoom(float factor)
{
	dprintf(DEBUG_INFO, "CPictureViewer::Zoom %f\n",factor);
	
	showBusy(m_startx + 3, m_starty + 3, 10, 0xff, 0xff, 00);
	
	int oldx = m_CurrentPic_X;
	int oldy = m_CurrentPic_Y;
	unsigned char * oldBuf = m_CurrentPic_Buffer;
	m_CurrentPic_X = (int) (factor * m_CurrentPic_X);
	m_CurrentPic_Y = (int) (factor * m_CurrentPic_Y);
	
	m_CurrentPic_Buffer = CFrameBuffer::getInstance()->Resize(m_CurrentPic_Buffer, oldx, oldy, m_CurrentPic_X, m_CurrentPic_Y, m_scaling);
	
	if (m_CurrentPic_Buffer == oldBuf) 
	{
		// resize failed
		hideBusy ();
		return;
	}
	
	if (m_CurrentPic_X < (m_endx - m_startx))
		m_CurrentPic_XPos = (m_endx - m_startx - m_CurrentPic_X) / 2 + m_startx;
	else
		m_CurrentPic_XPos = m_startx;
	
	if (m_CurrentPic_Y < (m_endy - m_starty))
		m_CurrentPic_YPos = (m_endy - m_starty - m_CurrentPic_Y) / 2 + m_starty;
	else
		m_CurrentPic_YPos = m_starty;
	
	if (m_CurrentPic_X > (m_endx - m_startx))
		m_CurrentPic_XPan = (m_CurrentPic_X - (m_endx - m_startx)) / 2;
	else
		m_CurrentPic_XPan = 0;
	
	if (m_CurrentPic_Y > (m_endy - m_starty))
		m_CurrentPic_YPan = (m_CurrentPic_Y - (m_endy - m_starty)) / 2;
	else
		m_CurrentPic_YPan = 0;

	CFrameBuffer::getInstance()->displayRGB(m_CurrentPic_Buffer, m_CurrentPic_X, m_CurrentPic_Y, m_CurrentPic_XPan, m_CurrentPic_YPan, m_CurrentPic_XPos, m_CurrentPic_YPos);
}
예제 #4
0
EncTtsCfgGui::EncTtsCfgGui(QDialog* parent, EncTtsSettingInterface* iface, QString name)
        : QDialog(parent)
{
    m_settingInterface = iface;

    m_busyCnt=0;
    // create a busy Dialog
    m_busyDlg= new QProgressDialog("", "", 0, 0,this);
    m_busyDlg->setWindowTitle(tr("Waiting for engine..."));
    m_busyDlg->setModal(true);
    m_busyDlg->setLabel(0);
    m_busyDlg->setCancelButton(0);
    m_busyDlg->hide();
    connect(iface,SIGNAL(busy()),this,SLOT(showBusy()));
    connect(iface,SIGNAL(busyEnd()),this,SLOT(hideBusy()));

    //setup the window
    setWindowTitle(name);
    setUpWindow();
}
예제 #5
0
void CPictureViewer::Move(int dx, int dy)
{
	dprintf(DEBUG_INFO, "CPictureViewer::Move %d %d\n", dx, dy);
	
	showBusy(m_startx + 3, m_starty + 3, 10, 0x00, 0xff, 00);
	
	int xs, ys;
	xs = CFrameBuffer::getInstance()->getScreenWidth(true);
	ys = CFrameBuffer::getInstance()->getScreenHeight(true);
	
	
	m_CurrentPic_XPan += dx;

	if (m_CurrentPic_XPan + xs >= m_CurrentPic_X)
		m_CurrentPic_XPan = m_CurrentPic_X - xs - 1;
	
	if (m_CurrentPic_XPan < 0)
		m_CurrentPic_XPan = 0;
	
	m_CurrentPic_YPan += dy;
	
	if (m_CurrentPic_YPan + ys >= m_CurrentPic_Y)
		m_CurrentPic_YPan = m_CurrentPic_Y - ys - 1;
	
	if (m_CurrentPic_YPan < 0)
		m_CurrentPic_YPan = 0;
	
	if (m_CurrentPic_X < (m_endx - m_startx))
		m_CurrentPic_XPos = (m_endx - m_startx - m_CurrentPic_X) / 2 + m_startx;
	else
		m_CurrentPic_XPos = m_startx;
	
	if (m_CurrentPic_Y < (m_endy - m_starty))
		m_CurrentPic_YPos = (m_endy - m_starty - m_CurrentPic_Y) / 2 + m_starty;
	else
		m_CurrentPic_YPos = m_starty;
	
	CFrameBuffer::getInstance()->displayRGB(m_CurrentPic_Buffer, m_CurrentPic_X, m_CurrentPic_Y, m_CurrentPic_XPan, m_CurrentPic_YPan, m_CurrentPic_XPos, m_CurrentPic_YPos);
}
예제 #6
0
bool CPictureViewer::DecodeImage(const std::string & name, bool showBusySign, bool unscaled)
{
	dprintf(DEBUG_NORMAL, "CPictureViewer::DecodeImage: %s\n", name.c_str()); 
	
	/*
	if (name == m_NextPic_Name) 
	{
		return true;
	}
	*/
	
	int x;
	int y;
	int imx;
	int imy;
	
	// Show red block for "next ready" in view state
	if (showBusySign)
	{
		dprintf(DEBUG_INFO, "CPictureViewer::DecodeImage: show red block\n");
		showBusy(m_startx + 3, m_starty + 3, 10, 0xff, 00, 00);
	}
	
	CFormathandler * fh;

	if (unscaled)
		fh = fh_getsize(name.c_str (), &x, &y, INT_MAX, INT_MAX);
	else
		fh = fh_getsize(name.c_str (), &x, &y, m_endx - m_startx, m_endy - m_starty);

	if (fh) 
	{
		if (m_NextPic_Buffer != NULL) 
		{
			free (m_NextPic_Buffer);
		}
		
		m_NextPic_Buffer = (unsigned char *) malloc (x*y*3);

		if (m_NextPic_Buffer == NULL) 
		{
			printf ("CPictureViewer::DecodeImage: Error: malloc\n");
			return false;
		}
		
		dprintf(DEBUG_INFO, "CPictureViewer::DecodeImage: --->Decoding Start(%d/%d)\n", x, y);

		if (fh->get_pic(name.c_str(), &m_NextPic_Buffer, &x, &y) == FH_ERROR_OK) 
		{
			dprintf(DEBUG_INFO, "CPictureViewer::DecodeImage: <---Decoding Done\n");
			
			if ((x > (m_endx - m_startx) || y > (m_endy - m_starty)) && m_scaling != CFrameBuffer::NONE && !unscaled) 
			{
				if ((m_aspect_ratio_correction * y * (m_endx - m_startx) / x) <= (m_endy - m_starty)) 
				{
					imx = (m_endx - m_startx);
					imy = (int) (m_aspect_ratio_correction * y * (m_endx - m_startx) / x);
				} 
				else 
				{
					imx = (int) ((1.0 / m_aspect_ratio_correction) * x * (m_endy - m_starty) / y);
					imy = (m_endy - m_starty);
				}

				// resize
				m_NextPic_Buffer = CFrameBuffer::getInstance()->Resize(m_NextPic_Buffer, x, y, imx, imy, m_scaling);

				x = imx;
				y = imy;
			}
			
			m_NextPic_X = x;
			m_NextPic_Y = y;

			if (x < (m_endx - m_startx))
				m_NextPic_XPos = (m_endx - m_startx - x) / 2 + m_startx;
			else
				m_NextPic_XPos = m_startx;

			if (y < (m_endy - m_starty))
				m_NextPic_YPos = (m_endy - m_starty - y) / 2 + m_starty;
			else
				m_NextPic_YPos = m_starty;

			if (x > (m_endx - m_startx))
				m_NextPic_XPan = (x - (m_endx - m_startx)) / 2;
			else
				m_NextPic_XPan = 0;
			
			if (y > (m_endy - m_starty))
				m_NextPic_YPan = (y - (m_endy - m_starty)) / 2;
			else
				m_NextPic_YPan = 0;
		} 
		else 
		{
			printf("CPictureViewer::DecodeImage: Unable to read file !\n");
			free (m_NextPic_Buffer);
			m_NextPic_Buffer = (unsigned char *) malloc (3);

			if (m_NextPic_Buffer == NULL) 
			{
				printf ("CPictureViewer::DecodeImage: Error: malloc\n");
				return false;
			}
			memset(m_NextPic_Buffer, 0, 3);
			m_NextPic_X = 1;
			m_NextPic_Y = 1;
			m_NextPic_XPos = 0;
			m_NextPic_YPos = 0;
			m_NextPic_XPan = 0;
			m_NextPic_YPan = 0;
		}
	} 
	else 
	{
		printf ("CPictureViewer::DecodeImage: Unable to read file or format not recognized!\n");
		
		if (m_NextPic_Buffer != NULL) 
		{
			free (m_NextPic_Buffer);
		}

		m_NextPic_Buffer = (unsigned char *) malloc (3);
		if (m_NextPic_Buffer == NULL) 
		{
			printf ("CPictureViewer::DecodeImage: Error: malloc\n");
			return false;
		}

		memset(m_NextPic_Buffer, 0, 3);
		m_NextPic_X = 1;
		m_NextPic_Y = 1;
		m_NextPic_XPos = 0;
		m_NextPic_YPos = 0;
		m_NextPic_XPan = 0;
		m_NextPic_YPan = 0;
	}
	
	m_NextPic_Name = name;
	hideBusy ();

	return (m_NextPic_Buffer != NULL);
}