Compare commits

...

76 Commits
0.10.0 ... main

Author SHA1 Message Date
30fb41bb62 [RELEASE] Release v1.0.0 2021-02-16 21:46:54 +01:00
f808211bd3 [DEBUG] update new API of lutin log 2019-05-03 10:18:22 +02:00
bfedb5336e [DEV] update label widget 2019-04-01 22:04:10 +02:00
1cfa68a23f [DEBUG] correct basic font folder 2019-04-01 22:03:49 +02:00
5c2ba27cc5 [DEV] reduce some log level 2018-10-30 22:05:39 +01:00
160a7dec30 [DEV] update of new etk Uri API 2018-10-23 22:17:53 +02:00
efd3b160ad [DEBUG] correct distance field 2018-10-23 22:17:20 +02:00
844aaa90dd [DEV] update new URI and treeview 2018-10-09 23:03:07 +02:00
dbe995abd8 [DEV] update for build URI 2018-09-29 21:58:25 +02:00
532b64a1f0 [DEV] integrate the new interface of URI and file 2018-09-24 23:26:07 +02:00
63ac2d7e07 [DEBUG] some big correction on the treeview... 2018-08-29 21:15:05 +02:00
6454bf59c4 [DEV] reduce size of display 2018-08-27 22:56:19 +02:00
f522c759d6 [DEV] remove log 2018-08-24 21:54:22 +02:00
6ea7014244 [DEV] tree view start to be funny ==> now I can thing to to a browser 2018-08-21 23:29:23 +02:00
0d0cb02b85 [DEV] add subElement 2018-08-20 22:25:50 +02:00
0b2e9d4129 [DEV] add treeView fist element Draw 2018-08-20 22:46:06 +02:00
ba31625447 [DEV] add sample treeview 2018-08-19 22:53:47 +02:00
84769bc26e [DEV] correct the scrolling and remove display of hiden element in the list 2018-08-18 08:49:29 +02:00
dd373e1d2d [DEV] check backgroud exist to apply an action of draw 2018-08-18 08:48:38 +02:00
4dee6004c3 [DEV] remove get title in the list ==> never used 2018-08-18 08:47:49 +02:00
3da1b84016 [DEV] remove deprecated function in list 2018-08-18 08:46:57 +02:00
44130c4cd7 [DEV] set fill in X and Y 2018-08-18 08:46:13 +02:00
e0bcf4f84c [DEV] force le X max scroll to 1 2018-08-18 08:44:02 +02:00
5d53bed86b [DEV] list start to be correct 2018-08-17 21:52:33 +02:00
7bab80da4f [DEV] start chage the API of the ListView to be ready to do a treeView 2018-08-16 22:08:49 +02:00
7e9d2e5f74 [DEV] update etk null 2018-06-19 22:13:48 +02:00
678fe13631 [DEV] update typo toUpper toLower 2018-04-05 21:34:07 +02:00
07e00cc906 [DEBUG] remove filter in the Entry due to the etk::regex capabilities (add regression in functionnality) 2017-11-23 23:23:12 +01:00
7eb68dfa72 [DEBUG] build back tools & sample 2017-11-07 10:19:06 +01:00
dd8daa7e3d [DEV] update to the new ETK allocator wrapper 2017-10-21 19:05:21 +02:00
b8a2210d0d [DEV] rename Image.cpp in TextureFile.cpp and better image widget 2017-10-09 23:49:32 +02:00
50f0f350ed [DEV] try correct image compositing 2017-10-09 10:11:39 +02:00
d2ce3d279c [DEBUG] correct image sizing 2017-10-03 10:24:00 +02:00
94e69dbdec [DEBUG] add missing stream header 2017-09-26 15:49:27 +02:00
7958673b8d [DEBUG] continue removing STL 2017-09-17 15:23:44 +02:00
4885d7c685 [DEV/DEBUG] No stl start to work (add manual type declaration (NO RTTI)) 2017-09-17 00:12:49 +02:00
b66827c6de [DEV] continue removing STL 2017-09-14 00:59:21 +02:00
4aada212ac [DEV] remove STL 2017-09-07 23:38:26 +02:00
5d31353f69 [DEBUG] correct build 2017-08-30 22:35:58 +02:00
6493e83dbe [DEV] continue removing stl 2017-08-28 00:05:43 +02:00
c76ce3b339 [DEBUG] update new API of Gale left-right shift ... 2017-08-10 21:02:25 +02:00
3ea06311df [DEBUG] correct run on MAcOs 2017-08-04 22:15:15 +02:00
faacdc3b0e [DEBUG] wrong #endif 2017-06-28 23:10:58 +02:00
e789c16872 [DEV] update triangle draw 2017-06-28 21:56:26 +02:00
9f4250cbdc [DEV] Add capability to use FBO (Frame Buffer Object) 2017-06-28 08:29:17 +02:00
bd0c899654 [DEV] add an api to set texture in compsiting::Image ==> need to rework this API 2017-06-25 15:01:32 +02:00
eac0a5828c [DEV] faster push of texture 2017-06-18 14:01:02 +02:00
d9c11ad667 [DEV] update basic form axis 2017-06-01 22:24:17 +02:00
48efe503a7 [DEV] AABB draw lines 2017-05-22 23:34:05 +00:00
1ac5daa456 [DEV] add some cone, sphere, capsule and cylinder at the 3d object element 2017-05-22 21:36:58 +02:00
dbe62ed3d5 [DEBUG] compile without linear lib 2017-05-17 23:11:13 +00:00
307d620d45 [DEV] update new API etk 2017-05-16 21:06:21 +02:00
9020e4c188 [DEV] add log info in release 2017-05-05 22:22:30 +02:00
0a12e94847 [DEV] add support of scolling selection on X and Y and not a single value 2017-04-28 21:33:51 +02:00
254f2d0137 [DEV] add suport oh hidding pasword in entry 2017-04-28 21:33:10 +02:00
225633ffeb [DEV] set ewol::Widget::markToRedraw() in public 2017-04-27 22:31:57 +02:00
0275a524b2 [DEBUG] try a better bug management of no font 2017-04-25 23:36:08 +02:00
0b0cbfc30d [DEV] Remove API of the the annimation (bad designed) 2017-04-18 22:35:46 +02:00
d552f2baa2 [DEV] add reset scroll origin 2017-04-17 22:23:17 +02:00
fea01d57c3 [DEV/DEBUG] move basic images & add ewol-data & update property menu & debug display error of images 2017-03-07 22:06:36 +01:00
f9de81b2fb [DEBUG] add init of etranslate to remove error 2017-03-06 22:43:08 +01:00
e61234d586 [DEBUG/DEV] correct the loading of the composer and add the spacer in menu 2017-02-21 23:41:52 +01:00
1a930f5886 [DEV] add menu loading with xml data 2017-02-07 21:28:54 +01:00
3acf0bd148 [DEV] better integration of the file chooser 2017-02-03 22:26:32 +01:00
9c8a3513a6 [DEBUG] opengl es 2 on PC not work identicaly as embended board 2017-01-30 23:32:10 +01:00
487d265b66 [DEBUG] remove openGL call not existing in openGL-ES2 2017-01-18 22:02:36 +01:00
111b3bf587 Change licence APACHE-2 to MPL-2 ==> force source redistribution and permit static link 2017-01-05 21:28:23 +01:00
6e7af3cbb4 [DEV] not set the image in compositing if it does not change 2017-01-03 21:06:50 +01:00
54f4040a8d [DEBUG] many correction on image display ==> need to work again on it 2016-12-20 21:45:47 +01:00
c3a5f9ae64 [DEV] better integration of shortcut 2016-11-10 21:04:26 +01:00
00a7134a89 [DEV] continue integration of Web interface 2016-11-09 21:48:06 +01:00
6b859a45a1 [DEBUG] correct the VBO FULL implement 2016-11-08 22:17:47 +01:00
95bff828d8 [DEBUG] correct seg fault 2016-11-06 21:19:08 +01:00
2ad64a73fb [DEV] update to Web build mode (not finish) 2016-11-04 22:54:25 +01:00
c7f95a96c7 [DOC] add a framework overview 2016-10-27 23:45:30 +02:00
fc5c63d53d [DEV] update dev tag version 2016-10-25 21:56:55 +02:00
284 changed files with 7340 additions and 4104 deletions

373
LICENSE Normal file
View File

@ -0,0 +1,373 @@
Mozilla Public License Version 2.0
==================================
1. Definitions
--------------
1.1. "Contributor"
means each individual or legal entity that creates, contributes to
the creation of, or owns Covered Software.
1.2. "Contributor Version"
means the combination of the Contributions of others (if any) used
by a Contributor and that particular Contributor's Contribution.
1.3. "Contribution"
means Covered Software of a particular Contributor.
1.4. "Covered Software"
means Source Code Form to which the initial Contributor has attached
the notice in Exhibit A, the Executable Form of such Source Code
Form, and Modifications of such Source Code Form, in each case
including portions thereof.
1.5. "Incompatible With Secondary Licenses"
means
(a) that the initial Contributor has attached the notice described
in Exhibit B to the Covered Software; or
(b) that the Covered Software was made available under the terms of
version 1.1 or earlier of the License, but not also under the
terms of a Secondary License.
1.6. "Executable Form"
means any form of the work other than Source Code Form.
1.7. "Larger Work"
means a work that combines Covered Software with other material, in
a separate file or files, that is not Covered Software.
1.8. "License"
means this document.
1.9. "Licensable"
means having the right to grant, to the maximum extent possible,
whether at the time of the initial grant or subsequently, any and
all of the rights conveyed by this License.
1.10. "Modifications"
means any of the following:
(a) any file in Source Code Form that results from an addition to,
deletion from, or modification of the contents of Covered
Software; or
(b) any new file in Source Code Form that contains any Covered
Software.
1.11. "Patent Claims" of a Contributor
means any patent claim(s), including without limitation, method,
process, and apparatus claims, in any patent Licensable by such
Contributor that would be infringed, but for the grant of the
License, by the making, using, selling, offering for sale, having
made, import, or transfer of either its Contributions or its
Contributor Version.
1.12. "Secondary License"
means either the GNU General Public License, Version 2.0, the GNU
Lesser General Public License, Version 2.1, the GNU Affero General
Public License, Version 3.0, or any later versions of those
licenses.
1.13. "Source Code Form"
means the form of the work preferred for making modifications.
1.14. "You" (or "Your")
means an individual or a legal entity exercising rights under this
License. For legal entities, "You" includes any entity that
controls, is controlled by, or is under common control with You. For
purposes of this definition, "control" means (a) the power, direct
or indirect, to cause the direction or management of such entity,
whether by contract or otherwise, or (b) ownership of more than
fifty percent (50%) of the outstanding shares or beneficial
ownership of such entity.
2. License Grants and Conditions
--------------------------------
2.1. Grants
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license:
(a) under intellectual property rights (other than patent or trademark)
Licensable by such Contributor to use, reproduce, make available,
modify, display, perform, distribute, and otherwise exploit its
Contributions, either on an unmodified basis, with Modifications, or
as part of a Larger Work; and
(b) under Patent Claims of such Contributor to make, use, sell, offer
for sale, have made, import, and otherwise transfer either its
Contributions or its Contributor Version.
2.2. Effective Date
The licenses granted in Section 2.1 with respect to any Contribution
become effective for each Contribution on the date the Contributor first
distributes such Contribution.
2.3. Limitations on Grant Scope
The licenses granted in this Section 2 are the only rights granted under
this License. No additional rights or licenses will be implied from the
distribution or licensing of Covered Software under this License.
Notwithstanding Section 2.1(b) above, no patent license is granted by a
Contributor:
(a) for any code that a Contributor has removed from Covered Software;
or
(b) for infringements caused by: (i) Your and any other third party's
modifications of Covered Software, or (ii) the combination of its
Contributions with other software (except as part of its Contributor
Version); or
(c) under Patent Claims infringed by Covered Software in the absence of
its Contributions.
This License does not grant any rights in the trademarks, service marks,
or logos of any Contributor (except as may be necessary to comply with
the notice requirements in Section 3.4).
2.4. Subsequent Licenses
No Contributor makes additional grants as a result of Your choice to
distribute the Covered Software under a subsequent version of this
License (see Section 10.2) or under the terms of a Secondary License (if
permitted under the terms of Section 3.3).
2.5. Representation
Each Contributor represents that the Contributor believes its
Contributions are its original creation(s) or it has sufficient rights
to grant the rights to its Contributions conveyed by this License.
2.6. Fair Use
This License is not intended to limit any rights You have under
applicable copyright doctrines of fair use, fair dealing, or other
equivalents.
2.7. Conditions
Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
in Section 2.1.
3. Responsibilities
-------------------
3.1. Distribution of Source Form
All distribution of Covered Software in Source Code Form, including any
Modifications that You create or to which You contribute, must be under
the terms of this License. You must inform recipients that the Source
Code Form of the Covered Software is governed by the terms of this
License, and how they can obtain a copy of this License. You may not
attempt to alter or restrict the recipients' rights in the Source Code
Form.
3.2. Distribution of Executable Form
If You distribute Covered Software in Executable Form then:
(a) such Covered Software must also be made available in Source Code
Form, as described in Section 3.1, and You must inform recipients of
the Executable Form how they can obtain a copy of such Source Code
Form by reasonable means in a timely manner, at a charge no more
than the cost of distribution to the recipient; and
(b) You may distribute such Executable Form under the terms of this
License, or sublicense it under different terms, provided that the
license for the Executable Form does not attempt to limit or alter
the recipients' rights in the Source Code Form under this License.
3.3. Distribution of a Larger Work
You may create and distribute a Larger Work under terms of Your choice,
provided that You also comply with the requirements of this License for
the Covered Software. If the Larger Work is a combination of Covered
Software with a work governed by one or more Secondary Licenses, and the
Covered Software is not Incompatible With Secondary Licenses, this
License permits You to additionally distribute such Covered Software
under the terms of such Secondary License(s), so that the recipient of
the Larger Work may, at their option, further distribute the Covered
Software under the terms of either this License or such Secondary
License(s).
3.4. Notices
You may not remove or alter the substance of any license notices
(including copyright notices, patent notices, disclaimers of warranty,
or limitations of liability) contained within the Source Code Form of
the Covered Software, except that You may alter any license notices to
the extent required to remedy known factual inaccuracies.
3.5. Application of Additional Terms
You may choose to offer, and to charge a fee for, warranty, support,
indemnity or liability obligations to one or more recipients of Covered
Software. However, You may do so only on Your own behalf, and not on
behalf of any Contributor. You must make it absolutely clear that any
such warranty, support, indemnity, or liability obligation is offered by
You alone, and You hereby agree to indemnify every Contributor for any
liability incurred by such Contributor as a result of warranty, support,
indemnity or liability terms You offer. You may include additional
disclaimers of warranty and limitations of liability specific to any
jurisdiction.
4. Inability to Comply Due to Statute or Regulation
---------------------------------------------------
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Software due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description must
be placed in a text file included with all distributions of the Covered
Software under this License. Except to the extent prohibited by statute
or regulation, such description must be sufficiently detailed for a
recipient of ordinary skill to be able to understand it.
5. Termination
--------------
5.1. The rights granted under this License will terminate automatically
if You fail to comply with any of its terms. However, if You become
compliant, then the rights granted under this License from a particular
Contributor are reinstated (a) provisionally, unless and until such
Contributor explicitly and finally terminates Your grants, and (b) on an
ongoing basis, if such Contributor fails to notify You of the
non-compliance by some reasonable means prior to 60 days after You have
come back into compliance. Moreover, Your grants from a particular
Contributor are reinstated on an ongoing basis if such Contributor
notifies You of the non-compliance by some reasonable means, this is the
first time You have received notice of non-compliance with this License
from such Contributor, and You become compliant prior to 30 days after
Your receipt of the notice.
5.2. If You initiate litigation against any entity by asserting a patent
infringement claim (excluding declaratory judgment actions,
counter-claims, and cross-claims) alleging that a Contributor Version
directly or indirectly infringes any patent, then the rights granted to
You by any and all Contributors for the Covered Software under Section
2.1 of this License shall terminate.
5.3. In the event of termination under Sections 5.1 or 5.2 above, all
end user license agreements (excluding distributors and resellers) which
have been validly granted by You or Your distributors under this License
prior to termination shall survive termination.
************************************************************************
* *
* 6. Disclaimer of Warranty *
* ------------------------- *
* *
* Covered Software is provided under this License on an "as is" *
* basis, without warranty of any kind, either expressed, implied, or *
* statutory, including, without limitation, warranties that the *
* Covered Software is free of defects, merchantable, fit for a *
* particular purpose or non-infringing. The entire risk as to the *
* quality and performance of the Covered Software is with You. *
* Should any Covered Software prove defective in any respect, You *
* (not any Contributor) assume the cost of any necessary servicing, *
* repair, or correction. This disclaimer of warranty constitutes an *
* essential part of this License. No use of any Covered Software is *
* authorized under this License except under this disclaimer. *
* *
************************************************************************
************************************************************************
* *
* 7. Limitation of Liability *
* -------------------------- *
* *
* Under no circumstances and under no legal theory, whether tort *
* (including negligence), contract, or otherwise, shall any *
* Contributor, or anyone who distributes Covered Software as *
* permitted above, be liable to You for any direct, indirect, *
* special, incidental, or consequential damages of any character *
* including, without limitation, damages for lost profits, loss of *
* goodwill, work stoppage, computer failure or malfunction, or any *
* and all other commercial damages or losses, even if such party *
* shall have been informed of the possibility of such damages. This *
* limitation of liability shall not apply to liability for death or *
* personal injury resulting from such party's negligence to the *
* extent applicable law prohibits such limitation. Some *
* jurisdictions do not allow the exclusion or limitation of *
* incidental or consequential damages, so this exclusion and *
* limitation may not apply to You. *
* *
************************************************************************
8. Litigation
-------------
Any litigation relating to this License may be brought only in the
courts of a jurisdiction where the defendant maintains its principal
place of business and such litigation shall be governed by laws of that
jurisdiction, without reference to its conflict-of-law provisions.
Nothing in this Section shall prevent a party's ability to bring
cross-claims or counter-claims.
9. Miscellaneous
----------------
This License represents the complete agreement concerning the subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. Any law or regulation which provides
that the language of a contract shall be construed against the drafter
shall not be used to construe this License against a Contributor.
10. Versions of the License
---------------------------
10.1. New Versions
Mozilla Foundation is the license steward. Except as provided in Section
10.3, no one other than the license steward has the right to modify or
publish new versions of this License. Each version will be given a
distinguishing version number.
10.2. Effect of New Versions
You may distribute the Covered Software under the terms of the version
of the License under which You originally received the Covered Software,
or under the terms of any subsequent version published by the license
steward.
10.3. Modified Versions
If you create software not governed by this License, and you want to
create a new license for such software, you may create and use a
modified version of this License if you rename the license and remove
any references to the name of the license steward (except to note that
such modified license differs from this License).
10.4. Distributing Source Code Form that is Incompatible With Secondary
Licenses
If You choose to distribute Source Code Form that is Incompatible With
Secondary Licenses under the terms of this version of the License, the
notice described in Exhibit B of this License must be attached.
Exhibit A - Source Code Form License Notice
-------------------------------------------
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at http://mozilla.org/MPL/2.0/.
If it is not possible or desirable to put the notice in a particular
file, then You may include the notice in a location (such as a LICENSE
file in a relevant directory) where a recipient would be likely to look
for such a notice.
You may add additional accurate notices of copyright ownership.
Exhibit B - "Incompatible With Secondary Licenses" Notice
---------------------------------------------------------
This Source Code Form is "Incompatible With Secondary Licenses", as
defined by the Mozilla Public License, v. 2.0.

View File

@ -103,16 +103,22 @@ Arch-linux:
# connect adb: (and you can do a "android/sdk/platform-tools/adb shell" to enable computer key on device)
pacman -S android-udev
License (APACHE v2.0)
=====================
Simple framework overview
=========================
![overview](overview.svg)
License (MPL v2.0)
==================
Copyright ewol Edouard DUPIN
Licensed under the Apache License, Version 2.0 (the "License");
Licensed under the Mozilla Public 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
https://www.mozilla.org/MPL/2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,

View File

@ -0,0 +1,50 @@
<popup>
<sizer mode="vert" lock="true" fill="true" expand="true">
<sizer mode="hori">
<checkbox name="[{ID}]file-shooser:show-hiden-file">
<label>_T{ShowHiddenFiles}</label>
</checkbox>
<spacer expand="true,false"/>
<button name="[{ID}]file-shooser:button-validate">
<sizer mode="hori">
<image src="THEME_GUI:///Load.svg?lib=ewol" fill="true" size="7,7mm"/>
<label name="[{ID}]file-shooser:validate-label">_T{Validate}</label>
</sizer>
</button>
<button name="[{ID}]file-shooser:button-cancel">
<sizer mode="hori">
<image src="THEME_GUI:///Remove.svg?lib=ewol" fill="true" size="7,7mm"/>
<label name="[{ID}]file-shooser:cancel-label">_T{Cancel}</label>
</sizer>
</button>
</sizer>
<sizer mode="hori">
<spacer min-size="2,2mm"/>
<ListFileSystem name="[{ID}]file-shooser:list-folder"
min-size="20,0%"
expand="false,true"
show-hidden="false"
show-file="false"
show-folder="true"
show-temporary="false"/>
<spacer min-size="2,2mm"/>
<ListFileSystem name="[{ID}]file-shooser:list-files"
expand="true,true"
show-hidden="false"
show-file="true"
show-folder="false"
show-temporary="false"/>
<spacer min-size="2,2mm"/>
</sizer>
<sizer mode="hori">
<image name="[{ID}]file-shooser:img-file" src="THEME_GUI:///File.svg?lib=ewol" expand="false" size="8,8mm"/>
<entry name="[{ID}]file-shooser:entry-file" expand="true,false" fill="true,false"/>
</sizer>
<sizer mode="hori">
<image name="[{ID}]file-shooser:img-folder" src="THEME_GUI:///Folder.svg?lib=ewol" expand="false" size="8,8mm"/>
<entry name="[{ID}]file-shooser:entry-folder" expand="true,false" fill="true,false"/>
<image name="[{ID}]file-shooser:img-home" src="THEME_GUI:///Home.svg?lib=ewol" expand="false" size="8,8mm"/>
</sizer>
<label name="[{ID}]file-shooser:title-label">_T{Title}</label>
</sizer>
</popup>

View File

