~ubuntu-branches/ubuntu/utopic/ghostscript/utopic-proposed

« back to all changes in this revision

Viewing changes to cups/gdevcups.c

  • Committer: Package Import Robot
  • Author(s): Till Kamppeter
  • Date: 2013-12-04 11:38:33 UTC
  • Revision ID: package-import@ubuntu.com-20131204113833-p8rz6o9mvdcnuzne
Tags: 9.10~dfsg-0ubuntu4
debian/patches/020131127-87a7fd8-cups-pwg-raster-output-ppd-less-support.patch:
"cups" output device: Added support for PWG Raster output
("-sMediaClass=PwgRaster"), PPD-less printing with margins supplied via
"-c '<</.HWMargins[12 12 12 12] /Margins[0 0]>>setpagedevice'", and fixed
rounding float numbers to integer.

Show diffs side-by-side

added added

removed removed

Lines of Context:
3630
3630
                margins[0], margins[1], margins[2], margins[3]);
3631
3631
#endif /* CUPS_DEBUG */
3632
3632
    }
 
3633
    else
 
3634
    {
 
3635
      /* If we do not have a PPD file, make sure that margins given via the
 
3636
         input file or via something like
 
3637
         "-c '<</.HWMargins[12 12 12 12] /Margins[0 0]>>setpagedevice'"
 
3638
         on the command line are conserved */
 
3639
      margins[0] = pdev->HWMargins[0] / 72.0;
 
3640
      margins[1] = pdev->HWMargins[1] / 72.0;
 
3641
      margins[2] = pdev->HWMargins[2] / 72.0;
 
3642
      margins[3] = pdev->HWMargins[3] / 72.0;
 
3643
    }
3633
3644
 
