// save coordinates of the current image index private void saveCoordinates() { // save all rectangles coordinates List <int> coordinates = rectangles.getAllRectCoordinates(); double resizeFactor = 0; try { resizeFactor = imageResizeFactor[currentImageIndex]; } catch (ArgumentOutOfRangeException) { calculateResizeFactor(currentImageIndex); resizeFactor = imageResizeFactor[currentImageIndex]; } int faceWidth = (mode == Constants.faceMode) ? rectangles.getRectangles()[0].Width : imagePanel.BackgroundImage.Width; // calculate real coordinates if (coordinatesList.getRow(currentImageIndex) == null) { // add new properties associated with this image, some are based on current mode lookAngleContainer.addRow(lookAngle.ToList()); faceModeSize.addRow(new List <int> { faceWidth }); coordinatesList.addRow(coordinates); realCoordinatesList.addRow(calculateRealCoordinates(coordinates)); if (mode == Constants.faceMode) { isFacePresent.Add((noFaceCB.Checked ? 1 : 0)); } if (mode == Constants.faceElementsMode) { eyesNotVisibleContainer.addRow(eyesNotVisible.ToList()); } if (mode == Constants.eyeContourMode) { eyeClosed.Add((eyeClosedCB.Checked ? 1 : 0)); } } else { // replace new properties associated with this image, some are based on current mode lookAngleContainer.replaceRow(lookAngle.ToList(), currentImageIndex); coordinatesList.replaceRow(coordinates, currentImageIndex); realCoordinatesList.replaceRow(calculateRealCoordinates(coordinates), currentImageIndex); faceModeSize.replaceRow(new List <int> { faceWidth }, currentImageIndex); if (mode == Constants.faceMode) { isFacePresent[currentImageIndex] = (noFaceCB.Checked ? 1 : 0); } if (mode == Constants.faceElementsMode) { eyesNotVisibleContainer.replaceRow(eyesNotVisible.ToList(), currentImageIndex); } if (mode == Constants.eyeContourMode) { eyeClosed[currentImageIndex] = (eyeClosedCB.Checked ? 1 : 0); } } // set look angle and checkbox states lookAngle = new int[] { 0, 0, 0, 0 }; setCheckBoxes(new CheckBox[] { leftCB, rightCB, upCB, downCB }); if (mode == Constants.faceElementsMode) { eyesNotVisible = new int[] { 0, 0 }; setEyesCheckBoxes(new CheckBox[] { LEnotVCB, REnotVCB }); } if (mode == Constants.faceMode) { noFaceCB.Checked = false; } if (mode == Constants.eyeContourMode) { eyeClosedCB.Checked = false; } }