bool imageCompareBase::filterKeyEvent(QKeyEvent* event) { if (event->key() == Qt::Key_Left && (event->modifiers() & Qt::ShiftModifier) && leftImage() && leftScroll_->isVisible() && curImage() != leftImage()) { setCur(leftImage()); return true; } else if (event->key() == Qt::Key_Right && (event->modifiers() & Qt::ShiftModifier) && rightImage() && rightScroll_->isVisible() && curImage() != rightImage()) { setCur(rightImage()); return true; } else if ((event->key() == Qt::Key_Up || event->key() == Qt::Key_Down) && (event->modifiers() & Qt::ShiftModifier) && (leftScroll_->isVisible() || rightScroll_->isVisible())) { comboBox* curBox = (leftImage() == curImage()) ? leftImageListBox_ : rightImageListBox_; if (event->key() == Qt::Key_Up) { curBox->moveToPreviousItem(); } else { curBox->moveToNextItem(); } return true; } return false; }
void imageCompareBase::zoom(int zoomIncrement) { // we do it the squareWindow way to avoid code duplication const bool zoomIn = (zoomIncrement > 0); activeLabel()->setImageSize(curImage()->zoom(zoomIn)); if (dualZoomingActive()) { inactiveLabel()->setImageSize(curImage()->scaledSize()); } updateZoomValues(); }
QSize imageCompareBase::curImageViewSize() const { imageLabelBase* curLabel = NULL; if (curImage() == leftImage()) { curLabel = leftLabel(); } else if (curImage() == rightImage()) { curLabel = rightLabel(); } return curLabel ? QSize(curLabel->width(), curLabel->height()) : QSize(); }
// Function taken from Haiku ShowImage, // function originally written by Michael Pfeiffer bool SlideShowSaver::FindNextImage(entry_ref *in_current, entry_ref *out_image, bool next, bool rewind) { // ASSERT(next || !rewind); BEntry curImage(in_current); entry_ref entry, *ref; BDirectory parent; BList entries; bool found = false; int32 cur; if (curImage.GetParent(&parent) != B_OK) return false; while (parent.GetNextRef(&entry) == B_OK) { if (entry != *in_current) { entries.AddItem(new entry_ref(entry)); } else { // insert current ref, so we can find it easily after sorting entries.AddItem(in_current); } } entries.SortItems(CompareEntries); cur = entries.IndexOf(in_current); // ASSERT(cur >= 0); // remove it so FreeEntries() does not delete it entries.RemoveItem(in_current); if (next) { // find the next image in the list if (rewind) cur = 0; // start with first for (; (ref = (entry_ref*)entries.ItemAt(cur)) != NULL; cur ++) { if (IsImage(ref)) { found = true; *out_image = (const entry_ref)*ref; break; } } } else { // find the previous image in the list cur --; for (; cur >= 0; cur --) { ref = (entry_ref*)entries.ItemAt(cur); if (IsImage(ref)) { found = true; *out_image = (const entry_ref)*ref; break; } } } FreeEntries(&entries); return found; }
void imageCompareBase::zoomToHelper(const zoomHelperFunction& helperFunction) { leftRightAccessor first(this, curImage()); // process first leftRightAccessor second(this, inactiveImage()); const QSize scrollSize = activeScroll()->maximumViewportSize(); // always process the non-original image first [this is a nod to // squareImage in order to prevent code duplication] if (dualZoomingAction_->isChecked() && curImage()->isOriginal()) { first = leftRightAccessor(this, inactiveImage()); second = leftRightAccessor(this, curImage()); } helperFunction(first, scrollSize); if (dualZoomingAction_->isChecked()) { const QSize newSize = second.image()->setScaledSize(first.label()->size()); second.label()->setImageSize(newSize); } updateZoomValues(); }
void imageCompareBase::updateScrollValues() { if (dualScrollingAction_->isChecked() && leftImage() && rightImage()) { if (curImage() == leftImage()) { processLHSBsliderMoved(leftScroll_->horizontalScrollBar()->value()); processLVSBsliderMoved(leftScroll_->verticalScrollBar()->value()); } else { processRHSBsliderMoved(rightScroll_->horizontalScrollBar()->value()); processRVSBsliderMoved(rightScroll_->verticalScrollBar()->value()); } } }
QSize imageCompareBase::getSavedImageSize(const imagePtr newImage) { if (curImage() == rightImage()) { if (rightImageSavedSize_.isEmpty()) { rightImageSavedSize_ = newImage->scaledSize(); } return rightImageSavedSize_; } else { if (leftImageSavedSize_.isEmpty()) { leftImageSavedSize_ = newImage->scaledSize(); } return leftImageSavedSize_; } }
void loadPrevious() { if((cur_file_ptr)==0) { printf("Reach the front.\n"); return; } clearCur(); cur_file_ptr --; im = cvLoadImage(file_set[cur_file_ptr],1); loadDataFile(file_set[cur_file_ptr]); cur_point_ptr = 0; showImage(); curImage(); }
void loadNext() { if((cur_file_ptr+1)==file_set_cnt) { printf("Reach the last.\n"); return; } clearCur(); cur_file_ptr ++; im = cvLoadImage(file_set[cur_file_ptr],1); loadDataFile(file_set[cur_file_ptr]); cur_point_ptr =0 ; showImage(); curImage(); }
void imageCompareBase::processDualScrollingChange(bool dualScrollingOn) { setScrollingConnections(dualScrollingOn); if (dualScrollingOn) { if (leftImage() && rightImage()) { if (curImage() == leftImage()) { processLHSBsliderMoved(leftScroll_->horizontalScrollBar()->value()); processLVSBsliderMoved(leftScroll_->verticalScrollBar()->value()); } else { processRHSBsliderMoved(rightScroll_->horizontalScrollBar()->value()); processRVSBsliderMoved(rightScroll_->verticalScrollBar()->value()); } } } }
void imageCompareBase::switchSides() { if (leftScroll_->isVisible() && rightScroll_->isVisible()) { imagePtr tmpContainer; tmpContainer = rightImage(); setRightImage(leftImage()); setLeftImage(tmpContainer); // setCur on both sides to make sure they're both updated if (curImage() == leftImage()) { setCur(rightImage()); setCur(leftImage()); } else { setCur(leftImage()); setCur(rightImage()); } } }