MMDIBCV.INT 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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. unit MMDIBCv;
  26. {$I COMPILER.INC}
  27. {$IFNDEF WIN32}
  28. {$DEFINE USEWING}
  29. {$ENDIF}
  30. interface
  31. uses
  32. {$IFDEF WIN32}
  33. Windows,
  34. {$ELSE}
  35. WinTypes,
  36. WinProcs,
  37. {$ENDIF}
  38. Classes,
  39. Controls,
  40. Graphics,
  41. Dialogs,
  42. SysUtils,
  43. MMObj,
  44. MMUtils,
  45. MMDIB,
  46. CRightC
  47. {$IFDEF USEWING}
  48. ,MMWinG
  49. {$ENDIF};
  50. const
  51. { different DIB Orientations }
  52. DIB_TOPDOWN = -1;
  53. DIB_BOTTOMUP = 1;
  54. { DIB_TOPDOWN is the fastest, but many drivers can't work with }
  55. { this STANDARD format. For example the ATI driver causes a GPF }
  56. { in BitBlt. NEVER buy a ATI card, if you would have trouble do it!}
  57. DIB_ORIENT: integer = DIB_BOTTOMUP; { Bottom - Up DIB !! }
  58. type
  59. EMMDIBError = class(Exception);
  60. {-- TMMDIBCanvas ----------------------------------------------------}
  61. TMMDIBCanvas = class(TCanvas)
  62. public
  63. constructor Create; virtual;
  64. destructor Destroy; override;
  65. procedure SetBounds(aLeft, aTop, aWidth, aHeight: Integer); virtual;
  66. procedure SetLogPalette(pLogPal: PLogPalette);
  67. procedure DIB_Init;
  68. procedure DIB_InitDrawing;
  69. procedure DIB_DoneDrawing;
  70. procedure DIB_SetTColor(Color: TColor);
  71. procedure DIB_SetColorRef(ColorRef: Longint);
  72. function DIB_ColorToIndex(Color: TColor): Longint;
  73. procedure DIB_SetColor(Index: Longint);
  74. procedure DIB_SetClipRect(R: TRect);
  75. function DIB_GetClipRect: TRect;
  76. function DIB_GetPixelAddress(aSurface: Pointer; X, Y: integer): Pointer;
  77. procedure DIB_SetPixel(X, Y: integer; Color: Longint);{$IFDEF WIN32}pascal;{$ENDIF}
  78. function DIB_GetPixel(X, Y: integer): Longint;{$IFDEF WIN32}pascal;{$ENDIF}
  79. procedure DIB_Line(X1, Y1, X2, Y2: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  80. procedure DIB_LineNotXor(X1, Y1, X2, Y2: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  81. procedure DIB_MoveTo(X,Y: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  82. procedure DIB_LineTo(X,Y: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  83. procedure DIB_HLine(X1, X2, Y: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  84. procedure DIB_HLineDashed(X1, X2, Y: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  85. procedure DIB_HLineDoted(X1, X2, Y, Steps: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  86. procedure DIB_VLine(X, Y1, Y2: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  87. procedure DIB_VLineXor(X, Y1, Y2: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  88. procedure DIB_VLineNotXor(X, Y1, Y2: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  89. procedure DIB_VLineDashed(X, Y1, Y2: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  90. procedure DIB_VLineDoted(X, Y1, Y2, Steps: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  91. procedure DIB_VLineMultiColor(X, Y: integer; Colors: PByte; Cnt: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  92. procedure DIB_Rectangle(X1, Y1, X2, Y2: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  93. procedure DIB_FillRect(Rect: TRect);{$IFDEF WIN32}pascal;{$ENDIF}
  94. procedure DIB_FillRectXor(Rect: TRect);{$IFDEF WIN32}pascal;{$ENDIF}
  95. procedure DIB_FillRectDoted(Rect: TRect; Doted: Boolean);{$IFDEF WIN32}pascal;{$ENDIF}
  96. procedure DIB_Ellipse(X, Y: integer; StAngle, EndAngle, XRadius, YRadius: Word);{$IFDEF WIN32}pascal;{$ENDIF}
  97. procedure DIB_FillEllipse(X, Y: integer; XRadius, YRadius: Word);{$IFDEF WIN32}pascal;{$ENDIF}
  98. procedure DIB_Clear;{$IFDEF WIN32}pascal;{$ENDIF}
  99. procedure DIB_CopyDIBBits(Source:Pointer;XDst,YDst,Width,Height,XSrc,YSrc: integer);{$IFDEF WIN32}pascal;{$ENDIF}
  100. procedure DIB_BitBlt(DestDC: THandle; Dest: TRect; X, Y: integer);
  101. procedure DIB_StretchBlt(DestDC: THandle; Dest: TRect; Src: TRect);
  102. procedure BeginAnimate;
  103. procedure EndAnimate;
  104. property Surface: Pointer read FPSurface;
  105. property BackSurface: Pointer read FPBackSurface;
  106. property BitmapInfo: PBitmapInfo read FPBitmapInfo;
  107. property Bitmap: HBitmap read FHBitmap;
  108. property Palette: HPalette read FHPalette;
  109. property AnimatedColorCount: Integer read GetAnimCount write SetAnimCount;
  110. property AnimatedColor[i: Integer]: TColor read GetAnimColor;
  111. property AnimatedColorValue[i: Integer]: TColor read GetAnimColorValue write SetAnimColorValue;
  112. property AnimatedColorIndex[i: Integer]: Integer read GetAnimColorIndex ;
  113. published
  114. property BitsPerPixel: integer read FBits write SetBPP stored True;
  115. property PaletteRealize: Boolean read FRealize write SetRealize default False;
  116. property PaletteMapped: Boolean read FMapped write SetMapped default False;
  117. property BackGroundBitmap: TBitmap read FBackBitmap write SetBackBitmap;
  118. property Width: integer read FWidth write SetWidth default 1;
  119. property Height: integer read FHeight write SetHeight default 1;
  120. end;
  121. {-- TMMDIBGraphicControl --------------------------------------------}
  122. TMMDIBGraphicControl = class(TMMGraphicControl)
  123. public
  124. constructor Create(AOwner: TComponent); override;
  125. destructor Destroy; override;
  126. procedure DrawBackGround;
  127. property DIBCanvas: TMMDIBCanvas read FDIBCanvas write FDIBCanvas;
  128. property BitsPerPixel: integer read GetBPP write SetBPP default 8;
  129. end;
  130. implementation