A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://gammasoft71.github.io/xtd/docs/documentation/guides/Overview/xtd_explanations below:

About xtd | xtd

About xtd Table of contents Motivations

What are the criteria for a modern C++ framework in 2019 :

After looking and trying (more or less in depth) many known or unknown C++ GUI libraries/frameworks. I never found one that matched these criteria.

Just take all the existing C++ GUI libraries and frameworks and you can see that none of them fit the above criteria. This does not mean that they are not good or that they do not work. Far from it, some of them are excellent, like Qt, wxWidgets, JUCE to name only these three. Some others are excellent too, some are less good and unfortunately many are mediocre or even abandoned.

Here is a paper written by Philippe M. Groarke that summarizes the advantages and disadvantages of each C++ library/framework.

So the decision to create a new GUI in modern C++ was made.

What is xtd Framework ?

xtd is a framework based on an OS abstraction via the xtd.core.native API and a graphical abstraction via the xtd.drawing.native API and the xtd.forms.native API.

At the moment there are two implementations of the xtd.core.native API:

But other operating systems can be added in the future or earlier if needed by implementing the xtd.core.native API like :

For the moment there is an implementation of the APIs xtd.drawing.native and xtd.forms.native :

But in the futur, other graphical interfaces can be added by implementing the xtd.drawing.native and xtd.forms.native APIs as per rexamples :

In summary the goal of xtd framework is to provide a high level interface with its own functionalities while being extremely portable with the simplest possible abstraction layer on the OS and on the GUI.

xtd API

When I created xtd, I had the choice of creating my own API or using an existing API. I chose to use an existing API because it is difficult to have a consistent API.

I also wanted to have an API close to the Win32 API and events because this API and events are known by many developers.

Which one to choose? It had to be the one that I knew best, that was consistent and that was complete.

In the company I work for, a little more than 12 years ago, we had a project that had to run on the desktop, on an embedded system and on Android (the backend could not be written in Java because the embedded system could not run a JVM). The modern C++11 didn't exist yet, it was the beginning and it wasn't present on all compilers. So I had to create a framework (threads, diagnostics, sockets, web sockets, io, unicode, ... RAII programming idiom, but no GUI) to implement the shortcomings of C++ and I based myself on the .Net framewrok.

My choice was naturally for the .Net Framework API.

Notes xtd libraries xtd architecture

See architecture diagram.

xtd is composed of several libraries.

Dependency

All libraries use the std.

xtd.core

This library is high level API that has access only to the std and xtd.core.native.xxx (xxx = win32, unix, ...) via xtd.core.native interface.

Some Rules

There are still some cases that are not yet fully compliant with these rules but this should be fixed before the 1.0.0 release.

xtd.core.native

This library is a low-level API that has access to the operating system and third-party libraries.

The role of is API is the same que l'API de le JVM of Java ou Common Language Runtime (CLR) of .Net Framework.

xtd.core.native.unix

It is a low-level library that implements the xtd.core.native interface for linux, macOS, iOs and Android.

xtd.core.native.win32

It is a low-level library that implements the xtd.core.native interface for Windows.

xtd.drawing

This library is high level API that has access only to xtd.core and xtd.drawing.native.xxx (xxx = wxwidgets or other in the future) via xtd.drawing.native interface.

Rule xtd.drawing.native

This library is a low-level API that has access to the GDI+ graphics.

The role of is API is the same que l'API de le JVM of Java ou Common Language Runtime (CLR) of .Net Framework.

xtd.drawing.native.wxwidgets

It is a low-level library that implements the xtd.drawing.native interface for wxWidgets.

xtd.forms

This library is high level API that has access only to xtd.ddrawing and xtd.forms.native.xxx (xxx = wxwidgets or other in the future) via xtd.forms.native interface.

Rule xtd.forms.native

This library is a low-level API that has access to the GUI.

The role of this API is the same as that of the Java JVM API or the Common Language Runtime (CLR) of the .Net Framework.

xtd.forms.native.wxwidgets

It is a low-level library that implements the xtd.forms.native interface for wxWidgets.

Command line tools GUI tools xtd tests Unit tests Manual tests xtd themes

A control can have several style modes (xtd::forms::flat_style):

Current Operating System / Desktop Environment Generic Colors only Owner themes

In the future, developers will be able to create their own themes.

Build CMake

xtd uses CMake as build script generator.

Commands to generate xtd build project.

cd xtd
mkdir build
cd build
cmake ..
start xtd.sln
cd xtd
mkdir build && cd build
cmake .. -G "Xcode"
open xtd.xcoddeproj
cd xtd
mkdir build && cd build
cmake ..
cmake all
Notes for Windows developer

When you use the install of xtd, you are in admin mode to be able to install it in the folder "C:\Program Files\xtd".

When you are in Visual, you are in user mode and you cannot write in the folder "C:\Program Files\xtd".

CMake generates the xtd project and adds different targets like :

It also generates special targets like:

It is thus necessary to modify the rights of permission of "C:\Program Files\xtd" so that the user can install the project.

Specific CMake commands

xtd adds a set of specific CMake commands for simplifying CMakeLists.txt.

You can see the reference guide for documentation.

xtd build CMake options for xtd developers

Use the default options except for the following:

These options respectively enable unit tests for each xtd library.

Simply add "-DXTD_BUILD_TESTS_XTD_CORE=ON -DXTD_BUILD_TESTS_XTD_DRAWING=ON -DXTD_BUILD_TESTS_XTD_FORMS=ON -DXTD_BUILD_TESTS_XTD_TUNIT=ON" to the cmake command line. Or enable options in CMake-gui.

xtd guidelines Notes Unit tests Notes Continuous integration builds Test coverage xtd documentation

There are two guides:

Notes

For the offline documentation use doxygen command or doxygen gui.


RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4