Skip to content

Commit b886d80

Browse files
authored
Merge pull request #46 from gusmanb/test_graphics_avalonia
Merge with new graphics branch
2 parents 036fb8f + febe619 commit b886d80

24 files changed

Lines changed: 714 additions & 282 deletions

MsBox.Avalonia/MsBox.Avalonia.csproj

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
<AvaloniaResource Include="Assets\*" />
2727
</ItemGroup>
2828
<ItemGroup>
29-
<PackageReference Include="Avalonia" Version="11.0.0" />
30-
<PackageReference Include="DialogHost.Avalonia" Version="0.7.5" />
31-
<PackageReference Include="Markdown.Avalonia.Tight" Version="11.0.0-d1" />
29+
<PackageReference Include="Avalonia" Version="11.0.6" />
30+
<PackageReference Include="DialogHost.Avalonia" Version="0.7.7" />
31+
<PackageReference Include="Markdown.Avalonia.Tight" Version="11.0.2" />
3232
</ItemGroup>
3333
<ItemGroup>
3434
<None Update="icon.jpg">

ZXBStudio/BuildSystem/ZXBasicMap.cs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -562,23 +562,27 @@ private static ZXVariableStorage StorageFromString(string? Value, string Variabl
562562

563563
private static int GetDimensionSize(string DimensionString)
564564
{
565-
int size = 0;
566-
567-
if (!int.TryParse(DimensionString, out size))
565+
try
568566
{
569-
if (DimensionString.ToLower().Contains("to"))
567+
int size = 0;
568+
569+
if (!int.TryParse(DimensionString, out size))
570570
{
571-
string[] parts = DimensionString.ToLower().Split("to");
572-
if (parts.Length == 1)
573-
return int.Parse(parts[0]);
571+
if (DimensionString.ToLower().Contains("to"))
572+
{
573+
string[] parts = DimensionString.ToLower().Split("to");
574+
if (parts.Length == 1)
575+
return int.Parse(parts[0]);
576+
else
577+
return int.Parse(parts[1]) - int.Parse(parts[0]) + 1;
578+
}
574579
else
575-
return int.Parse(parts[1]) - int.Parse(parts[0]) + 1;
580+
return 0;
576581
}
577-
else
578-
return 0;
579-
}
580582

581-
return size;
583+
return size;
584+
}
585+
catch { return 0; }
582586
}
583587
}
584588

ZXBStudio/DocumentEditors/ZXGraphics/ColorPickerControl.axaml.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,6 @@ public bool Inicialize(GraphicsModes graphicMode, PaletteColor[] palette, int se
5353
DrawZXSpectrum();
5454
grdZXSpectrum.IsVisible = true;
5555
break;
56-
case GraphicsModes.Next:
57-
grdNext.IsVisible = true;
58-
break;
59-
6056
}
6157

6258
return true;

ZXBStudio/DocumentEditors/ZXGraphics/ColorPickerDialog.axaml.cs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -69,10 +69,6 @@ private void DrawPalette(Canvas cnv)
6969
rows = 2;
7070
cols = 8;
7171
break;
72-
case GraphicsModes.Next:
73-
rows = 16;
74-
cols = 16;
75-
break;
7672
}
7773

7874
int cellW = (int)(((this.Width - 200) / 2) / cols);

ZXBStudio/DocumentEditors/ZXGraphics/SpriteEditor.axaml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,7 @@
88
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
99
Focusable="True"
1010
Background="#ff202020"
11-
x:Class="ZXBasicStudio.DocumentEditors.ZXGraphics.SpriteEditor">
12-
11+
x:Class="ZXBasicStudio.DocumentEditors.ZXGraphics.SpriteEditor">
1312
<Grid Name="grdMain" RowDefinitions="*,Auto">
1413
<Grid Name="grdEditor" Grid.RowSpan="2" ColumnDefinitions="180,4,*,4,200" Margin="0,8,0,0">
1514

