summaryrefslogtreecommitdiff
path: root/Xprint/ps/PsInit.c
diff options
context:
space:
mode:
authorRoland Mainz <roland.mainz@nrubsig.org>2005-04-01 21:45:20 +0000
committerRoland Mainz <roland.mainz@nrubsig.org>2005-04-01 21:45:20 +0000
commit03d126081e5ba57ea2304753289528a896f3baaf (patch)
tree8f1875728f0ed7334cbeed0419ecd32bca19a9a9 /Xprint/ps/PsInit.c
parentfe37cc7e7b3036e538930c16bbdb39a7915b1685 (diff)
xc/programs/Xserver/Xprint/Init.c
xc/programs/Xserver/Xprint/ps/Imakefile xc/programs/Xserver/Xprint/ps/Ps.h xc/programs/Xserver/Xprint/ps/PsArea.c xc/programs/Xserver/Xprint/ps/PsColor.c xc/programs/Xserver/Xprint/ps/PsImageUtil.c xc/programs/Xserver/Xprint/ps/PsInit.c //bugs.freedesktop.org/show_bug.cgi?id=2879) attachment #2287 (https://bugs.freedesktop.org/attachment.cgi?id=2287) Follow-up to bugzilla #1299: Add new visuals in the Postscript DDX (including TrueColor 16bit, PseudoColor 15bit/12bpg(12 bits per R-, G-, B-channel as in PostScript Level 2 (and above) colors can have 12 bits per component (36 bit for RGB)), PseudoColor+GrayScale+StaticGray 12bit/12bpg) and switch the default visual from PseudoColor 8bit/8bpg to PseudoColor 12bit/12bpg.
Diffstat (limited to 'Xprint/ps/PsInit.c')
-rw-r--r--Xprint/ps/PsInit.c201
1 files changed, 140 insertions, 61 deletions
diff --git a/Xprint/ps/PsInit.c b/Xprint/ps/PsInit.c
index a5f7a8a25..8da6e0df4 100644
--- a/Xprint/ps/PsInit.c
+++ b/Xprint/ps/PsInit.c
@@ -121,12 +121,17 @@ InitializePsDriver(ndx, pScreen, argc, argv)
nv_1bit, /* number of 8bit visuals */
nv_8bit, /* number of 8bit visuals */
nv_12bit, /* number of 12bit visuals */
+ nv_15bit, /* number of 15bit visuals */
+ nv_16bit, /* number of 16bit visuals */
nv_24bit, /* number of 24bit visuals*/
nv_30bit; /* number of 30bit visuals*/
int nd; /* number of depths */
+ int defaultVisualIndex = -1;
VisualID *vids_1bit,
*vids_8bit,
*vids_12bit,
+ *vids_15bit,
+ *vids_16bit,
*vids_24bit,
*vids_30bit;
VisualPtr visuals;
@@ -187,15 +192,40 @@ InitializePsDriver(ndx, pScreen, argc, argv)
/* Will BitmapToRegion make any difference at all? */
pScreen->BitmapToRegion = mfbPixmapToRegion;
- visuals = (VisualPtr) xalloc(8*sizeof(VisualRec));
- depths = (DepthPtr) xalloc(8*sizeof(DepthRec));
- vids_1bit = (VisualID *)xalloc(8*sizeof(VisualID));
- vids_8bit = (VisualID *)xalloc(8*sizeof(VisualID));
- vids_12bit = (VisualID *)xalloc(8*sizeof(VisualID));
- vids_24bit = (VisualID *)xalloc(8*sizeof(VisualID));
- vids_30bit = (VisualID *)xalloc(8*sizeof(VisualID));
+ visuals = (VisualPtr) xalloc(16*sizeof(VisualRec));
+ depths = (DepthPtr) xalloc(16*sizeof(DepthRec));
+ vids_1bit = (VisualID *)xalloc(16*sizeof(VisualID));
+ vids_8bit = (VisualID *)xalloc(16*sizeof(VisualID));
+ vids_12bit = (VisualID *)xalloc(16*sizeof(VisualID));
+ vids_15bit = (VisualID *)xalloc(16*sizeof(VisualID));
+ vids_16bit = (VisualID *)xalloc(16*sizeof(VisualID));
+ vids_24bit = (VisualID *)xalloc(16*sizeof(VisualID));
+ vids_30bit = (VisualID *)xalloc(16*sizeof(VisualID));
- nv = nv_1bit = nv_8bit = nv_12bit = nv_24bit = nv_30bit = nd = 0;
+ nv = nv_1bit = nv_8bit = nv_12bit = nv_15bit = nv_16bit = nv_24bit = nv_30bit = nd = 0;
+
+#ifdef PSOUT_USE_DEEPCOLOR
+/* gisburn: 30bit TrueColor has been disabled for now since it causes problems
+ * with GLX - see https://bugs.freedesktop.org/show_bug.cgi?id=2868 ("Mesa
+ * seems to be unable to handle 30bit TrueColor visuals") for details...
+ */
+#ifdef DISABLED_FOR_NOW
+ /* TrueColor, 30bit, 10bit per R-,G-,B-gun */
+ visuals[nv].vid = FakeClientID(0);
+ visuals[nv].class = TrueColor;
+ visuals[nv].bitsPerRGBValue = 10;
+ visuals[nv].ColormapEntries = 1024;
+ visuals[nv].nplanes = 30;
+ visuals[nv].redMask = 0X3FF00000;
+ visuals[nv].greenMask = 0X000FFC00;
+ visuals[nv].blueMask = 0X000003FF;
+ visuals[nv].offsetRed = 20;
+ visuals[nv].offsetGreen = 10;
+ visuals[nv].offsetBlue = 0;
+ vids_30bit[nv_30bit] = visuals[nv].vid;
+ nv++; nv_30bit++;
+#endif /* DISABLED_FOR_NOW */
+#endif /* PSOUT_USE_DEEPCOLOR */
/* TrueColor, 24bit */
visuals[nv].vid = FakeClientID(0);
@@ -212,6 +242,86 @@ InitializePsDriver(ndx, pScreen, argc, argv)
vids_24bit[nv_24bit] = visuals[nv].vid;
nv++; nv_24bit++;
+ /* TrueColor, 16bit */
+ visuals[nv].vid = FakeClientID(0);
+ visuals[nv].class = TrueColor;
+ visuals[nv].bitsPerRGBValue = 6;
+ visuals[nv].ColormapEntries = 64;
+ visuals[nv].nplanes = 16;
+ visuals[nv].redMask = 0x0000f800;
+ visuals[nv].greenMask = 0x000007e0;
+ visuals[nv].blueMask = 0x0000001f;
+ visuals[nv].offsetRed = 11;
+ visuals[nv].offsetGreen = 5;
+ visuals[nv].offsetBlue = 0;
+ vids_16bit[nv_16bit] = visuals[nv].vid;
+ nv++; nv_16bit++;
+
+#ifdef PSOUT_USE_DEEPCOLOR
+ /* PostScript Level 2 and above, colors can have 12 bits per component
+ * (36 bit for RGB) */
+ /* PseudoColor, 15bit */
+ visuals[nv].vid = FakeClientID(0);
+ visuals[nv].class = PseudoColor;
+ visuals[nv].bitsPerRGBValue = 12;
+ visuals[nv].ColormapEntries = 32768;
+ visuals[nv].nplanes = 15;
+ visuals[nv].redMask = 0x0;
+ visuals[nv].greenMask = 0x0;
+ visuals[nv].blueMask = 0x0;
+ visuals[nv].offsetRed = 0x0;
+ visuals[nv].offsetGreen = 0x0;
+ visuals[nv].offsetBlue = 0x0;
+ vids_15bit[nv_15bit] = visuals[nv].vid;
+ nv++; nv_15bit++;
+
+ /* PseudoColor, 12bit */
+ visuals[nv].vid = FakeClientID(0);
+ visuals[nv].class = PseudoColor;
+ visuals[nv].bitsPerRGBValue = 12;
+ visuals[nv].ColormapEntries = 4096;
+ visuals[nv].nplanes = 12;
+ visuals[nv].redMask = 0x0;
+ visuals[nv].greenMask = 0x0;
+ visuals[nv].blueMask = 0x0;
+ visuals[nv].offsetRed = 0x0;
+ visuals[nv].offsetGreen = 0x0;
+ visuals[nv].offsetBlue = 0x0;
+ vids_12bit[nv_12bit] = visuals[nv].vid;
+ defaultVisualIndex = nv;
+ nv++; nv_12bit++;
+
+ /* GrayScale, 12bit, 12bit per R-,G-,B-gun */
+ visuals[nv].vid = FakeClientID(0);
+ visuals[nv].class = GrayScale;
+ visuals[nv].bitsPerRGBValue = 12;
+ visuals[nv].ColormapEntries = 4096;
+ visuals[nv].nplanes = 12;
+ visuals[nv].redMask = 0x0;
+ visuals[nv].greenMask = 0x0;
+ visuals[nv].blueMask = 0x0;
+ visuals[nv].offsetRed = 0x0;
+ visuals[nv].offsetGreen = 0x0;
+ visuals[nv].offsetBlue = 0x0;
+ vids_12bit[nv_12bit] = visuals[nv].vid;
+ nv++; nv_12bit++;
+
+ /* StaticGray, 12bit, 12bit per R-,G-,B-gun */
+ visuals[nv].vid = FakeClientID(0);
+ visuals[nv].class = StaticGray;
+ visuals[nv].bitsPerRGBValue = 12;
+ visuals[nv].ColormapEntries = 4096;
+ visuals[nv].nplanes = 12;
+ visuals[nv].redMask = 0x0;
+ visuals[nv].greenMask = 0x0;
+ visuals[nv].blueMask = 0x0;
+ visuals[nv].offsetRed = 0x0;
+ visuals[nv].offsetGreen = 0x0;
+ visuals[nv].offsetBlue = 0x0;
+ vids_12bit[nv_12bit] = visuals[nv].vid;
+ nv++; nv_12bit++;
+#endif /* PSOUT_USE_DEEPCOLOR */
+
/* PseudoColor, 8bit */
visuals[nv].vid = FakeClientID(0);
visuals[nv].class = PseudoColor;
@@ -225,6 +335,9 @@ InitializePsDriver(ndx, pScreen, argc, argv)
visuals[nv].offsetGreen = 0x0;
visuals[nv].offsetBlue = 0x0;
vids_8bit[nv_8bit] = visuals[nv].vid;
+#ifndef PSOUT_USE_DEEPCOLOR
+ defaultVisualIndex = nv;
+#endif /* !PSOUT_USE_DEEPCOLOR */
nv++; nv_8bit++;
/* GrayScale, 8bit */
@@ -272,56 +385,6 @@ InitializePsDriver(ndx, pScreen, argc, argv)
vids_1bit[nv_1bit] = visuals[nv].vid;
nv++; nv_1bit++;
-#ifdef PSOUT_USE_DEEPCOLOR
- /* TrueColor, 30bit, 10bit per R-,G-,B-gun */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = TrueColor;
- visuals[nv].bitsPerRGBValue = 10;
- visuals[nv].ColormapEntries = 1024;
- visuals[nv].nplanes = 30;
- visuals[nv].redMask = 0X3FF00000;
- visuals[nv].greenMask = 0X000FFC00;
- visuals[nv].blueMask = 0X000003FF;
- visuals[nv].offsetRed = 20;
- visuals[nv].offsetGreen = 10;
- visuals[nv].offsetBlue = 0;
- vids_30bit[nv_30bit] = visuals[nv].vid;
- nv++; nv_30bit++;
-
- /* PostScript Level 2 and above, colors can have 12 bits per component
- * (36 bit for RGB) */
-
- /* GrayScale, 12bit, 12bit per R-,G-,B-gun */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = GrayScale;
- visuals[nv].bitsPerRGBValue = 12;
- visuals[nv].ColormapEntries = 4096;
- visuals[nv].nplanes = 12;
- visuals[nv].redMask = 0x0;
- visuals[nv].greenMask = 0x0;
- visuals[nv].blueMask = 0x0;
- visuals[nv].offsetRed = 0x0;
- visuals[nv].offsetGreen = 0x0;
- visuals[nv].offsetBlue = 0x0;
- vids_12bit[nv_12bit] = visuals[nv].vid;
- nv++; nv_12bit++;
-
- /* StaticGray, 12bit, 12bit per R-,G-,B-gun */
- visuals[nv].vid = FakeClientID(0);
- visuals[nv].class = StaticGray;
- visuals[nv].bitsPerRGBValue = 12;
- visuals[nv].ColormapEntries = 4096;
- visuals[nv].nplanes = 12;
- visuals[nv].redMask = 0x0;
- visuals[nv].greenMask = 0x0;
- visuals[nv].blueMask = 0x0;
- visuals[nv].offsetRed = 0x0;
- visuals[nv].offsetGreen = 0x0;
- visuals[nv].offsetBlue = 0x0;
- vids_12bit[nv_12bit] = visuals[nv].vid;
- nv++; nv_12bit++;
-#endif /* PSOUT_USE_DEEPCOLOR */
-
if( nv_30bit > 0 )
{
depths[nd].depth = 30;
@@ -338,6 +401,22 @@ InitializePsDriver(ndx, pScreen, argc, argv)
nd++;
}
+ if( nv_16bit > 0 )
+ {
+ depths[nd].depth = 16;
+ depths[nd].numVids = nv_16bit;
+ depths[nd].vids = vids_16bit;
+ nd++;
+ }
+
+ if( nv_15bit > 0 )
+ {
+ depths[nd].depth = 15;
+ depths[nd].numVids = nv_15bit;
+ depths[nd].vids = vids_15bit;
+ nd++;
+ }
+
if( nv_12bit > 0 )
{
depths[nd].depth = 12;
@@ -362,9 +441,9 @@ InitializePsDriver(ndx, pScreen, argc, argv)
nd++;
}
- /* Defaul visual is 8bit PseudoColor */
- defaultVisual = visuals[1].vid;
- rootDepth = visuals[1].nplanes;
+ /* Defaul visual is 12bit PseudoColor */
+ defaultVisual = visuals[defaultVisualIndex].vid;
+ rootDepth = visuals[defaultVisualIndex].nplanes;
#ifdef GLXEXT
{