summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/vp.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/vp.cpp')
-rw-r--r--TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/vp.cpp924
1 files changed, 924 insertions, 0 deletions
diff --git a/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/vp.cpp b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/vp.cpp
new file mode 100644
index 00000000000..1ebdcf57beb
--- /dev/null
+++ b/TAO/orbsvcs/tests/AVStreams/mpeg/source/mpeg_client/vp.cpp
@@ -0,0 +1,924 @@
+/* $Id$ */
+
+/*
+ * Copyright (c) 1992 The Regents of the University of California.
+ * All rights reserved.
+ *
+ * Permission to use, copy, modify, and distribute this software and its
+ * documentation for any purpose, without fee, and without written agreement is
+ * hereby granted, provided that the above copyright notice and the following
+ * two paragraphs appear in all copies of this software.
+ *
+ * IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR
+ * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
+ * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF
+ * CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ * AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS
+ * ON AN "AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO
+ * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
+ */
+
+/* Copyright (c) 1995 Oregon Graduate Institute of Science and Technology
+ * P.O.Box 91000-1000, Portland, OR 97291, USA;
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of O.G.I. not be used in advertising or
+ * publicity pertaining to distribution of the software without specific,
+ * written prior permission. O.G.I. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as is"
+ * without express or implied warranty.
+ *
+ * O.G.I. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
+ * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
+ * O.G.I. BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY
+ * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
+ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ * Author: Shanwei Cen
+ * Department of Computer Science and Engineering
+ * email: scen@cse.ogi.edu
+ */
+
+// FUZZ: disable check_for_math_include
+
+#include "ace/OS.h"
+#include <stdio.h>
+#include <errno.h>
+#include <signal.h>
+#include <stdlib.h>
+/*
+#include <sys/types.h>
+#include <sys/socket.h>
+*/
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Intrinsic.h>
+
+#ifdef SH_MEM /* this is already defined in video.h */
+#include <sys/ipc.h>
+#include <sys/shm.h>
+#include <X11/extensions/XShm.h>
+#endif
+
+#include "include/common.h"
+#include "newproto.h"
+#include "global.h"
+#include "dither.h"
+#include "video.h"
+
+#include <math.h>
+#include "proto.h"
+#include "ui.h"
+
+ACE_RCSID(mpeg_client, vp, "$Id$")
+
+/* Declaration of global variable to hold dither info. */
+
+extern int ditherType;
+
+/* Structures used by the X server. */
+
+extern Display *display;
+extern Colormap cmap;
+
+static int cmdSocket = -1;
+static int win_width, win_height;
+static Window window;
+static GC gc;
+
+static int usingShm = 0;
+#ifdef SH_MEM
+static XShmSegmentInfo shminfo; /* Segment info. */
+#endif
+static XImage *ximage = NULL;
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * InitColor --
+ *
+ * Initialized lum, cr, and cb quantized range value arrays.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None.
+ *
+ *--------------------------------------------------------------
+ */
+
+void
+InitColor()
+{
+ int i;
+
+ for (i=0; i<LUM_RANGE; i++) {
+ lum_values[i] = ((i * 256) / (LUM_RANGE)) + (256/(LUM_RANGE*2));
+ }
+
+ for (i=0; i<CR_RANGE; i++) {
+ cr_values[i] = ((i * 256) / (CR_RANGE)) + (256/(CR_RANGE*2));
+ }
+
+ for (i=0; i<CB_RANGE; i++) {
+ cb_values[i] = ((i * 256) / (CB_RANGE)) + (256/(CB_RANGE*2));
+ }
+
+}
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * ConvertColor --
+ *
+ * Given a l, cr, cb tuple, converts it to r,g,b.
+ *
+ * Results:
+ * r,g,b values returned in pointers passed as parameters.
+ *
+ * Side effects:
+ * None.
+ *
+ *--------------------------------------------------------------
+ */
+
+static void
+ConvertColor(unsigned char l, unsigned char cr, unsigned char cb,
+ unsigned char *r, unsigned char *g, unsigned char *b)
+{
+ double fl, fcr, fcb, fr, fg, fb;
+
+ fl = (double) l;
+ fcr = ((double) cr) - 128.0;
+ fcb = ((double) cb) - 128.0;
+
+
+ fr = fl + (1.40200 * fcb);
+ fg = fl - (0.71414 * fcb) - (0.34414 * fcr);
+ fb = fl + (1.77200 * fcr);
+
+ if (fr < 0.0) fr = 0.0;
+ else if (fr > 255.0) fr = 255.0;
+
+ if (fg < 0.0) fg = 0.0;
+ else if (fg > 255.0) fg = 255.0;
+
+ if (fb < 0.0) fb = 0.0;
+ else if (fb > 255.0) fb = 255.0;
+
+ *r = (unsigned char) fr;
+ *g = (unsigned char) fg;
+ *b = (unsigned char) fb;
+
+}
+
+#ifdef SH_MEM
+
+int gXErrorFlag = 0;
+
+int HandleXError(Display * dpy, XErrorEvent * event)
+{
+ gXErrorFlag = 1;
+ return 0;
+}
+
+void InstallXErrorHandler()
+{
+ int HandleXError(Display *,XErrorEvent *);
+
+ XSetErrorHandler(HandleXError);
+ XFlush(display);
+}
+
+void DeInstallXErrorHandler()
+{
+ XSetErrorHandler(NULL);
+ XFlush(display);
+}
+#endif
+
+/*
+ *--------------------------------------------------------------
+ *
+ * MakeWindow --
+ *
+ * Create X Window for image display
+ *
+ * Results:
+ * Read the code.
+ *
+ * Side effects:
+ * None.
+ *
+ *--------------------------------------------------------------
+ */
+
+#ifdef SH_MEM
+int CompletionType = -1;
+#endif
+
+// int XShmGetEventBase (Display*);
+
+static void
+MakeWindow(void)
+{
+
+ XSizeHints hint;
+ unsigned int fg, bg;
+ char *hello = "MPEG Play";
+ int screen;
+
+ if (ditherType == NO_DITHER) return;
+/*
+ UICreate();
+*/
+
+#ifdef SH_MEM
+ if (shmemFlag && display != NULL)
+ {
+ if (!XShmQueryExtension(display))
+ {
+ shmemFlag = 0;
+ fprintf(stderr, "VP: Shared memory not supported, Reverting to normal Xlib.\n");
+ }
+ else
+ {
+ shmemFlag = 1;
+ /*
+ fprintf(stderr, "VP: try using shared mem, but STOPPED temporarily.\n");
+ shmemFlag = 0;
+ */
+ }
+ }
+ else if (shmemFlag)
+ {
+ fprintf(stderr, "VP unexpected: display is NULL.\n");
+ ACE_OS::exit (1);
+ }
+ if(shmemFlag)
+ CompletionType = /*XShmGetEventBase(display) +*/ ShmCompletion;
+#endif
+
+ screen = DefaultScreen (display);
+
+ /* Fill in hint structure */
+
+ hint.x = 0;
+ hint.y = 0;
+ hint.width = 150;
+ hint.height = 150;
+ hint.flags = PPosition | PSize;
+
+ /* Get some colors */
+
+ bg = WhitePixel (display, screen);
+ fg = BlackPixel (display, screen);
+
+ /* Make the window */
+
+ if (ditherType == FULL_COLOR_DITHER) {
+ window = CreateFullColorWindow (display, hint.x, hint.y, hint.width, hint.height);
+ if (window == 0) {
+ fprintf (stderr, "-color option only valid on full color display\n");
+ exit (-1);
+ }
+ } else if (ditherType == MONO_DITHER || ditherType == MONO_THRESHOLD) {
+ window = XCreateSimpleWindow (display,
+ MonitorWindow(),
+ hint.x, hint.y,
+ hint.width, hint.height,
+ 4, fg, bg);
+ UISetwin(window);
+ } else {
+ XVisualInfo vinfo;
+
+ if (!XMatchVisualInfo (display, screen, 8, PseudoColor,
+ &vinfo)) {
+
+ if (!XMatchVisualInfo(display, screen, 8, GrayScale,
+ &vinfo)) {
+ fprintf(stderr, "It seems you have a true-color/mono monitor,\n");
+ fprintf(stderr, "please try 'vcr -dither color' or 'vcr -dither mono'\n");
+ exit(-1);
+ }
+ }
+
+ window = XCreateSimpleWindow (display,
+ MonitorWindow(),
+ hint.x, hint.y,
+ hint.width, hint.height,
+ 4, fg, bg);
+ UISetwin(window);
+ }
+
+ XSelectInput(display, window, StructureNotifyMask);
+
+ /* Tell other applications about this window */
+
+ XSetStandardProperties (display, window, hello, hello, None, NULL, 0, &hint);
+
+ /* Map window. */
+
+ XMapWindow(display, window);
+
+ /* Wait for map. */
+ while(1) {
+ XEvent xev;
+
+ XNextEvent(display, &xev);
+ if(xev.type == MapNotify && xev.xmap.event == window)
+ break;
+ }
+ XSelectInput(display, window, NoEventMask);
+}
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * InitDisplay --
+ *
+ * Initialized display, sets up colormap, etc.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None.
+ *
+ *--------------------------------------------------------------
+ */
+
+
+static char window_name[64];
+#include <string.h>
+
+void InitDisplay(char *name)
+{
+
+ int ncolors = LUM_RANGE*CB_RANGE*CR_RANGE;
+ XColor xcolor;
+ int i, lum_num, cr_num, cb_num;
+ unsigned char r, g, b;
+ Colormap dcmap;
+
+ if (ditherType == NO_DITHER) return;
+
+ strcpy(window_name, name);
+
+ MakeWindow();
+
+ gc = XCreateGC(display, window, 0, 0);
+
+ dcmap = cmap = XDefaultColormap(display, DefaultScreen(display));
+
+ xcolor.flags = DoRed | DoGreen | DoBlue;
+
+ retry_alloc_colors:
+ for (i=0; i<ncolors; i++) {
+
+ lum_num = (i / (CR_RANGE*CB_RANGE))%LUM_RANGE;
+ cr_num = (i / CB_RANGE)%CR_RANGE;
+ cb_num = i % CB_RANGE;
+
+ ConvertColor(lum_values[lum_num], cr_values[cr_num], cb_values[cb_num], &r, &g, &b);
+
+ xcolor.red = r * 256;
+ xcolor.green = g * 256;
+ xcolor.blue = b * 256;
+
+ if(XAllocColor(display, cmap, &xcolor) == 0 && cmap == dcmap) {
+ int j;
+ unsigned long tmp_pixel;
+ XWindowAttributes xwa;
+
+ Fprintf(stderr, "Using private colormap.\n");
+
+ /* Free colors. */
+ for(j = 0; j < i; j ++) {
+ tmp_pixel = pixel[j];
+ XFreeColors(display, cmap, &tmp_pixel, 1, 0);
+ }
+
+ XGetWindowAttributes(display, window, &xwa);
+ cmap = XCreateColormap(display, window, xwa.visual, AllocNone);
+ XSetWindowColormap(display, window, cmap);
+ UISetColormap();
+
+ goto retry_alloc_colors;
+ }
+ pixel[i] = xcolor.pixel;
+ }
+
+ /*
+ Fprintf(stderr, "Pixel values allocated for colormap:");
+ for (i = 0; i < ncolors; i++) {
+ if (!(i % 20)) Fprintf(stderr, "\n");
+ Fprintf(stderr, "%3d ", pixel[i]);
+ }
+ */
+
+ ximage = NULL;
+}
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * InitGrayDisplay --
+ *
+ * Initialized display for gray scale dither.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None.
+ *
+ *--------------------------------------------------------------
+ */
+
+#define NUM_COLORS 128
+
+void InitGrayDisplay(char *name)
+{
+ int ncolors = NUM_COLORS;
+ XColor xcolor;
+ int i;
+ Colormap dcmap;
+
+ MakeWindow();
+
+ gc = XCreateGC(display, window, 0, 0);
+
+ dcmap = cmap = XDefaultColormap(display, DefaultScreen(display));
+
+ xcolor.flags = DoRed | DoGreen | DoBlue;
+
+ retry_alloc_grays:
+ for (i=0; i<ncolors; i++) {
+
+ xcolor.red = (i*2) * 256;
+ xcolor.green = (i*2) * 256;
+ xcolor.blue = (i*2) * 256;
+
+ if(XAllocColor(display, cmap, &xcolor) == 0 && cmap == dcmap) {
+ int j;
+ unsigned long tmp_pixel;
+ XWindowAttributes xwa;
+
+ Fprintf(stderr, "Using private colormap.\n");
+
+ /* Free colors. */
+ for(j = 0; j < i; j ++) {
+ tmp_pixel = pixel[j*2];
+ XFreeColors(display, cmap, &tmp_pixel, 1, 0);
+ }
+
+ XGetWindowAttributes(display, window, &xwa);
+ cmap = XCreateColormap(display, window, xwa.visual, AllocNone);
+ XSetWindowColormap(display, window, cmap);
+ UISetColormap();
+
+ goto retry_alloc_grays;
+ }
+ pixel[(i*2)] = xcolor.pixel;
+ pixel[(i*2)+1] = xcolor.pixel;
+ }
+
+ ximage = NULL;
+}
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * InitMonoDisplay --
+ *
+ * Initialized display for monochrome dither.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None.
+ *
+ *--------------------------------------------------------------
+ */
+
+void InitMonoDisplay(char *name)
+{
+ XGCValues xgcv;
+
+ MakeWindow();
+
+ xgcv.background = BlackPixel(display, DefaultScreen(display));
+ xgcv.foreground = WhitePixel(display, DefaultScreen(display));
+
+ gc = XCreateGC(display, window, GCForeground | GCBackground, &xgcv);
+
+ ximage = NULL;
+}
+
+
+/*
+ *--------------------------------------------------------------
+ *
+ * InitColorDisplay --
+ *
+ * Initialized display for full color output.
+ *
+ * Results:
+ * None.
+ *
+ * Side effects:
+ * None.
+ *
+ *--------------------------------------------------------------
+ */
+
+void InitColorDisplay(char *name)
+{
+
+ MakeWindow();
+
+ gc = XCreateGC(display, window, 0, 0);
+ ximage = NULL;
+}
+
+
+static void ClearWindow(void)
+{
+ int size;
+ char * data;
+ if ((ditherType == Twox2_DITHER) || (ditherType == FULL_COLOR_DITHER))
+ size = win_width * win_height * 4;
+ else
+ size = win_width * win_height;
+ data = (char *)ACE_OS::malloc(size);
+ if (data != NULL) {
+ memset(data, 0, size);
+ ximage->data = data;
+ XPutImage(display, window, gc, ximage, 0, 0, 0, 0,
+ ximage->width, ximage->height);
+ XFlush(display);
+ ximage->data = NULL;
+ ACE_OS::free (data);
+ }
+}
+
+
+void VPresizeWindow(int h, int w)
+{
+ int i;
+ char dummy;
+ Visual *fc_visual;
+ int depth;
+ static int ph = 0;
+ static int pw = 0;
+
+ if (ph == h && pw == w) {
+ ClearWindow();
+ return;
+ }
+ ph = h;
+ pw = w;
+
+ /* Excerpt from man page of XDestroyImage(3X11):
+ Note that when the image is created using XCreateImage(),
+ XGetImage(), or XSubImage(), the destroy procedure that the
+ XDestroyImage function call frees both the image structure
+ and the data pointed to by the image structure. */
+ if (ximage != NULL) ximage->data = NULL;
+
+ if (ditherType == NO_DITHER) return;
+
+ win_width = ((w + 15)>>4)<<4;
+ win_height = ((h + 15)>>4)<<4;
+
+ i = (ditherType == Twox2_DITHER) ? 2 : 1;
+ XResizeWindow(display, window, w*i, h*i);
+ UIMinsize(w*i, h*i);
+
+ /* ximage allocate/resize */
+
+#ifdef SH_MEM
+ if (shmemFlag && display != NULL)
+ {
+ InstallXErrorHandler();
+ }
+#endif
+
+ if (ximage != NULL)
+ {
+#ifdef SH_MEM
+ if (shmemFlag && usingShm == 1)
+ {
+ XDestroyImage(ximage);
+ ximage = NULL;
+ }
+ else
+#endif
+ {
+ XDestroyImage(ximage);
+ ximage = NULL;
+ }
+ }
+#ifdef SH_MEM
+ if (shmemFlag)
+ {
+ /*
+ Visual *fc_visual;
+ int depth;
+ Visual *FindFullColorVisual();
+ */
+ usingShm = 1;
+
+ if (ditherType == Twox2_DITHER)
+ {
+ ximage = XShmCreateImage(display, None, 8, ZPixmap, NULL,
+ &(shminfo), win_width * 2, win_height * 2);
+ }
+ else if (ditherType == FULL_COLOR_DITHER)
+ {
+ fc_visual = FindFullColorVisual(display, &depth);
+ ximage = XShmCreateImage(display, fc_visual, depth, ZPixmap,
+ NULL, &(shminfo), win_width, win_height);
+ }
+ else if (ditherType == MONO_DITHER || ditherType == MONO_THRESHOLD)
+ {
+ ximage = XShmCreateImage(display, None, 1, XYBitmap,
+ NULL, &(shminfo), win_width, win_height);
+ }
+ else
+ {
+ ximage = XShmCreateImage(display, None, 8, ZPixmap, NULL,
+ &(shminfo), win_width, win_height);
+ }
+ if (ximage == NULL)
+ {
+ fprintf(stderr, "Shared memory error, disabling.\n");
+ goto shmemerror;
+ }
+
+ if (gXErrorFlag)
+ {
+ XDestroyImage(ximage);
+ ximage = NULL;
+ fprintf(stderr, "Shared memory error, disabling.\n");
+ gXErrorFlag = 0;
+ goto shmemerror;
+ }
+ }
+ else
+#endif
+ {
+shmemerror:
+
+ usingShm = 0;
+
+ if (ditherType == Twox2_DITHER)
+ {
+ ximage = XCreateImage(display, None, 8, ZPixmap, 0, &dummy,
+ win_width * 2,
+ win_height * 2, 8, 0);
+ }
+ else if (ditherType == FULL_COLOR_DITHER)
+ {
+ fc_visual = FindFullColorVisual(display, &depth);
+ ximage = XCreateImage (display, fc_visual, depth, ZPixmap,
+ 0, &dummy, win_width,
+ win_height, 32, 0);
+ }
+ else if (ditherType == MONO_DITHER || ditherType == MONO_THRESHOLD)
+ {
+ ximage = XCreateImage (display, None, 1, XYBitmap, 0, &dummy,
+ win_width,
+ win_height, 8, 0);
+ ximage->byte_order = MSBFirst;
+ ximage->bitmap_bit_order = MSBFirst;
+ }
+ else
+ {
+ ximage = XCreateImage(display, None, 8, ZPixmap, 0, &dummy,
+ win_width,
+ win_height, 8, 0);
+ }
+ if (ximage == NULL)
+ {
+ ACE_OS::perror ("VP error: fails to XCreateImage ximage");
+ ACE_OS::exit (1);
+ }
+ }
+#ifdef SH_MEM
+ if (shmemFlag && display != NULL)
+ {
+ DeInstallXErrorHandler();
+ }
+#endif
+ ximage->data = NULL;
+ /*
+ fprintf(stderr, "win_width %d, win_height %d, times %d\n",
+ win_width, win_height, win_width * win_height);
+ */
+ ClearWindow();
+ /*
+ fprintf(stderr, "VP window resized as width-%d, height-%d.\n", w, h);
+ */
+}
+
+/* parameter 'position' is for VPcontinuous command only */
+void VPcommand(int cmd, char * ptr)
+{
+ FrameBlock *buf = (FrameBlock *)ptr;
+ /*
+ fprintf(stderr, "VP get cmd %d.\n", cmd);
+ */
+ switch (cmd)
+ {
+ case CmdVPdisplayFrame:
+ if (shared->cmd != CmdSTOP) {
+ shared->currentGroup = buf->gop;
+ shared->currentFrame = buf->frame;
+ shared->currentDisplay = buf->display;
+ ximage->data = (char *)buf->data;
+ VPexpose();
+ }
+ VDreclaimMsg(buf);
+ return;
+
+ case CmdVPinitScreen:
+
+ VPresizeWindow(shared->verticalSize, shared->horizontalSize);
+ return;
+
+ case CmdVPclearScreen:
+
+ ClearWindow();
+ /*
+ fprintf(stderr, "VP screen cleaned for audio-only case.\n");
+ */
+ break;
+
+ default: /* all unknown cmds shall be processed by UI */
+
+ break;
+ }
+}
+
+void VPexpose(void)
+{
+ if (ximage == NULL) {
+ return;
+ }
+ else if (ximage->data == NULL) {
+ return;
+ }
+#ifdef SH_MEM
+ if (shmemFlag && usingShm)
+ {
+ XShmPutImage(display, window, gc, ximage, 0, 0, 0, 0,
+ ximage->width, ximage->height, True);
+ XFlush(display);
+ while(1)
+ {
+ XEvent xev;
+
+ XNextEvent(display, &xev);
+ if(xev.type == CompletionType)
+ break;
+ }
+ }
+ else
+#endif
+ {
+ XPutImage(display, window, gc, ximage, 0, 0, 0, 0,
+ ximage->width, ximage->height);
+ XFlush(display);
+ }
+}
+
+static void DisplayInitialization(void)
+{
+/*
+ printf("to initialize display.\n");
+*/
+ switch (ditherType) {
+
+ case HYBRID_DITHER:
+
+ InitColor();
+ InitDisplay(displayName);
+ break;
+
+ case HYBRID2_DITHER:
+ InitColor();
+ InitDisplay(displayName);
+ break;
+
+ case FS4_DITHER:
+ InitColor();
+ InitDisplay(displayName);
+ break;
+
+ case FS2_DITHER:
+ InitColor();
+ InitDisplay(displayName);
+ break;
+
+ case FS2FAST_DITHER:
+ InitColor();
+ InitDisplay(displayName);
+ break;
+
+ case Twox2_DITHER:
+ InitColor();
+ InitDisplay(displayName);
+ break;
+
+ case GRAY_DITHER:
+ InitGrayDisplay(displayName);
+ break;
+
+ case FULL_COLOR_DITHER:
+ InitColorDisplay(displayName);
+ break;
+
+ case NO_DITHER:
+ shmemFlag = 0;
+ break;
+
+ case ORDERED_DITHER:
+ InitColor();
+ InitDisplay(displayName);
+ break;
+
+ case MONO_DITHER:
+ case MONO_THRESHOLD:
+ InitMonoDisplay(displayName);
+ break;
+
+ case ORDERED2_DITHER:
+ InitColor();
+ InitDisplay(displayName);
+ break;
+
+ case MBORDERED_DITHER:
+ InitColor();
+ InitDisplay(displayName);
+ break;
+
+ }
+/*
+ printf("finished init display.\n");
+*/
+}
+
+void VPinitWindow(Widget shell, Window monitorWindow, int cmdSock)
+{
+ cmdSocket = cmdSock;
+ lum_values = (int *) ACE_OS::malloc(LUM_RANGE*sizeof(int));
+ cr_values = (int *) ACE_OS::malloc(CR_RANGE*sizeof(int));
+ cb_values = (int *) ACE_OS::malloc(CB_RANGE*sizeof(int));
+
+ DisplayInitialization();
+ ACE_OS::memcpy (shared->pixel, pixel, 256);
+ shared->pixelValid = 1;
+
+ ACE_OS::free (lum_values);
+ ACE_OS::free (cr_values);
+ ACE_OS::free (cb_values);
+#ifdef SH_MEM
+ if (shmemFlag && display != NULL)
+ {
+ InstallXErrorHandler();
+
+ shminfo.shmid = shared->VDbufId;
+ shminfo.shmaddr = shared->VDbufAddr;
+ shminfo.readOnly = False;
+ XShmAttach(display, &(shminfo));
+ XSync(display, False);
+
+ if (gXErrorFlag)
+ {
+ Fprintf(stderr, "Shared memory error, disabling.\n");
+ gXErrorFlag = 0;
+ shmemFlag = 0;
+ }
+ DeInstallXErrorHandler();
+ }
+#endif
+
+ remove_shmem_id(shared->VDbufId);
+ VPresizeWindow(150, 200);
+}