@@ -105,8 +104,10 @@
105104
<WrapPanel Orientation="Horizontal" Background="#ff202020" Grid.Row="2" Margin="10,5,10,5" Height="NaN">
106105
<TextBlock Name="txtZoom" Classes="dialog" Width="54">Zoom 24x</TextBlock>
107106
<Slider Name="sldZoom" Width="100" Minimum="1" Maximum="9" Value="6" VerticalAlignment="Center"/>
108-
<TextBlock Name="txtFrame" Classes="dialog" Width="55" Margin="8,4,0,0">Frame</TextBlock>
109-
<Slider Name="sldFrame" Width="100" Minimum="0" Maximum="0" Value="0" VerticalAlignment="Center"/>
107+
<TextBlock Name="lblFrame" Classes="dialog" Width="55" Margin="16,8,0,0">Frame</TextBlock>
108+
<Border Classes="numericborder" Margin="-10,0,0,0">
109+
<NumericUpDown Classes="dialog" Name="txtFrame" Minimum="0" Increment="1" Maximum="255" Value="0" VerticalAlignment="Center"/>
110+
</Border>
110111

111112
<Grid Name="btnPaper" Margin="8,0,0,0" ColumnDefinitions="*,16,Auto">
112113
<TextBlock Margin="10,5,5,5">Paper</TextBlock>

ZXBStudio/DocumentEditors/ZXGraphics/SpriteEditor.axaml.cs

Lines changed: 50 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ private void _Initialize(string fileName)
313313
}
314314

315315
sldZoom.PropertyChanged += SldZoom_PropertyChanged;
316-
sldFrame.PropertyChanged += SldFrame_PropertyChanged;
316+
txtFrame.PropertyChanged += TxtFrame_PropertyChanged;
317317

318318
btnClear.Tapped += BtnClear_Tapped;
319319
btnCut.Tapped += BtnCut_Tapped;
@@ -351,7 +351,6 @@ private void _Initialize(string fileName)
351351
this.Focus();
352352
}
353353

354-
355354
#region Color
356355

357356
private void BtnPaper_Click(object? sender, Avalonia.Interactivity.RoutedEventArgs e)
@@ -465,6 +464,8 @@ private void SpriteList_Command(SpritePatternControl sender, string command)
465464
ctrlPreview.Refresh();
466465
ctrlProperties.SpriteData = sender.SpriteData;
467466
ctrlProperties.Refresh();
467+
SpriteProperties_FrameUpdate(ctrlProperties, command);
468+
txtFrame.Text = "0";
468469
break;
469470
}
470471
}
@@ -498,24 +499,25 @@ private void SpriteProperties_Command(SpritePropertiesControl sender, string com
498499
SpriteList_Clone(sender.SpriteData);
499500
SpriteList_Modified(sender.SpriteData);
500501
break;
502+
case "FRAMEUPDATE":
503+
SpriteProperties_FrameUpdate(sender, command);
504+
break;
501505
case "REFRESH":
502506
ctrlEditor.SpriteData = sender.SpriteData;
503507
SpriteList_Modified(sender.SpriteData);
504508
if (ctrlEditor.SpriteData.CurrentFrame != actualFrame)
505509
{
506-
actualFrame = ctrlEditor.SpriteData.CurrentFrame;
507-
if (sldFrame.Maximum < actualFrame)
510+
txtFrame.Value = actualFrame;
511+
if (txtFrame.Maximum < actualFrame)
508512
{
509-
sldFrame.Maximum = actualFrame;
513+
txtFrame.Maximum = actualFrame;
510514
}
511-
sldFrame.Value = actualFrame;
515+
txtFrame.Value = actualFrame;
512516
Refresh();
513517
}
514518
UpdateColorPanel();
515519
break;
516520
case "CHANGEMODE":
517-
ctrlEditor.SpriteData = sender.SpriteData;
518-
SpriteList_Modified(sender.SpriteData);
519521
switch (sender.SpriteData.GraphicMode)
520522
{
521523
case GraphicsModes.Monochrome:
@@ -526,17 +528,38 @@ private void SpriteProperties_Command(SpritePropertiesControl sender, string com
526528
ctrlEditor.PrimaryColorIndex = 0;
527529
ctrlEditor.SecondaryColorIndex = 7;
528530
break;
529-
case GraphicsModes.Next:
530-
ctrlEditor.PrimaryColorIndex = 255;
531-
ctrlEditor.SecondaryColorIndex = 0;
532-
break;
533531
}
532+
ctrlEditor.SpriteData = sender.SpriteData;
533+
SpriteList_Modified(sender.SpriteData);
534534
UpdateColorPanel();
535535
break;
536536
}
537537
}
538538

