Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'features/org.eclipse.equinox.executable.feature/library/motif/NgImage.c')
-rw-r--r--features/org.eclipse.equinox.executable.feature/library/motif/NgImage.c246
1 files changed, 0 insertions, 246 deletions
diff --git a/features/org.eclipse.equinox.executable.feature/library/motif/NgImage.c b/features/org.eclipse.equinox.executable.feature/library/motif/NgImage.c
deleted file mode 100644
index 056b09de3..000000000
--- a/features/org.eclipse.equinox.executable.feature/library/motif/NgImage.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2000, 2007 IBM Corporation and others.
- * All rights reserved. This program and the accompanying materials
- * are made available under the terms of the Eclipse Public License v1.0
- * which accompanies this distribution, and is available at
- * http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-
-#include "NgCommon.h"
-#include "NgImageData.h"
-#include "NgImage.h"
-#include "NgWinBMPFileFormat.h"
-#include <dlfcn.h>
-
-struct NG_PTRS ng;
-
-#define FN_TABLE_ENTRY(fn) { (void**)&ng.fn, #fn }
-typedef struct {
- void ** fnPtr;
- char * fnName;
-} FN_TABLE;
-static FN_TABLE x11Functions[] = { FN_TABLE_ENTRY(XCreateGC),
- FN_TABLE_ENTRY(XCreateImage),
- FN_TABLE_ENTRY(XCreatePixmap),
- FN_TABLE_ENTRY(XDefaultColormap),
- FN_TABLE_ENTRY(XDefaultDepthOfScreen),
- FN_TABLE_ENTRY(XDefaultRootWindow),
- FN_TABLE_ENTRY(XDefaultScreen),
- FN_TABLE_ENTRY(XDefaultScreenOfDisplay),
- FN_TABLE_ENTRY(XDefaultVisual),
- FN_TABLE_ENTRY(XFreeGC),
- FN_TABLE_ENTRY(XFreePixmap),
- FN_TABLE_ENTRY(XPutImage),
- FN_TABLE_ENTRY(XQueryColor),
- { NULL, NULL }
- };
-
-static FN_TABLE xtFunctions[] = { FN_TABLE_ENTRY(XtMalloc), {NULL, NULL} };
-
-int NGImageInit() {
- int i = 0;
- void * fn;
-#ifdef AIX
- void * x11Lib = dlopen(X11_LIB, RTLD_LAZY | RTLD_MEMBER);
- void * xtLib = dlopen(XT_LIB, RTLD_LAZY | RTLD_MEMBER);
-#else
- void * x11Lib = dlopen(X11_LIB, RTLD_LAZY);
- void * xtLib = dlopen(XT_LIB, RTLD_LAZY);
-#endif
- /* initialize ptr struct to 0's */
- memset(&ng, 0, sizeof(struct NG_PTRS));
-
-
- if (x11Lib == NULL || xtLib == NULL)
- return -1;
-
- for (i = 0; x11Functions[i].fnName != NULL; i++) {
- fn = dlsym(x11Lib, x11Functions[i].fnName);
- if (fn != 0)
- *(x11Functions[i].fnPtr) = fn;
- else
- return -1;
- }
-
- for (i = 0; xtFunctions[i].fnName != NULL; i++) {
- fn = dlsym(xtLib, xtFunctions[i].fnName);
- if (fn != 0)
- *(xtFunctions[i].fnPtr) = fn;
- else
- return -1;
- }
- return 0;
-}
-/**
- * Return the nbr of entries in the default color palette
- */
-int getNbrColorsXPalette(Display *xDisplay)
-{
- Visual *visual = ng.XDefaultVisual (xDisplay, ng.XDefaultScreen(xDisplay));
- return visual->map_entries;
-}
-
-/**
- * Return the RGB codes of the default palette
- * palette: buffer of size numColors * 3, holding the RGB values
- */
-ng_err_t getXPalette (Display *xDisplay, int numColors, char* palette)
-{
- XColor color;
- int i;
- int index = 0;
- int colormap = ng.XDefaultColormap (xDisplay, ng.XDefaultScreen(xDisplay));
- for (i = 0; i < numColors; i++)
- {
- color.pixel = i;
- ng.XQueryColor (xDisplay, colormap, &color);
- palette[index++] = ((color.red >> 8) & 0xFF);
- palette[index++] = ((color.green >> 8) & 0xFF);
- palette[index++] = ((color.blue >> 8) & 0xFF);
- }
- return ERR_OK;
-}
-
-/**
- * Put a device-independent image of any depth into a drawable of the same size,
- */
-ng_err_t putImage(ng_bitmap_image_t *image, int srcX, int srcY, int srcWidth, int srcHeight, int destX, int destY,
- Display *xDisplay, Visual *visual, int screenDepth,
- int drawable)
-{
-
- XImage *xImagePtr;
- int bufSize;
- int destRedMask = 0, destGreenMask = 0, destBlueMask = 0;
- BYTE1 screenDirect;
- UBYTE1 *srcData = NgBitmapImageImageData(image);
- UBYTE4 srcDepth = NgBitmapImageBitCount(image);
- BYTE4 sbpp, dbpp;
- GC tempGC;
- int numColors = 0;
-
- /* We only support image depth of 24 bits */
- if (srcDepth != 24) return NgError (ERR_NG, "Error unsupported depth - only support 24 bit");
- if (screenDepth <= 8)
- {
- numColors = getNbrColorsXPalette (xDisplay);
- if (numColors == 0)
- return NgError (ERR_NG, "Error pseudo-color mode detected, no colors available");
- numColors = 1 << ng.XDefaultDepthOfScreen (ng.XDefaultScreenOfDisplay (xDisplay));
- screenDirect = 0;
- } else
- {
- destRedMask = visual->red_mask;
- destGreenMask = visual->green_mask;
- destBlueMask = visual->blue_mask;
- screenDirect = 1;
- }
-
- xImagePtr = ng.XCreateImage(xDisplay, visual, screenDepth, ZPixmap, 0, 0, srcWidth, srcHeight, 32, 0);
- if (xImagePtr == NULL) return NgError (ERR_NG, "Error XCreateImage failed");
- bufSize = xImagePtr->bytes_per_line * srcHeight;
-
- xImagePtr->data = (char*) ng.XtMalloc (bufSize);
- sbpp = NgBitmapImageBytesPerRow(image);
- dbpp = xImagePtr->bytes_per_line;
-
- if (screenDirect)
- {
- /* 24 bit source to direct screen destination */
- NgBitmapImageBlitDirectToDirect(srcData, sbpp, srcWidth, srcHeight,
- (UBYTE1*)xImagePtr->data, xImagePtr->bits_per_pixel, dbpp, xImagePtr->byte_order,
- destRedMask, destGreenMask, destBlueMask);
- } else
- {
- /* 24 bit source to palette screen destination */
- char *palette = (char*) NgMalloc (numColors * 3);
- getXPalette (xDisplay, numColors, palette);
- NgBitmapImageBlitDirectToPalette(srcData, sbpp, srcWidth, srcHeight,
- (UBYTE1*)xImagePtr->data, xImagePtr->bits_per_pixel, dbpp, xImagePtr->byte_order,
- (UBYTE1*)palette, numColors);
- NgFree (palette);
- }
-
- tempGC = ng.XCreateGC (xDisplay, drawable, 0, NULL);
- ng.XPutImage(xDisplay, drawable, tempGC, xImagePtr, 0, 0, 0, 0, srcWidth, srcHeight);
-
- XDestroyImage (xImagePtr);
- ng.XFreeGC (xDisplay, tempGC);
- return ERR_OK;
-}
-
-ng_err_t init(ng_bitmap_image_t *image, Display *xDisplay, int screenDepth, int drawable, Pixmap *pixmap)
-{
- ng_err_t err;
- int width = (int)NgBitmapImageWidth(image);
- int height = (int)NgBitmapImageHeight(image);
-
- Visual *visual = ng.XDefaultVisual(xDisplay, ng.XDefaultScreen(xDisplay));
- *pixmap = ng.XCreatePixmap(xDisplay, drawable, width, height, screenDepth);
- if (*pixmap == 0)
- {
- return NgError (ERR_NG, "Error XCreatePixmap failed");
- }
- err = putImage(image, 0, 0, width, height, 0, 0, xDisplay, visual, screenDepth, *pixmap);
- if (err != ERR_OK)
- {
- ng.XFreePixmap (xDisplay, *pixmap);
- return NgError (err, "Error putImage failed");
- }
-
- return ERR_OK;
-}
-
-/**
- * loadBMPImage
- * Create a pixmap representing the given BMP file, for the specified display and screen.
- *
- * display: connection to X server
- * screen: the screen to create the pixmap for
- * bmpPathname: absolute path and name to the bmp file
- *
- * returned value: the pixmap newly created if successful. 0 otherwise.
- */
-Pixmap loadBMPImage (Display *display, Screen *screen, char *bmpPathname) {
- Window drawable;
- ng_stream_t in;
- ng_bitmap_image_t image;
- ng_err_t err = ERR_OK;
- int screenDepth;
- Pixmap pixmap;
-
- /* this must be called before any X functions are used */
- NGImageInit();
- NgInit();
-
- drawable = ng.XDefaultRootWindow (display);
- screenDepth = ng.XDefaultDepthOfScreen (screen);
-
- if (NgStreamInit (&in, bmpPathname) != ERR_OK)
- {
- NgError (ERR_NG, "Error can't open BMP file");
- return 0;
- }
- NgBitmapImageInit (&image);
- err = NgBmpDecoderReadImage (&in, &image);
- NgStreamClose (&in);
-
- if (err != ERR_OK)
- {
- NgBitmapImageFree (&image);
- return 0;
- }
-
- err = init (&image, display, screenDepth, drawable, &pixmap);
- NgBitmapImageFree (&image);
-
- return err == ERR_OK ? pixmap : 0;
-}
-
-const char *getBMPErrorMessage ()
-{
- return NgGetLastErrorMsg ();
-}

Back to the top