home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1999 Spring / macformat-077.iso / Shareware Plus / Development / SpriteWorld 2.2 / SpriteWorld files / Utils / Brian's Extensions / SWTranslucentBlitters.h < prev   
Encoding:
Text File  |  1999-01-14  |  4.3 KB  |  162 lines  |  [TEXT/CWIE]

  1. ///--------------------------------------------------------------------------------------
  2. //    SWTranslucentBlitters.h
  3. ///--------------------------------------------------------------------------------------
  4.  
  5.  
  6. #ifndef __TRANSLUCENCY__
  7. #define __TRANSLUCENCY__
  8.  
  9. #ifndef __SWCOMMON__
  10. #include "SWCommonHeaders.h"
  11. #endif
  12.  
  13. #ifndef __SPRITEWORLDUTILS__
  14. #include "SpriteWorldUtils.h"
  15. #endif
  16.  
  17. #ifndef __QUICKDRAW__
  18. #include <QuickDraw.h>
  19. #endif
  20.  
  21. #ifndef __SPRITEFRAME__
  22. #include "SpriteFrame.h"
  23. #endif
  24.  
  25. #ifndef __SPRITE__
  26. #include "Sprite.h"
  27. #endif
  28.  
  29. #ifndef __SPRITE__
  30. #include "Sprite.h"
  31. #endif
  32.  
  33. #ifndef __BLITPIXIE__
  34. #include "BlitPixie.h"
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41. #if __MWERKS__
  42.     #define SWInline inline
  43. #else
  44.     #define SWInline
  45. #endif
  46.     
  47. #if defined(powerc) || defined(__powerc)
  48. #define USE_PPC_ASSEMBLY 1
  49. #else 
  50. #define USE_PPC_ASSEMBLY 0
  51. #endif
  52.  
  53.  
  54.     
  55. ///--------------------------------------------------------------------------------------
  56. //    define the tables used for colors
  57. ///--------------------------------------------------------------------------------------
  58.  
  59. #define ABS(x) (((x)<0) ? (-(x)) : (x))
  60. #define kNumberOfColors 256
  61.  
  62. extern unsigned char*    g8BitTranslucencyTable;
  63. extern RGBColor         kSystemColorArray[kNumberOfColors];
  64. extern int gNumberOf8BitTranslucencyLevels;
  65.  
  66.  
  67. ///--------------------------------------------------------------------------------------
  68. //    8-bit color table function prototypes
  69. ///--------------------------------------------------------------------------------------
  70.  
  71. unsigned char    ColorToIndex(long curRed, long curGreen, long curBlue);
  72. long     CalcNewColorValue (long sourceValue, long blendValue, float ratio);
  73. void     Calc8BitTranslucencyTable (int numberOfLevels);
  74. void     CreateCLUTTable(void);
  75.  
  76. // The public functions
  77. OSErr     SWLoadOrCreate8BitTranslucencyTable (int numberOfLevels);
  78. OSErr     SWCreate8BitTranslucencyTable (int numberOfLevels);
  79. void     SWDispose8BitTranslucencyTable(void);
  80. OSErr     SWLoad8BitTranslucencyTable(short resourceID);
  81. OSErr     SWSave8BitTranslucencyTable(short resourceID);
  82.  
  83.  
  84. ///--------------------------------------------------------------------------------------
  85. //    Function prototypes for translucent 8-bit blitters
  86. ///--------------------------------------------------------------------------------------
  87.  
  88. SW_FUNC OSErr SWSetSpriteTranslucencyLevel(
  89.     SpritePtr srcSpriteP,
  90.     unsigned long level);
  91.  
  92. SW_FUNC unsigned long SWGetSpriteTranslucencyLevel(
  93.     SpritePtr srcSpriteP);
  94.  
  95. ///--------------------------------------------------------------------------------------
  96. //    Function prototypes for translucent 8-bit blitters
  97. ///--------------------------------------------------------------------------------------
  98.  
  99. SW_FUNC void BlitPixie8BitTranslucentMaskDrawProc(
  100.     FramePtr srcFrameP, 
  101.     FramePtr dstFrameP, 
  102.     Rect *srcRect, 
  103.     Rect *dstRect);
  104.  
  105. SW_FUNC void BlitPixieTranslucentMask8Bit(
  106.     register PixelPtr srcPixelP,
  107.     register PixelPtr dstPixelP,
  108.     register PixelPtr maskPixelP,
  109.     register unsigned long rowsToCopy,
  110.     register unsigned long numBytesPerRow,
  111.     register unsigned long srcOffset,
  112.     register unsigned long dstOffset,
  113.     unsigned long translucencyLevel);
  114.  
  115. unsigned char SWInline TranslucencyConvertChar (
  116.     register unsigned char srcPixel, 
  117.     register unsigned char destPixel, 
  118.     register unsigned long maskPixel,
  119.     register unsigned char *tableAtLevel);
  120.  
  121. unsigned long SWInline TranslucencyConvertLong (
  122.     register unsigned long srcPixel, 
  123.     register unsigned long destPixel, 
  124.     register unsigned long maskPixel,
  125.     register unsigned char *tableAtLevel);
  126.  
  127. unsigned long Blend8BitPixels (int level, int source, int dest);
  128.  
  129. ///-----------------------------------------------
  130. // 16 Bit Bliiters
  131.  
  132. #define kNumberOf16BitTranslucencyLevels 32
  133. extern unsigned char *g16BitTranslucencyTable;
  134.  
  135. OSErr SWCreate16BitTranslucencyTable( void );
  136. void SWDispose16BitTranslucencyTable( void );
  137.  
  138. void BlitPixieTranslucencyMask16Bit (    
  139.                 register unsigned char *lookup_ptr,
  140.                 register short *srcPtr,
  141.                 register short *dstPtr,
  142.                 register short *maskPtr,
  143.                 register unsigned long heightAndWidth,
  144.                 register long srcRowBytes,
  145.                 register long dstRowBytes,
  146.                 register long alpha
  147.                 );
  148.  
  149. SW_FUNC void BlitPixie16BitTranslucentMaskDrawProc(
  150.     FramePtr srcFrameP, 
  151.     FramePtr dstFrameP, 
  152.     Rect *srcRect, 
  153.     Rect *dstRect);
  154.  
  155. unsigned long Blend16BitPixels (int level, int source, int dest);
  156.  
  157. #ifdef __cplusplus
  158. }
  159. #endif
  160.  
  161. #endif /* __TRANSLUCENCY__ */
  162.