reflexion 0.5.3 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.doc/ext/reflex/application.cpp +56 -7
- data/.doc/ext/reflex/capture_event.cpp +1 -1
- data/.doc/ext/reflex/chase_constraint.cpp +84 -0
- data/.doc/ext/reflex/clipboard.cpp +65 -0
- data/.doc/ext/reflex/color_event.cpp +76 -0
- data/.doc/ext/reflex/color_picker.cpp +113 -0
- data/.doc/ext/reflex/constraint.cpp +135 -0
- data/.doc/ext/reflex/contact_event.cpp +1 -1
- data/.doc/ext/reflex/control_change_event.cpp +1 -1
- data/.doc/ext/reflex/device.cpp +1 -1
- data/.doc/ext/reflex/device_event.cpp +1 -1
- data/.doc/ext/reflex/draw_event.cpp +1 -1
- data/.doc/ext/reflex/ellipse_shape.cpp +1 -1
- data/.doc/ext/reflex/event.cpp +1 -1
- data/.doc/ext/reflex/file_dialog.cpp +181 -0
- data/.doc/ext/reflex/file_event.cpp +103 -0
- data/.doc/ext/reflex/filter.cpp +1 -1
- data/.doc/ext/reflex/focus_event.cpp +1 -1
- data/.doc/ext/reflex/frame_event.cpp +1 -1
- data/.doc/ext/reflex/gamepad.cpp +48 -0
- data/.doc/ext/reflex/image_view.cpp +1 -1
- data/.doc/ext/reflex/key_event.cpp +1 -274
- data/.doc/ext/reflex/line_shape.cpp +1 -1
- data/.doc/ext/reflex/link_constraint.cpp +178 -0
- data/.doc/ext/reflex/menu.cpp +303 -0
- data/.doc/ext/reflex/midi.cpp +9 -2
- data/.doc/ext/reflex/midi_event.cpp +1 -1
- data/.doc/ext/reflex/motion_event.cpp +1 -1
- data/.doc/ext/reflex/native.cpp +40 -10
- data/.doc/ext/reflex/note_event.cpp +1 -1
- data/.doc/ext/reflex/pin.cpp +156 -0
- data/.doc/ext/reflex/pointer.cpp +3 -1
- data/.doc/ext/reflex/pointer_event.cpp +3 -3
- data/.doc/ext/reflex/polygon_shape.cpp +1 -1
- data/.doc/ext/reflex/rect_shape.cpp +1 -1
- data/.doc/ext/reflex/reflex.cpp +606 -237
- data/.doc/ext/reflex/screen.cpp +27 -1
- data/.doc/ext/reflex/scroll_event.cpp +1 -1
- data/.doc/ext/reflex/selector.cpp +5 -5
- data/.doc/ext/reflex/shape.cpp +1 -1
- data/.doc/ext/reflex/snap_constraint.cpp +125 -0
- data/.doc/ext/reflex/style.cpp +1 -1
- data/.doc/ext/reflex/style_length.cpp +4 -3
- data/.doc/ext/reflex/text_event.cpp +104 -0
- data/.doc/ext/reflex/timer.cpp +1 -1
- data/.doc/ext/reflex/timer_event.cpp +1 -1
- data/.doc/ext/reflex/update_event.cpp +1 -1
- data/.doc/ext/reflex/view.cpp +206 -79
- data/.doc/ext/reflex/wheel_constraint.cpp +142 -0
- data/.doc/ext/reflex/wheel_event.cpp +1 -1
- data/.doc/ext/reflex/window.cpp +282 -31
- data/.github/workflows/release-gem.yml +2 -40
- data/.github/workflows/tag.yml +5 -28
- data/.github/workflows/test.yml +1 -28
- data/ChangeLog.md +79 -0
- data/Gemfile.lock +13 -8
- data/README.md +1 -0
- data/Rakefile +13 -2
- data/Reflex.podspec +2 -2
- data/VERSION +1 -1
- data/ext/reflex/application.cpp +62 -7
- data/ext/reflex/capture_event.cpp +1 -1
- data/ext/reflex/chase_constraint.cpp +89 -0
- data/ext/reflex/clipboard.cpp +69 -0
- data/ext/reflex/color_event.cpp +80 -0
- data/ext/reflex/color_picker.cpp +121 -0
- data/ext/reflex/constraint.cpp +146 -0
- data/ext/reflex/contact_event.cpp +1 -1
- data/ext/reflex/control_change_event.cpp +1 -1
- data/ext/reflex/device.cpp +1 -1
- data/ext/reflex/device_event.cpp +1 -1
- data/ext/reflex/draw_event.cpp +1 -1
- data/ext/reflex/ellipse_shape.cpp +1 -1
- data/ext/reflex/event.cpp +1 -1
- data/ext/reflex/extconf.rb +4 -2
- data/ext/reflex/file_dialog.cpp +194 -0
- data/ext/reflex/file_event.cpp +108 -0
- data/ext/reflex/filter.cpp +1 -1
- data/ext/reflex/focus_event.cpp +1 -1
- data/ext/reflex/frame_event.cpp +1 -1
- data/ext/reflex/gamepad.cpp +50 -0
- data/ext/reflex/image_view.cpp +1 -1
- data/ext/reflex/key_event.cpp +1 -275
- data/ext/reflex/line_shape.cpp +1 -1
- data/ext/reflex/link_constraint.cpp +194 -0
- data/ext/reflex/menu.cpp +331 -0
- data/ext/reflex/midi.cpp +11 -3
- data/ext/reflex/midi_event.cpp +1 -1
- data/ext/reflex/motion_event.cpp +1 -1
- data/ext/reflex/native.cpp +40 -10
- data/ext/reflex/note_event.cpp +1 -1
- data/ext/reflex/pin.cpp +165 -0
- data/ext/reflex/pointer.cpp +3 -1
- data/ext/reflex/pointer_event.cpp +3 -3
- data/ext/reflex/polygon_shape.cpp +1 -1
- data/ext/reflex/rect_shape.cpp +1 -1
- data/ext/reflex/reflex.cpp +608 -237
- data/ext/reflex/screen.cpp +31 -2
- data/ext/reflex/scroll_event.cpp +1 -1
- data/ext/reflex/selector.cpp +5 -5
- data/ext/reflex/selector.h +10 -10
- data/ext/reflex/shape.cpp +1 -1
- data/ext/reflex/snap_constraint.cpp +135 -0
- data/ext/reflex/style.cpp +1 -1
- data/ext/reflex/style_length.cpp +4 -3
- data/ext/reflex/text_event.cpp +111 -0
- data/ext/reflex/timer.cpp +1 -1
- data/ext/reflex/timer_event.cpp +1 -1
- data/ext/reflex/update_event.cpp +1 -1
- data/ext/reflex/view.cpp +236 -96
- data/ext/reflex/wheel_constraint.cpp +154 -0
- data/ext/reflex/wheel_event.cpp +1 -1
- data/ext/reflex/window.cpp +318 -40
- data/include/reflex/application.h +19 -0
- data/include/reflex/clipboard.h +53 -0
- data/include/reflex/color_picker.h +65 -0
- data/include/reflex/constraint.h +275 -0
- data/include/reflex/defs.h +204 -195
- data/include/reflex/event.h +180 -88
- data/include/reflex/file_dialog.h +73 -0
- data/include/reflex/gamepad.h +3 -0
- data/include/reflex/menu.h +120 -0
- data/include/reflex/midi.h +3 -0
- data/include/reflex/pin.h +68 -0
- data/include/reflex/pointer.h +4 -0
- data/include/reflex/reflex.h +2 -0
- data/include/reflex/ruby/application.h +6 -1
- data/include/reflex/ruby/clipboard.h +23 -0
- data/include/reflex/ruby/color_picker.h +89 -0
- data/include/reflex/ruby/constraint.h +94 -0
- data/include/reflex/ruby/event.h +62 -29
- data/include/reflex/ruby/file_dialog.h +89 -0
- data/include/reflex/ruby/gamepad.h +46 -0
- data/include/reflex/ruby/menu.h +103 -0
- data/include/reflex/ruby/pin.h +40 -0
- data/include/reflex/ruby/reflex.h +3 -0
- data/include/reflex/ruby/view.h +123 -39
- data/include/reflex/ruby/window.h +96 -19
- data/include/reflex/ruby.h +3 -0
- data/include/reflex/screen.h +11 -2
- data/include/reflex/view.h +66 -27
- data/include/reflex/window.h +57 -12
- data/include/reflex.h +8 -0
- data/lib/reflex/application.rb +5 -5
- data/lib/reflex/autoinit.rb +3 -1
- data/lib/reflex/button.rb +3 -3
- data/lib/reflex/chase_constraint.rb +15 -0
- data/lib/reflex/clipboard.rb +19 -0
- data/lib/reflex/color_event.rb +16 -0
- data/lib/reflex/color_picker.rb +45 -0
- data/lib/reflex/constraint.rb +29 -0
- data/lib/reflex/control_change_event.rb +17 -0
- data/lib/reflex/extension.rb +1 -1
- data/lib/reflex/file_dialog.rb +70 -0
- data/lib/reflex/file_event.rb +37 -0
- data/lib/reflex/helper.rb +79 -0
- data/lib/reflex/key_event.rb +14 -14
- data/lib/reflex/link_constraint.rb +31 -0
- data/lib/reflex/menu.rb +92 -0
- data/lib/reflex/model.rb +19 -19
- data/lib/reflex/note_event.rb +1 -1
- data/lib/reflex/pin.rb +39 -0
- data/lib/reflex/pointer.rb +30 -1
- data/lib/reflex/pointer_event.rb +13 -2
- data/lib/reflex/reflex.rb +5 -0
- data/lib/reflex/shape.rb +14 -14
- data/lib/reflex/snap_constraint.rb +28 -0
- data/lib/reflex/style.rb +16 -16
- data/lib/reflex/text_event.rb +40 -0
- data/lib/reflex/timer.rb +3 -3
- data/lib/reflex/view.rb +85 -18
- data/lib/reflex/wheel_constraint.rb +28 -0
- data/lib/reflex/wheel_event.rb +19 -1
- data/lib/reflex/window.rb +25 -13
- data/lib/reflex.rb +23 -8
- data/pod.rake +1 -1
- data/reflex.gemspec +4 -4
- data/samples/constraint.rb +152 -0
- data/samples/ime.rb +100 -0
- data/samples/ios/hello/hello.xcodeproj/project.pbxproj +236 -224
- data/samples/menu.rb +32 -0
- data/samples/model.rb +3 -3
- data/samples/test/alert.rb +93 -0
- data/samples/test/always_on.rb +76 -0
- data/samples/test/app_background.rb +51 -0
- data/samples/test/boundary.rb +75 -0
- data/samples/test/callback_exception.rb +101 -0
- data/samples/test/cancel.rb +53 -0
- data/samples/test/color_picker.rb +63 -0
- data/samples/test/file_dialog.rb +102 -0
- data/samples/window_style.rb +156 -0
- data/src/application.cpp +180 -20
- data/src/application.h +95 -5
- data/src/clipboard.cpp +81 -0
- data/src/color_picker.cpp +113 -0
- data/src/color_picker.h +36 -0
- data/src/constraint.cpp +1662 -0
- data/src/constraint.h +64 -0
- data/src/event.cpp +416 -252
- data/src/event.h +13 -2
- data/src/file_dialog.cpp +163 -0
- data/src/file_dialog.h +52 -0
- data/src/gamepad.cpp +42 -5
- data/src/gamepad.h +4 -0
- data/src/ios/app_delegate.mm +5 -3
- data/src/ios/application.mm +29 -0
- data/src/ios/clipboard.mm +44 -0
- data/src/ios/color_picker.mm +19 -0
- data/src/ios/event.h +6 -2
- data/src/ios/event.mm +31 -12
- data/src/ios/file_dialog.mm +21 -0
- data/src/ios/gamepad.mm +4 -4
- data/src/ios/menu.mm +41 -0
- data/src/ios/reflex.mm +8 -0
- data/src/ios/screen.mm +26 -0
- data/src/ios/view_controller.mm +47 -42
- data/src/ios/window.mm +44 -9
- data/src/menu.cpp +387 -0
- data/src/menu.h +81 -0
- data/src/midi.cpp +61 -31
- data/src/osx/app_delegate.h +4 -0
- data/src/osx/app_delegate.mm +168 -139
- data/src/osx/application.mm +103 -5
- data/src/osx/clipboard.mm +45 -0
- data/src/osx/color_picker.mm +112 -0
- data/src/osx/event.h +10 -0
- data/src/osx/event.mm +114 -30
- data/src/osx/file_dialog.mm +168 -0
- data/src/osx/gamepad.mm +2 -2
- data/src/osx/gamepad_hid.mm +1 -1
- data/src/osx/menu.h +25 -0
- data/src/osx/menu.mm +516 -0
- data/src/osx/native_window.h +16 -2
- data/src/osx/native_window.mm +141 -57
- data/src/osx/opengl_view.h +2 -1
- data/src/osx/opengl_view.mm +229 -37
- data/src/osx/reflex.mm +38 -0
- data/src/osx/screen.mm +36 -0
- data/src/osx/window.mm +117 -24
- data/src/pin.cpp +137 -0
- data/src/pointer.cpp +36 -16
- data/src/pointer.h +10 -0
- data/src/rays.h +46 -0
- data/src/sdl/application.cpp +73 -8
- data/src/sdl/clipboard.cpp +39 -0
- data/src/sdl/color_picker.cpp +18 -0
- data/src/sdl/event.cpp +44 -6
- data/src/sdl/event.h +18 -3
- data/src/sdl/file_dialog.cpp +20 -0
- data/src/sdl/gamepad.cpp +3 -7
- data/src/sdl/menu.cpp +40 -0
- data/src/sdl/reflex.cpp +20 -0
- data/src/sdl/screen.cpp +36 -0
- data/src/sdl/window.cpp +168 -37
- data/src/shape.cpp +15 -10
- data/src/view.cpp +583 -233
- data/src/view.h +22 -4
- data/src/vk.h +416 -0
- data/src/win32/application.cpp +167 -12
- data/src/win32/application.h +20 -0
- data/src/win32/clipboard.cpp +210 -0
- data/src/win32/color_picker.cpp +82 -0
- data/src/win32/event.cpp +123 -11
- data/src/win32/event.h +22 -3
- data/src/win32/file_dialog.cpp +226 -0
- data/src/win32/gamepad.cpp +9 -2
- data/src/win32/menu.cpp +490 -0
- data/src/win32/menu.h +35 -0
- data/src/win32/opengl.cpp +2 -9
- data/src/win32/reflex.cpp +44 -3
- data/src/win32/screen.cpp +164 -3
- data/src/win32/screen.h +8 -0
- data/src/win32/tray.cpp +191 -0
- data/src/win32/tray.h +22 -0
- data/src/win32/vk.cpp +11 -0
- data/src/win32/window.cpp +858 -135
- data/src/win32/window.h +9 -0
- data/src/window.cpp +929 -183
- data/src/window.h +77 -33
- data/src/world.cpp +86 -15
- data/src/world.h +9 -2
- data/test/helper.rb +24 -0
- data/test/test_application.rb +101 -1
- data/test/test_chase_constraint.rb +122 -0
- data/test/test_clipboard.rb +54 -0
- data/test/test_color_event.rb +36 -0
- data/test/test_color_picker.rb +62 -0
- data/test/test_constraint.rb +184 -0
- data/test/test_event.rb +1 -1
- data/test/test_file_dialog.rb +48 -0
- data/test/test_file_event.rb +43 -0
- data/test/test_has_text_preedit.rb +54 -0
- data/test/test_key_event.rb +23 -2
- data/test/test_link_constraint.rb +237 -0
- data/test/test_menu.rb +237 -0
- data/test/test_pin.rb +65 -0
- data/test/test_pointer.rb +50 -26
- data/test/test_pointer_event.rb +25 -10
- data/test/test_reflex.rb +36 -0
- data/test/test_screen.rb +24 -2
- data/test/test_snap_constraint.rb +140 -0
- data/test/test_text_event.rb +54 -0
- data/test/test_view.rb +152 -25
- data/test/test_wheel_constraint.rb +125 -0
- data/test/test_wheel_event.rb +24 -10
- data/test/test_window.rb +205 -43
- metadata +154 -10
- data/.github/workflows/utils.rb +0 -127
data/src/event.cpp
CHANGED
|
@@ -54,6 +54,12 @@ namespace Reflex
|
|
|
54
54
|
{
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
+
Event
|
|
58
|
+
Event::dup () const
|
|
59
|
+
{
|
|
60
|
+
return Event(this);
|
|
61
|
+
}
|
|
62
|
+
|
|
57
63
|
void
|
|
58
64
|
Event::block (bool parent)
|
|
59
65
|
{
|
|
@@ -620,6 +626,73 @@ namespace Reflex
|
|
|
620
626
|
}
|
|
621
627
|
|
|
622
628
|
|
|
629
|
+
struct TextEvent::Data
|
|
630
|
+
{
|
|
631
|
+
|
|
632
|
+
Action action;
|
|
633
|
+
|
|
634
|
+
String text;
|
|
635
|
+
|
|
636
|
+
int selection_offset, selection_size;
|
|
637
|
+
|
|
638
|
+
Data (
|
|
639
|
+
Action action = ACTION_NONE, const char* text = NULL,
|
|
640
|
+
int selection_offset = -1, int selection_size = 0)
|
|
641
|
+
: action(action), text(text ? text : ""),
|
|
642
|
+
selection_offset(selection_offset), selection_size(selection_size)
|
|
643
|
+
{
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
};// TextEvent::Data
|
|
647
|
+
|
|
648
|
+
|
|
649
|
+
TextEvent::TextEvent ()
|
|
650
|
+
{
|
|
651
|
+
}
|
|
652
|
+
|
|
653
|
+
TextEvent::TextEvent (
|
|
654
|
+
Action action, const char* text,
|
|
655
|
+
int selection_offset, int selection_size)
|
|
656
|
+
: self(new Data(action, text, selection_offset, selection_size))
|
|
657
|
+
{
|
|
658
|
+
}
|
|
659
|
+
|
|
660
|
+
TextEvent::TextEvent (const TextEvent* src)
|
|
661
|
+
: Event(src), self(new Data(*src->self))
|
|
662
|
+
{
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
TextEvent
|
|
666
|
+
TextEvent::dup () const
|
|
667
|
+
{
|
|
668
|
+
return TextEvent(this);
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
TextEvent::Action
|
|
672
|
+
TextEvent::action () const
|
|
673
|
+
{
|
|
674
|
+
return self->action;
|
|
675
|
+
}
|
|
676
|
+
|
|
677
|
+
const char*
|
|
678
|
+
TextEvent::text () const
|
|
679
|
+
{
|
|
680
|
+
return self->text;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
int
|
|
684
|
+
TextEvent::selection_offset () const
|
|
685
|
+
{
|
|
686
|
+
return self->selection_offset;
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
int
|
|
690
|
+
TextEvent::selection_size () const
|
|
691
|
+
{
|
|
692
|
+
return self->selection_size;
|
|
693
|
+
}
|
|
694
|
+
|
|
695
|
+
|
|
623
696
|
struct PointerEvent::Data
|
|
624
697
|
{
|
|
625
698
|
|
|
@@ -706,6 +779,8 @@ namespace Reflex
|
|
|
706
779
|
if (!child)
|
|
707
780
|
argument_error(__FILE__, __LINE__);
|
|
708
781
|
|
|
782
|
+
if (pthis->empty()) return;
|
|
783
|
+
|
|
709
784
|
const Bounds& frame = child->frame();
|
|
710
785
|
|
|
711
786
|
std::vector<Pointer> pointers;
|
|
@@ -724,7 +799,7 @@ namespace Reflex
|
|
|
724
799
|
}
|
|
725
800
|
|
|
726
801
|
void
|
|
727
|
-
|
|
802
|
+
PointerEvent_to_view_coord (PointerEvent* pthis, const View* view)
|
|
728
803
|
{
|
|
729
804
|
if (!pthis)
|
|
730
805
|
argument_error(__FILE__, __LINE__);
|
|
@@ -828,6 +903,12 @@ namespace Reflex
|
|
|
828
903
|
{
|
|
829
904
|
}
|
|
830
905
|
|
|
906
|
+
WheelEvent::WheelEvent (
|
|
907
|
+
const Point& position, const Point& dposition, uint modifiers)
|
|
908
|
+
: self(new Data(position, dposition, modifiers))
|
|
909
|
+
{
|
|
910
|
+
}
|
|
911
|
+
|
|
831
912
|
WheelEvent::WheelEvent (const WheelEvent* src)
|
|
832
913
|
: Event(src), self(new Data(*src->self))
|
|
833
914
|
{
|
|
@@ -870,503 +951,586 @@ namespace Reflex
|
|
|
870
951
|
}
|
|
871
952
|
|
|
872
953
|
|
|
873
|
-
struct
|
|
954
|
+
struct CaptureEvent::Data
|
|
874
955
|
{
|
|
875
956
|
|
|
876
|
-
|
|
957
|
+
uint begin, end;
|
|
877
958
|
|
|
878
|
-
|
|
959
|
+
Data (uint begin = 0, uint end = 0)
|
|
960
|
+
: begin(begin), end(end)
|
|
961
|
+
{
|
|
962
|
+
}
|
|
879
963
|
|
|
880
|
-
|
|
964
|
+
};// CaptureEvent::Data
|
|
881
965
|
|
|
882
|
-
};// MIDIEvent
|
|
883
966
|
|
|
967
|
+
CaptureEvent::CaptureEvent ()
|
|
968
|
+
{
|
|
969
|
+
}
|
|
884
970
|
|
|
885
|
-
|
|
886
|
-
|
|
971
|
+
CaptureEvent::CaptureEvent (uint begin, uint end)
|
|
972
|
+
: self(new Data(begin, end))
|
|
887
973
|
{
|
|
888
|
-
|
|
889
|
-
if (a != MIDIEvent::NOTE_ON && a != MIDIEvent::NOTE_OFF)
|
|
890
|
-
return false;
|
|
974
|
+
}
|
|
891
975
|
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
return true;
|
|
976
|
+
CaptureEvent::CaptureEvent (const CaptureEvent* src)
|
|
977
|
+
: Event(src), self(new Data(*src->self))
|
|
978
|
+
{
|
|
896
979
|
}
|
|
897
980
|
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
ControlChangeEvent* result, const MIDIEvent& event)
|
|
981
|
+
CaptureEvent
|
|
982
|
+
CaptureEvent::dup () const
|
|
901
983
|
{
|
|
902
|
-
|
|
903
|
-
|
|
984
|
+
return CaptureEvent(this);
|
|
985
|
+
}
|
|
904
986
|
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
987
|
+
uint
|
|
988
|
+
CaptureEvent::begin () const
|
|
989
|
+
{
|
|
990
|
+
return self->begin;
|
|
908
991
|
}
|
|
909
992
|
|
|
910
|
-
|
|
911
|
-
|
|
993
|
+
uint
|
|
994
|
+
CaptureEvent::end () const
|
|
912
995
|
{
|
|
913
|
-
|
|
996
|
+
return self->end;
|
|
914
997
|
}
|
|
915
998
|
|
|
916
999
|
|
|
917
|
-
|
|
1000
|
+
struct TimerEvent::Data
|
|
1001
|
+
{
|
|
1002
|
+
|
|
1003
|
+
Timer::Ref timer;
|
|
1004
|
+
|
|
1005
|
+
Data (Timer* timer = NULL)
|
|
1006
|
+
: timer(timer)
|
|
1007
|
+
{
|
|
1008
|
+
}
|
|
1009
|
+
|
|
1010
|
+
};// TimerEvent::Data
|
|
1011
|
+
|
|
1012
|
+
|
|
1013
|
+
TimerEvent::TimerEvent ()
|
|
918
1014
|
{
|
|
919
1015
|
}
|
|
920
1016
|
|
|
921
|
-
|
|
922
|
-
:
|
|
1017
|
+
TimerEvent::TimerEvent (Timer* timer)
|
|
1018
|
+
: self(new Data(timer))
|
|
923
1019
|
{
|
|
924
|
-
self->midi = midi;
|
|
925
|
-
memcpy(self->bytes, bytes, sizeof(uchar) * 3);
|
|
926
1020
|
}
|
|
927
1021
|
|
|
928
|
-
|
|
1022
|
+
TimerEvent::TimerEvent (const TimerEvent* src)
|
|
929
1023
|
: Event(src), self(new Data(*src->self))
|
|
930
1024
|
{
|
|
931
1025
|
}
|
|
932
1026
|
|
|
933
|
-
|
|
934
|
-
|
|
1027
|
+
TimerEvent
|
|
1028
|
+
TimerEvent::dup () const
|
|
935
1029
|
{
|
|
936
|
-
return
|
|
1030
|
+
return TimerEvent(this);
|
|
937
1031
|
}
|
|
938
1032
|
|
|
939
|
-
|
|
940
|
-
|
|
1033
|
+
Timer*
|
|
1034
|
+
TimerEvent::timer ()
|
|
941
1035
|
{
|
|
942
|
-
return self->
|
|
1036
|
+
return self->timer;
|
|
943
1037
|
}
|
|
944
1038
|
|
|
945
|
-
|
|
946
|
-
|
|
1039
|
+
const Timer*
|
|
1040
|
+
TimerEvent::timer () const
|
|
947
1041
|
{
|
|
948
|
-
|
|
949
|
-
{
|
|
950
|
-
case 0x9: return NOTE_ON;
|
|
951
|
-
case 0x8: return NOTE_OFF;
|
|
952
|
-
case 0xA: return KEY_PRESSURE;
|
|
953
|
-
case 0xB: return CONTROL_CHANGE;
|
|
954
|
-
case 0xC: return PROGRAM_CHANGE;
|
|
955
|
-
case 0xD: return CHANNEL_PRESSURE;
|
|
956
|
-
case 0xE: return PITCH_BEND_CHANGE;
|
|
957
|
-
case 0xF: return SYSTEM;
|
|
958
|
-
default: return ACTION_NONE;
|
|
959
|
-
}
|
|
1042
|
+
return const_cast<TimerEvent*>(this)->timer();
|
|
960
1043
|
}
|
|
961
1044
|
|
|
962
|
-
|
|
963
|
-
|
|
1045
|
+
View*
|
|
1046
|
+
TimerEvent::owner () const
|
|
964
1047
|
{
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
return -1;
|
|
1048
|
+
return self->timer ? self->timer->owner() : NULL;
|
|
1049
|
+
}
|
|
968
1050
|
|
|
969
|
-
|
|
1051
|
+
int
|
|
1052
|
+
TimerEvent::id () const
|
|
1053
|
+
{
|
|
1054
|
+
return self->timer ? self->timer->id() : Timer::ID_INVALID;
|
|
970
1055
|
}
|
|
971
1056
|
|
|
972
|
-
|
|
973
|
-
|
|
1057
|
+
float
|
|
1058
|
+
TimerEvent::interval () const
|
|
974
1059
|
{
|
|
975
|
-
return self->
|
|
1060
|
+
return self->timer ? self->timer->interval() : -1;
|
|
976
1061
|
}
|
|
977
1062
|
|
|
978
|
-
|
|
979
|
-
|
|
1063
|
+
int
|
|
1064
|
+
TimerEvent::count () const
|
|
980
1065
|
{
|
|
981
|
-
return self->
|
|
1066
|
+
return self->timer ? self->timer->count() : 0;
|
|
982
1067
|
}
|
|
983
1068
|
|
|
984
1069
|
bool
|
|
985
|
-
|
|
1070
|
+
TimerEvent::is_finished () const
|
|
986
1071
|
{
|
|
987
|
-
return self->
|
|
1072
|
+
return self->timer ? self->timer->is_finished() : true;
|
|
988
1073
|
}
|
|
989
1074
|
|
|
990
1075
|
|
|
991
|
-
struct
|
|
1076
|
+
struct ContactEvent::Data
|
|
992
1077
|
{
|
|
993
1078
|
|
|
994
|
-
Action action
|
|
995
|
-
|
|
996
|
-
int channel = 0;
|
|
997
|
-
|
|
998
|
-
int note = 0;
|
|
999
|
-
|
|
1000
|
-
float velocity = 0;
|
|
1079
|
+
Action action;
|
|
1001
1080
|
|
|
1002
|
-
|
|
1081
|
+
Shape* shape;
|
|
1003
1082
|
|
|
1004
|
-
|
|
1083
|
+
View* view;
|
|
1005
1084
|
|
|
1085
|
+
Data (Action action = ACTION_NONE, Shape* shape = NULL, View* view = NULL)
|
|
1086
|
+
: action(action), shape(shape), view(view)
|
|
1087
|
+
{
|
|
1088
|
+
}
|
|
1006
1089
|
|
|
1007
|
-
|
|
1008
|
-
NoteEvent_set_captured (NoteEvent* pthis, bool captured)
|
|
1009
|
-
{
|
|
1010
|
-
pthis->self->captured = captured;
|
|
1011
|
-
}
|
|
1090
|
+
};// ContactEvent::Data
|
|
1012
1091
|
|
|
1013
1092
|
|
|
1014
|
-
|
|
1093
|
+
ContactEvent::ContactEvent ()
|
|
1015
1094
|
{
|
|
1016
1095
|
}
|
|
1017
1096
|
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
: Event(time)
|
|
1097
|
+
ContactEvent::ContactEvent (Action action, Shape* shape)
|
|
1098
|
+
: self(new Data(action, shape, shape ? shape->owner() : NULL))
|
|
1021
1099
|
{
|
|
1022
|
-
self->action = action;
|
|
1023
|
-
self->channel = channel;
|
|
1024
|
-
self->note = note;
|
|
1025
|
-
self->velocity = velocity;
|
|
1026
1100
|
}
|
|
1027
1101
|
|
|
1028
|
-
|
|
1102
|
+
ContactEvent::ContactEvent (const ContactEvent* src)
|
|
1029
1103
|
: Event(src), self(new Data(*src->self))
|
|
1030
1104
|
{
|
|
1031
1105
|
}
|
|
1032
1106
|
|
|
1033
|
-
|
|
1034
|
-
|
|
1107
|
+
ContactEvent
|
|
1108
|
+
ContactEvent::dup () const
|
|
1035
1109
|
{
|
|
1036
|
-
return
|
|
1110
|
+
return ContactEvent(this);
|
|
1037
1111
|
}
|
|
1038
1112
|
|
|
1039
|
-
|
|
1040
|
-
|
|
1113
|
+
ContactEvent::Action
|
|
1114
|
+
ContactEvent::action () const
|
|
1041
1115
|
{
|
|
1042
1116
|
return self->action;
|
|
1043
1117
|
}
|
|
1044
1118
|
|
|
1045
|
-
|
|
1046
|
-
|
|
1119
|
+
Shape*
|
|
1120
|
+
ContactEvent::shape ()
|
|
1047
1121
|
{
|
|
1048
|
-
return self->
|
|
1122
|
+
return self->shape;
|
|
1049
1123
|
}
|
|
1050
1124
|
|
|
1051
|
-
|
|
1052
|
-
|
|
1125
|
+
const Shape*
|
|
1126
|
+
ContactEvent::shape () const
|
|
1053
1127
|
{
|
|
1054
|
-
return
|
|
1128
|
+
return const_cast<ContactEvent*>(this)->shape();
|
|
1055
1129
|
}
|
|
1056
1130
|
|
|
1057
|
-
|
|
1058
|
-
|
|
1131
|
+
View*
|
|
1132
|
+
ContactEvent::view ()
|
|
1059
1133
|
{
|
|
1060
|
-
|
|
1061
|
-
return 440 * std::pow(2.0, (note() - A4) / 12.0);
|
|
1134
|
+
return self->view;
|
|
1062
1135
|
}
|
|
1063
1136
|
|
|
1064
|
-
|
|
1065
|
-
|
|
1137
|
+
const View*
|
|
1138
|
+
ContactEvent::view () const
|
|
1066
1139
|
{
|
|
1067
|
-
return
|
|
1068
|
-
}
|
|
1069
|
-
|
|
1070
|
-
bool
|
|
1071
|
-
NoteEvent::is_captured () const
|
|
1072
|
-
{
|
|
1073
|
-
return self->captured;
|
|
1140
|
+
return const_cast<ContactEvent*>(this)->view();
|
|
1074
1141
|
}
|
|
1075
1142
|
|
|
1076
1143
|
|
|
1077
|
-
struct
|
|
1144
|
+
struct MotionEvent::Data
|
|
1078
1145
|
{
|
|
1079
1146
|
|
|
1080
|
-
|
|
1081
|
-
|
|
1082
|
-
int controller = 0;
|
|
1083
|
-
|
|
1084
|
-
float value = 0;
|
|
1147
|
+
Point gravity;
|
|
1085
1148
|
|
|
1086
|
-
|
|
1149
|
+
Data (const Point& gravity)
|
|
1150
|
+
: gravity(gravity)
|
|
1151
|
+
{
|
|
1152
|
+
}
|
|
1087
1153
|
|
|
1088
|
-
};//
|
|
1154
|
+
};// MotionEvent::Data
|
|
1089
1155
|
|
|
1090
1156
|
|
|
1091
|
-
|
|
1092
|
-
|
|
1157
|
+
MotionEvent::MotionEvent (const Point& gravity)
|
|
1158
|
+
: self(new Data(gravity))
|
|
1093
1159
|
{
|
|
1094
|
-
pthis->self->captured = captured;
|
|
1095
1160
|
}
|
|
1096
1161
|
|
|
1162
|
+
MotionEvent::MotionEvent (const MotionEvent* src)
|
|
1163
|
+
: Event(src), self(new Data(*src->self))
|
|
1164
|
+
{
|
|
1165
|
+
}
|
|
1097
1166
|
|
|
1098
|
-
|
|
1167
|
+
MotionEvent
|
|
1168
|
+
MotionEvent::dup () const
|
|
1099
1169
|
{
|
|
1170
|
+
return MotionEvent(this);
|
|
1100
1171
|
}
|
|
1101
1172
|
|
|
1102
|
-
|
|
1103
|
-
|
|
1104
|
-
: Event(time)
|
|
1173
|
+
const Point&
|
|
1174
|
+
MotionEvent::gravity () const
|
|
1105
1175
|
{
|
|
1106
|
-
self->
|
|
1107
|
-
self->controller = controller;
|
|
1108
|
-
self->value = value;
|
|
1176
|
+
return self->gravity;
|
|
1109
1177
|
}
|
|
1110
1178
|
|
|
1111
|
-
|
|
1112
|
-
|
|
1179
|
+
|
|
1180
|
+
struct FileEvent::Data
|
|
1181
|
+
{
|
|
1182
|
+
|
|
1183
|
+
Action action;
|
|
1184
|
+
|
|
1185
|
+
StringList paths;
|
|
1186
|
+
|
|
1187
|
+
Data (Action action = ACTION_NONE, const StringList& paths = {})
|
|
1188
|
+
: action(action), paths(paths)
|
|
1189
|
+
{
|
|
1190
|
+
}
|
|
1191
|
+
|
|
1192
|
+
};// FileEvent::Data
|
|
1193
|
+
|
|
1194
|
+
|
|
1195
|
+
FileEvent::FileEvent ()
|
|
1113
1196
|
{
|
|
1114
1197
|
}
|
|
1115
1198
|
|
|
1116
|
-
|
|
1117
|
-
|
|
1199
|
+
FileEvent::FileEvent (Action action, const StringList& paths)
|
|
1200
|
+
: self(new Data(action, paths))
|
|
1118
1201
|
{
|
|
1119
|
-
return ControlChangeEvent(this);
|
|
1120
1202
|
}
|
|
1121
1203
|
|
|
1122
|
-
|
|
1123
|
-
|
|
1204
|
+
FileEvent::FileEvent (const FileEvent* src)
|
|
1205
|
+
: Event(src), self(new Data(*src->self))
|
|
1124
1206
|
{
|
|
1125
|
-
return self->channel;
|
|
1126
1207
|
}
|
|
1127
1208
|
|
|
1128
|
-
|
|
1129
|
-
|
|
1209
|
+
FileEvent
|
|
1210
|
+
FileEvent::dup () const
|
|
1130
1211
|
{
|
|
1131
|
-
return
|
|
1212
|
+
return FileEvent(this);
|
|
1132
1213
|
}
|
|
1133
1214
|
|
|
1134
|
-
|
|
1135
|
-
|
|
1215
|
+
FileEvent::Action
|
|
1216
|
+
FileEvent::action () const
|
|
1136
1217
|
{
|
|
1137
|
-
return self->
|
|
1218
|
+
return self->action;
|
|
1138
1219
|
}
|
|
1139
1220
|
|
|
1140
|
-
|
|
1141
|
-
|
|
1221
|
+
const StringList&
|
|
1222
|
+
FileEvent::paths () const
|
|
1142
1223
|
{
|
|
1143
|
-
return self->
|
|
1224
|
+
return self->paths;
|
|
1144
1225
|
}
|
|
1145
1226
|
|
|
1146
1227
|
|
|
1147
|
-
struct
|
|
1228
|
+
struct ColorEvent::Data
|
|
1148
1229
|
{
|
|
1149
1230
|
|
|
1150
|
-
|
|
1231
|
+
Color color;
|
|
1151
1232
|
|
|
1152
|
-
|
|
1153
|
-
: begin(begin), end(end)
|
|
1154
|
-
{
|
|
1155
|
-
}
|
|
1156
|
-
|
|
1157
|
-
};// CaptureEvent::Data
|
|
1233
|
+
};// ColorEvent::Data
|
|
1158
1234
|
|
|
1159
1235
|
|
|
1160
|
-
|
|
1236
|
+
ColorEvent::ColorEvent ()
|
|
1161
1237
|
{
|
|
1162
1238
|
}
|
|
1163
1239
|
|
|
1164
|
-
|
|
1165
|
-
: self(new Data(begin, end))
|
|
1240
|
+
ColorEvent::ColorEvent (const Color& color)
|
|
1166
1241
|
{
|
|
1242
|
+
self->color = color;
|
|
1167
1243
|
}
|
|
1168
1244
|
|
|
1169
|
-
|
|
1245
|
+
ColorEvent::ColorEvent (const ColorEvent* src)
|
|
1170
1246
|
: Event(src), self(new Data(*src->self))
|
|
1171
1247
|
{
|
|
1172
1248
|
}
|
|
1173
1249
|
|
|
1174
|
-
|
|
1175
|
-
|
|
1250
|
+
ColorEvent
|
|
1251
|
+
ColorEvent::dup () const
|
|
1176
1252
|
{
|
|
1177
|
-
return
|
|
1253
|
+
return ColorEvent(this);
|
|
1178
1254
|
}
|
|
1179
1255
|
|
|
1180
|
-
|
|
1181
|
-
|
|
1256
|
+
const Color&
|
|
1257
|
+
ColorEvent::color () const
|
|
1182
1258
|
{
|
|
1183
|
-
return self->
|
|
1259
|
+
return self->color;
|
|
1184
1260
|
}
|
|
1185
1261
|
|
|
1186
|
-
|
|
1187
|
-
|
|
1262
|
+
|
|
1263
|
+
struct MIDIEvent::Data
|
|
1188
1264
|
{
|
|
1189
|
-
return self->end;
|
|
1190
|
-
}
|
|
1191
1265
|
|
|
1266
|
+
MIDI::Ref midi;
|
|
1192
1267
|
|
|
1193
|
-
|
|
1194
|
-
{
|
|
1268
|
+
uchar bytes[3] = {0};
|
|
1195
1269
|
|
|
1196
|
-
|
|
1270
|
+
bool captured = false;
|
|
1197
1271
|
|
|
1198
|
-
|
|
1199
|
-
: timer(timer)
|
|
1200
|
-
{
|
|
1201
|
-
}
|
|
1272
|
+
};// MIDIEvent::Data
|
|
1202
1273
|
|
|
1203
|
-
};// TimerEvent::Data
|
|
1204
1274
|
|
|
1275
|
+
bool
|
|
1276
|
+
MIDIEvent_to_note_event (NoteEvent* result, const MIDIEvent& event)
|
|
1277
|
+
{
|
|
1278
|
+
auto a = event.action();
|
|
1279
|
+
if (a != MIDIEvent::NOTE_ON && a != MIDIEvent::NOTE_OFF)
|
|
1280
|
+
return false;
|
|
1281
|
+
|
|
1282
|
+
*result = NoteEvent(
|
|
1283
|
+
a == MIDIEvent::NOTE_ON ? NoteEvent::ON : NoteEvent::OFF,
|
|
1284
|
+
event.channel(), event.data1(), event.data2() / 127.f, event.time());
|
|
1285
|
+
return true;
|
|
1286
|
+
}
|
|
1205
1287
|
|
|
1206
|
-
|
|
1288
|
+
bool
|
|
1289
|
+
MIDIEvent_to_control_change_event (
|
|
1290
|
+
ControlChangeEvent* result, const MIDIEvent& event)
|
|
1207
1291
|
{
|
|
1292
|
+
if (event.action() != MIDIEvent::CONTROL_CHANGE)
|
|
1293
|
+
return false;
|
|
1294
|
+
|
|
1295
|
+
*result = ControlChangeEvent(
|
|
1296
|
+
event.channel(), event.data1(), event.data2() / 127.f, event.time());
|
|
1297
|
+
return true;
|
|
1208
1298
|
}
|
|
1209
1299
|
|
|
1210
|
-
|
|
1211
|
-
|
|
1300
|
+
void
|
|
1301
|
+
MIDIEvent_set_captured (MIDIEvent* pthis, bool captured)
|
|
1212
1302
|
{
|
|
1303
|
+
pthis->self->captured = captured;
|
|
1213
1304
|
}
|
|
1214
1305
|
|
|
1215
|
-
|
|
1216
|
-
|
|
1306
|
+
|
|
1307
|
+
MIDIEvent::MIDIEvent ()
|
|
1217
1308
|
{
|
|
1218
1309
|
}
|
|
1219
1310
|
|
|
1220
|
-
|
|
1221
|
-
|
|
1311
|
+
MIDIEvent::MIDIEvent (MIDI* midi, const uchar* bytes, double time)
|
|
1312
|
+
: Event(time)
|
|
1222
1313
|
{
|
|
1223
|
-
|
|
1314
|
+
self->midi = midi;
|
|
1315
|
+
memcpy(self->bytes, bytes, sizeof(uchar) * 3);
|
|
1224
1316
|
}
|
|
1225
1317
|
|
|
1226
|
-
|
|
1227
|
-
|
|
1318
|
+
MIDIEvent::MIDIEvent (const MIDIEvent* src)
|
|
1319
|
+
: Event(src), self(new Data(*src->self))
|
|
1228
1320
|
{
|
|
1229
|
-
return self->timer;
|
|
1230
1321
|
}
|
|
1231
1322
|
|
|
1232
|
-
|
|
1233
|
-
|
|
1323
|
+
MIDIEvent
|
|
1324
|
+
MIDIEvent::dup () const
|
|
1234
1325
|
{
|
|
1235
|
-
return
|
|
1326
|
+
return MIDIEvent(this);
|
|
1236
1327
|
}
|
|
1237
1328
|
|
|
1238
|
-
|
|
1239
|
-
|
|
1329
|
+
MIDI*
|
|
1330
|
+
MIDIEvent::midi () const
|
|
1240
1331
|
{
|
|
1241
|
-
return self->
|
|
1332
|
+
return self->midi;
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1335
|
+
MIDIEvent::Action
|
|
1336
|
+
MIDIEvent::action () const
|
|
1337
|
+
{
|
|
1338
|
+
switch (self->bytes[0] >> 4)
|
|
1339
|
+
{
|
|
1340
|
+
case 0x9: return NOTE_ON;
|
|
1341
|
+
case 0x8: return NOTE_OFF;
|
|
1342
|
+
case 0xA: return KEY_PRESSURE;
|
|
1343
|
+
case 0xB: return CONTROL_CHANGE;
|
|
1344
|
+
case 0xC: return PROGRAM_CHANGE;
|
|
1345
|
+
case 0xD: return CHANNEL_PRESSURE;
|
|
1346
|
+
case 0xE: return PITCH_BEND_CHANGE;
|
|
1347
|
+
case 0xF: return SYSTEM;
|
|
1348
|
+
default: return ACTION_NONE;
|
|
1349
|
+
}
|
|
1242
1350
|
}
|
|
1243
1351
|
|
|
1244
1352
|
int
|
|
1245
|
-
|
|
1353
|
+
MIDIEvent::channel () const
|
|
1246
1354
|
{
|
|
1247
|
-
|
|
1355
|
+
auto a = action();
|
|
1356
|
+
if (a == ACTION_NONE || a == SYSTEM)
|
|
1357
|
+
return -1;
|
|
1358
|
+
|
|
1359
|
+
return self->bytes[0] & 0xF;
|
|
1248
1360
|
}
|
|
1249
1361
|
|
|
1250
|
-
|
|
1251
|
-
|
|
1362
|
+
uchar
|
|
1363
|
+
MIDIEvent::data1 () const
|
|
1252
1364
|
{
|
|
1253
|
-
return self->
|
|
1365
|
+
return self->bytes[1];
|
|
1254
1366
|
}
|
|
1255
1367
|
|
|
1256
|
-
|
|
1257
|
-
|
|
1368
|
+
uchar
|
|
1369
|
+
MIDIEvent::data2 () const
|
|
1258
1370
|
{
|
|
1259
|
-
return self->
|
|
1371
|
+
return self->bytes[2];
|
|
1260
1372
|
}
|
|
1261
1373
|
|
|
1262
1374
|
bool
|
|
1263
|
-
|
|
1375
|
+
MIDIEvent::is_captured () const
|
|
1264
1376
|
{
|
|
1265
|
-
return self->
|
|
1377
|
+
return self->captured;
|
|
1266
1378
|
}
|
|
1267
1379
|
|
|
1268
1380
|
|
|
1269
|
-
struct
|
|
1381
|
+
struct NoteEvent::Data
|
|
1270
1382
|
{
|
|
1271
1383
|
|
|
1272
|
-
Action action;
|
|
1384
|
+
Action action = ACTION_NONE;
|
|
1273
1385
|
|
|
1274
|
-
|
|
1386
|
+
int channel = 0;
|
|
1275
1387
|
|
|
1276
|
-
|
|
1388
|
+
int note = 0;
|
|
1277
1389
|
|
|
1278
|
-
|
|
1279
|
-
: action(action), shape(shape), view(view)
|
|
1280
|
-
{
|
|
1281
|
-
}
|
|
1390
|
+
float velocity = 0;
|
|
1282
1391
|
|
|
1283
|
-
|
|
1392
|
+
bool captured = false;
|
|
1284
1393
|
|
|
1394
|
+
};// NoteEvent::Data
|
|
1285
1395
|
|
|
1286
|
-
|
|
1396
|
+
|
|
1397
|
+
void
|
|
1398
|
+
NoteEvent_set_captured (NoteEvent* pthis, bool captured)
|
|
1287
1399
|
{
|
|
1400
|
+
pthis->self->captured = captured;
|
|
1288
1401
|
}
|
|
1289
1402
|
|
|
1290
|
-
|
|
1291
|
-
|
|
1403
|
+
|
|
1404
|
+
NoteEvent::NoteEvent ()
|
|
1292
1405
|
{
|
|
1293
1406
|
}
|
|
1294
1407
|
|
|
1295
|
-
|
|
1408
|
+
NoteEvent::NoteEvent (
|
|
1409
|
+
Action action, int channel, int note, float velocity, double time)
|
|
1410
|
+
: Event(time)
|
|
1411
|
+
{
|
|
1412
|
+
self->action = action;
|
|
1413
|
+
self->channel = channel;
|
|
1414
|
+
self->note = note;
|
|
1415
|
+
self->velocity = velocity;
|
|
1416
|
+
}
|
|
1417
|
+
|
|
1418
|
+
NoteEvent::NoteEvent (const NoteEvent* src)
|
|
1296
1419
|
: Event(src), self(new Data(*src->self))
|
|
1297
1420
|
{
|
|
1298
1421
|
}
|
|
1299
1422
|
|
|
1300
|
-
|
|
1301
|
-
|
|
1423
|
+
NoteEvent
|
|
1424
|
+
NoteEvent::dup () const
|
|
1302
1425
|
{
|
|
1303
|
-
return
|
|
1426
|
+
return NoteEvent(this);
|
|
1304
1427
|
}
|
|
1305
1428
|
|
|
1306
|
-
|
|
1307
|
-
|
|
1429
|
+
NoteEvent::Action
|
|
1430
|
+
NoteEvent::action () const
|
|
1308
1431
|
{
|
|
1309
1432
|
return self->action;
|
|
1310
1433
|
}
|
|
1311
1434
|
|
|
1312
|
-
|
|
1313
|
-
|
|
1435
|
+
int
|
|
1436
|
+
NoteEvent::channel () const
|
|
1314
1437
|
{
|
|
1315
|
-
return self->
|
|
1438
|
+
return self->channel;
|
|
1316
1439
|
}
|
|
1317
1440
|
|
|
1318
|
-
|
|
1319
|
-
|
|
1441
|
+
int
|
|
1442
|
+
NoteEvent::note () const
|
|
1320
1443
|
{
|
|
1321
|
-
return
|
|
1444
|
+
return self->note;
|
|
1322
1445
|
}
|
|
1323
1446
|
|
|
1324
|
-
|
|
1325
|
-
|
|
1447
|
+
float
|
|
1448
|
+
NoteEvent::frequency () const
|
|
1326
1449
|
{
|
|
1327
|
-
|
|
1450
|
+
static const int A4 = 69;
|
|
1451
|
+
return 440 * std::pow(2.0, (note() - A4) / 12.0);
|
|
1328
1452
|
}
|
|
1329
1453
|
|
|
1330
|
-
|
|
1331
|
-
|
|
1454
|
+
float
|
|
1455
|
+
NoteEvent::velocity () const
|
|
1332
1456
|
{
|
|
1333
|
-
return
|
|
1457
|
+
return self->velocity;
|
|
1334
1458
|
}
|
|
1335
1459
|
|
|
1460
|
+
bool
|
|
1461
|
+
NoteEvent::is_captured () const
|
|
1462
|
+
{
|
|
1463
|
+
return self->captured;
|
|
1464
|
+
}
|
|
1336
1465
|
|
|
1337
|
-
|
|
1466
|
+
|
|
1467
|
+
struct ControlChangeEvent::Data
|
|
1338
1468
|
{
|
|
1339
1469
|
|
|
1340
|
-
|
|
1470
|
+
int channel = 0;
|
|
1341
1471
|
|
|
1342
|
-
|
|
1343
|
-
: gravity(gravity)
|
|
1344
|
-
{
|
|
1345
|
-
}
|
|
1472
|
+
int controller = 0;
|
|
1346
1473
|
|
|
1347
|
-
|
|
1474
|
+
float value = 0;
|
|
1348
1475
|
|
|
1476
|
+
bool captured = false;
|
|
1349
1477
|
|
|
1350
|
-
|
|
1351
|
-
|
|
1478
|
+
};// ControlChangeEvent::Data
|
|
1479
|
+
|
|
1480
|
+
|
|
1481
|
+
void
|
|
1482
|
+
ControlChangeEvent_set_captured (ControlChangeEvent* pthis, bool captured)
|
|
1352
1483
|
{
|
|
1484
|
+
pthis->self->captured = captured;
|
|
1353
1485
|
}
|
|
1354
1486
|
|
|
1355
|
-
|
|
1487
|
+
|
|
1488
|
+
ControlChangeEvent::ControlChangeEvent ()
|
|
1489
|
+
{
|
|
1490
|
+
}
|
|
1491
|
+
|
|
1492
|
+
ControlChangeEvent::ControlChangeEvent (
|
|
1493
|
+
int channel, int controller, float value, double time)
|
|
1494
|
+
: Event(time)
|
|
1495
|
+
{
|
|
1496
|
+
self->channel = channel;
|
|
1497
|
+
self->controller = controller;
|
|
1498
|
+
self->value = value;
|
|
1499
|
+
}
|
|
1500
|
+
|
|
1501
|
+
ControlChangeEvent::ControlChangeEvent (const ControlChangeEvent* src)
|
|
1356
1502
|
: Event(src), self(new Data(*src->self))
|
|
1357
1503
|
{
|
|
1358
1504
|
}
|
|
1359
1505
|
|
|
1360
|
-
|
|
1361
|
-
|
|
1506
|
+
ControlChangeEvent
|
|
1507
|
+
ControlChangeEvent::dup () const
|
|
1362
1508
|
{
|
|
1363
|
-
return
|
|
1509
|
+
return ControlChangeEvent(this);
|
|
1364
1510
|
}
|
|
1365
1511
|
|
|
1366
|
-
|
|
1367
|
-
|
|
1512
|
+
int
|
|
1513
|
+
ControlChangeEvent::channel () const
|
|
1368
1514
|
{
|
|
1369
|
-
return self->
|
|
1515
|
+
return self->channel;
|
|
1516
|
+
}
|
|
1517
|
+
|
|
1518
|
+
int
|
|
1519
|
+
ControlChangeEvent::controller () const
|
|
1520
|
+
{
|
|
1521
|
+
return self->controller;
|
|
1522
|
+
}
|
|
1523
|
+
|
|
1524
|
+
float
|
|
1525
|
+
ControlChangeEvent::value () const
|
|
1526
|
+
{
|
|
1527
|
+
return self->value;
|
|
1528
|
+
}
|
|
1529
|
+
|
|
1530
|
+
bool
|
|
1531
|
+
ControlChangeEvent::is_captured () const
|
|
1532
|
+
{
|
|
1533
|
+
return self->captured;
|
|
1370
1534
|
}
|
|
1371
1535
|
|
|
1372
1536
|
|