1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Nearly fully implemented surface rearranging

This commit is contained in:
SpoinkyNL 2019-08-25 22:26:10 +02:00
parent 5106195450
commit 8951e61bd9
9 changed files with 175 additions and 547 deletions

View File

@ -23,8 +23,13 @@ namespace Artemis.Core.RGB.NET
public Color ManipulateColor(Rectangle rectangle, BrushRenderTarget renderTarget, Color color)
{
var point = renderTarget.Point;
var pixel = _bitmap.GetPixel((int) point.X, (int) point.Y);
return new Color(pixel.A, pixel.R, pixel.G, pixel.B);
if (_bitmap.Width - 1 >= point.X && _bitmap.Height - 1 >= point.Y)
{
var pixel = _bitmap.GetPixel((int) point.X, (int) point.Y);
return new Color(pixel.A, pixel.R, pixel.G, pixel.B);
}
return new Color(0, 0, 0);
}
public Graphics GetGraphics()

View File

@ -72,421 +72,6 @@
</None>
</ItemGroup>
<ItemGroup>
<Content Include="Images\Corsair\Customs\LEDSTRIP.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\Customs\LLFAN.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\Customs\PUMP.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\empty.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\Keyboards\K70RGB.png" />
<Content Include="Images\Corsair\Keyboards\K95RGB.png" />
<Content Include="Images\Corsair\Keyboards\K95RGBPLATINUM.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\0_BracketRight.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\0_Equals_CurlyBracketRight.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\1_ExclamationMark.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\2_At.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\2_QuotationMark_Exponent2.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\3_Hash.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\3_SectionSign_Exponent3.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\4_Dollar.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\5_Percent.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\5_Percent_Euro.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\6_Ampersand.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\6_Circumflex.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\7_Ampersand.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\7_Slash_CurlyBracketLeft.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\8_Asterisk.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\8_BracketLeft_SquareBracketLeft.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\9_BracketRight.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\9_BracketRight_SquareBracketRight.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\A.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\AccentGrave_AccentAcute.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\AccentGrave_Tilde.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\AE.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Alt.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\AltGr.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Apostrophe_QuotationMark.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Asterisk.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\B.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Backspace.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\BildDown.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\BildUp.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Blackslash_Pipe.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Brightness.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\C.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\CapsLock.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\CapsLockText.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\CaretDown.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\CaretLeft.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\CaretRight.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\CaretUp.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Circumflex_Degree.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Comma_Del.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Comma_Entf.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Comma_Semicolon.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Ctrl.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\D.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Delete.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Dot_Colon.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Drucken.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\E.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Einfg.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\End.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Ende.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Enter.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\EnterWText.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Entf.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Equals_Plus.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Escape.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\E_Euro.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F1.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F10.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F11.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F12.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F2.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F3.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F4.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F5.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F6.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F7.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F8.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\F9.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G1.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G10.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G11.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G12.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G13.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G14.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G15.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G16.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G17.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G18.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G2.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G3.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G4.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G5.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G6.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G7.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G8.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\G9.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\GreaterThan_Dot.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\H.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Hash_Apostrophe.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Home.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Hyphen_Underscore.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\I.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Insert.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\J.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\K.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\L.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\LessThan_Comma.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\LessThan_GreaterThan_Pipe.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\M.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\M1.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\M2.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\M3.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Menu.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Minus.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\MR.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Mute.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\M_Mu.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\N.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\NextTrack.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num0_Einfg.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num0_Ins.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num1_End.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num1_Ende.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num2_ArrowDown.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num3_BildDown.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num3_PgDn.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num4_ArrowLeft.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num5.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num6_ArrowRight.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num7_Home.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num7_Pos1.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num8_ArrowUp.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num9_BildUp.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Num9_PgUp.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\NumEnter.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\NumLock.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\NumPlus.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\O.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\OE.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\P.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\PageDown.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\PageUp.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\PauseBreak.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\PauseUntbr.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\PlayPause.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Plus_Asterisk_Tilde.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Pos1.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\PreviousTrack.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\PrtScnSysRq.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Q.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\QuestionMark_SharpS_Backslash.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\QuestionMark_Slash.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Q_At.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\R.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Rollen.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\S.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\ScrollLock.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Semicolon_Colon.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Shift.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\ShiftBig.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\ShiftWText.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\ShiftWTextBig.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Slash.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Space.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\SquareBracketLeft_CurlyBracketLeft.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\SquareBracketRight_CurlyBracketRight.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Stop.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Strg.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\T.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Tab.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\TabWText.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\U.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\UE.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\V.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\W.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\windows.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\WinLock.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\X.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Y.png" />
<Content Include="Images\Corsair\Keyboards\K_Keys\Z.png" />
<Content Include="Images\Corsair\Keyboards\Missing.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\0_BracketRight.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\0_Equals_CurlyBracketRight.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\1_ExclamationMark.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\2_At.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\2_QuotationMark_Exponent2.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\3_Hash.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\3_SectionSign_Exponent3.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\4_Dollar.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\5.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\5_Percent.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\5_Percent_Euro.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\6_Ampersand.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\6_Circumflex.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\7_Ampersand.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\7_Slash_CurlyBracketLeft.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\8_Asterisk.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\8_BracketLeft_SquareBracketLeft.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\9_BracketRight.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\9_BracketRight_SquareBracketRight.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\A.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\AccentGrave_AccentAcute.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\AccentGrave_Tilde.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\AE.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Alt.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\AltGr.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Apostrophe_QuotationMark.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Asterisk.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\B.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Backspace.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\BildDown.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\BildUp.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Blackslash_Pipe.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Brightness.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\C.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\CapsLock.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\CaretDown.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\CaretLeft.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\CaretRight.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\CaretUp.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Circumflex_Degree.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Comma_Entf.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Comma_Semicolon.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Ctrl.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\D.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Delete.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Dot_Colon.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Dot_Del.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Drucken.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\E.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Einfg.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\End.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Ende.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Enter.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Entf.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Equals_Plus.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Escape.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\E_Euro.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F1.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F10.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F11.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F12.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F2.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F3.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F4.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F5.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F6.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F7.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F8.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\F9.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\G.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\G1.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\G2.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\G3.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\G4.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\G5.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\G6.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\GreaterThan_Dot.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\H.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Hash_Apostrophe.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Home.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Hyphen_Underscore.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\I.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Insert.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\J.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\K.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\L.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\LessThan_Comma.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\LessThan_GreaterThan_Pipe.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\M.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Menu.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Minus.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Mute.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\M_Mu.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\N.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\NextTrack.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num0_Einfg.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num0_Ins.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num1_End.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num1_Ende.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num2_ArrowDown.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num3_BildDown.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num3_PgDwn.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num4_ArrowLeft.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num5.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num6_ArrowRight.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num7_Home.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num7_Pos1.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num8_ArrowUp.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num9_BildUp.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Num9_PgUp.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\NumEnter.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\NumLock.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\NumPlus.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\O.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\OE.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\P.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\PageDown.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\PageUp.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\PauseBreak.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\PauseUntbr.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\PlayPause.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Plus_Asterisk_Tilde.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Pos1.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\PreviousTrack.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\PrintScreen.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Q.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\QuestionMark_SharpS_Backslash.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\QuestionMark_Slash.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Q_At.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\R.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Rollen.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\S.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\ScrollLock.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Semicolon_Colon.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Shift.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\ShiftBig.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Slash.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Space.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\SquareBracketLeft_CurlyBracketLeft.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\SquareBracketRight_CurlyBracketRight.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Stop.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Strg.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\T.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Tab.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\U.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\UE.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\V.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\W.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Windows.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\WinLock.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\X.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Y.png" />
<Content Include="Images\Corsair\Keyboards\Strafe_Keys\Z.png" />
<Content Include="Images\Corsair\Mice\DARKCORERGB.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\Mice\GLAIVERGB.png" />
<Content Include="Images\Corsair\Mice\HARPOONRGB.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\Mice\IRONCLAWRGB.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\Mice\M55RGB.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\Mice\M65RGB.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\Mice\NIGHTSWORDRGB.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\Mice\SABRERGB.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\Mice\SCIMITARRGB.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Images\Corsair\Mousepads\MM800RGB.png">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Customs\LLFAN.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Customs\LEDSTRIP.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Customs\PUMP.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Keyboards\K70RGB\UK.xml" />
<Content Include="Layouts\Corsair\Keyboards\K95RGBPLATINUM\UK.xml" />
<Content Include="Layouts\Corsair\Keyboards\K95RGBPLATINUM\US.xml" />
<Content Include="Layouts\Corsair\Keyboards\K95RGB\UK.xml" />
<Content Include="Layouts\Corsair\Mice\DARKCORERGB.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Mice\GLAIVERGB.xml" />
<Content Include="Layouts\Corsair\Mice\HARPOONRGB.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Mice\IRONCLAWRGB.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Mice\M55RGB.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Mice\M65RGB.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Mice\NIGHTSWORDRGB.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Mice\SABRERGB.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Mice\SCIMITARPRORGB.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="Layouts\Corsair\Mousepads\MM800RGB.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="x64\CUESDK.dll">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
@ -496,6 +81,14 @@
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>(robocopy $(TargetDir) $(SolutionDir)\Artemis.UI\$(OutDir)\Plugins\$(ProjectName) /E /NFL /NDL /NJH /NJS /nc /ns /np) ^&amp; IF %25ERRORLEVEL%25 LEQ 4 exit /B 0</PostBuildEvent>
<PostBuildEvent>echo Copying resources to plugin output directory
XCOPY "$(ProjectDir)Images" "$(TargetDir)Images" /s /q /i /y
XCOPY "$(ProjectDir)Layouts" "$(TargetDir)Layouts" /s /q /i /y
echo Copying plugin to Artemis.UI output directory
XCOPY "$(TargetDir.TrimEnd('\'))" "$(SolutionDir)\Artemis.UI\$(OutDir)Plugins\$(ProjectName)" /s /q /i /y</PostBuildEvent>
</PropertyGroup>
<PropertyGroup>
<PreBuildEvent>
</PreBuildEvent>
</PropertyGroup>
</Project>

