Skip to content

Commit a3fdffa

Browse files
committed
GTK rendering support
Based on Redth#798 Fixes Redth#797
1 parent 77fa778 commit a3fdffa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+258
-13
lines changed

Samples/Sample.Android/Sample.Android.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,8 @@
9393
<PackageReference Include="Xamarin.AndroidX.Browser">
9494
<Version>1.0.0</Version>
9595
</PackageReference>
96-
<PackageReference Include="Xamarin.Essentials">
97-
<Version>1.5.1</Version>
96+
<PackageReference Include="DotNetEssentials">
97+
<Version>1.5.9999--date20200916-1021.git-1e3232b</Version>
9898
</PackageReference>
9999
</ItemGroup>
100100
</Project>

Samples/Sample.Forms/Sample.Forms.Android/Sample.Forms.Android.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@
5858
</ItemGroup>
5959
<ItemGroup>
6060
<PackageReference Include="Xamarin.Forms" Version="4.5.0.356" />
61-
<PackageReference Include="Xamarin.Essentials" Version="1.5.1" />
61+
<PackageReference Include="DotNetEssentials" Version="1.5.9999--date20200916-1021.git-1e3232b" />
6262
</ItemGroup>
6363
<ItemGroup>
6464
<Compile Include="MainActivity.cs" />

Samples/Sample.Forms/Sample.Forms.UWP/Sample.Forms.UWP.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@
145145
<ItemGroup>
146146
<PackageReference Include="Xamarin.Forms" Version="4.5.0.356" />
147147
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform" Version="6.1.9" />
148-
<PackageReference Include="Xamarin.Essentials" Version="1.5.1" />
148+
<PackageReference Include="DotNetEssentials" Version="1.5.9999--date20200916-1021.git-1e3232b" />
149149
</ItemGroup>
150150
<ItemGroup>
151151
<ProjectReference Include="..\..\..\ZXing.Net.Mobile.Forms\ZXing.Net.Mobile.Forms.csproj">

Samples/Sample.Forms/Sample.Forms.iOS/Sample.Forms.iOS.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@
126126
</ItemGroup>
127127
<ItemGroup>
128128
<PackageReference Include="Xamarin.Forms" Version="4.5.0.356" />
129-
<PackageReference Include="Xamarin.Essentials" Version="1.5.1" />
129+
<PackageReference Include="DotNetEssentials" Version="1.5.9999--date20200916-1021.git-1e3232b" />
130130
</ItemGroup>
131131
<ItemGroup>
132132
<ProjectReference Include="..\..\..\ZXing.Net.Mobile.Forms\ZXing.Net.Mobile.Forms.csproj">

Samples/Sample.Forms/Sample.Forms/Sample.Forms.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
<ItemGroup>
1414
<PackageReference Include="Xamarin.Forms" Version="4.5.0.356" />
15-
<PackageReference Include="Xamarin.Essentials" Version="1.5.1" />
15+
<PackageReference Include="DotNetEssentials" Version="1.5.9999--date20200916-1021.git-1e3232b" />
1616
</ItemGroup>
1717

1818
<ItemGroup>

Samples/Sample.Uwp/Sample.Uwp.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,8 +160,8 @@
160160
<PackageReference Include="Microsoft.NETCore.UniversalWindowsPlatform">
161161
<Version>6.2.9</Version>
162162
</PackageReference>
163-
<PackageReference Include="Xamarin.Essentials">
164-
<Version>1.5.1</Version>
163+
<PackageReference Include="DotNetEssentials">
164+
<Version>1.5.9999--date20200916-1021.git-1e3232b</Version>
165165
</PackageReference>
166166
</ItemGroup>
167167
<ItemGroup>

Samples/Sample.iOS/Sample.iOS.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@
103103
</Reference>
104104
</ItemGroup>
105105
<ItemGroup>
106-
<PackageReference Include="Xamarin.Essentials">
107-
<Version>1.5.1</Version>
106+
<PackageReference Include="DotNetEssentials">
107+
<Version>1.5.9999--date20200916-1021.git-1e3232b</Version>
108108
</PackageReference>
109109
<PackageReference Include="Xamarin.TestCloud.Agent" Version="0.21.1" />
110110
</ItemGroup>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
using System;
2+
3+
namespace ZXing.Net.Mobile.Forms.GTK
4+
{
5+
public class Platform
6+
{
7+
public static void Init ()
8+
{
9+
ZXing.Net.Mobile.Forms.GTK.ZXingBarcodeImageViewRenderer.Init();
10+
}
11+
}
12+
}

