diff --git a/rtgui/cropwindow.cc b/rtgui/cropwindow.cc index 3143760b6..ebc72d35d 100755 --- a/rtgui/cropwindow.cc +++ b/rtgui/cropwindow.cc @@ -1751,17 +1751,17 @@ void CropWindow::drawStraightenGuide (Cairo::RefPtr cr) { if (y1>=image->getHeight()) y1 = image->getHeight()-1; */ - cr->set_line_width (1.5); - cr->set_source_rgb (1.0, 1.0, 1.0); - cr->move_to (x1, y1); - cr->line_to (x2, y2); + cr->set_line_width (1); + cr->set_source_rgba (1.0, 1.0, 1.0, 0.618); + cr->move_to (x1+0.5, y1+0.5); + cr->line_to (x2+0.5, y2+0.5); cr->stroke (); - cr->set_source_rgb (0.0, 0.0, 0.0); + cr->set_source_rgba (0.0, 0.0, 0.0, 0.618); std::valarray ds (1); ds[0] = 4; cr->set_dash (ds, 0); - cr->move_to (x1, y1); - cr->line_to (x2, y2); + cr->move_to (x1+0.5, y1+0.5); + cr->line_to (x2+0.5, y2+0.5); cr->stroke (); if (press_x!=action_x && press_y!=action_y) { diff --git a/rtgui/guiutils.cc b/rtgui/guiutils.cc index d32da9e7c..56a448baf 100644 --- a/rtgui/guiutils.cc +++ b/rtgui/guiutils.cc @@ -146,27 +146,27 @@ void drawCrop (Cairo::RefPtr cr, int imx, int imy, int imw, int cr->set_source_rgb (1,1,1); - cr->rectangle (imx, imy, imw, c1y); - cr->rectangle (imx, imy+c2y, imw, imh-c2y); - cr->rectangle (imx, imy+c1y, c1x, c2y-c1y+1); - cr->rectangle (imx+c2x, imy+c1y, imw-c2x, c2y-c1y+1); + cr->rectangle (imx, imy, imw+0.5, round(c1y)+0.5); + cr->rectangle (imx, round(imy+c2y)+0.5, imw+0.5, round(imh-c2y)+0.5); + cr->rectangle (imx, round(imy+c1y)+0.5, round(c1x)+0.5, round(c2y-c1y+1)+0.5); + cr->rectangle (round(imx+c2x)+0.5, round(imy+c1y)+0.5, round(imw-c2x)+0.5, round(c2y-c1y+1)+0.5); cr->fill (); // rectangle around the cropped area and guides if (cparams.guide!="None") { - double rectx1 = c1x + imx + 0.5; - double recty1 = c1y + imy + 0.5; - double rectx2 = c2x + imx + 0.5; - double recty2 = c2y + imy + 0.5; + double rectx1 = round(c1x) + imx + 0.5; + double recty1 = round(c1y) + imy + 0.5; + double rectx2 = min(round(c2x) + imx + 0.5, imx+imw-0.5); + double recty2 = min(round(c2y) + imy + 0.5, imy+imh-0.5); cr->set_line_width (1.0); - cr->set_source_rgb (1.0, 1.0, 1.0); + cr->set_source_rgba (1.0, 1.0, 1.0, 0.618); cr->move_to (rectx1, recty1); cr->line_to (rectx2, recty1); cr->line_to (rectx2, recty2); cr->line_to (rectx1, recty2); cr->line_to (rectx1, recty1); cr->stroke (); - cr->set_source_rgb (0.0, 0.0, 0.0); + cr->set_source_rgba (0.0, 0.0, 0.0, 0.618); std::valarray ds (1); ds[0] = 4; cr->set_dash (ds, 0); @@ -239,41 +239,41 @@ void drawCrop (Cairo::RefPtr cr, int imx, int imy, int imw, int // Horizontals for (size_t i=0; iset_source_rgb (1.0, 1.0, 1.0); - cr->move_to (rectx1, recty1 + (recty2-recty1) * horiz_ratios[i]); - cr->line_to (rectx2, recty1 + (recty2-recty1) * horiz_ratios[i]); + cr->set_source_rgba (1.0, 1.0, 1.0, 0.618); + cr->move_to (rectx1, recty1 + round((recty2-recty1) * horiz_ratios[i])); + cr->line_to (rectx2, recty1 + round((recty2-recty1) * horiz_ratios[i])); cr->stroke (); - cr->set_source_rgb (0.0, 0.0, 0.0); + cr->set_source_rgba (0.0, 0.0, 0.0, 0.618); std::valarray ds (1); ds[0] = 4; cr->set_dash (ds, 0); - cr->move_to (rectx1, recty1 + (recty2-recty1) * horiz_ratios[i]); - cr->line_to (rectx2, recty1 + (recty2-recty1) * horiz_ratios[i]); + cr->move_to (rectx1, recty1 + round((recty2-recty1) * horiz_ratios[i])); + cr->line_to (rectx2, recty1 + round((recty2-recty1) * horiz_ratios[i])); cr->stroke (); ds.resize (0); cr->set_dash (ds, 0); } // Verticals for (size_t i=0; iset_source_rgb (1.0, 1.0, 1.0); - cr->move_to (rectx1 + (rectx2-rectx1) * vert_ratios[i], recty1); - cr->line_to (rectx1 + (rectx2-rectx1) * vert_ratios[i], recty2); + cr->set_source_rgba (1.0, 1.0, 1.0, 0.618); + cr->move_to (rectx1 + round((rectx2-rectx1) * vert_ratios[i]), recty1); + cr->line_to (rectx1 + round((rectx2-rectx1) * vert_ratios[i]), recty2); cr->stroke (); - cr->set_source_rgb (0.0, 0.0, 0.0); + cr->set_source_rgba (0.0, 0.0, 0.0, 0.618); std::valarray ds (1); ds[0] = 4; cr->set_dash (ds, 0); - cr->move_to (rectx1 + (rectx2-rectx1) * vert_ratios[i], recty1); - cr->line_to (rectx1 + (rectx2-rectx1) * vert_ratios[i], recty2); + cr->move_to (rectx1 + round((rectx2-rectx1) * vert_ratios[i]), recty1); + cr->line_to (rectx1 + round((rectx2-rectx1) * vert_ratios[i]), recty2); cr->stroke (); ds.resize (0); cr->set_dash (ds, 0); } } else { - int corners_from[4][2]; - int corners_to[4][2]; - int mindim = min(rectx2-rectx1+1, recty2-recty1+1); + double corners_from[4][2]; + double corners_to[4][2]; + int mindim = min(rectx2-rectx1, recty2-recty1); corners_from[0][0] = rectx1; corners_from[0][1] = recty1; corners_to[0][0] = rectx1 + mindim; @@ -291,11 +291,11 @@ void drawCrop (Cairo::RefPtr cr, int imx, int imy, int imw, int corners_to[3][0] = rectx2 - mindim; corners_to[3][1] = recty2 - mindim; for (int i=0; i<4; i++) { - cr->set_source_rgb (1.0, 1.0, 1.0); + cr->set_source_rgba (1.0, 1.0, 1.0, 0.618); cr->move_to (corners_from[i][0], corners_from[i][1]); cr->line_to (corners_to[i][0], corners_to[i][1]); cr->stroke (); - cr->set_source_rgb (0.0, 0.0, 0.0); + cr->set_source_rgba (0.0, 0.0, 0.0, 0.618); std::valarray ds (1); ds[0] = 4; cr->set_dash (ds, 0);