View File

@ -86,6 +86,7 @@
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>(robocopy $(TargetDir) $(SolutionDir)\Artemis.UI\$(OutDir)\Plugins\$(ProjectName) /E /NFL /NDL /NJH /NJS /nc /ns /np) ^&amp; IF %25ERRORLEVEL%25 LEQ 4 exit /B 0</PostBuildEvent>
<PostBuildEvent>echo Copying plugin to Artemis.UI output directory
XCOPY "$(TargetDir.TrimEnd('\'))" "$(SolutionDir)\Artemis.UI\$(OutDir)Plugins\$(ProjectName)" /s /q /i /y</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -95,6 +95,7 @@
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>(robocopy $(TargetDir) $(SolutionDir)\Artemis.UI\$(OutDir)\Plugins\$(ProjectName) /E /NFL /NDL /NJH /NJS /nc /ns /np) ^&amp; IF %25ERRORLEVEL%25 LEQ 4 exit /B 0</PostBuildEvent>
<PostBuildEvent>echo Copying plugin to Artemis.UI output directory
XCOPY "$(TargetDir.TrimEnd('\'))" "$(SolutionDir)\Artemis.UI\$(OutDir)Plugins\$(ProjectName)" /s /q /i /y</PostBuildEvent>
</PropertyGroup>
</Project>

