IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 40558


Ignore:
Timestamp:
Nov 2, 2018, 10:48:14 AM (8 years ago)
Author:
eugene
Message:

add alpha option for png

Location:
trunk/Ohana/src
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/kapa2/include/structures.h

    r40501 r40558  
    137137  double lweight, size;
    138138  double x0, x1, y0, y1;  /* limits for this object */
     139  float alpha;
    139140} Gobjects;
    140141
  • trunk/Ohana/src/kapa2/src/bDrawFrame.c

    r40118 r40558  
    3737    // P *= (1 + 0.25*lweight);
    3838
    39     bDrawSetStyle (buffer, color, lweight, 0);
     39    bDrawSetStyle (buffer, color, lweight, 0, 1.0);
    4040    // function about sets color and weight
    4141    // bDrawRotTextInit does not exist
     
    5353        // should the font weight stay the same?
    5454        // XXX probably not needed now:
    55         // bDrawSetStyle (buffer, color, lweight, 0);
     55        // bDrawSetStyle (buffer, color, lweight, 0, 1.0);
    5656      }
    5757      FREE (ticks);
  • trunk/Ohana/src/kapa2/src/bDrawIt.c

    r38553 r40558  
    1616  // the dx,dy size. 
    1717  buffer = bDrawBufferCreate (graphic->dxwin, graphic->dywin, Nbyte, palette, Npalette);
    18   bDrawSetStyle (buffer, black, 0, 0);
     18  bDrawSetStyle (buffer, black, 0, 0, 1.0);
    1919 
    2020  // reset the sizes for all sections
  • trunk/Ohana/src/kapa2/src/bDrawObjects.c

    r40165 r40558  
    2323  }
    2424  bDrawColor black = KapaColorByName ("black");
    25   bDrawSetStyle (buffer, black, 0, 0);
     25  bDrawSetStyle (buffer, black, 0, 0, 1.0);
    2626  return (TRUE);
    2727}
     
    3030 
    3131  int weight = MAX (0, MIN (10, object->lweight));
    32   bDrawSetStyle (buffer, object->color, weight, object->ltype);
     32  bDrawSetStyle (buffer, object->color, weight, object->ltype, 1.0);
    3333 
    3434  switch (object->style) {
  • trunk/Ohana/src/kapa2/src/bDrawOverlay.c

    r39457 r40558  
    1414  /* translate color to bDrawColors : image[0].overlay[N].color */
    1515  color = KapaColorByName (name[N]);
    16   bDrawSetStyle (buffer, color, 0, 0);
     16  bDrawSetStyle (buffer, color, 0, 0, 1.0);
    1717 
    1818  expand = 1.0;
     
    9999 
    100100  /* translate color to bDrawColors : image[0].overlay[N].color */
    101   bDrawSetStyle (buffer, color, 0, 0);
     101  bDrawSetStyle (buffer, color, 0, 0, 1.0);
    102102}
    103103
  • trunk/Ohana/src/libkapa/include/kapa.h

    r40517 r40558  
    177177  int bWeight;
    178178  int bType;
     179  float alpha;
    179180  bDrawColor bColor;
    180181  bDrawColor bColor_R;
     
    293294void bDrawSetBuffer (bDrawBuffer *buffer);
    294295void bDrawSetColor (bDrawBuffer *buffer, bDrawColor color);
    295 void bDrawSetStyle (bDrawBuffer *buffer, bDrawColor color, int lw, int lt);
     296void bDrawSetStyle (bDrawBuffer *buffer, bDrawColor color, int lw, int lt, float alpha);
    296297void bDrawPoint (bDrawBuffer *buffer, int x, int y);
    297298void bDrawPointf (bDrawBuffer *buffer, float x, float y);
  • trunk/Ohana/src/libkapa/src/bDrawFuncs.c

    r40165 r40558  
    8686}
    8787
    88 void bDrawSetStyle (bDrawBuffer *buffer, bDrawColor color, int lw, int lt) {
     88void bDrawSetStyle (bDrawBuffer *buffer, bDrawColor color, int lw, int lt, float alpha) {
    8989  bDrawSetColor (buffer, color);
    9090
    9191  buffer->bWeight = lw;
    9292  buffer->bType = lt;
    93   return;
    94 }
     93  buffer->alpha = alpha;
     94  return;
     95}
     96
     97// if values were from 0.0 = white to 1.0 = black, the math would be:
     98// out = (1 - alpha) * in + alpha * new
     99// but values go from 0.0 = black to 1.0 = white
     100// rin = 1 - in, rnew = 1 - new
     101// rout = (1 - alpha) * (1 - in) + alpha (1 - new)
     102// out = 1 - ((1 - alpha) * (1 - in) + alpha (1 - new))
     103// out = 1 - ((1 - in - alpha + in * alpha) + alpha - alpha * new)
     104// out = 1 - ((1 - in + in*alpha - alpha*new))
     105// out = in - in*alpha + alpha*new
    95106
    96107// draw a point in the current color
     108// adding in an alpha-channel: out = (1 - alpha) * in + alpha * new
     109// bcolor_R,G,B are values in the range 0x00 - 0xff
    97110void bDrawPoint (bDrawBuffer *buffer, int x, int y) {
     111
     112  float alpha = buffer->alpha;
     113  float beta = (1.0 - alpha);
    98114
    99115  // myAssert(buffer[0].Nbyte == 1, "invalid depth");
     
    105121    buffer[0].pixels[y][x] = buffer->bColor;
    106122  } else {
    107     buffer[0].pixels[y][3*x+0] = buffer->bColor_R;
    108     buffer[0].pixels[y][3*x+1] = buffer->bColor_G;
    109     buffer[0].pixels[y][3*x+2] = buffer->bColor_B;
     123    // buffer[0].pixels[y][3*x+0] = buffer->bColor_R;
     124    // buffer[0].pixels[y][3*x+1] = buffer->bColor_G;
     125    // buffer[0].pixels[y][3*x+2] = buffer->bColor_B;
     126    buffer[0].pixels[y][3*x+0] = MAX (0x00, MIN(0xff, beta * buffer[0].pixels[y][3*x+0] + alpha * buffer->bColor_R));
     127    buffer[0].pixels[y][3*x+1] = MAX (0x00, MIN(0xff, beta * buffer[0].pixels[y][3*x+1] + alpha * buffer->bColor_G));
     128    buffer[0].pixels[y][3*x+2] = MAX (0x00, MIN(0xff, beta * buffer[0].pixels[y][3*x+2] + alpha * buffer->bColor_B));
    110129  }
    111130  return;
     
    268287  if (Y >= buffer[0].Ny) return;
    269288
     289  float alpha = buffer->alpha;
     290  float beta = (1.0 - alpha);
     291
    270292  for (i = X1; i < X2; i++) {
    271293    if (i <  0) continue;
     
    274296      buffer[0].pixels[Y][i] = buffer->bColor;
    275297    } else {
    276       buffer[0].pixels[Y][3*i+0] = buffer->bColor_R;
    277       buffer[0].pixels[Y][3*i+1] = buffer->bColor_G;
    278       buffer[0].pixels[Y][3*i+2] = buffer->bColor_B;
     298      buffer[0].pixels[Y][3*i+0] = MAX (0x00, MIN(0xff, beta * buffer[0].pixels[Y][3*i+0] + alpha * buffer->bColor_R));
     299      buffer[0].pixels[Y][3*i+1] = MAX (0x00, MIN(0xff, beta * buffer[0].pixels[Y][3*i+1] + alpha * buffer->bColor_G));
     300      buffer[0].pixels[Y][3*i+2] = MAX (0x00, MIN(0xff, beta * buffer[0].pixels[Y][3*i+2] + alpha * buffer->bColor_B));
     301      // buffer[0].pixels[Y][3*i+0] = buffer->bColor_R;
     302      // buffer[0].pixels[Y][3*i+1] = buffer->bColor_G;
     303      // buffer[0].pixels[Y][3*i+2] = buffer->bColor_B;
    279304    }
    280305  }
     
    288313  if (X <  0) return;
    289314  if (X >= buffer[0].Nx) return;
     315
     316  float alpha = buffer->alpha;
     317  float beta = (1.0 - alpha);
    290318
    291319  for (i = Y1; i < Y2; i++) {
     
    295323      buffer[0].pixels[i][X] = buffer->bColor;
    296324    } else {
    297       buffer[0].pixels[i][3*X+0] = buffer->bColor_R;
    298       buffer[0].pixels[i][3*X+1] = buffer->bColor_G;
    299       buffer[0].pixels[i][3*X+2] = buffer->bColor_B;
     325      buffer[0].pixels[i][3*X+0] = MAX (0x00, MIN(0xff, beta * buffer[0].pixels[i][3*X+0] + alpha * buffer->bColor_R));
     326      buffer[0].pixels[i][3*X+1] = MAX (0x00, MIN(0xff, beta * buffer[0].pixels[i][3*X+1] + alpha * buffer->bColor_G));
     327      buffer[0].pixels[i][3*X+2] = MAX (0x00, MIN(0xff, beta * buffer[0].pixels[i][3*X+2] + alpha * buffer->bColor_B));
     328      // buffer[0].pixels[i][3*X+0] = buffer->bColor_R;
     329      // buffer[0].pixels[i][3*X+1] = buffer->bColor_G;
     330      // buffer[0].pixels[i][3*X+2] = buffer->bColor_B;
    300331    }
    301332  }
  • trunk/Ohana/src/libkapa/src/bDrawRotFont.c

    r39457 r40558  
    189189  X2 = MAX (X, X2);
    190190
    191   // bDrawSetStyle (color, 0, 0);
    192191  if (scale > 1) {
    193192    for (i = X1; i <= X2; i+=1) {
     
    215214    }
    216215  }
    217   // bDrawSetStyle (black, 0, 0);
    218216  return (TRUE);
    219217}
Note: See TracChangeset for help on using the changeset viewer.