Skip to content

Framework for visual rich cross-platform applications and 2D games.

License

Notifications You must be signed in to change notification settings

ebatianoSoftware/CrossX

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CrossX

CrossX is an open source cross-platform framework for building iOS, Android, Windows, UWP and MacOS apps and 2D games with .NET from a single codebase.

Fast & easy app development with focus on performance and ablility to run in two redraw modes:

  • continous - for games,
  • smart redraw - for apps (content is redrawn only when a change is signaled.

CrossX comes with many built in layouts and controls to build and design apps quickly from a single API. You can subclass any control to customize their behavior or define your own controls.

⚠️Framework is in early stage of development and cannot be used yet. Please come back later to check its app development readiness status.

✔️Label ✔️Button ✔️IconButton ✔️ImageView ✔️Slider ✔️ProgressBar ✔️ToggleButton ✔️CheckBox ✔️RadioButton ✔️ItemsView ✔️FrameLayout ✔️StackLayout ✔️WrapLayout ✔️SplitLayout ✔️ToolTips ✔️TextBox 🔻ContextMenu 🔻ScrollBar 🔻ScrollView 🔻TreeView 🔻ListBox 🔻Text 🔻HtmlView

MVVM Pattern

The framework is strongly based on Model-View-ViewModel pattern. No view code by default (can be realised though with specialized control subclassing) and heavy use of bindings force you to think in Model->ViewModel->View direction in every aspect.

Skia based rendering

Rendering currently is realised with SkiaSharp which allows you to create beautiful applications.

Other backends planned

I plan adding more backends - DirectX, OpenGL, Metal for fast rendering (skipping Skia backend totally) with possibility to access those backends native APIs.

XX Definition Files

XX definition files are XML files used to describe views and define styles and resources. I chose a XAML-like approach but simpler in its form. The XX "language" will surely evolve into something more in the future.

Currently XX project is put into CrossX repository and grows with the framework.

To improve developer experience, a small tool - XxSchemaGenerator (xxsgen) was created. It generates XSD schema files based on your assemblies that use XX contracts. Thanks to that, editing views is easier with attribute names and values hints and values syntax checking.


Example definition of CrossX's View

<FrameLayout
  xmlns="https://crossx.support/Schemas/CrossX.Framework.UI"
  xmlns:ex="https://crossx.support/Schemas/CrossX.Example"
  BackgroundColor="Black">
  
  <Label Classes="Header Light" Text="Hello World"/>
  
  <Label Id="label1" Text="&#xe876;" 
         FontFamily="Material Icons" FontSize="30" FontWeight="Bold" 
         TextColor="White" Margin="10"
         HorizontalAlignment="Center" VerticalAlignment="Center"/>
  
  <Button Width="200" Text="Test Button" Margin="0,0,0,50"
          HorizontalAlignment="Center" VerticalAlignment="End"
          BackgroundColor="{Theme SystemBackgroundColor}"
          Command="{Binding TestCommand}" CommandParameter="{Binding}"/>
  
</FrameLayout>

Support and Contributions

If you think you have found a bug or have a feature request, use our issue tracker. Before opening a new issue, please search to see if your problem has already been reported. Try to be as detailed as possible in your issue reports.

If you are interested in contributing fixes or features to CrossX, just fork this repository, make your changes and open pull request to merge your work into development branch.

⚠️ Be aware that not all changes will be approved and merged.

License

The CrossX project is under the MIT License. See the LICENSE.txt file for more details. Third-party libraries used by CrossX are under their own licenses. Please refer to those libraries for details on the license they use.

About

Framework for visual rich cross-platform applications and 2D games.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published