View File

@ -1,18 +1,13 @@
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using Artemis.Core;
using Artemis.Core.Extensions;
using Artemis.Core.Plugins.Abstract;
using Artemis.Core.Plugins.Models;
using Artemis.Core.Services.Interfaces;
using Artemis.Plugins.Modules.General.ViewModels;
using QRCoder;
using RGB.NET.Core;
using Stylet;
using Color = System.Drawing.Color;
using Rectangle = System.Drawing.Rectangle;
namespace Artemis.Plugins.Modules.General
{
@ -20,8 +15,6 @@ namespace Artemis.Plugins.Modules.General
{
private readonly PluginSettings _settings;
private readonly RGBSurface _surface;
private Dictionary<Led, Color> _colors;
private double _circlePosition;
private Color _color;
public GeneralModule(PluginInfo pluginInfo, IRgbService rgbService, PluginSettings settings) : base(pluginInfo)
@ -31,10 +24,6 @@ namespace Artemis.Plugins.Modules.General
ExpandsMainDataModel = true;
_surface = rgbService.Surface;
_colors = new Dictionary<Led, Color>();
rgbService.DeviceLoaded += (sender, args) => PopulateColors();
rgbService.DeviceReloaded += (sender, args) => PopulateColors();
var testSetting = _settings.GetSetting("TestSetting", DateTime.Now);
_color = ColorHelpers.GetRandomRainbowColor();
@ -42,8 +31,6 @@ namespace Artemis.Plugins.Modules.General
public override void EnablePlugin()
{
var qrGenerator = new QRCodeGenerator();
PopulateColors();
}
public override void DisablePlugin()
@ -52,56 +39,16 @@ namespace Artemis.Plugins.Modules.General
public override void Update(double deltaTime)
{
if (_colors == null)
return;
foreach (var surfaceLed in _surface.Leds)
UpdateLedColor(surfaceLed, deltaTime);
_color = ColorHelpers.ShiftColor(_color, (int) (deltaTime * 200));
}
public override void Render(double deltaTime, RGBSurface surface, Graphics graphics)
{
_circlePosition += deltaTime * 50;
if (_circlePosition > 600)
{
_circlePosition = -200;
_color = ColorHelpers.GetRandomRainbowColor();
}
var rect = new Rectangle((int) _circlePosition * 4, 0, 200, (int) surface.Leds.Max(l => l.AbsoluteLedRectangle.Y + l.AbsoluteLedRectangle.Height));
graphics.FillRectangle(new SolidBrush(_color), rect);
// // Lets do this in the least performant way possible
// foreach (var surfaceLed in _surface.Leds)
// {
// var rectangle = surfaceLed.AbsoluteLedRectangle.ToDrawingRectangle();
// if (surfaceLed.Id == LedId.Fan1)
// {
// graphics.FillRectangle(new SolidBrush(Color.Red), rectangle);
// }
// if (surfaceLed.Id == LedId.Fan2)
// {
// graphics.FillRectangle(new SolidBrush(Color.Blue), rectangle);
// }
// if (surfaceLed.Id == LedId.Fan3)
// {
// graphics.FillRectangle(new SolidBrush(Color.Green), rectangle);
// }
// }
return;
// Lets do this in the least performant way possible
foreach (var surfaceLed in _surface.Leds)
{
if (!_colors.ContainsKey(surfaceLed))
continue;
var brush = new SolidBrush(_colors[surfaceLed]);
var rectangle = surfaceLed.AbsoluteLedRectangle.ToDrawingRectangle();
graphics.FillRectangle(brush, rectangle);
UpdateLedColor(surfaceLed, deltaTime);
graphics.FillRectangle(new SolidBrush(_color), rectangle);
}
}
@ -112,25 +59,6 @@ namespace Artemis.Plugins.Modules.General
public override void Dispose()
{
_colors = null;
}
private void UpdateLedColor(Led led, double deltaTime)
{
if (_colors.ContainsKey(led))
_colors[led] = ColorHelpers.ShiftColor(_colors[led], (int) (deltaTime * 200));
else
_colors[led] = ColorHelpers.GetRandomRainbowColor();
}
private void PopulateColors()
{
lock (_colors)
{
_colors = new Dictionary<Led, Color>();
foreach (var surfaceLed in _surface.Leds)
_colors.Add(surfaceLed, ColorHelpers.GetRandomRainbowColor());
}
}
}
}

View File

@ -4,12 +4,15 @@ using System.Windows;
using System.Windows.Input;
using RGB.NET.Core;
using Stylet;
using Point = System.Windows.Point;
namespace Artemis.UI.ViewModels.Controls.RgbDevice
{
public class RgbDeviceViewModel : PropertyChangedBase
{
private readonly List<RgbLedViewModel> _leds;
private double _dragOffsetX;
private double _dragOffsetY;
public RgbDeviceViewModel(IRGBDevice device)
{
@ -38,6 +41,44 @@ namespace Artemis.UI.ViewModels.Controls.RgbDevice
rgbLedViewModel.ColorsEnabled = enabled;
}
public void StartMouseDrag(Point mouseStartPosition)
{
_dragOffsetX = Device.Location.X - mouseStartPosition.X;
_dragOffsetY = Device.Location.Y - mouseStartPosition.Y;
}
public void UpdateMouseDrag(Point mousePosition)
{
var roundedX = Math.Round((mousePosition.X + _dragOffsetX) / 10, 0, MidpointRounding.AwayFromZero) * 10;
var roundedY = Math.Round((mousePosition.Y + _dragOffsetY) / 10, 0, MidpointRounding.AwayFromZero) * 10;
this.Device.Location = new RGB.NET.Core.Point(roundedX, roundedY);
}
public void FinishMouseDrag(Point mouseEndPosition)
{
// TODO: Save and update
}
// ReSharper disable once UnusedMember.Global - Called from view
public void MouseEnter()
{
if (SelectionStatus == SelectionStatus.None)
{
SelectionStatus = SelectionStatus.Hover;
Cursor = Cursors.Hand;
}
}
// ReSharper disable once UnusedMember.Global - Called from view
public void MouseLeave()
{
if (SelectionStatus == SelectionStatus.Hover)
{
SelectionStatus = SelectionStatus.None;
Cursor = Cursors.Arrow;
}
}
public Rect DeviceRectangle => new Rect(Device.Location.X, Device.Location.Y, Device.Size.Width, Device.Size.Height);
}

View File

@ -20,7 +20,6 @@ namespace Artemis.UI.ViewModels.Controls.RgbDevice
Update();
}
[DoNotNotify]
public Led Led { get; }
public double X { get; private set; }
@ -97,6 +96,8 @@ namespace Artemis.UI.ViewModels.Controls.RgbDevice
{
if (ColorsEnabled)
{
if (Led.Id == LedId.Keyboard_Y)
Console.WriteLine();
var newColor = Led.Color.ToMediaColor();
SetColor(newColor);
}

View File

@ -30,7 +30,7 @@ namespace Artemis.UI.ViewModels.Screens
foreach (var surfaceDevice in _rgbService.Surface.Devices)
{
var device = new RgbDeviceViewModel(surfaceDevice) {Cursor = Cursors.Hand};
device.SetColorsEnabled(false);
// device.SetColorsEnabled(false);
Devices.Add(device);
}
@ -48,7 +48,7 @@ namespace Artemis.UI.ViewModels.Screens
if (Devices.All(d => d.Device != e.Device))
{
var device = new RgbDeviceViewModel(e.Device) {Cursor = Cursors.Hand};
device.SetColorsEnabled(false);
// device.SetColorsEnabled(false);
Devices.Add(device);
}
});
@ -60,67 +60,112 @@ namespace Artemis.UI.ViewModels.Screens
rgbDeviceViewModel.Update();
}
#region Selection
#region Mouse actions
private bool _editorSelecting;
private Point _selectionStartPoint;
private MouseDragStatus _mouseDragStatus;
private Point _mouseDragStartPoint;
private void StartSelection(Point position)
private void StartMouseDrag(Point position)
{
_selectionStartPoint = position;
_editorSelecting = true;
// If drag started on top of a device, initialise dragging
var device = Devices.LastOrDefault(d => d.DeviceRectangle.Contains(position));
if (device != null)
{
_mouseDragStatus = MouseDragStatus.Dragging;
// If the device is not selected, deselect others and select only this one
if (device.SelectionStatus != SelectionStatus.Selected)
{
foreach (var others in Devices)
others.SelectionStatus = SelectionStatus.None;
device.SelectionStatus = SelectionStatus.Selected;
}
foreach (var selectedDevice in Devices.Where(d => d.SelectionStatus == SelectionStatus.Selected))
selectedDevice.StartMouseDrag(position);
}
// Start multi-selection
else
{
_mouseDragStatus = MouseDragStatus.Selecting;
_mouseDragStartPoint = position;
}
SelectionRectangle.Rect = new Rect();
// While dragging always show an arrow to avoid cursor flicker
Mouse.OverrideCursor = Cursors.Arrow;
// Any time dragging starts, start with a new rect
SelectionRectangle.Rect = new Rect();
}
private void StopSelection(Point position)
private void StopMouseDrag(Point position)
{
_editorSelecting = false;
Mouse.OverrideCursor = null;
var selectedRect = new Rect(_selectionStartPoint, position);
foreach (var device in Devices)
if (_mouseDragStatus == MouseDragStatus.Dragging)
{
if (device.DeviceRectangle.IntersectsWith(selectedRect))
device.SelectionStatus = SelectionStatus.Selected;
else
device.SelectionStatus = SelectionStatus.None;
}
else
{
var selectedRect = new Rect(_mouseDragStartPoint, position);
foreach (var device in Devices)
{
if (device.DeviceRectangle.IntersectsWith(selectedRect))
device.SelectionStatus = SelectionStatus.Selected;
else
device.SelectionStatus = SelectionStatus.None;
}
}
Mouse.OverrideCursor = null;
_mouseDragStatus = MouseDragStatus.None;
}
private void UpdateSelection(Point position)
{
var selectedRect = new Rect(_selectionStartPoint, position);
SelectionRectangle.Rect = selectedRect;
foreach (var device in Devices)
lock (Devices)
{
if (device.DeviceRectangle.IntersectsWith(selectedRect))
device.SelectionStatus = SelectionStatus.Selected;
else
device.SelectionStatus = SelectionStatus.None;
var selectedRect = new Rect(_mouseDragStartPoint, position);
SelectionRectangle.Rect = selectedRect;
foreach (var device in Devices)
{
if (device.DeviceRectangle.IntersectsWith(selectedRect))
device.SelectionStatus = SelectionStatus.Selected;
else
device.SelectionStatus = SelectionStatus.None;
}
}
}
private void MoveSelected(Point position)
{
foreach (var device in Devices.Where(d => d.SelectionStatus == SelectionStatus.Selected))
device.UpdateMouseDrag(position);
}
// ReSharper disable once UnusedMember.Global - Called from view
public void EditorGridMouseClick(object sender, MouseEventArgs e)
{
var position = e.GetPosition((IInputElement) sender);
if (e.LeftButton == MouseButtonState.Pressed)
StartSelection(position);
StartMouseDrag(position);
else
StopSelection(position);
StopMouseDrag(position);
}
// ReSharper disable once UnusedMember.Global - Called from view
public void EditorGridMouseMove(object sender, MouseEventArgs e)
{
if (!_editorSelecting)
return;
var position = e.GetPosition((IInputElement) sender);
UpdateSelection(position);
if (_mouseDragStatus == MouseDragStatus.Dragging)
MoveSelected(position);
else if (_mouseDragStatus == MouseDragStatus.Selecting)
UpdateSelection(position);
}
#endregion
}
internal enum MouseDragStatus
{
None,
Selecting,
Dragging
}
}

