Guest User

Untitled

a guest
Mar 12th, 2013
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 2.58 KB | None | 0 0
  1. Index: LuaCanvas.pas
  2. ===================================================================
  3. --- LuaCanvas.pas   (wersja 1700)
  4. +++ LuaCanvas.pas   (kopia robocza)
  5. @@ -8,7 +8,7 @@
  6.  interface
  7.  
  8.  uses
  9. -  Classes, SysUtils, Graphics,lua, lualib, lauxlib, LuaHandler, fpcanvas;
  10. +  Classes, SysUtils, Graphics,lua, lualib, lauxlib, LuaHandler, fpcanvas, LCLType, LCLIntf;
  11.  
  12.  procedure initializeLuaCanvas;
  13.  
  14. @@ -283,6 +283,56 @@
  15.    end;
  16.  end;
  17.  
  18. +procedure drawWithMask(DestCanvas:TCanvas; Dx,Dy,Dw,Dh:integer; graph:TRasterImage; Sx,Sy,Sw,Sh:integer);
  19. +var
  20. +  UseMaskHandle: HBitmap;
  21. +  SrcDC: hDC;
  22. +  DestDC: hDC;
  23. +begin
  24. +  if (graph.Width=0) or (graph.Height=0)
  25. +  then Exit;
  26. +
  27. +  if graph.Masked then
  28. +    UseMaskHandle:=graph.MaskHandle
  29. +  else
  30. +    UseMaskHandle:=0;
  31. +
  32. +  SrcDC := graph.Canvas.GetUpdatedHandle([csHandleValid]);
  33. +  DestCanvas.Changing;
  34. +  DestDC := DestCanvas.GetUpdatedHandle([csHandleValid]);
  35. +  StretchMaskBlt(DestDC, Dx,Dy,Dw,Dh,
  36. +                 SrcDC , Sx,Sy,Sw,Sh, UseMaskHandle,Sx,Sy,DestCanvas.CopyMode);
  37. +  DestCanvas.Changed;
  38. +end;
  39. +
  40. +function canvas_drawWithMask(L: PLua_State): integer; cdecl;
  41. +var
  42. +  graphic: TGraphic;
  43. +  d_canvas: TCanvas;
  44. +  d_x1,d_y1: integer;
  45. +  d_x2,d_y2: integer;
  46. +  s_x1,s_y1: integer;
  47. +  s_x2,s_y2: integer;
  48. +begin
  49. +  result:=0;
  50. +  d_canvas:=luaclass_getClassObject(L);
  51. +
  52. +  if lua_gettop(L)>=9 then
  53. +  begin
  54. +    d_x1:=lua_tointeger(L,-9);
  55. +    d_y1:=lua_tointeger(L,-8);
  56. +    d_x2:=lua_tointeger(L,-7);
  57. +    d_y2:=lua_tointeger(L,-6);
  58. +
  59. +    graphic:=lua_toceuserdata(L,-5);
  60. +    s_x1:=lua_tointeger(L,-4);
  61. +    s_y1:=lua_tointeger(L,-3);
  62. +    s_x2:=lua_tointeger(L,-2);
  63. +    s_y2:=lua_tointeger(L,-1);
  64. +    drawWithMask(d_canvas, d_x1, d_y1, d_x2-d_x1, d_y2-d_y1, TRasterImage(graphic), s_x1, s_y1, s_x2-s_x1,s_y2-s_y1);
  65. +  end;
  66. +end;
  67. +
  68.  function canvas_copyRect(L: PLua_State): integer; cdecl;
  69.  var
  70.    s_canvas: TCanvas;
  71. @@ -391,6 +441,7 @@
  72.    luaclass_addClassFunctionToTable(L, metatable, userdata, 'gradientFill', canvas_gradientFill);
  73.    luaclass_addClassFunctionToTable(L, metatable, userdata, 'copyRect', canvas_copyRect);
  74.    luaclass_addClassFunctionToTable(L, metatable, userdata, 'draw', canvas_draw);
  75. +  luaclass_addClassFunctionToTable(L, metatable, userdata, 'drawWithMask', canvas_drawWithMask);
  76.    luaclass_addClassFunctionToTable(L, metatable, userdata, 'getPenPosition', canvas_getPenPosition);
  77.    luaclass_addClassFunctionToTable(L, metatable, userdata, 'setPenPosition', canvas_setPenPosition);
  78.    luaclass_addClassFunctionToTable(L, metatable, userdata, 'getClipRect', canvas_getClipRect);
Advertisement
Add Comment
Please, Sign In to add comment