ZXing.Net.Mobile.Forms/ZXing.Net.Mobile.Forms.csproj

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<Project Sdk="MSBuild.Sdk.Extras/2.0.54">
22
<PropertyGroup>
3-
<TargetFrameworks>netstandard2.0;Xamarin.iOS10;Xamarin.Mac20;MonoAndroid90;MonoAndroid10.0;tizen40</TargetFrameworks>
3+
<TargetFrameworks>netstandard2.0;Xamarin.iOS10;Xamarin.Mac20;MonoAndroid90;MonoAndroid10.0;tizen40;net461</TargetFrameworks>
44
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">$(TargetFrameworks);uap10.0.16299;</TargetFrameworks>
55
<AssemblyName>ZXing.Net.Mobile.Forms</AssemblyName>
66
<RootNamespace>ZXing.Net.Mobile.Forms</RootNamespace>
@@ -93,8 +93,16 @@
9393
<Compile Include="**\*.tizen.cs" />
9494
<Compile Include="**\*.tizen.*.cs" />
9595
</ItemGroup>
96+
<ItemGroup Condition=" $(TargetFramework.StartsWith('net461')) ">
97+
<PackageReference Include="Xamarin.Forms.Platform.GTK" Version="4.5.0.356" />
98+
<Reference Include="gtk-sharp">
99+
<HintPath>..\ZXing.Net.Mobile\GTK\Libs\gtk-sharp\gtk-sharp-2.0\gtk-sharp.dll</HintPath>
100+
</Reference>
101+
<Compile Include="**\*.gtk.cs" />
102+
<Compile Include="**\*.gtk.*.cs" />
103+
</ItemGroup>
96104
<ItemGroup>
97-
<PackageReference Include="Xamarin.Essentials" Version="1.5.1" />
105+
<PackageReference Include="DotNetEssentials" Version="1.5.9999--date20200916-1021.git-1e3232b" />
98106
<PackageReference Include="Xamarin.Forms" Version="4.5.0.356" />
99107
</ItemGroup>
100108
<ItemGroup>
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
using System;
2+
using System.ComponentModel;
3+
using Xamarin.Forms;
4+
using Xamarin.Forms.Platform.GTK;
5+
using ZXing.Net.Mobile.Forms;
6+
using ZXing.Net.Mobile.Forms.GTK;
7+
using ZXing.Net.Mobile.GTK;
8+
using Image = Gtk.Image;
9+
10+
[assembly:ExportRenderer(typeof(ZXingBarcodeImageView), typeof(ZXingBarcodeImageViewRenderer))]
11+
namespace ZXing.Net.Mobile.Forms.GTK
12+
{
13+
public class ZXingBarcodeImageViewRenderer : ViewRenderer<ZXingBarcodeImageView, Image>
14+
{
15+
public static void Init()
16+
{
17+
var temp = DateTime.Now;
18+
}
19+
20+
ZXingBarcodeImageView formsView;
21+
Image gtkImage;
22+
23+
protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
24+
{
25+
// in GTK there are a way to many properties that are changed compared to other platforms
26+
if (e.PropertyName == ZXingBarcodeImageView.BarcodeValueProperty.PropertyName ||
27+
e.PropertyName == ZXingBarcodeImageView.BarcodeFormatProperty.PropertyName ||
28+
e.PropertyName == ZXingBarcodeImageView.BarcodeOptionsProperty.PropertyName)
29+
{
30+
Regenerate();
31+
}
32+
33+
base.OnElementPropertyChanged(sender, e);
34+
}
35+
36+
protected override void OnElementChanged(ElementChangedEventArgs<ZXingBarcodeImageView> e)
37+
{
38+
formsView = Element;
39+
40+
if (gtkImage == null)
41+
{
42+
gtkImage = new Image();
43+
44+
base.SetNativeControl(gtkImage);
45+
}
46+
47+
Regenerate();
48+
49+
base.OnElementChanged(e);
50+
}
51+
52+
void Regenerate ()
53+
{
54+
if (formsView != null && formsView.BarcodeValue != null)
55+
{
56+
var writer = new BarcodeWriter();
57+
58+
if (formsView != null && formsView.BarcodeOptions != null)
59+
writer.Options = formsView.BarcodeOptions;
60+
if (formsView != null && formsView.BarcodeFormat != null)
61+
writer.Format = formsView.BarcodeFormat;
62+
63+
var value = formsView != null ? formsView.BarcodeValue : string.Empty;
64+
65+
Device.BeginInvokeOnMainThread(() =>
66+
{
67+
var pixBuf = writer.Write(value);
68+
gtkImage.Pixbuf = pixBuf;
69+
});
70+
}
71+
}
72+
}
73+
}

0 commit comments

Comments
 (0)