Skip to content

Instantly share code, notes, and snippets.

View BrunoVT1992's full-sized avatar

Bruno Van Thournout BrunoVT1992

View GitHub Profile
@BrunoVT1992
BrunoVT1992 / DpiToPixelConverter.cs
Last active May 13, 2016 13:26
Converter to convert dpi sizes to pixel sizes in Xamarin Android
using Android.App;
using Android.Content;
namespace Droid
{
public static class DpiToPixelConverter
{
public static int Convert(int dpi)
{
float scale = Application.Context.Resources.DisplayMetrics.Density;
@BrunoVT1992
BrunoVT1992 / AsyncLock.cs
Last active May 13, 2016 13:28
This class makes a lock statement async so you can use await operators inside the lock statement
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
namespace CSharp
{
// http://blogs.msdn.com/b/pfxteam/archive/2012/02/12/10266988.aspx
public class AsyncLock
{
@BrunoVT1992
BrunoVT1992 / ThreadUtil.cs
Created June 23, 2016 10:56
Extension to see if a thread is the main(UI) thread for Xamarin Android.
using Android.OS;
using Java.Lang;
namespace Droid
{
public static class ThreadUtil
{
public static bool IsMainThread(this Thread currentThread)
{
return currentThread == Looper.MainLooper.Thread;
@BrunoVT1992
BrunoVT1992 / UIImageExtensions.cs
Created July 20, 2017 13:05
UIImage extension to get a pixel color for Xamarin iOS
using System.Drawing;
using System.Runtime.InteropServices;
using CoreGraphics;
using UIKit;
namespace iOS
{
public static class UIImageExtensions
{
public static string GetPixelHexColor(this UIImage image, float x, float y)
@BrunoVT1992
BrunoVT1992 / FreeDrawUIView.cs
Created July 27, 2017 07:30
Free draw view for Xamarin iOS
using CoreGraphics;
using Foundation;
using UIKit;
namespace iOS
{
public class FreeDrawUIView : UIView
{
UIBezierPath _path;
@BrunoVT1992
BrunoVT1992 / FreeDrawView.cs
Created July 27, 2017 07:38
Free draw view for Xamarin Android
using Android.Content;
using Android.Graphics;
using Android.Util;
using Android.Views;
namespace Droid
{
public class FreeDrawView : View
{
Path _drawPath;
@BrunoVT1992
BrunoVT1992 / StackView.cs
Created September 18, 2017 13:27
StackView for Xamarin.iOS without the need for AutoLayout constraints
using System;
using System.Linq;
using CoreGraphics;
using UIKit;
namespace iOS
{
public class StackView : UIView
{
nfloat _previousWidth;
@BrunoVT1992
BrunoVT1992 / Translations.tt
Created October 13, 2017 06:25
Translations visual studio tool for managing csv text files. Ex.:
<#@ template language="C#" hostSpecific="true" #>
<#@ output extension=".cs" #>
<#@ assembly name="System.Core"#>
<#@ import namespace="System" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Globalization" #>
<#
@BrunoVT1992
BrunoVT1992 / Translations.tt
Created October 13, 2017 06:25
Translations visual studio tool for managing csv text files
<#@ template language="C#" hostSpecific="true" #>
<#@ output extension=".cs" #>
<#@ assembly name="System.Core"#>
<#@ import namespace="System" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Text" #>
<#@ import namespace="System.IO" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.Globalization" #>
<#
@BrunoVT1992
BrunoVT1992 / EmailValidator.cs
Created December 18, 2017 15:08
c# email validator class to see if a string is a correct email
using System.Text.RegularExpressions;
namespace CSharp
{
public static class EmailValidator
{
const string EmailPattern = @"^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDC