~ubuntu-branches/ubuntu/intrepid/ghostscript/intrepid-updates

« back to all changes in this revision

Viewing changes to src/gdevp14.c

  • Committer: Bazaar Package Importer
  • Author(s): Till Kamppeter
  • Date: 2007-08-13 21:49:58 UTC
  • mfrom: (1.1.6 upstream)
  • Revision ID: james.westby@ubuntu.com-20070813214958-ro9nbb3fmvzlr7q3
Tags: 8.61.dfsg.1~svn8187-0ubuntu1
New upstream release
o SVN snapshot rev 8187
o CJK patches from Koji Otani to fix several issues with CJK text
(should fix http://bugs.ghostscript.com/show_bug.cgi?id=689304).
These patches were also applied to ESP Ghostscript and having them
in Gutsy's GPL GS will avoide regressions against Feisty's ESP GS.
o Minor bug fixes from upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
   or contact Artifex Software, Inc.,  7 Mt. Lassen Drive - Suite A-134,
11
11
   San Rafael, CA  94903, U.S.A., +1(415)492-9861, for further information.
12
12
*/
13
 
/* $Id: gdevp14.c 8140 2007-07-25 05:12:45Z ray $       */
 
13
/* $Id: gdevp14.c 8170 2007-08-02 08:53:09Z leonardo $  */
14
14
/* Compositing devices for implementing PDF 1.4 imaging model */
15
15
 
16
16
#include "math_.h"
1936
1936
            pis->get_cmap_procs = p14dev->save_get_cmap_procs;
1937
1937
            gx_set_cmap_procs(pis, p14dev->target);
1938
1938
            /* Send image out raster data to output device */
1939
 
            p14dev->pdf14_procs->put_image(pdev, pis, p14dev->target);
 
1939
            {   /* hack: Reset lop_pdf14, which could be set by 
 
1940
                   pdf14_fill_path, pdf14_stroke_path
 
1941
                   to prevent a failure ingx_image_enum_begin. */
 
1942
                gs_imager_state new_is = *pis;
 
1943
 
 
1944
                new_is.log_op &= ~lop_pdf14;
 
1945
                p14dev->pdf14_procs->put_image(pdev, &new_is, p14dev->target);
 
1946
            }
1940
1947
            pdf14_disable_device(pdev);
1941
1948
            pdf14_close(pdev);
1942
1949
            break;
2661
2668
    p14dev->save_get_cmap_procs = pis->get_cmap_procs;
2662
2669
    pis->get_cmap_procs = pdf14_get_cmap_procs;
2663
2670
    gx_set_cmap_procs(pis, (gx_device *)p14dev);
2664
 
 
2665
2671
    code = dev_proc((gx_device *) p14dev, open_device) ((gx_device *) p14dev);
2666
2672
    *pdev = (gx_device *) p14dev;
2667
2673
    pdf14_set_marking_params((gx_device *)p14dev, pis);
3327
3333
 
3328
3334
    code = dev_proc((gx_device *) pdev, open_device) ((gx_device *) pdev);
3329
3335
    pdev->pclist_device = target;
 
3336
    pdev->my_encode_color = pdev->procs.encode_color;
 
3337
    pdev->my_decode_color = pdev->procs.decode_color;
 
3338
    pdev->my_get_color_mapping_procs = pdev->procs.get_color_mapping_procs;
 
3339
    pdev->my_get_color_comp_index = pdev->procs.get_color_comp_index;
3330
3340
    *ppdev = (gx_device *) pdev;
3331
3341
    return code;
3332
3342
}
3775
3785
                /* Re-activate the PDF 1.4 compositor */
3776
3786
                pdev->saved_target_color_info = pdev->target->color_info;
3777
3787
                pdev->target->color_info = pdev->color_info;
 
3788
                pdev->saved_target_encode_color = pdev->target->procs.encode_color;
 
3789
                pdev->saved_target_decode_color = pdev->target->procs.decode_color;
 
3790
                pdev->target->procs.encode_color = pdev->procs.encode_color = pdev->my_encode_color;
 
3791
                pdev->target->procs.decode_color = pdev->procs.decode_color = pdev->my_decode_color;
 
3792
                pdev->saved_target_get_color_mapping_procs = pdev->target->procs.get_color_mapping_procs;
 
3793
                pdev->saved_target_get_color_comp_index = pdev->target->procs.get_color_comp_index;
 
3794
                pdev->target->procs.get_color_mapping_procs = pdev->procs.get_color_mapping_procs = pdev->my_get_color_mapping_procs;
 
3795
                pdev->target->procs.get_color_comp_index = pdev->procs.get_color_comp_index = pdev->my_get_color_comp_index;
3778
3796
                pdev->save_get_cmap_procs = pis->get_cmap_procs;
3779
3797
                pis->get_cmap_procs = pdf14_get_cmap_procs;
3780
3798
                gx_set_cmap_procs(pis, dev);
3806
3824
                pdf14_clist_get_param_compressed_color_list(pdev);
3807
3825
                /* Restore the color_info for the clist device */
3808
3826
                pdev->target->color_info = pdev->saved_target_color_info;
 
