Commit 64122ae0 authored by Maciej Suminski's avatar Maciej Suminski

Stroked lines in Cairo GAL are always drawn at least 1 pixel wide.

parent 9374d642
...@@ -496,7 +496,12 @@ void CAIRO_GAL::SetLineWidth( double aLineWidth ) ...@@ -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 ) ...@@ -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 );
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment