home *** CD-ROM | disk | FTP | other *** search
/ Amiga Magazin: Amiga-CD 2000 April & May / AMIGA_2000_04.iso / patches / mesa3.1 / mesa-3_1.lha / src / AOS / palettes / quickgrey.c < prev    next >
Encoding:
Text File  |  1999-07-01  |  3.3 KB  |  117 lines

  1. example differences to GetPen (2189 accesses)
  2. this is the err_sum function, below are the
  3. err_function functions:
  4.  
  5.     if ((err = pen - err_function) < 0)
  6.       err_diff -= err;
  7.     else
  8.       err_diff += err;
  9.  
  10. //  grey-level = (21 * R) + (71 * G) + (7 * B) / 99
  11. //  return amesa->Palette[((21 * R) + (71 * G) + (7 * B)) / (99 << 2)].PenNo;                /* 64 grey-levels instead of 256 */
  12.  
  13.   6921
  14.   6704
  15.   6743
  16.  
  17. //  grey-level = (27 * R) + (91 * G) + (9 * B) / 128
  18. //  return amesa->Palette[((27 * R) + (91 * G) + (9 * B)) >> 9].PenNo;                    /* c * 1.28 / 1.28 */
  19.  
  20.   7541
  21.   7356
  22.   7400
  23.  
  24. //  grey-level = (24 * R) + (96 * G) + (9 * B) / 128
  25. //  return amesa->Palette[((R << 4) + (R << 3) + (G << 6) + (G << 5) + (B << 3) + B) >> 9].PenNo;    /* aprox. to shifts */
  26.  
  27.   5698
  28.   5480
  29.   5513
  30.  
  31. //  grey-level = (32 * R) + (96 * G) + (9 * B) / 128
  32. //  return amesa->Palette[((R << 5) + (G << 6) + (G << 5) + (B << 3) + B) >> 9].PenNo;            /* aprox. to shifts */
  33.  
  34.   3462
  35.   2945
  36.   2963
  37.  
  38. //  grey-level = (32 * R) + (96 * G) + (10 * B) / 128
  39. //  return amesa->Palette[((R << 5) + (G << 6) + (G << 5) + (B << 3) + (B << 1)) >> 9].PenNo;        /* aprox. to shifts */
  40.  
  41.   3398
  42.   2860
  43.   2877
  44.  
  45. //  grey-level = (32 * R) + (97 * G) + (9 * B) / 128
  46. //  return amesa->Palette[((R << 5) + (G << 6) + (G << 5) + G + (B << 3) + B) >> 9].PenNo;        /* aprox. to shifts */
  47.  
  48.   3284
  49.   2711
  50.   2728
  51.  
  52. //  grey-level = (32 * R) + (98 * G) + (9 * B) / 128
  53. //  return amesa->Palette[((R << 5) + (G << 6) + (G << 5) + (G << 1) + (B << 3) + B) >> 9].PenNo;    /* aprox. to shifts */
  54. //  return amesa->Palette[((R <<= 5) += (G <<= 1) + (G <<= 4) + (G <<= 1) + (B <<= 3) + B) >> 9].PenNo;    /* aprox. to shifts */
  55.   __asm__("
  56.     .equ    paloffs,%4
  57.     .equ    amesa,%3
  58.     .equ    pal,a0
  59.     .equ    r,%1
  60.     .equ    g,%0
  61.     .equ    b,%2
  62.  
  63.     lslw    #5,r        |                                                  (r << 5)
  64.     addw    b,r        |                                              b + (r << 5)
  65.     lslw    #3,b        |                                   (b << 3)
  66.     addw    b,r        |                                   (b << 3) + b + (r << 5)
  67.     addw    g,g        |                        (g << 1)
  68.     addw    g,r        |                        (g << 1) + (b << 3) + b + (r << 5)
  69.     lslw    #4,g        |             (g << 5)
  70.     addw    g,r        |             (g << 5) + (g << 1) + (b << 3) + b + (r << 5)
  71.     addw    g,g        |  (g << 6)
  72.     addw    g,r        |  (g << 6) + (g << 5) + (g << 1) + (b << 3) + b + (r << 5)
  73.     lsrw    #9,r        | ((g << 6) + (g << 5) + (g << 1) + (b << 3) + b + (r << 5)) >> 9
  74.     moveb    amesa@(paloffs+9,r:w:8),r"
  75.     : "=d" (r)
  76.     : "d" (r)
  77.     , "d" (g)
  78.     , "d" (b)
  79.     , "a" (amesa)
  80.     , "" (offsetof(amesa, Palette))
  81.     : "a0", "cc");
  82.  
  83.   3185
  84.   2555
  85.   2569
  86.  
  87. //  grey-level = (32 * R) + (100 * G) + (9 * B) / 128
  88. //  return amesa->Palette[((R << 5) + (G << 6) + (G << 5) + (G << 2) + (B << 3) + B) >> 9].PenNo;    /* aprox. to shifts */
  89.  
  90.   3338
  91.   2615
  92.   2625
  93.  
  94. //  grey-level = (32 * R) + (104 * G) + (9 * B) / 128
  95. //  return amesa->Palette[((R << 5) + (G << 6) + (G << 5) + (G << 3) + (B << 3) + B) >> 9].PenNo;    /* aprox. to shifts */
  96.  
  97.   4828
  98.   4636
  99.   4653
  100.  
  101. //  grey-level = (33 * R) + (96 * G) + (9 * B) / 128
  102. //  return amesa->Palette[((R << 5) + R + (G << 6) + (G << 5) + (B << 3) + B) >> 9].PenNo;            /* aprox. to shifts */
  103.  
  104.   3381
  105.   2837
  106.   2854
  107.  
  108. //  grey-level = (21 * R) + (71 * G) + (7 * B) / 99
  109. //  return amesa->Palette[(amesa->MatchErrors[R][0] +
  110. //               amesa->MatchErrors[G][1] +
  111. //               amesa->MatchErrors[B][2]) / 396].PenNo;                    /* build from tables */
  112.  
  113.   6221
  114.   5886
  115.   5923
  116.  
  117.