539539

540+
private void SpriteProperties_FrameUpdate(SpritePropertiesControl sender, string command)
541+
{
542+
if (sender.SpriteData == null)
543+
{
544+
return;
545+
}
546+
547+
int f = sender.SpriteData.Frames - 1;
548+
if (f < 0)
549+
{
550+
f = 0;
551+
}
552+
else if (f > 255)
553+
{
554+
f = 255;
555+
}
556+
txtFrame.Maximum = f;
557+
txtFrame.Text = f.ToString();
558+
txtFrame.UpdateLayout();
559+
SpriteProperties_Command(sender, "REFRESH");
560+
}
561+
562+
540563
private void SpriteList_AddSprite()
541564
{
542565
SpritePatternControl selectedSprite = null;
@@ -611,7 +634,7 @@ private void SpriteList_Insert(Sprite spriteData)
611634
spriteData.Frames++;
612635
ctrlProperties.Refresh();
613636
ctrlEditor.Refresh();
614-
sldFrame.Maximum = spriteData.Frames;
637+
txtFrame.MaxHeight = spriteData.Frames - 1;
615638
}
616639

617640

@@ -692,16 +715,16 @@ private void Editor_Command(SpritePatternEditor sender, string command)
692715

693716
private void Refresh()
694717
{
695-
txtFrame.Text = "Frame " + actualFrame.ToString();
718+
txtFrame.Text = actualFrame.ToString();
696719
if (ctrlProperties.SpriteData != null)
697720
{
698-
sldFrame.Maximum = ctrlProperties.SpriteData.Frames;
721+
txtFrame.Maximum = ctrlProperties.SpriteData.Frames - 1;
699722
}
700723
else
701724
{
702-
sldFrame.Maximum = 0;
725+
txtFrame.Maximum = 0;
703726
}
704-
sldFrame.UpdateLayout();
727+
txtFrame.UpdateLayout();
705728
}
706729

707730

@@ -746,13 +769,20 @@ private void ZoomOut()
746769
}
747770

748771

