23 changed files with 900 additions and 13 deletions
@ -0,0 +1,26 @@ |
|||
using System.Threading.Tasks; |
|||
using Perspex.Input.Platform; |
|||
using UIKit; |
|||
|
|||
namespace Perspex.iOS |
|||
{ |
|||
public class Clipboard : IClipboard |
|||
{ |
|||
public Task<string> GetTextAsync() |
|||
{ |
|||
return Task.FromResult(UIPasteboard.General.String); |
|||
} |
|||
|
|||
public Task SetTextAsync(string text) |
|||
{ |
|||
UIPasteboard.General.String = text; |
|||
return Task.FromResult(0); |
|||
} |
|||
|
|||
public Task ClearAsync() |
|||
{ |
|||
UIPasteboard.General.String = ""; |
|||
return Task.FromResult(0); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,11 @@ |
|||
using System; |
|||
using Perspex.Input; |
|||
using Perspex.Platform; |
|||
|
|||
namespace Perspex.iOS |
|||
{ |
|||
class CursorFactory : IStandardCursorFactory |
|||
{ |
|||
public IPlatformHandle GetCursor(StandardCursorType cursorType) => new PlatformHandle(IntPtr.Zero, "NULL"); |
|||
} |
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
using CoreGraphics; |
|||
|
|||
namespace Perspex.iOS |
|||
{ |
|||
static class Extensions |
|||
{ |
|||
|
|||
public static Size ToPerspex(this CGSize size) => new Size(size.Width, size.Height); |
|||
|
|||
public static Point ToPerspex(this CGPoint point) => new Point(point.X, point.Y); |
|||
} |
|||
} |
|||
@ -0,0 +1,101 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<PropertyGroup> |
|||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
|||
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform> |
|||
<ProductVersion>8.0.30703</ProductVersion> |
|||
<SchemaVersion>2.0</SchemaVersion> |
|||
<ProjectGuid>{4488AD85-1495-4809-9AA4-DDFE0A48527E}</ProjectGuid> |
|||
<ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> |
|||
<OutputType>Library</OutputType> |
|||
<RootNamespace>Perspex.iOS</RootNamespace> |
|||
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix> |
|||
<AssemblyName>Perspex.iOS</AssemblyName> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> |
|||
<DebugSymbols>true</DebugSymbols> |
|||
<DebugType>full</DebugType> |
|||
<Optimize>false</Optimize> |
|||
<OutputPath>bin\iPhone\Debug</OutputPath> |
|||
<DefineConstants>DEBUG</DefineConstants> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<ConsolePause>false</ConsolePause> |
|||
<MtouchDebug>true</MtouchDebug> |
|||
<CodesignKey>iPhone Developer</CodesignKey> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> |
|||
<DebugType>none</DebugType> |
|||
<Optimize>true</Optimize> |
|||
<OutputPath>bin\iPhone\Release</OutputPath> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<ConsolePause>false</ConsolePause> |
|||
<CodesignKey>iPhone Developer</CodesignKey> |
|||
</PropertyGroup> |
|||
<ItemGroup> |
|||
<Compile Include="Clipboard.cs" /> |
|||
<Compile Include="CursorFactory.cs" /> |
|||
<Compile Include="Extensions.cs" /> |
|||
<Compile Include="PerspexView.cs" /> |
|||
<Compile Include="PerspexAppDelegate.cs" /> |
|||
<Compile Include="PlatformSettings.cs" /> |
|||
<Compile Include="PlatformThreadingInterface.cs" /> |
|||
<Compile Include="Properties\AssemblyInfo.cs" /> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\Perspex.Animation\Perspex.Animation.csproj"> |
|||
<Project>{d211e587-d8bc-45b9-95a4-f297c8fa5200}</Project> |
|||
<Name>Perspex.Animation</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Application\Perspex.Application.csproj"> |
|||
<Project>{799a7bb5-3c2c-48b6-85a7-406a12c420da}</Project> |
|||
<Name>Perspex.Application</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Base\Perspex.Base.csproj"> |
|||
<Project>{b09b78d8-9b26-48b0-9149-d64a2f120f3f}</Project> |
|||
<Name>Perspex.Base</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Controls\Perspex.Controls.csproj"> |
|||
<Project>{d2221c82-4a25-4583-9b43-d791e3f6820c}</Project> |
|||
<Name>Perspex.Controls</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Input\Perspex.Input.csproj"> |
|||
<Project>{62024b2d-53eb-4638-b26b-85eeaa54866e}</Project> |
|||
<Name>Perspex.Input</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Interactivity\Perspex.Interactivity.csproj"> |
|||
<Project>{6b0ed19d-a08b-461c-a9d9-a9ee40b0c06b}</Project> |
|||
<Name>Perspex.Interactivity</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Layout\Perspex.Layout.csproj"> |
|||
<Project>{42472427-4774-4c81-8aff-9f27b8e31721}</Project> |
|||
<Name>Perspex.Layout</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.SceneGraph\Perspex.SceneGraph.csproj"> |
|||
<Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project> |
|||
<Name>Perspex.SceneGraph</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Styling\Perspex.Styling.csproj"> |
|||
<Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project> |
|||
<Name>Perspex.Styling</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Skia\Perspex.Skia.iOS\Perspex.Skia.iOS.csproj"> |
|||
<Project>{47be08a7-5985-410b-9ffc-2264b8ea595f}</Project> |
|||
<Name>Perspex.Skia.iOS</Name> |
|||
<IsAppExtension>false</IsAppExtension> |
|||
<IsWatchApp>false</IsWatchApp> |
|||
</ProjectReference> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<Reference Include="System" /> |
|||
<Reference Include="System.Reactive.Core"> |
|||
<HintPath>..\..\..\packages\Rx-Core.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll</HintPath> |
|||
</Reference> |
|||
<Reference Include="System.Xml" /> |
|||
<Reference Include="System.Core" /> |
|||
<Reference Include="Xamarin.iOS" /> |
|||
</ItemGroup> |
|||
<Import Project="..\..\Shared\PlatformSupport\PlatformSupport.projitems" Label="Shared" /> |
|||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" /> |
|||
</Project> |
|||
@ -0,0 +1,50 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Text; |
|||
using Perspex.Controls.Platform; |
|||
using Perspex.Input; |
|||
using Perspex.Input.Platform; |
|||
using Perspex.Platform; |
|||
using Perspex.Shared.PlatformSupport; |
|||
using Perspex.Skia; |
|||
using UIKit; |
|||
|
|||
namespace Perspex.iOS |
|||
{ |
|||
public class PerspexAppDelegate : UIApplicationDelegate |
|||
{ |
|||
static bool _initialized = false; |
|||
internal static MouseDevice MouseDevice; |
|||
internal static KeyboardDevice KeyboardDevice; |
|||
|
|||
protected void InitPerspex(Type appType) |
|||
{ |
|||
if(_initialized) |
|||
return; |
|||
_initialized = true; |
|||
|
|||
var window = new UIWindow(UIScreen.MainScreen.Bounds); |
|||
var controller = new PerspexViewController(window); |
|||
window.RootViewController = controller; |
|||
window.MakeKeyAndVisible(); |
|||
|
|||
Application.RegisterPlatformCallback(() => |
|||
{ |
|||
MouseDevice = new MouseDevice(); |
|||
KeyboardDevice = new KeyboardDevice(); |
|||
SharedPlatform.Register(appType.Assembly); |
|||
PerspexLocator.CurrentMutable |
|||
.Bind<IClipboard>().ToTransient<Clipboard>() |
|||
//.Bind<ISystemDialogImpl>().ToTransient<SystemDialogImpl>()
|
|||
.Bind<IStandardCursorFactory>().ToTransient<CursorFactory>() |
|||
.Bind<IKeyboardDevice>().ToConstant(KeyboardDevice) |
|||
.Bind<IMouseDevice>().ToConstant(MouseDevice) |
|||
.Bind<IPlatformSettings>().ToSingleton<PlatformSettings>() |
|||
.Bind<IPlatformThreadingInterface>().ToConstant(new PlatformThreadingInterface()) |
|||
.Bind<IWindowImpl>().ToConstant(controller.PerspexView); |
|||
SkiaPlatform.Initialize(); |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,179 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Diagnostics; |
|||
using System.Linq; |
|||
using System.Reactive.Disposables; |
|||
using System.Text; |
|||
using CoreAnimation; |
|||
using CoreGraphics; |
|||
using Foundation; |
|||
using Perspex.Controls.Platform; |
|||
using Perspex.Input; |
|||
using Perspex.Input.Raw; |
|||
using Perspex.Media; |
|||
using Perspex.Platform; |
|||
using Perspex.Skia.iOS; |
|||
using UIKit; |
|||
|
|||
namespace Perspex.iOS |
|||
{ |
|||
class PerspexView : SkiaView, IWindowImpl |
|||
{ |
|||
private readonly UIWindow _window; |
|||
private readonly UIViewController _controller; |
|||
private IInputRoot _inputRoot; |
|||
|
|||
public PerspexView(UIWindow window, UIViewController controller) |
|||
{ |
|||
if (controller == null) throw new ArgumentNullException(nameof(controller)); |
|||
_window = window; |
|||
_controller = controller; |
|||
AutoresizingMask = UIViewAutoresizing.All; |
|||
AutoFit(); |
|||
UIApplication.Notifications.ObserveDidChangeStatusBarOrientation(delegate { AutoFit(); }); |
|||
UIApplication.Notifications.ObserveDidChangeStatusBarFrame(delegate { AutoFit(); }); |
|||
} |
|||
|
|||
|
|||
void AutoFit() |
|||
{ |
|||
var needFlip = !UIDevice.CurrentDevice.CheckSystemVersion(8, 0) && |
|||
(_controller.InterfaceOrientation == UIInterfaceOrientation.LandscapeLeft |
|||
|| _controller.InterfaceOrientation == UIInterfaceOrientation.LandscapeRight); |
|||
|
|||
var frame = UIScreen.MainScreen.Bounds; |
|||
if (needFlip) |
|||
Frame = new CGRect(frame.Y, frame.X, frame.Height, frame.Width); |
|||
else |
|||
Frame = frame; |
|||
} |
|||
|
|||
public Action Activated { get; set; } |
|||
public Action Closed { get; set; } |
|||
public Action Deactivated { get; set; } |
|||
public Action<RawInputEventArgs> Input { get; set; } |
|||
public Action<Rect> Paint { get; set; } |
|||
public Action<Size> Resized { get; set; } |
|||
|
|||
|
|||
public IPlatformHandle Handle => PerspexPlatformHandle; |
|||
|
|||
|
|||
public override void LayoutSubviews() => Resized?.Invoke(ClientSize); |
|||
|
|||
public Size ClientSize |
|||
{ |
|||
get { return Bounds.Size.ToPerspex(); } |
|||
set { Resized?.Invoke(ClientSize); } |
|||
} |
|||
|
|||
public void Activate() |
|||
{ |
|||
} |
|||
|
|||
protected override void Draw() |
|||
{ |
|||
Paint?.Invoke(new Rect(new Point(), ClientSize)); |
|||
} |
|||
|
|||
public void Invalidate(Rect rect) => DrawOnNextFrame(); |
|||
|
|||
public void SetInputRoot(IInputRoot inputRoot) => _inputRoot = inputRoot; |
|||
|
|||
public Point PointToScreen(Point point) => point; |
|||
|
|||
public void SetCursor(IPlatformHandle cursor) |
|||
{ |
|||
//Not supported
|
|||
} |
|||
|
|||
public void Show() |
|||
{ |
|||
} |
|||
|
|||
public Size MaxClientSize => Bounds.Size.ToPerspex(); |
|||
public void SetTitle(string title) |
|||
{ |
|||
//Not supported
|
|||
} |
|||
|
|||
public IDisposable ShowDialog() |
|||
{ |
|||
//Not supported
|
|||
return Disposable.Empty; |
|||
} |
|||
|
|||
public void Hide() |
|||
{ |
|||
//Not supported
|
|||
} |
|||
|
|||
public override void TouchesEnded(NSSet touches, UIEvent evt) |
|||
{ |
|||
var touch = touches.AnyObject as UITouch; |
|||
if (touch != null) |
|||
{ |
|||
var location = touch.LocationInView(this).ToPerspex(); |
|||
|
|||
Input?.Invoke(new RawMouseEventArgs( |
|||
PerspexAppDelegate.MouseDevice, |
|||
(uint) touch.Timestamp, |
|||
_inputRoot, |
|||
RawMouseEventType.LeftButtonUp, |
|||
location, |
|||
InputModifiers.None)); |
|||
} |
|||
} |
|||
|
|||
Point _touchLastPoint; |
|||
public override void TouchesBegan(NSSet touches, UIEvent evt) |
|||
{ |
|||
var touch = touches.AnyObject as UITouch; |
|||
if (touch != null) |
|||
{ |
|||
var location = touch.LocationInView(this).ToPerspex(); |
|||
_touchLastPoint = location; |
|||
Input?.Invoke(new RawMouseEventArgs(PerspexAppDelegate.MouseDevice, (uint) touch.Timestamp, _inputRoot, |
|||
RawMouseEventType.Move, location, InputModifiers.None)); |
|||
|
|||
Input?.Invoke(new RawMouseEventArgs(PerspexAppDelegate.MouseDevice, (uint) touch.Timestamp, _inputRoot, |
|||
RawMouseEventType.LeftButtonDown, location, InputModifiers.None)); |
|||
} |
|||
} |
|||
|
|||
public override void TouchesMoved(NSSet touches, UIEvent evt) |
|||
{ |
|||
var touch = touches.AnyObject as UITouch; |
|||
if (touch != null) |
|||
{ |
|||
var location = touch.LocationInView(this).ToPerspex(); |
|||
if (PerspexAppDelegate.MouseDevice.Captured != null) |
|||
Input?.Invoke(new RawMouseEventArgs(PerspexAppDelegate.MouseDevice, (uint) touch.Timestamp, _inputRoot, |
|||
RawMouseEventType.Move, location, InputModifiers.LeftMouseButton)); |
|||
else |
|||
{ |
|||
Input?.Invoke(new RawMouseWheelEventArgs(PerspexAppDelegate.MouseDevice, (uint) touch.Timestamp, |
|||
_inputRoot, location, location - _touchLastPoint, InputModifiers.LeftMouseButton)); |
|||
} |
|||
_touchLastPoint = location; |
|||
} |
|||
} |
|||
|
|||
|
|||
} |
|||
|
|||
class PerspexViewController : UIViewController |
|||
{ |
|||
public PerspexView PerspexView { get; } |
|||
|
|||
public PerspexViewController(UIWindow window) |
|||
{ |
|||
PerspexView = new PerspexView(window, this); |
|||
} |
|||
|
|||
public override void LoadView() |
|||
{ |
|||
View = PerspexView; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,16 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Text; |
|||
using Perspex.Platform; |
|||
using UIKit; |
|||
|
|||
namespace Perspex.iOS |
|||
{ |
|||
class PlatformSettings : IPlatformSettings |
|||
{ |
|||
public Size DoubleClickSize =>new Size(4, 4); |
|||
public TimeSpan DoubleClickTime => TimeSpan.FromMilliseconds(200); |
|||
public double RenderScalingFactor => UIScreen.MainScreen.Scale; |
|||
public double LayoutScalingFactor => 1; |
|||
} |
|||
} |
|||
@ -0,0 +1,56 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
using System.Reactive.Disposables; |
|||
using System.Text; |
|||
using System.Threading; |
|||
using CoreAnimation; |
|||
using Foundation; |
|||
using Perspex.Platform; |
|||
using Perspex.Shared.PlatformSupport; |
|||
|
|||
namespace Perspex.iOS |
|||
{ |
|||
class PlatformThreadingInterface : IPlatformThreadingInterface |
|||
{ |
|||
readonly List<Action> _timers = new List<Action>(); |
|||
bool _signaled; |
|||
|
|||
public PlatformThreadingInterface() |
|||
{ |
|||
CADisplayLink.Create(OnFrame).AddToRunLoop(NSRunLoop.Main, NSRunLoop.NSDefaultRunLoopMode); |
|||
} |
|||
|
|||
private void OnFrame() |
|||
{ |
|||
foreach (var timer in _timers.ToList()) |
|||
{ |
|||
timer(); |
|||
} |
|||
|
|||
if (_signaled) |
|||
{ |
|||
_signaled = false; |
|||
Signaled?.Invoke(); |
|||
} |
|||
} |
|||
|
|||
public void RunLoop(CancellationToken cancellationToken) |
|||
{ |
|||
} |
|||
|
|||
public IDisposable StartTimer(TimeSpan interval, Action tick) |
|||
{ |
|||
_timers.Add(tick); |
|||
return Disposable.Create(() => _timers.Remove(tick)); |
|||
} |
|||
|
|||
public void Signal() |
|||
{ |
|||
_signaled = true; |
|||
} |
|||
|
|||
public bool CurrentThreadIsLoopThread => NSThread.Current.IsMainThread; |
|||
public event Action Signaled; |
|||
} |
|||
} |
|||
@ -0,0 +1,36 @@ |
|||
using System.Reflection; |
|||
using System.Runtime.CompilerServices; |
|||
using System.Runtime.InteropServices; |
|||
|
|||
// General Information about an assembly is controlled through the following
|
|||
// set of attributes. Change these attribute values to modify the information
|
|||
// associated with an assembly.
|
|||
[assembly: AssemblyTitle("Perspex.iOS")] |
|||
[assembly: AssemblyDescription("")] |
|||
[assembly: AssemblyConfiguration("")] |
|||
[assembly: AssemblyCompany("")] |
|||
[assembly: AssemblyProduct("Perspex.iOS")] |
|||
[assembly: AssemblyCopyright("Copyright © 2015")] |
|||
[assembly: AssemblyTrademark("")] |
|||
[assembly: AssemblyCulture("")] |
|||
|
|||
// Setting ComVisible to false makes the types in this assembly not visible
|
|||
// to COM components. If you need to access a type in this assembly from
|
|||
// COM, set the ComVisible attribute to true on that type.
|
|||
[assembly: ComVisible(false)] |
|||
|
|||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
|||
[assembly: Guid("4488ad85-1495-4809-9aa4-ddfe0a48527e")] |
|||
|
|||
// Version information for an assembly consists of the following four values:
|
|||
//
|
|||
// Major Version
|
|||
// Minor Version
|
|||
// Build Number
|
|||
// Revision
|
|||
//
|
|||
// You can specify all the values or you can default the Build and Revision Numbers
|
|||
// by using the '*' as shown below:
|
|||
// [assembly: AssemblyVersion("1.0.*")]
|
|||
[assembly: AssemblyVersion("1.0.0.0")] |
|||
[assembly: AssemblyFileVersion("1.0.0.0")] |
|||
@ -0,0 +1,40 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Diagnostics; |
|||
using System.Linq; |
|||
using Foundation; |
|||
using Perspex.iOS; |
|||
using Perspex.Threading; |
|||
using TestApplication; |
|||
using UIKit; |
|||
|
|||
namespace Perspex.iOSTestApplication |
|||
{ |
|||
// The UIApplicationDelegate for the application. This class is responsible for launching the
|
|||
// User Interface of the application, as well as listening (and optionally responding) to
|
|||
// application events from iOS.
|
|||
[Register("AppDelegate")] |
|||
public partial class AppDelegate : PerspexAppDelegate |
|||
{ |
|||
//
|
|||
// This method is invoked when the application has loaded and is ready to run. In this
|
|||
// method you should instantiate the window, load the UI into it and then make the window
|
|||
// visible.
|
|||
//
|
|||
// You have 17 seconds to return from this method, or iOS will terminate your application.
|
|||
//
|
|||
public override bool FinishedLaunching(UIApplication uiapp, NSDictionary options) |
|||
{ |
|||
InitPerspex (typeof (App)); |
|||
|
|||
var app = new App(); |
|||
|
|||
MainWindow.RootNamespace = "Perspex.iOSTestApplication"; |
|||
var window = MainWindow.Create(); |
|||
window.Show(); |
|||
app.Run(window); |
|||
|
|||
return true; |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,5 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
|||
<plist version="1.0"> |
|||
<dict/> |
|||
</plist> |
|||
@ -0,0 +1,4 @@ |
|||
<GettingStarted> |
|||
<LocalContent>GS\iOS\CS\iOSApp\GettingStarted.html</LocalContent> |
|||
<EmbeddedNavigation>false</EmbeddedNavigation> |
|||
</GettingStarted> |
|||
@ -0,0 +1,34 @@ |
|||
<?xml version="1.0" encoding="UTF-8"?> |
|||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> |
|||
<plist version="1.0"> |
|||
<dict> |
|||
<key>CFBundleDisplayName</key> |
|||
<string>Perspex.iOSTestApplication</string> |
|||
<key>CFBundleIdentifier</key> |
|||
<string>com.your-company.Perspex.iOSTestApplication</string> |
|||
<key>CFBundleShortVersionString</key> |
|||
<string>1.0</string> |
|||
<key>CFBundleVersion</key> |
|||
<string>1.0</string> |
|||
<key>UIDeviceFamily</key> |
|||
<array> |
|||
<integer>1</integer> |
|||
<integer>2</integer> |
|||
</array> |
|||
<key>UISupportedInterfaceOrientations</key> |
|||
<array> |
|||
<string>UIInterfaceOrientationPortrait</string> |
|||
<string>UIInterfaceOrientationLandscapeLeft</string> |
|||
<string>UIInterfaceOrientationLandscapeRight</string> |
|||
</array> |
|||
<key>UISupportedInterfaceOrientations~ipad</key> |
|||
<array> |
|||
<string>UIInterfaceOrientationPortrait</string> |
|||
<string>UIInterfaceOrientationPortraitUpsideDown</string> |
|||
<string>UIInterfaceOrientationLandscapeLeft</string> |
|||
<string>UIInterfaceOrientationLandscapeRight</string> |
|||
</array> |
|||
<key>MinimumOSVersion</key> |
|||
<string>7.0</string> |
|||
</dict> |
|||
</plist> |
|||
@ -0,0 +1,20 @@ |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Linq; |
|||
|
|||
using Foundation; |
|||
using UIKit; |
|||
|
|||
namespace Perspex.iOSTestApplication |
|||
{ |
|||
public class Application |
|||
{ |
|||
// This is the main entry point of the application.
|
|||
static void Main(string[] args) |
|||
{ |
|||
// if you want to use a different Application Delegate class from "AppDelegate"
|
|||
// you can specify it here.
|
|||
UIApplication.Main(args, null, "AppDelegate"); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,197 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> |
|||
<PropertyGroup> |
|||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> |
|||
<Platform Condition=" '$(Platform)' == '' ">iPhoneSimulator</Platform> |
|||
<ProjectGuid>{8C923867-8A8F-4F6B-8B80-47D9E8436166}</ProjectGuid> |
|||
<ProjectTypeGuids>{FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids> |
|||
<OutputType>Exe</OutputType> |
|||
<RootNamespace>Perspex.iOSTestApplication</RootNamespace> |
|||
<IPhoneResourcePrefix>Resources</IPhoneResourcePrefix> |
|||
<AssemblyName>PerspexiOSTestApplication</AssemblyName> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhoneSimulator' "> |
|||
<DebugSymbols>true</DebugSymbols> |
|||
<DebugType>full</DebugType> |
|||
<Optimize>false</Optimize> |
|||
<OutputPath>bin\iPhoneSimulator\Debug</OutputPath> |
|||
<DefineConstants>DEBUG</DefineConstants> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<ConsolePause>false</ConsolePause> |
|||
<MtouchArch>i386</MtouchArch> |
|||
<MtouchLink>None</MtouchLink> |
|||
<MtouchDebug>true</MtouchDebug> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhoneSimulator' "> |
|||
<DebugType>none</DebugType> |
|||
<Optimize>true</Optimize> |
|||
<OutputPath>bin\iPhoneSimulator\Release</OutputPath> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<MtouchLink>None</MtouchLink> |
|||
<MtouchArch>i386</MtouchArch> |
|||
<ConsolePause>false</ConsolePause> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|iPhone' "> |
|||
<DebugSymbols>true</DebugSymbols> |
|||
<DebugType>full</DebugType> |
|||
<Optimize>false</Optimize> |
|||
<OutputPath>bin\iPhone\Debug</OutputPath> |
|||
<DefineConstants>DEBUG</DefineConstants> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<ConsolePause>false</ConsolePause> |
|||
<MtouchArch>ARMv7, ARM64</MtouchArch> |
|||
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements> |
|||
<CodesignKey>iPhone Developer</CodesignKey> |
|||
<MtouchDebug>True</MtouchDebug> |
|||
<MtouchSdkVersion>9.1</MtouchSdkVersion> |
|||
<MtouchLink>SdkOnly</MtouchLink> |
|||
<MtouchProfiling>False</MtouchProfiling> |
|||
<MtouchFastDev>False</MtouchFastDev> |
|||
<MtouchUseLlvm>False</MtouchUseLlvm> |
|||
<MtouchUseThumb>False</MtouchUseThumb> |
|||
<MtouchUseSGen>True</MtouchUseSGen> |
|||
<MtouchUseRefCounting>True</MtouchUseRefCounting> |
|||
<MtouchOptimizePNGs>True</MtouchOptimizePNGs> |
|||
<DeviceSpecificBuild>False</DeviceSpecificBuild> |
|||
<MtouchI18n /> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|iPhone' "> |
|||
<DebugType>none</DebugType> |
|||
<Optimize>true</Optimize> |
|||
<OutputPath>bin\iPhone\Release</OutputPath> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements> |
|||
<MtouchArch>ARMv7, ARM64</MtouchArch> |
|||
<ConsolePause>false</ConsolePause> |
|||
<CodesignKey>iPhone Developer</CodesignKey> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Ad-Hoc|iPhone' "> |
|||
<DebugType>none</DebugType> |
|||
<Optimize>True</Optimize> |
|||
<OutputPath>bin\iPhone\Ad-Hoc</OutputPath> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<ConsolePause>False</ConsolePause> |
|||
<MtouchArch>ARMv7, ARM64</MtouchArch> |
|||
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements> |
|||
<BuildIpa>True</BuildIpa> |
|||
<CodesignProvision>Automatic:AdHoc</CodesignProvision> |
|||
<CodesignKey>iPhone Distribution</CodesignKey> |
|||
</PropertyGroup> |
|||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'AppStore|iPhone' "> |
|||
<DebugType>none</DebugType> |
|||
<Optimize>True</Optimize> |
|||
<OutputPath>bin\iPhone\AppStore</OutputPath> |
|||
<ErrorReport>prompt</ErrorReport> |
|||
<WarningLevel>4</WarningLevel> |
|||
<ConsolePause>False</ConsolePause> |
|||
<MtouchArch>ARMv7, ARM64</MtouchArch> |
|||
<CodesignEntitlements>Entitlements.plist</CodesignEntitlements> |
|||
<CodesignProvision>Automatic:AppStore</CodesignProvision> |
|||
<CodesignKey>iPhone Distribution</CodesignKey> |
|||
</PropertyGroup> |
|||
<ItemGroup> |
|||
<Compile Include="Main.cs" /> |
|||
<Compile Include="AppDelegate.cs" /> |
|||
<None Include="GettingStarted.Xamarin" /> |
|||
<None Include="Info.plist" /> |
|||
<Compile Include="Properties\AssemblyInfo.cs" /> |
|||
<None Include="packages.config" /> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<BundleResource Include="Resources\Default-568h%402x.png" /> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<Reference Include="System" /> |
|||
<Reference Include="System.Reactive.Core, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
|||
<HintPath>..\..\..\packages\Rx-Core.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Core.dll</HintPath> |
|||
<Private>True</Private> |
|||
</Reference> |
|||
<Reference Include="System.Reactive.Interfaces, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
|||
<HintPath>..\..\..\packages\Rx-Interfaces.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Interfaces.dll</HintPath> |
|||
<Private>True</Private> |
|||
</Reference> |
|||
<Reference Include="System.Reactive.Linq, Version=2.2.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> |
|||
<HintPath>..\..\..\packages\Rx-Linq.2.2.5\lib\portable-windows8+net45+wp8\System.Reactive.Linq.dll</HintPath> |
|||
<Private>True</Private> |
|||
</Reference> |
|||
<Reference Include="System.Xml" /> |
|||
<Reference Include="System.Core" /> |
|||
<Reference Include="Xamarin.iOS" /> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<Content Include="Entitlements.plist" /> |
|||
</ItemGroup> |
|||
<ItemGroup> |
|||
<ProjectReference Include="..\..\Markup\Perspex.Markup.Xaml\Perspex.Markup.Xaml.csproj"> |
|||
<Project>{3e53a01a-b331-47f3-b828-4a5717e77a24}</Project> |
|||
<Name>Perspex.Markup.Xaml</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Markup\Perspex.Markup\Perspex.Markup.csproj"> |
|||
<Project>{6417e941-21bc-467b-a771-0de389353ce6}</Project> |
|||
<Name>Perspex.Markup</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Animation\Perspex.Animation.csproj"> |
|||
<Project>{d211e587-d8bc-45b9-95a4-f297c8fa5200}</Project> |
|||
<Name>Perspex.Animation</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Application\Perspex.Application.csproj"> |
|||
<Project>{799a7bb5-3c2c-48b6-85a7-406a12c420da}</Project> |
|||
<Name>Perspex.Application</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Base\Perspex.Base.csproj"> |
|||
<Project>{b09b78d8-9b26-48b0-9149-d64a2f120f3f}</Project> |
|||
<Name>Perspex.Base</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Controls\Perspex.Controls.csproj"> |
|||
<Project>{d2221c82-4a25-4583-9b43-d791e3f6820c}</Project> |
|||
<Name>Perspex.Controls</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.HtmlRenderer\Perspex.HtmlRenderer.csproj"> |
|||
<Project>{5fb2b005-0a7f-4dad-add4-3ed01444e63d}</Project> |
|||
<Name>Perspex.HtmlRenderer</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Input\Perspex.Input.csproj"> |
|||
<Project>{62024b2d-53eb-4638-b26b-85eeaa54866e}</Project> |
|||
<Name>Perspex.Input</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Interactivity\Perspex.Interactivity.csproj"> |
|||
<Project>{6b0ed19d-a08b-461c-a9d9-a9ee40b0c06b}</Project> |
|||
<Name>Perspex.Interactivity</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Layout\Perspex.Layout.csproj"> |
|||
<Project>{42472427-4774-4c81-8aff-9f27b8e31721}</Project> |
|||
<Name>Perspex.Layout</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.SceneGraph\Perspex.SceneGraph.csproj"> |
|||
<Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project> |
|||
<Name>Perspex.SceneGraph</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Styling\Perspex.Styling.csproj"> |
|||
<Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project> |
|||
<Name>Perspex.Styling</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Perspex.Themes.Default\Perspex.Themes.Default.csproj"> |
|||
<Project>{3e10a5fa-e8da-48b1-ad44-6a5b6cb7750f}</Project> |
|||
<Name>Perspex.Themes.Default</Name> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\..\Skia\Perspex.Skia.iOS\Perspex.Skia.iOS.csproj"> |
|||
<Project>{47be08a7-5985-410b-9ffc-2264b8ea595f}</Project> |
|||
<Name>Perspex.Skia.iOS</Name> |
|||
<IsAppExtension>false</IsAppExtension> |
|||
<IsWatchApp>false</IsWatchApp> |
|||
</ProjectReference> |
|||
<ProjectReference Include="..\Perspex.iOS\Perspex.iOS.csproj"> |
|||
<Project>{4488ad85-1495-4809-9aa4-ddfe0a48527e}</Project> |
|||
<Name>Perspex.iOS</Name> |
|||
<IsAppExtension>false</IsAppExtension> |
|||
<IsWatchApp>false</IsWatchApp> |
|||
</ProjectReference> |
|||
</ItemGroup> |
|||
<Import Project="..\..\..\samples\TestApplicationShared\TestApplicationShared.projitems" Label="Shared" /> |
|||
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" /> |
|||
</Project> |
|||
@ -0,0 +1,36 @@ |
|||
using System.Reflection; |
|||
using System.Runtime.CompilerServices; |
|||
using System.Runtime.InteropServices; |
|||
|
|||
// General Information about an assembly is controlled through the following
|
|||
// set of attributes. Change these attribute values to modify the information
|
|||
// associated with an assembly.
|
|||
[assembly: AssemblyTitle("Perspex.iOSTestApplication")] |
|||
[assembly: AssemblyDescription("")] |
|||
[assembly: AssemblyConfiguration("")] |
|||
[assembly: AssemblyCompany("")] |
|||
[assembly: AssemblyProduct("Perspex.iOSTestApplication")] |
|||
[assembly: AssemblyCopyright("Copyright © 2015")] |
|||
[assembly: AssemblyTrademark("")] |
|||
[assembly: AssemblyCulture("")] |
|||
|
|||
// Setting ComVisible to false makes the types in this assembly not visible
|
|||
// to COM components. If you need to access a type in this assembly from
|
|||
// COM, set the ComVisible attribute to true on that type.
|
|||
[assembly: ComVisible(false)] |
|||
|
|||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
|||
[assembly: Guid("8c923867-8a8f-4f6b-8b80-47d9e8436166")] |
|||
|
|||
// Version information for an assembly consists of the following four values:
|
|||
//
|
|||
// Major Version
|
|||
// Minor Version
|
|||
// Build Number
|
|||
// Revision
|
|||
//
|
|||
// You can specify all the values or you can default the Build and Revision Numbers
|
|||
// by using the '*' as shown below:
|
|||
// [assembly: AssemblyVersion("1.0.*")]
|
|||
[assembly: AssemblyVersion("1.0.0.0")] |
|||
[assembly: AssemblyFileVersion("1.0.0.0")] |
|||
|
After Width: | Height: | Size: 2.2 KiB |
@ -0,0 +1,6 @@ |
|||
<?xml version="1.0" encoding="utf-8"?> |
|||
<packages> |
|||
<package id="Rx-Core" version="2.2.5" targetFramework="xamarinios1" /> |
|||
<package id="Rx-Interfaces" version="2.2.5" targetFramework="xamarinios1" /> |
|||
<package id="Rx-Linq" version="2.2.5" targetFramework="xamarinios1" /> |
|||
</packages> |
|||
Loading…
Reference in new issue