+ case 1: /* flip horizontally */
+ if (IsWindowVisible(hSelection))
+ {
+ SelectObject(hSelDC, hSelMask);
+ StretchBlt(hSelDC, rectSel_dest[2] - 1, 0, -rectSel_dest[2], rectSel_dest[3], hSelDC,
+ 0, 0, rectSel_dest[2], rectSel_dest[3], SRCCOPY);
+ SelectObject(hSelDC, hSelBm);
+ StretchBlt(hSelDC, rectSel_dest[2] - 1, 0, -rectSel_dest[2], rectSel_dest[3], hSelDC,
+ 0, 0, rectSel_dest[2], rectSel_dest[3], SRCCOPY);
+ /* force refresh of selection contents, used also in case 2 and case 4 */
+ SendMessage(hSelection, WM_LBUTTONDOWN, 0, 0);
+ SendMessage(hSelection, WM_MOUSEMOVE, 0, 0);
+ SendMessage(hSelection, WM_LBUTTONUP, 0, 0);
+ }
+ else
+ {
+ newReversible();
+ StretchBlt(hDrawingDC, imgXRes - 1, 0, -imgXRes, imgYRes, hDrawingDC, 0, 0,
+ imgXRes, imgYRes, SRCCOPY);
+ SendMessage(hImageArea, WM_PAINT, 0, 0);
+ }
+ break;
+ case 2: /* flip vertically */
+ if (IsWindowVisible(hSelection))
+ {
+ SelectObject(hSelDC, hSelMask);
+ StretchBlt(hSelDC, 0, rectSel_dest[3] - 1, rectSel_dest[2], -rectSel_dest[3], hSelDC,
+ 0, 0, rectSel_dest[2], rectSel_dest[3], SRCCOPY);
+ SelectObject(hSelDC, hSelBm);
+ StretchBlt(hSelDC, 0, rectSel_dest[3] - 1, rectSel_dest[2], -rectSel_dest[3], hSelDC,
+ 0, 0, rectSel_dest[2], rectSel_dest[3], SRCCOPY);
+ SendMessage(hSelection, WM_LBUTTONDOWN, 0, 0);
+ SendMessage(hSelection, WM_MOUSEMOVE, 0, 0);
+ SendMessage(hSelection, WM_LBUTTONUP, 0, 0);
+ }
+ else
+ {
+ newReversible();
+ StretchBlt(hDrawingDC, 0, imgYRes - 1, imgXRes, -imgYRes, hDrawingDC, 0, 0,
+ imgXRes, imgYRes, SRCCOPY);
+ SendMessage(hImageArea, WM_PAINT, 0, 0);
+ }