749-
private void SldFrame_PropertyChanged(object? sender, Avalonia.AvaloniaPropertyChangedEventArgs e)
772+
private void TxtFrame_PropertyChanged(object? sender, AvaloniaPropertyChangedEventArgs e)
750773
{
751-
byte v = (byte)sldFrame.Value;
752-
if (actualFrame == v || ctrlProperties.SpriteData == null || v < 0 || v >= (ctrlProperties.SpriteData.Frames))
774+
byte v = txtFrame.Text.ToByte();
775+
if (actualFrame == v ||
776+
ctrlProperties.SpriteData == null ||
777+
v < 0 ||
778+
v >= (ctrlProperties.SpriteData.Frames))
753779
{
754780
return;
755781
}
782+
if (v > 255)
783+
{
784+
v = 255;
785+
}
756786
actualFrame = v;
757787
if (ctrlEditor.SpriteData != null)
758788
{

ZXBStudio/DocumentEditors/ZXGraphics/SpriteExportDialog.axaml

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,31 @@
2525
<Grid ColumnDefinitions="180,*,Auto" RowDefinitions="Auto, Auto,Auto,Auto,Auto,Auto,Auto,Auto">
2626
<TextBlock Name="lblBuild" Classes="dialog" VerticalAlignment="Center" HorizontalAlignment="Right">Enable build:</TextBlock>
2727
<CheckBox Classes="dialog" Name="chkAuto" Grid.Column="1"></CheckBox>
28-
29-
<TextBlock Name="lblOutputFile" Grid.Row="1" Classes="dialog" VerticalAlignment="Center" HorizontalAlignment="Right">File path:</TextBlock>
30-
<TextBox Name="txtOutputFile" Grid.Row="1" Classes="dialog" Grid.Column="1" MaxWidth="Infinity"></TextBox>
31-
<Button Name="btnOutputFile" Grid.Row="1" Classes="dialog" Grid.Column="2" VerticalAlignment="Center">...</Button>
3228

33-
<TextBlock Name="lblLabelName" Classes="dialog" Grid.Row="2" VerticalAlignment="Center" HorizontalAlignment="Right">Var prefix:</TextBlock>
34-
<TextBox Name="txtLabelName" Classes="dialog" Grid.Row="2" Grid.Column="1" MaxLength="64" Width="100" HorizontalAlignment="Left"></TextBox>
29+
<TextBlock Name="lblDataType" Classes="dialog" Grid.Row="1" VerticalAlignment="Center" HorizontalAlignment="Right">Data type:</TextBlock>
30+
<ComboBox Name="cmbDataType" Classes="dialog" Grid.Row="1" Grid.Column="1" HorizontalAlignment="Left">
31+
<ComboBoxItem>DIM (data as array)</ComboBoxItem>
32+
<ComboBoxItem>ASM (DEFB inside ASM Block)</ComboBoxItem>
33+
<ComboBoxItem>.BIN file (INCBIN "file.bin")</ComboBoxItem>
34+
<ComboBoxItem>.TAP file (LOAD "" CODE)</ComboBoxItem>
35+
</ComboBox>
36+
37+
<TextBlock Name="lblOutputFile" Grid.Row="2" Classes="dialog" VerticalAlignment="Center" HorizontalAlignment="Right">File path:</TextBlock>
38+
<TextBox Name="txtOutputFile" Grid.Row="2" Classes="dialog" Grid.Column="1" MaxWidth="Infinity"></TextBox>
39+
<Button Name="btnOutputFile" Grid.Row="2" Classes="dialog" Grid.Column="2" VerticalAlignment="Center">...</Button>
40+
41+
<TextBlock Name="lblLabelName" Classes="dialog" Grid.Row="3" VerticalAlignment="Center" HorizontalAlignment="Right">Var prefix:</TextBlock>
42+
<TextBox Name="txtLabelName" Classes="dialog" Grid.Row="3" Grid.Column="1" MaxLength="64" Width="100" HorizontalAlignment="Left"></TextBox>
3543

36-
<TextBlock Name="lblArrayBase" Classes="dialog" Grid.Row="5" VerticalAlignment="Center" HorizontalAlignment="Right">Array base:</TextBlock>
37-
<ComboBox Name="cmbArrayBase" Classes="dialog" Grid.Row="5" Grid.Column="1" HorizontalAlignment="Left">
44+
<TextBlock Name="lblArrayBase" Classes="dialog" Grid.Row="4" VerticalAlignment="Center" HorizontalAlignment="Right">Array base:</TextBlock>
45+
<ComboBox Name="cmbArrayBase" Classes="dialog" Grid.Row="4" Grid.Column="1" HorizontalAlignment="Left">
3846
<ComboBoxItem>0 (default)</ComboBoxItem>
3947
<ComboBoxItem>1</ComboBoxItem>
4048
<ComboBoxItem>From project settings</ComboBoxItem>
4149
</ComboBox>
4250

43-
<TextBlock Name="lblAttr" Grid.Row="6" Classes="dialog" VerticalAlignment="Center" HorizontalAlignment="Right">Export attributes</TextBlock>
44-
<CheckBox Name="chkAttr" Grid.Row="6" Grid.Column="1" Classes="dialog"></CheckBox>
51+
<TextBlock Name="lblAttr" Grid.Row="5" Classes="dialog" VerticalAlignment="Center" HorizontalAlignment="Right">Export attributes</TextBlock>
52+
<CheckBox Name="chkAttr" Grid.Row="5" Grid.Column="1" Classes="dialog"></CheckBox>
4553
</Grid>
4654

4755
<TextBlock Name="txtError" FontSize="14" Foreground="Red" Margin="0,16,0,16" IsVisible="False">

0 commit comments

Comments
 (0)