3634
3645
   /*
3635
3646
    * Set the margins to update the bitmap size...
3733
3744
    cups->header.cupsPageSize[0] = pdev->MediaSize[1];
3734
3745
    cups->header.cupsPageSize[1] = pdev->MediaSize[0];
3735
3746
 
3736
 
    cups->header.cupsImagingBBox[0] = pdev->HWMargins[1];
3737
 
    cups->header.cupsImagingBBox[1] = pdev->HWMargins[2];
3738
 
    cups->header.cupsImagingBBox[2] = pdev->MediaSize[1] - pdev->HWMargins[3];
3739
 
    cups->header.cupsImagingBBox[3] = pdev->MediaSize[0] - pdev->HWMargins[0];
3740
 
 
3741
3747
    if ((sf = cups->header.cupsBorderlessScalingFactor) < 1.0)
3742
3748
      sf = 1.0;
3743
3749
 
3744
 
    cups->header.Margins[0] = pdev->HWMargins[1] * sf;
3745
 
    cups->header.Margins[1] = pdev->HWMargins[2] * sf;
3746
 
 
3747
 
    cups->header.PageSize[0] = pdev->MediaSize[1] * sf;
3748
 
    cups->header.PageSize[1] = pdev->MediaSize[0] * sf;
3749
 
 
3750
 
    cups->header.ImagingBoundingBox[0] = pdev->HWMargins[1] * sf;
3751
 
    cups->header.ImagingBoundingBox[1] = pdev->HWMargins[2] * sf;
3752
 
    cups->header.ImagingBoundingBox[2] = (pdev->MediaSize[1] -
3753
 
                                          pdev->HWMargins[3]) * sf;
3754
 
    cups->header.ImagingBoundingBox[3] = (pdev->MediaSize[0] -
3755
 
                                          pdev->HWMargins[0]) * sf;
 
3750
    cups->header.PageSize[0] = (pdev->MediaSize[1] * sf) + 0.5;
 
3751
    cups->header.PageSize[1] = (pdev->MediaSize[0] * sf) + 0.5;
 
3752
 
 
3753
    if (strcasecmp(cups->header.MediaClass, "PwgRaster") != 0)
 
3754
    {
 
3755
      cups->header.Margins[0] = (pdev->HWMargins[1] * sf) + 0.5;
 
3756
      cups->header.Margins[1] = (pdev->HWMargins[2] * sf) + 0.5;
 
3757
      cups->header.ImagingBoundingBox[0] = (pdev->HWMargins[1] * sf) + 0.5;
 
3758
      cups->header.ImagingBoundingBox[1] = (pdev->HWMargins[2] * sf) + 0.5;
 
3759
      cups->header.ImagingBoundingBox[2] = ((pdev->MediaSize[1] -
 
3760
                                             pdev->HWMargins[3]) * sf) + 0.5;
 
3761
      cups->header.ImagingBoundingBox[3] = ((pdev->MediaSize[0] -
 
3762
                                             pdev->HWMargins[0]) * sf) + 0.5;
 
3763
      cups->header.cupsImagingBBox[0] = pdev->HWMargins[1];
 
3764
      cups->header.cupsImagingBBox[1] = pdev->HWMargins[2];
 
3765
      cups->header.cupsImagingBBox[2] = pdev->MediaSize[1] - pdev->HWMargins[3];
 
3766
      cups->header.cupsImagingBBox[3] = pdev->MediaSize[0] - pdev->HWMargins[0];
 
3767
    }
 
3768
    else
 
3769
    {
 
3770
      for (i = 0; i < 2; i ++)
 
3771
        cups->header.Margins[i] = 0;
 
3772
      for (i = 0; i < 4; i ++)
 
3773
      {
 
3774
        cups->header.ImagingBoundingBox[i] = 0;
 
3775
        cups->header.cupsImagingBBox[i] = 0.0;
 
3776
      }
 
3777
    }
3756
3778
  }
3757
3779
  else
3758
3780
  {
3759
3781
    cups->header.cupsPageSize[0] = pdev->MediaSize[0];
3760
3782
    cups->header.cupsPageSize[1] = pdev->MediaSize[1];
3761
3783
 
3762
 
    cups->header.cupsImagingBBox[0] = pdev->HWMargins[0];
3763
 
    cups->header.cupsImagingBBox[1] = pdev->HWMargins[1];
3764
 
    cups->header.cupsImagingBBox[2] = pdev->MediaSize[0] - pdev->HWMargins[2];
3765
 
    cups->header.cupsImagingBBox[3] = pdev->MediaSize[1] - pdev->HWMargins[3];
3766
 
 
3767
3784
    if ((sf = cups->header.cupsBorderlessScalingFactor) < 1.0)
3768
3785
      sf = 1.0;
3769
3786
 
3770
 
    cups->header.Margins[0] = pdev->HWMargins[0] * sf;
3771
 
    cups->header.Margins[1] = pdev->HWMargins[1] * sf;
3772
 
 
3773
 
    cups->header.PageSize[0] = pdev->MediaSize[0] * sf;
3774
 
    cups->header.PageSize[1] = pdev->MediaSize[1] * sf;
3775
 
 
3776
 
    cups->header.ImagingBoundingBox[0] = pdev->HWMargins[0] * sf;
3777
 
    cups->header.ImagingBoundingBox[1] = pdev->HWMargins[1] * sf;
3778
 
    cups->header.ImagingBoundingBox[2] = (pdev->MediaSize[0] -
3779
 
                                          pdev->HWMargins[2]) * sf;
3780
 
    cups->header.ImagingBoundingBox[3] = (pdev->MediaSize[1] -
3781
 
                                          pdev->HWMargins[3]) * sf;
 
3787
    cups->header.PageSize[0] = (pdev->MediaSize[0] * sf) + 0.5;
 
3788
    cups->header.PageSize[1] = (pdev->MediaSize[1] * sf) + 0.5;
 
3789
 
 
3790
    if (strcasecmp(cups->header.MediaClass, "PwgRaster") != 0)
 
3791
    {
 
3792
      cups->header.Margins[0] = (pdev->HWMargins[0] * sf) + 0.5;
 
3793
      cups->header.Margins[1] = (pdev->HWMargins[1] * sf) + 0.5;
 
3794
      cups->header.ImagingBoundingBox[0] = (pdev->HWMargins[0] * sf) + 0.5;
 
3795
      cups->header.ImagingBoundingBox[1] = (pdev->HWMargins[1] * sf) + 0.5;
 
3796
      cups->header.ImagingBoundingBox[2] = ((pdev->MediaSize[0] -
 
3797
                                             pdev->HWMargins[2]) * sf) + 0.5;
 
3798
      cups->header.ImagingBoundingBox[3] = ((pdev->MediaSize[1] -
 
3799
                                             pdev->HWMargins[3]) * sf) + 0.5;
 
3800
      cups->header.cupsImagingBBox[0] = pdev->HWMargins[0];
 
3801
      cups->header.cupsImagingBBox[1] = pdev->HWMargins[1];
 
3802
      cups->header.cupsImagingBBox[2] = pdev->MediaSize[0] - pdev->HWMargins[2];
 
3803
      cups->header.cupsImagingBBox[3] = pdev->MediaSize[1] - pdev->HWMargins[3];
 
3804
    }
 
3805
    else
 
3806
    {
 
3807
      for (i = 0; i < 2; i ++)
 
3808
        cups->header.Margins[i] = 0;
 
3809
      for (i = 0; i < 4; i ++)
 
3810
      {
 
3811
        cups->header.ImagingBoundingBox[i] = 0;
 
3812
        cups->header.cupsImagingBBox[i] = 0.0;
 
3813
      }
 
3814
    }
3782
3815
  }
3783
3816
 
3784
3817
#else
3785
3818
 
3786
3819
  if (cups->landscape)
3787
3820
  {
3788
 
    cups->header.Margins[0] = pdev->HWMargins[1];
3789
 
    cups->header.Margins[1] = pdev->HWMargins[2];
3790
 
 
3791
 
    cups->header.PageSize[0] = pdev->MediaSize[1];
3792
 
    cups->header.PageSize[1] = pdev->MediaSize[0];
3793
 
 
3794
 
    cups->header.ImagingBoundingBox[0] = pdev->HWMargins[1];
3795
 
    cups->header.ImagingBoundingBox[1] = pdev->HWMargins[0];
3796
 
    cups->header.ImagingBoundingBox[2] = pdev->MediaSize[1] -
3797
 
                                         pdev->HWMargins[3];
3798
 
    cups->header.ImagingBoundingBox[3] = pdev->MediaSize[0] -
3799
 
                                         pdev->HWMargins[2];
 
3821
    cups->header.PageSize[0] = pdev->MediaSize[1] + 0.5;
 
3822
    cups->header.PageSize[1] = pdev->MediaSize[0] + 0.5;
 
3823
 
 
3824
    if (strcasecmp(cups->header.MediaClass, "PwgRaster") != 0)
 
3825
    {
 
3826
      cups->header.Margins[0] = (pdev->HWMargins[1]) + 0.5;
 
3827
      cups->header.Margins[1] = (pdev->HWMargins[2]) + 0.5;
 
3828
      cups->header.ImagingBoundingBox[0] = (pdev->HWMargins[1]) + 0.5;
 
3829
      cups->header.ImagingBoundingBox[1] = (pdev->HWMargins[0]) + 0.5;
 
3830
      cups->header.ImagingBoundingBox[2] = (pdev->MediaSize[1] -
 
3831
                                            pdev->HWMargins[3]) + 0.5;
 
3832
      cups->header.ImagingBoundingBox[3] = (pdev->MediaSize[0] -
 
3833
                                            pdev->HWMargins[2]) + 0.5;
 
3834
    }
 
3835
    else
 
3836
    {
 
3837
      for (i = 0; i < 2; i ++)
 
3838
        cups->header.Margins[i] = 0;
 
3839
      for (i = 0; i < 4; i ++)
 
3840
        cups->header.ImagingBoundingBox[i] = 0;
 
3841
    }
3800
3842
  }
3801
3843
  else
3802
3844
  {
3803
 
    cups->header.Margins[0] = pdev->HWMargins[0];
3804
 
    cups->header.Margins[1] = pdev->HWMargins[1];
3805
 
 
3806
 
    cups->header.PageSize[0] = pdev->MediaSize[0];
3807
 
    cups->header.PageSize[1] = pdev->MediaSize[1];
3808
 
 
3809
 
    cups->header.ImagingBoundingBox[0] = pdev->HWMargins[0];
3810
 
    cups->header.ImagingBoundingBox[1] = pdev->HWMargins[3];
3811
 
    cups->header.ImagingBoundingBox[2] = pdev->MediaSize[0] -
3812
 
                                         pdev->HWMargins[2];
3813
 
    cups->header.ImagingBoundingBox[3] = pdev->MediaSize[1] -
3814
 
                                         pdev->HWMargins[1];
 
3845
    cups->header.PageSize[0] = pdev->MediaSize[0] + 0.5;
 
3846
    cups->header.PageSize[1] = pdev->MediaSize[1] + 0.5;
 
3847
 
 
3848
    if (strcasecmp(cups->header.MediaClass, "PwgRaster") != 0)
 
3849
    {
 
3850
      cups->header.Margins[0] = (pdev->HWMargins[0]) + 0.5;
 
3851
      cups->header.Margins[1] = (pdev->HWMargins[1]) + 0.5;
 
3852
      cups->header.ImagingBoundingBox[0] = (pdev->HWMargins[0]) + 0.5;
 
3853
      cups->header.ImagingBoundingBox[1] = (pdev->HWMargins[3]) + 0.5;
 
3854
      cups->header.ImagingBoundingBox[2] = (pdev->MediaSize[0] -
 
3855
                                            pdev->HWMargins[2]) + 0.5;
 
3856
      cups->header.ImagingBoundingBox[3] = (pdev->MediaSize[1] -
 
3857
                                            pdev->HWMargins[1]) + 0.5;
 
3858
    }
 
3859
    else
 
3860
    {
 
3861
      for (i = 0; i < 2; i ++)
 
3862
        cups->header.Margins[i] = 0;
 
3863
      for (i = 0; i < 4; i ++)
 
3864
        cups->header.ImagingBoundingBox[i] = 0;
 
3865
    }
3815
3866
  }
3816
3867
 
3817
3868
#endif /* CUPS_RASTER_SYNCv1 */