Skip to content

Commit 542a724

Browse files
authored
Merge pull request #42 from gusmanb/features/graphics_rework
Features/graphics rework
2 parents 2076a7a + 97c359c commit 542a724

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
@@ -139,40 +139,55 @@
139139
</WrapPanel>
140140

141141
<local:SpritePatternEditor Name="ctrlEditor" Grid.Row="1" Background="#303030"/>
142-
142+
143143
<WrapPanel Orientation="Horizontal" Background="#ff202020" Grid.Row="2" Margin="10,5,10,5" Height="NaN">
144144
<TextBlock Name="txtZoom" Classes="dialog" Width="54">Zoom 24x</TextBlock>
145145
<Slider Name="sldZoom" Width="100" Minimum="1" Maximum="9" Value="6" VerticalAlignment="Center"/>
146146
<TextBlock Name="txtFrame" Classes="dialog" Width="55" Margin="8,4,0,0">Frame</TextBlock>
147147
<Slider Name="sldFrame" Width="100" Minimum="0" Maximum="0" Value="0" VerticalAlignment="Center"/>
148-
<Button Name="btnPaper" Classes="toobar" Margin="8,0,0,0">Paper</Button>
149-
<Button Name="btnInk" Classes="toobar" Margin="8,0,0,0">Ink</Button>
148+
149+
<Grid Name="btnPaper" Margin="8,0,0,0" ColumnDefinitions="*,16,Auto">
150+
<TextBlock Margin="10,5,5,5">Paper</TextBlock>
151+
<Border Grid.Column="1" BorderBrush="Red" BorderThickness="1" Width="20" Height="20">
152+
<Grid Name="grdPaper">
153+
<TextBlock Name="txtPaper" Grid.Column="2" HorizontalAlignment="Center">0</TextBlock>
154+
</Grid>
155+
</Border>
156+
</Grid>
157+
158+
<Grid Name="btnInk" Margin="8,0,0,0" ColumnDefinitions="*,16,Auto">
159+
<TextBlock Margin="10,5,5,5">Ink</TextBlock>
160+
<Border Grid.Column="1" BorderBrush="Red" BorderThickness="1" Width="20" Height="20">
161+
<Grid Name="grdInk">
162+
<TextBlock Name="txtInk" Grid.Column="2" HorizontalAlignment="Center">1</TextBlock>
163+
</Grid>
164+
</Border>
165+
</Grid>
166+
167+
<!--
150168
<Button Name="btnBright" Classes="toobar" Margin="8,0,0,0">Bright</Button>
151169
<Button Name="btnFlash" Classes="toobar" Margin="8,0,0,0">Flash</Button>
170+
-->
152171
</WrapPanel>
153172

154173
</Grid>
155174

156175
<GridSplitter ResizeDirection="Columns" Grid.Column="3" Classes="vertical"></GridSplitter>
157176

158-
<zxd:ZXDockingContainer Name="dockRight" DockingGroup="ZXGraphics" Grid.Column="4" RowDefinitions="*">
159-
<Grid RowDefinitions="120,4,*">
160-
161-
<zxd:ZXDockingControl Grid.Row="0" Name="dockPreview" Title="Preview" DockingGroup="ZXGraphics2" DesiredFloatingSize="200,400">
177+
<zxd:ZXDockingContainer Name="dockRight" DockingGroup="ZXGraphics" Grid.Column="4" RowDefinitions="*,4,4*" Background="Red">
178+
<zxd:ZXDockingControl Grid.Row="0" Name="dockPreview" Title="Preview" DockingGroup="ZXGraphics" DesiredFloatingSize="200,400">
162179
<zxd:ZXDockingControl.DockedControl>
163180
<local:SpritePreviewControl Name="ctrlPreview"></local:SpritePreviewControl>
164181
</zxd:ZXDockingControl.DockedControl>
165182
</zxd:ZXDockingControl>
166183

167184
<GridSplitter ResizeDirection="Rows" Grid.Row="1" Classes="horizontal"></GridSplitter>
168185

169-
<zxd:ZXDockingControl Grid.Row="2" Name="dockProperties" Title="Properties" DockingGroup="ZXGraphics2" DesiredFloatingSize="200,400">
170-
<zxd:ZXDockingControl.DockedControl>
186+
<zxd:ZXDockingControl Grid.Row="2" Name="dockProperties" Title="Properties" DockingGroup="ZXGraphics" DesiredFloatingSize="200,400">
187+
<zxd:ZXDockingControl.DockedControl>
171188
<local:SpritePropertiesControl Name="ctrlProperties"/>
172-
</zxd:ZXDockingControl.DockedControl>
173-
</zxd:ZXDockingControl>
174-
</Grid>
175-
189+
</zxd:ZXDockingControl.DockedControl>
190+
</zxd:ZXDockingControl>
176191
</zxd:ZXDockingContainer>
177192

178193
</Grid>

0 commit comments

Comments
 (0)