Stroked lines in Cairo GAL are always drawn at least 1 pixel wide.
This commit is contained in:
parent
9374d642bf
commit
64122ae057
|
@ -496,7 +496,12 @@ void CAIRO_GAL::SetLineWidth( double aLineWidth )
|
||||||
storePath();
|
storePath();
|
||||||
|
|
||||||
lineWidth = aLineWidth;
|
lineWidth = aLineWidth;
|
||||||
cairo_set_line_width( cairoImage, aLineWidth );
|
|
||||||
|
// Make lines appear at least 1 pixel wide, no matter of zoom
|
||||||
|
double x = 1.0, y = 1.0;
|
||||||
|
cairo_device_to_user_distance( cairoImage, &x, &y );
|
||||||
|
double minWidth = std::min( fabs( x ), fabs( y ) );
|
||||||
|
cairo_set_line_width( cairoImage, std::max( aLineWidth, minWidth ) );
|
||||||
|
|
||||||
if( isGrouping )
|
if( isGrouping )
|
||||||
{
|
{
|
||||||
|
@ -716,9 +721,16 @@ void CAIRO_GAL::DrawGroup( int aGroupNumber )
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case CMD_SET_LINE_WIDTH:
|
case CMD_SET_LINE_WIDTH:
|
||||||
cairo_set_line_width( cairoImage, it->arguments[0] );
|
{
|
||||||
|
// Make lines appear at least 1 pixel wide, no matter of zoom
|
||||||
|
double x = 1.0, y = 1.0;
|
||||||
|
cairo_device_to_user_distance( cairoImage, &x, &y );
|
||||||
|
double minWidth = std::min( fabs( x ), fabs( y ) );
|
||||||
|
cairo_set_line_width( cairoImage, std::max( it->arguments[0], minWidth ) );
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
||||||
case CMD_STROKE_PATH:
|
case CMD_STROKE_PATH:
|
||||||
cairo_set_source_rgb( cairoImage, strokeColor.r, strokeColor.g, strokeColor.b );
|
cairo_set_source_rgb( cairoImage, strokeColor.r, strokeColor.g, strokeColor.b );
|
||||||
cairo_append_path( cairoImage, it->cairoPath );
|
cairo_append_path( cairoImage, it->cairoPath );
|
||||||
|
|
Loading…
Reference in New Issue