lazeyes: Adapts the region code for Gtk2

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1765 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
sekelsenmat
2011-07-28 12:20:06 +00:00
parent 564226d183
commit 4f7d5dd9af
3 changed files with 220 additions and 99 deletions

View File

@ -12,7 +12,7 @@
<VersionInfo>
<StringTable ProductVersion=""/>
</VersionInfo>
<BuildModes Count="2" Active="release">
<BuildModes Count="2" Active="debug">
<Item1 Name="debug" Default="True"/>
<Item2 Name="release">
<CompilerOptions>
@ -64,7 +64,7 @@
<PackageName Value="LCL"/>
</Item1>
</RequiredPackages>
<Units Count="13">
<Units Count="20">
<Unit0>
<Filename Value="lazeyes2.lpr"/>
<IsPartOfProject Value="True"/>
@ -73,8 +73,8 @@
<EditorIndex Value="0"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="3" Y="20"/>
<UsageCount Value="22"/>
<CursorPos X="39" Y="25"/>
<UsageCount Value="27"/>
<Loaded Value="True"/>
<LoadedDesigner Value="True"/>
</Unit0>
@ -86,9 +86,11 @@
</Unit1>
<Unit2>
<Filename Value="..\..\..\lazarus\lcl\include\winapih.inc"/>
<TopLine Value="49"/>
<CursorPos X="1" Y="64"/>
<WindowIndex Value="0"/>
<TopLine Value="243"/>
<CursorPos X="10" Y="267"/>
<UsageCount Value="10"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit2>
<Unit3>
<Filename Value="..\..\..\lazarus\lcl\interfaces\win32\win32winapi.inc"/>
@ -103,7 +105,6 @@
<TopLine Value="1452"/>
<CursorPos X="21" Y="1462"/>
<UsageCount Value="11"/>
<LoadedDesigner Value="True"/>
</Unit4>
<Unit5>
<Filename Value="..\..\..\lazarus\lcl\include\icnsicon.inc"/>
@ -111,7 +112,7 @@
<TopLine Value="224"/>
<CursorPos X="3" Y="243"/>
<UsageCount Value="11"/>
<LoadedDesigner Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit5>
<Unit6>
<Filename Value="..\..\..\lazarus\lcl\include\cursorimage.inc"/>
@ -119,7 +120,7 @@
<TopLine Value="41"/>
<CursorPos X="3" Y="43"/>
<UsageCount Value="11"/>
<LoadedDesigner Value="True"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit6>
<Unit7>
<Filename Value="lazeyes2painter.pas"/>
@ -129,17 +130,15 @@
<WindowIndex Value="0"/>
<TopLine Value="28"/>
<CursorPos X="25" Y="45"/>
<UsageCount Value="20"/>
<UsageCount Value="25"/>
<Loaded Value="True"/>
</Unit7>
<Unit8>
<Filename Value="lazeyes2.lrs"/>
<EditorIndex Value="3"/>
<WindowIndex Value="0"/>
<TopLine Value="1"/>
<CursorPos X="1" Y="1"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
<UsageCount Value="12"/>
</Unit8>
<Unit9>
<Filename Value="lazeyes2form.pas"/>
@ -147,9 +146,9 @@
<UnitName Value="lazeyes2form"/>
<EditorIndex Value="2"/>
<WindowIndex Value="0"/>
<TopLine Value="205"/>
<CursorPos X="1" Y="226"/>
<UsageCount Value="20"/>
<TopLine Value="167"/>
<CursorPos X="11" Y="173"/>
<UsageCount Value="25"/>
<Loaded Value="True"/>
</Unit9>
<Unit10>
@ -166,7 +165,6 @@
<TopLine Value="1215"/>
<CursorPos X="1" Y="1229"/>
<UsageCount Value="10"/>
<LoadedDesigner Value="True"/>
</Unit11>
<Unit12>
<Filename Value="F:\Jogos\Europa Universalis 2\AGCEEP\Scenarios\1419\1419_AYU_Ayutthaya.inc"/>
@ -174,82 +172,191 @@
<TopLine Value="48"/>
<CursorPos X="13" Y="13"/>
<UsageCount Value="10"/>
<LoadedDesigner Value="True"/>
</Unit12>
<Unit13>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapih.inc"/>
<EditorIndex Value="3"/>
<WindowIndex Value="0"/>
<TopLine Value="198"/>
<CursorPos X="15" Y="230"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit13>
<Unit14>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<EditorIndex Value="4"/>
<WindowIndex Value="0"/>
<TopLine Value="9026"/>
<CursorPos X="7" Y="9026"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit14>
<Unit15>
<Filename Value="..\..\..\fpcbuild\fpcsrc\rtl\inc\ctypes.pp"/>
<UnitName Value="ctypes"/>
<WindowIndex Value="0"/>
<TopLine Value="95"/>
<CursorPos X="35" Y="119"/>
<UsageCount Value="10"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit15>
<Unit16>
<Filename Value="..\..\..\lazarus\lcl\include\winapi.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="963"/>
<CursorPos X="3" Y="965"/>
<UsageCount Value="10"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit16>
<Unit17>
<Filename Value="..\..\..\lazarus\lcl\include\intfbasewinapi.inc"/>
<WindowIndex Value="0"/>
<TopLine Value="115"/>
<CursorPos X="53" Y="139"/>
<UsageCount Value="10"/>
<DefaultSyntaxHighlighter Value="Delphi"/>
</Unit17>
<Unit18>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2proc.inc"/>
<EditorIndex Value="5"/>
<WindowIndex Value="0"/>
<TopLine Value="3766"/>
<CursorPos X="22" Y="3769"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit18>
<Unit19>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2proc.pp"/>
<UnitName Value="Gtk2Proc"/>
<EditorIndex Value="6"/>
<WindowIndex Value="0"/>
<TopLine Value="305"/>
<CursorPos X="18" Y="342"/>
<UsageCount Value="10"/>
<Loaded Value="True"/>
</Unit19>
</Units>
<JumpHistory Count="18" HistoryIndex="17">
<JumpHistory Count="30" HistoryIndex="29">
<Position1>
<Filename Value="lazeyes2painter.pas"/>
<Caret Line="11" Column="1" TopLine="1"/>
</Position1>
<Position2>
<Filename Value="lazeyes2painter.pas"/>
<Caret Line="10" Column="29" TopLine="1"/>
</Position2>
<Position3>
<Filename Value="lazeyes2painter.pas"/>
<Caret Line="89" Column="25" TopLine="79"/>
</Position3>
<Position4>
<Filename Value="lazeyes2painter.pas"/>
<Caret Line="40" Column="3" TopLine="38"/>
</Position4>
<Position5>
<Filename Value="lazeyes2painter.pas"/>
<Caret Line="31" Column="15" TopLine="18"/>
</Position5>
<Position6>
<Filename Value="lazeyes2painter.pas"/>
<Caret Line="72" Column="1" TopLine="53"/>
</Position6>
<Position7>
<Filename Value="lazeyes2painter.pas"/>
<Caret Line="157" Column="17" TopLine="144"/>
</Position7>
<Position8>
<Filename Value="lazeyes2.lrs"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position8>
<Position9>
<Filename Value="lazeyes2.lpr"/>
<Caret Line="16" Column="27" TopLine="2"/>
</Position9>
<Position10>
<Filename Value="lazeyes2painter.pas"/>
<Caret Line="1" Column="1" TopLine="1"/>
</Position10>
<Position11>
<Filename Value="lazeyes2painter.pas"/>
<Caret Line="67" Column="10" TopLine="54"/>
</Position11>
<Position12>
<Filename Value="lazeyes2form.pas"/>
<Caret Line="83" Column="20" TopLine="77"/>
</Position12>
<Position13>
<Filename Value="lazeyes2form.pas"/>
<Caret Line="70" Column="11" TopLine="48"/>
</Position13>
<Position14>
<Filename Value="lazeyes2form.pas"/>
<Caret Line="59" Column="23" TopLine="56"/>
</Position14>
<Position15>
<Filename Value="lazeyes2painter.pas"/>
<Caret Line="40" Column="33" TopLine="28"/>
</Position15>
<Position16>
<Filename Value="lazeyes2painter.pas"/>
<Caret Line="45" Column="25" TopLine="28"/>
</Position16>
<Position17>
<Filename Value="lazeyes2form.pas"/>
<Caret Line="203" Column="1" TopLine="191"/>
</Position17>
<Position18>
</Position1>
<Position2>
<Filename Value="lazeyes2.lpr"/>
<Caret Line="14" Column="18" TopLine="4"/>
</Position2>
<Position3>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="1306" Column="22" TopLine="1289"/>
</Position3>
<Position4>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapih.inc"/>
<Caret Line="65" Column="21" TopLine="41"/>
</Position4>
<Position5>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="1304" Column="57" TopLine="1282"/>
</Position5>
<Position6>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapih.inc"/>
<Caret Line="65" Column="42" TopLine="65"/>
</Position6>
<Position7>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="1320" Column="49" TopLine="1295"/>
</Position7>
<Position8>
<Filename Value="lazeyes2form.pas"/>
<Caret Line="35" Column="33" TopLine="1"/>
</Position8>
<Position9>
<Filename Value="lazeyes2form.pas"/>
<Caret Line="234" Column="14" TopLine="191"/>
</Position9>
<Position10>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9013" Column="1" TopLine="9002"/>
</Position10>
<Position11>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9014" Column="1" TopLine="9002"/>
</Position11>
<Position12>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9016" Column="1" TopLine="9002"/>
</Position12>
<Position13>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9018" Column="1" TopLine="9002"/>
</Position13>
<Position14>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9019" Column="1" TopLine="9002"/>
</Position14>
<Position15>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9021" Column="1" TopLine="9002"/>
</Position15>
<Position16>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9024" Column="1" TopLine="9002"/>
</Position16>
<Position17>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9015" Column="8" TopLine="9002"/>
</Position17>
<Position18>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9013" Column="1" TopLine="9002"/>
</Position18>
<Position19>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2proc.inc"/>
<Caret Line="3720" Column="1" TopLine="3696"/>
</Position19>
<Position20>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2proc.inc"/>
<Caret Line="3723" Column="1" TopLine="3696"/>
</Position20>
<Position21>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2proc.inc"/>
<Caret Line="3724" Column="1" TopLine="3696"/>
</Position21>
<Position22>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2proc.inc"/>
<Caret Line="3725" Column="1" TopLine="3696"/>
</Position22>
<Position23>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2proc.inc"/>
<Caret Line="3727" Column="1" TopLine="3696"/>
</Position23>
<Position24>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2proc.inc"/>
<Caret Line="3732" Column="1" TopLine="3696"/>
</Position24>
<Position25>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9014" Column="1" TopLine="9002"/>
</Position25>
<Position26>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9013" Column="1" TopLine="9002"/>
</Position26>
<Position27>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2proc.inc"/>
<Caret Line="3720" Column="1" TopLine="3696"/>
</Position27>
<Position28>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2proc.inc"/>
<Caret Line="3723" Column="1" TopLine="3696"/>
</Position28>
<Position29>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2proc.inc"/>
<Caret Line="3724" Column="1" TopLine="3696"/>
</Position29>
<Position30>
<Filename Value="..\..\..\lazarus\lcl\interfaces\gtk2\gtk2winapi.inc"/>
<Caret Line="9013" Column="21" TopLine="8996"/>
</Position30>
</JumpHistory>
</ProjectOptions>
<CompilerOptions>

