mirror of https://github.com/buggins/dlangui.git
dsfml support - mouse events and window resize
This commit is contained in:
parent
27d07cc6d5
commit
460f02cd57
|
@ -53,7 +53,7 @@
|
||||||
<cccmd>$(CC) -c</cccmd>
|
<cccmd>$(CC) -c</cccmd>
|
||||||
<ccTransOpt>1</ccTransOpt>
|
<ccTransOpt>1</ccTransOpt>
|
||||||
<program>$(DMDInstallDir)windows\bin\dmd.exe</program>
|
<program>$(DMDInstallDir)windows\bin\dmd.exe</program>
|
||||||
<imppath>3rdparty ../DerelictGL3/source ../DerelictUtil/source ../DerelictFT/source ../de_image/source/interfaces ../de_image/source/png $(SolutionDir)/../dlib $(SolutionDir)/../gl3n</imppath>
|
<imppath>3rdparty ../DerelictGL3/source ../DerelictUtil/source ../DerelictFT/source ../de_image/source/interfaces ../de_image/source/png $(SolutionDir)/../dlib $(SolutionDir)/../gl3n $(SolutionDir)/../DSFML/src</imppath>
|
||||||
<fileImppath>$(SolutionDir)/views $(SolutionDir)/views/res $(SolutionDir)/views/res/i18n $(SolutionDir)/views/res/mdpi $(SolutionDir)/views/res/hdpi</fileImppath>
|
<fileImppath>$(SolutionDir)/views $(SolutionDir)/views/res $(SolutionDir)/views/res/i18n $(SolutionDir)/views/res/mdpi $(SolutionDir)/views/res/hdpi</fileImppath>
|
||||||
<outdir>$(ConfigurationName)</outdir>
|
<outdir>$(ConfigurationName)</outdir>
|
||||||
<objdir>$(OutDir)</objdir>
|
<objdir>$(OutDir)</objdir>
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
<debuglevel>0</debuglevel>
|
<debuglevel>0</debuglevel>
|
||||||
<debugids>DebugFocus FontResources</debugids>
|
<debugids>DebugFocus FontResources</debugids>
|
||||||
<versionlevel>0</versionlevel>
|
<versionlevel>0</versionlevel>
|
||||||
<versionids>EmbedStandardResources Unicode USE_FREETYPE USE_OPENGL</versionids>
|
<versionids>EmbedStandardResources Unicode USE_FREETYPE USE_OPENGL USE_DSFML</versionids>
|
||||||
<dump_source>0</dump_source>
|
<dump_source>0</dump_source>
|
||||||
<mapverbosity>0</mapverbosity>
|
<mapverbosity>0</mapverbosity>
|
||||||
<createImplib>1</createImplib>
|
<createImplib>1</createImplib>
|
||||||
|
@ -403,6 +403,9 @@
|
||||||
<Folder name="common">
|
<Folder name="common">
|
||||||
<File path="src\dlangui\platforms\common\platform.d" />
|
<File path="src\dlangui\platforms\common\platform.d" />
|
||||||
</Folder>
|
</Folder>
|
||||||
|
<Folder name="dsfml">
|
||||||
|
<File path="src\dlangui\platforms\dsfml\dsfmlapp.d" />
|
||||||
|
</Folder>
|
||||||
<Folder name="sdl">
|
<Folder name="sdl">
|
||||||
<File path="src\dlangui\platforms\sdl\sdlapp.d" />
|
<File path="src\dlangui\platforms\sdl\sdlapp.d" />
|
||||||
</Folder>
|
</Folder>
|
||||||
|
|
|
@ -482,6 +482,17 @@ enum MouseButton : ubyte {
|
||||||
XButton2 = MouseFlag.XButton2, // additional button 2
|
XButton2 = MouseFlag.XButton2, // additional button 2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// converts MouseButton to MouseFlag
|
||||||
|
ushort mouseButtonToFlag(MouseButton btn) {
|
||||||
|
switch(btn) with (MouseButton) {
|
||||||
|
case Left: return MouseFlag.LButton;
|
||||||
|
case Right: return MouseFlag.RButton;
|
||||||
|
case Middle: return MouseFlag.MButton;
|
||||||
|
case XButton1: return MouseFlag.XButton1;
|
||||||
|
case XButton2: return MouseFlag.XButton2;
|
||||||
|
default: return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/// Mouse button state details for MouseEvent
|
/// Mouse button state details for MouseEvent
|
||||||
struct ButtonDetails {
|
struct ButtonDetails {
|
||||||
|
|
|
@ -102,6 +102,67 @@ class DSFMLWindow : dlangui.platforms.common.platform.Window {
|
||||||
buf.afterDrawing();
|
buf.afterDrawing();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private MouseButton translateButton(uint btn) {
|
||||||
|
switch(btn) {
|
||||||
|
default:
|
||||||
|
case Mouse.Button.Left:
|
||||||
|
return MouseButton.Left;
|
||||||
|
case Mouse.Button.Right:
|
||||||
|
return MouseButton.Right;
|
||||||
|
case Mouse.Button.Middle:
|
||||||
|
return MouseButton.Middle;
|
||||||
|
case Mouse.Button.XButton1:
|
||||||
|
return MouseButton.XButton1;
|
||||||
|
case Mouse.Button.XButton2:
|
||||||
|
return MouseButton.XButton2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ushort mouseFlags;
|
||||||
|
|
||||||
|
bool handleEvent(ref Event event) {
|
||||||
|
switch (event.type) {
|
||||||
|
case(event.EventType.Closed): {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case(event.EventType.Resized): {
|
||||||
|
onResize(event.size.width, event.size.height);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case(event.EventType.MouseButtonPressed): {
|
||||||
|
auto btn = translateButton(event.mouseButton.button);
|
||||||
|
mouseFlags |= mouseButtonToFlag(btn);
|
||||||
|
MouseEvent ev = new MouseEvent(MouseAction.ButtonDown, btn, mouseFlags, cast(short)event.mouseButton.x, cast(short)event.mouseButton.y);
|
||||||
|
dispatchMouseEvent(ev);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case(event.EventType.MouseButtonReleased): {
|
||||||
|
auto btn = translateButton(event.mouseButton.button);
|
||||||
|
mouseFlags &= ~mouseButtonToFlag(btn);
|
||||||
|
MouseEvent ev = new MouseEvent(MouseAction.ButtonUp, btn, mouseFlags, cast(short)event.mouseButton.x, cast(short)event.mouseButton.y);
|
||||||
|
dispatchMouseEvent(ev);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case(event.EventType.MouseMoved): {
|
||||||
|
MouseEvent ev = new MouseEvent(MouseAction.Move, MouseButton.None, mouseFlags, cast(short)event.mouseMove.x, cast(short)event.mouseMove.y);
|
||||||
|
dispatchMouseEvent(ev);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case(event.EventType.MouseEntered): {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case(event.EventType.MouseLeft): {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case(event.EventType.MouseWheelMoved): {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue