Skip to content

Commit 6d5f5c0

Browse files
authored
Merge branch 'master' into features/next
2 parents f0092ca + 542a724 commit 6d5f5c0

27 files changed

Lines changed: 1558 additions & 260 deletions

ZXBStudio/DocumentEditors/ZXGraphics/ColorPickerControl.axaml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,9 @@
77
x:Class="ZXBasicStudio.DocumentEditors.ZXGraphics.ColorPickerControl">
88
<Grid HorizontalAlignment="Center">
99
<Grid Name="grdMonochrome" IsVisible="False">
10-
<TextBlock>Monochrome...</TextBlock>
1110
</Grid>
1211
<Grid Name="grdZXSpectrum" IsVisible="False">
13-
<TextBlock>ZX Spectrum...</TextBlock>
12+
<Canvas Name="cnvZXSpectrum" Width="160" Height="40" Margin="4"/>
1413
</Grid>
1514
<Grid Name="grdNext" IsVisible="False">
1615
<TextBlock>Next...</TextBlock>

ZXBStudio/DocumentEditors/ZXGraphics/ColorPickerControl.axaml.cs

Lines changed: 82 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@ namespace ZXBasicStudio.DocumentEditors.ZXGraphics
2121
public partial class ColorPickerControl : UserControl
2222
{
2323
private GraphicsModes graphicMode = GraphicsModes.Monochrome;
24-
24+
private Action<string, int> callBackCommand = null;
25+
private PaletteColor[] palette = null;
26+
private int selectedIndexColor = 0;
2527

2628
/// <summary>
2729
/// Constructor
@@ -32,19 +34,23 @@ public ColorPickerControl()
3234
}
3335

3436

35-
public bool Inicialize(GraphicsModes graphicMode, PaletteColor[] palette, int primaryColor, int secondaryColor, bool bright, bool flash)
37+
public bool Inicialize(GraphicsModes graphicMode, PaletteColor[] palette, int selectedIndexColor, Action<string, int> callBackCommand)
3638
{
3739
this.graphicMode = graphicMode;
40+
this.palette = palette;
41+
this.callBackCommand = callBackCommand;
42+
this.selectedIndexColor = selectedIndexColor;
3843

39-
grdMonochrome.IsVisible = true;
40-
grdZXSpectrum.IsVisible = true;
41-
grdNext.IsVisible = true;
44+
grdMonochrome.IsVisible = false;
45+
grdZXSpectrum.IsVisible = false;
46+
grdNext.IsVisible = false;
4247
switch (graphicMode)
4348
{
4449
case GraphicsModes.Monochrome:
4550
grdMonochrome.IsVisible = true;
4651
break;
4752
case GraphicsModes.ZXSpectrum:
53+
DrawZXSpectrum();
4854
grdZXSpectrum.IsVisible = true;
4955
break;
5056
case GraphicsModes.Next:
@@ -55,5 +61,76 @@ public bool Inicialize(GraphicsModes graphicMode, PaletteColor[] palette, int pr
5561

5662
return true;
5763
}
64+
65+
/// <summary>
66+
/// Draw colors for ZXSpectrum palette
67+
/// </summary>
68+
private void DrawZXSpectrum()
69+
{
70+
cnvZXSpectrum.Children.Clear();
71+
// Draw all colors
72+
int index = 0;
73+
for (int y = 0; y < 2; y++)
74+
{
75+
for (int x = 0; x < 8; x++)
76+
{
77+
var p = palette[index];
78+
var b = new SolidColorBrush(new Color(255, p.Red, p.Green, p.Blue));
79+
DrawRectangle(cnvZXSpectrum, x * 20, y * 20, 18, 18, Brushes.White, b, index);
80+
index++;
81+
82+
}
83+
}
84+
85+
// Draw selected color (ink)
86+
{
87+
int y = selectedIndexColor / 8;
88+
int x = selectedIndexColor % 8;
89+
DrawRectangle(cnvZXSpectrum, (x * 20) - 2, (y * 20) - 2, 22, 22, Brushes.Red, null, -1);
90+
}
91+
}
92+
93+
94+
private void DrawRectangle(Canvas canvas, int x, int y, int w, int h, IBrush? borderBrush, IBrush? colorBrush, int tag)
95+
{
96+
var r = new Rectangle();
97+
r.Width = w;
98+
r.Height = h;
99+
r.Tag = tag.ToString();
100+
if (borderBrush != null)
101+
{
102+
r.Stroke = borderBrush;
103+
r.StrokeThickness = 1;
104+
}
105+
if (colorBrush != null)
106+
{
107+
r.Fill = colorBrush;
108+
}
109+
canvas.Children.Add(r);
110+
Canvas.SetTop(r, y);
111+
Canvas.SetLeft(r, x);
112+
113+
r.Tapped += R_Tapped;
114+
}
115+
116+
117+
private void R_Tapped(object? sender, TappedEventArgs e)
118+
{
119+
if (sender == null)
120+
{
121+
return;
122+
}
123+
124+
Rectangle r = (Rectangle)sender;
125+
126+
int color = r.Tag.ToInteger();
127+
if (color >= 0)
128+
{
129+
selectedIndexColor = color;
130+
this.IsVisible = false;
131+
132+
callBackCommand?.Invoke("SELECT", selectedIndexColor);
133+
}
134+
}
58135
}
59136
}

ZXBStudio/DocumentEditors/ZXGraphics/FontGDUEditor.axaml.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -698,7 +698,6 @@ private void ZoomOut()
698698
{
699699
sldZoom.Value = v - 1;
700700
}
701-
702701
}
703702

704703
#endregion
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
using Avalonia;
2+
using Avalonia.Media;
3+
using System;
4+
using System.Collections.Generic;
5+
using System.Linq;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
9+
namespace ZXBasicStudio.DocumentEditors.ZXGraphics
10+
{
11+
public interface IZXBitmap : IImage
12+
{
13+
public PixelSize PixelSize { get; }
14+
}
15+
}

ZXBStudio/DocumentEditors/ZXGraphics/SpriteEditor.axaml

Lines changed: 28 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -101,40 +101,55 @@
101101
</WrapPanel>
102102

103103
<local:SpritePatternEditor Name="ctrlEditor" Grid.Row="1" Background="#303030"/>
104-
104+
105105
<WrapPanel Orientation="Horizontal" Background="#ff202020" Grid.Row="2" Margin="10,5,10,5" Height="NaN">
106106
<TextBlock Name="txtZoom" Classes="dialog" Width="54">Zoom 24x</TextBlock>
107107
<Slider Name="sldZoom" Width="100" Minimum="1" Maximum="9" Value="6" VerticalAlignment="Center"/>
108108
<TextBlock Name="txtFrame" Classes="dialog" Width="55" Margin="8,4,0,0">Frame</TextBlock>
109109
<Slider Name="sldFrame" Width="100" Minimum="0" Maximum="0" Value="0" VerticalAlignment="Center"/>
110-
<Button Name="btnPaper" Classes="toobar" Margin="8,0,0,0">Paper</Button>
111-
<Button Name="btnInk" Classes="toobar" Margin="8,0,0,0">Ink</Button>
110+
111+
<Grid Name="btnPaper" Margin="8,0,0,0" ColumnDefinitions="*,16,Auto">
112+
<TextBlock Margin="10,5,5,5">Paper</TextBlock>
113+
<Border Grid.Column="1" BorderBrush="Red" BorderThickness="1" Width="20" Height="20">
114+
<Grid Name="grdPaper">
115+
<TextBlock Name="txtPaper" Grid.Column="2" HorizontalAlignment="Center">0</TextBlock>
116+
</Grid>
117+
</Border>
118+
</Grid>
119+
120+
<Grid Name="btnInk" Margin="8,0,0,0" ColumnDefinitions="*,16,Auto">
121+
<TextBlock Margin="10,5,5,5">Ink</TextBlock>
122+
<Border Grid.Column="1" BorderBrush="Red" BorderThickness="1" Width="20" Height="20">
123+
<Grid Name="grdInk">
124+
<TextBlock Name="txtInk" Grid.Column="2" HorizontalAlignment="Center">1</TextBlock>
125+
</Grid>
126+
</Border>
127+
</Grid>
128+
129+
<!--
112130
<Button Name="btnBright" Classes="toobar" Margin="8,0,0,0">Bright</Button>
113131
<Button Name="btnFlash" Classes="toobar" Margin="8,0,0,0">Flash</Button>
132+
-->
114133
</WrapPanel>
115134

116135
</Grid>
117136

118137
<GridSplitter ResizeDirection="Columns" Grid.Column="3" Classes="vertical"></GridSplitter>
119138

120-
<zxd:ZXDockingContainer Name="dockRight" DockingGroup="ZXGraphics" Grid.Column="4" RowDefinitions="*">
121-
<Grid RowDefinitions="120,4,*">
122-
123-
<zxd:ZXDockingControl Grid.Row="0" Name="dockPreview" Title="Preview" DockingGroup="ZXGraphics2" DesiredFloatingSize="200,400">
139+
<zxd:ZXDockingContainer Name="dockRight" DockingGroup="ZXGraphics" Grid.Column="4" RowDefinitions="*,4,4*" Background="Red">
140+
<zxd:ZXDockingControl Grid.Row="0" Name="dockPreview" Title="Preview" DockingGroup="ZXGraphics" DesiredFloatingSize="200,400">
124141
<zxd:ZXDockingControl.DockedControl>
125142
<local:SpritePreviewControl Name="ctrlPreview"></local:SpritePreviewControl>
126143
</zxd:ZXDockingControl.DockedControl>
127144
</zxd:ZXDockingControl>
128145

129146
<GridSplitter ResizeDirection="Rows" Grid.Row="1" Classes="horizontal"></GridSplitter>
130147

131-
<zxd:ZXDockingControl Grid.Row="2" Name="dockProperties" Title="Properties" DockingGroup="ZXGraphics2" DesiredFloatingSize="200,400">
132-
<zxd:ZXDockingControl.DockedControl>
148+
<zxd:ZXDockingControl Grid.Row="2" Name="dockProperties" Title="Properties" DockingGroup="ZXGraphics" DesiredFloatingSize="200,400">
149+
<zxd:ZXDockingControl.DockedControl>
133150
<local:SpritePropertiesControl Name="ctrlProperties"/>
134-
</zxd:ZXDockingControl.DockedControl>
135-
</zxd:ZXDockingControl>
136-
</Grid>
137-
151+
</zxd:ZXDockingControl.DockedControl>
152+
</zxd:ZXDockingControl>
138153
</zxd:ZXDockingContainer>
139154

140155
</Grid>

0 commit comments

Comments
 (0)