[DEV] use doxygen documentation and update doc to markdown

This commit is contained in:
Edouard DUPIN 2016-03-30 21:40:01 +02:00
parent a1e59a95e3
commit a062b31ff7
5 changed files with 187 additions and 32 deletions

View File

@ -1,6 +1,8 @@
=?= FAQ =?=
FAQ
===
== What is ewol licence ==
What is ewol licence
--------------------
This is really simple : APACHE-2 :
@ -10,7 +12,7 @@ Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
[[http://www.apache.org/licenses/LICENSE-2.0]]
<http://www.apache.org/licenses/LICENSE-2.0>
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
@ -21,13 +23,14 @@ limitations under the License.
== Why we use "DECLARE_FACTORY" Macro ? ==
Why we use "DECLARE_FACTORY" Macro?
-----------------------------------
For some reason!!! But everything might be clear:
:** In ewol we masively use std::shared_ptr<xxx> (I have create my own but it is not "standard" (I like when we use genecic system)).
:** The main class : [class[ewol::Object]] herited from [i]std::enable_shared_from_this<Object>[/i] to permit to access at his own [i]std::shared_ptr[/i].
:** Acces At his own [i]std::shared_ptr[/i] is not allowed in the class contructor/destructor.
:** Many time for meta-widget we need to propagate our [i]std::shared_ptr[/i] in child.
- In ewol we masively use ememory::SharedPtr (simple wrapper over std::shared_ptr (that is not thread safe ...)).
- The main class : ewol::Object herited from ememory::EnableSharedFromThis<ewol::Object> to permit to access at his own ememory::SharedPtr.
- Acces At his own ememory::SharedPtr is not allowed in the class contructor/destructor.
- Many time for meta-widget we need to propagate our ememory::SharedPtr in child through the ememory::WeakPtr.
Then for all these reasons, I have create a simple MACRO that create a static template funtion that create the object and just after
creation call the init(...) function to permit to create a complex widget or others with some writing convinience.

123
doc/mainpage.md Normal file
View File

@ -0,0 +1,123 @@
Ewol library {#mainpage}
============
What is EWOL, and how can I use it?
-----------------------------------
EWOL, or Edn Widget OpenGl Layer, is a multi-platform library for creating graphical user interfaces in OpenGL. Offering a complete set of widgets.
Where can I use it?
-------------------
Everywhere! EWOL is cross-platform devolopped to support bases OS:
- Linux (X11) (mouse)
- Windows (mouse) (build on linux...)
- MacOs (mouse)
- Android (mouse + touch)
- IOs (touch)
What languages are supported?
-----------------------------
EWOL is written in C++ and is not (for now) supported for other languages.
Are there any licensing restrictions?
-------------------------------------
EWOL is [b]FREE software[/b] and [i]all sub-library are FREE and staticly linkable !!![/i]
That allow you to use it for every program you want, including those developing proprietary software, without any license fees or royalties.
The static support is important for some platform like IOs, and this limit the external library use at some license like:
- BSD*
- MIT
- APPACHE-2
- PNG
- ZLIB
This exclude the classical extern library with licence:
- L-GPL
- GPL
License (APACHE 2)
------------------
Copyright ewol Edouard DUPIN
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
<http://www.apache.org/licenses/LICENSE-2.0>
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Sub library:
------------
License:
- [**etk**](http://atria-soft.github.io/etk) : APACHE-2
- [**elog**](http://atria-soft.github.io/elog) : APACHE-2
+ **linearmath** : z-lib (subset of bullet lib)
+ [**earchive**](http://atria-soft.github.io/earchive) : APACHE-2
* **zlib** : z-lib
- [**egami**](http://atria-soft.github.io/egami) : APACHE-2
+ [**esvg**](http://atria-soft.github.io/esvg) : APACHE-2
+ **libpng** : PNG
- **libogg** : BSD-like
- **libfreetype** : BSD-like
- [**e-json**](http://atria-soft.github.io/ejson) : APACHE-2
- [**e-xml**](http://atria-soft.github.io/exml) : APACHE-2
- [**audio**](http://musicdsp.github.io/audio) : APACHE-2
- [**audio-orchestra**](http://musicdsp.github.io/audio-orchestra) : APACHE-2
- [**audio-river**](http://musicdsp.github.io/audio-river) : APACHE-2
...
Description:
------------
Internal:
- [**elog**](http://atria-soft.github.io/elog) : Generic Log interface (for Android and MacOs) ...
- [**etk**](http://atria-soft.github.io/etk) : Generic toolkit to acces on file, standardize acces on string (for Android and MacOs) ...
- [**earchive**](http://atria-soft.github.io/earchive) : Generic access to a zip file (used to access on file on Android)
- [**egami**](http://atria-soft.github.io/egami) : generic image accessor for PNG, svg and bmp image (might add some other type ...)
- [**esvg**](http://atria-soft.github.io/esvg) : Generic SVG image parser and displayer
- [**e-json**](http://atria-soft.github.io/ejson) : JSON file access (read and write)
- [**e-xml**](http://atria-soft.github.io/exml) : XML file access (read and write)
- [**audio**](http://musicdsp.github.io/audio) : Basic audio format
- [**audio-orchestra**](http://musicdsp.github.io/audio-orchestra) : Low level wrapper of audio interface (Linux/Windows/MacOs/IOs/Android)
- [**audio-river**](http://musicdsp.github.io/audio-river) : High level audio abstraction
- [**ege**](http://musicdsp.github.io/ege) : Ewol Game engine is a wrapper on the the bullet physical engine and ewol renderer engin. This is in developpement for now (the simple objective is to produce game to make profitable all my work)
External:
---------
- **linearmath** : bullet mathamatical sub lib (for using same vec3).
- **Z lib** : Clkassical zlib lib.
- **libPNG** : the classical png display lib.
- **ogg** : The classical Ogg coder reader lib.
- **freetype** : The classicle true-type reader lib.
- **bulletlib** : the classical bullet library physical engine. (dependence by ege)
Program Using EWOL
------------------
- [**edn**](http://musicdsp.github.io/edn): (Application in GPLv3) Edn is the main application using this lib and designed for (in the first time). This is a "Code editor".
- [**worddown**](http://play.google.com/store/apps/details?id=com.edouarddupin.worddown): (Proprietary) Worddown is a simple word game.
Main documentation:
-------------------
[doc[001_bases | Global Documantation]]
[tutorial[000_Build | Tutorials]]

29
doxy_ewol.py Normal file
View File

@ -0,0 +1,29 @@
#!/usr/bin/python
import os
import doxy.module as module
import doxy.debug as debug
import doxy.tools as tools
def create(target, module_name):
my_module = module.Module(__file__, module_name)
my_module.set_version([0,9,"dev"])
my_module.set_title("Ewol: Ewol Widget in OpenGl")
my_module.set_website("http://atria-soft.github.io/" + module_name)
my_module.set_website_sources("http://github.com/atria-soft/" + module_name)
my_module.set_path([
os.path.join(tools.get_current_path(__file__), module_name),
os.path.join(tools.get_current_path(__file__), "doc")
])
my_module.add_module_depend([
'elog',
'etk',
'esignal',
'eproperty',
'ememory',
'gale',
'exml',
'ejson',
'egami'
])
return my_module

View File

@ -1,43 +1,43 @@
/**
/** @file
* @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved
* @copyright 2011, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file)
* @license APACHE v2.0 (see license file)
*/
#pragma once
#include <elog/log.h>
#include <assert.h>
namespace appl {
/**
* @brief Get local id of the library
* @return Unique ID of the library
*/
int32_t getLogId();
};
// TODO : Review this problem of multiple intanciation of "std::stringbuf sb"
#define APPL_BASE(info,data) \
do { \
if (info <= elog::getLevel(appl::getLogId())) { \
std::stringbuf sb; \
std::ostream tmpStream(&sb); \
tmpStream << data; \
elog::logStream(appl::getLogId(), info, __LINE__, __class__, __func__, tmpStream); \
} \
} while(0)
#define APPL_CRITICAL(data) APPL_BASE(1, data)
#define APPL_ERROR(data) APPL_BASE(2, data)
#define APPL_WARNING(data) APPL_BASE(3, data)
#define APPL_BASIC(info,data) ELOG_BASE(appl::getLogId(),info,data)
#define APPL_PRINT(data) APPL_BASIC(-1, data)
#define APPL_CRITICAL(data) APPL_BASIC(1, data)
#define APPL_ERROR(data) APPL_BASIC(2, data)
#define APPL_WARNING(data) APPL_BASIC(3, data)
#ifdef DEBUG
#define APPL_INFO(data) APPL_BASE(4, data)
#define APPL_DEBUG(data) APPL_BASE(5, data)
#define APPL_VERBOSE(data) APPL_BASE(6, data)
#define APPL_TODO(data) APPL_BASE(4, "TODO : " << data)
#define APPL_INFO(data) APPL_BASIC(4, data)
#define APPL_DEBUG(data) APPL_BASIC(5, data)
#define APPL_VERBOSE(data) APPL_BASIC(6, data)
#define APPL_TODO(data) APPL_BASIC(4, "TODO : " << data)
#else
#define APPL_INFO(data) do { } while(false)
#define APPL_DEBUG(data) do { } while(false)
#define APPL_VERBOSE(data) do { } while(false)
#define APPL_TODO(data) do { } while(false)
#define APPL_INFO(data) do { } while(false)
#define APPL_DEBUG(data) do { } while(false)
#define APPL_VERBOSE(data) do { } while(false)
#define APPL_TODO(data) do { } while(false)
#endif
#define APPL_HIDDEN(data) do { } while(false)
#define APPL_ASSERT(cond,data) \
do { \
if (!(cond)) { \