IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 13436


Ignore:
Timestamp:
May 18, 2007, 5:09:41 PM (19 years ago)
Author:
eugene
Message:

changing to a 32bit image buffer in kapa

Location:
branches/kapa-mods-2007-05/Ohana/src
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/CreateZoom16.c

    r13320 r13436  
    11# include "Ximage.h"
    2 # define XPIX(x,Rx,S) (x*S + Rx)
    3 # define ZPIX(value,Rz1,Rz2) (value*Rz1 - Rz2)
    42# define FRAC(a) ((a) - (int)(a))
     3
     4static float slope = 1.0;
     5static float start = 0.0;
     6static int MaxValue = 255;
     7
     8// XXX inline this if needed
     9static int PixelLookup(float value) {
     10  int out;
     11  out = MIN (MAX (slope * value - start, 0), MaxValue);
     12  return (out);
     13}
    514
    615void CreateZoom16 (KapaImageWidget *image, Graphic *graphic, double x, double y) {
     
    918  int i_start, i_end, j_start, j_end;
    1019  int dropback;  /* this is a bit of a kludge... */
    11   int dx, dy, DX, DY;
     20  int dx, dy, DX, DY, pixelN;
    1221  double expand, zoomscale, Rx, Ry;
    1322  int expand_in, expand_out;
    1423  unsigned char *out_pix, *out_pix2, *data;
    15   unsigned char *in_pix,  *in_pix2;
     24  float *imdata, *in_pix,  *in_pix2;
    1625  unsigned char pixel1[256], pixel2[256];
    1726  unsigned char pixvalue1, pixvalue2;
     
    3746  back1 = 0x0000ff & back;
    3847  back2 = 0x0000ff & (back >> 8);
     48  // define the color transform parameters
     49  MaxValue = graphic[0].Npixels - 1;
     50  if (image[0].range != 0.0) {
     51    slope = graphic[0].Npixels / image[0].range;
     52    start = graphic[0].Npixels * image[0].zero / image[0].range;
     53  } else {
     54    slope = 1.0;
     55    start = image[0].zero;
     56  }
    3957
    4058  zoomscale = MAX (5, image[0].expand + 5);
     
    5674
    5775  data = out_pix = (unsigned char *) image[0].zoom.data;
    58   in_pix  = (unsigned char *) (image[0].matrix.buffer) + DX*(int)MAX(Ry,0) + (int)MAX(Rx,0);
     76  imdata  = (float *) image[0].matrix.buffer;
     77  in_pix  = &imdata[DX*(int)MAX(Ry,0) + (int)MAX(Rx,0)];
    5978
    6079  /********** below we do the mapping from buffer pixels (in) to picture pixels (out) **********/
     
    91110    if (expand_out == 1) {
    92111      for (i = i_start; i < i_end; i++, in_pix2+= expand_in, out_pix+=2) {
    93         out_pix[0] = pixel1[*in_pix2];
    94         out_pix[1] = pixel2[*in_pix2];
     112        pixelN = PixelLookup(*in_pix2);
     113        out_pix[0] = pixel1[pixelN];
     114        out_pix[1] = pixel2[pixelN];
    95115      }
    96     }
    97     else {
     116    } else {
    98117      for (i = i_start; i < i_end; i+= expand_out, in_pix2++, out_pix+= 2*expand_out) {
    99         pixvalue1 = pixel1[*in_pix2];
    100         pixvalue2 = pixel2[*in_pix2];
     118        pixelN = PixelLookup(*in_pix2);
     119        pixvalue1 = pixel1[pixelN];
     120        pixvalue2 = pixel2[pixelN];
    101121        out_pix2 = out_pix;
    102122        for (jj = 0; jj < expand_out; jj++, out_pix2+=2*(dx-expand_out)) {
     
    129149  }
    130150
    131   image[0].zoom.pix = XCreateImage (graphic[0].display, graphic[0].visual, 16, ZPixmap, 0,
    132                                         image[0].zoom.data, image[0].zoom.dx, image[0].zoom.dy, 32, 0);
     151  image[0].zoom.pix = XCreateImage (graphic[0].display, graphic[0].visual, graphic[0].depth, ZPixmap, 0,
     152                                        image[0].zoom.data, image[0].zoom.dx, image[0].zoom.dy, 16, 0);
    133153 
    134154}
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/CreateZoom24.c

    r13320 r13436  
    11# include "Ximage.h"
    2 # define XPIX(x,Rx,S) (x*S + Rx)
    3 # define ZPIX(value,Rz1,Rz2) (value*Rz1 - Rz2)
    42# define FRAC(a) ((a) - (int)(a))
     3
     4static float slope = 1.0;
     5static float start = 0.0;
     6static int MaxValue = 255;
     7
     8// XXX inline this if needed
     9static int PixelLookup(float value) {
     10  int out;
     11  out = MIN (MAX (slope * value - start, 0), MaxValue);
     12  return (out);
     13}
    514
    615void CreateZoom24 (KapaImageWidget *image, Graphic *graphic, double x, double y) {
     
    918  int i_start, i_end, j_start, j_end;
    1019  int dropback;  /* this is a bit of a kludge... */
    11   int dx, dy, DX, DY;
     20  int dx, dy, DX, DY, pixelN;
    1221  double expand, zoomscale, Rx, Ry;
    1322  int expand_in, expand_out;
    1423  unsigned char *out_pix, *out_pix2, *data;
    15   unsigned char *in_pix, *in_pix2;
     24  float *imdata, *in_pix, *in_pix2;
    1625  unsigned char pixel1[256], pixel2[256], pixel3[256];
    1726  unsigned char pixvalue1, pixvalue2, pixvalue3;
     
    4150  back3 = 0x0000ff & (back >> 16);
    4251
     52  // define the color transform parameters
     53  MaxValue = graphic[0].Npixels - 1;
     54  if (image[0].range != 0.0) {
     55    slope = graphic[0].Npixels / image[0].range;
     56    start = graphic[0].Npixels * image[0].zero / image[0].range;
     57  } else {
     58    slope = 1.0;
     59    start = image[0].zero;
     60  }
     61
    4362  zoomscale = MAX (5, image[0].expand + 5);
    4463  expand = 1 / zoomscale;
     
    5978
    6079  data = out_pix = (unsigned char *) image[0].zoom.data;
    61   in_pix  = (unsigned char *) (image[0].matrix.buffer) + DX*(int)MAX(Ry,0) + (int)MAX(Rx,0);
     80  imdata  = (float *) image[0].matrix.buffer;
     81  in_pix  = &imdata[DX*(int)MAX(Ry,0) + (int)MAX(Rx,0)];
    6282
    6383  /********** below we do the mapping from buffer pixels (in) to picture pixels (out) **********/
     
    97117    if (expand_out == 1) {
    98118      for (i = i_start; i < i_end; i++, in_pix2+= expand_in, out_pix+=3) {
    99         out_pix[0] = pixel1[*in_pix2];
    100         out_pix[1] = pixel2[*in_pix2];
    101         out_pix[2] = pixel3[*in_pix2];
     119        pixelN = PixelLookup(*in_pix2);
     120        out_pix[0] = pixel1[pixelN];
     121        out_pix[1] = pixel2[pixelN];
     122        out_pix[2] = pixel3[pixelN];
    102123      }
    103     }
    104     else {
     124    } else {
    105125      for (i = i_start; i < i_end; i+= expand_out, in_pix2++, out_pix+= 3*expand_out) {
    106         pixvalue1 = pixel1[*in_pix2];
    107         pixvalue2 = pixel2[*in_pix2];
    108         pixvalue3 = pixel3[*in_pix2];
     126        pixelN   = PixelLookup(*in_pix2);
     127        pixvalue1 = pixel1[pixelN];
     128        pixvalue2 = pixel2[pixelN];
     129        pixvalue3 = pixel3[pixelN];
    109130        out_pix2 = out_pix;
    110131        for (jj = 0; jj < expand_out; jj++, out_pix2+=3*(dx-expand_out)+extra) {
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/CreateZoom32.c

    r13320 r13436  
    11# include "Ximage.h"
    2 # define XPIX(x,Rx,S) (x*S + Rx)
    3 # define ZPIX(value,Rz1,Rz2) (value*Rz1 - Rz2)
    42# define FRAC(a) ((a) - (int)(a))
     3
     4static float slope = 1.0;
     5static float start = 0.0;
     6static int MaxValue = 255;
     7
     8// XXX inline this if needed
     9static int PixelLookup(float value) {
     10  int out;
     11  out = MIN (MAX (slope * value - start, 0), MaxValue);
     12  return (out);
     13}
    514
    615void CreateZoom32 (KapaImageWidget *image, Graphic *graphic, double x, double y) {
     
    918  int i_start, i_end, j_start, j_end;
    1019  int dropback;  /* this is a bit of a kludge... */
    11   int dx, dy, DX, DY;
     20  int dx, dy, DX, DY, pixelN;
    1221  double expand, zoomscale, Rx, Ry;
    1322  int expand_in, expand_out;
    14   unsigned int *out_pix, *out_pix2, *data;
    15   unsigned char  *in_pix, *in_pix2;
     23  unsigned int *out_pix, *out_pix2;
     24  float *imdata, *in_pix, *in_pix2;
    1625  unsigned long pixel[256], pixvalue;
    1726  unsigned long back;
     
    2837  }
    2938  back = graphic[0].back;
     39
     40  // define the color transform parameters
     41  MaxValue = graphic[0].Npixels - 1;
     42  if (image[0].range != 0.0) {
     43    slope = graphic[0].Npixels / image[0].range;
     44    start = graphic[0].Npixels * image[0].zero / image[0].range;
     45  } else {
     46    slope = 1.0;
     47    start = image[0].zero;
     48  }
    3049
    3150  zoomscale = MAX (5, image[0].expand + 5);
     
    4968
    5069  out_pix = (unsigned int *) image[0].zoom.data;
    51   data = (unsigned int *) image[0].zoom.data;
    52   in_pix  = (unsigned char *) (image[0].matrix.buffer) + DX*(int)MAX(Ry,0) + (int)MAX(Rx,0);
     70  imdata  = (float *) image[0].matrix.buffer;
     71  in_pix  = &imdata[DX*(int)MAX(Ry,0) + (int)MAX(Rx,0)];
    5372
    5473  /********** below we do the mapping from buffer pixels (in) to picture pixels (out) **********/
     
    81100    if (expand_out == 1) {
    82101      for (i = i_start; i < i_end; i++, in_pix2+= expand_in, out_pix++) {
    83         out_pix[0] = pixel[*in_pix2];
     102        pixelN = PixelLookup(*in_pix2);
     103        out_pix[0] = pixel[pixelN];
    84104      }
    85105    }
    86106    else {
    87107      for (i = i_start; i < i_end; i+= expand_out, in_pix2++, out_pix+= expand_out) {
    88         pixvalue = *(pixel + *in_pix2);
     108        pixelN   = PixelLookup(*in_pix2);
     109        pixvalue = pixel[pixelN];
    89110        out_pix2 = out_pix;
    90111        for (jj = 0; jj < expand_out; jj++, out_pix2+=(dx-expand_out)) {
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/CreateZoom8.c

    r13320 r13436  
    11# include "Ximage.h"
    2 # define XPIX(x,Rx,S) (x*S + Rx)
    3 # define ZPIX(value,Rz1,Rz2) (value*Rz1 - Rz2)
    42# define FRAC(a) ((a) - (int)(a))
     3
     4static float slope = 1.0;
     5static float start = 0.0;
     6static int MaxValue = 255;
     7
     8// XXX inline this if needed
     9static int PixelLookup(float value) {
     10  int out;
     11  out = MIN (MAX (slope * value - start, 0), MaxValue);
     12  return (out);
     13}
    514
    615void CreateZoom8 (KapaImageWidget *image, Graphic *graphic, double x, double y) {
     
    918  int i_start, i_end, j_start, j_end;
    1019  int dropback;  /* this is a bit of a kludge... */
    11   int dx, dy, DX, DY;
     20  int dx, dy, DX, DY, pixelN;
    1221  double expand, zoomscale, Rx, Ry;
    1322  int expand_in, expand_out;
    14   char *out_pix, *out_pix2;
    15   char  *in_pix, *in_pix2;
     23  unsigned char *out_pix, *out_pix2;
     24  float *imdata, *in_pix, *in_pix2;
    1625  unsigned long pixel[256], pixvalue;
    1726  unsigned long back;
     
    3039  back = graphic[0].back;
    3140
     41  // define the color transform parameters
     42  MaxValue = graphic[0].Npixels - 1;
     43  if (image[0].range != 0.0) {
     44    slope = graphic[0].Npixels / image[0].range;
     45    start = graphic[0].Npixels * image[0].zero / image[0].range;
     46  } else {
     47    slope = 1.0;
     48    start = image[0].zero;
     49  }
     50
    3251  zoomscale = MAX (5, image[0].expand + 5);
    3352  expand = 1 / zoomscale;
    3453  expand_out = (int) zoomscale;
    3554  expand_in  = 1;
    36 
    37   /*
    38   dx = image[0].zoom.dx;
    39   dy = image[0].zoom.dy;
    40   DX = image[0].matrix.Naxis[0];
    41   DY = image[0].matrix.Naxis[1];
    42   Rx = 0.5*(DX - (dx - 1)*expand) - x;
    43   Ry = 0.5*(DY - (dy - 1)*expand) - y;
    44   data coords of 0,0 point in pic array
    45   X = 0.5*image[0].matrix.Naxis[0] - expand*((int)(0.5*image[0].zoom.dx + 0.5) - 0.0) - image[0].X;
    46   Y = 0.5*image[0].matrix.Naxis[1] - expand*((int)(0.5*image[0].zoom.dy + 0.5) - 0.0) - image[0].Y; 
    47   i_start = MIN (MAX (-Rx / expand, 0), dx - expand_out + 1);
    48   j_start = MIN (MAX (-Ry / expand, 0), dy - expand_out + 1);
    49   i_end   = MAX (MIN ((DX-Rx) / expand, dx - expand_out + 1), 0);
    50   j_end   = MAX (MIN ((DY-Ry) / expand, dy - expand_out + 1), 0);
    51   dropback = expand_out - (i_end - i_start) % expand_out;
    52   if ((i_end - i_start) % expand_out == 0) dropback = 0;
    53 
    54   out_pix = image[0].zoom.data;
    55   in_pix  = (char *) (image[0].matrix.buffer) + DX*(int)MAX(Y,0) + (int)MAX(X,0);
    56 
    57   */
    5855
    5956  dx = image[0].zoom.dx;
     
    7269
    7370  out_pix = (char *) image[0].zoom.data;
    74   in_pix  = (char *) (image[0].matrix.buffer) + DX*(int)MAX(Ry,0) + (int)MAX(Rx,0);
     71  imdata  = (float *) image[0].matrix.buffer;
     72  in_pix  = &imdata[DX*(int)MAX(Ry,0) + (int)MAX(Rx,0)];
    7573
    7674  /********** below we do the mapping from buffer pixels (in) to picture pixels (out) **********/
     
    10098    in_pix2 = in_pix;
    10199    if (expand_out == 1) {
    102       for (i = i_start; i < i_end; i++, in_pix2+= expand_in, out_pix++)
    103         *out_pix = *(pixel + *in_pix2);
    104     }
    105     else {
     100      for (i = i_start; i < i_end; i++, in_pix2+= expand_in, out_pix++) {
     101        pixelN = PixelLookup(*in_pix2);
     102        *out_pix = pixel[pixelN];
     103      }
     104    } else {
    106105      for (i = i_start; i < i_end; i+= expand_out, in_pix2++, out_pix+= expand_out) {
    107         pixvalue = *(pixel + *in_pix2);
     106        pixelN   = PixelLookup(*in_pix2);
     107        pixvalue = pixel[pixelN];
    108108        out_pix2 = out_pix;
    109109        for (jj = 0; jj < expand_out; jj++, out_pix2+=(dx-expand_out)) {
     
    131131 
    132132  /**** fill in top area ****/
    133   for (j = 0; (j < dx*(dy - j_end)) && (out_pix - image[0].zoom.data < dx*dy); j++, out_pix++) {
     133  for (j = 0; (j < dx*(dy - j_end)) && (out_pix - (unsigned char *) image[0].zoom.data < dx*dy); j++, out_pix++) {
    134134    *out_pix = back;
    135135  }
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/JPEGit24.c

    r13344 r13436  
    55# define WHITE_G 255
    66# define WHITE_B 255
     7
     8static float slope = 1.0;
     9static float start = 0.0;
     10static int MaxValue = 255;
     11
     12// XXX inline this if needed
     13static int PixelLookup(float value) {
     14  int out;
     15  out = MIN (MAX (slope * value - start, 0), MaxValue);
     16  return (out);
     17}
    718
    819// XXX this currently writes out the jpeg for just the active image
     
    2132  int i_start, i_end, j_start, j_end;
    2233  int dropback;  /* this is a bit of a kludge... */
    23   int dx, dy, DX, DY;
     34  int dx, dy, DX, DY, pixelN;
    2435  int status, Nbytes, quality;
    2536  int expand_in, expand_out;
    2637  double expand, Rx, Ry, X, Y;
    27   unsigned char *out_pix, *in_pix, *in_pix_ref;
     38  unsigned char *out_pix;
     39  float *imdata, *in_pix, *in_pix_ref;
    2840  unsigned char pixel1[256], pixel2[256], pixel3[256];
    2941  char filename[1024];
     
    7082  }
    7183
     84  // define the color transform parameters
     85  MaxValue = graphic[0].Npixels - 1;
     86  if (image[0].range != 0.0) {
     87    slope = graphic[0].Npixels / image[0].range;
     88    start = graphic[0].Npixels * image[0].zero / image[0].range;
     89  } else {
     90    slope = 1.0;
     91    start = image[0].zero;
     92  }
     93
    7294  expand = expand_in = expand_out = 1.0;
    7395  if (image[0].expand == 0) /* set up expansions */
     
    123145  ALLOCATE (line_buffer, JSAMPLE, 3*dx);
    124146
    125   in_pix_ref  = (unsigned char *) (image[0].matrix.buffer) + DX*(int)MAX(Y,0) + (int)MAX(X,0);
     147  imdata = (float *) image[0].matrix.buffer;
     148  in_pix_ref = &imdata[DX*(int)MAX(Y,0) + (int)MAX(X,0)];
    126149
    127150  /********** below we do the mapping from buffer pixels (in) to picture pixels (out) **********/
     
    154177    /*** fill in the picture region ***/
    155178    for (i = i_start; i < i_end; i+=expand_out, in_pix+=expand_in) {
     179      pixelN = PixelLookup(*in_pix);
    156180      for (ii = 0; ii < expand_out; ii++, out_pix+=3) {
    157         out_pix[0] = pixel1[*in_pix];
    158         out_pix[1] = pixel2[*in_pix];
    159         out_pix[2] = pixel3[*in_pix];
     181        out_pix[0] = pixel1[pixelN];
     182        out_pix[1] = pixel2[pixelN];
     183        out_pix[2] = pixel3[pixelN];
    160184      }
    161185    }
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/Remap16.c

    r13320 r13436  
    11# include "Ximage.h"
    2 # define FRAC(a) ((a) - (int)(a))
     2
     3static float slope = 1.0;
     4static float start = 0.0;
     5static int MaxValue = 255;
     6
     7// XXX inline this if needed
     8static int PixelLookup(float value) {
     9  int out;
     10  out = MIN (MAX (slope * value - start, 0), MaxValue);
     11  return (out);
     12}
    313
    414void Remap16 (Graphic *graphic, KapaImageWidget *image, Matrix *matrix) {
     
    717  int i_start, i_end, j_start, j_end;
    818  int dropback;  /* this is a bit of a kludge... */
    9   int dx, dy, DX, DY;
     19  int dx, dy, DX, DY, pixelN;
    1020  double expand, Rx, Ry, X, Y;
    1121  int expand_in, expand_out;
    1222  unsigned char *out_pix, *out_pix2, *data;
    13   unsigned char *in_pix, *in_pix2;
    14   unsigned char pixel1[256], pixel2[256], pixel3[256];
     23  float *imdata, *in_pix, *in_pix2;
     24  unsigned char pixel1[256], pixel2[256];
    1525  unsigned char pixvalue1, pixvalue2;
    1626  unsigned long back;
    1727  unsigned char back1, back2;
    1828
     29  // local array for pixel values (is this working??)
    1930  for (i = 0; i < 256; i++) { /* set up pixel array */
    20     pixel1[i] = 0x0000ff &  graphic[0].cmap[i].pixel;
    21     pixel2[i] = 0x0000ff & (graphic[0].cmap[i].pixel >> 8);
    22     pixel3[i] = 0x0000ff & (graphic[0].cmap[i].pixel >> 16);
     31    pixel1[i] = 0x00ff &  graphic[0].cmap[i].pixel;
     32    pixel2[i] = 0x00ff & (graphic[0].cmap[i].pixel >> 8);
    2333  }
    2434  back = graphic[0].back;
     
    2636  back2 = 0x00ff & (back >> 8);
    2737
     38  // define the color transform parameters
     39  MaxValue = graphic[0].Npixels - 1;
     40  if (image[0].range != 0.0) {
     41    slope = graphic[0].Npixels / image[0].range;
     42    start = graphic[0].Npixels * image[0].zero / image[0].range;
     43  } else {
     44    slope = 1.0;
     45    start = image[0].zero;
     46  }
     47
     48  // set up expansions
    2849  expand = expand_in = expand_out = 1.0;
    2950  if (image[0].expand == 0) /* set up expansions */
     
    4061  }
    4162
     63  // define the image boundaries
    4264  dx = image[0].picture.dx;
    4365  dy = image[0].picture.dy;
     
    7698
    7799  data = out_pix = (unsigned char *) image[0].picture.data;
    78   in_pix  = (unsigned char *) (matrix[0].buffer) + DX*(int)MAX(Y,0) + (int)MAX(X,0);
     100  imdata  = (float *) matrix[0].buffer;
     101  in_pix  = &imdata[DX*(int)MAX(Y,0) + (int)MAX(X,0)];
    79102
    80103  /********** below we do the mapping from buffer pixels (in) to picture pixels (out) **********/
     
    105128    if (expand_out == 1) {
    106129      for (i = i_start; i < i_end; i++, in_pix2+= expand_in, out_pix+=2) {
    107         out_pix[0] = pixel1[*in_pix2];
    108         out_pix[1] = pixel2[*in_pix2];
     130        pixelN = PixelLookup(*in_pix2);
     131        out_pix[0] = pixel1[pixelN];
     132        out_pix[1] = pixel2[pixelN];
    109133      }
    110134    }
    111135    else {
    112136      for (i = i_start; i < i_end; i+= expand_out, in_pix2++, out_pix+= 2*expand_out) {
    113         pixvalue1 = pixel1[*in_pix2];
    114         pixvalue2 = pixel2[*in_pix2];
     137        pixelN    = PixelLookup(*in_pix2);
     138        pixvalue1 = pixel1[pixelN];
     139        pixvalue2 = pixel2[pixelN];
    115140        out_pix2 = out_pix;
    116141        for (jj = 0; jj < expand_out; jj++, out_pix2+=2*(dx-expand_out)) {
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/Remap24.c

    r13320 r13436  
    11# include "Ximage.h"
    2 # define FRAC(a) ((a) - (int)(a))
     2
     3static float slope = 1.0;
     4static float start = 0.0;
     5static int MaxValue = 255;
     6
     7// XXX inline this if needed
     8static int PixelLookup(float value) {
     9  int out;
     10  out = MIN (MAX (slope * value - start, 0), MaxValue);
     11  return (out);
     12}
    313
    414void Remap24 (Graphic *graphic, KapaImageWidget *image, Matrix *matrix) {
     
    717  int i_start, i_end, j_start, j_end;
    818  int dropback, extra;  /* this is a bit of a kludge... */
    9   int dx, dy, DX, DY;
     19  int dx, dy, DX, DY, pixelN;
    1020  double expand, Rx, Ry, X, Y;
    1121  int expand_in, expand_out;
    1222  unsigned char *out_pix, *out_pix2, *data;
    13   unsigned char *in_pix, *in_pix2;
     23  float *imdata, *in_pix, *in_pix2;
    1424  unsigned char pixel1[256], pixel2[256], pixel3[256];
    1525  unsigned char pixvalue1, pixvalue2, pixvalue3;
     
    1727  unsigned char back1, back2, back3;
    1828
     29  // local arrays for pixel values
    1930  for (i = 0; i < 256; i++) { /* set up pixel array */
    2031    pixel1[i] = 0x0000ff &  graphic[0].cmap[i].pixel;
     
    2738  back3 = 0x0000ff & (back >> 16);
    2839
     40  // define the color transform parameters
     41  MaxValue = graphic[0].Npixels - 1;
     42  if (image[0].range != 0.0) {
     43    slope = graphic[0].Npixels / image[0].range;
     44    start = graphic[0].Npixels * image[0].zero / image[0].range;
     45  } else {
     46    slope = 1.0;
     47    start = image[0].zero;
     48  }
     49
     50  // set up expansions
    2951  expand = expand_in = expand_out = 1.0;
    3052  if (image[0].expand == 0) /* set up expansions */
     
    78100
    79101  data = out_pix = (unsigned char *) image[0].picture.data;
    80   in_pix  = (unsigned char *) (matrix[0].buffer) + DX*(int)MAX(Y,0) + (int)MAX(X,0);
     102  imdata  = (float *) matrix[0].buffer;
     103  in_pix  = &imdata[DX*(int)MAX(Y,0) + (int)MAX(X,0)];
    81104
    82105  /********** below we do the mapping from buffer pixels (in) to picture pixels (out) **********/
     
    110133    if (expand_out == 1) {
    111134      for (i = i_start; i < i_end; i++, in_pix2+= expand_in, out_pix+=3) {
    112         out_pix[0] = pixel1[*in_pix2];
    113         out_pix[1] = pixel2[*in_pix2];
    114         out_pix[2] = pixel3[*in_pix2];
     135        pixelN = PixelLookup(*in_pix2);
     136        out_pix[0] = pixel1[pixelN];
     137        out_pix[1] = pixel2[pixelN];
     138        out_pix[2] = pixel3[pixelN];
    115139      }
    116     }
    117     else {
     140    } else {
    118141      for (i = i_start; i < i_end; i+= expand_out, in_pix2++, out_pix+= 3*expand_out) {
    119         pixvalue1 = pixel1[*in_pix2];
    120         pixvalue2 = pixel2[*in_pix2];
    121         pixvalue3 = pixel3[*in_pix2];
     142        pixelN = PixelLookup(*in_pix2);
     143        pixvalue1 = pixel1[pixelN];
     144        pixvalue2 = pixel2[pixelN];
     145        pixvalue3 = pixel3[pixelN];
    122146        out_pix2 = out_pix;
    123147        for (jj = 0; jj < expand_out; jj++, out_pix2+=3*(dx-expand_out)+extra) {
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/Remap32.c

    r13320 r13436  
    11# include "Ximage.h"
    2 # define FRAC(a) ((a) - (int)(a))
     2
     3static float slope = 1.0;
     4static float start = 0.0;
     5static int MaxValue = 255;
     6
     7// XXX inline this if needed
     8static int PixelLookup(float value) {
     9  int out;
     10  out = MIN (MAX (slope * value - start, 0), MaxValue);
     11  return (out);
     12}
    313
    414void Remap32 (Graphic *graphic, KapaImageWidget *image, Matrix *matrix) {
     
    717  int i_start, i_end, j_start, j_end;
    818  int dropback;  /* this is a bit of a kludge... */
    9   int dx, dy, DX, DY;
     19  int dx, dy, DX, DY, pixelN;
    1020  double expand, Rx, Ry, X, Y;
    1121  int expand_in, expand_out;
    1222  unsigned int *out_pix, *out_pix2;
    13   unsigned char *in_pix, *in_pix2;
     23  float *imdata, *in_pix, *in_pix2;
    1424  unsigned long pixel[256], pixvalue;
    1525  unsigned long back;
    1626
    17   for (i = 0; i < 256; i++) { /* set up pixel array */
     27  // local array for pixel values
     28  for (i = 0; i < 256; i++) {
    1829    pixel[i] = graphic[0].cmap[i].pixel;
    1930  }
    2031  back = graphic[0].back;
    2132
     33  // define the color transform parameters
     34  MaxValue = graphic[0].Npixels - 1;
     35  if (image[0].range != 0.0) {
     36    slope = graphic[0].Npixels / image[0].range;
     37    start = graphic[0].Npixels * image[0].zero / image[0].range;
     38  } else {
     39    slope = 1.0;
     40    start = image[0].zero;
     41  }
     42
     43  // set up expansions
    2244  expand = expand_in = expand_out = 1.0;
    23   if (image[0].expand == 0) /* set up expansions */
     45  if (image[0].expand == 0)
    2446    image[0].expand = 1;
    2547  if (image[0].expand > 0) {
     
    3456  }
    3557
     58  // define the image boundaries
    3659  dx = image[0].picture.dx;
    3760  dy = image[0].picture.dy;
     
    6992
    7093  out_pix = (unsigned int *) image[0].picture.data;
    71   in_pix  = (unsigned char *) (matrix[0].buffer) + DX*(int)MAX(Y,0) + (int)MAX(X,0);
     94  imdata  = (float *) matrix[0].buffer;
     95  in_pix  = &imdata[DX*(int)MAX(Y,0) + (int)MAX(X,0)];
    7296
    7397  /********** below we do the mapping from buffer pixels (in) to picture pixels (out) **********/
     
    92116    if (expand_out == 1) {
    93117      for (i = i_start; i < i_end; i++, in_pix2+= expand_in, out_pix++) {
    94         *out_pix = pixel[*in_pix2];
     118        pixelN = PixelLookup(*in_pix2);
     119        *out_pix = pixel[pixelN];
    95120      }
    96       /* *out_pix = *(pixel + *in_pix2);  */
    97121    }
    98122    else {
    99123      for (i = i_start; i < i_end; i+= expand_out, in_pix2++, out_pix+= expand_out) {
    100         pixvalue = pixel[*in_pix2];
     124        pixelN   = PixelLookup(*in_pix2);
     125        pixvalue = pixel[pixelN];
    101126        out_pix2 = out_pix;
    102127        for (jj = 0; jj < expand_out; jj++, out_pix2+=(dx-expand_out)) {
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/Remap8.c

    r13320 r13436  
    11# include "Ximage.h"
    2 # define FRAC(a) ((a) - (int)(a))
     2
     3static float slope = 1.0;
     4static float start = 0.0;
     5static int MaxValue = 255;
     6
     7// XXX inline this if needed
     8static int PixelLookup(float value) {
     9  int out;
     10  out = MIN (MAX (slope * value - start, 0), MaxValue);
     11  return (out);
     12}
    313
    414void Remap8 (Graphic *graphic, KapaImageWidget *image, Matrix *matrix) {
     
    717  int i_start, i_end, j_start, j_end;
    818  int dropback;  /* this is a bit of a kludge... */
    9   int dx, dy, DX, DY;
     19  int dx, dy, DX, DY, pixelN;
    1020  double expand, Rx, Ry, X, Y;
    1121  int expand_in, expand_out;
    1222  unsigned char *out_pix, *out_pix2;
    13   unsigned char *in_pix,  *in_pix2;
     23  float *imdata, *in_pix,  *in_pix2;
    1424  unsigned long pixel[256], pixvalue;
    1525  unsigned long back;
    1626
    17   for (i = 0; i < 256; i++) { /* set up pixel array */
     27  // local array for pixel values
     28  for (i = 0; i < 256; i++) {
    1829    pixel[i] = graphic[0].cmap[i].pixel;
    1930  }
    2031  back = graphic[0].back;
    2132
     33  // define the color transform parameters
     34  MaxValue = graphic[0].Npixels - 1;
     35  if (image[0].range != 0.0) {
     36    slope = graphic[0].Npixels / image[0].range;
     37    start = graphic[0].Npixels * image[0].zero / image[0].range;
     38  } else {
     39    slope = 1.0;
     40    start = image[0].zero;
     41  }
     42
     43  // set up expansions
    2244  expand = expand_in = expand_out = 1.0;
    2345  if (image[0].expand == 0) /* set up expansions */
     
    3456  }
    3557
     58  // define the image boundaries
    3659  dx = image[0].picture.dx;
    3760  dy = image[0].picture.dy;
    3861  DX = matrix[0].Naxis[0];
    3962  DY = matrix[0].Naxis[1];
     63
    4064  /* X,Y are the image coordinates of the first image pixel */
    4165  X = MAX(0.5*(DX - dx*expand) - image[0].X, 0);
     
    6993
    7094  out_pix = (unsigned char *) image[0].picture.data;
    71   in_pix  = (unsigned char *) matrix[0].buffer + DX*(int)MAX(Y,0) + (int)MAX(X,0);
     95  imdata  = (float *) matrix[0].buffer;
     96  in_pix  = &imdata[(int)(DX*(int)MAX(Y,0) + (int)MAX(X,0))];
    7297
    7398  /********** below we do the mapping from buffer pixels (in) to picture pixels (out) **********/
     
    92117    if (expand_out == 1) {
    93118      for (i = i_start; i < i_end; i++, in_pix2+= expand_in, out_pix++) {
    94         *out_pix = pixel[*in_pix2];
     119        pixelN = PixelLookup(*in_pix2);
     120        *out_pix = pixel[pixelN];
    95121      }
    96       /* *out_pix = *(pixel + *in_pix2);  */
    97     }
    98     else {
     122    } else {
    99123      for (i = i_start; i < i_end; i+= expand_out, in_pix2++, out_pix+= expand_out) {
    100         pixvalue = pixel[*in_pix2];
     124        pixelN   = PixelLookup(*in_pix2);
     125        pixvalue = pixel[pixelN];
    101126        out_pix2 = out_pix;
    102127        for (jj = 0; jj < expand_out; jj++, out_pix2+=(dx-expand_out)) {
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/SetGraphData.c

    r13434 r13436  
    3434                  &graph[0].data.ymin,
    3535                  &graph[0].data.ymax);
     36
     37  KiiScanMessage (sock, "%f %f %f %f",
     38                  &graph[0].data.coords.pc1_1, &graph[0].data.coords.pc2_2,
     39                  &graph[0].data.coords.pc1_2, &graph[0].data.coords.pc2_1);
     40
     41  KiiScanMessage (sock, "%d %d %s",
     42                  &graph[0].data.flipeast, &graph[0].data.flipnorth,
     43                  graph[0].data.coords.ctype);
     44
     45  KiiScanMessage (sock, "%lf %lf %f %f %f %f",
     46                  &graph[0].data.coords.crval1,
     47                  &graph[0].data.coords.crval2,
     48                  &graph[0].data.coords.crpix1,
     49                  &graph[0].data.coords.crpix2,
     50                  &graph[0].data.coords.cdelt1,
     51                  &graph[0].data.coords.cdelt2);
     52
     53
    3654
    3755  xmin = graph[0].data.xmin;
     
    7795                  graph[0].data.etype, graph[0].data.ebar, graph[0].data.color,
    7896                  graph[0].data.lweight, graph[0].data.size);
     97
    7998  KiiSendMessage (sock, "%g %g %g %g",
    8099                  graph[0].data.xmin, graph[0].data.xmax,
    81100                  graph[0].data.ymin, graph[0].data.ymax);
    82101
     102  KiiSendMessage (sock, "%g %g %g %g",
     103                  graph[0].data.coords.pc1_1, graph[0].data.coords.pc2_2,
     104                  graph[0].data.coords.pc1_2, graph[0].data.coords.pc2_1);
     105
     106  KiiSendMessage (sock, "%d %d %s",
     107                  graph[0].data.flipeast, graph[0].data.flipnorth,
     108                  graph[0].data.coords.ctype);
     109
     110  KiiSendMessage (sock, "%g %g %g %g %g %g",
     111                  graph[0].data.coords.crval1,
     112                  graph[0].data.coords.crval2,
     113                  graph[0].data.coords.crpix1,
     114                  graph[0].data.coords.crpix2,
     115                  graph[0].data.coords.cdelt1,
     116                  graph[0].data.coords.cdelt2);
     117
    83118  return (TRUE);
    84119}
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/UpdatePointer.c

    r13401 r13436  
    66  int textpad;
    77  double  x, y, z;
     8  float *data;
    89  char line[100];
    910  Section *section;
     
    1819  if (image[0].MovePointer && InPicture ((XButtonEvent *)event, &image[0].picture)) {
    1920
     21    data = (float *) image[0].matrix.buffer;
    2022    Screen_to_Image (&x, &y, (double)event[0].x, (double)event[0].y, image);
    2123
    22     if ((x >= 0) && (x < image[0].matrix.Naxis[0]) && (y >= 0) && (y < image[0].matrix.Naxis[1])) {
    23       /*
    24       X = event[0].x - image[0].picture.x;
    25       Y = event[0].y - image[0].picture.y;
    26       pix = MIN (MAX (X + Y*image[0].picture.dx, 0), image[0].picture.dx*image[0].picture.dy - 1);
    27       z = image[0].range * image[0].picture.data[pix] / image[0].Npixels + image[0].zero;
    28       */
    29       z = -1;
    30     }
    31     else
    32       z = -1;
     24    z = -1;
     25    if (x < 0) goto skip;
     26    if (x >= image[0].matrix.Naxis[0]) goto skip;
     27    if (y < 0) goto skip;
     28    if (y >= image[0].matrix.Naxis[1]) goto skip;
     29    z = data[(int)(y)*image[0].matrix.Naxis[0] + (int)(x)];
     30
     31  skip:
    3332    image[0].x = x;
    3433    image[0].y = y;
     
    4544    CrossHairs (graphic, image);
    4645    XFlush (graphic[0].display);
    47    
    4846  }
    4947 
     
    5654    XSetForeground (graphic[0].display, graphic[0].gc, graphic[0].fore);
    5755    bzero (line, 100);
    58     sprintf (line, "%25.2f", z);
     56    sprintf (line, "%22.3f", z);
    5957    XDrawString (graphic[0].display, graphic[0].window, graphic[0].gc,
    6058                 image[0].text_x + PAD1, image[0].text_y + textpad + PAD1,
  • branches/kapa-mods-2007-05/Ohana/src/kapa2/src/bDrawOverlay.c

    r13432 r13436  
    2323    expand = fabs((double)image[0].expand);
    2424  }
    25   /*
    26      X = 0.5*image[0].matrix.Naxis[0] - expand*((int)(0.5*image[0].picture.dx + 0.5) - 0.0) - image[0].X;
    27      Y = 0.5*image[0].matrix.Naxis[1] - expand*((int)(0.5*image[0].picture.dy + 0.5) - 0.0) - image[0].Y; 
    28      X0 =  (image[0].X + 1 - (int)(0.5*image[0].matrix.Naxis[0] + 0.5) - X + (int)X)/expand + image[0].picture.x + 0.5*image[0].picture.dx;
    29      Y0 =  (image[0].Y + 1 - (int)(0.5*image[0].matrix.Naxis[1] + 0.5) - Y + (int)Y)/expand + image[0].picture.y + 0.5*image[0].picture.dy;
    30   */
    3125
    3226  Image_to_Screen (&X0, &Y0, 0.0, 0.0, image);
  • branches/kapa-mods-2007-05/Ohana/src/libkapa/src/KapaWindow.c

    r13434 r13436  
    120120                  data[0].etype, data[0].ebar, data[0].color,
    121121                  data[0].lweight, data[0].size);
     122
    122123  KiiSendMessage (fd, "%g %g %g %g",
    123124                  data[0].xmin, data[0].xmax,
    124125                  data[0].ymin, data[0].ymax);
     126
     127  KiiSendMessage (fd, "%g %g %g %g",
     128                  data[0].coords.pc1_1, data[0].coords.pc2_2,
     129                  data[0].coords.pc1_2, data[0].coords.pc2_1);
     130
     131  KiiSendMessage (fd, "%d %d %s",
     132                  data[0].flipeast, data[0].flipnorth,
     133                  data[0].coords.ctype);
     134
     135  KiiSendMessage (fd, "%g %g %g %g %g %g",
     136                  data[0].coords.crval1,
     137                  data[0].coords.crval2,
     138                  data[0].coords.crpix1,
     139                  data[0].coords.crpix2,
     140                  data[0].coords.cdelt1,
     141                  data[0].coords.cdelt2);
     142
    125143  KiiWaitAnswer (fd, "DONE");
    126144  return (TRUE);
     
    138156                  &data[0].etype, &data[0].ebar, &data[0].color,
    139157                  &data[0].lweight, &data[0].size);
     158
    140159  KiiScanMessage (fd, "%lf %lf %lf %lf",
    141160                  &data[0].xmin, &data[0].xmax,
    142161                  &data[0].ymin, &data[0].ymax);
     162
     163  KiiScanMessage (fd, "%f %f %f %f",
     164                  &data[0].coords.pc1_1, &data[0].coords.pc2_2,
     165                  &data[0].coords.pc1_2, &data[0].coords.pc2_1);
     166
     167  KiiScanMessage (fd, "%d %d %s",
     168                  &data[0].flipeast, &data[0].flipnorth,
     169                  data[0].coords.ctype);
     170
     171  KiiScanMessage (fd, "%lf %lf %f %f %f %f",
     172                  &data[0].coords.crval1,
     173                  &data[0].coords.crval2,
     174                  &data[0].coords.crpix1,
     175                  &data[0].coords.crpix2,
     176                  &data[0].coords.cdelt1,
     177                  &data[0].coords.cdelt2);
     178
    143179  KiiWaitAnswer (fd, "DONE");
    144180  return (TRUE);
     
    240276
    241277  KiiSendCommand (fd, 4, "GLIM");
    242   KiiScanMessage (fd, "%lf %lf", dx, dy);
     278  KiiScanMessage (fd, "%f %f", dx, dy);
    243279  KiiWaitAnswer (fd, "DONE");
    244280  return (TRUE);
  • branches/kapa-mods-2007-05/Ohana/src/libkapa/src/KiiPicture.c

    r13434 r13436  
    22
    33int KiiNewPicture1D (int fd, KiiImage *image, KapaImageData *data, Coords *coords) {
     4
     5  int i;
     6  int Npix, Ncolors, NNcolors, size;
     7  float *in, min, max;
     8  char *out, *outbuffer;
     9  double a1, a2;
     10
     11  Npix = image[0].Nx*image[0].Ny;
     12
     13  KiiSendCommand (fd, 4, "READ"); /* tell kapa to look for the incoming image */
     14  KiiScanMessage (fd, "%d", &Ncolors);
     15
     16  in = image[0].data1d;
     17
     18  /* these are for a future upgrade */
     19  min = max = 0.0;
     20  size = Npix*sizeof(float);
     21
     22  /* done with the conversion, now send kapa the converted picture */
     23  KiiSendMessage (fd, "%8d %8d", image[0].Nx, image[0].Ny);
     24  KiiSendMessage (fd, "-32 1 0.0 1.0");
     25  KiiSendMessage (fd, "%f %f %s %s", data[0].zero, data[0].range, data[0].name, data[0].file);
     26  KiiSendMessage (fd, "%f %f %d ", min, max, size);
     27  KiiSendMessage (fd, "%f %f %g %g %g ", coords[0].crval1, coords[0].crpix1, coords[0].cdelt1, coords[0].pc1_1, coords[0].pc1_2);
     28  KiiSendMessage (fd, "%f %f %g %g %g ", coords[0].crval2, coords[0].crpix2, coords[0].cdelt2, coords[0].pc2_1, coords[0].pc2_2);
     29  KiiSendMessage (fd, "%s", coords[0].ctype);
     30
     31  /* send the image data */
     32  write (fd, image[0].data1d, size);
     33
     34  KiiWaitAnswer (fd, "DONE");
     35  return (TRUE);
     36}
     37
     38int KiiNewPicture1D_8bit (int fd, KiiImage *image, KapaImageData *data, Coords *coords) {
    439
    540  int i;
  • branches/kapa-mods-2007-05/Ohana/src/opihi/dvo/dmt.c

    r13432 r13436  
    44int dmt (int argc, char **argv) {
    55 
    6   int i, m, k, N, SaveVectors;
     6  int i, m, k, N, kapa, SaveVectors;
    77  int Nsec, Nsecfilt, NPTS;
    88  double Radius;
  • branches/kapa-mods-2007-05/Ohana/src/opihi/lib.data/style_args.c

    r13394 r13436  
    44int style_args (Graphdata *graphmode, int *argc, char **argv, int *kapa) {
    55 
    6   int N, Ngraph;
    7   char *name;
     6  int N;
     7  char *colorName;
     8  char *kapaName;
    89
    9   name = NULL;
     10  kapaName = NULL;
    1011  if ((N = get_argument (*argc, argv, "-n"))) {
    1112    remove_argument (N, argc, argv);
    12     name = strcreate (argv[N]);
     13    kapaName = strcreate (argv[N]);
    1314    remove_argument (N, argc, argv);
    1415  }
    15   if (!GetGraph (graphmode, kapa, name)) return (FALSE);
    16   FREE (name);
     16  if (!GetGraph (graphmode, kapa, kapaName)) return (FALSE);
     17  FREE (kapaName);
    1718
    1819  if (*argc == 1) {
    19     name = KapaColorName (graphmode[0].color);
    20     gprint (GP_ERR, "current style (%d): -x %d -c %s -pt %d -lt %d -lw %f -sz %f\n", Ngraph,
    21              graphmode[0].style, name, graphmode[0].ptype,
     20    kapaName = GetKapaName();
     21    colorName = KapaColorName (graphmode[0].color);
     22    gprint (GP_ERR, "current style (%s): -x %d -c %s -pt %d -lt %d -lw %f -sz %f\n", kapaName,
     23             graphmode[0].style, colorName, graphmode[0].ptype,
    2224             graphmode[0].ltype, graphmode[0].lweight,
    2325             graphmode[0].size);
Note: See TracChangeset for help on using the changeset viewer.