3827
                pdev->target->procs.encode_color = pdev->saved_target_encode_color;
 
3828
                pdev->target->procs.decode_color = pdev->saved_target_decode_color;
 
3829
                pdev->target->procs.get_color_mapping_procs = pdev->saved_target_get_color_mapping_procs;
 
3830
                pdev->target->procs.get_color_comp_index = pdev->saved_target_get_color_comp_index;
3809
3831
                pis->get_cmap_procs = pdev->save_get_cmap_procs;
3810
3832
                gx_set_cmap_procs(pis, pdev->target);
3811
3833
                /* Disable the PDF 1.4 compositor */
3951
3973
     * filling and stroking operations.
3952
3974
     */
3953
3975
    new_is.log_op |= lop_pdf14;
3954
 
    return gx_default_fill_path(dev, &new_is, ppath, params, pdcolor, pcpath);
 
3976
    return gx_forward_fill_path(dev, &new_is, ppath, params, pdcolor, pcpath);
3955
3977
}
3956
3978
 
3957
3979
/*
3982
4004
     * filling and stroking operations.
3983
4005
     */
3984
4006
    new_is.log_op |= lop_pdf14;
3985
 
    return gx_default_stroke_path(dev, &new_is, ppath, params, pdcolor, pcpath);
 
4007
    return gx_forward_stroke_path(dev, &new_is, ppath, params, pdcolor, pcpath);
3986
4008
}
3987
4009
 
3988
4010
/*
4010
4032
    if (code < 0)
4011
4033
        return code;
4012
4034
    /* Pass text_begin to the target */
4013
 
    code = gx_default_text_begin(dev, pis, text, font, path,
 
4035
    code = gx_forward_text_begin(dev, pis, text, font, path,
4014
4036
                                pdcolor, pcpath, memory, &penum);
4015
4037
    if (code < 0)
4016
4038
        return code;
4039
4061
    if (code < 0)
4040
4062
        return code;
4041
4063
    /* Pass image to the target */
4042
 
    return gx_default_begin_image(dev, pis, pim, format, prect,
 
4064
    return gx_forward_begin_image(dev, pis, pim, format, prect,
4043
4065
                                        pdcolor, pcpath, memory, pinfo);
4044
4066
}
4045
4067
 
4064
4086
    if (code < 0)
4065
4087
        return code;
4066
4088
    /* Pass image to the target */
4067
 
    return gx_default_begin_typed_image(dev, pis, pmat,
 
4089
    return gx_forward_begin_typed_image(dev, pis, pmat,
4068
4090
                            pic, prect, pdcolor, pcpath, mem, pinfo);
4069
4091
}
4070
4092
 
4100
4122
            p14dev = (pdf14_clist_device *)(*pcdev);
4101
4123
            p14dev->saved_target_color_info = dev->color_info;
4102
4124
            dev->color_info = (*pcdev)->color_info;
 
4125
            p14dev->saved_target_encode_color = dev->procs.encode_color;
 
4126
            p14dev->saved_target_decode_color = dev->procs.decode_color;
 
4127
            dev->procs.encode_color = p14dev->procs.encode_color = p14dev->my_encode_color;
 
4128
            dev->procs.decode_color = p14dev->procs.decode_color = p14dev->my_decode_color;
 
4129
            p14dev->saved_target_get_color_mapping_procs = dev->procs.get_color_mapping_procs;
 
4130
            p14dev->saved_target_get_color_comp_index = dev->procs.get_color_comp_index;
 
4131
            dev->procs.get_color_mapping_procs = p14dev->procs.get_color_mapping_procs = p14dev->my_get_color_mapping_procs;
 
4132
            dev->procs.get_color_comp_index = p14dev->procs.get_color_comp_index = p14dev->my_get_color_comp_index;
4103
4133
            p14dev->save_get_cmap_procs = pis->get_cmap_procs;
4104
4134
            pis->get_cmap_procs = pdf14_get_cmap_procs;
4105
4135
            gx_set_cmap_procs(pis, dev);
4143
4173
     */
4144
4174
    switch (pdf14pct->params.pdf14_op) {
4145
4175
        case PDF14_PUSH_DEVICE:
 
4176
#           if 0 /* Disabled because *p14dev has no forwarding methods during the clist playback. 
 
4177
                    This code is not executed while clist writing. */
4146
4178
            p14dev->saved_target_color_info = cdev->color_info;
4147
4179
            cdev->color_info = p14dev->color_info;
 
4180
             */
 
4181
#           endif
4148
4182
            /*
4149
4183
             * If we are blending using spot colors (i.e. the output device
4150
4184
             * supports spot colors) then we need to transfer compressed
4185
4219
            }
4186
4220
            break;
4187
4221
        case PDF14_POP_DEVICE:
 
4222
#           if 0 /* Disabled because *p14dev has no forwarding methods during the clist playback. 
 
4223
                    This code is not executed while clist writing. */
4188
4224
            cdev->color_info = p14dev->saved_target_color_info;
 
4225
#           endif
4189
4226
            break;
4190
4227
        default:
4191
4228
            break;              /* do nothing for remaining ops */