184 lines
11 KiB
HTML
184 lines
11 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
|
<title>ewol Library</title>
|
|
<link rel="stylesheet" href="base.css">
|
|
<link rel="stylesheet" href="menu.css">
|
|
</head>
|
|
<body>
|
|
<div class="navbar navbar-fixed-top">
|
|
<div class="container">
|
|
<h1><a href="index.html">ewol library</a></h1>
|
|
<h4><a href="http://github.com/heeroyui/ewol/"> [ sources ]</a></h4>
|
|
<h3>API:</h3> <div id="menu">
|
|
<ul class="niveau1">
|
|
<li class="sousmenu"><a href="namespace_ewol.html">ewol</a>
|
|
<ul class="niveau2">
|
|
<li><a href="namespace_ewol__translate.html">translate</a>
|
|
</li>
|
|
<li><a href="namespace_ewol__key.html">key</a>
|
|
</li>
|
|
<li><a href="namespace_ewol__widget.html">widget</a>
|
|
</li>
|
|
<li><a href="namespace_ewol__openGL.html">openGL</a>
|
|
</li>
|
|
<li class="sousmenu"><a href="namespace_ewol__context.html">context</a>
|
|
<ul class="niveau3">
|
|
<li><a href="namespace_ewol__context__clipBoard.html">clipBoard</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="namespace_ewol__compositing.html">compositing</a>
|
|
</li>
|
|
<li><a href="namespace_ewol__object.html">object</a>
|
|
</li>
|
|
<li><a href="namespace_ewol__resource.html">resource</a>
|
|
</li>
|
|
<li><a href="namespace_ewol__font.html">font</a>
|
|
</li>
|
|
<li><a href="namespace_ewol__event.html">event</a>
|
|
</li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="namespace_MacOs.html">MacOs</a>
|
|
</li>
|
|
<li><a href="namespace_IOs.html">IOs</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<h3>Documentation:</h3><div id="menu">
|
|
<ul class="niveau1"><li><a href="001_bases.html">Bases</a></li>
|
|
</ul><ul class="niveau1"><li><a href="faq.html">Faq</a></li>
|
|
</ul></div>
|
|
<h3>Tutorials:</h3><div id="menu">
|
|
<ul class="niveau1"><li><a href="tutorial_000_Build.html">Build</a></li>
|
|
</ul><ul class="niveau1"><li><a href="tutorial_001_HelloWord.html">Hello word</a></li>
|
|
</ul><ul class="niveau1"><li><a href="tutorial_010_ObjectModel.html">Object model</a></li>
|
|
</ul><ul class="niveau1"><li><a href="tutorial_011_ObjectConfig.html">Object config</a></li>
|
|
</ul><ul class="niveau1"><li><a href="tutorial_012_ObjectMessage.html">Object message</a></li>
|
|
</ul><ul class="niveau1"><li><a href="tutorial_020_FileAccess.html">File access</a></li>
|
|
</ul><ul class="niveau1"><li><a href="tutorial_021_Resources.html">Resources</a></li>
|
|
</ul><ul class="niveau1"><li><a href="tutorial_030_ConplexeXmlGui.html">Conplexe xml gui</a></li>
|
|
</ul><ul class="niveau1"><li><a href="tutorial_050_CreateCustomWidget.html">Create custom widget</a></li>
|
|
</ul><ul class="niveau1"><li><a href="tutorial_051_AddWidgetCustumInXML.html">Add widget custum in x m l</a></li>
|
|
</ul></div>
|
|
<br/><h3>Associate libraries:</h3><div id="menu">
|
|
<ul class="niveau1"><li><a href="../ejson/index.html">ejson</a></li>
|
|
</ul><ul class="niveau1"><li><a href="../egami/index.html">egami</a></li>
|
|
</ul><ul class="niveau1"><li><a href="../ege/index.html">ege</a></li>
|
|
</ul><ul class="niveau1"><li><a href="../esvg/index.html">esvg</a></li>
|
|
</ul><ul class="niveau1"><li><a href="../etk/index.html">etk</a></li>
|
|
</ul><ul class="niveau1"><li><a href="../exml/index.html">exml</a></li>
|
|
</ul></div>
|
|
<br/>
|
|
<br/>
|
|
<br/>
|
|
<br/>
|
|
<br/>
|
|
<br/>
|
|
</div>
|
|
</div>
|
|
<div class="container" id="content">
|
|
<h1><center>resources</center></h1>
|
|
<hr><div align="left"><a href="tutorial_020_FileAccess.html">Previous: File access</a></div> <div align="right"><a href="tutorial_030_ConplexeXmlGui.html">Next: Conplexe xml gui</a></div>
|
|
|
|
<h2> Objectifs </h2>
|
|
<ul><li> Understand What is a resource</li><li> Use resources</li></ul>
|
|
<h2> What is a resource: </h2><br/>
|
|
A resource is an usique element that can be used by manny element like:
|
|
<ul><li> An image (special resolution)</li><li> A configuration file</li><li> An application manager (special case)</li><li> A sound file</li><li> ...</li></ul>
|
|
A resource have an other objective, form some platform, the graphic interface can be stopped, then we need to reload texture in the graphic inteface...
|
|
Then the texture is an other graphic interface.<br/>
|
|
<h2> Get a resource: </h2><br/>
|
|
For this example we will load a configuration file:
|
|
<pre>
|
|
<span class="code-preproc">#include <ewol/object/Object.h>
|
|
</span><span class="code-preproc">#include <ewol/resource/ConfigFile.h>
|
|
</span>namespace appl <span class="code-operator">{</span>
|
|
<span class="code-storage-keyword">class</span> MyObj : <span class="code-storage-keyword">public</span> <span class="code-class">ewol::Object</span> <span class="code-operator">{</span>
|
|
<span class="code-storage-keyword">private</span>:
|
|
<span class="code-class">std::shared_ptr</span><<span class="code-class">ewol::resource::ConfigFile</span>> <span class="code-member">m_c</span>onfig;
|
|
<span class="code-type">int32_t</span> <span class="code-member">m_c</span>onfigValId;
|
|
<span class="code-storage-keyword">protected</span>:
|
|
<span class="code-doxygen">//! @brief Constructor
|
|
</span> <span class="code-function-name">MyObj(</span><span class="code-type">void</span>) :
|
|
<span class="code-member">m_c</span><span class="code-function-name">onfigValId(</span>-<span class="code-number">1</span>) <span class="code-operator">{</span>
|
|
<span class="code-comment">// nothing to do..
|
|
</span> <span class="code-operator">}</span>
|
|
<span class="code-type">void</span> <span class="code-function-name">init(</span>) <span class="code-operator">{</span>
|
|
<span class="code-class">ewol::Object</span>::<span class="code-function-name">init(</span>);
|
|
<span class="code-member">m_c</span>onfig = <span class="code-class">ewol::resource::ConfigFile</span>::<span class="code-function-name">create(</span><span class="code-text-quote">"DATA:ExapleConfig.json"</span>);
|
|
<span class="code-member">m_c</span>onfigValId = <span class="code-member">m_c</span>onfig-><span class="code-function-name">request(</span><span class="code-text-quote">"exampleConfigName"</span>);
|
|
<span class="code-operator">}</span>
|
|
<span class="code-storage-keyword">public</span>:
|
|
<span class="code-doxygen">//! @brief Destructor
|
|
</span> <span class="code-storage-keyword">virtual</span> ~<span class="code-function-name">MyObj(</span><span class="code-type">void</span>) <span class="code-operator">{</span> <span class="code-operator">}</span>
|
|
<span class="code-function-name">DECLARE_FACTORY(</span>MyObj);
|
|
<span class="code-storage-keyword">public</span>:
|
|
<span class="code-type">void</span> <span class="code-function-name">process(</span>) <span class="code-operator">{</span>
|
|
<span class="code-type">double</span> value = <span class="code-member">m_c</span>onfig-><span class="code-function-name">getNumber(</span><span class="code-member">m_c</span>onfigValId);
|
|
<span class="code-function-name">APPL_DEBUG(</span><span class="code-text-quote">"example value : "</span> << value);
|
|
<span class="code-operator">}</span>
|
|
<span class="code-operator">}</span>
|
|
<span class="code-operator">}</span>
|
|
</pre><br/>
|
|
|
|
<h2> Create a new resource: </h2><br/>
|
|
A resource is a generic <a href="class_ewol__Resource.html">ewol::Resource</a> that hrited form a generic <a href="class_ewol__Object.html">ewol::Object</a>, simply change the FACTORY macro in :
|
|
<ul><li> DECLARE_RESOURCE_FACTORY(className) To declare a resource with no name (unique for every creation)</li><li> DECLARE_RESOURCE_NAMED_FACTORY(className) To create a resource that have a specific name. When created, we will find the previous resource with the specify name in the fanctory.</li><li> DECLARE_RESOURCE_SINGLE_FACTORY(className,uniqueName) This is to have a unique resource for all the application (name is specify in the Macro)</li></ul>
|
|
we have now some specific interface to compleate (if needed):<br/>
|
|
<h3> The Resource Level </h3><br/>
|
|
The resources can be reloaded, then we need to reaload in the good order (level [0 .. 5])<br/>
|
|
The resources are loaded fron 0 to 5.<br/>
|
|
Then for basic resource :<br/>
|
|
<pre>
|
|
<span class="code-preproc">#include <ewol/object/Resource.h>
|
|
</span>namespace appl <span class="code-operator">{</span>
|
|
<span class="code-storage-keyword">class</span> MyResource : <span class="code-storage-keyword">public</span> <span class="code-class">ewol::Resource</span> <span class="code-operator">{</span>
|
|
<span class="code-storage-keyword">protected</span>:
|
|
<span class="code-doxygen">//! @brief Constructor
|
|
</span> <span class="code-function-name">MyResource(</span>) :
|
|
<span class="code-member">m_c</span><span class="code-function-name">onfigValId(</span>-<span class="code-number">1</span>) <span class="code-operator">{</span>
|
|
<span class="code-member">m_r</span>esourceLevel = <span class="code-number">4</span>;
|
|
<span class="code-function-name">addObjectType(</span><span class="code-text-quote">"ewol::MyResource"</span>);
|
|
<span class="code-operator">}</span>
|
|
<span class="code-type">void</span> <span class="code-function-name">init(</span><span class="code-storage-keyword">const</span> std::&<span class="code-input-function"> _name</span>) <span class="code-operator">{</span>
|
|
<span class="code-class">ewol::Resource</span>::<span class="code-function-name">init(</span>_name);
|
|
<span class="code-operator">}</span>
|
|
<span class="code-storage-keyword">public</span>:
|
|
<span class="code-doxygen">//! @brief Destructor
|
|
</span> <span class="code-storage-keyword">virtual</span> ~<span class="code-function-name">MyResource(</span><span class="code-type">void</span>) <span class="code-operator">{</span> <span class="code-operator">}</span>
|
|
<span class="code-function-name">DECLARE_RESOURCE_NAMED_FACTORY(</span>MyResource);
|
|
<span class="code-operator">}</span>
|
|
<span class="code-operator">}</span>
|
|
</pre><br/>
|
|
Now we need to implement somme functions:<br/>
|
|
To send data on the hardware (openGL):
|
|
<pre>
|
|
<span class="code-type">void</span> <span class="code-function-name">updateContext(</span>);
|
|
</pre><br/>
|
|
To remove data from the the hardware (openGL):
|
|
<pre>
|
|
<span class="code-type">void</span> <span class="code-function-name">removeContext(</span>);
|
|
</pre><br/>
|
|
When loose hardware (juste update internal state):
|
|
<pre>
|
|
<span class="code-type">void</span> <span class="code-function-name">removeContextToLate(</span>);
|
|
</pre><br/>
|
|
When user request to reload all resources (can be usefull when using file type : THEME:GUI:xxx)
|
|
<pre>
|
|
<span class="code-type">void</span> <span class="code-function-name">reload(</span>);
|
|
</pre><br/>
|
|
</div>
|
|
<script>
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
ga('create', 'UA-46753803-1', 'heeroyui.github.io');
|
|
ga('send', 'pageview');
|
|
</script>
|
|
</body>
|
|
</html>
|