Beispiel #1
0
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;
}
Beispiel #2
0
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();
}
Beispiel #3
0
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();
}
Beispiel #4
0
// 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;
}
Beispiel #5
0
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();
}
Beispiel #6
0
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());
    }
  }
}
Beispiel #7
0
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_;
  }
}
Beispiel #8
0
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();
}
Beispiel #9
0
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();
}
Beispiel #10
0
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());
      }
    }
  }
}
Beispiel #11
0
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());
    }
  }
}