home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR2 / DVPG30FS.ZIP / OLD-CODE.C < prev    next >
Text File  |  1993-11-28  |  6KB  |  144 lines

  1.  
  2. return;
  3.  
  4. image_x_offset = image(image_x_dim >> 1);
  5.  
  6.  
  7. /* now the actual image width in pixels when displayed
  8.  * this must be corrected in the cases of a S/W zoom to ensure that there is no remainder in # of picture elements drawn -> hence mod fn */
  9. image_x_dim = (x_size - picture_x_offset) * zoom_inc_factor / shrink ;
  10. if (image_x_dim >= x_max)    /* case of picture > screen */
  11.     image_x_dim = x_max - x_max % zoom_inc_factor;
  12. else{
  13.     image_x_dim = (x_size - picture_x_offset) / shrink * zoom_inc_factor;
  14.     if (image_x_dim > x_max) image_x_dim = x_max - x_max % zoom_inc_factor;
  15.     }
  16.  
  17. image_y_dim = (y_size - picture_y_offset) * zoom_inc_factor / shrink ;
  18. if (image_y_dim >= y_max)
  19.     image_y_dim = y_max - y_max % zoom_inc_factor;
  20. else{
  21.     image_y_dim = (y_size - picture_y_offset) / shrink * zoom_inc_factor;
  22.     if (image_y_dim > y_max) image_y_dim = y_max - y_max % zoom_inc_factor;
  23.     }
  24.  
  25.  
  26. /* these are the offsets of the image into the viewing window (if image < screen size)
  27.  *  - the only case not handled is having the image larger than the screen
  28.  */
  29. image_x_offset = (x_max - image_x_dim) >> 1;
  30. image_y_offset = (y_max - image_y_dim) >> 1;
  31.  
  32. /* now the maximum pixel values for the lower right corner of the image */
  33. image_x_max = image_x_dim + image_x_offset;
  34. image_y_max = image_y_dim + image_y_offset;
  35.  
  36.  
  37. /* now do the image specific info
  38.  * ie what row do we start showing the image at?  picture_y_offset, picture_x_offset
  39.  * what is the maximum row?  the size ?    picture_max_y, picture_max_x, picture_x_dim, picture_y_dim
  40.  */
  41.  
  42. if (picture_y_dim * zoom_inc_factor / shrink < y_max){    /* picture is now < screen in this dimension */
  43.     i = y_max * shrink / zoom_inc_factor - picture_x_dim;        /* new maximum width */
  44.     if (i < 0) i = 0;
  45.     picture_y_offset = i >> 1;        /* reset size to get full image around the center of the screen */
  46.     }
  47. if (picture_x_dim * zoom_inc_factor / shrink < x_max){    /* picture is now < screen in this dimension */
  48.     i = x_max * shrink / zoom_inc_factor - picture_x_dim;        /* new maximum width */
  49.     if (i < 0) i = 0;
  50.     picture_x_offset = i >> 1;
  51.     }
  52.  
  53. picture_x_dim = image_x_dim * shrink / zoom_inc_factor;    /* limit image to size of the screen */
  54. if (picture_x_dim > (x_size - picture_x_offset))
  55.     picture_x_dim = (x_size - picture_x_offset) * shrink / zoom_inc_factor;
  56.  
  57. picture_y_dim = image_y_dim * shrink / zoom_inc_factor;
  58. if (picture_y_dim > (y_size - picture_y_offset))
  59.     picture_y_dim = (y_size - picture_y_offset) * shrink / zoom_inc_factor;
  60.  
  61. picture_max_x = picture_x_dim + picture_x_offset;
  62. picture_max_y = picture_y_dim + picture_y_offset;
  63.  
  64.  
  65. image_y_offset = 0;
  66. image_y_dim = mod_limit(y_max);
  67. picture_y_dim = image_y_dim * shrink / zoom_inc_factor;
  68. if (picture_y_dim > picture_y_size){
  69.     picture_y_dim = mod_limit(picture_y_size);
  70.     image_y_dim = picture_y_dim * zoom_inc_factor / shrink;
  71.     image_y_offset = (y_max - image_y_dim) >> 1;
  72.     }
  73.  
  74. 15 bit tinting routine (old)
  75.         data = peek(video_mem_seg, (unsigned int) offset);
  76.  
  77.         red = (unsigned int) (data & 0x1f) << 3;        /* convert from 5 bits to 8 */
  78.         red += (signed char) tint_table[0][red];
  79.  
  80.         green = (unsigned int) (data & 0x3e0) >> 2;
  81.         green += (signed char) tint_table[1][green];
  82.  
  83.         blue = (unsigned int) (data & 0x7c00) >> 7;
  84.         blue += (signed char) tint_table[2][blue];
  85.  
  86.         if (red < 256 && green < 256 && blue < 256 && red >= 0 && green >= 0 && blue >= 0){
  87.             poke(video_mem_seg, offset, (red >> 3) + ((green << 2) & 0x3e0) + ((blue << 7) & 0x7c00));
  88.             }
  89.     { register JSAMPROW elemptr;
  90.       register DCTELEM *localblkptr = block;
  91.       register JSAMPLE *range_limit = cinfo->sample_range_limit +
  92.                         CENTERJSAMPLE;
  93.  
  94. #if DCTSIZE != 8
  95.       register int elemc;
  96. #endif
  97.       register int elemr;
  98.  
  99.       for (elemr = 0; elemr < DCTSIZE; elemr++) {
  100.          elemptr = srowptr[elemr] + (bi * DCTSIZE);
  101. #if DCTSIZE == 8        /* unroll the inner loop */
  102.          *elemptr++ = range_limit[*localblkptr++];
  103.          *elemptr++ = range_limit[*localblkptr++];
  104.          *elemptr++ = range_limit[*localblkptr++];
  105.          *elemptr++ = range_limit[*localblkptr++];
  106.          *elemptr++ = range_limit[*localblkptr++];
  107.          *elemptr++ = range_limit[*localblkptr++];
  108.          *elemptr++ = range_limit[*localblkptr++];
  109.          *elemptr = range_limit[*localblkptr++];
  110. #else
  111.          for (elemc = DCTSIZE; elemc > 0; elemc--) {
  112.             *elemptr++ = range_limit[*localblkptr++];
  113.          }
  114. #endif
  115.       }
  116.         range_limit = cinfo->sample_range_limit + GETJSAMPLE(inptr0[col*2]);
  117.         red = range_limit[cb];    /* blue */
  118.         green = range_limit[cg];
  119.         blue = range_limit[cr];    /* red */
  120.         if (tint_loaded) tint_graphics();
  121.         * int_ptr++ = (red >> 3) + ((green << 2) & 0x3e0) + ((blue << 7) & 0xfc00);
  122.  
  123.         range_limit = cinfo->sample_range_limit + GETJSAMPLE(inptr0[col*2+1]);
  124.         red = range_limit[cb];    /* blue */
  125.         green = range_limit[cg];
  126.         blue = range_limit[cr];    /* red */
  127.         if (tint_loaded) tint_graphics();
  128.         * int_ptr++ = (red >> 3) + ((green << 2) & 0x3e0) + ((blue << 7) & 0xfc00);
  129.  
  130. /* row #2 */
  131.         range_limit = cinfo->sample_range_limit + GETJSAMPLE(inptr00[col*2]);
  132.         red = range_limit[cb];    /* blue */
  133.         green = range_limit[cg];
  134.         blue = range_limit[cr];    /* red */
  135.         if (tint_loaded) tint_graphics();
  136.         * int_ptr2++ = (red >> 3) + ((green << 2) & 0x3e0) + ((blue << 7) & 0xfc00);
  137.  
  138.         range_limit = cinfo->sample_range_limit + GETJSAMPLE(inptr00[col*2+1]);
  139.         red = range_limit[cb];    /* blue */
  140.         green = range_limit[cg];
  141.         blue = range_limit[cr];    /* red */
  142.         if (tint_loaded) tint_graphics();
  143.         * int_ptr2++ = (red >> 3) + ((green << 2) & 0x3e0) + ((blue << 7) & 0xfc00);
  144.