View File

@ -22,6 +22,7 @@ uses
{$R *.res}
begin
RequireDerivedFormResource := False;
Application.Initialize;
Application.CreateForm(TMainForm, MainForm);
Application.Run;

View File

@ -16,6 +16,7 @@ type
TMainForm = class(TForm)
public
MyTimer: TTimer;
FirstOnTimer: Boolean;
WindowDragMousePos, WindowDragTopLeft: TPoint;
WindowDragStarted: Boolean;
Painter: TLazEye2Painter;
@ -32,6 +33,7 @@ type
procedure HandleOnMouseUp(Sender: TObject;
Button: TMouseButton; Shift: TShiftState;
X, Y: Integer);
procedure SetWindowRegion();
end;
var
@ -42,8 +44,6 @@ implementation
{ TMainForm }
constructor TMainForm.Create(AOwner: TComponent);
var
Rgn1, Rgn2, TotalRgn: HRGN;
begin
inherited Create(AOwner);
@ -55,6 +55,7 @@ begin
MyTimer.Interval := 1000 div 60;
MyTimer.OnTimer := @HandleOnTimer;
MyTimer.Enabled := True;
FirstOnTimer := True;
Painter := TLazEye2Painter.Create(Self);
Painter.Parent := Self;
@ -74,18 +75,7 @@ begin
Position := poScreenCenter;
// set window transparency
Rgn1 := CreateEllipticRgn(
0, 0,
INT_OUTER_EYE_WIDTH, INT_OUTER_EYE_HEIGHT);
Rgn2 := CreateEllipticRgn(
INT_OUTER_EYE_WIDTH + INT_INTEREYE_SPACE, 0,
2*INT_OUTER_EYE_WIDTH + INT_INTEREYE_SPACE,
INT_OUTER_EYE_HEIGHT);
// The dest region needs to exist before calling
// CombineRgn, so we create it with dummy values
TotalRgn := CreateEllipticRgn(0, 0, 10, 10);
LCLIntf.CombineRgn(TotalRgn, Rgn1, Rgn2, RGN_OR);
LCLIntf.SetWindowRgn(Handle, TotalRgn, True);
SetWindowRegion();
end;
destructor TMainForm.Destroy;
@ -177,6 +167,11 @@ end;
{ Timer event - Updates the eyes if the mouse moved }
procedure TMainForm.HandleOnTimer(ASender: TObject);
begin
{$ifdef LCLGtk2}
if FirstOnTimer then SetWindowRegion();
FirstOnTimer := False;
{$endif}
// Check if mouse position changed
if (MousePos.X = Mouse.CursorPos.X) and
(MousePos.Y = Mouse.CursorPos.Y) then Exit;
@ -226,5 +221,23 @@ begin
WindowDragStarted := False;
end;
procedure TMainForm.SetWindowRegion();
var
Rgn1, Rgn2, TotalRgn: HRGN;
begin
Rgn1 := CreateEllipticRgn(
0, 0,
INT_OUTER_EYE_WIDTH, INT_OUTER_EYE_HEIGHT);
Rgn2 := CreateEllipticRgn(
INT_OUTER_EYE_WIDTH + INT_INTEREYE_SPACE, 0,
2*INT_OUTER_EYE_WIDTH + INT_INTEREYE_SPACE,
INT_OUTER_EYE_HEIGHT);
// The dest region needs to exist before calling
// CombineRgn, so we create it with dummy values
TotalRgn := CreateEllipticRgn(0, 0, 10, 10);
LCLIntf.CombineRgn(TotalRgn, Rgn1, Rgn2, RGN_OR);
LCLIntf.SetWindowRgn(Handle, TotalRgn, True);
end;
end.