View File

@ -4,12 +4,13 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:rgbDevice="clr-namespace:Artemis.UI.ViewModels.Controls.RgbDevice"
xmlns:xaml="https://github.com/canton7/Stylet"
xmlns:s="https://github.com/canton7/Stylet"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance rgbDevice:RgbDeviceViewModel}"
d:DesignHeight="450" d:DesignWidth="800"
Cursor="{Binding Cursor}">
<UserControl.Resources></UserControl.Resources>
Cursor="{Binding Cursor}"
MouseEnter="{s:Action MouseEnter}"
MouseLeave="{s:Action MouseLeave}">
<Grid>
<Image Source="{Binding Device.DeviceInfo.Image}" />
<ItemsControl ItemsSource="{Binding Leds}">
@ -26,42 +27,54 @@
</ItemsControl.ItemContainerStyle>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ContentControl Width="{Binding Width}" Height="{Binding Height}" xaml:View.Model="{Binding}" />
<ContentControl Width="{Binding Width}" Height="{Binding Height}" s:View.Model="{Binding}" />
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Rectangle Width="Auto" Height="Auto" StrokeThickness="1">
<Rectangle Width="Auto" Height="Auto" StrokeThickness="2">
<Rectangle.Stroke>
<SolidColorBrush Color="{StaticResource IdealForegroundColor}"/>
</Rectangle.Stroke>
<Rectangle.Fill>
<SolidColorBrush Color="{StaticResource IdealForegroundColor}" Opacity="0.25"/>
</Rectangle.Fill>
<Rectangle.Style>
<Style TargetType="Rectangle">
<Style.Triggers>
<DataTrigger Binding="{Binding SelectionStatus}" Value="{x:Static rgbDevice:SelectionStatus.Hover}">
<Setter Property="Rectangle.Fill">
<Setter.Value>
<SolidColorBrush Color="{DynamicResource IdealForegroundColor}" Opacity="0.25" />
</Setter.Value>
</Setter>
<Setter Property="Rectangle.Stroke" Value="{DynamicResource IdealForegroundColorBrush}"/>
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="ToSelected"></StopStoryboard>
<BeginStoryboard x:Name="ToHover">
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" To="{StaticResource IdealForegroundColor}" Duration="0:0:0.25" />
<ColorAnimation Storyboard.TargetProperty="(Rectangle.Stroke).(SolidColorBrush.Color)" To="{StaticResource IdealForegroundColor}" Duration="0:0:0.25" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding SelectionStatus}" Value="{x:Static rgbDevice:SelectionStatus.Selected}">
<Setter Property="Rectangle.Fill">
<Setter.Value>
<SolidColorBrush Color="{DynamicResource Primary400}" Opacity="0.25" />
</Setter.Value>
</Setter>
<Setter Property="Rectangle.Stroke" Value="{DynamicResource PrimaryHueLightBrush}" />
<DataTrigger.EnterActions>
<StopStoryboard BeginStoryboardName="ToHover"></StopStoryboard>
<BeginStoryboard x:Name="ToSelected">
<Storyboard>
<ColorAnimation Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" To="{StaticResource Primary400}" Duration="0:0:0.25" />
<ColorAnimation Storyboard.TargetProperty="(Rectangle.Stroke).(SolidColorBrush.Color)" To="{StaticResource Primary400}" Duration="0:0:0.25" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
</DataTrigger>
<DataTrigger Binding="{Binding SelectionStatus}" Value="{x:Static rgbDevice:SelectionStatus.None}">
<DataTrigger.EnterActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="1" To="0" Duration="0:0:0.25" />
<DoubleAnimation Storyboard.TargetProperty="Opacity" To="0" Duration="0:0:0.25" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.EnterActions>
<DataTrigger.ExitActions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Storyboard.TargetProperty="Opacity" From="0" To="1" Duration="0:0:0.25" />
<DoubleAnimation Storyboard.TargetProperty="Opacity" To="1" Duration="0:0:0.25" />
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>