IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 16389


Ignore:
Timestamp:
Feb 9, 2008, 10:05:41 AM (18 years ago)
Author:
eugene
Message:

swap bytes if server and client have different byte order

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/kapa2/src/Remap32.c

    r16270 r16389  
    11# include "Ximage.h"
    22
    3 # ifndef ISWAP
    4 # define ISWAP(X,Y) {int tmp=(X); (X) = (Y); (Y) = tmp;}
    5 # endif
     3# define MY_SWAP_WORD(W) { \
     4  char tmp, *X; \
     5  X = (char *) &W; \
     6  tmp = X[0]; X[0] = X[3]; X[3] = tmp; \
     7  tmp = X[1]; X[1] = X[2]; X[2] = tmp; }
    68
    79void Remap32 (Graphic *graphic, KapaImageWidget *image, Picture *picture, Matrix *matrix) {
     
    1719  unsigned long *pixel, pixvalue;
    1820  unsigned long back;
     21  int swap_client, swap_server, swap_bytes;
    1922
    2023  ALLOCATE (pixel, unsigned long, graphic[0].Npixels);
     24
     25# ifdef BYTE_SWAP
     26  swap_client = 1;
     27# else
     28  swap_client = 0;
     29# endif 
     30
     31  swap_server = ImageByteOrder (graphic[0].display);
     32  swap_bytes = !(swap_client ^ swap_server);
    2133
    2234  // local array for pixel values
    2335  for (i = 0; i < graphic[0].Npixels; i++) {
    2436    pixel[i] = graphic[0].cmap[i].pixel;
     37    if (swap_bytes) MY_SWAP_WORD(pixel[i]);
    2538  }
    2639  back = graphic[0].back;
     40  if (swap_bytes) MY_SWAP_WORD(back);
    2741
    2842  // set up expansions
Note: See TracChangeset for help on using the changeset viewer.