Commit f2f0f66a authored by Alexander Zakamaldin's avatar Alexander Zakamaldin Committed by Dick Hollenbeck
Browse files

This bug is not evident for the first glance because most PS viewers fix this issue and print well.

But when using raw printing (for linux - 'lpr some_file.ps') the bug gets out.

Alexander.
parent 9e980d91
Loading
Loading
Loading
Loading
+21 −9
Original line number Diff line number Diff line
@@ -375,9 +375,14 @@ bool PS_PLOTTER::start_plot( FILE* fout )
    // The coordinates of the lower left corner of the boundary
    // box need to be "rounded down", but the coordinates of its
    // upper right corner need to be "rounded up" instead.
    wxSize  psPaperSize = paper_size;

    if( !pageInfo.IsPortrait() )
        psPaperSize.Set( paper_size.y, paper_size.x );

    fprintf( output_file, "%%%%BoundingBox: 0 0 %d %d\n",
            (int) ceil( paper_size.y * CONV_SCALE ),
            (int) ceil( paper_size.x * CONV_SCALE ) );
            (int) ceil( psPaperSize.x * CONV_SCALE ),
            (int) ceil( psPaperSize.y * CONV_SCALE ) );

    // Specify the size of the sheet and the name associated with that size.
    // (If the "User size" option has been selected for the sheet size,
@@ -393,19 +398,25 @@ bool PS_PLOTTER::start_plot( FILE* fout )
    // the order in which they are specified is not wrong!)
    // Also note pageSize is given in mils, not in internal units and must be
    // converted to internal units.
    wxSize pageSize = pageInfo.GetSizeMils();
    wxSize psPageSize = pageInfo.GetSizeMils();

    if( !pageInfo.IsPortrait() )
        psPageSize.Set( pageInfo.GetHeightMils(), pageInfo.GetWidthMils() );

    if( pageInfo.IsCustom() )
        fprintf( output_file, "%%%%DocumentMedia: Custom %d %d 0 () ()\n",
                 wxRound( pageSize.y * 10 * CONV_SCALE ),
                 wxRound( pageSize.x * 10 * CONV_SCALE ) );
                 wxRound( psPageSize.x * 10 * CONV_SCALE ),
                 wxRound( psPageSize.y * 10 * CONV_SCALE ) );

    else  // a standard paper size
        fprintf( output_file, "%%%%DocumentMedia: %s %d %d 0 () ()\n",
                 TO_UTF8( pageInfo.GetType() ),
                 wxRound( pageSize.y * 10 * CONV_SCALE ),
                 wxRound( pageSize.x * 10 * CONV_SCALE ) );
                 wxRound( psPageSize.x * 10 * CONV_SCALE ),
                 wxRound( psPageSize.y * 10 * CONV_SCALE ) );

    if( pageInfo.IsPortrait() )
        fprintf( output_file, "%%%%Orientation: Portrait\n" );
    else
        fprintf( output_file, "%%%%Orientation: Landscape\n" );

    fprintf( output_file, "%%%%EndComments\n" );
@@ -426,6 +437,7 @@ bool PS_PLOTTER::start_plot( FILE* fout )
    // (If support for creating postscript files with a portrait orientation
    // is ever provided, determine whether it would be necessary to provide
    // an "else" command and then an appropriate "sprintf" command here.)
    if( !pageInfo.IsPortrait() )
        fprintf( output_file, "%d 0 translate 90 rotate\n", paper_size.y );

    // Apply the scale adjustments