void afterProcess(Userdata *userdata) { static int started = 0; if (processClick(userdata->click) == -1) { // Released button started = 0; } else { // Valid button //printClick(userdata->click); printf("\n"); //printDrag(userdata->drag); printf("\n"); if (started == 0) { started = 1; userdata->drag.start = userdata->click.origin; } userdata->drag.end = userdata->click.origin; userdata->circle = makeCircleFromDrag(userdata->drag, CV_RGB(255, 255, 255), 2); } //printCircle(userdata->circle); printf("\n"); //drawCircle(userdata->input[0], userdata->circle); drawSquare(userdata->input[0], userdata->square); //printf("\n"); int width = userdata->size.width; int height = userdata->size.height; //userdata->square = makeSquare(cvPoint(width * 3 / 4 - 40, height/2 - 40), cvSize(80, 80), CV_RGB(255, 255, 255), 2); drawSquare(userdata->input[0], makeSquare(cvPoint(width * 3 / 4 - 40, height-80), cvSize(80, 80), CV_RGB(255, 255, 255), 2)); }
// Square の左右だけ変換 inline Square inverseFile(const Square sq) { return makeSquare(inverse(makeFile(sq)), makeRank(sq)); }
Square makeSquareFromDrag(Drag drag, CvScalar color, int thickness) { int X = drag.end.x - drag.start.x; int Y = drag.end.y - drag.start.y; return makeSquare(drag.start, cvSize(X, Y), color, thickness); }