@ -30,7 +30,7 @@ void main(void) {
// Smooth
gl_FragColor = vec4(f_color[0], f_color[1], f_color[2], f_color[3]*alpha);
//gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
// Outline
/*
float mu = smoothstep(outline_center-width, outline_center+width, dist);

View File

@ -1,7 +1,7 @@
#ifdef GL_ES
#extension GL_OES_standard_derivatives : enable
precision mediump float;
precision mediump int;
#extension GL_OES_standard_derivatives : enable
#endif
// Input :

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2,0,0,1.2,-579.7336,-567.9832)">
<path d="m 509.778,477.486 c -12.426,0 -22.5,10.072 -22.5,22.5 0,12.426 10.074,22.5 22.5,22.5 12.428,0 22.5,-10.074 22.5,-22.5 0,-12.427 -10.072,-22.5 -22.5,-22.5 z m 11.5,25 c 0,0.549 -0.451,1 -1,1 h -6 c -0.551,0 -1.001,0.449 -1.001,1 v 6 c 0,0.549 -0.45,1 -1,1 h -5 c -0.55,0 -1,-0.451 -1,-1 v -6 c 0,-0.551 -0.45,-1 -1,-1 h -6 c -0.55,0 -1,-0.451 -1,-1 v -5 c 0,-0.551 0.45,-1 1,-1 h 6 c 0.55,0 1,-0.451 1,-1 v -6 c 0,-0.551 0.45,-1 1,-1 h 5 c 0.55,0 1,0.449 1,1 v 6 c 0,0.549 0.45,1 1.001,1 h 6 c 0.549,0 1,0.449 1,1 v 5 z"
style="fill:#333333;fill-rule:evenodd" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 735 B

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2,0,0,1.2,-651.9616,-494.5316)">
<path d="m 562.663,451.271 -1.24,-3.193 h -0.188 c -0.463,0.631 -0.926,1.174 -1.389,1.629 -0.463,0.457 -0.967,0.832 -1.514,1.125 -0.547,0.295 -1.16,0.512 -1.838,0.65 -0.682,0.143 -1.469,0.211 -2.365,0.211 -0.953,0 -1.836,-0.148 -2.648,-0.455 -0.813,-0.299 -1.516,-0.756 -2.111,-1.361 -0.596,-0.611 -1.061,-1.381 -1.396,-2.314 -0.336,-0.932 -0.506,-2.035 -0.506,-3.311 0,-2.494 0.799,-4.332 2.396,-5.518 1.598,-1.184 3.986,-1.838 7.168,-1.965 l 3.74,-0.125 v -1.766 c 0,-0.967 -0.279,-1.682 -0.842,-2.145 -0.559,-0.461 -1.344,-0.693 -2.354,-0.693 -1.01,0 -1.994,0.146 -2.953,0.441 -0.959,0.295 -1.924,0.688 -2.891,1.178 l -2.08,-4.246 c 1.178,-0.658 2.48,-1.177 3.908,-1.554 1.43,-0.379 2.93,-0.568 4.498,-0.568 2.93,0 5.174,0.688 6.736,2.06 1.563,1.373 2.344,3.461 2.344,6.264 v 15.658 h -4.477 v -0.002 z m -1.891,-10.887 -2.123,0.084 c -0.854,0.027 -1.578,0.141 -2.164,0.336 -0.59,0.195 -1.063,0.457 -1.42,0.787 -0.357,0.33 -0.615,0.721 -0.777,1.178 -0.16,0.455 -0.24,0.963 -0.24,1.523 0,0.98 0.238,1.678 0.713,2.092 0.477,0.412 1.102,0.619 1.871,0.619 0.59,0 1.135,-0.102 1.641,-0.305 0.504,-0.203 0.941,-0.504 1.313,-0.902 0.373,-0.4 0.662,-0.891 0.873,-1.471 0.211,-0.582 0.314,-1.252 0.314,-2.01 v -1.931 l -10e-4,0 z"
style="fill:#333333" />
<path d="m 568.976,440.552 v -4.244 h 9.549 v 4.244 h -9.549 z"
style="fill:#333333" />
<path d="m 592.468,451.241 h -17.279 v -3.785 l 9.607,-14.816 h -8.953 v -4.896 h 16.225 v 4.159 l -9.289,14.441 h 9.689 v 4.897 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.199923,0,0,1.199923,-436.75556,-134.85476)">
<path d="m 374.192,161.556 c -1.619,0 -3.152,-0.607 -4.269,-1.707 -1.237,-1.221 -1.877,-2.961 -1.755,-4.776 l 0.501,-7.477 c 0.198,-2.952 1.959,-6.933 4.009,-9.065 l 20.588,-21.415 c 0.854,-0.89 2.268,-0.916 3.154,-0.063 0.886,0.853 0.916,2.266 0.063,3.154 l -20.589,21.416 c -1.347,1.401 -2.644,4.331 -2.772,6.271 l -0.502,7.477 c -0.035,0.526 0.119,0.988 0.436,1.3 0.317,0.312 0.776,0.465 1.306,0.417 l 6.095,-0.496 c 1.936,-0.158 4.842,-1.497 6.219,-2.865 l 21.382,-21.251 c 0.413,-0.411 0.64,-0.957 0.637,-1.537 -0.005,-0.58 -0.236,-1.123 -0.655,-1.529 l -4.043,-3.92 c -0.874,-0.847 -2.334,-0.832 -3.189,0.037 l -16.287,16.555 c -0.512,0.521 -0.809,1.177 -0.794,1.759 0.007,0.303 0.097,0.537 0.268,0.693 0.524,0.485 1.872,0.332 2.826,-0.589 l 12.685,-12.247 c 0.886,-0.856 2.297,-0.831 3.154,0.056 0.855,0.886 0.83,2.298 -0.057,3.153 l -12.684,12.248 c -2.605,2.517 -6.623,2.811 -8.952,0.656 -1.06,-0.979 -1.664,-2.352 -1.7,-3.865 -0.043,-1.788 0.713,-3.608 2.072,-4.992 l 16.289,-16.556 c 2.582,-2.623 6.83,-2.675 9.475,-0.111 l 4.043,3.92 c 1.285,1.246 2,2.917 2.01,4.705 0.012,1.788 -0.682,3.467 -1.952,4.729 l -21.382,21.25 c -2.098,2.086 -6.053,3.907 -9.002,4.148 l -6.094,0.496 c -0.18,0.013 -0.358,0.021 -0.534,0.021 l 0,0 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,13 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path d="M57.268,52.064,55.78,48.233h-0.2256c-0.5556,0.7572-1.1112,1.4088-1.6668,1.9548-0.5556,0.5484-1.1604,0.9984-1.8168,1.35-0.6564,0.354-1.392,0.6144-2.2056,0.78-0.8184,0.1716-1.7628,0.2532-2.838,0.2532-1.1436,0-2.2032-0.1776-3.1776-0.546-0.9756-0.3588-1.8192-0.9072-2.5332-1.6332-0.7152-0.7332-1.2732-1.6572-1.6752-2.7768-0.4032-1.1184-0.6072-2.442-0.6072-3.9732,0-2.9928,0.9588-5.1984,2.8752-6.6216,1.9176-1.4208,4.7832-2.2056,8.6016-2.358l4.488-0.15v-2.1192c0-1.1604-0.3348-2.0184-1.0104-2.574-0.6708-0.5532-1.6128-0.8316-2.8248-0.8316s-2.3928,0.1752-3.5436,0.5292-2.3088,0.8256-3.4692,1.4136l-2.496-5.0952c1.4136-0.7896,2.976-1.4124,4.6896-1.8648,1.716-0.4548,3.516-0.6816,5.3976-0.6816,3.516,0,6.2088,0.8256,8.0832,2.472,1.8756,1.6476,2.8128,4.1532,2.8128,7.5168v18.79h-5.3724v-0.0024zm-0.781-9.233-2.548,0.101c-1.0248,0.0324-1.8936,0.1692-2.5968,0.4032-0.708,0.234-1.2756,0.5484-1.704,0.9444s-0.738,0.8652-0.9324,1.4136c-0.192,0.546-0.288,1.1556-0.288,1.8276,0,1.176,0.2856,2.0136,0.8556,2.5104,0.5724,0.4944,1.3224,0.7428,2.2452,0.7428,0.708,0,1.362-0.1224,1.9692-0.366,0.6048-0.2436,1.1292-0.6048,1.5756-1.0824,0.4476-0.48,0.7944-1.0692,1.0476-1.7652,0.252-0.699,0.376-1.503,0.376-2.413v-2.317h-0.0012z" fill="#333"/>
<path d="M26,38,14,38,9,54,3,54,17,9h6l8,25h-6l-5-18-5,18h16l6,20h-6z" fill="#333"/>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
width="64"
height="64"
viewBox="0 0 64 64"
enable-background="new 0 0 24 24"
xml:space="preserve"
id="svg8"
sodipodi:docname="ChevronLeft.svg"
inkscape:version="0.92.2 2405546, 2018-03-11"><metadata
id="metadata14"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs
id="defs12" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1038"
id="namedview10"
showgrid="true"
showguides="true"
inkscape:zoom="27.812867"
inkscape:cx="35.880854"
inkscape:cy="43.550446"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="1"
inkscape:current-layer="svg8"><inkscape:grid
type="xygrid"
id="grid821" /></sodipodi:namedview>
<g
id="Bounding_Boxes"
transform="translate(0,40)">
<path
d="M 0,0 H 24 V 24 H 0 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:none" />
</g>
<g
id="Outline_1_"
transform="matrix(4.1679329,0,0,4.1679329,-16.912008,-18.015195)">
<path
d="M 15.41,7.41 14,6 8,12 14,18 15.41,16.59 10.83,12 Z"
id="path5"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
width="64"
height="64"
viewBox="0 0 64 64"
enable-background="new 0 0 24 24"
xml:space="preserve"
id="svg8"
sodipodi:docname="ChevronLess.svg"
inkscape:version="0.92.2 2405546, 2018-03-11"><metadata
id="metadata14"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs12" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1038"
id="namedview10"
showgrid="true"
showguides="true"
inkscape:zoom="13.906433"
inkscape:cx="45.005732"
inkscape:cy="37.911807"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="1"
inkscape:current-layer="svg8"><inkscape:grid
type="xygrid"
id="grid821" /></sodipodi:namedview>
<g
id="Bounding_Boxes"
transform="translate(0,40)">
<path
d="M 0,0 H 24 V 24 H 0 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:none" />
</g>
<g
id="Outline_1_"
transform="matrix(0,4.1679329,-4.1679329,0,81.888841,-16.785655)">
<path
d="M 15.41,7.41 14,6 8,12 14,18 15.41,16.59 10.83,12 Z"
id="path5"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
width="64"
height="64"
viewBox="0 0 64 64"
enable-background="new 0 0 24 24"
xml:space="preserve"
id="svg8"
sodipodi:docname="ChevronMore.svg"
inkscape:version="0.92.2 2405546, 2018-03-11"><metadata
id="metadata14"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs12" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1038"
id="namedview10"
showgrid="true"
showguides="true"
inkscape:zoom="13.906433"
inkscape:cx="45.005732"
inkscape:cy="37.911807"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="1"
inkscape:current-layer="svg8"><inkscape:grid
type="xygrid"
id="grid821" /></sodipodi:namedview>
<g
id="Bounding_Boxes"
transform="translate(0,40)">
<path
d="M 0,0 H 24 V 24 H 0 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:none" />
</g>
<g
id="Outline_1_"
transform="matrix(0,-4.1679329,-4.1679329,0,81.888841,80.785654)">
<path
d="M 15.41,7.41 14,6 8,12 14,18 15.41,16.59 10.83,12 Z"
id="path5"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,66 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
x="0px"
y="0px"
width="64"
height="64"
viewBox="0 0 64 64"
enable-background="new 0 0 24 24"
xml:space="preserve"
id="svg8"
sodipodi:docname="ChevronRight.svg"
inkscape:version="0.92.2 2405546, 2018-03-11"><metadata
id="metadata14"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs12" /><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1918"
inkscape:window-height="1038"
id="namedview10"
showgrid="true"
showguides="true"
inkscape:zoom="27.812867"
inkscape:cx="35.880854"
inkscape:cy="43.550446"
inkscape:window-x="0"
inkscape:window-y="20"
inkscape:window-maximized="1"
inkscape:current-layer="svg8"><inkscape:grid
type="xygrid"
id="grid821" /></sodipodi:namedview>
<g
id="Bounding_Boxes"
transform="translate(0,40)">
<path
d="M 0,0 H 24 V 24 H 0 Z"
id="path2"
inkscape:connector-curvature="0"
style="fill:none" />
</g>
<g
id="Outline_1_"
transform="matrix(-4.1679329,0,0,4.1679329,80.659301,-18.015195)">
<path
d="M 15.41,7.41 14,6 8,12 14,18 15.41,16.59 10.83,12 Z"
id="path5"
inkscape:connector-curvature="0" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2,0,0,1.2,-579.7336,-495.3904)">
<path d="m 514.172,439.484 4.041,-4.041 c 0.26,-0.26 0.404,-0.605 0.404,-0.975 0,-0.371 -0.143,-0.717 -0.404,-0.977 l -2.441,-2.443 c -0.521,-0.521 -1.434,-0.52 -1.949,0 l -4.044,4.043 -4.043,-4.043 c -0.52,-0.52 -1.429,-0.52 -1.949,0 l -2.443,2.443 c -0.26,0.26 -0.402,0.605 -0.402,0.975 0,0.37 0.143,0.717 0.402,0.977 l 4.043,4.041 -4.041,4.041 c -0.261,0.26 -0.404,0.605 -0.404,0.975 0,0.371 0.143,0.717 0.402,0.979 l 2.444,2.443 c 0.521,0.52 1.429,0.52 1.95,-0.002 l 4.041,-4.041 4.042,4.041 c 0.26,0.26 0.605,0.404 0.975,0.404 0.37,0 0.715,-0.145 0.975,-0.404 l 2.441,-2.439 c 0.262,-0.262 0.406,-0.609 0.406,-0.98 0,-0.369 -0.145,-0.717 -0.404,-0.973 l -4.042,-4.044 z"
style="fill:#333333" />
<path d="m 509.778,425.027 c 7.976,0 14.464,6.488 14.464,14.465 0,7.975 -6.488,14.463 -14.464,14.463 -7.975,0 -14.464,-6.488 -14.464,-14.463 0,-7.976 6.489,-14.465 14.464,-14.465 m 0,-8.035 c -12.426,0 -22.5,10.073 -22.5,22.5 0,12.426 10.074,22.5 22.5,22.5 12.427,0 22.5,-10.074 22.5,-22.5 -10e-4,-12.428 -10.073,-22.5 -22.5,-22.5 l 0,0 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.1999733,0,0,1.1999733,-436.77498,-206.48907)">
<path d="m 412.51,211.853 c 0.354,0.375 0.645,0.26 0.645,-0.256 v -24.754 c 0,-0.516 -0.321,-0.664 -0.714,-0.329 l -12.536,10.671 c -0.394,0.334 -0.425,0.914 -0.07,1.289 l 12.675,13.379 z"
style="fill:#333333" />
<path d="m 410.761,184.249 c 0.394,-0.334 0.292,-0.607 -0.223,-0.607 h -40.092 c -0.515,0 -0.614,0.271 -0.219,0.602 l 19.701,16.524 c 0.396,0.331 1.041,0.329 1.434,-0.006 l 19.399,-16.513 z"
style="fill:#333333" />
<path d="m 368.154,211.597 c 0,0.516 0.29,0.631 0.645,0.256 l 12.625,-13.326 c 0.354,-0.375 0.321,-0.951 -0.074,-1.283 l -12.477,-10.465 c -0.396,-0.332 -0.719,-0.181 -0.719,0.335 v 24.483 z"
style="fill:#333333" />
<path d="m 392.28,203.674 c -0.393,0.335 -0.979,0.759 -1.302,0.943 0,0 0,0 -0.324,0 -0.321,0 -0.321,0 -0.321,0 -0.32,-0.181 -0.905,-0.6 -1.301,-0.931 l -4.086,-3.428 c -0.396,-0.332 -1.009,-0.297 -1.363,0.078 l -12.847,13.561 c -0.354,0.375 -0.223,0.682 0.293,0.682 h 39.25 c 0.516,0 0.647,-0.307 0.293,-0.682 l -12.883,-13.599 c -0.354,-0.374 -0.966,-0.407 -1.358,-0.073 l -4.051,3.449 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,14 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="matrix(0,1.2,-1.2,0,631.9838,-722.6014)">
<polygon points="629.89,509.46,607.39,509.46,607.39,490.51,629.89,490.51,629.89,481.04,652.39,499.94,629.89,518.93" fill="#333"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 638 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2136037,0,0,1.2136037,-732.43441,-64.413778)">
<path d="m 617.617,100.868 c -0.703,0 -1.336,-0.279 -1.781,-0.785 -0.496,-0.56 -0.707,-1.346 -0.6,-2.215 l 1.354,-10.822 c 0.074,-0.585 -0.262,-1.62 -0.666,-2.049 l -7.453,-7.961 c -0.742,-0.792 -1.004,-1.754 -0.717,-2.637 0.287,-0.883 1.063,-1.508 2.129,-1.712 l 10.709,-2.056 c 0.578,-0.111 1.459,-0.752 1.746,-1.27 l 5.08,-9.213 c 0.199,-0.404 0.988,-1.78 2.469,-1.78 1.557,0 2.383,1.58 2.531,1.897 l 5.02,9.097 c 0.285,0.517 1.168,1.157 1.746,1.269 l 10.709,2.056 c 1.066,0.205 1.842,0.829 2.129,1.712 0.287,0.883 0.025,1.844 -0.717,2.637 l -7.453,7.96 c -0.404,0.43 -0.74,1.465 -0.668,2.051 l 1.352,10.822 c 0.109,0.866 -0.102,1.652 -0.596,2.213 -0.723,0.816 -1.939,1.017 -3.1,0.475 l -9.873,-4.633 c -0.197,-0.092 -0.582,-0.189 -1.08,-0.189 -0.498,0 -0.883,0.098 -1.078,0.188 l -9.873,4.633 c -0.444,0.207 -0.887,0.312 -1.319,0.312 l 0,0 z m 12.27,-8.239 c 0.883,0 1.734,0.172 2.398,0.484 l 9.057,4.249 -1.238,-9.932 c -0.186,-1.498 0.451,-3.457 1.482,-4.557 l 6.84,-7.304 -9.828,-1.891 c -1.48,-0.284 -3.148,-1.495 -3.879,-2.817 l -4.832,-8.764 -4.832,8.763 c -0.73,1.323 -2.396,2.534 -3.879,2.818 l -9.824,1.887 6.838,7.309 c 1.031,1.101 1.668,3.06 1.48,4.558 l -1.242,9.928 9.063,-4.247 c 0.663,-0.312 1.515,-0.484 2.396,-0.484 l 0,0 z"
style="fill:#333369" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.1999726,0,0,1.1999726,-723.8473,-206.71515)">
<path d="m 617.479,220.601 c -0.711,0 -1.352,-0.282 -1.803,-0.794 -0.5,-0.566 -0.715,-1.361 -0.605,-2.24 l 1.369,-10.944 c 0.074,-0.592 -0.266,-1.638 -0.674,-2.073 l -7.539,-8.051 c -0.75,-0.801 -1.016,-1.773 -0.725,-2.667 0.291,-0.893 1.074,-1.524 2.152,-1.731 l 10.832,-2.08 c 0.584,-0.112 1.477,-0.76 1.766,-1.284 l 5.137,-9.317 c 0.201,-0.408 1,-1.799 2.498,-1.799 1.574,0 2.408,1.598 2.561,1.918 l 5.074,9.2 c 0.289,0.523 1.182,1.171 1.766,1.283 l 10.832,2.08 c 1.078,0.207 1.861,0.838 2.152,1.731 0.291,0.893 0.027,1.866 -0.725,2.667 l -7.539,8.05 c -0.408,0.436 -0.748,1.482 -0.674,2.075 l 1.367,10.944 c 0.109,0.876 -0.104,1.671 -0.604,2.238 -0.73,0.826 -1.961,1.028 -3.135,0.48 l -9.984,-4.685 c -0.199,-0.093 -0.588,-0.192 -1.092,-0.192 -0.504,0 -0.895,0.099 -1.092,0.191 l -9.982,4.685 c -0.45,0.209 -0.897,0.315 -1.333,0.315 l 0,0 z m 12.409,-8.331 c 0.893,0 1.752,0.174 2.424,0.489 l 9.16,4.297 -1.252,-10.044 c -0.189,-1.515 0.455,-3.496 1.498,-4.609 l 6.918,-7.387 -9.939,-1.913 c -1.498,-0.288 -3.184,-1.512 -3.922,-2.85 l -4.887,-8.863 -4.887,8.862 c -0.738,1.338 -2.426,2.563 -3.924,2.851 l -9.936,1.908 6.916,7.391 c 1.043,1.113 1.688,3.094 1.498,4.61 l -1.256,10.041 9.164,-4.295 c 0.673,-0.315 1.532,-0.488 2.425,-0.488 l 0,0 z"
style="fill:#333369" />
<path d="m 629.28,189.527 c 0,0 0.244,-0.523 0.607,-0.523 0.363,0 0.627,0.56 0.627,0.56 l 2.816,5.108 c 0.285,0.514 0.988,1.026 1.564,1.137 l 5.955,1.144 c 0.578,0.111 0.721,0.553 0.32,0.981 l -4.146,4.427 c -0.402,0.428 -0.67,1.256 -0.598,1.838 l 0.752,6.02 c 0.074,0.581 -0.303,0.855 -0.834,0.606 l -5.49,-2.577 c -0.533,-0.249 -1.402,-0.249 -1.934,0 l -5.49,2.577 c -0.533,0.249 -0.908,-0.024 -0.836,-0.606 l 0.754,-6.02 c 0.072,-0.582 -0.197,-1.41 -0.598,-1.838 l -4.146,-4.427 c -0.402,-0.429 -0.258,-0.871 0.318,-0.981 l 5.957,-1.144 c 0.576,-0.111 1.279,-0.623 1.564,-1.137 l 2.838,-5.145 z"
style="fill:#333369;fill-rule:evenodd" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.0 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2135952,0,0,1.2135952,-732.42924,-136.47014)">
<path d="m 617.617,160.243 c -0.701,0 -1.334,-0.279 -1.781,-0.785 -0.494,-0.56 -0.707,-1.346 -0.598,-2.215 l 1.354,-10.822 c 0.072,-0.585 -0.264,-1.62 -0.668,-2.049 l -7.453,-7.961 c -0.742,-0.792 -1.004,-1.753 -0.717,-2.637 0.287,-0.883 1.063,-1.507 2.129,-1.712 l 10.709,-2.056 c 0.578,-0.111 1.461,-0.751 1.746,-1.27 l 5.08,-9.213 c 0.199,-0.404 0.99,-1.779 2.469,-1.779 1.557,0 2.383,1.58 2.531,1.896 l 5.02,9.097 c 0.287,0.517 1.168,1.158 1.746,1.269 l 10.709,2.056 c 1.066,0.205 1.842,0.829 2.129,1.712 0.287,0.883 0.027,1.845 -0.717,2.637 l -7.453,7.96 c -0.404,0.431 -0.74,1.465 -0.668,2.051 l 1.354,10.822 c 0.107,0.866 -0.104,1.652 -0.598,2.213 -0.723,0.817 -1.939,1.017 -3.1,0.475 l -9.873,-4.633 c -0.195,-0.092 -0.582,-0.19 -1.08,-0.19 -0.496,0 -0.883,0.098 -1.078,0.189 l -9.871,4.633 c -0.446,0.207 -0.889,0.312 -1.321,0.312 l 0,0 z m 12.27,-8.238 c 0.883,0 1.734,0.171 2.398,0.484 l 9.057,4.249 -1.238,-9.932 c -0.186,-1.498 0.451,-3.457 1.482,-4.557 l 6.84,-7.304 -9.828,-1.891 c -1.48,-0.285 -3.148,-1.496 -3.879,-2.818 l -4.832,-8.764 -4.832,8.763 c -0.73,1.323 -2.396,2.534 -3.877,2.819 l -9.826,1.886 6.838,7.309 c 1.031,1.101 1.668,3.06 1.48,4.559 l -1.24,9.928 9.061,-4.247 c 0.663,-0.313 1.515,-0.484 2.396,-0.484 l 0,0 z"
style="fill:#333369" />
<path d="m 641.045,137.83 c 0.396,-0.424 0.254,-0.861 -0.316,-0.971 l -5.891,-1.131 c -0.568,-0.109 -1.264,-0.616 -1.547,-1.124 l -2.783,-5.05 c 0,0 -0.262,-0.554 -0.621,-0.554 -0.357,0 -0.6,0.518 -0.6,0.518 l -2.805,5.087 c -0.281,0.508 -0.977,1.015 -1.547,1.124 l -5.889,1.131 c -0.57,0.11 -0.713,0.547 -0.314,0.971 l 4.098,4.377 c 0.398,0.424 0.664,1.242 0.592,1.817 l -0.744,5.952 c -0.072,0.576 0.299,0.846 0.824,0.599 l 5.43,-2.547 c 0.264,-0.123 0.609,-0.185 0.955,-0.185 0.348,0 0.693,0.062 0.957,0.185 l 5.428,2.547 c 0.133,0.062 0.254,0.091 0.363,0.091 0.322,0 0.518,-0.26 0.463,-0.69 l -0.742,-5.952 c -0.074,-0.576 0.191,-1.394 0.59,-1.817 l 4.099,-4.378 z m -9.563,-2.222 c 0.578,1.042 1.797,1.928 2.967,2.153 l 3.242,0.623 -2.256,2.408 c -0.818,0.871 -1.283,2.308 -1.135,3.49 l 0.408,3.275 -2.988,-1.402 c -0.67,-0.314 -1.367,-0.38 -1.834,-0.38 v -13.059 l 1.596,2.892 z"
style="fill:#333369" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,4 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<path fill="#333" d="m50.318,5.003h-21.273c-5.515,6-11.03,12-16.545,18v34.714c0.10749,1.7195,2.0191,1.2097,3.1801,1.2857h34.638c1.6346-0.23497,1.0847-2.1237,1.1818-3.284v-49.431c0.018-0.6455-0.51-1.2961-1.182-1.285z"/>
<path fill="#FFF" d="m29.038,22.993h-14.182c4.7273-5.143,9.4547-10.286,14.182-15.429v15.429z"/>
</svg>

After

Width:  |  Height:  |  Size: 544 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64px" height="64px">
<g transform="matrix(1.199961,0,0,1.2222222,-436.76926,-579.09522)">
<path d="m 378.923,493.986 c -1.41,0 -2.684,1.188 -2.781,2.594 l -0.932,12.574 c -0.059,0.787 -0.717,1.389 -1.495,1.389 -0.037,0 -0.075,-0.002 -0.112,-0.004 -0.826,-0.063 -1.446,-0.781 -1.385,-1.607 l 0.932,-12.566 c 0.205,-2.963 2.796,-5.379 5.773,-5.379 h 28.369 c 0,-0.465 0,-0.873 0,-1.031 0,-1.635 -1.654,-2.973 -3.309,-2.973 h -17.744 c 0,0 0,-1.193 0,-2.543 0,-1.35 -1.354,-2.453 -3.008,-2.453 h -12.07 c -1.654,0 -3.008,1.35 -3.008,3 v 30 c 0,1.65 1.354,3 3.008,3 h 37.098 c 1.655,0 3.122,-1.346 3.262,-2.99 l 1.623,-19.021 c 0.065,-0.766 -0.177,-1.459 -0.612,-1.988 h -33.609 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 793 B

View File

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64"
height="64"
id="svg3028"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="Forbidden.svg">
<metadata
id="metadata3038">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3036" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1340"
inkscape:window-height="892"
id="namedview3034"
showgrid="false"
inkscape:zoom="8"
inkscape:cx="52.794424"
inkscape:cy="15.718112"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="0"
inkscape:current-layer="svg3028" />
<g
transform="matrix(1.2,0,0,1.2,-579.7324,-351.106)"
id="g3030">
<path
d="m 532.27833,319.25811 c 0,-12.427 -10.07533,-22.50311 -22.50133,-22.50311 -12.426,0 -22.5,10.073 -22.5,22.5 0,12.427 10.074,22.5 22.5,22.5 l 0.021,-8.437 c -7.755,0 -14.08298,-6.308 -14.08298,-14.063 0,-2.343 0.584,-4.55 1.602,-6.493 l 18.955,18.953 c -1.943,1.019 -4.15,1.603 -6.494,1.603 l -0.001,8.45698 c 12.426,0 22.5,-10.09298 22.5,-22.51998 l -8.43744,5.9e-4 c 0,2.344 -0.58356,4.54941 -1.60156,6.49441 l -18.955,-18.955 c 1.945,-1.019 4.151,-1.603 6.494,-1.603 7.754,10e-4 14.063,6.309 14.063,14.063 z"
style="fill:#333333"
id="path3032"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cssccsccccccccccc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2,0,0,1.2,-579.7336,-711.5908)">
<path d="m 509.778,597.159 c -12.427,0 -22.5,10.074 -22.5,22.5 0,12.428 10.073,22.5 22.5,22.5 12.427,0 22.5,-10.072 22.5,-22.5 -10e-4,-12.426 -10.073,-22.5 -22.5,-22.5 z m -0.559,36.414 c -1.676,0 -3.054,-1.379 -3.054,-3.055 0,-1.676 1.378,-3.053 3.054,-3.053 1.677,0 3.054,1.377 3.054,3.053 0,1.676 -1.377,3.055 -3.054,3.055 z m 2.904,-11.791 c -0.892,1.305 -0.594,3.129 -3.052,3.129 -1.602,0 -2.385,-1.305 -2.385,-2.496 0,-4.432 6.519,-5.436 6.519,-9.086 0,-2.012 -1.34,-3.203 -3.576,-3.203 -4.767,0 -2.905,4.916 -6.518,4.916 -1.304,0 -2.421,-0.783 -2.421,-2.271 0,-3.65 4.172,-6.891 8.714,-6.891 4.769,0 9.46,2.197 9.46,7.449 10e-4,4.842 -5.55,6.703 -6.741,8.453 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 857 B

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.1999968,0,0,1.3606385,-147.9521,-648.3007)">
<path d="m 170.351,504.021 c -0.343,0.365 -0.922,0.385 -1.288,0.043 L 150.392,486.63 c -0.365,-0.342 -0.966,-0.342 -1.332,0 l -18.204,16.97 c -0.367,0.344 -0.945,0.322 -1.287,-0.045 l -1.865,-2 c -0.342,-0.365 -0.321,-0.945 0.045,-1.287 l 21.313,-19.869 c 0.367,-0.342 0.967,-0.342 1.334,0.002 l 21.777,20.334 c 0.365,0.342 0.386,0.922 0.043,1.289 l -1.865,1.997 z"
style="fill:#333333"/>
<path d="m 149.725,489.777 -15.345,14.305 v 14.83 c 0,0.504 0.414,0.918 0.919,0.918 h 10.085 v -12.857 c 0,-0.504 0.414,-0.918 0.919,-0.918 h 7.347 c 0.506,0 0.918,0.414 0.918,0.918 v 12.857 h 10.119 c 0.505,0 0.918,-0.414 0.918,-0.918 v -14.307 l -15.88,-14.828 z"
style="fill:#333333"/>
<path d="m 165.543,482.311 c 0,-0.506 -0.414,-0.92 -0.919,-0.92 h -5.51 c -0.505,0 -0.918,0.414 -0.918,0.92 v 1.604 l 7.347,6.918 v -8.522 z"
style="fill:#333333"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2,0,0,1.2,-579.7336,-639.148)">
<path d="m 509.778,536.79 c -12.427,0 -22.5,10.074 -22.5,22.5 0,12.428 10.073,22.5 22.5,22.5 12.426,0 22.5,-10.072 22.5,-22.5 0,-12.426 -10.074,-22.5 -22.5,-22.5 z m 3.749,35.66 c 0,0.516 -0.422,0.938 -0.937,0.938 h -5.625 c -0.516,0 -0.938,-0.422 -0.938,-0.938 v -15 c 0,-0.514 0.422,-0.938 0.938,-0.938 h 5.625 c 0.515,0 0.937,0.424 0.937,0.938 v 15 z m 0,-19.758 c 0,0.516 -0.422,0.938 -0.937,0.938 h -5.625 c -0.516,0 -0.938,-0.422 -0.938,-0.938 v -6.563 c 0,-0.516 0.422,-0.938 0.938,-0.938 h 5.625 c 0.515,0 0.937,0.422 0.937,0.938 v 6.563 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 736 B

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.1999733,0,0,1.1999733,-364.43055,-494.42419)">
<path d="m 352.572,429.142 c 0,0.494 -0.406,0.9 -0.9,0.9 h -43.201 c -0.494,0 -0.9,-0.406 -0.9,-0.9 v -8.099 c 0,-0.496 0.406,-0.9 0.9,-0.9 h 43.201 c 0.494,0 0.9,0.404 0.9,0.9 v 8.099 z"
style="fill:#333333" />
<path d="m 352.572,443.542 c 0,0.494 -0.406,0.9 -0.9,0.9 h -43.201 c -0.494,0 -0.9,-0.406 -0.9,-0.9 v -8.1 c 0,-0.496 0.406,-0.9 0.9,-0.9 h 43.201 c 0.494,0 0.9,0.404 0.9,0.9 v 8.1 z"
style="fill:#333333" />
<path d="m 352.572,457.942 c 0,0.494 -0.406,0.898 -0.9,0.898 h -43.201 c -0.494,0 -0.9,-0.404 -0.9,-0.898 v -8.102 c 0,-0.494 0.406,-0.898 0.9,-0.898 h 43.201 c 0.494,0 0.9,0.404 0.9,0.898 v 8.102 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 842 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.1818182,0,0,1.2857143,-429.68201,-454.27086)">
<path d="m 406.154,357.213 h -18 l -14,14 v 27 c 0,0.55 0.449,1 1,1 h 11 v -11 h -4 c -1.1,0 -1.418,-0.688 -0.709,-1.526 l 8.416,-9.947 c 0.711,-0.84 1.875,-0.84 2.584,0 l 8.416,9.947 c 0.711,0.839 0.393,1.526 -0.707,1.526 h -4 v 11 h 10 c 0.549,0 1,-0.45 1,-1 v -40 c 0,-0.551 -0.451,-1 -1,-1 z m -18,14 h -12 l 12,-12 v 12 z"
style="fill:#333333"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 529 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2,0,0,1.2,-3.2008856,-206.932)">
<path d="m 43.688,193.586 h -1.077 v -8.353 c 0,-4.743 -3.881,-8.623 -8.623,-8.623 h -8.623 c -4.742,0 -8.623,3.88 -8.623,8.623 v 8.353 h -1.078 c -1.778,0 -3.232,1.455 -3.232,3.234 v 21.557 c 0,1.778 1.454,3.233 3.232,3.233 h 28.024 c 1.779,0 3.233,-1.455 3.233,-3.233 V 196.82 c 10e-4,-1.779 -1.453,-3.234 -3.233,-3.234 z m -11.856,14.928 v 6.81 h -4.311 v -6.81 c -1.413,-0.769 -2.383,-2.248 -2.383,-3.969 0,-2.506 2.031,-4.538 4.538,-4.538 2.505,0 4.536,2.032 4.536,4.538 10e-4,1.721 -0.968,3.2 -2.38,3.969 z m 4.516,-14.928 H 23.006 v -7.545 c 0,-2.371 1.938,-4.31 4.311,-4.31 h 4.721 c 2.37,0 4.311,1.939 4.311,4.31 v 7.545 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 821 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2,0,0,1.2,-723.8644,-566.7208)">
<polygon points="629.887,481.039 652.387,499.941 629.887,518.934 629.887,509.459 607.387,509.459 607.387,490.512 629.887,490.512 "
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 322 B

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2,0,0,1.2,-579.7336,-421.8556)">
<path d="m 509.778,363.895 c 7.908,0 14.318,6.411 14.318,14.318 0,7.907 -6.41,14.318 -14.318,14.318 -7.908,0 -14.318,-6.411 -14.318,-14.318 0,-7.907 6.41,-14.318 14.318,-14.318 m 0,-8.182 c -12.406,0 -22.5,10.094 -22.5,22.5 0,12.406 10.094,22.5 22.5,22.5 12.406,0 22.5,-10.094 22.5,-22.5 0,-12.406 -10.094,-22.5 -22.5,-22.5 l 0,0 z"
style="fill:#333333" />
<polygon points="498.698,373.228 509.778,387.162 520.857,373.228 "
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 625 B

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
height="64"
width="64"
version="1.1"
id="svg3026"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="Parameter.svg">
<defs
id="defs3034" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1680"
inkscape:window-height="968"
id="namedview3032"
showgrid="true"
showguides="false"
inkscape:zoom="10.429825"
inkscape:cx="15.854083"
inkscape:cy="35.324394"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3026">
<inkscape:grid
type="xygrid"
id="grid3036" />
</sodipodi:namedview>
<metadata
id="metadata3028">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<path
style="color:#000000;fill:#333333;enable-background:accumulate"
d="m 4,51 c 6,-6 6,-6 6,-6 l 9,0 0,9 -6,6 C 23,63 28,51 26,45 33.5363,37.4993 38.48,32.485 46,25 52,27 63,24 60,14 L 55,19 45,19 45,9 50,4 C 40,1 37,12 39,18 31.467,25.472 26.513,30.476 19,38 13,36 1,41 4,51 z"
id="path3030"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccccccccccccc" />
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(-1.2,0,0,1.2,787.8644,-566.7208)">
<polygon points="652.387,499.941 629.887,518.934 629.887,509.459 607.387,509.459 607.387,490.512 629.887,490.512 629.887,481.039 "
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 322 B

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2000267,0,0,1.2000267,-3.5226163,-279.15673)">
<path d="m 36.314,239.696 v 8.396 c 4.282,2.353 7.191,6.905 7.191,12.126 0,7.626 -6.203,13.829 -13.829,13.829 -7.626,0 -13.829,-6.203 -13.829,-13.829 0,-5.221 2.91,-9.773 7.191,-12.126 v -8.396 c -8.664,2.802 -14.936,10.925 -14.936,20.522 0,11.915 9.658,21.573 21.573,21.573 11.915,0 21.573,-9.658 21.573,-21.573 0.002,-9.596 -6.269,-17.72 -14.934,-20.522 z"
style="fill:#333333"/>
<path d="m 32.998,256.706 c 0,1.218 -0.995,2.213 -2.213,2.213 h -2.217 c -1.218,0 -2.213,-0.995 -2.213,-2.213 v -17.701 c 0,-1.218 0.995,-2.213 2.213,-2.213 h 2.217 c 1.218,0 2.213,0.995 2.213,2.213 v 17.701 z"
style="fill:#333333"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 804 B

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.3012048,0,0,1.255814,-631.32431,-293.62251)">
<circle d="m 514.52701,259.29199 c 0,2.20914 -1.79086,4 -4,4 -2.20914,0 -4,-1.79086 -4,-4 0,-2.20914 1.79086,-4 4,-4 2.20914,0 4,1.79086 4,4 z"
style="fill:#333333"
cx="510.52701"
cy="259.29199"
r="4"/>
<path d="m 530.527,254.292 v -13 l -4.098,3.514 c -4.137,-4.393 -10.08,-7.014 -15.902,-7.014 -11.855,0 -21.5,9.646 -21.5,21.5 0,11.854 9.645,21.5 21.5,21.5 8.551,0 16.287,-5.064 19.711,-12.902 l -6.416,-2.801 c -2.309,5.287 -7.527,8.703 -13.295,8.703 -7.996,0 -14.5,-6.504 -14.5,-14.5 0,-7.994 6.504,-14.5 14.5,-14.5 3.824,0 7.744,1.715 10.568,4.584 l -4.568,3.916 14,1 z"
style="fill:#333333"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 818 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2000267,0,0,1.2000267,-651.9777,-351.11481)">
<path d="m 579.088,319.255 12.91,-12.908 c 0.627,-0.627 0.627,-1.654 0,-2.281 l -6.84,-6.842 c -0.627,-0.625 -1.652,-0.625 -2.279,0 l -12.91,12.91 -12.91,-12.91 c -0.627,-0.625 -1.654,-0.625 -2.281,0 l -6.84,6.842 c -0.625,0.627 -0.625,1.654 0,2.281 l 12.91,12.908 -12.908,12.908 c -0.627,0.627 -0.627,1.654 0,2.281 l 6.84,6.842 c 0.627,0.625 1.654,0.625 2.281,0 l 12.908,-12.91 12.908,12.91 c 0.627,0.625 1.652,0.625 2.279,0 l 6.84,-6.842 c 0.627,-0.627 0.627,-1.654 0,-2.281 l -12.908,-12.908 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 699 B

View File

@ -0,0 +1,63 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="64"
height="64"
id="svg3028"
version="1.1"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="Remove2.svg">
<metadata
id="metadata3038">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3036" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1680"
inkscape:window-height="968"
id="namedview3034"
showgrid="true"
inkscape:zoom="9.0377085"
inkscape:cx="14.895958"
inkscape:cy="28.796248"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3028">
<inkscape:grid
type="xygrid"
id="grid3040" />
</sodipodi:namedview>
<g
transform="matrix(1.2000267,0,0,1.2000267,-651.9777,-351.11481)"
id="g3030">
<path
d="m 576.63525,319.25524 15.35699,-15.27674 c 0.627,-0.627 0.627,-1.654 0,-2.281 l -4.29338,-4.3352 c -0.627,-0.625 -1.652,-0.625 -2.279,0 l -15.45113,15.22642 -15.83298,-15.45692 c -0.627,-0.625 -1.654,-0.625 -2.281,0 l -3.9859,4.00946 c -0.625,0.627 -0.625,1.654 0,2.281 l 15.43337,15.83298 -15.31612,15.67389 c -0.61972,0.63419 -0.627,1.654 0,2.281 l 4.14303,4.07587 c 0.627,0.625 1.654,0.625 2.281,0 l 15.5586,-15.36424 16.05393,15.36226 c 0.627,0.625 1.652,0.625 2.279,0 l 3.69434,-4.06095 c 0.627,-0.627 0.62038,-1.64745 0,-2.281 z"
style="fill:#fe0000;fill-opacity:0.88627452"
id="path3032"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccccccscccccccsc" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,15 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path d="M56.308,30.297c-0.34-11.332-7.1-21.282-17.44-25.505-10.575-4.3193-22.883-1.4808-30.624,7.062l6.7808,6.444c5.1608-5.6978,13.367-7.5874,20.417-4.7076,6.802,2.7782,11.249,9.2808,11.584,16.709l-6.7794,0.0046,11.511,14.941,10.893-14.949-6.3435-0.000321z" fill="#333"/>
<g transform="matrix(0.71188026,0,0,0.77215001,-386.35967,-207.86869)">
<path fill="#333" d="m579.09,319.26,12.91-12.908c0.627-0.627,0.627-1.654,0-2.281l-6.84-6.842c-0.627-0.625-1.652-0.625-2.279,0l-12.91,12.91-12.91-12.91c-0.627-0.625-1.654-0.625-2.281,0l-6.84,6.842c-0.625,0.627-0.625,1.654,0,2.281l12.91,12.908-12.908,12.908c-0.627,0.627-0.627,1.654,0,2.281l6.84,6.842c0.627,0.625,1.654,0.625,2.281,0l12.908-12.91,12.908,12.91c0.627,0.625,1.652,0.625,2.279,0l6.84-6.842c0.627-0.627,0.627-1.654,0-2.281l-12.908-12.908z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.1999941,0,0,1.2,-75.451168,-351.106)">
<path d="m 104.793,296.755 h -24.75 c -1.237,0 -2.25,1.013 -2.25,2.25 v 9 c 0,1.237 -0.562,3.093 -1.248,4.122 l -2.004,3.005 c -0.687,1.029 -1.248,2.885 -1.248,4.123 0,1.236 0.905,1.797 2.013,1.244 l 0.475,-0.238 c 1.107,-0.554 2.013,0.006 2.013,1.244 v 2.25 c 0,1.236 -0.717,2.967 -1.591,3.84 l -1.318,1.318 c -0.874,0.875 -1.591,2.604 -1.591,3.842 v 6.75 c 0,1.236 1.013,2.25 2.25,2.25 h 24.75 c 4.359,0 6.75,-2.25 6.75,-6.75 v -36 c -10e-4,-1.237 -1.014,-2.25 -2.251,-2.25 z m -20.25,13 c 0,0.275 -0.225,0.5 -0.5,0.5 h -1.25 c -0.275,0 -0.5,-0.225 -0.5,-0.5 v -8 c 0,-0.275 0.225,-0.5 0.5,-0.5 h 1.25 c 0.275,0 0.5,0.225 0.5,0.5 v 8 z m 4.5,0 c 0,0.275 -0.225,0.5 -0.5,0.5 h -1.25 c -0.275,0 -0.5,-0.225 -0.5,-0.5 v -8 c 0,-0.275 0.225,-0.5 0.5,-0.5 h 1.25 c 0.275,0 0.5,0.225 0.5,0.5 v 8 z m 4.5,0 c 0,0.275 -0.225,0.5 -0.5,0.5 h -1.25 c -0.275,0 -0.5,-0.225 -0.5,-0.5 v -8 c 0,-0.275 0.225,-0.5 0.5,-0.5 h 1.25 c 0.275,0 0.5,0.225 0.5,0.5 v 8 z m 4.5,0 c 0,0.275 -0.225,0.5 -0.5,0.5 h -1.25 c -0.275,0 -0.5,-0.225 -0.5,-0.5 v -8 c 0,-0.275 0.225,-0.5 0.5,-0.5 h 1.25 c 0.275,0 0.5,0.225 0.5,0.5 v 8 z m 4.5,0 c 0,0.275 -0.225,0.5 -0.5,0.5 h -1.25 c -0.275,0 -0.5,-0.225 -0.5,-0.5 v -8 c 0,-0.275 0.225,-0.5 0.5,-0.5 h 1.25 c 0.275,0 0.5,0.225 0.5,0.5 v 8 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64px" height="64px">
<g transform="matrix(1.2,0,0,1.2000267,-436.7836,-495.40152)">
<rect style="fill:#333333"
x="386.36899"
y="419.13501"
width="8.5719995"
height="10.714"
/>
<path style="fill:#333333"
d="m 403.435,416.992 h -3.139 v 16.071 h -25.713 v -16.071 h -5.893 c -0.295,0 -0.537,0.241 -0.537,0.535 v 43.929 c 0,0.295 0.242,0.535 0.537,0.535 h 43.928 c 0.295,0 0.535,-0.24 0.535,-0.535 V 426.71 l -9.718,-9.718 z m 3.291,41.784 h -32.143 v -21.428 h 32.143 v 21.428 z"
/>
<polygon style="fill:#333333" points="403.511,445.921 403.511,445.921 377.798,445.921 377.798,442.706 403.511,442.706 " />
<polygon style="fill:#333333" points="403.511,453.421 403.511,453.421 377.798,453.421 377.798,450.206 403.511,450.206 " />
</g>
</svg>

After

Width:  |  Height:  |  Size: 859 B

View File

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg height="64"
width="64" >
<metadata
id="metadata3975">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs3973" />
<sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1680"
inkscape:window-height="968"
id="namedview3971"
showgrid="false"
inkscape:zoom="16"
inkscape:cx="27.03623"
inkscape:cy="33.687368"
inkscape:window-x="0"
inkscape:window-y="27"
inkscape:window-maximized="1"
inkscape:current-layer="svg3965" />
<path
d="M 39.436904,24.062448 C 39.915614,33.278293 29.16429,41.203307 19.736168,37.727362 10.452887,34.884476 6.7103607,23.258769 12.262163,15.90798 17.329733,7.8698857 31.048441,7.5763012 36.47627,15.419465 c 1.929199,2.496703 2.965789,5.568455 2.960389,8.64209 z"
id="path3969"
style="fill:#ffffff;fill-opacity:0.87450981"
inkscape:connector-curvature="0" />
<path
d="M 58.168,50.56 46.013,38.407 c -0.91442,-0.91442 -2.3016,-1.0644 -3.3865,-0.47161 l -2.592,-2.592 c 2.208,-3.1357 3.5185,-6.9493 3.5185,-11.068 0,-10.629 -8.6485,-19.276 -19.277,-19.276 -10.629,0 -19.276,8.6461 -19.276,19.276 0,10.6299 8.6461,19.277 19.276,19.277 4.1017,0 7.8985,-1.296 11.026,-3.4873 0,0 0.596082,-5.606306 -5.038478,-5.016691 -4.69706,2.902115 -12.054397,2.017375 -15.875086,-3.769003 -3.142722,-4.56604 -2.630816,-13.100523 2.668347,-16.731928 5.299163,-3.631405 14.142128,-3.981951 18.471312,4.363412 2.363082,6.040278 0.78609,12.603632 -5.311526,16.1632 7.665096,7.559567 7.694231,7.60221 7.694231,7.60221 -0.56041,1.0752 -0.40321,2.4348 0.49681,3.3373 l 12.155,12.153 c 1.1088,1.1112 2.9268,1.1112 4.0357,0 l 3.5725,-3.5701 c 1.1064,-1.1088 1.1064,-2.9256 -0.0024,-4.0369 z"
id="path3967"
inkscape:connector-curvature="0"
style="fill:#333333"
sodipodi:nodetypes="ccccssssccczccccccccc" />
</svg>

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2,0,0,1.2,-436.9344,-711.5908)">
<path d="m 408.302,604.218 h -7.95 c 0.002,-0.055 0.009,-0.109 0.009,-0.166 v -1.6 c 0,-2.91 -2.384,-5.293 -5.294,-5.293 h -8.824 c -2.912,0 -5.294,2.383 -5.294,5.293 v 1.6 c 0,0.057 0.007,0.111 0.009,0.166 h -7.95 c -1.456,0 -2.646,1.191 -2.646,2.646 v 2.646 c 0,1.457 1.19,2.648 2.646,2.648 h 0.883 v -1.766 h 33.529 v 1.766 h 0.883 c 1.455,0 2.646,-1.191 2.646,-2.648 v -2.646 c -0.001,-1.455 -1.192,-2.646 -2.647,-2.646 z m -22.969,-2.647 h 10.588 v 2.646 h -10.588 v -2.646 z"
style="fill:#333333"/>
<path d="m 375.654,613.042 v 26.469 c 0,1.457 1.19,2.648 2.647,2.648 h 24.705 c 1.456,0 2.647,-1.191 2.647,-2.648 v -26.469 h -29.999 z m 8.824,23.381 c 0,0.486 -0.397,0.883 -0.882,0.883 h -1.765 c -0.486,0 -0.883,-0.396 -0.883,-0.883 v -17.646 c 0,-0.484 0.396,-0.883 0.883,-0.883 h 1.765 c 0.484,0 0.882,0.398 0.882,0.883 v 17.646 z m 7.941,0 c 0,0.486 -0.398,0.883 -0.882,0.883 h -1.766 c -0.485,0 -0.882,-0.396 -0.882,-0.883 v -17.646 c 0,-0.484 0.396,-0.883 0.882,-0.883 h 1.766 c 0.483,0 0.882,0.398 0.882,0.883 v 17.646 z m 7.941,0 c 0,0.486 -0.398,0.883 -0.883,0.883 h -1.765 c -0.485,0 -0.882,-0.396 -0.882,-0.883 v -17.646 c 0,-0.484 0.396,-0.883 0.882,-0.883 h 1.765 c 0.484,0 0.883,0.398 0.883,0.883 v 17.646 z"
style="fill:#333333"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(-1.3012048,0,0,1.255814,695.32425,-293.62251)">
<circle d="m 514.52701,259.29199 c 0,2.20914 -1.79086,4 -4,4 -2.20914,0 -4,-1.79086 -4,-4 0,-2.20914 1.79086,-4 4,-4 2.20914,0 4,1.79086 4,4 z"
style="fill:#333333"
cx="510.52701"
cy="259.29199"
r="4"/>
<path d="m 530.527,254.292 v -13 l -4.098,3.514 c -4.137,-4.393 -10.08,-7.014 -15.902,-7.014 -11.855,0 -21.5,9.646 -21.5,21.5 0,11.854 9.645,21.5 21.5,21.5 8.551,0 16.287,-5.064 19.711,-12.902 l -6.416,-2.801 c -2.309,5.287 -7.527,8.703 -13.295,8.703 -7.996,0 -14.5,-6.504 -14.5,-14.5 0,-7.994 6.504,-14.5 14.5,-14.5 3.824,0 7.744,1.715 10.568,4.584 l -4.568,3.916 14,1 z"
style="fill:#333333"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 818 B

14
data/theme/default/Up.svg Normal file
View File

@ -0,0 +1,14 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<g transform="matrix(0,-1.2,1.2,0,-567.9838,789.1274)">
<polygon points="652.39,499.94,629.89,518.93,629.89,509.46,607.39,509.46,607.39,490.51,629.89,490.51,629.89,481.04" fill="#333"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 638 B

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.1999733,0,0,1.1999733,-579.72065,-63.509343)">
<path d="m 528.054,71.68 c -3.166,-7.28 -10.25,-11.956 -18.232,-11.956 -8.164,0 -15.625,5.116 -18.564,12.729 l 6.188,2.39 c 1.959,-5.077 6.934,-8.486 12.377,-8.486 5.251,0 9.9,3.048 12.05,7.791 l -4.514,1.804 11.543,6.66 3.377,-12.617 -4.225,1.685 z"
style="fill:#333333"/>
<path d="m 509.822,92.88 c -5.205,0 -9.952,-3.14 -12.074,-7.853 l 4.45,-1.721 -11.423,-6.515 -3.497,12.281 4.26,-1.646 c 3.106,7.252 10.357,12.084 18.284,12.084 8.193,0 15.449,-4.917 18.484,-12.524 l -6.158,-2.457 c -2.026,5.073 -6.862,8.351 -12.326,8.351 z"
style="fill:#333333"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 744 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2,0,0,1.2,-651.9628,-63.5416)">
<path d="m 569.969,57.117 c -12.428,0 -22.5,10.073 -22.5,22.501 0,12.426 10.072,22.5 22.5,22.5 12.426,0 22.5,-10.074 22.5,-22.5 0,-12.428 -10.074,-22.501 -22.5,-22.501 z m 11.324,21.029 -10.391,10.391 c -0.514,0.514 -1.357,0.514 -1.871,0 L 558.642,78.148 c -0.514,-0.514 -0.514,-1.355 0,-1.869 l 2.279,-2.281 c 0.867,-0.867 2.174,-0.752 2.943,0.02 l 5.166,5.164 c 0.514,0.516 1.357,0.516 1.871,0 l 5.182,-5.18 c 0.867,-0.869 2.121,-0.816 2.934,-0.002 l 2.275,2.275 c 0.515,0.513 0.515,1.357 10e-4,1.871 z"
style="fill:#333333;fill-rule:evenodd" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 711 B

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.300523,0,0,1.300523,-4.3338536,-458.79144)">
<polygon points="16.142,372.236 26.103,362.274 26.103,394.151 16.142,384.189 7.177,384.189 7.177,372.236 "
style="fill:#333333" />
<path d="m 34.567,369.749 -2.816,2.816 c 1.447,1.446 2.344,3.444 2.344,5.647 0,2.203 -0.896,4.201 -2.344,5.646 l 2.816,2.816 c 2.168,-2.168 3.512,-5.161 3.512,-8.463 0,-3.302 -1.344,-6.293 -3.512,-8.462 z"
style="fill:#333333" />
<path d="m 39.704,365.025 -2.816,2.816 c 2.645,2.645 4.283,6.297 4.283,10.324 0,4.027 -1.639,7.68 -4.283,10.324 l 2.816,2.816 c 3.365,-3.367 5.451,-8.015 5.451,-13.141 0,-5.123 -2.086,-9.771 -5.451,-13.139 z"
style="fill:#333333" />
<path d="m 44.56,359.854 -2.816,2.816 c 3.982,3.982 6.449,9.48 6.449,15.543 0,6.063 -2.467,11.561 -6.447,15.543 l 2.814,2.816 c 4.705,-4.704 7.617,-11.197 7.617,-18.359 0,-7.162 -2.914,-13.655 -7.617,-18.359 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2249898,0,0,1.2249898,-3.7905268,-358.08412)">
<polygon points="16.82,325.684 7.176,325.684 7.176,312.827 16.82,312.827 27.534,302.112 27.534,336.398 "
style="fill:#333333" />
<path d="m 47.081,319.255 4.918,-4.917 c 0.238,-0.24 0.238,-0.631 0,-0.87 l -2.607,-2.606 c -0.237,-0.238 -0.629,-0.238 -0.866,0 l -4.919,4.918 -4.92,-4.918 c -0.236,-0.238 -0.629,-0.238 -0.867,0 l -2.605,2.606 c -0.239,0.239 -0.239,0.63 0,0.87 l 4.917,4.917 -4.917,4.917 c -0.239,0.24 -0.239,0.632 0,0.87 l 2.607,2.607 c 0.236,0.236 0.629,0.236 0.867,0 l 4.918,-4.919 4.916,4.919 c 0.24,0.236 0.632,0.236 0.869,0 l 2.607,-2.607 c 0.236,-0.237 0.236,-0.63 0,-0.87 l -4.918,-4.917 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 820 B

View File

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2000035,0,0,1.2000035,-76.201658,-63.592236)">
<path d="M 111.858,93.287 93.524,62.64 C 91.67,59.542 88.639,59.543 86.789,62.641 L 68.476,93.286 c -1.851,3.098 -0.413,5.633 3.197,5.633 h 36.993 c 3.608,-10e-4 5.045,-2.535 3.192,-5.632 z M 88.2,73.367 c 0,-1.084 0.887,-1.969 1.969,-1.969 1.083,0 1.969,0.885 1.969,1.969 v 9.192 c 0,1.085 -0.886,1.969 -1.969,1.969 -1.082,0 -1.969,-0.884 -1.969,-1.969 v -9.192 z m 1.969,19.596 c -1.449,0 -2.625,-1.177 -2.625,-2.625 0,-1.451 1.176,-2.624 2.625,-2.624 1.45,0 2.625,1.173 2.625,2.624 0,1.449 -1.175,2.625 -2.625,2.625 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 724 B

View File

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.2000267,0,0,1.2000267,-220.089,-63.543123)">
<path d="m 232.569,79.617 -16.755,-3.49 2.864,-5.115 -5.023,3.029 -3.585,-16.924 -3.585,16.924 -5.023,-3.029 2.864,5.115 -16.755,3.49 h -0.001 l 0.001,0 0,0 16.755,3.49 -2.864,5.114 5.023,-3.029 3.585,16.925 3.585,-16.925 5.023,3.029 -2.864,-5.114 16.755,-3.49 0,0 0,0 0,0 z m -22.499,4.302 c -2.376,0 -4.302,-1.925 -4.302,-4.301 0,-2.375 1.926,-4.301 4.302,-4.301 2.376,0 4.302,1.926 4.302,4.301 0,2.376 -1.926,4.301 -4.302,4.301 z"
style="fill:#451c54" />
<g>
<path d="m 199.03,75.203 c 1.204,-2.997 3.589,-5.393 6.58,-6.609 l 1.242,-5.866 c -6.921,1.314 -12.371,6.771 -13.676,13.694 l 5.854,-1.219 z"
style="fill:#451c54" />
<path d="m 221.139,84.026 c -1.204,3.017 -3.604,5.428 -6.615,6.644 l -1.24,5.861 c 6.939,-1.307 12.404,-6.779 13.703,-13.723 l -5.848,1.218 z"
style="fill:#451c54" />
<path d="m 214.529,68.586 c 3.002,1.214 5.396,3.615 6.603,6.622 l 5.852,1.219 C 225.679,69.495 220.22,64.032 213.289,62.725 l 1.24,5.861 z"
style="fill:#451c54" />
<path d="m 205.614,90.663 c -3,-1.219 -5.391,-3.624 -6.592,-6.632 l -5.85,-1.218 c 1.299,6.935 6.754,12.402 13.684,13.715 l -1.242,-5.865 z"
style="fill:#451c54" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -0,0 +1,13 @@
<svg xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="64" width="64" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
<metadata>
<rdf:RDF>
<cc:Work rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
<dc:title/>
</cc:Work>
</rdf:RDF>
</metadata>
<path d="m36.594,31.471,9.9047,12.555,9.3732-12.561-9.4514,0.0011z" fill="#333"/>
<path fill="#353535" d="m31.724,51.573c-6.6423,0-11.845-9.0656-11.845-20.048s5.203-20.048,11.845-20.048c7.389,0,12.257,7.595,11.625,20.494,3.1648,0.01798,3.0508-0.01346,7.1142-0.17954,0.674-20.911-8.501-28.985-18.739-28.985-9.0867,0-18.935,12.636-18.935,28.584s9.849,29.002,18.935,28.855"/>
</svg>

After

Width:  |  Height:  |  Size: 818 B

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg width="64" height="64">
<g transform="matrix(1.20002,0,0,1.20002,-651.97375,-639.15903)">
<path d="m 591.775,574.756 -10.129,-10.127 c -0.762,-0.762 -1.918,-0.887 -2.822,-0.393 l -2.16,-2.16 c 1.84,-2.613 2.932,-5.791 2.932,-9.223 0,-8.857 -7.207,-16.063 -16.064,-16.063 -8.857,0 -16.063,7.205 -16.063,16.063 0,8.858 7.205,16.064 16.063,16.064 3.418,0 6.582,-1.08 9.188,-2.906 l 2.174,2.176 c -0.467,0.896 -0.336,2.029 0.414,2.781 l 10.129,10.127 c 0.924,0.926 2.439,0.926 3.363,0 l 2.977,-2.975 c 0.922,-0.925 0.922,-2.438 -0.002,-3.364 z m -28.244,-11.787 c -5.584,0 -10.113,-4.529 -10.113,-10.115 0,-5.584 4.529,-10.113 10.113,-10.113 5.586,0 10.115,4.529 10.115,10.113 0,5.585 -4.529,10.115 -10.115,10.115 z"
style="fill:#333333" />
<path d="m 568.498,550.863 h -3 v -3 c 0,-1.104 -0.895,-2 -2,-2 -1.104,0 -2,0.896 -2,2 v 3 h -3 c -1.104,0 -2,0.896 -2,2 0,1.105 0.896,2 2,2 h 3 v 3 c 0,1.105 0.896,2 2,2 1.105,0 2,-0.895 2,-2 v -3 h 3 c 1.105,0 2,-0.895 2,-2 0,-1.103 -0.894,-2 -2,-2 z"
style="fill:#333333" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -18,6 +18,6 @@
padding-in-buttom:1,
change-time:356,
program:"{ewol}THEME:GUI:Button.prog",
color:"{ewol}THEME:COLOR:Button.json"
program:"THEME_GUI:///Button.prog?lib=ewol",
color:"THEME_COLOR:///Button.json?lib=ewol"
}

View File

@ -6,6 +6,6 @@
padding-top:10,
padding-buttom:10,
change-time:356,
program:"{ewol}THEME:GUI:CheckBox.prog",
color:"{ewol}THEME:COLOR:CheckBox.json"
program:"THEME_GUI:///CheckBox.prog?lib=ewol",
color:"THEME_COLOR:///CheckBox.json?lib=ewol"
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:1,
change-time:356,
program:"{ewol}THEME:GUI:ContextMenu.prog",
color:"{ewol}THEME:COLOR:ContextMenu.json"
program:"THEME_GUI:///ContextMenu.prog?lib=ewol",
color:"THEME_COLOR:///ContextMenu.json?lib=ewol"
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:1,
change-time:356,
program:"{ewol}THEME:GUI:Entry.prog",
color:"{ewol}THEME:COLOR:Entry.json"
program:"THEME_GUI:///Entry.prog?lib=ewol",
color:"THEME_COLOR:///Entry.json?lib=ewol"
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:1,
change-time:356,
program:"{ewol}THEME:GUI:PopUp.prog",
color:"{ewol}THEME:COLOR:PopUp.json"
program:"THEME_GUI:///PopUp.prog?lib=ewol,
color:"THEME_COLOR:///PopUp.json?lib=ewol"
}

View File

@ -4,6 +4,6 @@
padding-top:16,
padding-buttom:16,
change-time:200,
program:"{ewol}THEME:GUI:WidgetScrolled.prog",
color:"{ewol}THEME:COLOR:WidgetScrolled.json"
program:"THEME_GUI:///WidgetScrolled.prog?lib=ewol",
color:"THEME_COLOR:///WidgetScrolled.json?lib=ewol"
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:1,
change-time:356,
program:"{ewol}THEME:GUI:Button.prog",
color:"{ewol}THEME:COLOR:Button.json"
program:"THEME_GUI:///Button.prog?lib=ewol",
color:"THEME_COLOR:///Button.json?lib=ewol"
}

View File

@ -20,6 +20,6 @@
box-size:20,
box-inside:12,
change-time:356,
program:"{ewol}THEME:GUI:CheckBox.prog",
color:"{ewol}THEME:COLOR:CheckBox.json"
program:"THEME_GUI:///CheckBox.prog?lib=ewol",
color:"THEME_COLOR:///CheckBox.json?lib=ewol"
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:2,
change-time:356,
program:"{ewol}THEME:GUI:ContextMenu.prog",
color:"{ewol}THEME:COLOR:ContextMenu.json"
program:"THEME_GUI:///ContextMenu.prog?lib=ewol",
color:"THEME_COLOR:///ContextMenu.json?lib=ewol"
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:2,
change-time:356,
program:"{ewol}THEME:GUI:Entry.prog",
color:"{ewol}THEME:COLOR:Entry.json"
program:"THEME_GUI:///Entry.prog?lib=ewol",
color:"THEME_COLOR:///Entry.json?lib=ewol"
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:2,
change-time:356,
program:"{ewol}THEME:GUI:PopUp.prog",
color:"{ewol}THEME:COLOR:PopUp.json"
program:"THEME_GUI:///PopUp.prog?lib=ewol",
color:"THEME_COLOR:///PopUp.json?lib=ewol"
}

View File

@ -1,5 +1,5 @@
{
entry-shaper:"{ewol}THEME:GUI:SelectEntry.json",
up-shaper:"{ewol}THEME:GUI:SelectBt.json",
entry-shaper:"THEME_GUI:///SelectEntry.json?lib=ewol",
up-shaper:"THEME_GUI:///SelectBt.json?lib=ewol",
up-data:"<label>*</label>",
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:1,
change-time:356,
program:"{ewol}THEME:GUI:Button.prog",
color:"{ewol}THEME:COLOR:Button.json"
program:"THEME_GUI:///Button.prog?lib=ewol",
color:"THEME_COLOR:///Button.json?lib=ewol"
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:1,
change-time:356,
program:"{ewol}THEME:GUI:Entry.prog",
color:"{ewol}THEME:COLOR:Entry.json"
program:"THEME_GUI:///Entry.prog?lib=ewol",
color:"THEME_COLOR:///Entry.json?lib=ewol"
}

View File

@ -1,7 +1,7 @@
{
entry-shaper:"{ewol}THEME:GUI:SpinEntry.json",
up-shaper:"{ewol}THEME:GUI:SpinUp.json",
entry-shaper:"THEME_GUI:///SpinEntry.json?lib=ewol",
up-shaper:"THEME_GUI:///SpinUp.json?lib=ewol",
up-data:"<label>+</label>",
down-shaper:"{ewol}THEME:GUI:SpinDown.json",
down-shaper:"THEME_GUI:///SpinDown.json?lib=ewol",
down-data:"<label>-</label>",
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:1,
change-time:356,
program:"{ewol}THEME:GUI:Button.prog",
color:"{ewol}THEME:COLOR:Button.json"
program:"THEME_GUI:///Button.prog?lib=ewol",
color:"THEME_COLOR:///Button.json?lib=ewol"
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:1,
change-time:356,
program:"{ewol}THEME:GUI:Entry.prog",
color:"{ewol}THEME:COLOR:Entry.json"
program:"THEME_GUI:///Entry.prog?lib=ewol",
color:"THEME_COLOR:///Entry.json?lib=ewol"
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:1,
change-time:356,
program:"{ewol}THEME:GUI:Button.prog",
color:"{ewol}THEME:COLOR:Button.json"
program:"THEME_GUI:///Button.prog?lib=ewol",
color:"THEME_COLOR:///Button.json?lib=ewol"
}

View File

@ -18,6 +18,6 @@
padding-in-buttom:3,
change-time:200,
program:"{ewol}THEME:GUI:WidgetScrolled.prog",
color:"{ewol}THEME:COLOR:WidgetScrolled.json"
program:"THEME_GUI:///WidgetScrolled.prog?lib=ewol",
color:"THEME_COLOR:///WidgetScrolled.json?lib=ewol"
}

View File

@ -8,10 +8,10 @@ Overview: {#ewol_page_bases_overview}
EWOL is an OpenGL library for creating graphical user interfaces.
It works on many UNIX-like platforms, Windows, and OS X and some mobile platforms Android, iOs.
EWOL is released under the APACHE-2 license, which allows for very flexible licensing of client applications.
EWOL is released under the MPL v2.0 license, which allows for very flexible licensing of client applications.
EWOL has a C++ architecture that allows for maximum flexibility.
**APACHE-2 license limitation:** I limit myself to use only Apache2 / MIT / BSD / PNG licencing to permit to release binary on IOs.
**MPL v2.0 license limitation:** I limit myself to use only Apache2 / MIT / BSD / PNG / MPL licencing to permit to release binary on IOs.
This I a big point, because it need to rewrite many libraries (like SVG...).
@ -37,7 +37,7 @@ Architecture: {#ewol_page_bases_architecture}
One of the important point to know in this framework is some of absurd things came from the multiple architecture type.
I will Explain the main points:
- IOs does **NOT** simply support the shared object sub lib, this force ewol to be APACHE-2, and depend on some sub-library with small license restriction.
- IOs does **NOT** simply support the shared object sub lib, this force ewol to be MPL v2.0, and depend on some sub-library with small license restriction.
- Android have a JAVA main, then the application main will not be used with this platform
- Android event (keyboard, mouse, touch-screen and ...) will arrive in asynchron mode ==> need to be resynchronyse in one thread
- Only one graphyc framework is availlable on all platform. This is OpenGL (windows phone is not supported (moribund archi))

View File

@ -4,15 +4,15 @@ FAQ {#page_FAQ}
What is ewol licence
--------------------
This is really simple : APACHE-2 :
This is really simple : MPL v2.0 :
Copyright ewol Edouard DUPIN
Licensed under the Apache License, Version 2.0 (the "License");
Licensed under the Mozilla Public 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>
<https://www.mozilla.org/MPL/2.0>
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
@ -27,7 +27,7 @@ Why we use "DECLARE_FACTORY" Macro?
-----------------------------------
For some reason!!! But everything might be clear:
- In ewol we masively use ememory::SharedPtr (simple wrapper over std::shared_ptr (that is not thread safe ...)).
- In ewol we masively use ememory::SharedPtr.
- 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.

View File

@ -42,16 +42,16 @@ This exclude the classical extern library with licence:
- L-GPL
- GPL
License (APACHE 2) {#ewol_mainpage_license}
License (MPL v2.0) {#ewol_mainpage_license}
==================
Copyright ewol Edouard DUPIN
Licensed under the Apache License, Version 2.0 (the "License");
Licensed under the Mozilla Public 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>
<https://www.mozilla.org/MPL/2.0>
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
@ -65,25 +65,25 @@ Sub library: {#ewol_mainpage_sub}
License:
- [**etk**](http://atria-soft.github.io/etk) : APACHE-2
- [**elog**](http://atria-soft.github.io/elog) : APACHE-2
- [**etk**](http://atria-soft.github.io/etk) : MPL v2.0
- [**elog**](http://atria-soft.github.io/elog) : MPL v2.0
+ **linearmath** : z-lib (subset of bullet lib)
+ [**earchive**](http://atria-soft.github.io/earchive) : APACHE-2
+ [**earchive**](http://atria-soft.github.io/earchive) : MPL v2.0
* **zlib** : z-lib
- [**egami**](http://atria-soft.github.io/egami) : APACHE-2
+ [**esvg**](http://atria-soft.github.io/esvg) : APACHE-2
- [**egami**](http://atria-soft.github.io/egami) : MPL v2.0
+ [**esvg**](http://atria-soft.github.io/esvg) : MPL v2.0
+ **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
- [**e-json**](http://atria-soft.github.io/ejson) : MPL v2.0
- [**e-xml**](http://atria-soft.github.io/exml) : MPL v2.0
- [**audio**](http://musicdsp.github.io/audio) : MPL v2.0
- [**audio-orchestra**](http://musicdsp.github.io/audio-orchestra) : MIT
- [**audio-drain**](http://musicdsp.github.io/audio-drain) : APACHE-2
- [**audio-river**](http://musicdsp.github.io/audio-river) : APACHE-2
- [**audio-ess**](http://musicdsp.github.io/audio-ess) : APACHE-2
- [**ege**](http://atria-soft.github.io/ege) : APACHE-2
- [**dollar**](http://atria-soft.github.io/dollar) : APACHE-2
- [**audio-drain**](http://musicdsp.github.io/audio-drain) : MPL v2.0
- [**audio-river**](http://musicdsp.github.io/audio-river) : MPL v2.0
- [**audio-ess**](http://musicdsp.github.io/audio-ess) : MPL v2.0
- [**ege**](http://atria-soft.github.io/ege) : MPL v2.0
- [**dollar**](http://atria-soft.github.io/dollar) : MPL v2.0
...
Description: {#ewol_mainpage_desc}

View File

@ -39,9 +39,6 @@ Creating an object is really simple:
APPL_INFO("We just create a button widget with unique ID=" << tmpButon->getId() << " name='" << tmpButon->propertyName.get() << "'");
```
Note that all object created are ememory::SharedPtr base for the current version on std::shared_ptr.
We wrapped it because the current inplementation of std::shared_ptr is not thread safe, and we want use a thread-safe version of it.
**Note:**
```
@ -90,7 +87,7 @@ Find a global Object (ouside an Object)
#include <ewol/context/Context.hpp>
ewol::ObjectShared tmpObject = ewol::getContext().getEObjectManager().getObjectNamed("obj Name");
if (tmpObject == nullptr) {
if (tmpObject == null) {
APPL_ERROR("The Object does not exist");
}
```
@ -100,7 +97,7 @@ Find a global Object (inside an Object)
```{.cpp}
ewol::ObjectShared tmpObject = getObjectNamed("obj Name");
if (tmpObject == nullptr) {
if (tmpObject == null) {
APPL_ERROR("The Object does not exist");
}
```
@ -123,6 +120,6 @@ It could be really interesting to retrive your own instance:
```{.cpp}
ewol::ObjectShared tmpObject ...;
appl::MyOwnObjectShared myObject = std::dynamic_pointer_cast<appl::MyOwnObject>(tmpObject);
appl::MyOwnObjectShared myObject = ememory::dynamicPointerCast<appl::MyOwnObject>(tmpObject);
```

View File

@ -46,7 +46,7 @@ Get Parameter {#ewol_tutorial_object_config_param
-------------
```{.cpp}
std::string val = tmpObject->properties.get("name");
etk::String val = tmpObject->properties.get("name");
APPL_INFO("Get Object property: name='" << val << "'");
```

View File

@ -54,7 +54,7 @@ namespace appl {
void init() {
ewol::Object::init();
m_button = ewol::widget::Button::create();
if (m_button == nullptr) {
if (m_button == null) {
APPL_ERROR("Can not create button...");
return;
}
@ -114,7 +114,7 @@ namespace appl {
public:
ewol::object::Signal<> signalEmpty;
ewol::object::Signal<bool> signalBoolean;
ewol::object::Signal<std::string> signalString;
ewol::object::Signal<etk::String> signalString;
protected:
//! @brief Constructor
MyObj() :

View File

@ -29,7 +29,7 @@ Generic Properties {#ewol_tutorial_file_access_pr
By default we dertermine some basics for files.
Then we need to determine file in the tree with:
- **"DATA:XXX"** Application internal data
- **"DATA:///XXX"** Application internal data
* Linux: /usr/share/applName/
* Android: /xxx/yyy/applName.apk/asssets/
* IOs: applName.app/share
@ -47,7 +47,7 @@ Then we need to determine file in the tree with:
When you will call a file, you need to just call it with the starting name.
For example if I want to access at an application data I will call the file : "DATA:myImage.png"
For example if I want to access at an application data I will call the file : "DATA:///myImage.png"
Integrate a file in a package {#ewol_tutorial_file_access_package}
=============================
@ -61,7 +61,7 @@ In your ```lutin_xxx.py``` file add:
myModule.copy_path("relative/path/start*.png","destination/folder/")
```
And now you can acces on these file with : "DATA:destination/folder/fileNewName.svg"
And now you can acces on these file with : "DATA:///destination/folder/fileNewName.svg"
Read a file {#ewol_tutorial_file_access_read}
@ -73,7 +73,7 @@ Read a file {#ewol_tutorial_file_access_read}
...
etk::FSNode file("DATA:destination/folder/file.svg");
etk::FSNode file("DATA:///destination/folder/file.svg");
if (file.exist() == false) {
APPL_ERROR("Can not read the file (Does not exist)");
return;
@ -86,7 +86,7 @@ Read a file {#ewol_tutorial_file_access_read}
// get a char
APPL_INFO("read in: " << file << " the first char='" << file.fileGet() << "'");
// Get a line
std::string output;
etk::String output;
file.fileGets(output);
APPL_INFO("and the end of the line ='" << output << "'");
// close the file (note : if you did not do it, it will be close automaticly with an error)
@ -144,7 +144,7 @@ And when you want to change the theme, just call:
This is not done automaticly, because reloading the resources can have a real cost of time.
```
You can acces on your theme with accessing the filename: "THEME:GUI_COLOR:your/sub/path/file.xx"
You can acces on your theme with accessing the filename: "THEME_GUI_COLOR:///your/sub/path/file.xx"
An important think is that the theme file is searching in many path in the order:
- USERDATA:GUI_COLOR:your/sub/path/file.xx

View File

@ -32,7 +32,7 @@ For this example we will load a configuration file:
namespace appl {
class MyObj : public ewol::Object {
public:
eproperty::Value<std::string> propertyConfig;
eproperty::Value<etk::String> propertyConfig;
private:
ememory::SharedPtr<ewol::resource::ConfigFile> m_config;
int32_t m_configValId;
@ -40,7 +40,7 @@ namespace appl {
//! @brief Constructor
MyObj(void) :
propertyConfig(this, "file",
"DATA:ExapleConfig.json",
"DATA:///ExapleConfig.json",
"no desc",
&appl::MyObj::onChangePropertyFile),
m_configValId(-1) {
@ -57,7 +57,7 @@ namespace appl {
public:
void onChangePropertyFile() {
m_config = ewol::resource::ConfigFile::create(*propertyConfig);
if (m_config != nullptr) {
if (m_config != null) {
m_configValId = m_config->request("exampleConfigName");
}
}
@ -100,7 +100,7 @@ namespace appl {
m_resourceLevel = 4;
addObjectType("appl::MyResource");
}
void init(const std::string& _name) {
void init(const etk::String& _name) {
ewol::Resource::init(_name);
}
public:
@ -128,7 +128,7 @@ When loose hardware (juste update internal state the hardware is no more present
void removeContextToLate();
```
When user request to reload all resources (can be usefull when using file type : THEME:GUI:xxx)
When user request to reload all resources (can be usefull when using file type : THEME_GUI:///xxx)
```{.cpp}
void reload();
```

View File

@ -32,7 +32,7 @@ First create the widget:
```{.cpp}
ewol::widget::ButtonShared tmpWidget = ewol::widget::Button::create();
if (tmpWidget == nullptr) {
if (tmpWidget == null) {
APPL_CRITICAL("The widget can not be created");
}
```
@ -57,10 +57,10 @@ Call create and direct configuration
We can configure the wiget before the init() is called.
```{.cpp}
ewol::widget::ButtonShared tmpWidget = ewol::widget::Button::create(
"name", std::string("my name"),
"name", etk::String("my name"),
"expand", bvec2(true,false),
"fill", bvec2(true,true));
if (tmpWidget == nullptr) {
if (tmpWidget == null) {
APPL_CRITICAL("The widget can not be created");
}
```
@ -78,7 +78,7 @@ Call generic factory system (compositing)
```{.cpp}
#include <ewol::widget::Composer.hpp>
ewol::widget::WidgetShared tmpWidget = ewol::widget::composerGenerateString("<button name='my name' expand='true,false' fill='true,true'/>");
if (tmpWidget == nullptr) {
if (tmpWidget == null) {
APPL_CRITICAL("The widget can not be created");
}
```
@ -98,8 +98,8 @@ File ```gui.xml```
```{.cpp}
#include <ewol::widget::Composer.hpp>
ewol::widget::WidgetShared tmpWidget = ewol::widget::composerGenerateFile("DATA:gui.xml");
if (tmpWidget == nullptr) {
ewol::widget::WidgetShared tmpWidget = ewol::widget::composerGenerateFile("DATA:///gui.xml");
if (tmpWidget == null) {
APPL_CRITICAL("The widget can not be created");
}
```

View File

@ -74,7 +74,7 @@ Simple example:
continue;
}
// Get the sub-node name:
std::string widgetName = pNode.getValue();
etk::String widgetName = pNode.getValue();
if (getWidgetManager().exist(widgetName) == false) {
APPL_ERROR("[" << getId() << "] (l "<<pNode->getPos()<<") Unknown basic node='" << widgetName << "' not in : [" << getWidgetManager().list() << "]" );
continue;

View File

@ -1,13 +1,16 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#include <ewol/DrawProperty.hpp>
#include <ewol/debug.hpp>
std::ostream& ewol::operator <<(std::ostream& _os, const ewol::DrawProperty& _obj) {
#include <etk/typeInfo.hpp>
ETK_DECLARE_TYPE(ewol::DrawProperty);
etk::Stream& ewol::operator <<(etk::Stream& _os, const ewol::DrawProperty& _obj) {
_os << "{ windowsSize=" << _obj.m_windowsSize << " start=" << _obj.m_origin << " stop=" << (_obj.m_origin+_obj.m_size) << "}";
return _os;
}

View File

@ -1,7 +1,7 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#pragma once
@ -43,6 +43,6 @@ namespace ewol {
ivec2 m_size; //!< Windows clipping upper widget (can not be <0 and >m_windowsSize)
void limit(const vec2& _origin, const vec2& _size);
};
std::ostream& operator <<(std::ostream& _os, const ewol::DrawProperty& _obj);
etk::Stream& operator <<(etk::Stream& _os, const ewol::DrawProperty& _obj);
}

View File

@ -1,10 +1,12 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#include <ewol/Padding.hpp>
#include <etk/typeInfo.hpp>
ETK_DECLARE_TYPE(ewol::Padding);
ewol::Padding::Padding() {
// nothing to do...
@ -76,7 +78,7 @@ ewol::Padding ewol::Padding::operator+(const Padding& _v) {
m_value[3] + _v.m_value[3]);
}
std::ostream& ewol::operator <<(std::ostream& _os, const ewol::Padding& _obj) {
etk::Stream& ewol::operator <<(etk::Stream& _os, const ewol::Padding& _obj) {
_os << "{";
_os << _obj.xLeft();
_os << ",";

View File

@ -1,11 +1,12 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#pragma once
#include <etk/types.hpp>
#include <etk/Stream.hpp>
namespace ewol {
/**
@ -37,6 +38,6 @@ namespace ewol {
Padding operator+(const Padding& _v);
};
std::ostream& operator <<(std::ostream& _os, const ewol::Padding& _obj);
etk::Stream& operator <<(etk::Stream& _os, const ewol::Padding& _obj);
};

View File

@ -1,25 +1,41 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#include <ewol/debug.hpp>
#include <ewol/compositing/Area.hpp>
#include <etk/typeInfo.hpp>
ETK_DECLARE_TYPE(ewol::compositing::Area);
// VBO table property:
const int32_t ewol::compositing::Area::m_vboIdCoord(0);
const int32_t ewol::compositing::Area::m_vboIdCoordText(1);
const int32_t ewol::compositing::Area::m_vboIdColor(2);
#define NB_VBO (3)
ewol::compositing::Area::Area(const ivec2& _size) :
m_position(0.0, 0.0, 0.0),
m_color(etk::color::white),
m_GLprogram(nullptr),
m_GLprogram(null),
m_GLPosition(-1),
m_GLMatrix(-1),
m_GLColor(-1),
m_GLtexture(-1),
m_GLtexID(-1),
m_resource(nullptr) {
m_resource(null) {
m_resource = ewol::resource::Texture::create();
m_resource->setImageSize(_size);
m_resource->flush();
// Create the VBO:
m_VBO = gale::resource::VirtualBufferObject::create(NB_VBO);
if (m_VBO == null) {
EWOL_ERROR("can not instanciate VBO ...");
return;
}
// TO facilitate some debugs we add a name of the VBO:
m_VBO->setName("[VBO] of ewol::compositing::Area");
loadProgram();
}
@ -30,8 +46,8 @@ ewol::compositing::Area::~Area() {
void ewol::compositing::Area::loadProgram() {
// get the shader resource :
m_GLPosition = 0;
m_GLprogram = gale::resource::Program::create(std::string("{ewol}DATA:textured3D.prog"));
if (m_GLprogram != nullptr) {
m_GLprogram = gale::resource::Program::create(etk::String("DATA:///textured3D.prog?lib=ewol"));
if (m_GLprogram != null) {
m_GLPosition = m_GLprogram->getAttribute("EW_coord3d");
m_GLColor = m_GLprogram->getAttribute("EW_color");
m_GLtexture = m_GLprogram->getAttribute("EW_texture2d");
@ -41,15 +57,15 @@ void ewol::compositing::Area::loadProgram() {
}
void ewol::compositing::Area::draw(bool _disableDepthTest) {
if (m_coord.size() <= 0) {
if (m_VBO->bufferSize(m_vboIdCoord) <= 0) {
//EWOL_WARNING("Nothink to draw...");
return;
}
if (m_resource == nullptr) {
if (m_resource == null) {
// this is a normale case ... the user can choice to have no image ...
return;
}
if (m_GLprogram == nullptr) {
if (m_GLprogram == null) {
EWOL_ERROR("No shader ...");
return;
}
@ -59,24 +75,22 @@ void ewol::compositing::Area::draw(bool _disableDepthTest) {
m_GLprogram->uniformMatrix(m_GLMatrix, tmpMatrix);
// TextureID
m_GLprogram->setTexture0(m_GLtexID, m_resource->getRendererId());
// position :
m_GLprogram->sendAttribute(m_GLPosition, m_coord);
// Texture :
m_GLprogram->sendAttribute(m_GLtexture, m_coordTex);
// color :
m_GLprogram->sendAttribute(m_GLColor, m_coordColor);
// position:
m_GLprogram->sendAttributePointer(m_GLPosition, m_VBO, m_vboIdCoord);
// Texture:
m_GLprogram->sendAttributePointer(m_GLtexture, m_VBO, m_vboIdColor);
// color:
m_GLprogram->sendAttributePointer(m_GLColor, m_VBO, m_vboIdCoordText);
// Request the draw od the elements :
gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, m_coord.size());
gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, m_VBO->bufferSize(m_vboIdCoord));
m_GLprogram->unUse();
}
void ewol::compositing::Area::clear() {
// call upper class
ewol::Compositing::clear();
// reset Buffer :
m_coord.clear();
m_coordTex.clear();
m_coordColor.clear();
// reset all VBOs:
m_VBO->clear();
// reset temporal variables :
m_position = vec3(0.0, 0.0, 0.0);
}
@ -86,41 +100,43 @@ void ewol::compositing::Area::print(const ivec2& _size) {
vec2 tex(0,1);
point.setX(m_position.x());
point.setY(m_position.y());
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->pushOnBuffer(m_vboIdCoordText, tex);
tex.setValue(1,1);
point.setX(m_position.x() + _size.x());
point.setY(m_position.y());
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->pushOnBuffer(m_vboIdCoordText, tex);
tex.setValue(1,0);
point.setX(m_position.x() + _size.x());
point.setY(m_position.y() + _size.y());
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->pushOnBuffer(m_vboIdCoordText, tex);
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->pushOnBuffer(m_vboIdCoordText, tex);
tex.setValue(0,0);
point.setX(m_position.x());
point.setY(m_position.y() + _size.y());
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->pushOnBuffer(m_vboIdCoordText, tex);
tex.setValue(0,1);
point.setX(m_position.x());
point.setY(m_position.y());
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->pushOnBuffer(m_vboIdCoordText, tex);
m_VBO->flush();
}

View File

@ -1,7 +1,7 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#pragma once
@ -18,7 +18,7 @@ namespace ewol {
class Area : public ewol::Compositing {
private:
vec3 m_position; //!< The current position to draw
etk::Color<> m_color; //!< The text foreground color
etk::Color<float,4> m_color; //!< The text foreground color
private:
ememory::SharedPtr<gale::resource::Program> m_GLprogram; //!< pointer on the opengl display program
int32_t m_GLPosition; //!< openGL id on the element (vertex buffer)
@ -28,9 +28,11 @@ namespace ewol {
int32_t m_GLtexID; //!< openGL id on the element (texture ID)
private:
ememory::SharedPtr<ewol::resource::Texture> m_resource; //!< texture resources
std::vector<vec3 > m_coord; //!< internal coord of the object
std::vector<vec2 > m_coordTex; //!< internal texture coordinate for every point
std::vector<etk::Color<float> > m_coordColor; //!< internal color of the different point
protected:
static const int32_t m_vboIdCoord;
static const int32_t m_vboIdCoordText;
static const int32_t m_vboIdColor;
ememory::SharedPtr<gale::resource::VirtualBufferObject> m_VBO;
private:
/**
* @brief load the openGL program and get all the ID needed

View File

@ -1,26 +1,22 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#include <etk/types.hpp>
#include <etk/math/Matrix4.hpp>
#include <etk/math/Matrix4x4.hpp>
#include <ewol/debug.hpp>
#include <ewol/compositing/Compositing.hpp>
#include <etk/typeInfo.hpp>
ETK_DECLARE_TYPE(ewol::Compositing);
ewol::Compositing::Compositing() {
// nothing to do
}
ewol::Compositing::~Compositing() {
// nothing to do
}
void ewol::Compositing::resetMatrix() {
m_matrixApply.identity();
}

View File

@ -1,13 +1,13 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#pragma once
#include <ewol/debug.hpp>
#include <etk/types.hpp>
#include <etk/math/Matrix4.hpp>
#include <etk/math/Matrix4x4.hpp>
namespace ewol {
class Compositing {
@ -21,7 +21,7 @@ namespace ewol {
/**
* @brief Generic destructor
*/
virtual ~Compositing();
virtual ~Compositing() = default;
/**
* @brief Virtal pure function that request the draw of all openGl elements
*/

View File

@ -1,30 +1,37 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#include <ewol/debug.hpp>
#include <ewol/compositing/Drawing.hpp>
#include <etk/typeInfo.hpp>
ETK_DECLARE_TYPE(ewol::compositing::Drawing);
// VBO table property:
const int32_t ewol::compositing::Drawing::m_vboIdCoord(0);
const int32_t ewol::compositing::Drawing::m_vboIdColor(1);
#define NB_VBO (2)
#if 0
static void generatePolyGone(std::vector<vec2 > & input, std::vector<vec2 > & output )
static void generatePolyGone(etk::Vector<vec2 > & input, etk::Vector<vec2 > & output )
{
if (input.size()<3) {
return;
}
// TODO : Regenerate a linear poligone generation
for (int32_t iii=1; iii<input.size()-1; iii++) {
output.push_back(input[0]);
output.push_back(input[iii]);
output.push_back(input[iii+1]);
output.pushBack(input[0]);
output.pushBack(input[iii]);
output.pushBack(input[iii+1]);
}
//EWOL_DEBUG("generate Plygone : " << input.size() << " == > " << output.size() );
}
static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & output, float sx, float sy, float ex, float ey)
static void SutherlandHodgman(etk::Vector<vec2 > & input, etk::Vector<vec2 > & output, float sx, float sy, float ex, float ey)
{
// with Sutherland-Hodgman-Algorithm
if (input.size() <0) {
@ -49,7 +56,7 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
float bbb = lastElement.y - (aaa*lastElement.x);
destPoint.y = aaa*sx + bbb;
destPoint.x = sx;
output.push_back(destPoint);
output.pushBack(destPoint);
} else {
//EWOL_DEBUG("element OUT == > OUT ");
}
@ -57,7 +64,7 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
} else {
if(true == inside) {
//EWOL_DEBUG("element IN == > IN ");
output.push_back(input[iii]);
output.pushBack(input[iii]);
} else {
//EWOL_DEBUG("element OUT == > IN ");
//new point intersection ...
@ -66,8 +73,8 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
float bbb = lastElement.y - (aaa*lastElement.x);
destPoint.y = aaa*sx + bbb;
destPoint.x = sx;
output.push_back(destPoint);
output.push_back(input[iii]);
output.pushBack(destPoint);
output.pushBack(input[iii]);
}
inside = true;
}
@ -94,7 +101,7 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
float bbb = lastElement.x - (aaa*lastElement.y);
destPoint.y = sy;
destPoint.x = sy*aaa + bbb;
output.push_back(destPoint);
output.pushBack(destPoint);
} else {
//EWOL_DEBUG("element OUT == > OUT ");
}
@ -102,7 +109,7 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
} else {
if(true == inside) {
//EWOL_DEBUG("element IN == > IN ");
output.push_back(input[iii]);
output.pushBack(input[iii]);
} else {
//EWOL_DEBUG("element OUT == > IN ");
//new point intersection ...
@ -111,8 +118,8 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
float bbb = lastElement.x - (aaa*lastElement.y);
destPoint.y = sy;
destPoint.x = sy*aaa + bbb;
output.push_back(destPoint);
output.push_back(input[iii]);
output.pushBack(destPoint);
output.pushBack(input[iii]);
}
inside = true;
}
@ -139,7 +146,7 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
float bbb = lastElement.y - (aaa*lastElement.x);
destPoint.y = aaa*ex + bbb;
destPoint.x = ex;
output.push_back(destPoint);
output.pushBack(destPoint);
} else {
//EWOL_DEBUG("element OUT == > OUT ");
}
@ -147,7 +154,7 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
} else {
if(true == inside) {
//EWOL_DEBUG("element IN == > IN ");
output.push_back(input[iii]);
output.pushBack(input[iii]);
} else {
//EWOL_DEBUG("element OUT == > IN ");
//new point intersection ...
@ -156,8 +163,8 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
float bbb = lastElement.y - (aaa*lastElement.x);
destPoint.y = aaa*ex + bbb;
destPoint.x = ex;
output.push_back(destPoint);
output.push_back(input[iii]);
output.pushBack(destPoint);
output.pushBack(input[iii]);
}
inside = true;
}
@ -183,7 +190,7 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
float bbb = lastElement.x - (aaa*lastElement.y);
destPoint.y = ey;
destPoint.x = ey*aaa + bbb;
output.push_back(destPoint);
output.pushBack(destPoint);
} else {
//EWOL_DEBUG("element OUT == > OUT ");
}
@ -191,7 +198,7 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
} else {
if(true == inside) {
//EWOL_DEBUG("element IN == > IN ");
output.push_back(input[iii]);
output.pushBack(input[iii]);
} else {
//EWOL_DEBUG("element OUT == > IN ");
//new point intersection ...
@ -200,8 +207,8 @@ static void SutherlandHodgman(std::vector<vec2 > & input, std::vector<vec2 > & o
float bbb = lastElement.x - (aaa*lastElement.y);
destPoint.y = ey;
destPoint.x = ey*aaa + bbb;
output.push_back(destPoint);
output.push_back(input[iii]);
output.pushBack(destPoint);
output.pushBack(input[iii]);
}
inside = true;
}
@ -222,7 +229,7 @@ ewol::compositing::Drawing::Drawing() :
m_clippingEnable(false),
m_color(etk::color::black),
m_colorBg(etk::color::none),
m_GLprogram(nullptr),
m_GLprogram(null),
m_GLPosition(-1),
m_GLMatrix(-1),
m_GLMatrixPosition(-1),
@ -234,6 +241,14 @@ ewol::compositing::Drawing::Drawing() :
m_triangle[iii] = m_position;
m_tricolor[iii] = m_color;
}
// Create the VBO:
m_VBO = gale::resource::VirtualBufferObject::create(NB_VBO);
if (m_VBO == null) {
EWOL_ERROR("can not instanciate VBO ...");
return;
}
// TO facilitate some debugs we add a name of the VBO:
m_VBO->setName("[VBO] of ewol::compositing::Area");
}
ewol::compositing::Drawing::~Drawing() {
@ -243,12 +258,12 @@ ewol::compositing::Drawing::~Drawing() {
void ewol::compositing::Drawing::generateTriangle() {
m_triElement = 0;
m_coord.push_back(m_triangle[0]);
m_coordColor.push_back(m_tricolor[0]);
m_coord.push_back(m_triangle[1]);
m_coordColor.push_back(m_tricolor[1]);
m_coord.push_back(m_triangle[2]);
m_coordColor.push_back(m_tricolor[2]);
m_VBO->pushOnBuffer(m_vboIdCoord, m_triangle[0]);
m_VBO->pushOnBuffer(m_vboIdColor, m_tricolor[0]);
m_VBO->pushOnBuffer(m_vboIdCoord, m_triangle[1]);
m_VBO->pushOnBuffer(m_vboIdColor, m_tricolor[1]);
m_VBO->pushOnBuffer(m_vboIdCoord, m_triangle[2]);
m_VBO->pushOnBuffer(m_vboIdColor, m_tricolor[2]);
}
void ewol::compositing::Drawing::internalSetColor(const etk::Color<>& _color) {
@ -269,6 +284,7 @@ void ewol::compositing::Drawing::setPoint(const vec3& _point) {
if (m_triElement >= 3) {
generateTriangle();
}
m_VBO->flush();
}
void ewol::compositing::Drawing::resetCount() {
@ -283,9 +299,9 @@ void ewol::compositing::Drawing::loadProgram() {
// remove previous loading ... in case
unLoadProgram();
// oad the new ...
m_GLprogram = gale::resource::Program::create("{ewol}DATA:color3.prog");
m_GLprogram = gale::resource::Program::create("DATA:///color3.prog?lib=ewol");
// get the shader resource :
if (m_GLprogram != nullptr) {
if (m_GLprogram != null) {
m_GLPosition = m_GLprogram->getAttribute("EW_coord3d");
m_GLColor = m_GLprogram->getAttribute("EW_color");
m_GLMatrix = m_GLprogram->getUniform("EW_MatrixTransformation");
@ -294,12 +310,12 @@ void ewol::compositing::Drawing::loadProgram() {
}
void ewol::compositing::Drawing::draw(bool _disableDepthTest) {
if (m_coord.size() <= 0) {
// TODO : a remÚtre ...
if (m_VBO->bufferSize(m_vboIdCoord) <= 0) {
// TODO : set it back ...
//EWOL_WARNING("Nothink to draw...");
return;
}
if (m_GLprogram == nullptr) {
if (m_GLprogram == null) {
EWOL_ERROR("No shader ...");
return;
}
@ -309,12 +325,12 @@ void ewol::compositing::Drawing::draw(bool _disableDepthTest) {
m_GLprogram->uniformMatrix(m_GLMatrix, tmpMatrix);
mat4 tmpMatrix2;
m_GLprogram->uniformMatrix(m_GLMatrixPosition, tmpMatrix2);
// position :
m_GLprogram->sendAttribute(m_GLPosition, m_coord);
// color :
m_GLprogram->sendAttribute(m_GLColor, m_coordColor);
// position:
m_GLprogram->sendAttributePointer(m_GLPosition, m_VBO, m_vboIdCoord);
// color:
m_GLprogram->sendAttributePointer(m_GLColor, m_VBO, m_vboIdColor);
// Request the draw od the elements :
gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, m_coord.size());
gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, m_VBO->bufferSize(m_vboIdCoord));
m_GLprogram->unUse();
}
@ -322,8 +338,7 @@ void ewol::compositing::Drawing::clear() {
// call upper class
ewol::Compositing::clear();
// reset Buffer :
m_coord.clear();
m_coordColor.clear();
m_VBO->clear();
// reset temporal variables :
m_position = vec3(0.0, 0.0, 0.0);

View File

@ -1,7 +1,7 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#pragma once
@ -29,9 +29,10 @@ namespace ewol {
int32_t m_GLMatrix; //!< openGL id on the element (transformation matrix)
int32_t m_GLMatrixPosition; //!< position matrix
int32_t m_GLColor; //!< openGL id on the element (color buffer)
public: // Background Color (display only when needed)
std::vector<vec3 > m_coord; //!< internal position for the text display
std::vector<etk::Color<float> > m_coordColor; //!< internal color of the background
protected:
static const int32_t m_vboIdCoord;
static const int32_t m_vboIdColor;
ememory::SharedPtr<gale::resource::VirtualBufferObject> m_VBO;
public:
/**
* @brief Basic constructor
@ -53,7 +54,7 @@ namespace ewol {
float m_thickness; //!< when drawing line and other things
int32_t m_triElement; //!< special counter of the single dot generated
vec3 m_triangle[3]; //!< Register every system with a combinaison of tiangle
etk::Color<float> m_tricolor[3]; //!< Register every the associated color foreground
etk::Color<float,4> m_tricolor[3]; //!< Register every the associated color foreground
// internal API for the generation abstraction of triangles
/**
* @brief Lunch the generation of triangle

View File

@ -1,15 +1,23 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#include <ewol/debug.hpp>
#include <ewol/compositing/Image.hpp>
#include <etk/typeInfo.hpp>
ETK_DECLARE_TYPE(ewol::compositing::Image);
const int32_t ewol::compositing::Image::sizeAuto(0);
ewol::compositing::Image::Image(const std::string& _imageName,
// VBO table property:
const int32_t ewol::compositing::Image::m_vboIdCoord(0);
const int32_t ewol::compositing::Image::m_vboIdCoordTex(1);
const int32_t ewol::compositing::Image::m_vboIdColor(2);
#define NB_VBO (3)
ewol::compositing::Image::Image(const etk::Uri& _imageName,
bool _df,
int32_t _size) :
m_filename(_imageName),
@ -20,15 +28,23 @@ ewol::compositing::Image::Image(const std::string& _imageName,
m_clippingEnable(false),
m_color(etk::color::white),
m_angle(0.0),
m_GLprogram(nullptr),
m_GLprogram(null),
m_GLPosition(-1),
m_GLMatrix(-1),
m_GLColor(-1),
m_GLtexture(-1),
m_GLtexID(-1),
m_distanceFieldMode(_df),
m_resource(nullptr),
m_resourceDF(nullptr) {
m_resource(null),
m_resourceDF(null) {
// Create the VBO:
m_VBO = gale::resource::VirtualBufferObject::create(NB_VBO);
if (m_VBO == null) {
EWOL_ERROR("can not instanciate VBO ...");
return;
}
// TO facilitate some debugs we add a name of the VBO:
m_VBO->setName("[VBO] of ewol::compositing::Image");
setSource(_imageName, _size);
loadProgram();
}
@ -38,15 +54,15 @@ ewol::compositing::Image::~Image() {
}
void ewol::compositing::Image::loadProgram() {
// get the shader resource :
// get the shader resource:
m_GLPosition = 0;
m_GLprogram.reset();
if (m_distanceFieldMode == true) {
m_GLprogram = gale::resource::Program::create("{ewol}DATA:texturedDF.prog");
m_GLprogram = gale::resource::Program::create("DATA:///texturedDF.prog?lib=ewol");
} else {
m_GLprogram = gale::resource::Program::create("{ewol}DATA:textured3D.prog");
m_GLprogram = gale::resource::Program::create("DATA:///textured3D.prog?lib=ewol");
}
if (m_GLprogram != nullptr) {
if (m_GLprogram != null) {
m_GLPosition = m_GLprogram->getAttribute("EW_coord3d");
m_GLColor = m_GLprogram->getAttribute("EW_color");
m_GLtexture = m_GLprogram->getAttribute("EW_texture2d");
@ -56,19 +72,21 @@ void ewol::compositing::Image::loadProgram() {
}
void ewol::compositing::Image::draw(bool _disableDepthTest) {
if (m_coord.size() <= 0) {
if (m_VBO->bufferSize(m_vboIdCoord) <= 0) {
//EWOL_WARNING("Nothink to draw...");
return;
}
if ( m_resource == nullptr
&& m_resourceDF == nullptr) {
if ( m_resource == null
&& m_resourceDF == null
&& m_resourceImage == null) {
// this is a normale case ... the user can choice to have no image ...
return;
}
if (m_GLprogram == nullptr) {
if (m_GLprogram == null) {
EWOL_ERROR("No shader ...");
return;
}
//EWOL_WARNING("Display image : " << m_VBO->bufferSize(m_vboIdCoord));
if (_disableDepthTest == true) {
gale::openGL::disable(gale::openGL::flag_depthTest);
} else {
@ -76,10 +94,12 @@ void ewol::compositing::Image::draw(bool _disableDepthTest) {
}
// set Matrix : translation/positionMatrix
mat4 tmpMatrix = gale::openGL::getMatrix()*m_matrixApply;
m_GLprogram->use();
m_GLprogram->use();
m_GLprogram->uniformMatrix(m_GLMatrix, tmpMatrix);
// TextureID
if (m_resource != nullptr) {
if (m_resourceImage != null) {
m_GLprogram->setTexture0(m_GLtexID, m_resourceImage->getRendererId());
} else if (m_resource != null) {
if (m_distanceFieldMode == true) {
EWOL_ERROR("FONT type error Request distance field and display normal ...");
}
@ -90,14 +110,14 @@ void ewol::compositing::Image::draw(bool _disableDepthTest) {
}
m_GLprogram->setTexture0(m_GLtexID, m_resourceDF->getRendererId());
}
// position :
m_GLprogram->sendAttribute(m_GLPosition, m_coord);
// Texture :
m_GLprogram->sendAttribute(m_GLtexture, m_coordTex);
// color :
m_GLprogram->sendAttribute(m_GLColor, m_coordColor);
// Request the draw od the elements :
gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, m_coord.size());
// position:
m_GLprogram->sendAttributePointer(m_GLPosition, m_VBO, m_vboIdCoord);
// Texture:
m_GLprogram->sendAttributePointer(m_GLtexture, m_VBO, m_vboIdCoordTex);
// color:
m_GLprogram->sendAttributePointer(m_GLColor, m_VBO, m_vboIdColor);
// Request the draw of the elements:
gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, m_VBO->bufferSize(m_vboIdCoord));
m_GLprogram->unUse();
}
@ -105,9 +125,7 @@ void ewol::compositing::Image::clear() {
// call upper class
ewol::Compositing::clear();
// reset Buffer :
m_coord.clear();
m_coordTex.clear();
m_coordColor.clear();
m_VBO->clear();
// reset temporal variables :
m_position = vec3(0.0, 0.0, 0.0);
m_clippingPosStart = vec3(0.0, 0.0, 0.0);
@ -152,49 +170,58 @@ void ewol::compositing::Image::print(const vec2& _size) {
}
void ewol::compositing::Image::printPart(const vec2& _size,
const vec2& _sourcePosStart,
const vec2& _sourcePosStop) {
vec2 _sourcePosStart,
vec2 _sourcePosStop) {
if (m_resource == null) {
return;
}
vec2 openGLSize = vec2(m_resource->getOpenGlSize().x(), m_resource->getOpenGlSize().y());
vec2 usefullSize = m_resource->getUsableSize();
vec2 ratio = usefullSize/openGLSize;
_sourcePosStart *= ratio;
_sourcePosStop *= ratio;
EWOL_VERBOSE(" openGLSize=" << openGLSize << " usableSize=" << usefullSize << " start=" << _sourcePosStart << " stop=" << _sourcePosStop);
//EWOL_ERROR("Debug image " << m_filename << " ==> " << m_position << " " << _size << " " << _sourcePosStart << " " << _sourcePosStop);
if (m_angle == 0.0f) {
vec3 point = m_position;
vec2 tex(_sourcePosStart.x(),_sourcePosStop.y());
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
tex.setValue(_sourcePosStop.x(),_sourcePosStop.y());
point.setX(m_position.x() + _size.x());
point.setY(m_position.y());
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
tex.setValue(_sourcePosStop.x(),_sourcePosStart.y());
point.setX(m_position.x() + _size.x());
point.setY(m_position.y() + _size.y());
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
tex.setValue(_sourcePosStart.x(),_sourcePosStart.y());
point.setX(m_position.x());
point.setY(m_position.y() + _size.y());
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
tex.setValue(_sourcePosStart.x(),_sourcePosStop.y());
point.setX(m_position.x());
point.setY(m_position.y());
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->flush();
return;
}
vec3 center = m_position + vec3(_size.x(),_size.y(),0)/2.0f;
@ -205,99 +232,122 @@ void ewol::compositing::Image::printPart(const vec2& _size,
point.setValue(-limitedSize.x(), -limitedSize.y(), 0);
point = point.rotate(vec3(0,0,1), m_angle) + center;
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
tex.setValue(_sourcePosStop.x(),_sourcePosStop.y());
point.setValue(limitedSize.x(), -limitedSize.y(), 0);
point = point.rotate(vec3(0,0,1), m_angle) + center;
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
tex.setValue(_sourcePosStop.x(),_sourcePosStart.y());
point.setValue(limitedSize.x(), limitedSize.y(), 0);
point = point.rotate(vec3(0,0,1), m_angle) + center;
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
tex.setValue(_sourcePosStart.x(),_sourcePosStart.y());
point.setValue(-limitedSize.x(), limitedSize.y(), 0);
point = point.rotate(vec3(0,0,1), m_angle) + center;
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
tex.setValue(_sourcePosStart.x(),_sourcePosStop.y());
point.setValue(-limitedSize.x(), -limitedSize.y(), 0);
point = point.rotate(vec3(0,0,1), m_angle) + center;
m_coord.push_back(point);
m_coordTex.push_back(tex);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdCoord, point);
m_VBO->pushOnBuffer(m_vboIdCoordTex, tex);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->flush();
}
void ewol::compositing::Image::setSource(const std::string& _newFile, const vec2& _size) {
void ewol::compositing::Image::setSource(const etk::Uri& _uri, const vec2& _size) {
clear();
if ( m_filename == _uri
&& m_requestSize == _size) {
// Nothing to do ...
return;
}
ememory::SharedPtr<ewol::resource::TextureFile> resource = m_resource;
ememory::SharedPtr<ewol::resource::ImageDF> resourceDF = m_resourceDF;
m_filename = _newFile;
ememory::SharedPtr<ewol::resource::Texture> resourceTex = m_resourceImage;
m_filename = _uri;
m_requestSize = _size;
m_resource.reset();
m_resourceDF.reset();
m_resourceImage.reset();
ivec2 tmpSize(_size.x(),_size.y());
// note that no image can be loaded...
if (_newFile != "") {
if (_uri.isEmpty() == false) {
// link to new one
if (m_distanceFieldMode == false) {
m_resource = ewol::resource::TextureFile::create(m_filename, tmpSize);
if (m_resource == nullptr) {
if (m_resource == null) {
EWOL_ERROR("Can not get Image resource");
}
} else {
m_resourceDF = ewol::resource::ImageDF::create(m_filename, tmpSize);
if (m_resourceDF == nullptr) {
if (m_resourceDF == null) {
EWOL_ERROR("Can not get Image resource DF");
}
}
}
if ( m_resource == nullptr
&& m_resourceDF == nullptr) {
if (resource != nullptr) {
if ( m_resource == null
&& m_resourceDF == null
&& m_resourceImage == null) {
if (resource != null) {
EWOL_WARNING("Retrive previous resource");
m_resource = resource;
}
if (resourceDF != nullptr) {
if (resourceDF != null) {
EWOL_WARNING("Retrive previous resource (DF)");
m_resourceDF = resourceDF;
}
if (resourceTex != null) {
EWOL_WARNING("Retrive previous resource (image)");
m_resourceImage = resourceTex;
}
}
}
void ewol::compositing::Image::setSource(egami::Image _image) {
clear();
m_filename = "direct image BUFFER";
m_requestSize = _image.getSize();
m_resourceImage = ewol::resource::Texture::create();
m_resourceImage->set(etk::move(_image));
}
bool ewol::compositing::Image::hasSources() {
return m_resource != nullptr
|| m_resourceDF != nullptr;
return m_resource != null
|| m_resourceDF != null;
}
vec2 ewol::compositing::Image::getRealSize() {
if ( m_resource == nullptr
&& m_resourceDF == nullptr) {
if ( m_resource == null
&& m_resourceDF == null
&& m_resourceImage == null) {
return vec2(0,0);
}
if (m_resource != nullptr) {
if (m_resource != null) {
return m_resource->getRealSize();
}
if (m_resourceDF != nullptr) {
if (m_resourceDF != null) {
return m_resourceDF->getRealSize();
}
if (m_resourceImage != null) {
return m_resourceImage->getUsableSize();
}
return vec2(0,0);
}

View File

@ -1,14 +1,14 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#pragma once
#include <ewol/debug.hpp>
#include <ewol/compositing/Compositing.hpp>
#include <gale/resource/Program.hpp>
#include <ewol/resource/Image.hpp>
#include <ewol/resource/TextureFile.hpp>
#include <ewol/resource/ImageDF.hpp>
namespace ewol {
@ -17,14 +17,14 @@ namespace ewol {
public:
static const int32_t sizeAuto;
private:
std::string m_filename;
etk::Uri m_filename;
ivec2 m_requestSize;
vec3 m_position; //!< The current position to draw
vec3 m_clippingPosStart; //!< Clipping start position
vec3 m_clippingPosStop; //!< Clipping stop position
bool m_clippingEnable; //!< true if the clipping must be activated
private:
etk::Color<> m_color; //!< The text foreground color
etk::Color<float,4> m_color; //!< The text foreground color
float m_angle; //!< Angle to set at the axes
private:
ememory::SharedPtr<gale::resource::Program> m_GLprogram; //!< pointer on the opengl display program
@ -36,10 +36,12 @@ namespace ewol {
private:
bool m_distanceFieldMode; //!< select distance field mode
ememory::SharedPtr<ewol::resource::TextureFile> m_resource; //!< texture resources
ememory::SharedPtr<ewol::resource::Texture> m_resourceImage; //!< texture resources
ememory::SharedPtr<ewol::resource::ImageDF> m_resourceDF; //!< texture resources
std::vector<vec3 > m_coord; //!< internal coord of the object
std::vector<vec2 > m_coordTex; //!< internal texture coordinate for every point
std::vector<etk::Color<float> > m_coordColor; //!< internal color of the different point
static const int32_t m_vboIdCoord;
static const int32_t m_vboIdCoordTex;
static const int32_t m_vboIdColor;
ememory::SharedPtr<gale::resource::VirtualBufferObject> m_VBO;
private:
/**
* @brief load the openGL program and get all the ID needed
@ -48,11 +50,11 @@ namespace ewol {
public:
/**
* @brief generic constructor
* @param[in] _imageName Name of the file that might be loaded
* @param[in] _uri URI of the file that might be loaded
* @param[in] _df enable distance field mode
* @param[in] _size for the image when Verctorial image loading is requested
*/
Image(const std::string& _imageName="",
Image(const etk::Uri& _uri="",
bool _df=false,
int32_t _size=ewol::compositing::Image::sizeAuto);
/**
@ -150,17 +152,18 @@ namespace ewol {
* @param[in] _sourcePosStop Stop position in the image [0..1] (can be bigger but this repeate the image).
*/
void printPart(const vec2& _size,
const vec2& _sourcePosStart,
const vec2& _sourcePosStop);
vec2 _sourcePosStart,
vec2 _sourcePosStop);
/**
* @brief change the image Source == > can not be done to display 2 images at the same time ...
* @param[in] _newFile New file of the Image
* @param[in] _uri New file of the Image
* @param[in] _size for the image when Verctorial image loading is requested
*/
void setSource(const std::string& _newFile, int32_t _size=32) {
setSource(_newFile, vec2(_size,_size));
void setSource(const etk::Uri& _uri, int32_t _size=32) {
setSource(_uri, vec2(_size,_size));
};
void setSource(const std::string& _newFile, const vec2& _size);
void setSource(const etk::Uri& _uri, const vec2& _size);
void setSource(egami::Image _image);
/**
* @brief Sometimes the user declare an image but not allocate the ressources all the time, this is to know it ..
* @return the validity od the resources.

View File

@ -1,30 +1,37 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#include <etk/os/FSNode.hpp>
#include <etk/uri/uri.hpp>
#include <ewol/debug.hpp>
#include <ewol/compositing/Shaper.hpp>
#include <etk/typeInfo.hpp>
ETK_DECLARE_TYPE(ewol::compositing::Shaper);
ewol::compositing::Shaper::Shaper(const std::string& _shaperName) :
m_name(_shaperName),
m_config(nullptr),
// VBO table property:
const int32_t ewol::compositing::Shaper::m_vboIdCoord(0);
const int32_t ewol::compositing::Shaper::m_vboIdPos(1);
#define NB_VBO (2)
ewol::compositing::Shaper::Shaper(const etk::Uri& _uri) :
m_uri(_uri),
m_config(null),
m_confIdMode(-1),
m_confIdDisplayOutside(-1),
m_confIdChangeTime(-1),
m_confProgramFile(-1),
m_confColorFile(-1),
m_confImageFile(-1),
m_GLprogram(nullptr),
m_GLprogram(null),
m_GLPosition(-1),
m_GLMatrix(-1),
m_GLStateActivate(-1),
m_GLStateOld(-1),
m_GLStateNew(-1),
m_GLStateTransition(-1),
m_resourceTexture(nullptr),
m_resourceTexture(null),
m_nextStatusRequested(-1),
m_propertyOrigin(0,0),
m_propertySize(0,0),
@ -40,10 +47,14 @@ ewol::compositing::Shaper::Shaper(const std::string& _shaperName) :
m_confIdBorder[iii] = -1;
m_confIdPaddingIn[iii] = -1;
}
for (size_t iii=0; iii<SHAPER_NB_MAX_VERTEX; ++iii) {
m_coord[iii] = vec2(0,0);
m_pos[iii] = vec2(0,0);
// Create the VBO:
m_VBO = gale::resource::VirtualBufferObject::create(NB_VBO);
if (m_VBO == null) {
EWOL_ERROR("can not instanciate VBO ...");
return;
}
// TO facilitate some debugs we add a name of the VBO:
m_VBO->setName("[VBO] of ewol::compositing::Shaper");
loadProgram();
}
@ -61,10 +72,7 @@ void ewol::compositing::Shaper::unLoadProgram() {
m_confIdBorder[iii] = -1;
m_confIdPaddingIn[iii] = -1;
}
for (size_t iii=0; iii<SHAPER_NB_MAX_VERTEX; ++iii) {
m_coord[iii] = vec2(0,0);
m_pos[iii] = vec2(0,0);
}
m_VBO->clear();
m_confIdMode = -1;
m_confIdDisplayOutside = -1;
m_nbVertexToDisplay = 0;
@ -75,12 +83,12 @@ void ewol::compositing::Shaper::unLoadProgram() {
}
void ewol::compositing::Shaper::loadProgram() {
if (m_name == "") {
if (m_uri.isEmpty() == true) {
EWOL_DEBUG("no Shaper set for loading resources ...");
return;
}
m_config = ewol::resource::ConfigFile::create(m_name);
if (m_config != nullptr) {
m_config = ewol::resource::ConfigFile::create(m_uri.get());
if (m_config != null) {
m_confIdMode = m_config->request("mode");
m_confIdDisplayOutside = m_config->request("display-outside");
m_confIdPaddingOut[shaperPosLeft] = m_config->request("padding-out-left");
@ -100,13 +108,14 @@ void ewol::compositing::Shaper::loadProgram() {
m_confImageFile = m_config->request("image");
m_confColorFile = m_config->request("color");
}
std::string basicShaderFile = m_config->getString(m_confProgramFile);
etk::String basicShaderFile = m_config->getString(m_confProgramFile);
if (basicShaderFile != "") {
std::string tmpFilename(basicShaderFile);
if (tmpFilename.find(':') == std::string::npos) {
etk::String tmpFilename(basicShaderFile);
if (tmpFilename.find(':') == etk::String::npos) {
// get the relative position of the current file ...
etk::FSNode file(m_name);
tmpFilename = file.getRelativeFolder() + basicShaderFile;
etk::Uri tmpUri = m_uri;
tmpUri.setPath(m_uri.getPath().getParent() / basicShaderFile);
tmpFilename = tmpUri.get();
EWOL_DEBUG("Shaper try load shader : '" << tmpFilename << "' with base : '" << basicShaderFile << "'");
} else {
EWOL_DEBUG("Shaper try load shader : '" << tmpFilename << "'");
@ -114,7 +123,7 @@ void ewol::compositing::Shaper::loadProgram() {
// get the shader resource :
m_GLPosition = 0;
m_GLprogram = gale::resource::Program::create(tmpFilename);
if (m_GLprogram != nullptr) {
if (m_GLprogram != null) {
m_GLPosition = m_GLprogram->getAttribute("EW_coord2d");
m_GLMatrix = m_GLprogram->getUniform("EW_MatrixTransformation");
// Widget property == > for the Vertex shader
@ -127,13 +136,14 @@ void ewol::compositing::Shaper::loadProgram() {
// for the texture ID :
m_GLtexID = m_GLprogram->getUniform("EW_texID");
}
std::string basicImageFile = m_config->getString(m_confImageFile);
etk::String basicImageFile = m_config->getString(m_confImageFile);
if (basicImageFile != "") {
std::string tmpFilename(basicImageFile);
if (tmpFilename.find(':') == std::string::npos) {
etk::String tmpFilename(basicImageFile);
if (tmpFilename.find(':') == etk::String::npos) {
// get the relative position of the current file ...
etk::FSNode file(m_name);
tmpFilename = file.getRelativeFolder() + basicImageFile;
etk::Uri tmpUri = m_uri;
tmpUri.setPath(m_uri.getPath().getParent() / basicImageFile);
tmpFilename = tmpUri.get();
EWOL_DEBUG("Shaper try load shaper image : '" << tmpFilename << "' with base : '" << basicImageFile << "'");
} else {
EWOL_DEBUG("Shaper try load shaper image : '" << tmpFilename << "'");
@ -142,48 +152,52 @@ void ewol::compositing::Shaper::loadProgram() {
m_resourceTexture = ewol::resource::TextureFile::create(tmpFilename, size);
}
}
std::string basicColorFile = m_config->getString(m_confColorFile);
etk::String basicColorFile = m_config->getString(m_confColorFile);
if (basicColorFile != "") {
std::string tmpFilename(basicColorFile);
if (tmpFilename.find(':') == std::string::npos) {
etk::String tmpFilename(basicColorFile);
if (tmpFilename.find(':') == etk::String::npos) {
// get the relative position of the current file ...
etk::FSNode file(m_name);
tmpFilename = file.getRelativeFolder() + basicColorFile;
etk::Uri tmpUri = m_uri;
tmpUri.setPath(m_uri.getPath().getParent() / basicColorFile);
tmpFilename = tmpUri.get();
EWOL_DEBUG("Shaper try load colorFile : '" << tmpFilename << "' with base : '" << basicColorFile << "'");
} else {
EWOL_DEBUG("Shaper try load colorFile : '" << tmpFilename << "'");
}
m_colorProperty = ewol::resource::ColorFile::create(tmpFilename);
if ( m_GLprogram != nullptr
&& m_colorProperty != nullptr) {
std::vector<std::string> listColor = m_colorProperty->getColors();
if ( m_GLprogram != null
&& m_colorProperty != null) {
etk::Vector<etk::String> listColor = m_colorProperty->getColors();
for (auto tmpColor : listColor) {
int32_t glId = m_GLprogram->getUniform(tmpColor);
int32_t colorID = m_colorProperty->request(tmpColor);
m_listAssiciatedId.push_back(ivec2(glId, colorID));
m_listAssiciatedId.pushBack(ivec2(glId, colorID));
}
}
}
}
void ewol::compositing::Shaper::draw(bool _disableDepthTest) {
if (m_config == nullptr) {
if (m_config == null) {
// this is a normale case ... the user can choice to have no config basic file ...
return;
}
if (m_GLprogram == nullptr) {
if (m_GLprogram == null) {
EWOL_ERROR("No shader ...");
return;
}
if (m_VBO->bufferSize(m_vboIdCoord) <= 0) {
return;
}
//glScalef(m_scaling.x, m_scaling.y, 1.0);
m_GLprogram->use();
// set Matrix : translation/positionMatrix
mat4 tmpMatrix = gale::openGL::getMatrix();
m_GLprogram->uniformMatrix(m_GLMatrix, tmpMatrix);
// position :
m_GLprogram->sendAttribute(m_GLPosition, 2/*x,y*/, m_coord);
// position:
m_GLprogram->sendAttributePointer(m_GLPosition, m_VBO, m_vboIdCoord);
// property
m_GLprogram->sendAttribute(m_GLPropertyPos, 2/*x,y*/, m_pos);
m_GLprogram->sendAttributePointer(m_GLPropertyPos, m_VBO, m_vboIdPos);
// all entry parameters :
m_GLprogram->uniform1i(m_GLStateActivate, m_stateActivate);
m_GLprogram->uniform1i(m_GLStateOld, m_stateOld);
@ -192,7 +206,7 @@ void ewol::compositing::Shaper::draw(bool _disableDepthTest) {
for (auto element : m_listAssiciatedId) {
m_GLprogram->uniform(element.x(), m_colorProperty->get(element.y()));
}
if (m_resourceTexture != nullptr) {
if (m_resourceTexture != null) {
// TextureID
m_GLprogram->setTexture0(m_GLtexID, m_resourceTexture->getRendererId());
}
@ -208,7 +222,7 @@ void ewol::compositing::Shaper::clear() {
m_propertyOrigin = vec2(0,0);
m_propertyInsidePosition = vec2(0,0);
m_propertyInsideSize = vec2(0,0);
memset(m_coord, 0, sizeof(m_coord));
m_VBO->clear();
}
bool ewol::compositing::Shaper::setState(int32_t _newState) {
@ -261,12 +275,12 @@ bool ewol::compositing::Shaper::periodicCall(const ewol::event::Time& _event) {
}
}
float timeRelativity = 0.0f;
if (m_config != nullptr) {
if (m_config != null) {
timeRelativity = m_config->getNumber(m_confIdChangeTime) / 1000.0;
}
m_stateTransition += _event.getDeltaCall() / timeRelativity;
//m_stateTransition += _event.getDeltaCall();
m_stateTransition = std::avg(0.0f, m_stateTransition, 1.0f);
m_stateTransition = etk::avg(0.0f, m_stateTransition, 1.0f);
EWOL_VERBOSE("relative=" << timeRelativity << " Transition : " << m_stateTransition);
}
return true;
@ -289,101 +303,104 @@ void ewol::compositing::Shaper::addVertexLine(float _yTop,
bool _displayOutside) {
if (m_nbVertexToDisplay != 0) {
// change line ...
m_coord[m_nbVertexToDisplay] = m_coord[m_nbVertexToDisplay-1];
m_pos[m_nbVertexToDisplay] = m_pos[m_nbVertexToDisplay-1];
m_VBO->pushOnBuffer(m_vboIdCoord,
m_VBO->getOnBufferVec2(m_vboIdCoord, m_nbVertexToDisplay-1));
m_VBO->pushOnBuffer(m_vboIdPos,
m_VBO->getOnBufferVec2(m_vboIdPos, m_nbVertexToDisplay-1));
m_nbVertexToDisplay++;
if (_displayOutside == true) {
m_coord[m_nbVertexToDisplay].setValue(_x1, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[0],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x1, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[0],_yValButtom));
m_nbVertexToDisplay++;
} else {
m_coord[m_nbVertexToDisplay].setValue(_x2, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[1],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x2, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[1],_yValButtom));
m_nbVertexToDisplay++;
}
}
if (_displayOutside == true) {
// A
m_coord[m_nbVertexToDisplay].setValue(_x1, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[0],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x1, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[0],_yValButtom));
m_nbVertexToDisplay++;
m_coord[m_nbVertexToDisplay].setValue(_x1, _yTop);
m_pos[m_nbVertexToDisplay].setValue(_table[0],_yValTop);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x1, _yTop));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[0],_yValTop));
m_nbVertexToDisplay++;
m_coord[m_nbVertexToDisplay].setValue(_x2, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[1],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x2, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[1],_yValButtom));
m_nbVertexToDisplay++;
// B
m_coord[m_nbVertexToDisplay].setValue(_x2, _yTop);
m_pos[m_nbVertexToDisplay].setValue(_table[1],_yValTop);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x2, _yTop));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[1],_yValTop));
m_nbVertexToDisplay++;
// C
m_coord[m_nbVertexToDisplay].setValue(_x3, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[2],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x3, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[2],_yValButtom));
m_nbVertexToDisplay++;
} else {
// C
m_coord[m_nbVertexToDisplay].setValue(_x2, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[1],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x2, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[1],_yValButtom));
m_nbVertexToDisplay++;
m_coord[m_nbVertexToDisplay].setValue(_x2, _yTop);
m_pos[m_nbVertexToDisplay].setValue(_table[1],_yValTop);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x2, _yTop));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[1],_yValTop));
m_nbVertexToDisplay++;
m_coord[m_nbVertexToDisplay].setValue(_x3, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[2],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x3, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[2],_yValButtom));
m_nbVertexToDisplay++;
}
// D
m_coord[m_nbVertexToDisplay].setValue(_x3, _yTop);
m_pos[m_nbVertexToDisplay].setValue(_table[2],_yValTop);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x3, _yTop));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[2],_yValTop));
m_nbVertexToDisplay++;
// E
m_coord[m_nbVertexToDisplay].setValue(_x4, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[3],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x4, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[3],_yValButtom));
m_nbVertexToDisplay++;
// F
m_coord[m_nbVertexToDisplay].setValue(_x4, _yTop);
m_pos[m_nbVertexToDisplay].setValue(_table[3],_yValTop);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x4, _yTop));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[3],_yValTop));
m_nbVertexToDisplay++;
// G
m_coord[m_nbVertexToDisplay].setValue(_x5, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[4],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x5, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[4],_yValButtom));
m_nbVertexToDisplay++;
// H
m_coord[m_nbVertexToDisplay].setValue(_x5, _yTop);
m_pos[m_nbVertexToDisplay].setValue(_table[4],_yValTop);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x5, _yTop));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[4],_yValTop));
m_nbVertexToDisplay++;
// I
m_coord[m_nbVertexToDisplay].setValue(_x6, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[5],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x6, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[5],_yValButtom));
m_nbVertexToDisplay++;
// J
m_coord[m_nbVertexToDisplay].setValue(_x6, _yTop);
m_pos[m_nbVertexToDisplay].setValue(_table[5],_yValTop);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x6, _yTop));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[5],_yValTop));
m_nbVertexToDisplay++;
// K
m_coord[m_nbVertexToDisplay].setValue(_x7, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[6],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x7, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[6],_yValButtom));
m_nbVertexToDisplay++;
// L
m_coord[m_nbVertexToDisplay].setValue(_x7, _yTop);
m_pos[m_nbVertexToDisplay].setValue(_table[6],_yValTop);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x7, _yTop));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[6],_yValTop));
m_nbVertexToDisplay++;
if (_displayOutside == true) {
// M
m_coord[m_nbVertexToDisplay].setValue(_x8, _yButtom);
m_pos[m_nbVertexToDisplay].setValue(_table[7],_yValButtom);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x8, _yButtom));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[7],_yValButtom));
m_nbVertexToDisplay++;
// N
m_coord[m_nbVertexToDisplay].setValue(_x8, _yTop);
m_pos[m_nbVertexToDisplay].setValue(_table[7],_yValTop);
m_VBO->pushOnBuffer(m_vboIdCoord, vec2(_x8, _yTop));
m_VBO->pushOnBuffer(m_vboIdPos, vec2(_table[7],_yValTop));
m_nbVertexToDisplay++;
}
}
@ -435,6 +452,7 @@ const float modeDisplay[][8] = {
};
void ewol::compositing::Shaper::setShape(const vec2& _origin, const vec2& _size, const vec2& _insidePos, const vec2& _insideSize) {
m_VBO->clear();
ewol::Padding borderTmp = getBorder();
ewol::Padding paddingIn = getPaddingIn();
ewol::Padding paddingOut = getPaddingOut();
@ -465,10 +483,10 @@ void ewol::compositing::Shaper::setShape(const vec2& _origin, const vec2& _size,
border.yTop() - borderTmp.yTop(),
border.xRight() - borderTmp.xRight(),
border.yButtom() + borderTmp.yButtom());
ewol::Padding inside(insideBorder.xLeft() + std::max(0.0f, paddingIn.xLeft()),
insideBorder.yTop() - std::max(0.0f, paddingIn.yTop()),
insideBorder.xRight() - std::max(0.0f, paddingIn.xRight()),
insideBorder.yButtom() + std::max(0.0f, paddingIn.yButtom()));
ewol::Padding inside(insideBorder.xLeft() + etk::max(0.0f, paddingIn.xLeft()),
insideBorder.yTop() - etk::max(0.0f, paddingIn.yTop()),
insideBorder.xRight() - etk::max(0.0f, paddingIn.xRight()),
insideBorder.yButtom() + etk::max(0.0f, paddingIn.yButtom()));
#endif
/*
@ -478,7 +496,7 @@ void ewol::compositing::Shaper::setShape(const vec2& _origin, const vec2& _size,
*/
int32_t mode = 0;
bool displayOutside = false;
if (m_config != nullptr) {
if (m_config != null) {
mode = m_config->getNumber(m_confIdMode);
displayOutside = m_config->getBoolean(m_confIdDisplayOutside);
}
@ -571,6 +589,7 @@ void ewol::compositing::Shaper::setShape(const vec2& _origin, const vec2& _size,
modeDisplay[mode],
displayOutside);
}
m_VBO->flush();
}
ewol::Padding ewol::compositing::Shaper::getPadding() {
@ -579,7 +598,7 @@ ewol::Padding ewol::compositing::Shaper::getPadding() {
ewol::Padding ewol::compositing::Shaper::getPaddingIn() {
ewol::Padding padding(0,0,0,0);
if (m_config != nullptr) {
if (m_config != null) {
padding.setValue(m_config->getNumber(m_confIdPaddingIn[shaperPosLeft]),
m_config->getNumber(m_confIdPaddingIn[shaperPosTop]),
m_config->getNumber(m_confIdPaddingIn[shaperPosRight]),
@ -590,7 +609,7 @@ ewol::Padding ewol::compositing::Shaper::getPaddingIn() {
ewol::Padding ewol::compositing::Shaper::getPaddingOut() {
ewol::Padding padding(0,0,0,0);
if (m_config != nullptr) {
if (m_config != null) {
padding.setValue(m_config->getNumber(m_confIdPaddingOut[shaperPosLeft]),
m_config->getNumber(m_confIdPaddingOut[shaperPosTop]),
m_config->getNumber(m_confIdPaddingOut[shaperPosRight]),
@ -601,7 +620,7 @@ ewol::Padding ewol::compositing::Shaper::getPaddingOut() {
ewol::Padding ewol::compositing::Shaper::getBorder() {
ewol::Padding padding(0,0,0,0);
if (m_config != nullptr) {
if (m_config != null) {
padding.setValue(m_config->getNumber(m_confIdBorder[shaperPosLeft]),
m_config->getNumber(m_confIdBorder[shaperPosTop]),
m_config->getNumber(m_confIdBorder[shaperPosRight]),
@ -610,38 +629,38 @@ ewol::Padding ewol::compositing::Shaper::getBorder() {
return padding;
}
void ewol::compositing::Shaper::setSource(const std::string& _newFile) {
void ewol::compositing::Shaper::setSource(const etk::Uri& _uri) {
clear();
unLoadProgram();
m_name = _newFile;
m_uri = _uri;
loadProgram();
}
bool ewol::compositing::Shaper::hasSources() {
return m_GLprogram!=nullptr;
return m_GLprogram != null;
}
const etk::Color<float>& ewol::compositing::Shaper::getColor(int32_t _id) {
static const etk::Color<float> errorValue(0,0,0,0);
if (m_colorProperty == nullptr) {
EWOL_WARNING("nullptr of m_colorProperty ==> return #0000 for id " << _id);
if (m_colorProperty == null) {
EWOL_WARNING("null of m_colorProperty ==> return #0000 for id " << _id);
return errorValue;
}
return m_colorProperty->get(_id);
}
int32_t ewol::compositing::Shaper::requestColor(const std::string& _name) {
if (m_colorProperty == nullptr) {
EWOL_WARNING("nullptr of m_colorProperty ==> return -1 for name " << _name);
int32_t ewol::compositing::Shaper::requestColor(const etk::String& _name) {
if (m_colorProperty == null) {
EWOL_WARNING("null of m_colorProperty ==> return -1 for name " << _name);
return -1;
}
return m_colorProperty->request(_name);
}
int32_t ewol::compositing::Shaper::requestConfig(const std::string& _name) {
if (m_config == nullptr) {
EWOL_WARNING("nullptr of m_config ==> return -1 for name " << _name);
int32_t ewol::compositing::Shaper::requestConfig(const etk::String& _name) {
if (m_config == null) {
EWOL_WARNING("null of m_config ==> return -1 for name " << _name);
return -1;
}
return m_config->request(_name);
@ -649,8 +668,8 @@ int32_t ewol::compositing::Shaper::requestConfig(const std::string& _name) {
double ewol::compositing::Shaper::getConfigNumber(int32_t _id) {
if ( _id == -1
|| m_config == nullptr) {
EWOL_WARNING("nullptr of m_config ==> return 0.0 for id " << _id);
|| m_config == null) {
EWOL_WARNING("null of m_config ==> return 0.0 for id " << _id);
return 0.0;
}
return m_config->getNumber(_id);
@ -658,17 +677,17 @@ double ewol::compositing::Shaper::getConfigNumber(int32_t _id) {
namespace etk {
template<> std::string to_string<ewol::compositing::Shaper>(const ewol::compositing::Shaper& _obj) {
return _obj.getSource();
template<> etk::String toString<ewol::compositing::Shaper>(const ewol::compositing::Shaper& _obj) {
return _obj.getSource().get();
}
template<> std::u32string to_u32string<ewol::compositing::Shaper>(const ewol::compositing::Shaper& _obj) {
return etk::to_u32string(etk::to_string(_obj));
template<> etk::UString toUString<ewol::compositing::Shaper>(const ewol::compositing::Shaper& _obj) {
return etk::toUString(etk::toString(_obj));
}
template<> bool from_string<ewol::compositing::Shaper>(ewol::compositing::Shaper& _variableRet, const std::string& _value) {
template<> bool from_string<ewol::compositing::Shaper>(ewol::compositing::Shaper& _variableRet, const etk::String& _value) {
_variableRet.setSource(_value);
return true;
}
template<> bool from_string<ewol::compositing::Shaper>(ewol::compositing::Shaper& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, etk::to_string(_value));
template<> bool from_string<ewol::compositing::Shaper>(ewol::compositing::Shaper& _variableRet, const etk::UString& _value) {
return from_string(_variableRet, etk::toString(_value));
}
};

View File

@ -1,7 +1,7 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#pragma once
@ -10,7 +10,7 @@
#include <gale/resource/Program.hpp>
#include <ewol/resource/ConfigFile.hpp>
#include <ewol/resource/ColorFile.hpp>
#include <ewol/resource/Image.hpp>
#include <ewol/resource/TextureFile.hpp>
#include <ewol/event/Time.hpp>
#include <ewol/Padding.hpp>
@ -38,7 +38,7 @@ namespace ewol {
// TODO : Abstaraction between states (call by name and the system greate IDs
class Shaper : public ewol::Compositing {
private:
std::string m_name; //!< Name of the configuration of the shaper.
etk::Uri m_uri; //!< Name of the configuration of the shaper.
// External theme config:
ememory::SharedPtr<ewol::resource::ConfigFile> m_config; //!< pointer on the config file resources
int32_t m_confIdPaddingOut[shaperPosCount]; //!< Padding out property : X-left X-right Y-top Y-buttom
@ -72,12 +72,14 @@ namespace ewol {
int32_t m_stateOld; //!< previous state
int32_t m_stateNew; //!< destination state
float m_stateTransition; //!< working state between 2 states
vec2 m_coord[SHAPER_NB_MAX_VERTEX]; //!< coordonate of the display ...
vec2 m_pos[SHAPER_NB_MAX_VERTEX]; //!< podition to display property
int32_t m_nbVertexToDisplay;
// color management theme:
ememory::SharedPtr<ewol::resource::ColorFile> m_colorProperty; //!< input resource for color management
std::vector<ivec2> m_listAssiciatedId; //!< Corellation ID between ColorProperty (Y) and OpenGL Program (X)
etk::Vector<ivec2> m_listAssiciatedId; //!< Corellation ID between ColorProperty (Y) and OpenGL Program (X)
protected:
static const int32_t m_vboIdCoord;
static const int32_t m_vboIdPos;
ememory::SharedPtr<gale::resource::VirtualBufferObject> m_VBO;
private:
/**
* @brief load the openGL program and get all the ID needed
@ -90,9 +92,9 @@ namespace ewol {
public:
/**
* @brief generic constructor
* @param[in] _shaperName Name of the file that might be loaded
* @param[in] _uri URI of the file that might be loaded
*/
Shaper(const std::string& _shaperName="");
Shaper(const etk::Uri& _uri="");
/**
* @brief generic destructor
*/
@ -162,15 +164,15 @@ namespace ewol {
ewol::Padding getBorder();
/**
* @brief change the shaper Source
* @param[in] _newFile New file of the shaper
* @param[in] _uri New file of the shaper
*/
void setSource(const std::string& _newFile);
void setSource(const etk::Uri& _uri);
/**
* @brief get the shaper file Source
* @return the shapper file name
*/
const std::string& getSource() const {
return m_name;
const etk::Uri& getSource() const {
return m_uri;
};
/**
* @brief Sometimes the user declare an image but not allocate the ressources all the time, this is to know it ..
@ -234,7 +236,7 @@ namespace ewol {
* @param[in] _name Name of the element requested
* @return The Id of the color
*/
int32_t requestColor(const std::string& _name);
int32_t requestColor(const etk::String& _name);
/**
* @brief Get The color associated at an ID.
* @param[in] _id Id of the color
@ -247,7 +249,7 @@ namespace ewol {
* @param[in] _name Name of the element requested
* @return The Id of the element
*/
int32_t requestConfig(const std::string& _name);
int32_t requestConfig(const etk::String& _name);
/**
* @brief Get The number associated at an ID.
* @param[in] _id Id of the parameter
@ -282,10 +284,10 @@ namespace ewol {
* == operator
*****************************************************/
bool operator== (const Shaper& _obj) const {
return _obj.m_name == m_name;
return _obj.m_uri == m_uri;
}
bool operator!= (const Shaper& _obj) const {
return _obj.m_name != m_name;
return _obj.m_uri != m_uri;
}
};
}

View File

@ -1,13 +1,16 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#include <ewol/debug.hpp>
#include <ewol/compositing/Sprite.hpp>
ewol::compositing::Sprite::Sprite(const std::string& _imageName, const ivec2& _nbSprite, int32_t _size) :
#include <etk/typeInfo.hpp>
ETK_DECLARE_TYPE(ewol::compositing::Sprite);
ewol::compositing::Sprite::Sprite(const etk::String& _imageName, const ivec2& _nbSprite, int32_t _size) :
ewol::compositing::Image(_imageName, false, _size),
m_nbSprite(_nbSprite),
m_unitarySpriteSize(0,0) {

View File

@ -1,7 +1,7 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#pragma once
@ -15,7 +15,7 @@ namespace ewol {
ivec2 m_nbSprite; //!< number of sprite in vertical and horizontal
vec2 m_unitarySpriteSize; //!< size of a unique sprite
public:
Sprite(const std::string& _imageName,
Sprite(const etk::String& _imageName,
const ivec2& _nbSprite,
int32_t _size=ewol::compositing::Image::sizeAuto);
virtual ~Sprite() {};

View File

@ -1,7 +1,7 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#include <ewol/debug.hpp>
@ -9,8 +9,11 @@
#include <ewol/context/Context.hpp>
#include <etk/types.hpp>
ewol::compositing::Text::Text(const std::string& _fontName, int32_t _fontSize) :
m_font(nullptr) {
#include <etk/typeInfo.hpp>
ETK_DECLARE_TYPE(ewol::compositing::Text);
ewol::compositing::Text::Text(const etk::String& _fontName, int32_t _fontSize) :
m_font(null) {
setFont(_fontName, _fontSize);
}
@ -23,16 +26,17 @@ void ewol::compositing::Text::drawMT(const mat4& _transformationMatrix, bool _en
// draw BG in any case:
m_vectorialDraw.draw();
if (m_coord.size() <= 0 || m_font == nullptr) {
// TODO : a remÃtre ...
if ( m_VBO->bufferSize(m_vboIdCoord) <= 0
|| m_font == null) {
// TODO : set it back ...
//EWOL_WARNING("Nothink to draw...");
return;
}
if (m_font == nullptr) {
if (m_font == null) {
EWOL_WARNING("no font...");
return;
}
if (m_GLprogram == nullptr) {
if (m_GLprogram == null) {
EWOL_ERROR("No shader ...");
return;
}
@ -45,18 +49,18 @@ void ewol::compositing::Text::drawMT(const mat4& _transformationMatrix, bool _en
mat4 tmpMatrix = projMatrix * camMatrix * _transformationMatrix;
m_GLprogram->use();
m_GLprogram->uniformMatrix(m_GLMatrix, tmpMatrix);
// Texture :
// Texture:
m_GLprogram->setTexture0(m_GLtexID, m_font->getRendererId());
m_GLprogram->uniform1i(m_GLtextWidth, m_font->getOpenGlSize().x());
m_GLprogram->uniform1i(m_GLtextHeight, m_font->getOpenGlSize().x());
// position :
m_GLprogram->sendAttribute(m_GLPosition, 3/*x,y,z*/, &m_coord[0]);
// Texture :
m_GLprogram->sendAttribute(m_GLtexture, 2/*u,v*/, &m_coordTex[0]);
// color :
m_GLprogram->sendAttribute(m_GLColor, 4/*r,g,b,a*/, &m_coordColor[0]);
// Request the draw od the elements :
gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, m_coord.size());
// position:
m_GLprogram->sendAttributePointer(m_GLPosition, m_VBO, m_vboIdCoord);
// Texture:
m_GLprogram->sendAttributePointer(m_GLtexture, m_VBO, m_vboIdCoordText);
// color:
m_GLprogram->sendAttributePointer(m_GLColor, m_VBO, m_vboIdColor);
// Request the draw od the elements:
gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, m_VBO->bufferSize(m_vboIdCoord));
m_GLprogram->unUse();
if (_enableDepthTest == true) {
gale::openGL::disable(gale::openGL::flag_depthTest);
@ -67,15 +71,16 @@ void ewol::compositing::Text::drawD(bool _disableDepthTest) {
// draw BG in any case:
m_vectorialDraw.draw(_disableDepthTest);
if (m_coord.size() <= 0 || m_font == nullptr) {
if ( m_VBO->bufferSize(m_vboIdCoord) <= 0
|| m_font == null) {
//EWOL_WARNING("Nothink to draw...");
return;
}
if (m_font == nullptr) {
if (m_font == null) {
EWOL_WARNING("no font...");
return;
}
if (m_GLprogram == nullptr) {
if (m_GLprogram == null) {
EWOL_ERROR("No shader ...");
return;
}
@ -87,43 +92,43 @@ void ewol::compositing::Text::drawD(bool _disableDepthTest) {
m_GLprogram->setTexture0(m_GLtexID, m_font->getRendererId());
m_GLprogram->uniform1i(m_GLtextWidth, m_font->getOpenGlSize().x());
m_GLprogram->uniform1i(m_GLtextHeight, m_font->getOpenGlSize().x());
// position :
m_GLprogram->sendAttribute(m_GLPosition, m_coord);
// Texture :
m_GLprogram->sendAttribute(m_GLtexture, m_coordTex);
// color :
m_GLprogram->sendAttribute(m_GLColor, m_coordColor);
// position:
m_GLprogram->sendAttributePointer(m_GLPosition, m_VBO, m_vboIdCoord);
// Texture:
m_GLprogram->sendAttributePointer(m_GLtexture, m_VBO, m_vboIdCoordText);
// color:
m_GLprogram->sendAttributePointer(m_GLColor, m_VBO, m_vboIdColor);
// Request the draw od the elements :
gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, m_coord.size());
gale::openGL::drawArrays(gale::openGL::renderMode::triangle, 0, m_VBO->bufferSize(m_vboIdCoord));
m_GLprogram->unUse();
}
float ewol::compositing::Text::getSize() {
if (m_font == nullptr) {
if (m_font == null) {
EWOL_WARNING("no font...");
return 1.0f;
}
return m_font->getFontSize();
}
float ewol::compositing::Text::getHeight() {
if (m_font == nullptr) {
if (m_font == null) {
EWOL_WARNING("no font...");
return 10.0f;
}
return m_font->getHeight(m_mode);
}
ewol::GlyphProperty * ewol::compositing::Text::getGlyphPointer(char32_t _charcode) {
if (m_font == nullptr) {
if (m_font == null) {
EWOL_WARNING("no font...");
return nullptr;
return null;
}
return m_font->getGlyphPointer(_charcode, m_mode);
}
void ewol::compositing::Text::setFontSize(int32_t _fontSize) {
// get old size
std::string fontName = "";
if (m_font != nullptr) {
etk::String fontName = "";
if (m_font != null) {
fontName = m_font->getName();
// Remove the :XX for the size ...
size_t pos = fontName.rfind(':');
@ -132,16 +137,16 @@ void ewol::compositing::Text::setFontSize(int32_t _fontSize) {
setFont(fontName, _fontSize);
}
void ewol::compositing::Text::setFontName(const std::string& _fontName) {
void ewol::compositing::Text::setFontName(const etk::String& _fontName) {
// get old size
int32_t fontSize = -1;
if (m_font != nullptr) {
if (m_font != null) {
fontSize = m_font->getFontSize();
}
setFont(_fontName, fontSize);
}
void ewol::compositing::Text::setFont(std::string _fontName, int32_t _fontSize) {
void ewol::compositing::Text::setFont(etk::String _fontName, int32_t _fontSize) {
clear();
// remove old one
ememory::SharedPtr<ewol::resource::TexturedFont> previousFont = m_font;
@ -152,18 +157,18 @@ void ewol::compositing::Text::setFont(std::string _fontName, int32_t _fontSize)
_fontName = ewol::getContext().getFontDefault().getName();
}
_fontName += ":";
_fontName += etk::to_string(_fontSize);
_fontName += etk::toString(_fontSize);
EWOL_VERBOSE("plop : " << _fontName << " size=" << _fontSize << " result :" << _fontName);
// link to new one
m_font = ewol::resource::TexturedFont::create(_fontName);
if (m_font == nullptr) {
if (m_font == null) {
EWOL_ERROR("Can not get font resource");
m_font = previousFont;
}
}
void ewol::compositing::Text::setFontMode(enum ewol::font::mode _mode) {
if (m_font != nullptr) {
if (m_font != null) {
m_mode = m_font->getWrappingMode(_mode);
}
}
@ -171,7 +176,7 @@ void ewol::compositing::Text::setFontMode(enum ewol::font::mode _mode) {
void ewol::compositing::Text::printChar(const char32_t& _charcode) {
// get a pointer on the glyph property :
ewol::GlyphProperty* myGlyph = getGlyphPointer(_charcode);
if (nullptr == myGlyph) {
if (null == myGlyph) {
EWOL_ERROR(" font does not really existed ...");
return;
}
@ -180,7 +185,7 @@ void ewol::compositing::Text::printChar(const char32_t& _charcode) {
// get the kerning ofset :
float kerningOffset = 0;
if (true == m_kerning) {
if (m_kerning == true) {
kerningOffset = myGlyph->kerningGet(m_previousCharcode);
if (kerningOffset != 0) {
//EWOL_DEBUG("Kerning between : '" << m_previousCharcode << "'&'" << myGlyph->m_UVal << "' value : " << kerningOffset);
@ -292,17 +297,17 @@ void ewol::compositing::Text::printChar(const char32_t& _charcode) {
*
*/
// set texture coordonates :
m_coordTex.push_back(texturePos[0]);
m_coordTex.push_back(texturePos[1]);
m_coordTex.push_back(texturePos[2]);
m_VBO->pushOnBuffer(m_vboIdCoordText, texturePos[0]);
m_VBO->pushOnBuffer(m_vboIdCoordText, texturePos[1]);
m_VBO->pushOnBuffer(m_vboIdCoordText, texturePos[2]);
// set display positions :
m_coord.push_back(bitmapDrawPos[0]);
m_coord.push_back(bitmapDrawPos[1]);
m_coord.push_back(bitmapDrawPos[2]);
m_VBO->pushOnBuffer(m_vboIdCoord, bitmapDrawPos[0]);
m_VBO->pushOnBuffer(m_vboIdCoord, bitmapDrawPos[1]);
m_VBO->pushOnBuffer(m_vboIdCoord, bitmapDrawPos[2]);
// set the color
m_coordColor.push_back(m_color);
m_coordColor.push_back(m_color);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
/* Step 2 :
*
* **
@ -311,17 +316,17 @@ void ewol::compositing::Text::printChar(const char32_t& _charcode) {
* ********
*/
// set texture coordonates :
m_coordTex.push_back(texturePos[0]);
m_coordTex.push_back(texturePos[2]);
m_coordTex.push_back(texturePos[3]);
m_VBO->pushOnBuffer(m_vboIdCoordText, texturePos[0]);
m_VBO->pushOnBuffer(m_vboIdCoordText, texturePos[2]);
m_VBO->pushOnBuffer(m_vboIdCoordText, texturePos[3]);
// set display positions :
m_coord.push_back(bitmapDrawPos[0]);
m_coord.push_back(bitmapDrawPos[2]);
m_coord.push_back(bitmapDrawPos[3]);
m_VBO->pushOnBuffer(m_vboIdCoord, bitmapDrawPos[0]);
m_VBO->pushOnBuffer(m_vboIdCoord, bitmapDrawPos[2]);
m_VBO->pushOnBuffer(m_vboIdCoord, bitmapDrawPos[3]);
// set the color
m_coordColor.push_back(m_color);
m_coordColor.push_back(m_color);
m_coordColor.push_back(m_color);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
m_VBO->pushOnBuffer(m_vboIdColor, m_color);
}
}
}
@ -332,6 +337,7 @@ void ewol::compositing::Text::printChar(const char32_t& _charcode) {
//EWOL_DEBUG(" 6 print '" << charcode << "' : start=" << m_sizeDisplayStart << " stop=" << m_sizeDisplayStop << " pos=" << m_position);
// Register the previous character
m_previousCharcode = _charcode;
m_VBO->flush();
return;
}
@ -340,8 +346,8 @@ vec3 ewol::compositing::Text::calculateSizeChar(const char32_t& _charcode) {
// get a pointer on the glyph property :
ewol::GlyphProperty * myGlyph = getGlyphPointer(_charcode);
int32_t fontHeigh = getHeight();
if (myGlyph == nullptr) {
if (m_font == nullptr) {
if (myGlyph == null) {
if (m_font == null) {
EWOL_WARNING("no Glyph... in no font");
} else {
EWOL_WARNING("no Glyph... in font : " << m_font->getName());

View File

@ -1,7 +1,7 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#pragma once
@ -13,7 +13,7 @@
#include <ewol/resource/TexturedFont.hpp>
#include <ewol/compositing/TextBase.hpp>
#include <exml/exml.hpp>
#include <string>
#include <etk/String.hpp>
#include <etk/Color.hpp>
@ -28,7 +28,7 @@ namespace ewol {
* @param[in] _fontName Name of the font that might be loaded
* @param[in] _fontSize size of the font that might be loaded
*/
Text(const std::string& _fontName="", int32_t _fontSize=-1);
Text(const etk::String& _fontName="", int32_t _fontSize=-1);
/**
* @brief generic destructor
*/
@ -45,8 +45,8 @@ namespace ewol {
public:
virtual void setFontSize(int32_t _fontSize);
virtual void setFontName(const std::string& _fontName);
virtual void setFont(std::string _fontName, int32_t _fontSize);
virtual void setFontName(const etk::String& _fontName);
virtual void setFont(etk::String _fontName, int32_t _fontSize);
virtual void setFontMode(enum ewol::font::mode _mode);
virtual void printChar(const char32_t& _charcode);
virtual vec3 calculateSizeChar(const char32_t& _charcode);

View File

@ -1,7 +1,7 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#include <ewol/debug.hpp>
@ -9,7 +9,16 @@
#include <ewol/context/Context.hpp>
#include <etk/types.hpp>
ewol::compositing::TextBase::TextBase(const std::string& _shaderName, bool _loadProgram) :
#include <etk/typeInfo.hpp>
ETK_DECLARE_TYPE(ewol::compositing::TextBase);
const int32_t ewol::compositing::TextBase::m_vboIdCoord(0);
const int32_t ewol::compositing::TextBase::m_vboIdCoordText(1);
const int32_t ewol::compositing::TextBase::m_vboIdColor(2);
const int32_t ewol::compositing::TextBase::m_vboIdGlyphLevel(3);
#define NB_VBO (4)
ewol::compositing::TextBase::TextBase(const etk::String& _shaderName, bool _loadProgram) :
m_position(0.0, 0.0, 0.0),
m_clippingPosStart(0.0, 0.0, 0.0),
m_clippingPosStop(0.0, 0.0, 0.0),
@ -26,7 +35,7 @@ ewol::compositing::TextBase::TextBase(const std::string& _shaderName, bool _load
m_startTextpos(0),
m_stopTextPos(0),
m_alignement(alignDisable),
m_GLprogram(nullptr),
m_GLprogram(null),
m_GLPosition(-1),
m_GLMatrix(-1),
m_GLColor(-1),
@ -37,6 +46,14 @@ ewol::compositing::TextBase::TextBase(const std::string& _shaderName, bool _load
if (_loadProgram == true) {
loadProgram(_shaderName);
}
// Create the VBO:
m_VBO = gale::resource::VirtualBufferObject::create(NB_VBO);
if (m_VBO == null) {
EWOL_ERROR("can not instanciate VBO ...");
return;
}
// TO facilitate some debugs we add a name of the VBO:
m_VBO->setName("[VBO] of ewol::compositing::TextBase");
}
@ -44,12 +61,12 @@ ewol::compositing::TextBase::~TextBase() {
}
void ewol::compositing::TextBase::loadProgram(const std::string& _shaderName) {
// get the shader resource :
void ewol::compositing::TextBase::loadProgram(const etk::String& _shaderName) {
// get the shader resource:
m_GLPosition = 0;
ememory::SharedPtr<gale::resource::Program> old = m_GLprogram;
m_GLprogram = gale::resource::Program::create(_shaderName);
if (m_GLprogram != nullptr) {
if (m_GLprogram != null) {
m_GLPosition = m_GLprogram->getAttribute("EW_coord3d");
m_GLColor = m_GLprogram->getAttribute("EW_color");
m_GLtexture = m_GLprogram->getAttribute("EW_texture2d");
@ -60,7 +77,7 @@ void ewol::compositing::TextBase::loadProgram(const std::string& _shaderName) {
} else {
EWOL_ERROR("Can not load the program => create previous one...");
m_GLprogram = old;
old = nullptr;
old = null;
}
}
@ -84,11 +101,9 @@ void ewol::compositing::TextBase::clear() {
ewol::Compositing::clear();
// remove sub draw system
m_vectorialDraw.clear();
// reset Buffer :
m_coord.clear();
m_coordTex.clear();
m_coordColor.clear();
// reset temporal variables :
// reset Buffer:
m_VBO->clear();
// reset temporal variables:
reset();
}
@ -119,10 +134,10 @@ void ewol::compositing::TextBase::setPos(const vec3& _pos) {
// check min max for display area
if (m_nbCharDisplayed != 0) {
EWOL_VERBOSE("update size 1 " << m_sizeDisplayStart << " " << m_sizeDisplayStop);
m_sizeDisplayStop.setX(std::max(m_position.x(), m_sizeDisplayStop.x()));
m_sizeDisplayStop.setY(std::max(m_position.y(), m_sizeDisplayStop.y()));
m_sizeDisplayStart.setX(std::min(m_position.x(), m_sizeDisplayStart.x()));
m_sizeDisplayStart.setY(std::min(m_position.y(), m_sizeDisplayStart.y()));
m_sizeDisplayStop.setX(etk::max(m_position.x(), m_sizeDisplayStop.x()));
m_sizeDisplayStop.setY(etk::max(m_position.y(), m_sizeDisplayStop.y()));
m_sizeDisplayStart.setX(etk::min(m_position.x(), m_sizeDisplayStart.x()));
m_sizeDisplayStart.setY(etk::min(m_position.y(), m_sizeDisplayStart.y()));
EWOL_VERBOSE("update size 2 " << m_sizeDisplayStart << " " << m_sizeDisplayStop);
}
// update position
@ -137,10 +152,10 @@ void ewol::compositing::TextBase::setPos(const vec3& _pos) {
EWOL_VERBOSE("update size 0 " << m_sizeDisplayStart << " " << m_sizeDisplayStop);
} else {
EWOL_VERBOSE("update size 3 " << m_sizeDisplayStart << " " << m_sizeDisplayStop);
m_sizeDisplayStop.setX(std::max(m_position.x(), m_sizeDisplayStop.x()));
m_sizeDisplayStop.setY(std::max(m_position.y(), m_sizeDisplayStop.y()));
m_sizeDisplayStart.setX(std::min(m_position.x(), m_sizeDisplayStart.x()));
m_sizeDisplayStart.setY(std::min(m_position.y(), m_sizeDisplayStart.y()));
m_sizeDisplayStop.setX(etk::max(m_position.x(), m_sizeDisplayStop.x()));
m_sizeDisplayStop.setY(etk::max(m_position.y(), m_sizeDisplayStop.y()));
m_sizeDisplayStart.setX(etk::min(m_position.x(), m_sizeDisplayStart.x()));
m_sizeDisplayStart.setY(etk::min(m_position.y(), m_sizeDisplayStart.y()));
EWOL_VERBOSE("update size 4 " << m_sizeDisplayStart << " " << m_sizeDisplayStop);
}
}
@ -228,13 +243,13 @@ void ewol::compositing::TextBase::setKerningMode(bool _newMode) {
m_kerning = _newMode;
}
void ewol::compositing::TextBase::print(const std::u32string& _text) {
std::vector<TextDecoration> decorationEmpty;
void ewol::compositing::TextBase::print(const etk::UString& _text) {
etk::Vector<TextDecoration> decorationEmpty;
print(_text, decorationEmpty);
}
void ewol::compositing::TextBase::print(const std::string& _text) {
std::vector<TextDecoration> decorationEmpty;
void ewol::compositing::TextBase::print(const etk::String& _text) {
etk::Vector<TextDecoration> decorationEmpty;
print(_text, decorationEmpty);
}
@ -250,7 +265,7 @@ void ewol::compositing::TextBase::parseHtmlNode(const exml::Element& _element) {
// nothing to do ...
continue;
} else if (it.isText() == true) {
htmlAddData(etk::to_u32string(it.getValue()));
htmlAddData(etk::toUString(it.getValue()));
EWOL_VERBOSE("XML add : " << it.getValue());
continue;
} else if (it.isElement() == false) {
@ -269,7 +284,7 @@ void ewol::compositing::TextBase::parseHtmlNode(const exml::Element& _element) {
} else if (etk::compare_no_case(elem.getValue(), "font") == true) {
EWOL_VERBOSE("XML Font ...");
TextDecoration tmpDeco = m_htmlDecoTmp;
std::string colorValue = elem.attributes["color"];
etk::String colorValue = elem.attributes["color"];
if (colorValue.size() != 0) {
m_htmlDecoTmp.m_colorFg = colorValue;
}
@ -339,23 +354,23 @@ void ewol::compositing::TextBase::parseHtmlNode(const exml::Element& _element) {
}
}
void ewol::compositing::TextBase::printDecorated(const std::string& _text) {
std::string tmpData("<html>\n<body>\n");
void ewol::compositing::TextBase::printDecorated(const etk::String& _text) {
etk::String tmpData("<html>\n<body>\n");
tmpData += _text;
tmpData += "\n</body>\n</html>\n";
//EWOL_DEBUG("plop : " << tmpData);
printHTML(tmpData);
}
void ewol::compositing::TextBase::printDecorated(const std::u32string& _text) {
std::u32string tmpData(U"<html>\n<body>\n");
void ewol::compositing::TextBase::printDecorated(const etk::UString& _text) {
etk::UString tmpData(U"<html>\n<body>\n");
tmpData += _text;
tmpData += U"\n</body>\n</html>\n";
//EWOL_DEBUG("plop : " << tmpData);
printHTML(tmpData);
}
void ewol::compositing::TextBase::printHTML(const std::string& _text) {
void ewol::compositing::TextBase::printHTML(const etk::String& _text) {
exml::Document doc;
// reset parameter :
@ -383,15 +398,15 @@ void ewol::compositing::TextBase::printHTML(const std::string& _text) {
htmlFlush();
}
void ewol::compositing::TextBase::printHTML(const std::u32string& _text) {
void ewol::compositing::TextBase::printHTML(const etk::UString& _text) {
exml::Document doc;
// reset parameter :
m_htmlDecoTmp.m_colorBg = m_defaultColorBg;
m_htmlDecoTmp.m_colorFg = m_defaultColorFg;
m_htmlDecoTmp.m_mode = ewol::font::Regular;
// TODO : Create an instance of xml parser to manage std::u32string...
if (doc.parse(etk::to_string(_text)) == false) {
// TODO : Create an instance of xml parser to manage etk::UString...
if (doc.parse(etk::toString(_text)) == false) {
EWOL_ERROR( "can not load XML: PARSING error: Decorated text ");
return;
}
@ -411,7 +426,7 @@ void ewol::compositing::TextBase::printHTML(const std::u32string& _text) {
htmlFlush();
}
void ewol::compositing::TextBase::print(const std::string& _text, const std::vector<TextDecoration>& _decoration) {
void ewol::compositing::TextBase::print(const etk::String& _text, const etk::Vector<TextDecoration>& _decoration) {
etk::Color<> tmpFg(m_color);
etk::Color<> tmpBg(m_colorBg);
if (m_alignement == alignDisable) {
@ -596,7 +611,7 @@ void ewol::compositing::TextBase::print(const std::string& _text, const std::vec
}
}
void ewol::compositing::TextBase::print(const std::u32string& _text, const std::vector<TextDecoration>& _decoration) {
void ewol::compositing::TextBase::print(const etk::UString& _text, const etk::Vector<TextDecoration>& _decoration) {
etk::Color<> tmpFg(m_color);
etk::Color<> tmpBg(m_colorBg);
if (m_alignement == alignDisable) {
@ -794,7 +809,8 @@ void ewol::compositing::TextBase::setTextAlignement(float _startTextpos, float _
m_stopTextPos = _stopTextPos+1;
m_alignement = _alignement;
if (m_startTextpos >= m_stopTextPos) {
EWOL_ERROR("Request allignement with Borne position error : " << _startTextpos << " => " << _stopTextPos);
// TODO: understand why this flush ...
EWOL_VERBOSE("Request allignement with Borne position error : " << _startTextpos << " => " << _stopTextPos);
}
}
@ -806,7 +822,7 @@ void ewol::compositing::TextBase::disableAlignement() {
m_alignement = alignDisable;
}
vec3 ewol::compositing::TextBase::calculateSizeHTML(const std::string& _text) {
vec3 ewol::compositing::TextBase::calculateSizeHTML(const etk::String& _text) {
// remove intermediate result
reset();
//EWOL_DEBUG(" 0 size for=\n" << text);
@ -820,11 +836,11 @@ vec3 ewol::compositing::TextBase::calculateSizeHTML(const std::string& _text) {
//EWOL_DEBUG(" 1 Stop pos=" << m_sizeDisplayStop);
// get the last elements
m_sizeDisplayStop.setValue(std::max(m_position.x(), m_sizeDisplayStop.x()) ,
std::max(m_position.y(), m_sizeDisplayStop.y()) ,
m_sizeDisplayStop.setValue(etk::max(m_position.x(), m_sizeDisplayStop.x()) ,
etk::max(m_position.y(), m_sizeDisplayStop.y()) ,
0);
m_sizeDisplayStart.setValue(std::min(m_position.x(), m_sizeDisplayStart.x()) ,
std::min(m_position.y(), m_sizeDisplayStart.y()) ,
m_sizeDisplayStart.setValue(etk::min(m_position.x(), m_sizeDisplayStart.x()) ,
etk::min(m_position.y(), m_sizeDisplayStart.y()) ,
0);
//EWOL_DEBUG(" 2 Start pos=" << m_sizeDisplayStart);
@ -837,7 +853,7 @@ vec3 ewol::compositing::TextBase::calculateSizeHTML(const std::string& _text) {
m_sizeDisplayStop.z()-m_sizeDisplayStart.z());
}
vec3 ewol::compositing::TextBase::calculateSizeHTML(const std::u32string& _text) {
vec3 ewol::compositing::TextBase::calculateSizeHTML(const etk::UString& _text) {
// remove intermediate result
reset();
//EWOL_DEBUG(" 0 size for=\n" << text);
@ -851,11 +867,11 @@ vec3 ewol::compositing::TextBase::calculateSizeHTML(const std::u32string& _text)
//EWOL_DEBUG(" 1 Stop pos=" << m_sizeDisplayStop);
// get the last elements
m_sizeDisplayStop.setValue(std::max(m_position.x(), m_sizeDisplayStop.x()) ,
std::max(m_position.y(), m_sizeDisplayStop.y()) ,
m_sizeDisplayStop.setValue(etk::max(m_position.x(), m_sizeDisplayStop.x()) ,
etk::max(m_position.y(), m_sizeDisplayStop.y()) ,
0);
m_sizeDisplayStart.setValue(std::min(m_position.x(), m_sizeDisplayStart.x()) ,
std::min(m_position.y(), m_sizeDisplayStart.y()) ,
m_sizeDisplayStart.setValue(etk::min(m_position.x(), m_sizeDisplayStart.x()) ,
etk::min(m_position.y(), m_sizeDisplayStart.y()) ,
0);
//EWOL_DEBUG(" 2 Start pos=" << m_sizeDisplayStart);
@ -868,29 +884,29 @@ vec3 ewol::compositing::TextBase::calculateSizeHTML(const std::u32string& _text)
m_sizeDisplayStop.z()-m_sizeDisplayStart.z());
}
vec3 ewol::compositing::TextBase::calculateSizeDecorated(const std::string& _text) {
vec3 ewol::compositing::TextBase::calculateSizeDecorated(const etk::String& _text) {
if (_text.size() == 0) {
return vec3(0,0,0);
}
std::string tmpData("<html><body>\n");
etk::String tmpData("<html><body>\n");
tmpData+=_text;
tmpData+="\n</body></html>\n";
vec3 tmpVal = calculateSizeHTML(tmpData);
return tmpVal;
}
vec3 ewol::compositing::TextBase::calculateSizeDecorated(const std::u32string& _text) {
vec3 ewol::compositing::TextBase::calculateSizeDecorated(const etk::UString& _text) {
if (_text.size() == 0) {
return vec3(0,0,0);
}
std::u32string tmpData(U"<html><body>\n");
etk::UString tmpData(U"<html><body>\n");
tmpData += _text;
tmpData += U"\n</body></html>\n";
vec3 tmpVal = calculateSizeHTML(tmpData);
return tmpVal;
}
vec3 ewol::compositing::TextBase::calculateSize(const std::string& _text) {
vec3 ewol::compositing::TextBase::calculateSize(const etk::String& _text) {
vec3 outputSize(0, 0, 0);
for(auto element : _text) {
vec3 tmpp = calculateSize(element);
@ -902,7 +918,7 @@ vec3 ewol::compositing::TextBase::calculateSize(const std::string& _text) {
return outputSize;
}
vec3 ewol::compositing::TextBase::calculateSize(const std::u32string& _text) {
vec3 ewol::compositing::TextBase::calculateSize(const etk::UString& _text) {
vec3 outputSize(0, 0, 0);
for(auto element : _text) {
vec3 tmpp = calculateSize(element);
@ -925,7 +941,7 @@ void ewol::compositing::TextBase::printCursor(bool _isInsertMode, float _cursorS
}
}
bool ewol::compositing::TextBase::extrapolateLastId(const std::string& _text,
bool ewol::compositing::TextBase::extrapolateLastId(const etk::String& _text,
const int32_t _start,
int32_t& _stop,
int32_t& _space,
@ -988,7 +1004,7 @@ bool ewol::compositing::TextBase::extrapolateLastId(const std::string& _text,
}
}
bool ewol::compositing::TextBase::extrapolateLastId(const std::u32string& _text,
bool ewol::compositing::TextBase::extrapolateLastId(const etk::UString& _text,
const int32_t _start,
int32_t& _stop,
int32_t& _space,
@ -1051,20 +1067,20 @@ bool ewol::compositing::TextBase::extrapolateLastId(const std::u32string& _text,
}
}
void ewol::compositing::TextBase::htmlAddData(const std::u32string& _data) {
void ewol::compositing::TextBase::htmlAddData(const etk::UString& _data) {
if( m_htmlCurrrentLine.size()>0
&& m_htmlCurrrentLine[m_htmlCurrrentLine.size()-1] != ' ') {
m_htmlCurrrentLine += U" ";
if(m_htmlDecoration.size()>0) {
TextDecoration tmp = m_htmlDecoration[m_htmlDecoration.size()-1];
m_htmlDecoration.push_back(tmp);
m_htmlDecoration.pushBack(tmp);
} else {
m_htmlDecoration.push_back(m_htmlDecoTmp);
m_htmlDecoration.pushBack(m_htmlDecoTmp);
}
}
m_htmlCurrrentLine += _data;
for(size_t iii=0; iii<_data.size() ; iii++) {
m_htmlDecoration.push_back(m_htmlDecoTmp);
m_htmlDecoration.pushBack(m_htmlDecoTmp);
}
}

View File

@ -1,7 +1,7 @@
/** @file
* @author Edouard DUPIN
* @copyright 2011, Edouard DUPIN, all right reserved
* @license APACHE v2.0 (see license file)
* @license MPL v2.0 (see license file)
*/
#pragma once
@ -12,7 +12,7 @@
#include <ewol/compositing/Drawing.hpp>
#include <ewol/resource/TexturedFont.hpp>
#include <exml/exml.hpp>
#include <string>
#include <etk/String.hpp>
namespace ewol {
namespace compositing {
@ -22,8 +22,8 @@ namespace ewol {
*/
class TextDecoration {
public:
etk::Color<> m_colorBg; //!< display background color
etk::Color<> m_colorFg; //!< display foreground color
etk::Color<float,4> m_colorBg; //!< display background color
etk::Color<float,4> m_colorFg; //!< display foreground color
enum ewol::font::mode m_mode; //!< display mode Regular/Bold/Italic/BoldItalic
TextDecoration() {
m_colorBg = etk::color::blue;
@ -57,13 +57,13 @@ namespace ewol {
vec3 m_clippingPosStop; //!< Clipping stop position
bool m_clippingEnable; //!< true if the clipping must be activated
protected:
etk::Color<> m_defaultColorFg; //!< The text foreground color
etk::Color<> m_defaultColorBg; //!< The text background color
etk::Color<float,4> m_defaultColorFg; //!< The text foreground color
etk::Color<float,4> m_defaultColorBg; //!< The text background color
protected:
etk::Color<> m_color; //!< The text foreground color
etk::Color<> m_colorBg; //!< The text background color
etk::Color<> m_colorCursor; //!< The text cursor color
etk::Color<> m_colorSelection; //!< The text Selection color
etk::Color<float,4> m_color; //!< The text foreground color
etk::Color<float,4> m_colorBg; //!< The text background color
etk::Color<float,4> m_colorCursor; //!< The text cursor color
etk::Color<float,4> m_colorSelection; //!< The text Selection color
protected:
enum ewol::font::mode m_mode; //!< font display property : Regular/Bold/Italic/BoldItalic
bool m_kerning; //!< Kerning enable or disable on the next elements displayed
@ -85,19 +85,21 @@ namespace ewol {
int32_t m_selectionStartPos; //!< start position of the Selection (if == m_cursorPos ==> no selection)
int32_t m_cursorPos; //!< Cursor position (default no cursor == > -100)
protected: // Text
std::vector<vec3 > m_coord; //!< internal coord of the object
std::vector<vec2 > m_coordTex; //!< internal texture coordinate for every point
std::vector<etk::Color<float> > m_coordColor; //!< internal color of the different point
static const int32_t m_vboIdCoord;
static const int32_t m_vboIdCoordText;
static const int32_t m_vboIdColor;
static const int32_t m_vboIdGlyphLevel;
ememory::SharedPtr<gale::resource::VirtualBufferObject> m_VBO;
public:
/**
* @brief load the openGL program and get all the ID needed
*/
virtual void loadProgram(const std::string& _shaderName);
virtual void loadProgram(const etk::String& _shaderName);
public:
/**
* @brief generic constructor
*/
TextBase(const std::string& _shaderName = "{ewol}DATA:text.prog", bool _loadProgram = true);
TextBase(const etk::String& _shaderName = "DATA:///text.prog?lib=ewol", bool _loadProgram = true);
/**
* @brief generic destructor
*/
@ -219,13 +221,13 @@ namespace ewol {
* @brief Specify the font name (this reset the internal element of the current text (system requirement)
* @param[in] _fontName Current name of the selected font
*/
virtual void setFontName(const std::string& _fontName) = 0;
virtual void setFontName(const etk::String& _fontName) = 0;
/**
* @brief Specify the font property (this reset the internal element of the current text (system requirement)
* @param[in] fontName Current name of the selected font
* @param[in] fontSize New font size
*/
virtual void setFont(std::string _fontName, int32_t _fontSize) = 0;
virtual void setFont(etk::String _fontName, int32_t _fontSize) = 0;
/**
* @brief Specify the font mode for the next @ref print
* @param[in] mode The font mode requested
@ -260,9 +262,9 @@ namespace ewol {
* @brief display a compleat string in the current element.
* @param[in] _text The string to display.
*/
void print(const std::string& _text);
void print(const etk::String& _text);
//! @previous
void print(const std::u32string& _text);
void print(const etk::UString& _text);
/**
* @brief display a compleat string in the current element with the generic decoration specification. (basic html data)
*
@ -292,9 +294,9 @@ namespace ewol {
* @param[in] _text The string to display.
* @TODO : implementation not done ....
*/
void printDecorated(const std::string& _text);
void printDecorated(const etk::String& _text);
//! @previous
void printDecorated(const std::u32string& _text);
void printDecorated(const etk::UString& _text);
/**
* @brief display a compleat string in the current element with the generic decoration specification. (basic html data)
*
@ -328,17 +330,17 @@ namespace ewol {
* @param[in] _text The string to display.
* @TODO : implementation not done ....
*/
void printHTML(const std::string& _text);
void printHTML(const etk::String& _text);
//! @previous
void printHTML(const std::u32string& _text);
void printHTML(const etk::UString& _text);
/**
* @brief display a compleat string in the current element whith specific decorations (advence mode).
* @param[in] _text The string to display.
* @param[in] _decoration The text decoration for the text that might be display (if the vector is smaller, the last parameter is get)
*/
void print(const std::string& _text, const std::vector<TextDecoration>& _decoration);
void print(const etk::String& _text, const etk::Vector<TextDecoration>& _decoration);
//! @previous
void print(const std::u32string& _text, const std::vector<TextDecoration>& _decoration);
void print(const etk::UString& _text, const etk::Vector<TextDecoration>& _decoration);
/**
* @brief display the current char in the current element (note that the kerning is availlable if the position is not changed)
* @param[in] _charcode Char that might be dispalyed
@ -377,28 +379,28 @@ namespace ewol {
* @param[in] _text The string to calculate dimention.
* @return The theoric size used.
*/
vec3 calculateSizeHTML(const std::string& _text);
vec3 calculateSizeHTML(const etk::String& _text);
//! @previous
vec3 calculateSizeHTML(const std::u32string& _text);
vec3 calculateSizeHTML(const etk::UString& _text);
/**
* @brief calculate a theoric text size
* @param[in] _text The string to calculate dimention.
* @return The theoric size used.
*/
vec3 calculateSizeDecorated(const std::string& _text);
vec3 calculateSizeDecorated(const etk::String& _text);
//! @previous
vec3 calculateSizeDecorated(const std::u32string& _text);
vec3 calculateSizeDecorated(const etk::UString& _text);
/**
* @brief calculate a theoric text size
* @param[in] _text The string to calculate dimention.
* @return The theoric size used.
*/
vec3 calculateSize(const std::string& _text);
vec3 calculateSize(const etk::String& _text);
//! @previous
vec3 calculateSize(const std::u32string& _text);
vec3 calculateSize(const etk::UString& _text);
/**
* @brief calculate a theoric charcode size
* @param[in] _charcode The µUnicode value to calculate dimention.
* @param[in] _charcode The Unicode value to calculate dimention.
* @return The theoric size used.
*/
inline vec3 calculateSize(const char32_t& _charcode) {
@ -426,19 +428,19 @@ namespace ewol {
* @return true if the rifht has free space that can be use for jystify.
* @return false if we find '\n'
*/
bool extrapolateLastId(const std::string& _text, const int32_t _start, int32_t& _stop, int32_t& _space, int32_t& _freeSpace);
bool extrapolateLastId(const etk::String& _text, const int32_t _start, int32_t& _stop, int32_t& _space, int32_t& _freeSpace);
//! @previous
bool extrapolateLastId(const std::u32string& _text, const int32_t _start, int32_t& _stop, int32_t& _space, int32_t& _freeSpace);
bool extrapolateLastId(const etk::UString& _text, const int32_t _start, int32_t& _stop, int32_t& _space, int32_t& _freeSpace);
protected:
// this section is reserved for HTML parsing and display:
std::u32string m_htmlCurrrentLine; //!< current line for HTML display
std::vector<TextDecoration> m_htmlDecoration; //!< current decoration for the HTML display
etk::UString m_htmlCurrrentLine; //!< current line for HTML display
etk::Vector<TextDecoration> m_htmlDecoration; //!< current decoration for the HTML display
TextDecoration m_htmlDecoTmp; //!< current decoration
/**
* @brief add a line with the current m_htmlDecoTmp decoration
* @param[in] _data The cuurent data to add.
*/
void htmlAddData(const std::u32string& _data);
void htmlAddData(const etk::UString& _data);
/**
* @brief draw the current line
*/

Some files were not shown because too many files have changed in this diff Show More