[gs-cvs] gs/src
Igor Melichev
igor at casper.ghostscript.com
Fri Aug 30 02:30:29 PDT 2002
Update of /cvs/ghostscript/gs/src
In directory casper:/tmp/cvs-serv27968/gs/src
Modified Files:
gdevpdfg.c
Log Message:
Fix (pdfwrite): Implementing settransfer after DeviceN merge.
Index: gdevpdfg.c
===================================================================
RCS file: /cvs/ghostscript/gs/src/gdevpdfg.c,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -d -r1.23 -r1.24
--- gdevpdfg.c 22 Aug 2002 07:12:28 -0000 1.23
+++ gdevpdfg.c 30 Aug 2002 09:30:27 -0000 1.24
@@ -45,7 +45,7 @@
gx_color_value cv[4];
cv[0] = cv[1] = cv[2] = frac2cv(frac_0);
cv[3] = frac2cv(frac_1);
- color = dev_proc(pdev, map_cmyk_color)(pdev, cv);
+ color = dev_proc(pdev, map_cmyk_color)((gx_device *)pdev, cv);
}
color_set_pure(&pdev->fill_color, color);
color_set_pure(&pdev->stroke_color, color);
@@ -129,6 +129,7 @@
pdf_separation_name(gx_device_pdf *pdev, cos_value_t *pvalue,
gs_separation_name sname)
{
+ dprintf( "pdf_separation_name() unimplemented\n");
#ifdef TO_DO_DEVICEN
static const char *const snames[] = {
gs_ht_separation_name_strings
@@ -245,7 +246,7 @@
params.m = 1;
params.Domain = domain01;
params.n = 1;
- range01[0] = range0, range01[1] = 1;
+ range01[0] = range0, range01[1] = 1.0;
params.Range = range01;
params.Order = 1;
params.DataSource.access =
@@ -692,9 +693,7 @@
const gs_halftone_component *const phtc = &pmht->components[i];
cos_value_t value;
-#ifdef TO_DO_DEVICEN
code = pdf_separation_name(pdev, &value, phtc->cname);
-#endif
if (code < 0)
return code;
cos_value_write(&value, pdev);
@@ -796,25 +795,31 @@
pdf_update_transfer(gx_device_pdf *pdev, const gs_imager_state *pis,
char *trs)
{
- int i;
+ int i, pi = -1;
bool multiple = false, update = false;
gs_id transfer_ids[4];
int code = 0;
+ const gx_transfer_map *tm[4];
- dprintf( "pdf_update_transfer() unimplemented\n");
-#ifdef TO_DO_DEVICEN
- for (i = 0; i < 4; ++i) {
- transfer_ids[i] = pis->set_transfer.indexed[i]->id;
- if (pdev->transfer_ids[i] != transfer_ids[i])
- update = true;
- if (transfer_ids[i] != transfer_ids[0])
- multiple = true;
- }
+ tm[0] = pis->set_transfer.red;
+ tm[1] = pis->set_transfer.green;
+ tm[2] = pis->set_transfer.blue;
+ tm[3] = pis->set_transfer.gray;
+ for (i = 0; i < 4; ++i)
+ if (tm[i] != NULL) {
+ transfer_ids[i] = tm[i]->id;
+ if (pdev->transfer_ids[i] != tm[i]->id)
+ update = true;
+ if (pi != -1 && transfer_ids[i] != transfer_ids[pi])
+ multiple = true;
+ pi = i;
+ } else
+ transfer_ids[i] = -1;
if (update) {
int mask;
if (!multiple) {
- code = pdf_write_transfer(pdev, pis->set_transfer.indexed[0],
+ code = pdf_write_transfer(pdev, tm[pi],
"/TR", trs);
if (code < 0)
return code;
@@ -822,20 +827,20 @@
} else {
strcpy(trs, "/TR[");
mask = 0;
- for (i = 0; i < 4; ++i) {
- code = pdf_write_transfer_map(pdev,
- pis->set_transfer.indexed[i],
- 0, false, "", trs + strlen(trs));
- if (code < 0)
- return code;
- mask |= (code == 0) << i;
- }
+ for (i = 0; i < 4; ++i)
+ if (tm[i] != NULL) {
+ code = pdf_write_transfer_map(pdev,
+ tm[i],
+ 0, false, "", trs + strlen(trs));
+ if (code < 0)
+ return code;
+ mask |= (code == 0) << i;
+ }
strcat(trs, "]");
}
memcpy(pdev->transfer_ids, transfer_ids, sizeof(pdev->transfer_ids));
pdev->transfer_not_identity = mask;
}
-#endif
return code;
}
More information about the gs-cvs
mailing list