MMWING.PAS
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:8k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. {========================================================================}
  2. {=                (c) 1995-98 SwiftSoft Ronald Dittrich                 =}
  3. {========================================================================}
  4. {=                          All Rights Reserved                         =}
  5. {========================================================================}
  6. {=  D 01099 Dresden             = Tel.: +0351-8012255                   =}
  7. {=  Loewenstr.7a                = info@swiftsoft.de                     =}
  8. {========================================================================}
  9. {=  Actual versions on http://www.swiftsoft.de/mmtools.html             =}
  10. {========================================================================}
  11. {=  This code is for reference purposes only and may not be copied or   =}
  12. {=  distributed in any format electronic or otherwise except one copy   =}
  13. {=  for backup purposes.                                                =}
  14. {=                                                                      =}
  15. {=  No Delphi Component Kit or Component individually or in a collection=}
  16. {=  subclassed or otherwise from the code in this unit, or associated   =}
  17. {=  .pas, .dfm, .dcu, .asm or .obj files may be sold or distributed     =}
  18. {=  without express permission from SwiftSoft.                          =}
  19. {=                                                                      =}
  20. {=  For more licence informations please refer to the associated        =}
  21. {=  HelpFile.                                                           =}
  22. {========================================================================}
  23. {=  $Date: 20.01.1998 - 18:00:00 $                                      =}
  24. {========================================================================}
  25. {=  Aufgabe: WinG Import Unit                                           =}
  26. {========================================================================}
  27. {=  This code is for reference purposes only and may not be copied or   =}
  28. {=  distributed in any format electronic or otherwise except one copy   =}
  29. {=  for backup purposes.                                                =}
  30. {=                                                                      =}
  31. {=  No Delphi Component Kit or Component individually or in a collection=}
  32. {=  subclassed or otherwise from the code in this unit, or associated   =}
  33. {=  .pas, .dfm, .dcu, .asm or .obj files may be sold or distributed     =}
  34. {=  without express permission from SwiftSoft.                          =}
  35. {=                                                                      =}
  36. {=  For more licence informations please refer to the associated        =}
  37. {=  HelpFile.                                                           =}
  38. {========================================================================}
  39. unit MMWinG;
  40. {$I COMPILER.INC}
  41. interface
  42. uses
  43. {$IFDEF WIN32}
  44.     Windows,
  45. {$ELSE}
  46.     WinTypes,
  47.     WinProcs,
  48. {$ENDIF}
  49.     SysUtils,
  50.     Dialogs;
  51. { WinG Types }
  52. type
  53.    PPointer = ^pointer;
  54.    PRGBQuad = ^TRGBQuad;
  55.    WING_DITHER_TYPE = word;
  56. const
  57.    WINGDLLLoaded: Boolean = False;
  58.    WinGDLLHandle: THandle = 0;
  59.    WING_DISPERSED_4x4 = 0;
  60.    WING_DISPERSED_8x8 = 1;
  61.    WING_CLUSTERED_4x4 = 2;
  62. var
  63.    { WinG DC's & WinG Bitmaps }
  64.    WinGCreateDC: function: HDC;{$IFDEF WIN32}stdcall;{$ENDIF}
  65.    WinGCreateBitmap: function (hWinGDC: HDC;
  66.                                pHeader: PBitmapInfo;
  67.                                ppBits : PPointer ): HBitmap;{$IFDEF WIN32}stdcall;{$ENDIF}
  68.    WinGGetDIBPointer: function (hWinGBitmap: HBitmap;
  69.                                 pHeader    : PBitmapInfo): pointer;{$IFDEF WIN32}stdcall;{$ENDIF}
  70.    WinGRecommendDIBFormat: function (pHeader: PBitmapInfo): Bool;{$IFDEF WIN32}stdcall;{$ENDIF}
  71.    WinGGetDIBColorTable: function (hWinGDC        : HDC;
  72.                                    StartIndex     : Cardinal;
  73.                                    NumberOfEntries: Cardinal;
  74.                                    pColors        : PRGBQuad): Cardinal;{$IFDEF WIN32}stdcall;{$ENDIF}
  75.    WinGSetDIBColorTable: function (hWinGDC        : HDC;
  76.                                    StartIndex     : Cardinal;
  77.                                    NumberOfEntries: Cardinal;
  78.                                    pColors        : PRGBQuad): Cardinal;{$IFDEF WIN32}stdcall;{$ENDIF}
  79.    { Blts }
  80.    WinGBitBlt: function (hdcDest     : HDC;
  81.                          nXOriginDest: integer;
  82.                          nYOriginDest: integer;
  83.                          nWidthDest  : integer;
  84.                          nHeightDest : integer;
  85.                          hdcSrc      : HDC;
  86.                          nXOriginSrc : integer;
  87.                          nYOriginSrc : integer): Bool;{$IFDEF WIN32}stdcall;{$ENDIF}
  88.    WinGStretchBlt: function (hdcDest     : HDC;
  89.                              nXOriginDest: integer;
  90.                              nYOriginDest: integer;
  91.                              nWidthDest  : integer;
  92.                              nHeightDest : integer;
  93.                              hdcSrc      : HDC;
  94.                              nXOriginSrc : integer;
  95.                              nYOriginSrc : integer;
  96.                              nWidthSrc   : integer;
  97.                              nHeightSrc  : integer): Bool;{$IFDEF WIN32}stdcall;{$ENDIF}
  98.    { Halftoning }
  99.    WinGCreateHalftoneBrush: function (DC        : HDC;
  100.                                       Color     : TColorRef ;
  101.                                       DitherType: WING_DITHER_TYPE ): HBrush;{$IFDEF WIN32}stdcall;{$ENDIF}
  102.    WinGCreateHalftonePalette: function: HPalette;{$IFDEF WIN32}stdcall;{$ENDIF}
  103. implementation
  104. {$IFNDEF WIN32}
  105. const
  106.     MAX_PATH  = 260;
  107. {$ENDIF}
  108. var
  109.    ErrorMode: Cardinal;
  110.    aBuf     : PChar;
  111. procedure NewExitProc; Far;
  112. begin
  113.    if WinGDLLHandle >= HINSTANCE_ERROR then FreeLibrary(WinGDLLHandle);
  114. end;
  115. Initialization
  116.      aBuf := Nil;
  117.      ErrorMode := SetErrorMode(SEM_NoOpenFileErrorBox);
  118.      try
  119.         aBuf := StrAlloc(MAX_PATH);
  120.         if GetSystemDirectory(aBuf, MAX_PATH) <> 0 then
  121.         begin
  122.            {$IFDEF WIN32}
  123.            aBuf := StrCat(aBuf, 'WING32.DLL');
  124.            {$ELSE}
  125.            aBuf := StrCat(aBuf, 'WING.DLL');
  126.            {$ENDIF}
  127.            WinGDLLHandle := LoadLibrary(aBuf);
  128.            if abs(WinGDLLHandle) >= HINSTANCE_ERROR then
  129.            begin
  130.               WinGDLLLoaded := True;
  131.               {$IFNDEF WIN32}
  132.               AddExitProc(NewExitProc);
  133.               {$ENDIF}
  134.               @WinGCreateDC := GetProcAddress(WinGDLLHandle,'WinGCreateDC');
  135.               @WinGCreateBitmap := GetProcAddress(WinGDLLHandle,'WinGCreateBitmap');
  136.               @WinGGetDIBPointer := GetProcAddress(WinGDLLHandle,'WinGGetDIBPointer');
  137.               @WinGRecommendDIBFormat := GetProcAddress(WinGDLLHandle,'WinGRecommendDIBFormat');
  138.               @WinGGetDIBColorTable := GetProcAddress(WinGDLLHandle,'WinGGetDIBColorTable');
  139.               @WinGSetDIBColorTable := GetProcAddress(WinGDLLHandle,'WinGSetDIBColorTable');
  140.               @WinGBitBlt := GetProcAddress(WinGDLLHandle,'WinGBitBlt');
  141.               @WinGStretchBlt := GetProcAddress(WinGDLLHandle,'WinGStretchBlt');
  142.               @WinGCreateHalftoneBrush := GetProcAddress(WinGDLLHandle,'WinGCreateHalftoneBrush');
  143.               @WinGCreateHalftonePalette := GetProcAddress(WinGDLLHandle,'WinGCreateHalftonePalette');
  144.            end;
  145.         end;
  146.      finally
  147.         SetErrorMode(ErrorMode);
  148.         StrDispose(aBuf);
  149.      end;
  150. {$IFDEF WIN32}
  151. Finalization
  152.      NewExitProc;
  153. {$ENDIF}
  154. end.