Commit 97fea04

Nick Faro committed on
Correct uge spec, add checks for tracker grid casting
commit 97fea04e5ee186a9b5e6220df786a3dfec8ed435 parent aed1006
2 changed files +29−8
Modifiedmanual/src/hUGETracker/uge-format.md +9−8
@@ -1,14 +1,15 @@
1 # hUGETracker .UGE v5/v6 format spec 1 # hUGETracker .UGE v5/v6 format spec
2 ## Data types 2 ## Data types
3 3
4 | Name | Byte length | Description | 4 | Name | Byte length | Description |
5 |---------------|-------------|--------------------------------------------------------------------------| 5 |---------------|-------------|--------------------------------------------------------------------------------------------------------------------------------|
6 | `uint8` | 1 | Also known as char, ranges from 0 to 255. | 6 | `uint8` | 1 | Also known as char, ranges from 0 to 255. |
7 | `uint32` | 4 | Also known as word, ranges from 0 to 4,294,967,295. | 7 | `uint32` | 4 | Also known as word, ranges from 0 to 4,294,967,295. |
8 | `int8` | 1 | Ranges from -127 to 127. | 8 | `int8` | 1 | Ranges from -127 to 127. |
9 | `bool` | 1 | If not-zero, then True. | 9 | `bool` | 1 | If not-zero, then True. |
10 | `shortstring` | 256 | Consists of a byte defining the readable length and then 255 characters. | 10 | `shortstring` | 256 | Consists of a byte defining the readable length and then 255 characters. |
11 | `string` | - | A stream of characters, with 0x00 being the terminator value. | 11 | `string` | - | Consists of a uint32 defining the number of characters, and then a stream of characters, with 0x00 being the terminator value. |
12 | | | |
12 13
13 All types are little endian unless noted otherwise. 14 All types are little endian unless noted otherwise.
14 15
Modifiedsrc/tracker.pas +20−0
@@ -2099,6 +2099,7 @@ end;
2099 2099
2100 procedure TfrmTracker.MenuItem56Click(Sender: TObject); 2100 procedure TfrmTracker.MenuItem56Click(Sender: TObject);
2101 begin 2101 begin
2102 if not (ActiveControl is TTrackerGrid) then Exit;
2102 (ActiveControl as TTrackerGrid).ChangeSelectionInstrument; 2103 (ActiveControl as TTrackerGrid).ChangeSelectionInstrument;
2103 end; 2104 end;
2104 2105
@@ -2464,6 +2465,7 @@ end;
2464 2465
2465 procedure TfrmTracker.MenuItem31Click(Sender: TObject); 2466 procedure TfrmTracker.MenuItem31Click(Sender: TObject);
2466 begin 2467 begin
2468 if not (ActiveControl is TTrackerGrid) then Exit;
2467 (ActiveControl as TTrackerGrid).InterpolateSelection; 2469 (ActiveControl as TTrackerGrid).InterpolateSelection;
2468 end; 2470 end;
2469 2471
@@ -2502,21 +2504,25 @@ end;
2502 2504
2503 procedure TfrmTracker.OnIncrementValueBy1Click(Sender: TObject); 2505 procedure TfrmTracker.OnIncrementValueBy1Click(Sender: TObject);
2504 begin 2506 begin
2507 if not (ActiveControl is TTrackerGrid) then Exit;
2505 (ActiveControl as TTrackerGrid).IncrementSelection(1, 1, 0, 0, 1); 2508 (ActiveControl as TTrackerGrid).IncrementSelection(1, 1, 0, 0, 1);
2506 end; 2509 end;
2507 2510
2508 procedure TfrmTracker.OnDecrementValueBy1Click(Sender: TObject); 2511 procedure TfrmTracker.OnDecrementValueBy1Click(Sender: TObject);
2509 begin 2512 begin
2513 if not (ActiveControl is TTrackerGrid) then Exit;
2510 (ActiveControl as TTrackerGrid).IncrementSelection(-1, -1, 0, 0, -1); 2514 (ActiveControl as TTrackerGrid).IncrementSelection(-1, -1, 0, 0, -1);
2511 end; 2515 end;
2512 2516
2513 procedure TfrmTracker.OnIncrementValueBy10Click(Sender: TObject); 2517 procedure TfrmTracker.OnIncrementValueBy10Click(Sender: TObject);
2514 begin 2518 begin
2519 if not (ActiveControl is TTrackerGrid) then Exit;
2515 (ActiveControl as TTrackerGrid).IncrementSelection(12, 10, 0, 0, $10); 2520 (ActiveControl as TTrackerGrid).IncrementSelection(12, 10, 0, 0, $10);
2516 end; 2521 end;
2517 2522
2518 procedure TfrmTracker.OnDecrementValueBy10Click(Sender: TObject); 2523 procedure TfrmTracker.OnDecrementValueBy10Click(Sender: TObject);
2519 begin 2524 begin
2525 if not (ActiveControl is TTrackerGrid) then Exit;
2520 (ActiveControl as TTrackerGrid).IncrementSelection(-12, -10, 0, 0, -$10); 2526 (ActiveControl as TTrackerGrid).IncrementSelection(-12, -10, 0, 0, -$10);
2521 end; 2527 end;
2522 2528
@@ -2677,51 +2683,61 @@ end;
2677 2683
2678 procedure TfrmTracker.TrackerPopupCopyClick(Sender: TObject); 2684 procedure TfrmTracker.TrackerPopupCopyClick(Sender: TObject);
2679 begin 2685 begin
2686 if not (ActiveControl is TTrackerGrid) then Exit;
2680 SendMessage((ActiveControl as TTrackerGrid).Handle, LM_COPY, 0, 0) 2687 SendMessage((ActiveControl as TTrackerGrid).Handle, LM_COPY, 0, 0)
2681 end; 2688 end;
2682 2689
2683 procedure TfrmTracker.TrackerPopupCutClick(Sender: TObject); 2690 procedure TfrmTracker.TrackerPopupCutClick(Sender: TObject);
2684 begin 2691 begin
2692 if not (ActiveControl is TTrackerGrid) then Exit;
2685 SendMessage((ActiveControl as TTrackerGrid).Handle, LM_CUT, 0, 0) 2693 SendMessage((ActiveControl as TTrackerGrid).Handle, LM_CUT, 0, 0)
2686 end; 2694 end;
2687 2695
2688 procedure TfrmTracker.TrackerPopupEditEffectClick(Sender: TObject); 2696 procedure TfrmTracker.TrackerPopupEditEffectClick(Sender: TObject);
2689 begin 2697 begin
2698 if not (ActiveControl is TTrackerGrid) then Exit;
2690 (ActiveControl as TTrackerGrid).OpenEffectEditor; 2699 (ActiveControl as TTrackerGrid).OpenEffectEditor;
2691 end; 2700 end;
2692 2701
2693 procedure TfrmTracker.TrackerPopupEraseClick(Sender: TObject); 2702 procedure TfrmTracker.TrackerPopupEraseClick(Sender: TObject);
2694 begin 2703 begin
2704 if not (ActiveControl is TTrackerGrid) then Exit;
2695 (ActiveControl as TTrackerGrid).EraseSelection 2705 (ActiveControl as TTrackerGrid).EraseSelection
2696 end; 2706 end;
2697 2707
2698 procedure TfrmTracker.TrackerPopupFloodPasteClick(Sender: TObject); 2708 procedure TfrmTracker.TrackerPopupFloodPasteClick(Sender: TObject);
2699 begin 2709 begin
2710 if not (ActiveControl is TTrackerGrid) then Exit;
2700 (ActiveControl as TTrackerGrid).DoRepeatPaste; 2711 (ActiveControl as TTrackerGrid).DoRepeatPaste;
2701 end; 2712 end;
2702 2713
2703 procedure TfrmTracker.TrackerPopupPasteClick(Sender: TObject); 2714 procedure TfrmTracker.TrackerPopupPasteClick(Sender: TObject);
2704 begin 2715 begin
2716 if not (ActiveControl is TTrackerGrid) then Exit;
2705 SendMessage((ActiveControl as TTrackerGrid).Handle, LM_PASTE, 0, 0) 2717 SendMessage((ActiveControl as TTrackerGrid).Handle, LM_PASTE, 0, 0)
2706 end; 2718 end;
2707 2719
2708 procedure TfrmTracker.TrackerPopupRedoClick(Sender: TObject); 2720 procedure TfrmTracker.TrackerPopupRedoClick(Sender: TObject);
2709 begin 2721 begin
2722 if not (ActiveControl is TTrackerGrid) then Exit;
2710 (ActiveControl as TTrackerGrid).DoRedo 2723 (ActiveControl as TTrackerGrid).DoRedo
2711 end; 2724 end;
2712 2725
2713 procedure TfrmTracker.TrackerPopupSelectAllClick(Sender: TObject); 2726 procedure TfrmTracker.TrackerPopupSelectAllClick(Sender: TObject);
2714 begin 2727 begin
2728 if not (ActiveControl is TTrackerGrid) then Exit;
2715 (ActiveControl as TTrackerGrid).SelectAll 2729 (ActiveControl as TTrackerGrid).SelectAll
2716 end; 2730 end;
2717 2731
2718 procedure TfrmTracker.TrackerPopupSelectChannelClick(Sender: TObject); 2732 procedure TfrmTracker.TrackerPopupSelectChannelClick(Sender: TObject);
2719 begin 2733 begin
2734 if not (ActiveControl is TTrackerGrid) then Exit;
2720 (ActiveControl as TTrackerGrid).SelectColumn 2735 (ActiveControl as TTrackerGrid).SelectColumn
2721 end; 2736 end;
2722 2737
2723 procedure TfrmTracker.TrackerPopupTransposeOctaveDownClick(Sender: TObject); 2738 procedure TfrmTracker.TrackerPopupTransposeOctaveDownClick(Sender: TObject);
2724 begin 2739 begin
2740 if not (ActiveControl is TTrackerGrid) then Exit;
2725 (ActiveControl as TTrackerGrid).TransposeSelection(-12); 2741 (ActiveControl as TTrackerGrid).TransposeSelection(-12);
2726 if TrackerSettings.PreviewWhenBumping then 2742 if TrackerSettings.PreviewWhenBumping then
2727 PreviewNoteUnderCursor; 2743 PreviewNoteUnderCursor;
@@ -2729,6 +2745,7 @@ end;
2729 2745
2730 procedure TfrmTracker.TrackerPopupTransposeOctaveUpClick(Sender: TObject); 2746 procedure TfrmTracker.TrackerPopupTransposeOctaveUpClick(Sender: TObject);
2731 begin 2747 begin
2748 if not (ActiveControl is TTrackerGrid) then Exit;
2732 (ActiveControl as TTrackerGrid).TransposeSelection(12); 2749 (ActiveControl as TTrackerGrid).TransposeSelection(12);
2733 if TrackerSettings.PreviewWhenBumping then 2750 if TrackerSettings.PreviewWhenBumping then
2734 PreviewNoteUnderCursor; 2751 PreviewNoteUnderCursor;
@@ -2736,6 +2753,7 @@ end;
2736 2753
2737 procedure TfrmTracker.TrackerPopupTransposeSemiDownClick(Sender: TObject); 2754 procedure TfrmTracker.TrackerPopupTransposeSemiDownClick(Sender: TObject);
2738 begin 2755 begin
2756 if not (ActiveControl is TTrackerGrid) then Exit;
2739 (ActiveControl as TTrackerGrid).TransposeSelection(-1); 2757 (ActiveControl as TTrackerGrid).TransposeSelection(-1);
2740 if TrackerSettings.PreviewWhenBumping then 2758 if TrackerSettings.PreviewWhenBumping then
2741 PreviewNoteUnderCursor; 2759 PreviewNoteUnderCursor;
@@ -2743,6 +2761,7 @@ end;
2743 2761
2744 procedure TfrmTracker.TrackerPopupTransposeSemiUpClick(Sender: TObject); 2762 procedure TfrmTracker.TrackerPopupTransposeSemiUpClick(Sender: TObject);
2745 begin 2763 begin
2764 if not (ActiveControl is TTrackerGrid) then Exit;
2746 (ActiveControl as TTrackerGrid).TransposeSelection(1); 2765 (ActiveControl as TTrackerGrid).TransposeSelection(1);
2747 if TrackerSettings.PreviewWhenBumping then 2766 if TrackerSettings.PreviewWhenBumping then
2748 PreviewNoteUnderCursor; 2767 PreviewNoteUnderCursor;
@@ -2750,6 +2769,7 @@ end;
2750 2769
2751 procedure TfrmTracker.TrackerPopupUndoClick(Sender: TObject); 2770 procedure TfrmTracker.TrackerPopupUndoClick(Sender: TObject);
2752 begin 2771 begin
2772 if not (ActiveControl is TTrackerGrid) then Exit;
2753 (ActiveControl as TTrackerGrid).DoUndo 2773 (ActiveControl as TTrackerGrid).DoUndo
2754 end; 2774 end;
2755 2775