156 Commits
1.1.0 ... 1.3.0

Author SHA1 Message Date
6a937ebb8c [RELEASE] create release 1.3.0 2016-08-31 23:55:01 +02:00
da184c6767 [DEV] update esignal removing ISignal 2016-08-04 22:23:19 +02:00
4667e78aa6 [DEBUG] correct some un-understanding not parse file type like hxx 2016-07-24 14:42:50 +02:00
c7de44171d [DEBUG] remove a error warning (bad patch but it work) 2016-07-24 14:29:27 +02:00
8d22c48dc3 [DEBUG] correct all xml config language 2016-07-21 15:57:06 +02:00
8094d7c5ab [DEBUG] correct the regex error in the super size regex pattern (.|\n|\r)*? ==> bad patern 2016-07-21 15:29:56 +02:00
64b9f31a53 [DEV] update new ememory::SharedPtr 2016-07-19 22:03:39 +02:00
c284ad0b3a [DEV] clean header file 2016-05-02 22:01:55 +02:00
8eb7fe9839 [DEV] remove __class__ 2016-05-02 21:29:34 +02:00
0b84458985 [DEV] update the change on 'enum' to 'enum class' 2016-04-29 23:16:07 +02:00
c0de59ac9a [DEV] update las t ejson 2016-04-29 21:47:54 +02:00
dbc6b3439d [DEV] update new ejson interface 2016-04-20 21:19:11 +02:00
c7efaf95ab [DEV] corrrect internal bug link with exml portage 2016-04-19 22:05:42 +02:00
ac0ab974f6 [DEV] Update with the new exml API 2016-04-18 21:01:17 +02:00
1a2f0b6d91 [DEV] update etk::FSNode 2016-04-08 22:10:37 +02:00
235847a1c6 [DEV] not-in-doc ==> not_in_doc and add parsing in c++ 2016-04-01 21:30:23 +02:00
948e672eb1 [DEV] try to find reg-ex bug 2016-03-20 22:46:45 +01:00
bc7ed8f729 [DEV] remove dependency of date 2016-03-17 22:52:51 +01:00
0d47ff22e2 [DEV] update new ewol 2016-03-16 23:09:36 +01:00
c251a419ad [DEBUG] correct the bug of close file and open again ar seg-fault when write 2016-03-15 22:33:06 +01:00
a265735cd1 [DEBUG] correct many bugs 2016-03-10 23:48:07 +01:00
1821f2927b [DEBUG] correct some super integration bug 2016-03-10 22:37:37 +01:00
badb11d80d [DEV] update new property interface 2016-03-02 09:32:23 +01:00
499dfcffe6 [DEV] update new e-property 2016-02-24 22:31:46 +01:00
3f5d2abc41 [DEV] update new esignal (not build) 2016-02-19 23:33:00 +01:00
3e3c47cfa9 [DEV] update new ewol interface 2016-02-15 22:04:10 +01:00
c0705be42c [DEV] add personnal parameter 2016-02-12 23:50:20 +01:00
9f96beced2 [DEV] update to the hide implementation of esignal implementation 2016-02-11 22:39:40 +01:00
aed62ff58b [DEV] update externalisation of signal and property 2016-02-11 21:45:21 +01:00
2d4aac44fb [DEV] change build position 2016-01-15 21:18:24 +01:00
d3d4650d62 [DEV] correct the regex parsing error in the second highlight pass 2016-01-15 00:01:58 +01:00
c9b86afea0 [DEBUG] set correct name of buffer 2015-10-21 22:12:01 +02:00
d1f0caf386 [DEBUG] set back the close buffer 2015-10-21 22:12:01 +02:00
6980c78684 [DEV] update Doc 2015-10-15 08:36:21 +02:00
b5ef639438 [DEV] update new lutin 0.8.0 2015-10-14 21:21:03 +02:00
590e84e486 [DEV] change package in library ==> change idea of a package 2015-09-11 22:26:32 +02:00
cca05c01c0 [DEV] update new lutin 2015-09-10 21:32:50 +02:00
dbac89199f [DEV] correct application interface (update) 2015-09-07 22:15:33 +02:00
52ee889ee5 [DEV] update error of parsing c++ 2015-08-28 22:39:32 +02:00
893213c6c9 Update README.md 2015-08-26 14:04:42 +02:00
b5ff73e030 [DEV] add gcov parsing 2015-08-25 21:21:41 +02:00
82836ac045 [CI] update travis with new interface (no sudo) 2015-08-24 23:55:27 +02:00
0db5f0c528 [DEV] better parsing python, php and cpp 2015-08-24 22:03:07 +02:00
f6c4f4f9b3 [DEV] better parsing python, php and cpp 2015-08-24 22:03:07 +02:00
2028030df6 [DEV] better parsing python, php and cpp 2015-08-24 22:03:07 +02:00
c6269cbfd6 [DEV] update language xml and php 2015-08-22 10:15:58 +02:00
d2a7464341 [DEV] typo error 2015-08-21 23:56:17 +02:00
1fcf8b8a74 [DEV] update at the new low level gale interface 2015-08-11 23:21:41 +02:00
ad32734537 [DEV] update the parsing of java an python 2015-07-01 21:40:47 +02:00
89afc13dce [CI] pip for lutin error binary name 2015-05-21 22:30:58 +02:00
32b0b76fb9 [DEV] update search access and unaccess 2015-05-21 21:21:01 +02:00
4e527931c7 [CI] travis update for lutin pip & ewol repo interface 2015-05-20 21:13:48 +02:00
e0bf7c77c2 [DEV] help command line 2015-05-12 21:16:32 +02:00
2a467a7a5d [BUILD] update new lutin 0.5.3 2015-05-08 22:47:23 +02:00
386f5ed011 [CI] update travis build 2015-04-22 21:29:53 +02:00
1359193a63 [DEV] update to etk buffer remove 2015-04-06 21:06:01 +02:00
192bd045fa [DEV] update new exml interface 2015-01-14 21:10:23 +01:00
0f64bad930 [DEV] update new ejson interface 2015-01-12 23:20:23 +01:00
d2e9ab8b1a [DEV] add split of view ==> integration not ended, but it work 2014-11-14 23:57:29 +01:00
e17c9f9cf7 [API] update new Parameter API 2014-10-29 22:54:43 +01:00
7340844d12 [API] update new signal interface 2014-10-29 21:16:56 +01:00
bd9e5f03f4 [DEV] feature hide buffer list when number of buffer <= 1 2014-10-27 21:24:48 +01:00
2330788ace [VALGRING] error in some system access 2014-10-23 23:52:19 +02:00
e3dc686ec9 [DEBUG] C syntax error display in c++ 2014-10-21 23:19:02 +02:00
3f4a71065d [DEV] separate c++ & C and add filename in title 2014-10-21 21:18:50 +02:00
cefe0aacdb [INTEGRATION] update travis compilation 2014-10-17 22:12:43 +02:00
3c79dec2c8 [INTEGRATION] add color in travis build 2014-10-17 09:02:57 +02:00
7f7b3283e3 [DEV] add update of clang to set it work with timer 2014-10-17 09:00:46 +02:00
7c37d8e549 [DEV] add sub parsing of pass1 2014-10-13 22:39:49 +02:00
a201439665 [DEV] Update the parsing of many languages (pyton, cmake) is now good 2014-10-09 21:23:19 +02:00
67a08dd775 [DEBUG] correction of end of file regexp change 2014-10-08 21:32:41 +02:00
7952872980 [DEV] better regex ==> need to update alge to recognise data 2014-10-07 21:42:07 +02:00
78887e64ed [DEV] correction of the regex and add some basic test example 2014-10-07 00:45:01 +02:00
d93844d6da [DEV] first std::regex really work in c++ 2014-10-06 23:22:14 +02:00
243d7e7494 [DEV] change in etk::RegExp in std::regex 2014-10-05 23:46:57 +02:00
154351e629 [ERROR] Abandonned version in std::u32string ==> unexistant regexp 2014-10-03 21:44:13 +02:00
febbaffdf4 [DEV] {remove etk regexp dependency} big rework in progress to simplify code and use real std::regex templates 2014-10-03 00:49:26 +02:00
b890f931ca [DEV] remove problematic function parsing 2014-10-02 22:40:40 +02:00
2c3a64933d [DEV] transform plugin manager in unique resource 2014-09-18 22:27:54 +02:00
b8962cc3b9 [DEV] set travis depend on dev branch of ewol 2014-09-18 21:32:25 +02:00
f9ff0b8899 [DEBUG] remove lutinBase.py that is deprecated 2014-09-18 21:07:32 +02:00
f971c4fdfe [DEBUG]travis file error 2014-09-18 21:05:48 +02:00
6076698201 Create .travis.yml 2014-09-18 21:01:41 +02:00
c12ed9e7fa [DEBUG #9] freez correction ==> plugin data missing iterator 2014-09-18 21:01:41 +02:00
e29aa94cc5 [DEBUG #8] CLose the file after saving it when request close 2014-09-15 07:27:51 +02:00
05ac6a9210 [DEBUG #2 #7] close file and save it whan needed 2014-09-15 07:21:22 +02:00
0a054c209f [DEV] add parenting between bufferManager and Buffer 2014-09-12 22:10:32 +02:00
996fd58370 [DEBUG #1] Save file done 2014-09-12 21:52:03 +02:00
3574fd917c [DEBUG #5] correct file selection 2014-09-12 21:36:20 +02:00
b889b4aa5a [DEV] update plugin 2014-08-29 22:52:21 +02:00
668570cdc7 [DEV] start correct plugin interface 2014-08-28 22:31:00 +02:00
7e6f56a1cd [DEV] this plugin to the new ewol interface 2014-08-27 22:58:21 +02:00
a371c09e22 [DEV] update new signal system ==> run but not have many capabilities 2014-08-25 22:44:42 +02:00
cd3c5ff2d4 [DEV] update new object interface & rework global message (start) 2014-08-25 05:55:06 +02:00
686ec6d8bd [DEV] remove caller in signal emit 2014-08-22 05:21:10 +02:00
d31137e1a3 [DEBUG] gcc compilation warning 2014-08-21 21:00:13 +02:00
03fa46bbcd [DEV] rework signal interface (step 1 normalisation) 2014-08-20 22:34:31 +02:00
7da1beb12d [CLEAN] remove unneeded code 2014-08-19 21:47:33 +02:00
ddd21072b5 [DEV] plop 2014-08-17 23:30:37 +02:00
bf7899e045 [DEV] remove function onObjectRemove 2014-08-15 23:28:04 +02:00
3f0febce28 [DEV] change default Instance 2014-08-13 22:30:47 +02:00
5a924f7c9d [DEV] remove cyclic dependence on shared_ptr 2014-08-08 23:25:43 +02:00
39801fd265 [DEV] start dev with generic std::shared_ptr ==> basic work 2014-08-07 23:41:48 +02:00
ebdfd8be4c [DEV] update regexp of the languages 2014-08-01 23:44:34 +02:00
1d60917575 [DEBUG] correct C regExp 2014-07-30 23:24:26 +02:00
86d54590c0 [DEV] update new regexp system (not work correctly and only for C++) 2014-07-29 15:36:12 +02:00
b9a1c026fa [DEV] remove etk_min and etk_max & etk::Color<> interface 2014-07-03 21:03:26 +02:00
4942765ccf [DEV] add file chooser in shared mode 2014-06-30 22:36:36 +02:00
a425bdc17b [DEV] change manager interface in application 2014-06-30 22:36:36 +02:00
7d7d66d121 [DEV] change NULL ==> nullptr 2014-06-30 22:36:36 +02:00
55e05d24a3 [DEV] update new interface EWOL ewol::constext::Application 2014-06-30 22:36:36 +02:00
173e57342d [TAG] create 1.2-dev tag 2014-06-30 22:36:36 +02:00
09425067dc [DEV] remove to many request of focus 2014-06-03 22:19:00 +02:00
780234de13 [DEBUG] remove error in the HL update 2014-06-02 21:40:02 +02:00
c421bd5f90 [DEV] remove compilation warning 2014-06-02 21:04:35 +02:00
3ec3fa00d9 [DEV] work corectly with refcounting object (and remove some memory leek at close) 2014-05-27 21:43:02 +02:00
9b21e5c769 [DEV] correction some internal memory leek 2014-05-26 21:42:51 +02:00
2157099f0a [DEV] new staep to owner 2014-05-25 21:17:06 +02:00
d18b202e75 [DEV] init remove remove windows 2014-05-23 12:37:38 +02:00
63834fe960 [DEBUG] plugin are object ==> set it in shared pointer 2014-05-22 22:06:13 +02:00
cab0e6009d [DEV] update to the new API, system start but not compleately work 2014-05-20 23:26:14 +02:00
08261def10 [DEV] start rework on shared pointer 2014-05-20 21:35:41 +02:00
304ac2ba45 [DEV] start rework for dev interface of ewol 2014-05-19 22:30:39 +02:00
2d8c5d588d [STYLE] remove (void) in () to be c++ coherent 2014-05-15 21:37:39 +02:00
f1543f6199 [DEV] correction of the filename display and management 2014-05-13 21:48:20 +02:00
7acd5127eb [DEV] update ctags 2014-05-12 21:10:45 +02:00
0c6151283b [DEV] change log system 2014-04-30 22:18:00 +02:00
8854a5a34b [DEV] update readme for ios 2014-04-24 21:01:08 +02:00
958138ecbb [DEV] update to the single finger move 2014-04-18 22:22:02 +02:00
44bc1dd277 [DEV] remove df text test 2014-04-17 21:31:02 +02:00
0821335de6 [DEBUG] error writing 2014-04-16 22:21:20 +02:00
8d0fc9023f update ewol main 2014-04-07 07:59:00 +02:00
4f0839221d [DEV] remove deprecated config 2014-03-13 21:50:14 +01:00
17101a38b0 [DEV] cmake file update 2014-03-04 21:18:41 +01:00
def986ab82 [DEV] add cmake missing file 2014-02-24 22:01:10 +01:00
7ebc20e936 [DEV] add CMake instance 2014-02-24 21:50:50 +01:00
f807faf55a [DEBUG ewol#2] set button in toggle mode 2014-02-13 21:27:21 +01:00
bca2019789 Update version tag : 1.1.1 2014-02-12 21:05:58 +01:00
108afd2d30 [DEV] change scrool in scroll 2014-01-22 21:38:06 +01:00
a7907cd9b5 [DEV] unset distance field for textViewer 2014-01-20 21:16:41 +01:00
8830d47b51 [DEV] add some edf (distance field file) 2014-01-19 19:18:13 +01:00
599e49bcfd [DEV] add change of the GUi form 2014-01-18 14:34:33 +01:00
78c6baa02f [DEV] set a better theme manaement on ewol 2014-01-17 23:02:15 +01:00
46b95656bd [DEV] update at the new distance field 2014-01-15 01:15:27 +01:00
e2b365cffb [DEV] add MacOs icon 2014-01-05 23:07:23 +01:00
bcf318dbec [DEV] update the text viewer on the new scroll event 2014-01-04 20:21:54 +01:00
55e45c1b6b [DOC] add monk website 2013-12-28 16:10:22 +01:00
eef2bf64b9 [DEV] update new message API 2013-12-28 15:25:53 +01:00
db8f379e30 [DEV] update to the etk normalisation 2013-12-28 14:23:25 +01:00
2fc47723f0 [DEV] add monk doc generator 2013-12-23 22:52:33 +01:00
29f0656dfa [DEV] update lutin naming 2013-12-23 22:38:46 +01:00
3a95113f82 [DEBUG] Correction of some android errors 2013-12-20 00:43:31 +01:00
450732a27b [DOC] add doc generation site 2013-12-14 09:32:23 +01:00
90b766d2c7 [DEV] update on EWOL 0.8.1 2013-12-13 21:50:40 +01:00
edb2ab58f2 [DEBUG] correction of some highlight error 2013-12-05 22:16:04 +01:00
9ce727e481 [DEV] add documentation generation 2013-12-04 23:48:05 +01:00
159 changed files with 7941 additions and 4673 deletions

70
.travis.yml Normal file
View File

@@ -0,0 +1,70 @@
language:
- cpp
sudo: false
compiler:
- clang
- gcc
os:
- linux
- osx
branches:
only:
- master
- dev
addons:
apt:
sources:
- ubuntu-toolchain-r-test
packages:
- g++-4.9
install:
- echo "BUILDER = $BUILDER"
- echo "BOARD = $BOARD"
- echo "CONF = $CONF"
- pip install --user lutin
env:
matrix:
- CONF=debug BOARD=Linux
#- CONF=debug BOARD=Windows
#- CONF=debug BOARD=Android
- CONF=release BOARD=Linux
#- CONF=release BOARD=Windows
#- CONF=release BOARD=Android
exclude:
- compiler: clang
env: BOARD=Windows
- compiler: clang
env: BOARD=Android
before_script:
- cd ..
- mkdir bin
- curl https://storage.googleapis.com/git-repo-downloads/repo > bin/repo
- chmod a+x bin/repo
- git config --global user.email "travis@travis.com"
- git config --global user.name "Travis"
- git config --global color.ui "auto"
- git config --global core.editor "vi"
- mkdir framework
- cd framework
- ../bin/repo init -u https://github.com/HeeroYui/manifest.git
- ../bin/repo sync -j8
- cd ..
- pwd
- ls -l
- if [ "$CXX" == "clang++" ]; then BUILDER=clang; else BUILDER=gcc; fi
- if [ "$CXX" == "g++" ]; then COMPILATOR_OPTION="--compilator-version=4.9"; else COMPILATOR_OPTION=""; fi
script:
- lutin -C -P -t $BOARD -c $BUILDER $COMPILATOR_OPTION -m $CONF -p edn
notifications:
email:
- yui.heero@gmail.com

4
CMakeLists.txt Normal file
View File

@@ -0,0 +1,4 @@
cmake_minimum_required(VERSION 2.8)
SUBDIRS(${CMAKE_CURRENT_SOURCE_DIR}/../ewol)
SUBDIRS(sources)

View File

@@ -5,58 +5,83 @@ Edn
This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.
[![Build Status](https://travis-ci.org/HeeroYui/edn.svg?branch=dev)](https://travis-ci.org/HeeroYui/edn)
Instructions Instructions
============ ============
download the software : need google repo:
-----------------
mkdir yourDevFolder see: http://source.android.com/source/downloading.html#installing-repo
cd yourDevFolder
git clone git://github.com/HeeroYui/ewol.git
cd ewol
git submodule init
git submodule update
cd ..
git clone git://github.com/HeeroYui/edn.git
cd edn
mkdir ~/.bin
PATH=~/.bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/.bin/repo
chmod a+x ~/.bin/repo
download Build system:
----------------------
sudo pip install lutin
sudo pip install pillow
download the Framework:
----------------------
mkdir -p WORKING_DIRECTORY/framework
cd WORKING_DIRECTORY/framework
repo init -u git://github.com/atria-soft/manifest.git
repo sync -j8
cd ../..
download the software:
----------------------
mkdir -p WORKING_DIRECTORY/application
cd WORKING_DIRECTORY/application
git clone https://github.com/HeeroYui/edn.git
cd ../..
Compile software:
-----------------
cd WORKING_DIRECTORY
lutin -C -P edn
(debug) Compile software & Run debug version: (debug) Compile software & Run debug version:
../ewol/build/lutin.py --color --mode=debug lutin -C -P -m debug edn
or # or
../ewol/build/lutin.py --color --compilator=clang --mode=debug lutin -C -P -c clang -m debug edn
./out/Linux/debug/staging/edn//usr/bin/edn -l6 yourFile.txt
Note : -l6 corespond at the LOG level to display.
(release) Compile software & install & run: (release) Compile software & install & run:
# generate binary, tree, package and install it ... # generate binary, tree, package and install it ...
../ewol/build/lutin.py -c edn-install lutin -C -P edn?install
edn exemple.txt
(Android) Compile software & install (Android) Compile software & install
cd yourDevFolder
mkdir andoid mkdir andoid
cd android cd android
download here in "sdk" and "ndk" the coresponding SDK and NDK of Android: download here in "sdk" and "ndk" the coresponding SDK and NDK of Android:
http://developer.android.com/tools/sdk/ndk/index.html http://developer.android.com/tools/sdk/ndk/index.html
http://developer.android.com/sdk/index.html http://developer.android.com/sdk/index.html
==> you need to download sub package of the NDK (refer to the NDK doccumentation) but only supported android version >4.0 ==> you need to download sub package of the NDK (refer to the NDK doccumentation) but only supported android version >4.0
cd ../edn cd ..
# generate .so # Generate package and install on Android device (in debug mode a generic key is set)
../ewol/build/lutin.py --color --target=Android --mode=debug edn-install lutin -C -P -t Android -m debug edn?install
# to show the log : # to show the log :
../ewol/build/lutin.py --target=Android edn-log lutin -C -P -t Android edn?log
(Windows) Compile software & install (Windows) Compile software & install
cd yourDevFolder/edn lutin -C -P -t Windows -m debug edn
../ewol/build/lutin.py --color --target=Windows --mode=debug
(MAC) All needed and some useful packages (MAC) All needed and some useful packages
@@ -65,15 +90,25 @@ download the software :
- Xcode ==> for all developement packages - Xcode ==> for all developement packages
- in Xcode : XCode->Setting->Download and install component: "Command Line Tools" - in Xcode : XCode->Setting->Download and install component: "Command Line Tools"
cd yourDevFolder/edn lutin -C -P -m debug edn
../ewol/build/lutin.py --color --mode=debug
On linux you can generate 3 board in one time (IOs) All needed and some useful packages
=============================================
cd yourDevFolder/edn - Git access (client you want or : http://code.google.com/p/git-osx-installer/ ==>need a ctrl+click to remove the normal installation control)
../ewol/build/lutin.py --color --target=Linux --mode=debug edn --target=Windows --mode=debug edn --target=Android --mode=debug edn - Xcode ==> for all developement packages
- in Xcode : XCode->Setting->Download and install component: "Command Line Tools"
for porting on IOs you need a developper account
# compile and install on simulator (no developper account needed)
lutin -C -P -t IOs -m debug --simulation edn?install
# launch IOs simulator in xcode, and your application will appear on the second page (32 bit mode only)
# compile and install on board
lutin -C -P -t IOs -m debug edn?install
# compile and install on board and debug mode :
lutin -C -P -t IOs -m debug --simulation edn?log
Dependency packages Dependency packages
=================== ===================

View File

@@ -1,68 +0,0 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux Kernel Configuration
#
#
# Modules
#
# CONFIG_BUILD_AGG is not set
# CONFIG_BUILD_LINEARMATH is not set
# CONFIG_BUILD_BULLET is not set
# CONFIG_BUILD_ETK is not set
# CONFIG_BUILD_FREETYPE is not set
# CONFIG_BUILD_LUA is not set
# CONFIG_BUILD_OGG is not set
# CONFIG_BUILD_PARSERSVG is not set
# CONFIG_BUILD_LIBPNG is not set
# CONFIG_BUILD_TINYXML is not set
# CONFIG_BUILD_ZLIB is not set
# CONFIG_BUILD_LIBZIP is not set
# CONFIG_BUILD_EWOL is not set
CONFIG_BUILD_EDN=y
#
# ewol
#
#
# General
#
CONFIG___EWOL_APPL_BASIC_TITLE__="Edn : Sources Code Editor"
CONFIG___EWOL_INTEGRATED_FONT__=y
#
# Android
#
CONFIG___EWOL_ANDROID_MINIMUM_SDK_VERSION__=9
# CONFIG___EWOL_ANDROID_SHOW_TITLE__ is not set
CONFIG___EWOL_ANDROID_ORIENTATION_AUTO__=y
# CONFIG___EWOL_ANDROID_ORIENTATION_LANDSCAPE__ is not set
# CONFIG___EWOL_ANDROID_ORIENTATION_PORTRAIT__ is not set
#
# Permissions
#
CONFIG___ANDROID_PERMISSION__WRITE_EXTERNAL_STORAGE__=y
# CONFIG___ANDROID_PERMISSION__CAMERA__ is not set
# CONFIG___ANDROID_PERMISSION__INTERNET__ is not set
# CONFIG___ANDROID_PERMISSION__MODIFY_AUDIO_SETTINGS__ is not set
# CONFIG___ANDROID_PERMISSION__READ_CALENDAR__ is not set
# CONFIG___ANDROID_PERMISSION__READ_CONTACTS__ is not set
# CONFIG___ANDROID_PERMISSION__READ_FRAME_BUFFER__ is not set
# CONFIG___ANDROID_PERMISSION__READ_PROFILE__ is not set
# CONFIG___ANDROID_PERMISSION__RECORD_AUDIO__ is not set
# CONFIG___ANDROID_PERMISSION__SET_ORIENTATION__ is not set
# CONFIG___ANDROID_PERMISSION__VIBRATE__ is not set
# CONFIG___ANDROID_PERMISSION__ACCESS_COARSE_LOCATION__ is not set
# CONFIG___ANDROID_PERMISSION__ACCESS_FINE_LOCATION__ is not set
#
# edn
#
#
# General
#
CONFIG_APPL_BUFFER_FONT_NORMAL=y
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set

View File

@@ -1,49 +0,0 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux Kernel Configuration
#
#
# Modules
#
# CONFIG_BUILD_AGG is not set
# CONFIG_BUILD_LINEARMATH is not set
# CONFIG_BUILD_BULLET is not set
# CONFIG_BUILD_ETK is not set
# CONFIG_BUILD_FREETYPE is not set
# CONFIG_BUILD_LUA is not set
# CONFIG_BUILD_OGG is not set
# CONFIG_BUILD_PARSERSVG is not set
# CONFIG_BUILD_LIBPNG is not set
# CONFIG_BUILD_PORTAUDIO is not set
# CONFIG_BUILD_TINYXML is not set
# CONFIG_BUILD_ZLIB is not set
# CONFIG_BUILD_LIBZIP is not set
# CONFIG_BUILD_EWOL is not set
CONFIG_BUILD_EDN=y
#
# ewol
#
#
# General
#
CONFIG___EWOL_APPL_BASIC_TITLE__="Edn : Sources Code Editor"
# CONFIG___EWOL_INTEGRATED_FONT__ is not set
#
# Linux
#
CONFIG___EWOL_LINUX_GUI_MODE_X11__=y
# CONFIG___EWOL_LINUX_GUI_MODE_DIRECT_FB__ is not set
#
# edn
#
#
# General
#
CONFIG_APPL_BUFFER_FONT_NORMAL=y
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set

View File

@@ -1,48 +0,0 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux Kernel Configuration
#
#
# Modules
#
# CONFIG_BUILD_AGG is not set
# CONFIG_BUILD_LINEARMATH is not set
# CONFIG_BUILD_BULLET is not set
# CONFIG_BUILD_ETK is not set
# CONFIG_BUILD_FREETYPE is not set
# CONFIG_BUILD_LUA is not set
# CONFIG_BUILD_OGG is not set
# CONFIG_BUILD_PARSERSVG is not set
# CONFIG_BUILD_LIBPNG is not set
# CONFIG_BUILD_TINYXML is not set
# CONFIG_BUILD_ZLIB is not set
# CONFIG_BUILD_LIBZIP is not set
# CONFIG_BUILD_EWOL is not set
CONFIG_BUILD_EDN=y
#
# ewol
#
#
# General
#
CONFIG___EWOL_APPL_BASIC_TITLE__="Edn : Sources Code Editor"
CONFIG___EWOL_INTEGRATED_FONT__=y
#
# Linux
#
CONFIG___EWOL_LINUX_GUI_MODE_X11__=y
# CONFIG___EWOL_LINUX_GUI_MODE_DIRECT_FB__ is not set
#
# edn
#
#
# General
#
CONFIG_APPL_BUFFER_FONT_NORMAL=y
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set

View File

@@ -1,43 +0,0 @@
#
# Automatically generated file; DO NOT EDIT.
# Linux Kernel Configuration
#
#
# Modules
#
# CONFIG_BUILD_AGG is not set
# CONFIG_BUILD_LINEARMATH is not set
# CONFIG_BUILD_BULLET is not set
# CONFIG_BUILD_ETK is not set
# CONFIG_BUILD_FREETYPE is not set
# CONFIG_BUILD_GLEW is not set
# CONFIG_BUILD_LUA is not set
# CONFIG_BUILD_OGG is not set
# CONFIG_BUILD_PARSERSVG is not set
# CONFIG_BUILD_LIBPNG is not set
# CONFIG_BUILD_TINYXML is not set
# CONFIG_BUILD_ZLIB is not set
# CONFIG_BUILD_LIBZIP is not set
# CONFIG_BUILD_EWOL is not set
CONFIG_BUILD_EDN=y
#
# ewol
#
#
# General
#
CONFIG___EWOL_APPL_BASIC_TITLE__="Ewol Basic Title"
CONFIG___EWOL_INTEGRATED_FONT__=y
#
# edn
#
#
# General
#
CONFIG_APPL_BUFFER_FONT_NORMAL=y
# CONFIG_APPL_BUFFER_FONT_DISTANCE_FIELD is not set

View File

@@ -1,28 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<composer> <composer expand="true,false" fill="true,false">
<sizer mode="hori" expand="true,false" fill="true" lock="true"> <sizer mode="hori" expand="true,false" fill="true" lock="true">
<button name="SEARCH:close"> <button name="SEARCH:close">
<image src="THEME:GUI:Remove.svg" fill="true" size="7,7mm"/> <image src="THEME:GUI:Remove.edf" fill="true" size="7,7mm" distance-field="true"/>
</button> </button>
<entry name="SEARCH:search-entry" expand="true" fill="true"/> <entry name="SEARCH:search-entry" expand="true" fill="true"/>
<button name="SEARCH:search"> <button name="SEARCH:search">
<image src="THEME:GUI:Search.svg" fill="true" size="7,7mm"/> <image src="THEME:GUI:Search.edf" fill="true" size="7,7mm" distance-field="true"/>
</button> </button>
<entry name="SEARCH:replace-entry" expand="true" fill="true"/> <entry name="SEARCH:replace-entry" expand="true" fill="true"/>
<button name="SEARCH:replace"> <button name="SEARCH:replace">
<image src="THEME:GUI:Replace.svg" fill="true" size="7,7mm"/> <image src="THEME:GUI:Replace.edf" fill="true" size="7,7mm" distance-field="true"/>
</button> </button>
<button name="SEARCH:case"> <button name="SEARCH:case" toggle="true">
<image src="THEME:GUI:CaseSensitive.svg" fill="true" size="7,7mm" hover="Close search bar"/> <image src="THEME:GUI:CaseSensitive.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
<image src="THEME:GUI:CaseSensitive.svg" fill="true" size="7,7mm" hover="Close search bar"/> <image src="THEME:GUI:CaseSensitive.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
</button> </button>
<button name="SEARCH:wrap"> <button name="SEARCH:wrap" toggle="true">
<image src="THEME:GUI:WrapAround.svg" fill="true" size="7,7mm" hover="Close search bar"/> <image src="THEME:GUI:WrapAround.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
<image src="THEME:GUI:WrapAround.svg" fill="true" size="7,7mm" hover="Close search bar"/> <image src="THEME:GUI:WrapAround.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
</button> </button>
<button name="SEARCH:up-down"> <button name="SEARCH:up-down" toggle="true">
<image src="THEME:GUI:Up.svg" fill="true" size="7,7mm" hover="Close search bar"/> <image src="THEME:GUI:Up.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
<image src="THEME:GUI:Down.svg" fill="true" size="7,7mm" hover="Close search bar"/> <image src="THEME:GUI:Down.edf" fill="true" size="7,7mm" hover="_T(Close search bar)" distance-field="true"/>
</button> </button>
</sizer> </sizer>
</composer> </composer>

View File

@@ -1,14 +1,27 @@
[Desktop Entry] [Desktop Entry]
Version=0.3.0
Name=Edn : Editeur de N'ours Name=Edn : Editeur de N'ours
Exec=edn Exec=edn %U
Icon=Edn Icon=/usr/share/edn/icon.png
Terminal=false Terminal=false
Type=Application Type=Application
Categories=Development;Utility;TextEditor; Categories=Development;
GenericName=Text editor GenericName=Text editor
GenericName[en]=Text editor GenericName[en]=Text editor
GenericName[nl]=Tekst verwerker GenericName[nl]=Tekst verwerker
GenericName[fr]=éditeur de text GenericName[fr]=Éditeur de text
Comment=Code editor for c, c++, php, bash, xml ... Comment=Code editor for c, c++, php, bash, xml ...
Comment[fr]=éditeur de text pour les language c, c++, php, bash, xml ... Comment[fr]=éditeur de text pour les language c, c++, php, bash, xml ...
OnlyShowIn=GNOME;Unity;
MimeType=text/html;text/xml;application/xhtml_xml;x-scheme-handler/http;x-scheme-handler/https;
StartupNotify=true
Actions=New;
[Desktop Action New]
Name=Open a New Window
Name[fr]=Ouvrir une nouvelle fenêtre
Name[nl]=Nieuw venster openen
Name[en]=Open a New Window
Exec=edn
#desktop-file-validate edn.desktop
#sudo cp xxx /usr/share/applications/

BIN
data/icon.icns Normal file

Binary file not shown.

0
data/lang/EN.json Normal file
View File

0
data/lang/FR.json Normal file
View File

View File

@@ -1,57 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Assembleur"> <EdnLang version="0.1" lang="Assembleur">
<ext>*.s</ext> <ext>.*\.(s|S|asm|ASM)</ext>
<ext>*.S</ext>
<ext>*.asm</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="my comment multiline doxygen"> <rule name="my comment multiline doxygen">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<start>/\*\*</start> <regex>
<end>\*/</end> <start>/\*(\*|!)</start>
<stop>\*/</stop>
</regex>
</rule> </rule>
<rule name="my comment multiline"> <rule name="my comment multiline">
<color>comment</color> <color>comment</color>
<start>/\*</start> <regex>
<end>\*/</end> <start>/\*</start>
<stop>\*/</stop>
</regex>
</rule> </rule>
<rule name="my if 0"> <rule name="my if 0">
<color>preprocesseur</color> <color>preprocesseur</color>
<start>#[ \t]*if 0</start> <regex>
<end>#endif|#else</end> <start>#[ \t]*if 0</start>
<EscapeChar>\</EscapeChar> <stop>#(endif|else)</stop>
</regex>
</rule> </rule>
<rule name="my preprocesseur"> <rule name="my preprocesseur">
<color>preprocesseur</color> <color>preprocesseur</color>
<start>#</start> <regex>#.*?$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="my comment doxygen"> <rule name="my comment doxygen">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<start>//!</start> <regex>//!.*?$</regex>
<end>\n</end>
</rule> </rule>
<rule name="my todo comment"> <rule name="my todo comment">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<start>//[ \t]*TODO[ \t]*:</start> <regex>//[ \t]*TODO[ \t]*:.*?$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="my comment"> <rule name="my comment">
<color>comment</color> <color>comment</color>
<start>(//|@)</start> <regex>//.*?$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>\@smull|ldrsh|smlal|stmdb|mul|mla|umull|ldr|add|str|mov|subs|bgt|ldmia|stmia|ldmfd|cmp|sub|strd|stmfd|bne|bhi|ldrd|mvn\@</start> <regex>\b(smull|ldrsh|smlal|stmdb|mul|mla|umull|ldr|add|str|mov|subs|bgt|ldmia|stmia|ldmfd|cmp|sub|strd|stmfd|bne|bhi|ldrd|mvn)\b</regex>
</rule> </rule>
<rule name="register list"> <rule name="register list">
<color>type</color> <color>type</color>
<start>\@r(10|11|12|[0-9]?)|sp|lp|lr|pc\@</start> <regex>\b(r(10|11|12|[0-9]?)|sp|lp|lr|pc)\b</regex>
</rule> </rule>
</pass2> </pass2>
</EdnLang> </EdnLang>

View File

@@ -1,48 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Bash script"> <EdnLang version="0.1" lang="Bash script">
<ext>*.sh</ext> <ext>.*\.sh</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="first line"> <rule name="first line">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<start>#!</start> <regex>#!(.|\\[\\\n])*?$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="comment line"> <rule name="comment line">
<color>comment</color> <color>comment</color>
<start>#</start> <regex>#(.|\\[\\\n])*?$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>"</start> <regex>&quot;(.|\\[\\&quot;])*?&quot;</regex>
<end>"</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="simpleQuteText"> <rule name="simpleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>'</start> <regex>&apos;(.|\\[\\&apos;])*?&apos;</regex>
<end>'</end>
<!--<EscapeChar>\</EscapeChar>-->
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>\@for|done|do|while|in|if|elif|then|else|fi\@</start> <regex>\b(for|done|do|while|in|if|elif|then|else|fi)\b</regex>
</rule> </rule>
<rule name="my Variable"> <rule name="my Variable">
<color>keyword</color> <color>keyword</color>
<start>[\$]+[a-zA-Z_][a-zA-Z0-9_]*</start> <regex>[\$]+[a-zA-Z_][a-zA-Z0-9_]*</regex>
</rule> </rule>
<rule name="Function name"> <rule name="Function name">
<color>functionName</color> <color>functionName</color>
<start>function (\w|_)+[ \t]*\(</start> <regex>function (\w|_)+[ \t]*\(</regex>
</rule> </rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<start>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}|</start> <regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule> </rule>
</pass2> </pass2>
</EdnLang> </EdnLang>

View File

@@ -1,60 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Boulou log"> <EdnLang version="0.1" lang="Boulou log">
<ext>*.boo</ext> <ext>.*\.(boo|BOO)</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="comment ##"> <rule name="comment ##">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<start>##</start> <regex>##.*?$</regex>
<end>\n</end>
</rule> </rule>
<rule name="comment #"> <rule name="comment #">
<color>comment</color> <color>comment</color>
<start>#</start> <regex>#.*?$</regex>
<end>\n</end>
</rule> </rule>
<rule name="notes ... "> <rule name="notes ... ">
<color>preprocesseur</color> <color>preprocesseur</color>
<start>(NOTE|TODO) : </start> <regex>(NOTE|TODO) : .*?$</regex>
<end>\n</end>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>"</start> <regex>&quot;(.|\\[\\&quot;])*?$</regex>
<end>"</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="simpleQuteText"> <rule name="simpleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>\@'</start> <regex>\b&apos;(.|\\[\\&apos;])*?$</regex>
<end>'</end>
<!--<EscapeChar>\</EscapeChar>-->
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="pourcentage OK"> <rule name="pourcentage OK">
<color>TestResultOK</color> <color>TestResultOK</color>
<start>100%</start> <regex>100%</regex>
</rule> </rule>
<rule name="pourcentage"> <rule name="pourcentage">
<color>number</color> <color>number</color>
<start>[0-9]*%</start> <regex>[0-9]*%</regex>
</rule> </rule>
<rule name="R<EFBFBD>sultat OK"> <rule name="Résultat OK">
<color>TestResultOK</color> <color>TestResultOK</color>
<start>\[( )*(OK|Ok|ok)( )*\]</start> <regex>\[( )*(OK|Ok|ok)( )*\]</regex>
</rule> </rule>
<rule name="resultat en erreur"> <rule name="resultat en erreur">
<color>TestResultERROR</color> <color>TestResultERROR</color>
<start>\[(ERREUR|Erreur|erreur)\]</start> <regex>\[(ERREUR|Erreur|erreur)\]</regex>
</rule> </rule>
<rule name="resultat vide"> <rule name="resultat vide">
<color>number</color> <color>number</color>
<start>\[( )*\]</start> <regex>\[( )*\]</regex>
</rule> </rule>
<rule name="notes ... "> <rule name="notes ... ">
<color>macro</color> <color>macro</color>
<start>==&gt;</start> <regex>==&gt;</regex>
</rule> </rule>
</pass2> </pass2>
</EdnLang> </EdnLang>

View File

@@ -1,138 +1,134 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="C/C++"> <EdnLang version="0.1" lang="C">
<ext>*.c</ext> <ext>.*\.(c|C|m|M)</ext>
<ext>*.cpp</ext> <!--might be : <ext>.*\.(c|h|m)</ext>-->
<ext>*.cc</ext>
<ext>*.h</ext>
<ext>*.hpp</ext>
<ext>*.mm</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="my comment multiline doxygen"> <rule name="doxygen multiline">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<start>/\*\*</start> <regex>
<end>\*/</end> <start>/\*(\*|!)</start>
<rule name="macro"> <stop>\*/</stop>
<color>macro</color> </regex>
<start>\@[A-Z_]{4,500}\@</start> <sub>doxyparse</sub>
</rule>
<rule name="keyword">
<color>keyword</color>
<start>@\w*[ \t]*(\[(in|out| |,)*\])?[ \t]*([a-zA-Z0-9\-_]*)</start>
<underColor idPThese="1"></underColor><!-- (\[(in|out| |,)*\]) -->
<underColor idPThese="3"></underColor><!-- (([a-zA-Z0-9\-_])*) -->
</rule>
</rule> </rule>
<rule name="code Review"> <rule name="comment multiline">
<color>SYNTAX_ERROR</color>
<start>/\*[ \t]*TODO :</start>
<end>\*/</end>
</rule>
<rule name="my comment multiline">
<color>comment</color> <color>comment</color>
<start>/\*</start> <regex>
<end>\*/</end> <start>/\*</start>
<stop>\*/</stop>
</regex>
<sub>TODO</sub>
</rule> </rule>
<rule name="my if 0"> <rule name="comment multiline ERROR">
<color>SYNTAX_ERROR</color>
<regex>
<start>/\*</start>
</regex>
</rule>
<rule name="#if 0">
<color>preprocesseur</color> <color>preprocesseur</color>
<start>#[ \t]*if 0</start> <regex>
<end>#endif|#else</end> <start>#[ \t]*if 0</start>
<EscapeChar>\</EscapeChar> <stop>#(endif|else)</stop>
</regex>
</rule> </rule>
<rule name="my preprocesseur"> <rule name="#if 0 ERROR">
<color>SYNTAX_ERROR</color>
<regex>
<start>#[ \t]*if 0</start>
</regex>
</rule>
<rule name="#preproc">
<color>preprocesseur</color> <color>preprocesseur</color>
<start>#</start> <regex>#(.|\\[\\\n])*</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="my comment doxygen"> <rule name="inline doxygen">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<start>//!</start> <regex>//!.*</regex>
<end>\n</end> <sub>doxyparse</sub>
</rule> </rule>
<rule name="my todo comment"> <rule name="inline comment">
<color>SYNTAX_ERROR</color>
<start>//[ \t]*TODO[ \t]*:</start>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule>
<rule name="my comment">
<color>comment</color> <color>comment</color>
<start>//</start> <regex>//.*</regex>
<end>\n</end> <sub>TODO</sub>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="double quote text">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>"</start> <regex>&quot;(.|\\[\\&quot;])*?&quot;</regex> <!-- " -->
<end>"</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="simpleQuteText"> <rule name="simple quote text">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>'</start> <regex>&apos;\\?.&apos;</regex>
<end>'</end>
<!--<EscapeChar>\</EscapeChar>-->
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@</start> <regex>\b(return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof)\b</regex>
</rule> </rule>
<rule name="my function keyword"> <rule name="my function keyword">
<color>systemFunction</color> <color>systemFunction</color>
<start>\@new|delete|try|catch|memset|fopen|fread|fwrite|fgets|fclose|printf|(f|s|diag_)printf|calloc|malloc|realloc|(cyg|sup)_([a-z]|[A-Z]|[0-9]|_)+\@</start> <regex>\b(memset|fopen|fread|fwrite|fgets|fclose|printf|(f|s|diag_)printf|calloc|malloc|realloc)\b</regex>
</rule> </rule>
<rule name="my type"> <rule name="my type">
<color>type</color> <color>type</color>
<start>\@bool|BOOL|char(16_t|32_t)?|double|float|u?int(8|16|32|64|128)?(_t)?|long|short|signed|size_t|unsigned|void|(I|U)(8|16|32|64|128)\@</start> <regex>\b(bool|char(16_t|32_t)?|double|float|u?int(8|16|32|64|128)?(_t)?|long|short|signed|size_t|unsigned|void|(I|U)(8|16|32|64|128))\b</regex>
</rule>
<rule name="std type">
<color>type</color>
<start>\@std::(vector|(u16|u32|w)?string|codecvt_utf(16|8_utf16|8)+|complex|iterator(_traits)?|tuple(_element|_size)?|pair)\@</start>
</rule> </rule>
<rule name="my storage keyword"> <rule name="my storage keyword">
<color>storageKeyword</color> <color>storageKeyword</color>
<start>\@inline|const|class|virtual|private|public|protected|friend|const|extern|auto|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum\@</start> <regex>\b(inline|const|const|extern|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum)\b</regex>
</rule> </rule>
<rule name="my common Define"> <rule name="my common Define">
<color>commonDefine</color> <color>commonDefine</color>
<start>\@NULL|MAX|MIN|__LINE__|__DATA__|__FILE__|__func__|__TIME__|__STDC__\@</start> <regex>\b(NULL|MAX|MIN|__(LINE|DATA|FILE|func|TIME|STDC|PRETTY_FUNCTION|FUNCTION)__)\b</regex>
</rule> </rule>
<rule name="numeric constant"> <rule name="numeric constant">
<color>number</color> <color>number</color>
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start> <regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule> </rule>
<rule name="my boolean"> <rule name="my boolean">
<color>boolean</color> <color>boolean</color>
<start>\@true|TRUE|false|FALSE\@</start> <regex>\b(TRUE|FALSE)\b</regex>
</rule> </rule>
<rule name="BIG LETTER"> <rule name="BIG LETTER">
<color>macro</color> <color>macro</color>
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start> <regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule>
<rule name="CPP member">
<color>memberClass</color>
<start>\@m_[A-Za-z_0-9]*\@</start>
</rule> </rule>
<rule name="function input"> <rule name="function input">
<color>inputFunction</color> <color>inputFunction</color>
<start>\@_[A-Za-z_0-9]*\@</start> <regex>\b_\w+\b</regex>
</rule> </rule>
<rule name="Function name"> <rule name="Function name">
<color>functionName</color> <color>functionName</color>
<start>\@(\w|_)+[ \t]*\(</start> <regex>\b((\w|_)+[ \t]*\()</regex>
</rule> </rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<start>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}|</start> <regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule> </rule>
<!-- With all elementes : <rule name="simpleQuteTextError">
<rule name="BIG LETTER"> <color>SYNTAX_ERROR</color>
<color>macro</color> <regex>&apos;|&quot;</regex>
<start>([A-Z]|_){4,500}</start>
<elemSubColor id="1">doxElem</elemSubColor>
</rule> </rule>
-->
</pass2> </pass2>
<pass name="doxyparse">
<rule name="key">
<color>doxygen-key</color>
<regex>(@|\\)[\t ]*\w+</regex>
</rule>
<rule name="in-out">
<color>doxygen-in-out</color>
<regex>\[(in|in,out|out)\]</regex>
</rule>
<rule name="function input">
<color>inputFunction</color>
<regex>\b_\w+\b</regex>
</rule>
</pass>
<pass name="TODO">
<rule name="function input">
<color>SYNTAX_ERROR</color>
<regex>TODO[ \t]*:.*</regex>
</rule>
</pass>
</EdnLang> </EdnLang>

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="cmake">
<ext>CMakeLists.txt</ext>
<ext>CMakeCache.txt</ext>
<pass1>
<rule name="my comment doxygen">
<color>commentDoxygen</color>
<regex>##.*</regex>
</rule>
<rule name="my todo comment">
<color>SYNTAX_ERROR</color>
<regex>#[ \t]TODO[ \t]*:(.|\\[\\\n])*</regex>
</rule>
<rule name="my comment">
<color>comment</color>
<regex>#(.|\\[\\\n])*</regex>
</rule>
<rule name="doubleQuteText">
<color>doubleQuoteText</color>
<regex>&quot;(.|\\[\\&quot;])*?&quot;</regex>
</rule>
</pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword">
<color>keyword</color>
<regex>\b(foreach|message|endforeach|if|else|endif|list|file|string)\b</regex>
</rule>
<rule name="my function keyword">
<color>systemFunction</color>
<regex>\b(set|include_directories|add_definitions|add_library|include_directories|target_link_libraries|project|include|check_include_file|enable_testing|option|cmake_minimum_required|add_definitions|check_include_file|configure_file|include_directories|add_custom_command|add_executable|add_test|find_package|pkg_check_modules|set_target_properties|source_group)\b</regex>
</rule>
<rule name="Variable">
<color>inputFunction</color>
<regex>\$\{.*\}</regex>
</rule>
<rule name="numeric constant">
<color>number</color>
<regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule>
<rule name="BIG LETTER">
<color>macro</color>
<regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule>
<rule name="Function name">
<color>functionName</color>
<regex>\b(\w|_)+[ \t]*\(</regex>
</rule>
<rule name="files path">
<color>memberClass</color>
<regex>[\w-]*(\.|/)\w*</regex>
</rule>
</pass2>
</EdnLang>

View File

@@ -0,0 +1,149 @@
<?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="C++">
<ext>.*\.(cpp|CPP|cxx|CXX|cc|CC|hpp|HPP|hxx|HXX|h|H|mm|MM|c++|C++|m++|M++|mpp|MPP)</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="doxygen multiline">
<color>commentDoxygen</color>
<regex>
<start>/\*(\*|!)</start>
<stop>\*/</stop>
</regex>
<sub>doxyparse</sub>
</rule>
<rule name="comment multiline">
<color>comment</color>
<regex>
<start>/\*</start>
<stop>\*/</stop>
</regex>
<sub>TODO</sub>
</rule>
<rule name="comment multiline ERROR">
<color>SYNTAX_ERROR</color>
<regex>
<start>/\*</start>
</regex>
</rule>
<rule name="#if 0">
<color>preprocesseur</color>
<regex>
<start>#[ \t]*if 0</start>
<stop>#e(ndif|lse)</stop>
</regex>
</rule>
<rule name="#if 0 ERROR">
<color>SYNTAX_ERROR</color>
<regex>
<start>#[ \t]*if 0</start>
</regex>
</rule>
<rule name="#preproc">
<color>preprocesseur</color>
<regex>#(.|\\[\\\n])*</regex>
</rule>
<rule name="inline doxygen">
<color>commentDoxygen</color>
<regex>//!.*</regex>
<sub>doxyparse</sub>
</rule>
<rule name="inline comment">
<color>comment</color>
<regex>//.*</regex>
<sub>TODO</sub>
</rule>
<rule name="double quote text">
<color>doubleQuoteText</color>
<regex>(U|u|u8)?&quot;(.|\\[\\&quot;])*?&quot;</regex> <!-- " -->
</rule>
<rule name="simple quote text">
<color>doubleQuoteText</color>
<regex>&apos;\\?.&apos;</regex>
</rule>
</pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="old school elements">
<color>SYNTAX_ERROR</color>
<regex>&apos;|&quot;|NULL|MAX|MIN|TRUE|FALSE|calloc|malloc|realloc|free|BOOL</regex>
</rule>
<rule name="my keyword">
<color>keyword</color>
<regex>\b(return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof)\b</regex>
</rule>
<rule name="my function keyword">
<color>systemFunction</color>
<regex>\b(new|delete|try|catch|memset|fopen|fread|fwrite|fgets|fclose|printf|(f|s|diag_)printf|(reinterpret|static|dynamic|const)_cast)\b</regex>
</rule>
<rule name="my type">
<color>type</color>
<regex>\b(bool|char(16_t|32_t)?|double|float|u?int(8|16|32|64|128)?(_t)?|long|short|signed|size_t|unsigned|void|(I|U)(8|16|32|64|128))\b</regex>
</rule>
<rule name="std type">
<color>type</color>
<regex>\b(std(11)?|boost)::[\w:]*</regex>
</rule>
<rule name="my storage keyword">
<color>storageKeyword</color>
<regex>\b(inline|const|class|namespace|virtual|private|public|protected|friend|const|extern|mutable|auto|register|static|unsigned|signed|volatile|char|double|float|int|long|short|void|typedef|struct|union|enum|override|final)\b</regex>
</rule>
<rule name="my common Define">
<color>commonDefine</color>
<regex>\b(nullptr|__(LINE|DATA|FILE|func|TIME|STDC|PRETTY_FUNCTION|FUNCTION)__)\b</regex>
</rule>
<rule name="numeric constant">
<color>number</color>
<regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(LL|L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule>
<rule name="my boolean">
<color>boolean</color>
<regex>\b(true|false)\b</regex>
</rule>
<rule name="BIG LETTER">
<color>macro</color>
<regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule>
<rule name="CPP member">
<color>memberClass</color>
<regex>\b((m|s|p|s|g)_|property|signal)\w+\b</regex>
</rule>
<rule name="function input">
<color>inputFunction</color>
<regex>\b_\w+\b</regex>
</rule>
<rule name="Function name">
<color>functionName</color>
<regex>\b((\w|_)+[ \t]*\()</regex>
</rule>
<rule name="condition">
<color>boolean</color>
<regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule>
<rule name="simpleQuteTextError">
<color>SYNTAX_ERROR</color>
<regex>&apos;|&quot;</regex>
</rule>
</pass2>
<pass name="doxyparse">
<rule name="knownkey">
<color>doxygen-key-known</color>
<regex>(@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
</rule>
<rule name="key">
<color>doxygen-key</color>
<regex>(@|\\)[\t ]*\w+</regex>
</rule>
<rule name="in-out">
<color>doxygen-in-out</color>
<regex>\[(in|in,out|out)\]</regex>
</rule>
<rule name="function input">
<color>inputFunction</color>
<regex>\b_\w+\b</regex>
</rule>
</pass>
<pass name="TODO">
<rule name="function input">
<color>SYNTAX_ERROR</color>
<regex>TODO[ \t]*:.*</regex>
</rule>
</pass>
</EdnLang>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="gcov">
<ext>.*\.(gcov)</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="Not parsed">
<color>normal</color>
<regex>( )+-\:.*</regex>
</rule>
<rule name="Not executed">
<color>SYNTAX_ERROR</color>
<regex>( )+(#)+\:.*</regex>
</rule>
<rule name="Not parsed">
<color>number</color>
<regex>( )+[0-9]+\:.*</regex>
</rule>
</pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
</pass2>
</EdnLang>

View File

@@ -1,82 +1,77 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Glsl"> <EdnLang version="0.1" lang="Glsl">
<ext>*.glsl</ext> <ext>.*\.(glsl|vert|frag|prog)</ext>
<ext>*.vert</ext>
<ext>*.frag</ext>
<ext>*.prog</ext>
<pass1> <pass1>
<rule name="my comment multiline doxygen"> <rule name="my comment multiline doxygen">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<start>/\*\*</start> <regex>
<end>\*/</end> <start>/\*(\*|!)</start>
<stop>\*/</stop>
</regex>
</rule> </rule>
<rule name="my comment multiline"> <rule name="my comment multiline">
<color>comment</color> <color>comment</color>
<start>/\*</start> <regex>
<end>\*/</end> <start>/\*</start>
<stop>\*/</stop>
</regex>
</rule> </rule>
<rule name="my if 0"> <rule name="my if 0">
<color>preprocesseur</color> <color>preprocesseur</color>
<start>#[ \t]*if 0</start> <regex>
<end>#endif|#else</end> <start>#[ \t]*if 0</start>
<EscapeChar>\</EscapeChar> <stop>#(endif|else)</stop>
</regex>
</rule> </rule>
<rule name="my preprocesseur"> <rule name="my preprocesseur">
<color>preprocesseur</color> <color>preprocesseur</color>
<start>#</start> <regex>#(.|\\[\\\n])*$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="my comment doxygen"> <rule name="my comment doxygen">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<start>//!</start> <regex>//!(.|\\[\\\n])*$</regex>
<end>\n</end>
</rule> </rule>
<rule name="my todo comment"> <rule name="my todo comment">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<start>//[ \t]*TODO[ \t]*:</start> <regex>//[ \t]*TODO[ \t]*:(.|\\[\\\n])*$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="my comment"> <rule name="my comment">
<color>comment</color> <color>comment</color>
<start>//</start> <regex>//(.|\\[\\\n])*$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof\@</start> <regex>\b(return|goto|if|else|case|default|switch|break|continue|while|do|for|sizeof)\b</regex>
</rule> </rule>
<rule name="my type"> <rule name="my type">
<color>type</color> <color>type</color>
<start>\@void|bool|float|int|(vec|mat|ivect|bvect)[2-4]\@</start> <regex>\b(void|bool|float|int|(vec|mat|ivec|bvec)[2-4])\b</regex>
</rule> </rule>
<rule name="my storage keyword"> <rule name="my storage keyword">
<color>storageKeyword</color> <color>storageKeyword</color>
<start>\@varying|uniform|attribute|precision|mediump\@</start> <regex>\b(varying|uniform|attribute|precision|mediump)\b</regex>
</rule> </rule>
<rule name="numeric constant"> <rule name="numeric constant">
<color>number</color> <color>number</color>
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start> <regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule> </rule>
<rule name="my boolean"> <rule name="my boolean">
<color>boolean</color> <color>boolean</color>
<start>\@true|false\@</start> <regex>\b(true|false)\b</regex>
</rule> </rule>
<rule name="BIG LETTER"> <rule name="BIG LETTER">
<color>macro</color> <color>macro</color>
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start> <regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule> </rule>
<rule name="Function name"> <rule name="Function name">
<color>functionName</color> <color>functionName</color>
<start>\@(\w|_)+[ \t]*\(</start> <regex>\b(\w|_)+[ \t]*\(</regex>
</rule> </rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<start>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}|</start> <regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule> </rule>
</pass2> </pass2>
</EdnLang> </EdnLang>

View File

@@ -1,46 +1,40 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Kernel conf file"> <EdnLang version="0.1" lang="Kernel conf file">
<ext>*.in</ext> <ext>.*\.in</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="my preprocesseur"> <rule name="my preprocesseur">
<color>preprocesseur</color> <color>preprocesseur</color>
<start>#</start> <regex>#(.|\\[\\\n])*?$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>"</start> <regex>&quot;(.|\\[\\&quot;])*?$</regex>
<end>"</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="simpleQuteText"> <rule name="simpleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>'</start> <regex>&apos;(.|\\[\\&apos;])*?$</regex>
<end>'</end>
<!--<EscapeChar>\</EscapeChar>-->
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>\@menu|endmenu|comment|if|endif|help|default|choice|endchoice|prompt|depends on|config\@</start> <regex>\b(menu|endmenu|comment|if|endif|help|default|choice|endchoice|prompt|depends on|config)\b</regex>
</rule> </rule>
<rule name="my type"> <rule name="my type">
<color>type</color> <color>type</color>
<start>\@int|hex|bool|string\@</start> <regex>\b(int|hex|bool|string)\b</regex>
</rule> </rule>
<rule name="numeric constant"> <rule name="numeric constant">
<color>number</color> <color>number</color>
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start> <regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule> </rule>
<rule name="BIG LETTER"> <rule name="BIG LETTER">
<color>macro</color> <color>macro</color>
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start> <regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule> </rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<start>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}|</start> <regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule> </rule>
</pass2> </pass2>
</EdnLang> </EdnLang>

View File

@@ -1,87 +1,116 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Java"> <EdnLang version="0.1" lang="Java">
<ext>*.java</ext> <ext>.*\.(java|JAVA)</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="my comment multiline doxygen"> <rule name="doxygen multiline">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<start>/\*\*</start> <regex>
<end>\*/</end> <start>/\*(\*|!)</start>
<stop>\*/</stop>
</regex>
<sub>doxyparse</sub>
</rule> </rule>
<rule name="my comment multiline"> <rule name="comment multiline">
<color>comment</color> <color>comment</color>
<start>/\*</start> <regex>
<end>\*/</end> <start>/\*</start>
<stop>\*/</stop>
</regex>
<sub>TODO</sub>
</rule> </rule>
<rule name="my comment doxygen"> <rule name="comment multiline ERROR">
<color>commentDoxygen</color>
<start>//!</start>
<end>\n</end>
</rule>
<rule name="my todo comment">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<start>//[ \t]*TODO[ \t]*:</start> <regex>
<end>\n</end> <start>/\*(\*|!)</start>
<EscapeChar>\</EscapeChar> </regex>
</rule> </rule>
<rule name="my comment"> <rule name="inline doxygen">
<color>commentDoxygen</color>
<regex>//!.*$</regex>
<sub>doxyparse</sub>
</rule>
<rule name="inline comment">
<color>comment</color> <color>comment</color>
<start>//</start> <regex>//.*$</regex>
<end>\n</end> <sub>TODO</sub>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="double quote text">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>"</start> <regex>(U|u|u8)?&quot;(.|\\[\\&quot;])*?&quot;</regex> <!-- " -->
<end>"</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="simpleQuteText"> <rule name="simple quote text">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>'</start> <regex>&apos;\\?.&apos;</regex>
<end>'</end>
<!--<EscapeChar>\</EscapeChar>-->
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>\@return|goto|if|else|case|default|switch|break|continue|while|do|for\@</start> <regex>\b(return|goto|if|else|case|default|switch|break|continue|while|do|for)\b</regex>
</rule> </rule>
<rule name="my function keyword"> <rule name="my function keyword">
<color>systemFunction</color> <color>systemFunction</color>
<start>\@new|try|catch|print\@</start> <regex>\b(new|try|catch|print)\b</regex>
</rule> </rule>
<rule name="my type"> <rule name="my type">
<color>type</color> <color>type</color>
<start>\@boolean|byte|char|double|float|int|long|short|String|Object|Thread|void|enum\@</start> <regex>\b(boolean|byte|char|double|float|int|long|short|String|Object|Thread|void|enum)\b</regex>
</rule> </rule>
<rule name="my storage keyword"> <rule name="my storage keyword">
<color>storageKeyword</color> <color>storageKeyword</color>
<start>\@import|package|extends|Override|implements|const|class|abstract|private|public|protected|final|const|static|transiant|volatile|interface@</start> <regex>\b(import|package|extends|Override|implements|const|class|abstract|private|public|protected|final|const|static|transiant|volatile|interface)\b</regex>
</rule> </rule>
<rule name="my common Define"> <rule name="my common Define">
<color>commonDefine</color> <color>commonDefine</color>
<start>\@null\@</start> <regex>\bnull\b</regex>
</rule> </rule>
<rule name="numeric constant"> <rule name="numeric constant">
<color>number</color> <color>number</color>
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start> <regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule> </rule>
<rule name="my boolean"> <rule name="my boolean">
<color>boolean</color> <color>boolean</color>
<start>\@true|false\@</start> <regex>\b(true|false)\b</regex>
</rule> </rule>
<rule name="BIG LETTER"> <rule name="BIG LETTER">
<color>macro</color> <color>macro</color>
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start> <regex>\b[A-Z_][A-Z_0-9]{3,500}\b</regex>
</rule>
<rule name="java member">
<color>memberClass</color>
<regex>\bm_\w+\b</regex>
</rule>
<rule name="function input">
<color>inputFunction</color>
<regex>\b_\w+\b</regex>
</rule> </rule>
<rule name="Function name"> <rule name="Function name">
<color>functionName</color> <color>functionName</color>
<start>\@(\w|_)+[ \t]*\(</start> <regex>\b((\w|_)+[ \t]*\()</regex>
</rule> </rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<start>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}|</start> <regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule> </rule>
</pass2> </pass2>
<pass name="doxyparse">
<rule name="key">
<color>doxygen-key</color>
<regex>(@|\\)[\t ]*\w+</regex>
</rule>
<rule name="in-out">
<color>doxygen-in-out</color>
<regex>\[(in|in,out|out)\]</regex>
</rule>
<rule name="function input">
<color>inputFunction</color>
<regex>\b_\w+\b</regex>
</rule>
</pass>
<pass name="TODO">
<rule name="function input">
<color>SYNTAX_ERROR</color>
<regex>TODO[ \t]*:.*</regex>
</rule>
</pass>
</EdnLang> </EdnLang>

View File

@@ -1,34 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Json"> <EdnLang version="0.1" lang="Json">
<ext>*.json</ext> <ext>.*\.(json|JSON)</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>"</start> <regex>&quot;(.|\\[\\&quot;])*?&quot;</regex>
<end>"</end> </rule>
<EscapeChar>\</EscapeChar> <rule name="my comment">
<color>comment</color>
<regex>#.*</regex>
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>\{|\}|\[|\]</start> <regex>\{|\}|\[|\]</regex>
</rule> </rule>
<rule name="separator"> <rule name="separator">
<color>error</color> <color>error</color>
<start>:|,</start> <regex>:|,</regex>
</rule> </rule>
<rule name="names"> <rule name="names">
<color>functionName</color> <color>functionName</color>
<start>([a-zA-Z0-9]|-|_)*</start> <regex>([a-zA-Z0-9]|-|_)+</regex>
</rule> </rule>
<rule name="numeric constant"> <rule name="numeric constant">
<color>number</color> <color>number</color>
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start> <regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule> </rule>
<rule name="my boolean"> <rule name="my boolean">
<color>boolean</color> <color>boolean</color>
<start>\@true|false\@</start> <regex>\b(true|false)\b</regex>
</rule> </rule>
</pass2> </pass2>
</EdnLang> </EdnLang>

View File

@@ -1,60 +1,55 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Lua"> <EdnLang version="0.1" lang="Lua">
<ext>*.lua</ext> <ext>.*\.lua</ext>
<pass1> <pass1>
<rule name="Comment multiline"> <rule name="Comment multiline">
<color>comment</color> <color>comment</color>
<start>\-\-\[\[</start> <regex>
<end>\-\-\]\]</end> <start>\-\-\[\[</start>
<stop>\-\-\]\]</stop>
</regex>
</rule> </rule>
<rule name="my todo comment"> <rule name="my todo comment">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<start>\-\-[ \t]*TODO[ \t]*:</start> <regex>\-\-[ \t]*TODO[ \t]*:(.|\\[\\\n])*?$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="my comment"> <rule name="my comment">
<color>comment</color> <color>comment</color>
<start>\-\-</start> <regex>\-\-(.|\\[\\\n])*?$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>"</start> <regex>&quot;(.|\\[\\&quot;])*?&quot;</regex>
<end>"</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="simpleQuteText"> <rule name="simpleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>'</start> <regex>&apos;(.|\\[\\&apos;])*?&apos;</regex>
<end>'</end>
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>\@and|break|do|else|elseif|end|for|function|if|in|local|nil|not|or|repeat|return|then|until|while\@</start> <regex>\b(and|break|do|else|elseif|end|for|function|if|in|local|nil|not|or|repeat|return|then|until|while)\b</regex>
</rule> </rule>
<rule name="numeric constant"> <rule name="numeric constant">
<color>number</color> <color>number</color>
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start> <regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule> </rule>
<rule name="my boolean"> <rule name="my boolean">
<color>boolean</color> <color>boolean</color>
<start>\@true|false\@</start> <regex>\b(true|false)\b</regex>
</rule> </rule>
<rule name="BIG LETTER"> <rule name="BIG LETTER">
<color>macro</color> <color>macro</color>
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start> <regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule> </rule>
<rule name="Function name"> <rule name="Function name">
<color>functionName</color> <color>functionName</color>
<start>\@(\w|_)+[ \t]*\(</start> <regex>\b(\w|_)+[ \t]*\(</regex>
</rule> </rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<start>==|&lt;=|&gt;=|~=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}|</start> <regex>==|&lt;=|&gt;=|~=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule> </rule>
</pass2> </pass2>
</EdnLang> </EdnLang>

View File

@@ -1,43 +1,37 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Makefiles"> <EdnLang version="0.1" lang="Makefiles">
<ext>Makefile</ext> <ext>Makefile</ext>
<ext>*.mk</ext> <ext>.*\.(mk|global)</ext>
<ext>*.global</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="my preprocesseur"> <rule name="my preprocesseur">
<color>preprocesseur</color> <color>preprocesseur</color>
<start>#</start> <regex>#(.|\\[\\\n])*?$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>"</start> <regex>&quot;(.|\\[\\&quot;])*?&quot;</regex>
<end>"</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="simpleQuteText"> <rule name="simpleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>'</start> <regex>&apos;(.|\\[\\&apos;])*?&apos;</regex>
<end>'</end>
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="confition"> <rule name="confition">
<color>type</color> <color>type</color>
<start>\@if|ifeq|ifneq|else|endif|define|endef\@</start> <regex>\b(if|ifeq|ifneq|else|endif|define|endef)\b</regex>
</rule> </rule>
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>\$\([a-zA-Z_][a-zA-Z0-9_]*\)</start> <regex>\b\([a-zA-Z_][a-zA-Z0-9_]*\)</regex>
</rule> </rule>
<rule name="function call"> <rule name="function call">
<color>functionName</color> <color>functionName</color>
<start>\$\((call|info|error|warning|shell|patsubst|lastword|wildcard|addprefix|foreach|subst|word|eval)</start> <regex>\$\((call|info|error|warning|shell|patsubst|lastword|wildcard|addprefix|foreach|subst|word|eval)</regex>
</rule> </rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<start>:=|?=|!=|=</start> <regex>:=|\?=|!=|=</regex>
</rule> </rule>
</pass2> </pass2>
</EdnLang> </EdnLang>

View File

@@ -1,62 +1,52 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Matlab"> <EdnLang version="0.1" lang="Matlab">
<ext>*.m</ext> <ext>.*\.(m|M)</ext>
<ext>*.M</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="my comment doxygen"> <rule name="my comment doxygen">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<start>%%</start> <regex>%%(.|\\[\\\n])*?$</regex>
<end>\n</end>
</rule> </rule>
<rule name="my comment"> <rule name="my comment">
<color>comment</color> <color>comment</color>
<start>%</start> <regex>%(.|\\[\\\n])*?$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start> "</start> <regex> &quot;.*?($|&quot;)</regex>
<end>("|\n)</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="simpleQuteText"> <rule name="simpleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start> '</start> <regex> &apos;.*?($|&apos;)</regex>
<end>('|\n)</end>
<!--<EscapeChar>\</EscapeChar>-->
</rule> </rule>
<rule name="global inclusion"> <rule name="global inclusion">
<color>preprocesseur</color> <color>preprocesseur</color>
<start>global( |\t)+</start> <regex>global( |\t)+(.|\\[\\\n])*?$</regex>
<end>\n</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>\@return|goto|if|else|case|default|switch|break|continue|while|do|for|otherwise|end\@</start> <regex>\b(return|goto|if|else|case|default|switch|break|continue|while|do|for|otherwise|end)\b</regex>
</rule> </rule>
<rule name="my boolean"> <rule name="my boolean">
<color>boolean</color> <color>boolean</color>
<start>\@true|false\@</start> <regex>\b(true|false)\b</regex>
</rule> </rule>
<rule name="Function name"> <rule name="Function name">
<color>functionName</color> <color>functionName</color>
<start>\@(\w|_)+[ \t]*\(</start> <regex>\b(\w|_)+[ \t]*\(</regex>
</rule> </rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<start>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}|</start> <regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule> </rule>
<rule name="numeric constant"> <rule name="numeric constant">
<color>number</color> <color>number</color>
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start> <regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule> </rule>
<rule name="BIG LETTER"> <rule name="BIG LETTER">
<color>macro</color> <color>macro</color>
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start> <regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule> </rule>
</pass2> </pass2>
</EdnLang> </EdnLang>

View File

@@ -1,76 +1,120 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Php: pretty home page"> <EdnLang version="0.1" lang="PHP">
<ext>*.php</ext> <ext>.*\.(php(3|4|5|6|7|8)|PHP(3|4|5|6|7|8)|phtml|php|PHP)</ext>
<ext>*.php3</ext>
<ext>*.php4</ext>
<ext>*.phtml</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="my comment multiline"> <rule name="doxygen multiline">
<color>comment</color> <color>commentDoxygen</color>
<start>/\*</start> <regex>
<end>\*/</end> <start>/\*(\*|!)</start>
<stop>\*/</stop>
</regex>
<sub>doxyparse</sub>
</rule> </rule>
<rule name="my todo comment"> <rule name="comment multiline">
<color>comment</color>
<regex>
<start>/\*</start>
<stop>\*/</stop>
</regex>
<sub>TODO</sub>
</rule>
<rule name="comment multiline ERROR">
<color>SYNTAX_ERROR</color> <color>SYNTAX_ERROR</color>
<start>//[ \t]*TODO[ \t]*:</start> <regex>
<end>\n</end> <start>/\*(\*|!)</start>
<EscapeChar>\</EscapeChar> </regex>
</rule> </rule>
<rule name="my comment inline"> <rule name="inline doxygen">
<color>comment</color> <color>commentDoxygen</color>
<start>#</start> <regex>//!.*$</regex>
<end>\n</end> <sub>doxyparse</sub>
</rule> </rule>
<rule name="my comment"> <rule name="inline comment">
<color>comment</color> <color>comment</color>
<start>//</start> <regex>(//|#).*$</regex>
<end>\n</end> <sub>TODO</sub>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>"</start> <regex>&quot;(.|\\[\\&quot;])*?&quot;</regex>
<end>"</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="simpleQuteText"> <rule name="simpleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>'</start> <regex>&apos;(.|\\[\\&apos;])*?&apos;</regex>
<end>'</end>
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="start-stop-php">
<color>macro</color>
<regex>(&lt;\?\w+|\?&gt;)</regex>
</rule>
<rule name="my keyword">
<color>inputFunction</color>
<regex>\$_[a-zA-Z_][a-zA-Z0-9_]*\b</regex>
</rule>
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>[\$]+[a-zA-Z_][a-zA-Z0-9_]*</start> <regex>\$[a-zA-Z_][a-zA-Z0-9_]*\b</regex>
</rule> </rule>
<rule name="my type"> <rule name="my type">
<color>type</color> <color>type</color>
<start>\@array|bool|boolean|double|float|int|integer|numeric|object|resource|string|unset\@</start> <regex>\b(array|bool|boolean|double|float|int|integer|numeric|object|resource|string|unset)\b</regex>
</rule> </rule>
<rule name="my storage keyword"> <rule name="my storage keyword">
<color>storageKeyword</color> <color>storageKeyword</color>
<start>\@abstract|and|as|break|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|interface|isset|list|namespace|new|or|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor\@</start> <regex>\b(abstract|and|as|break|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|interface|isset|list|namespace|new|or|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor)\b</regex>
</rule> </rule>
<rule name="my common Define"> <rule name="my common Define">
<color>commonDefine</color> <color>commonDefine</color>
<start>\@doubleval|floatval|gettype|intval|print_r|serialize|settype|strval|unserialize|var_dump|var_export\@</start> <regex>\b(doubleval|floatval|gettype|intval|print_r|serialize|settype|strval|unserialize|var_dump|var_export)\b</regex>
</rule> </rule>
<rule name="numeric constant"> <rule name="numeric constant">
<color>number</color> <color>number</color>
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start> <regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule> </rule>
<rule name="my boolean"> <rule name="my boolean">
<color>boolean</color> <color>boolean</color>
<start>\@true|TRUE|false|FALSE\@</start> <regex>\b(TRUE|FALSE)\b</regex>
</rule>
<rule name="BIG LETTER">
<color>macro</color>
<regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule> </rule>
<rule name="Function name"> <rule name="Function name">
<color>functionName</color> <color>functionName</color>
<start>\@(\w|_)+[ \t]*\(</start> <regex>\b\w+[ \t]*\(</regex>
</rule> </rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<start>==|&lt;=|&gt;=|!=|&lt;|&gt;|&amp;&amp;|\{|\}|</start> <regex>==|&lt;=|&gt;=|!=|&lt;|&gt;|&amp;&amp;|\{|\}</regex>
</rule>
<rule name="simpleQuteTextError">
<color>SYNTAX_ERROR</color>
<regex>&apos;|&quot;</regex>
</rule> </rule>
</pass2> </pass2>
<pass name="doxyparse">
<rule name="knownkey">
<color>doxygen-key-known</color>
<regex>(@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
</rule>
<rule name="key">
<color>doxygen-key</color>
<regex>(@|\\)[\t ]*\w+</regex>
</rule>
<rule name="in-out">
<color>doxygen-in-out</color>
<regex>\[(in|in,out|out)\]</regex>
</rule>
<rule name="function input">
<color>inputFunction</color>
<regex>\b_\w+\b</regex>
</rule>
</pass>
<pass name="TODO">
<rule name="function input">
<color>SYNTAX_ERROR</color>
<regex>TODO[ \t]*:.*</regex>
</rule>
</pass>
</EdnLang> </EdnLang>

View File

@@ -1,77 +1,154 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.1" lang="Python"> <EdnLang version="0.1" lang="Python">
<ext>*.py</ext> <ext>.*\.(py|PY)</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="my comment multiline"> <rule name="my comment multiline">
<color>comment</color> <color>comment</color>
<start>"""</start> <regex>
<end>"""</end> <start>&quot;&quot;&quot;</start>
<stop>&quot;&quot;&quot;</stop>
</regex>
</rule>
<rule name="my comment multiline">
<color>comment</color>
<regex>
<start>'''</start>
<stop>'''</stop>
</regex>
</rule>
<rule name="comment multiline Error">
<color>SYNTAX_ERROR</color>
<regex>
<start>(&quot;&quot;&quot;|''')</start>
</regex>
</rule> </rule>
<rule name="my comment doxygen"> <rule name="my comment doxygen">
<color>commentDoxygen</color> <color>commentDoxygen</color>
<start>##</start> <regex>##.*</regex>
<end>\n</end> <sub>doxyparse</sub>
</rule> </rule>
<rule name="my comment"> <rule name="my comment">
<color>comment</color> <color>comment</color>
<start>#</start> <regex>#.*</regex>
<end>\n</end> <sub>TODO</sub>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="doubleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>"</start> <regex>&quot;(.|\\[\\&quot;])*?&quot;</regex>
<end>"</end>
<EscapeChar>\</EscapeChar>
</rule> </rule>
<rule name="simpleQuteText"> <rule name="simpleQuteText">
<color>doubleQuoteText</color> <color>doubleQuoteText</color>
<start>'</start> <regex>&apos;((\\[\\&apos;])|.)*?&apos;</regex>
<end>'</end> </rule>
<rule name="internalParameter">
<color>normal</color>
<regex>self\.\w*</regex>
<sub>parameter_internal</sub>
</rule>
<rule name="Function name private">
<color>functionNamePrivate</color>
<regex>\b_(\w|_)+[ \t]*\(</regex>
<sub>checkCamelCaseError</sub>
</rule>
<rule name="Function name">
<color>functionName</color>
<regex>\b(\w|_)+[ \t]*\(</regex>
<sub>checkCamelCaseError</sub>
</rule>
<rule name="function input">
<color>inputFunction</color>
<regex>\b_(\w|_)+\b</regex>
<sub>checkCamelCaseError</sub>
</rule> </rule>
</pass1> </pass1>
<pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear --> <pass2> <!-- Parse on display data ==> nor regenerate every display but every time modification apear -->
<rule name="my keyword"> <rule name="my keyword">
<color>keyword</color> <color>keyword</color>
<start>\@if|else|elif|break|pass|continue|while|do|for|in|return\@</start> <regex>\b(if|else|elif|break|pass|continue|while|do|for|in|return)\b</regex>
</rule> </rule>
<rule name="my function keyword"> <rule name="my function keyword">
<color>systemFunction</color> <color>systemFunction</color>
<start>\@print|len|range|del|__init__|self|os\.|sys\.|path\.\@</start> <regex>\b(print|len|range|del|__init__|self|os\.|sys\.|path\.)\b</regex>
</rule> </rule>
<rule name="my type"> <rule name="my type">
<color>type</color> <color>type</color>
<start>\@bool|BOOL|char|double|float\@</start> <regex>\b(bool|BOOL|char|double|float)\b</regex>
</rule> </rule>
<rule name="my storage keyword"> <rule name="my storage keyword">
<color>storageKeyword</color> <color>storageKeyword</color>
<start>\@def|class|import|from|as|try|except\@</start> <regex>\b(def|class|import|from|as|try|except)\b</regex>
</rule> </rule>
<rule name="numeric constant"> <rule name="numeric constant">
<color>number</color> <color>number</color>
<start>\@((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?\@</start> <regex>\b(((0(x|X)[0-9a-fA-F]*)|(\d+\.?\d*|\.\d+)((e|E)(\+|\-)?\d+)?)(L|l|UL|ul|u|U|F|f)?)\b</regex>
</rule> </rule>
<rule name="my boolean"> <rule name="my boolean">
<color>boolean</color> <color>boolean</color>
<start>\@True|False\@</start> <regex>\b(True|False)\b</regex>
</rule> </rule>
<rule name="BIG LETTER"> <rule name="BIG LETTER">
<color>macro</color> <color>macro</color>
<start>\@[A-Z_][A-Z_0-9]{3,500}\@</start> <regex>\b([A-Z_][A-Z_0-9]{3,500})\b</regex>
</rule>
<rule name="Function name">
<color>functionName</color>
<start>\@(\w|_)+[ \t]*\(</start>
</rule> </rule>
<rule name="condition"> <rule name="condition">
<color>boolean</color> <color>boolean</color>
<start>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}|</start> <regex>==|&lt;=|&gt;=|!=|&lt;{1,2}|&gt;{1,2}|&amp;&amp;|\{|\}</regex>
</rule> </rule>
<!-- With all elementes : --> <rule name="simpleQuteTextError">
<rule name="BIG LETTER"> <color>SYNTAX_ERROR</color>
<color>macro</color> <regex>&apos;|&quot;</regex>
<start>([A-Z]|_){4,500}</start>
<elemSubColor id="1">doxElem</elemSubColor>
</rule> </rule>
</pass2> </pass2>
<pass name="doxyparse">
<rule name="knownkey">
<color>doxygen-key-known</color>
<regex>(@|\\)[\t ]*(addindex|addtogroup|anchor|arg|attention|author|authors|a|brief|bug|b|callgraph|category|cite|class|code|cond|copybrief|copydetails|copydoc|copyright|date|def|defgroup|deprecated|details|diafile|dir|docbookonly|dontinclude|dot|dotfile|else|elseif|em|endcode|endcond|enddocbookonly|enddot|endhtmlonly|endif|endinternal|endlatexonly|endlink|endmanonly|endmsc|endparblock|endrtfonly|endsecreflist|endverbatim|enduml|endxmlonly|enum|example|exception|extends|e|file|fn|headerfile|hidecallergraph|hidecallgraph|hideinitializer|htmlinclude|htmlonly|idlexcept|ifnot|if|image|implements|includelineno|include|ingroup|internal|invariant|interface|latexinclude|latexonly|line|link|license|li|mainpage|manonly|memberof|msc|mscfile|name|namespace|nosubgrouping|note|n|overload|package|page|paragraph|param|parblock|par|post|pre|private|privatesection|property|protected|protectedsection|protocol|public|publicsection|pure|p|refitem|ref|related|relates|relatedalso|relatesalso|remark|remarks|result|return|returns|retval|rtfonly|sa|secreflist|section|see|short|showinitializer|since|skip|skipline|snippet|startuml|struct|subpage|subsection|subsubsection|tableofcontents|test|throw|throws|todo|tparam|typedef|union|until|var|verbatim|verbinclude|version|vhdlflow|warning|weakgroup|xmlonly|xrefitem)</regex>
</rule>
<rule name="key">
<color>doxygen-key</color>
<regex>(@|\\)[\t ]*\w+</regex>
</rule>
<rule name="in-out">
<color>doxygen-in-out</color>
<regex>\[(in|in,out|out)\]</regex>
</rule>
<rule name="function input">
<color>inputFunction</color>
<regex>\b_\w+\b</regex>
</rule>
</pass>
<pass name="TODO">
<rule name="function input">
<color>SYNTAX_ERROR</color>
<regex>TODO[ \t]*:.*</regex>
</rule>
</pass>
<pass name="parameter_internal">
<rule name="self">
<color>systemFunction</color>
<regex>self</regex>
</rule>
<rule name="function input">
<color>memberClassPrivate</color>
<regex>_[a-z0-9_]+</regex>
</rule>
<rule name="function input">
<color>memberClass</color>
<regex>[a-z0-9_]+</regex>
</rule>
<rule name="function input">
<color>SYNTAX_ERROR</color>
<regex>_\w+</regex>
</rule>
<rule name="function input">
<color>SYNTAX_ERROR</color>
<regex>\w+</regex>
</rule>
</pass>
<pass name="checkCamelCaseError">
<rule name="Function name ERROR (camel case ...)">
<color>SYNTAX_ERROR</color>
<regex>[A-Z]</regex>
</rule>
</pass>
</EdnLang> </EdnLang>

View File

@@ -1,35 +1,80 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<EdnLang version="0.2" lang="XML"> <EdnLang version="0.2" lang="XML">
<ext>*.xml</ext> <ext>.*\.(xml|XML|svg|SVG|html|HTML|htm|HTM|tpl|TPL)</ext>
<ext>*.svg</ext>
<pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification --> <pass1><!-- multiline section & parse all file (now) and when modification retrive previous modification -->
<rule name="Comment"> <rule name="Comment">
<color>comment</color> <color>comment</color>
<start>&lt;!\-\-</start> <regex>
<end>\-\-&gt;</end> <start>&lt;!\-\-</start>
<stop>\-\-&gt;</stop>
</regex>
</rule> </rule>
<rule name="doubleQuteText"> <rule name="CDATA">
<color>doubleQuoteText</color> <color>macro</color>
<start>"</start> <regex>
<end>"</end> <start>&lt;!\[CDATA\[</start>
<EscapeChar>\</EscapeChar> <stop>\]\]&gt;</stop>
</regex>
</rule> </rule>
<rule name="simpleQuteText"> <rule name="stop balise">
<color>doubleQuoteText</color> <color>functionName</color>
<start>\@'</start> <regex>&lt;/[ \t]*\w+?[ \t]*&gt;</regex>
<end>('|\n)</end> </rule>
<!--<EscapeChar>\</EscapeChar>--> <rule name="stop balise">
<color>SYNTAX_ERROR</color>
<regex>
<start>&lt;/</start>
<stop>&gt;</stop>
</regex>
</rule>
<rule name="start balise">
<color>normal</color>
<regex>
<start>&lt;</start>
<stop>&gt;</stop>
</regex>
<sub>parseInsideBalise</sub>
</rule> </rule>
</pass1> </pass1>
<pass2> <pass2>
<rule name="special Balise"> <rule name="start balise">
<color>error</color> <color>commonDefine</color>
<start>&lt;\?\w*|\?&gt;</start> <regex>&amp;(gt|lt|amp|apos|quot);</regex>
</rule> </rule>
<rule name="normale Balise"> <rule name="start balise">
<color>functionName</color> <color>error</color>
<start>&lt;/[0-9a-zA-Z_]+|&lt;[0-9a-zA-Z_]+|/&gt;|&gt;</start> <regex>&gt;|&lt;|&amp;|&apos;|&quot;</regex>
</rule> </rule>
</pass2> </pass2>
<pass name="parseInsideBalise">
<rule name="special Balise">
<color>error</color>
<regex>&lt;\?\w*|\?&gt;</regex>
</rule>
<rule name="open balise">
<color>functionName</color>
<regex>&lt;[ \t]*[0-9a-zA-Z_]+</regex>
</rule>
<rule name="close balise">
<color>functionName</color>
<regex>/?&gt;</regex>
</rule>
<rule name="doubleQuteText">
<color>doubleQuoteText</color>
<regex>&quot;(.|\r|\n|\\\\|\\&quot;)*?&quot;</regex>
</rule>
<rule name="simpleQuteText">
<color>doubleQuoteText</color>
<regex>\b&apos;(.|\r|\n)*?(&apos;|\n)</regex>
</rule>
<rule name="condition">
<color>boolean</color>
<regex>=</regex>
</rule>
<rule name="condition">
<color>keyword</color>
<regex>\w+</regex>
</rule>
</pass>
</EdnLang> </EdnLang>

View File

@@ -14,6 +14,7 @@
{ name:"storageKeyword", foreground:"#5c8fed"}, { name:"storageKeyword", foreground:"#5c8fed"},
{ name:"inputFunction", foreground:"#B80000", bold:true, italic:true}, { name:"inputFunction", foreground:"#B80000", bold:true, italic:true},
{ name:"memberClass", foreground:"#7c5406", bold:true}, { name:"memberClass", foreground:"#7c5406", bold:true},
{ name:"memberClassPrivate", foreground:"#7c2400", bold:true},
{ name:"number", foreground:"#00ff00"}, { name:"number", foreground:"#00ff00"},
{ name:"systemFunction", foreground:"#ffff00"}, { name:"systemFunction", foreground:"#ffff00"},
{ name:"commonDefine", foreground:"#56bf10"}, { name:"commonDefine", foreground:"#56bf10"},
@@ -25,7 +26,12 @@
{ name:"macro", foreground:"#6c09c8", bold:true}, { name:"macro", foreground:"#6c09c8", bold:true},
{ name:"SYNTAX_ERROR", foreground:"#000000", background:"#FF0000", bold:true}, { name:"SYNTAX_ERROR", foreground:"#000000", background:"#FF0000", bold:true},
{ name:"functionName", foreground:"#24d1e0", bold:true}, { name:"functionName", foreground:"#24d1e0", bold:true},
{ name:"functionNamePrivate", foreground:"#24d190", bold:true},
{ name:"TestResultOK", foreground:"#000000", background:"#00FF00", bold:true}, { name:"TestResultOK", foreground:"#000000", background:"#00FF00", bold:true},
{ name:"TestResultERROR", FG:"#000000", background:"#FF0000", bold:true} { name:"TestResultERROR", FG:"#000000", background:"#FF0000", bold:true}
{ name:"doxygen-key-known", foreground:"#Fc4700", bold:true, italic:false},
{ name:"doxygen-key", foreground:"#dc3700", bold:true, italic:false},
{ name:"doxygen-in-out", foreground:"#dc7000", bold:true, italic:false},
] ]
} }

View File

@@ -9,8 +9,10 @@
{ name:"SelectedText", foreground:"#292929", background:"#009ce7"}, { name:"SelectedText", foreground:"#292929", background:"#009ce7"},
{ name:"error", foreground:"#FF0000"}, { name:"error", foreground:"#FF0000"},
{ name:"doubleQuoteText", foreground:"#008e00"}, { name:"doubleQuoteText", foreground:"#008e00"},
{ name:"type", foreground:"#376d0a", bold:true}, { name:"type", foreground:"#376d0a", bold:true},
{ name:"memberClass", foreground:"#7c5406", bold:true}, { name:"memberClass", foreground:"#7c5406", bold:true},
{ name:"memberClassPrivate", foreground:"#7c2400", bold:true},
{ name:"inputFunction", foreground:"#B80000", bold:true, italic:true}, { name:"inputFunction", foreground:"#B80000", bold:true, italic:true},
{ name:"storageKeyword", foreground:"#466cb4"}, { name:"storageKeyword", foreground:"#466cb4"},
{ name:"number", foreground:"#007b00"}, { name:"number", foreground:"#007b00"},
@@ -24,8 +26,13 @@
{ name:"macro", foreground:"#571793", bold:true}, { name:"macro", foreground:"#571793", bold:true},
{ name:"SYNTAX_ERROR", foreground:"#000000", background:"#c20000", bold:true}, { name:"SYNTAX_ERROR", foreground:"#000000", background:"#c20000", bold:true},
{ name:"functionName", foreground:"#09857e", bold:true}, { name:"functionName", foreground:"#09857e", bold:true},
{ name:"functionNamePrivate", foreground:"#09854e", bold:true},
{ name:"TestResultOK", foreground:"#000000", background:"#009c00", bold:true}, { name:"TestResultOK", foreground:"#000000", background:"#009c00", bold:true},
{ name:"TestResultERROR", foreground:"#000000", background:"#c20000", bold:true} { name:"TestResultERROR", foreground:"#000000", background:"#c20000", bold:true}
{ name:"doxygen-key-known", foreground:"#Fc4700", bold:true, italic:false},
{ name:"doxygen-key", foreground:"#dc3700", bold:true, italic:false},
{ name:"doxygen-in-out", foreground:"#dc7000", bold:true, italic:false},
] ]
} }

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000F202F32353735322C1C0C0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000162E3E4D5D6E7E82858785827B6A5A4A3B2B1000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000221405E7C8C9DADBCCCD2D5D7D5D2C9BAAA9A8978593A1B0000000000000000000000000000000000000000
000000000000000000000000000000000000082C4C698BA9C9DBEBFBFFFFFFFFFFFFFFFFFFF8E7D7C2A384654526000000000000000000000000000000000000
00000000000000000000000000000000001D4A7697B5D4F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDCEAE916E411500000000000000000000000000000000
0000000000000000000000000000000633608DB9DFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D9B084562A000000000000000000000000000000
00000000000000000000000000001B4974A2CFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C6996C3F1200000000000000000000000000
000000000000000000000000001D568BB8E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBAE824B12000000000000000000000000
0000000000000000000000001D568FC7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BC844B120000000000000000000000
00000000000000000000001D568FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5BC844B1200000000000000000000
000000000000000000001B568FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5BC844B0E000000000000000000
00000000000000000006498BC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5BC7D3B000000000000000000
0000000000000000003374B8FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDAB68260000000000000000
00000000000000001D60A2E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD795521000000000000000
00000000000000084A8DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC27F3C00000000000000
000000000000002C76B9FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEAD681E000000000000
000000000000024C97DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1873D000000000000
0000000000002169B5FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFA65C120000000000
000000000000408BD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC57B310000000000
0000000000165EA9F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE49C510700000000
00000000002E7DC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA6C1E00000000
00000000003E8CDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB7D2E00000000
00000000004D9DEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB8D3E00000000
000000000F5DADFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB9D4E00000000
00000000206EBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAD5D10000000
000000002F7ECDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD6E1F000000
000000003282D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC27222000000
000000003585D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC57525000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003584D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC47424000000
000000003282D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC27222000000
000000002C7BC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB96B1D000000
000000001C6ABAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8AA5A0C000000
000000000C5AAAF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE89A4B00000000
00000000004A9AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8893B00000000
00000000003B89D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8792B00000000
00000000002B78C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB4681B00000000
00000000001059A3EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE964A0100000000
0000000000003984CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF742B0000000000
0000000000001B65AEF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAA1560C0000000000
000000000000004591D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA8037000000000000
00000000000000266EB1F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6A36117000000000000
00000000000000004184C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB9763400000000000000
0000000000000000145699DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8C4A0700000000000000
0000000000000000002A6CAEF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4A15F1C0000000000000000
000000000000000000003F82BCF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B17432000000000000000000
00000000000000000000124B84BCF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B1783F05000000000000000000
0000000000000000000000124B84BCF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B1783F0700000000000000000000
000000000000000000000000124B84BCECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4B1783F070000000000000000000000
00000000000000000000000000124B7DABD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBCEA1743F07000000000000000000000000
00000000000000000000000000000E3B6895C2EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6B98C5F320500000000000000000000000000
0000000000000000000000000000000026527FADD1EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEACAA3764A1C000000000000000000000000000000
0000000000000000000000000000000000103C6887A6C5E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDEBFA18061340700000000000000000000000000000000
000000000000000000000000000000000000001E3D5C7C9CBACBDBEBFBFFFFFFFFFFFFFFF8E8D8C8B49674563717000000000000000000000000000000000000
0000000000000000000000000000000000000000001231516C7D8D9DADBDC2C5C7C4C2BAAA9A8979684A2B0C0000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000071E2E3E4E5D6E72757774726B5A4B3B2B1B0100000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000101F22252724221D0C000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000111E212425221E0E000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000F263D4E5F6E717475726E5A432B14000000000000000000000000001D4A4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B3600000000
00000000000000001A3E5B728A9DAEBEC1C4C5C2BEA79078603C0B000000000000000000000034839B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B5101000000
000000000000003A6185A8BFD7EBFCFFFFFFFFFFFFF4DDC5AC7B4B15000000000000000000003483D4EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBA15101000000
000000000000004E97CDF1FFFFFFFFFFFFFFFFFFFFFFFFFFEBBB864B090000000000000000003483D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A15101000000
000000000000002B72BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7BA78360000000000000000003483D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1A15101000000
00000000000000085099E0FFFFF2DECAC5C1C5DAF3FFFFFFFFFFE7A5590D00000000000000003483D4FAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFF1A15101000000
00000000000000002D74BCDDC0A6917D7571768DB1E5FFFFFFFFFFBE712600000000000000003483AAAAAAAAAAAAAAAAAAAAB8F8FFFFFFFFFFD08D4800000000
000000000000000009529996745A432F2521294174B5FFFFFFFFFFD78C3F0000000000000000265A5A5A5A5A5A5A5A5A5A65A9F3FFFFFFFFE9A5611E00000000
0000000000000000002E694C2A0F0000000000034E9AE4FFFFFFFFF0A0500000000000000000000A0A0A0A0A0A0A0A0A4E91D4FFFFFFFFFFBD79360000000000
00000000000000000000190400000000000000003B8BDBFFFFFFFFF4A45404000000000000000000000000000000003679BCFFFFFFFFFFD5924E0B0000000000
00000000000000000000000000000001060A0D0F3A8ADAFFFFFFFFF8A8571D3434343434343434343434341600001E61A5E8FFFFFFFFEDAB6623000000000000
000000000000000000000013283D4B51565A5D5F628ADAFFFFFFFFF8A857458484848484848484848484843C00074A8DD0FFFFFFFFFFC27E3C00000000000000
00000000000000000C354B5F758B9BA1A6AAADAFB2B7EEFFFFFFFFF8A8574797D4D4D4D4D4D4D4D4D4D48D3D003275B9FCFFFFFFFFD997521000000000000000
0000000000000024517B99AEC3D8EBF1F6FAFDFFFFFFFFFFFFFFFFF8A8574797E7FFFFFFFFFFFFFFFFDD8D3D1A5EA1E5FFFFFFFFF1AF6A280000000000000000
000000000000276294BFE6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A8574797E7FFFFFFFFFFFFFFFFDD8D3D468BCDFFFFFFFFFFC7833F000000000000000000
00000000001A5998D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A8574797D2D2D2D2D2D2D2D2D2D28D3D72B5F8FFFFFFFFDE9B5714000000000000000000
00000000003B86C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A85745828282828282828282828282599EE1FFFFFFFFF6B36F2D00000000000000000000
000000000D58A3EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A8571B32323232323232323232324386C9FFFFFFFFFFCB88440100000000000000000000
000000002874C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A85707000000000000000000002B6EB1F4FFFFFFFFE4A05C190000000000000000000000
000000003181D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A8570700000000000000000013559ADDFFFFFFFFFBB87431000000000000000000000000
000000003585D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A857070000000000000000003E82C5FFFFFFFFFFD08D4906000000000000000000000000
000000003685D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A857070000000000000000276AAEF1FFFFFFFFE8A5611D00000000000000000000000000
000000003282D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A8570700000000000000105296D9FFFFFFFFFFBC79363131313131313131312F04000000
000000002B78C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A85707000000000000003C7EC2FFFFFFFFFFE79781818181818181818181817427000000
000000001661AFFBFFFFFFFFFFFFFFFFFFFFFFFFFFDCDBFFFFFFFFF8A857070000000000001D66ABEDFFFFFFFFFFFFD7D1D1D1D1D1D1D1D1D1D1C77727000000
00000000004894DCFFFFFFFFFFFFFFFFFFFFFFFFDD9E9CE7FFFFFFF8A857070000000000002272C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
00000000002972B3F1FFFFFFFFFFFFFFFFFFFFE4A96C7FCAFFFFFFF8A857070000000000002272C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
0000000000044280B8EDFFFFFFFFFFFFFFFFDBA9723860ACF7FFFFF8A857070000000000002272C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
0000000000000F477BA6C8DFECEFEDE4D3BA976C38014591C7C7C7C7A857070000000000002272C2C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C47727000000
000000000000000B3C5D7B939C9F9D958670502800002870777777777755060000000000001F6974747474747474747474747474747474747474746D24000000
000000000000000000142E454C4F4D45382507000000002527272727271D00000000000000001F24242424242424242424242424242424242424242300000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000001B37393916000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000245A888986561D0000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000225C95CAD9C78D4C0200000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000205993CDFFFFF8A8570700000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000001D5791CBFFFFFFF6A9590900000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000001B558FC8FFFFFFFDC38645000827454E4F5044270A00000000000000000000000000
00000000000000000000000000000000000000000000000000000000001A538CC6FFFFFFFFC58C521731526F919E9FA090715433000000000000000000000000
0000000000000000000000000000000000000000000000000000000017508BC4FDFFFFFFC78E541B3B709EBBD9EEEFF0D9BDA0713D0700000000000000000000
000000000000000000000000000000000000000000000000000000154E88C2FBFFFFFFCA90561D3C75ACE1FFFFFFFFFFFFFFE1AE784009000000000000000000
0000000000000000000000000000000000000000000000000000124C86BFF9FFFFFFCC92581F3B75ADE6FFFFFFFFFFFFFFFFFFE9B179420A0000000000000000
00000000000000000000000000000000000000000000000000104A83BDF7FFFFFFCE945B213B74ACE6FFFFFFEED1D0CFEDFFFFFFEBB37B440C00000000000000
0000000000000000000000000000000000000000000000000E4881BBF5FFFFFFD0975E233973ABE5FFFFFFE3AE81807FADE0FFFFFFEDB57D460E000000000000
00000000000000000000000000000000000000000000000C467FB9F2FFFFFFD2995F253972ABE4FFFFFFE4AB723E303D6FA7DEFFFFFFEEB77F480C0000000000
0000000000000000000000000000000000000000000009437DB7F0FFFFFFD59B61283871AAE3FFFFFFE5AC733A010000366DA5DDFFFFFFF0B97C410000000000
00000000000000000000000000000000000000000007417AB4EEFFFFFFD79D632A3770A9E2FFFFFFE6AC743B0200000000346CA3DBFFFFFFEEB3682000000000
0000000000000000000000000000000000000000053F78B2ECFFFFFFD9A0662C366FA8E1FFFFFFE7AD753B03000000000000326AA1D9FFFFFFD28A3F00000000
00000000000000000000000000000000000000033C76B0E9FFFFFFDBA2682F356EA7E0FFFFFFE7AE763C0400000000000000003068A0DEFFFFF2A85D15000000
000000000000000000000000000000000000013B74ADE7FFFFFFDEA46A31346DA6DFFFFFFFE8AF763D0400070C0B0100000000002F6DB2FFFFFFC17121000000
0000000000000000000000000000000000003872ABE5FFFFFFE0A66C33336CA5DEFFFFFFE9B0773E050022515C5B4715000000000756A6F6FFFFC77727000000
0000000000000000000000000000000000366FA9E3FFFFFFE2A86F35326BA4DDFFFFFFEAB1783F0600275F92ACAB864C0B0000001D5DADFCFFFFC37323000000
00000000000000000000000000000000336DA7E1FFFFFFE5AB7137316AA3DCFFFFFFEBB279400700296098D0FCF6BC7A2900001B538DCCFFFFFCB3681C000000
000000000000000000000000000000316BA5DEFFFFFFE7AD74393069A2DBFFFFFFECB37A4108002B629AD2FFFFFFCA7A2A001B538CC4FEFFFFDE964A00000000
00000000000000000000000000002F69A2DCFFFFFFE9AF763C3068A1DAFFFFFFEDB47B4209002D649CD4FFFFFFFABC77271B548CC5FDFFFFFFC0752B00000000
000000000000000000000000002D66A0DAFFFFFFEBB1783E2F67A1D9FFFFFFEEB57C430A002F669ED6FFFFFFF8C0894C1C548DC5FDFFFFFFCC90530D00000000
0000000000000000000000002B649ED8FFFFFFEDB47A402E66A0D9FFFFFFEFB67D440B003168A0D8FFFFFFF5BE864F1C548DC5FEFFFFFFCC945B1F0000000000
000000000000000000000028629CD5FFFFFFEFB67C422D669FD8FFFFFFF0B77E450C00336AA2DAFFFFFFF4BC844D1D558DC6FEFFFFFFCC935B23000000000000
00000000000000000000266099D3FFFFFFF2B87E452C659ED7FFFFFFF1B87F460D00356CA4DCFFFFFFF1BA824B1D558EC6FEFFFFFFCC935B2200000000000000
000000000000000000215E97D1FFFFFFF4BA80472B649DD6FFFFFFF2B97F470E00376EA6DDFFFFFFEFB880491D568EC6FFFFFFFFCB935B220000000000000000
0000000000000000135593CFFFFFFFF6BC8349235F9CD5FFFFFFF2B980480F023970A8E0FFFFFFEEB67E471E568EC7FFFFFFFFCB925A22000000000000000000
00000000000000003E81C5FFFFFFF8BF854B125194D0FFFFFFF3BA81480F043B73AAE2FFFFFFEBB47C451E568FC7FFFFFFFFCB925A2100000000000000000000
000000000000002568ADF0FFFFFBC1874D14266FBAFFFFFFF4BB824910053D75ACE4FFFFFFEAB27A431E578FC7FFFFFFFFCA9259210000000000000000000000
000000000000014A94D7FFFFFFC98B5016004590D9FFFFF8BC834A11073F76AEE6FFFFFFE8B078411F578FC8FFFFFFFFCA915921000000000000000000000000
0000000000002169B4FDFFFFD896581A001562ADF7FFFFD1894B12094178B0E8FFFFFFE6AE763F1F5790C8FFFFFFFFC991592000000000000000000000000000
000000000000438CD4FFFFFFB76C2600001A6ABAFFFFFFB3681F0F437AB2E9FFFFFFE4AC753D1F5890C8FFFFFFFFC99158200000000000000000000000000000
0000000000115EACF5FFFFE0974D0400001B6BBBFFFFFFB262465480B4EBFFFFFFE2AA733B205890C9FFFFFFFFC9905820000000000000000000000000000000
00000000002673C1FFFFFFBF752D0000001464B3FCFFFFD3A095A4BFF0FFFFFFE0A87139205891C9FFFFFFFFC890581F00000000000000000000000000000000
00000000003C89D6FFFFE89F550C000000004994DCFFFFFFE8E4F2FFFFFFFFDEA66F37205991CAFFFFFFFFC890571F0000000000000000000000000000000000
00000000004C9CEBFFFFD6883800000000002971BCF7FFFFFFFFFFFFFFFFDAA46D35215991CAFFFFFFFFC88F571E000000000000000000000000000000000000
000000000555A5F4FFFFCA7B2C0000000000094C86BDEFFFFFFFFFFFEBCA9E6933215992CAFFFFFFFFC78F571E00000000000000000000000000000000000000
000000000B5BABFBFFFFC27222000000000000154C7EA4BCD5D5CFC2A281602C215A92CBFFFFFFFFC78F561E0000000000000000000000000000000000000000
000000001060B0FFFFFFBC6C1C000000000000000E3E586F89857F79593717225A92CBFFFFFFFFC78E561D000000000000000000000000000000000000000000
000000001565B5FFFFFFB867170000000000000000000C2439352F291000225B93CBFFFFFFFFC68E561D00000000000000000000000000000000000000000000
000000001B6BBBFFFFFFB2621200000000000000000000000000000000225B93CCFFFFFFFEC68E551D0000000000000000000000000000000000000000000000
000000002070C0FFFFFCAC5C0C000000000000000000000000000000235B93CCFFFFFFFEC68D551D000000000000000000000000000000000000000000000000
000000002575C5FFFFF7A757070000000000000000000000000000235C94CCFFFFFFFEC58D541C00000000000000000000000000000000000000000000000000
000000002B7BCBFFFFF2A2520200000000000000000000000000265C94CDFFFFFFFDC58D541C0000000000000000000000000000000000000000000000000000
000000003080D0FFFFEC9C4C00000000000000000000000013356498CDFFFFFFFDC58C541B000000000000000000000000000000000000000000000000000000
000000003685D6FFFFE7974700000000000000000000193A5B7DA2D5FFFFFFFDC48C531B00000000000000000000000000000000000000000000000000000000
000000003686D6FFFFE7974706090F161C23293039466182A7C6E7FFFFFFFDC48C531B0000000000000000000000000000000000000000000000000000000000
00000000327ECAFFFFF4B17356595F666C7379808996AACBEDFFFFFFFFF8C28C531B000000000000000000000000000000000000000000000000000000000000
000000001861AEF9FFFFE4B4A6A9AFB6BCC3C9D0D7E5F4FFFFFFFFFFE2B687511B00000000000000000000000000000000000000000000000000000000000000
00000000004793DEFFFFFFFDF6F9FFFFFFFFFFFFFFFFFFFFFFFFEECB9F7347160000000000000000000000000000000000000000000000000000000000000000
00000000002B6FABE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C7A7845C3004000000000000000000000000000000000000000000000000000000000000000000
0000000000003B77AAD3F2FFFFFFFFFFFFFAF3EDE7DCC9B39D7F5D3B190000000000000000000000000000000000000000000000000000000000000000000000
00000000000004396A8AA7C2C7C4BEB7B1AAA49D978D7C6550361400000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000213E5C7277746E67615A544D473D2F1903000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000122227241E17110A04000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000001A373737373737370E000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000003D8787878787877A2E000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000954A2D7D7D7D7D79447000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000206CB9FFFFFFFFF7AC5E130000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000003884D1FFFFFFFFFFC4772B0000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000004509DE9FFFFFFFFFFDC90440000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000001B66B4FFFFFFFFFFFFF4A85B1000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000337FCCFFFFEBD5F6FFFFC1742800000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000004B99E4FFFFC385D2FFFFD98D4000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000001662AFFBFFFBAD6FBDFFFFF1A5590D000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000002D7BC7FFFFE5995AA8F4FFFFBD7025000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000004693DEFFFFD0824593DFFFFFD68A3D000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000115DABF6FFFFBA6C2F7DCAFFFFEEA255090000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000002975C2FFFFF2A5571A66B4FFFFFFBB6D220000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000418EDAFFFFDD90420552A0ECFFFFD3873A000000000000000000000000000000000000000B181B1E1F1C190A0000000000000000
00000000000000000000000C58A5F1FFFFC77A2D003C8AD7FFFFEBA0520600000000000000000000000000000820374858686B6E6F6C6957432D140000000000
0000000000000000000000236FBDFFFFFFB26417002774C1FFFFFFB76A1F0000000000000000000000001337546B8397A8B8BBBEBFBCB9A5907B59340B000000
00000000000000000000003B89D5FFFFE99D4F0200125EACF9FFFFD083370000000000000000000000335B7FA2B9D1E5F6FFFFFFFFFFFFF2DDC7A17A48130000
000000000000000000000753A0ECFFFFD4873A0000004997E4FFFFE89D5003000000000000000000004D97C6EAFFFFFFFFFFFFFFFFFFFFFFFFFFE7B9854A0800
000000000000000000001F6AB7FFFFFFBE71240000003481CEFFFFFFB4681C000000000000000000002B72BBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5B9783500
000000000000000000003682CFFFFFF6AA5B0F0000001E6BB9FFFFFFCD803500000000000000000000085199E0FFFFF8E4D0CBC7CBDEF8FFFFFFFFFFE6A45A10
000000000000000000024E9CE7FFFFE19446000000000955A4F0FFFFE59A4D00000000000000000000002D74BCE3C7AD97837B777B92B4E7FFFFFFFFFFC2772C
0000000000000000001A65B2FFFFFFCB7F310000000000418EDBFFFFFEB16419000000000000000000000952999B7B6049352B272E4578B6FFFFFFFFFFDE8F40
000000000000000000317ECBFFFFFFB6681C00000000002B78C5FFFFFFCA7D3100000000000000000000002E6C5330150000000000054D99E2FFFFFFFFEB9C4C
0000000000000000004996E2FFFFEEA1530600000000001662B0FDFFFFE2974A0000000000000000000000001C0A00000000000000003989D9FFFFFFFFF8A858
00000000000000001460ADFAFFFFD88C3E373737373737374D9CE8FFFFFAAE601600000000000000000000000000000000000004070A3788D8FFFFFFFFFAAA5A
00000000000000002C78C5FFFFFFCB8A87878787878787878791DBFFFFFFC77A2D0000000000000000000000000D2237454B5054575A5C88D8FFFFFFFFFBAB5B
00000000000000004491DDFFFFFFF7D8D7D7D7D7D7D7D7D7D7DBFFFFFFFFDF9245000000000000000000062F455A6F84959BA0A4A7AAACB1E9FFFFFFFFFBAB5B
00000000000000105BA8F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A95B0F000000000000001E4A7493A8BCD2E5EBF0F4F7FAFCFFFFFFFFFFFFFBAB5B
000000000000002773C0FFFFFFE5C7C7C7C7C7C7C7C7C7C7C7C7C8F1FFFFFFBF7226000000000000225C8EB8DFF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B
000000000000003F8CD8FFFFFFC277777777777777777777777785D1FFFFFFD68A3D0000000000145392CCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B
0000000000000A56A4EFFFFFF6AB5D27272727272727272727276CB9FFFFFFEEA15306000000003881C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B
000000000000226EBBFFFFFFDF9346000000000000000000000954A2EEFFFFFFB76A1E0000000E58A2EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B
0000000000003A87D3FFFFFFC77B2D00000000000000000000003D8AD6FFFFFFCF82350000001F6DBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B
000000000005529FEAFFFFFBAF621600000000000000000000002571BEFFFFFFE59A4C0000002D7DCBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B
00000000001D69B6FFFFFFE3984B0000000000000000000000000D5AA6F3FFFFFDB0621600003483D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B
00000000003481CEFFFFFFCC7F3400000000000000000000000000438FDBFFFFFFC77A2D00003383D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B
00000000014C9AE5FFFFFFB4661B000000000000000000000000002A76C3FFFFFFDF924500002F7FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B
000000001863B1FDFFFFE89C4F0300000000000000000000000000125EACF7FFFFF5A95B0F002A77C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B
000000002F7CC9FFFFFFD183370000000000000000000000000000004794DFFFFFFFBF7226001460AEFBFFFFFFFFFFFFFFFFFFFFFFFFFFE5E0FFFFFFFFFBAB5B
000000004795E0FFFFFFB86B200000000000000000000000000000002F7BC8FFFFFFD68A3D00004894DCFFFFFFFFFFFFFFFFFFFFFFFFE2A39EE6FFFFFFFBAB5B
000000135FACF8FFFFEDA153070000000000000000000000000000001662B0FCFFFFEEA15306002971B5F2FFFFFFFFFFFFFFFFFFFFE9AF727EC9FFFFFFFBAB5B
0000002A76C3FFFFFFD5893C00000000000000000000000000000000004C99E4FFFFFFB76A1E00064482BBF0FFFFFFFFFFFFFFFFE1AF783E5FADF7FFFFFBAB5B
000000428FDBFFFFFFBD702400000000000000000000000000000000003380CDFFFFFFCF82350000114A7EABCBE3F1F5F3EADAC09C733E074590CDCDCDCDAB5B
00000E5AA7F3FFFFF2A6590C00000000000000000000000000000000001C68B5FFFFFFE59A4C0000000E40618098A1A5A39B8C78552E020027707D7D7D7D7D59
00002571BEC7C7C7C78E4100000000000000000000000000000000000004509DC7C7C7C7B062160000000018334A5155534B3E2B0E000000002A2D2D2D2D2D22
000033757777777777742900000000000000000000000000000000000000387777777777776E2400000000000000010503000000000000000000000000000000
0000082727272727272703000000000000000000000000000000000000000E272727272727240000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000F202F32353735322C1C0C0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000162E3E4D5D6E7E82858785827B6A5A4A3B2B1000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000221405E7C8C9DADBCCCD2D5D7D5D2C9BAAA9A8978593A1B0000000000000000000000000000000000000000
000000000000000000000000000000000000082C4C698BA9C9DBEBFBFFFFFFFFFFFFFFFFFFF8E7D7C2A384654526000000000000000000000000000000000000
00000000000000000000000000000000001D4A7697B5D4F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDCEAE916E411400000000000000000000000000000000
0000000000000000000000000000000633608DB9DFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D9B184562A000000000000000000000000000000
00000000000000000000000000001B4974A2CFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C6996C3F1200000000000000000000000000
000000000000000000000000001D568BB8E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBAE824B12000000000000000000000000
0000000000000000000000001D568FC7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BC844B120000000000000000000000
00000000000000000000001D568FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFBFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5BC844B1200000000000000000000
000000000000000000001B568FC7FFFFFFFFFFFFFFFFFFFFFFFFF6E1D1C1B2ADABAEB4C4D4E4FCFFFFFFFFFFFFFFFFFFFFFFF5BC844B0E000000000000000000
00000000000000000006498BC7FFFFFFFFFFFFFFFFFFFFFFEBCBAD938272625D5B5E65758696B3D2F1FFFFFFFFFFFFFFFFFFFFF5BC7D3B000000000000000000
0000000000000000003374B8FAFFFFFFFFFFFFFFFFFFF1C5A18261443424140D0B0E172737496889A7CDFAFFFFFFFFFFFFFFFFFFECAB68260000000000000000
00000000000000001D60A2E5FFFFFFFFFFFFFFFFFFDBAE8257381900000000000000000000001F3E5E8BB8E5FFFFFFFFFFFFFFFFFFD795521000000000000000
00000000000000084A8DCFFFFFFFFFFFFFFFFFFFCB996C3F130000000000000000000000000000001B4974A2D7FFFFFFFFFFFFFFFFFFC27F3C00000000000000
000000000000002C76B9FCFFFFFFFFFFFFFFFFCB935A2A0000000000000000000000000000000000000633659ED7FFFFFFFFFFFFFFFFEEAD681E000000000000
000000000000024C97DFFFFFFFFFFFFFFFFFCB935A220000000D11080000000000000000000D110A0000002D659ED7FFFFFFFFFFFFFFFFD1873D000000000000
0000000000002169B5FEFFFFFFFFFFFFFFDC995A220000002B5B61511E0000000000000029596152210000002D65A7E9FFFFFFFFFFFFFFEFA65C120000000000
000000000000408BD4FFFFFFFFFFFFFFF1AE6C2A0000002C659DB18F571E00000000002A629AB19259210000003779BCFFFFFFFFFFFFFFFFC57B310000000000
0000000000165EA9F3FFFFFFFFFFFFFFC5823F0000002C659DD6FFC88F571E0000002A629BD3FFCB92592100000B4D90D2FFFFFFFFFFFFFFE49C510700000000
00000000002E7DC8FFFFFFFFFFFFFFEBA1571300002B659DD6FFFFFFC88F571E002A629BD3FFFFFFCA92591F00002066B0FAFFFFFFFFFFFFFFBA6C1E00000000
00000000003E8CDBFFFFFFFFFFFFFFCB823800000E5B9DD6FFFFFFFFFFC88F572A629BD3FFFFFFFFFFCA904D0000004792DBFFFFFFFFFFFFFFCB7D2E00000000
00000000004D9DEBFFFFFFFFFFFFF7AD611900001666B6FFFFFFFFFFFFFFC88F629BD3FFFFFFFFFFFFF3A7570700002870BBFFFFFFFFFFFFFFDB8D3E00000000
000000000F5DADFBFFFFFFFFFFFFE1934400000008508EC7FFFFFFFFFFFFFFC8A5D3FFFFFFFFFFFFF4BC83430000000854A3F1FFFFFFFFFFFFEB9D4E00000000
00000000206EBCFFFFFFFFFFFFFFD18234000000001D568EC7FFFFFFFFFFFFFFF5FFFFFFFFFFFFF4BC834A12000000004493E1FFFFFFFFFFFFFBAD5D10000000
000000002F7ECDFFFFFFFFFFFFFFC1722400000000001D568EC7FFFFFFFFFFFFFFFFFFFFFFFFF4BC834A1200000000003482D1FFFFFFFFFFFFFFBD6E1F000000
000000003282D2FFFFFFFFFFFFFFB262140000000000001D568EC7FFFFFFFFFFFFFFFFFFFFF4BC834A120000000000002472C2FFFFFFFFFFFFFFC27222000000
000000003585D5FFFFFFFFFFFFFDAD5D0D000000000000001D568EC7FFFFFFFFFFFFFFFFF7BC834A12000000000000001D6DBDFFFFFFFFFFFFFFC57525000000
000000003787D7FFFFFFFFFFFFFBAB5B0B00000000000000002A62A5F5FFFFFFFFFFFFFFE595571E00000000000000001B6BBBFFFFFFFFFFFFFFC77727000000
000000003584D5FFFFFFFFFFFFFEAE5E0E000000000000002A629BD3FFFFFFFFFFFFFFFFFFC88F571E000000000000001E6EBEFFFFFFFFFFFFFFC47424000000
000000003282D2FFFFFFFFFFFFFFB465170000000000002A629BD3FFFFFFFFFFFFFFFFFFFFFFC88F571E0000000000002775C4FFFFFFFFFFFFFFC27222000000
000000002C7BC9FFFFFFFFFFFFFFC4752700000000002A629BD3FFFFFFFFFFFFFFFFFFFFFFFFFFC88F571E00000000003785D4FFFFFFFFFFFFFFB96B1D000000
000000001C6ABAFFFFFFFFFFFFFFD486370000000029629BD3FFFFFFFFFFFFF7E4FFFFFFFFFFFFFFC88F571D000000004796E4FFFFFFFFFFFFF8AA5A0C000000
000000000C5AAAF8FFFFFFFFFFFFE4964A0000000E5A9AD3FFFFFFFFFFFFF4BC94C7FFFFFFFFFFFFFFC88E4B0000000F59A6F4FFFFFFFFFFFFE89A4B00000000
00000000004A9AE7FFFFFFFFFFFFFCB3681F00001767B7FFFFFFFFFFFFF4BC83568EC7FFFFFFFFFFFFF5A8570700002E77C2FFFFFFFFFFFFFFD8893B00000000
00000000003B89D7FFFFFFFFFFFFFFD2883E00000A5191C9FFFFFFFFF4BC834B1D568EC7FFFFFFFFF7BE85450000044D97E0FFFFFFFFFFFFFFC8792B00000000
00000000002B78C2FFFFFFFFFFFFFFF1A75E1B0000205891C9FFFFF4BC834B12001D568EC7FFFFF7BE864D140000296BB6FFFFFFFFFFFFFFFDB4681B00000000
00000000001059A3EDFFFFFFFFFFFFFFCD8B49060000205891C9F0BC834B120000001D568EC7F5BE864D140000145598DBFFFFFFFFFFFFFFDE964A0100000000
0000000000003984CEFFFFFFFFFFFFFFFAB8773300000020588EA0834B1200000000001D568DA6854D140000004083C4FFFFFFFFFFFFFFFFBF742B0000000000
0000000000001B65AEF8FFFFFFFFFFFFFFE5A3662D0000001E4B504212000000000000001C4A5645140000003871B0F2FFFFFFFFFFFFFFEAA1560C0000000000
000000000000004591D9FFFFFFFFFFFFFFFFD79E662D0000000000000000000000000000000006000000003871A9E2FFFFFFFFFFFFFFFFCA8037000000000000
00000000000000266EB1F3FFFFFFFFFFFFFFFFD79E66380B0000000000000000000000000000000000144071A9E2FFFFFFFFFFFFFFFFE6A36117000000000000
00000000000000004184C6FFFFFFFFFFFFFFFFFFD7A77A4D20000000000000000000000000000004295583B0E2FFFFFFFFFFFFFFFFFBB9763400000000000000
0000000000000000145699DBFFFFFFFFFFFFFFFFFFE9BC90654728090000000000000000000F2E4D6B99C4F2FFFFFFFFFFFFFFFFFFCE8C4A0700000000000000
0000000000000000002A6CAEF1FFFFFFFFFFFFFFFFFFFED2B09270544434241E1B1E273747597897B7DBFFFFFFFFFFFFFFFFFFFFE4A15F1C0000000000000000
000000000000000000003F82BCF4FFFFFFFFFFFFFFFFFFFFFADBBBA39382726E6B6E758596A6C2E0FFFFFFFFFFFFFFFFFFFFFFE9B17432000000000000000000
00000000000000000000124B84BCF4FFFFFFFFFFFFFFFFFFFFFFFFF1E1D1C2BEBBBEC4D4E4F4FFFFFFFFFFFFFFFFFFFFFFFFE9B1783F05000000000000000000
0000000000000000000000124B84BCF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B1783F0700000000000000000000
000000000000000000000000124B84BCECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4B1783F070000000000000000000000
00000000000000000000000000124B7DABD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBCEA1743F07000000000000000000000000
00000000000000000000000000000E3B6895C2EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6B98C5F320500000000000000000000000000
0000000000000000000000000000000026527FADD1EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9CAA3764A1D000000000000000000000000000000
0000000000000000000000000000000000103C6887A6C5E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDEBFA18061340700000000000000000000000000000000
000000000000000000000000000000000000001E3D5C7C9CBACBDBEBFBFFFFFFFFFFFFFFF8E8D8C8B49674563717000000000000000000000000000000000000
0000000000000000000000000000000000000000001231516C7D8D9DADBDC2C5C7C4C2BAAA9A8979684A2B0C0000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000071E2E3E4E5D6E72757774726B5A4B3B2B1B0100000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000101F22252724221D0C000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000007384141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141413F20000000000000
00000000000023719191919191919191919191919191919191919191919191919191919191919191919191919191919191919191919191918F44000000000000
000000000000114D80B4E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1CB97632B000000000000
0000000000100A0F4378AADDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5C28D5A2500282300000000
00000000265B501F06396CA0D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECB884511D083C6E6920000000
000000003787905C28002F6296C9FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3AF7B4713114579AD7727000000
000000003787CD9966320025598CC0F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAA6723E0B1A4E82B6C77727000000
000000003787D7D7A3703C091B4F83B6E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19D69350123578BBFF3C77727000000
000000003787D7FFE0AD7A4712114579ACDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC894602C002C6094C8FCFFC77727000000
000000003787D7FFFFEBB784501D083B6EA1D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3BF8B57230135699DD1FFFFFFC77727000000
000000003787D7FFFFFFF4C18D5A2600316598CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAB6824E1A0B3E72A6DAFFFFFFFFC77727000000
000000003787D7FFFFFFFFFECB97643000275B8EC2F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1AD79451113477BAFE3FFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFD5A16E3B071D5185B8EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8A4703C081D5184B8ECFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFDFAB78441013477AAEE1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF9B673300255A8DC2F5FFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFE9B5824E1B0A3D70A4D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFF9C5925E2A002F6397CBFEFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFF2BF8B58240033679ACDFFFFFFFFFFFFFFFFFFFFFFFFF1BC89542104386CA0D4FFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFCC996622E00295E90C4F7FFFFFFFFFFFFFFFFFFE7B37F4B170D4174A9DCFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFD39F6A29001F5386BAEEFFFFFFFFFFFFFFDEAA76420E00407EB2E5FFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFD28535000015497CB0E4FFFFFFFFFFD5A16D390600004A9ADEFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFD59B61220007050C3F72A6DAFFFFFFCC986430000C0900306DA7E1FFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFD99E642A01385751230235699CD0F7C38F5B27003159582F003670AAE4FFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFDCA1672D003872A794602C002B5F92AD86521E073B6EA1A0662C003973ADE7FFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFDFA46A3000356FA9E3D19E6A370321515D47150F4377ABDFD79D6329023C78B0EAFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFE2A86E3300326CA6E0FFFFDBA774400E070D01194C80B5E8FFFFD49A6026053F79B3EDFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFE5AB7136002F69A3DDFFFFFFFFE5B17D4A170022568ABEF1FFFFFFFFD1975E2308427CB6F0FFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFE8AE743A002C66A0DAFFFFFFFFFFFFEFBB8756346193C6FAFFFFFFFFFFFFCF945A200B457FB9F4FFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFEBB1773D0329639DD7FFFFFFFFFFFFFFFFF8C79984A2D2FFFFFFFFFFFFFFFFFFCB91571D0E4883BCF7FFFFFFFFFFC77727000000
000000003787D7FFFFFFFFEEB47A400626609AD4FFFFFFFFFFFFFFFFFFFFFFDED4E5FFFFFFFFFFFFFFFFFFFFFFC88E541A114B86BFFAFFFFFFFFC77727000000
000000003787D7FFFFFFF1B77D4309235E97D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC58B5117144E87C3FCFFFFFFC77727000000
000000003787D7FFFFF4BA80460C1F5A94CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC2874E1417518BC6FFFFFFC77727000000
000000003787D7FFF7BD83490F1C5691CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BF854B111A548FC9FFFFC77727000000
000000003787D7FAC0864C121A538DC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6BC82470E1D5892CCFFC77727000000
000000003787D7C3894F1516508BC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B87E450B205B95CFC77727000000
000000003787C68C5218134D87C1FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B67B4207245E98C77727000000
0000000037878F551B104A84BEF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB3793F0427619B7727000000
000000002F6B581E0E4781BBF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAB0773B022A626520000000
000000000020180A447EB8F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6AD7338001E1C00000000
00000000000000397BB5C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7AA6F2A000000000000
00000000000000367377777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777776C27000000000000
00000000000000062427272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272200000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000001522222222222222222222222222222222222222222222220D00000000000000000000000000000000000000
00000000000000000000000000000000000000014E72727272727272727272727272727272727272727272723F00000000000000000000000000000000000000
000000000000000000000000000000000000000555A5C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
0000000000000000001D2222222222222222222255A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954522222222222222222222170000000000000000
00000000000000001A667272727272727272727272A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5957272727272727272727272580B00000000000000
00000000000000000B4A87C2C2C2C2C2C2C2C2C2C2CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC9C2C2C2C2C2C2C2C2C2B97C3E0000000000000000
000000000000000000175491CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC385480B0000000000000000
00000000000000000000205E9BD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD8F5214000000000000000000
00000000000000000000002967A4E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7995C1F00000000000000000000
0000000000000000000000003371AEEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0A365280000000000000000000000
000000000000000000000000003D7AB7F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAD6F32000000000000000000000000
00000000000000000000000000094784C1FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B7793C00000000000000000000000000
000000000000000000000000000012508DCAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC083460800000000000000000000000000
0000000000000000000000000000001C5997D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA8D4F120000000000000000000000000000
000000000000000000000000000000002663A1DDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD497591C000000000000000000000000000000
0000000000000000000000000000000000306CAAE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEA1632600000000000000000000000000000000
0000000000000000000000000000000000003978B3F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7AA6D300000000000000000000000000000000000
000000000000000000000000000000000000054280BDFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B4773A000000000000000000000000000000000000
000000000000000000000000000000000000000F4C88C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBBE804306000000000000000000000000000000000000
0000000000000000000000000000000000000000195593D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC88B4D1000000000000000000000000000000000000000
000000000000000000000000000000000000000000225F9CDAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD294571A0000000000000000000000000000000000000000
000000000000000000000000000000000000000000002B69A6E3FFFFFFFFFFFFFFFFFFFFFFFFFFDB9E6124000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000003572AFEDFFFFFFFFFFFFFFFFFFFFFFE5A86A2D00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000013E7BB9F6FFFFFFFFFFFFFFFFFFEFB274370000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000B4886C3FFFFFFFFFFFFFFFFF8BC7E41030000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000014528FCCFFFFFFFFFFFFFFC5884A0E000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000001E5B98D6FFFFFFFFFFCF92541700000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000002765A2DFFFFFFFD99C5F210000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000316EACE9FFE2A5682A000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000003B78B5EDAF723400000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000074482B97C3E0100000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000104E85480B0000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000001B3914000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000B150B000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000053C5A6554300000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000053E76AAB59C6F3300000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000002E74B0E7FFE0A46620000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000E549BE1FFFFFFD38D46000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000357BC1FFFFFFFFF9B36B260000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000165CA2E8FFFFFFFFFFD9944D0700000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000003C82C8FFFFFFFFFFFFFFBA742E00000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000001D63AAEFFFFFFFFFFFFFFFE19B540E000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000448BD0FFFFFFFFFFFFFFFFFFC17B35000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000002369B0F6FFFFFFFFFFFFFFFFFFE8A25C160000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000044A92D7FFFFFFFFFFFFFFFFFFFFFFC8833C0000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000002B71B7FDFFFFFFFFFFFFFFFFFFFFFFF0AA631D00000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000B5298DEFFFFFFFFFFFFFFFFFFFFFFFFFFD08B4400000000000000000000000000000000000000000000
000000000000000000000000000000000000000000003278BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B06924000000000000000000000000000000000000000000
0000000000000000000000000000000000000008183463A1E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD795582D1505000000000000000000000000000000000000
00000000000000000000000000000C1B2A3948566679A5D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA97766354453627180800000000000000000000000000
0000000000000000000F1E2D3C4B5A69788897A6B5C6E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFC1B2A3948475665648392A1B0C0000000000000000
000000000000213D4E5D6C7C8B9AAAB8C7D6E5F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E2D3C4B5A6978878695A4B38170000000000
00000000002D608A9DADBBCAD9E8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E5D6C7B8AA9A86562400000000
000000001A649FD0ECFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E8C794550C000000
000000003280CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF7022000000
000000003482CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF7225000000
000000001F6CB7F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8AA5D10000000
00000000064684BEF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB2783A00000000
0000000000134D87C2FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B67C410700000000
00000000000016518CC6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4BA7F450B0000000000
000000000000001B548FC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8BE83490F000000000000
00000000000000001E5893CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC1874C1200000000000000
000000000000000000225D96D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC58B50160000000000000000
0000000000000000000025609AD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC98E541A000000000000000000
000000000000000000000029639ED8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD92581D00000000000000000000
0000000000000000000000002D67A2DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0965C210000000000000000000000
00000000000000000000000000316BA5E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5995F25000000000000000000000000
00000000000000000000000000003471B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A8642800000000000000000000000000
000000000000000000000000000006529FEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB90440000000000000000000000000000
0000000000000000000000000000004393E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD282320000000000000000000000000000
0000000000000000000000000000004B9BEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB8B3B0000000000000000000000000000
00000000000000000000000000000655A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE495450000000000000000000000000000
0000000000000000000000000000105FAFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE9F4F0000000000000000000000000000
00000000000000000000000000001A69B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A9590A00000000000000000000000000
00000000000000000000000000002373C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3631300000000000000000000000000
00000000000000000000000000002E7ECDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD6D1E00000000000000000000000000
00000000000000000000000000003888D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7772800000000000000000000000000
00000000000000000000000000004191E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1813100000000000000000000000000
00000000000000000000000000004B9BEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB8B3B00000000000000000000000000
000000000000000000000000000756A5F5FFFFFFFFFFFFFFFFFFFFFFFFF7D5BBB6BEDCFEFFFFFFFFFFFFFFFFFFFFFFFFE4954500000000000000000000000000
000000000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFF2D0AE8D6C667195B6D8F9FFFFFFFFFFFFFFFFFFFFEE9F4F00000000000000000000000000
000000000000000000000000001A6AB9FFFFFFFFFFFFFFFFFFEECCAA8866442216284A6B90B1D3F5FFFFFFFFFFFFFFFFF8A9590A000000000000000000000000
000000000000000000000000002474C3FFFFFFFFFFFFFFE9C7A783613F1E00000000022446688BADCEF1FFFFFFFFFFFFFFB36314000000000000000000000000
000000000000000000000000002A7AC9FFFFFFFFFFE6C3A17F5D3B1900000000000000000020436486A9CAECFFFFFFFFFFB96919000000000000000000000000
000000000000000000000000001965B3F6FFFFE1BE9C7A583614000000000000000000000000001B3D5F81A3C5E7FFFFEAA45609000000000000000000000000
00000000000000000000000000024786B2C7B8997654321000000000000000000000000000000000001739587D9FBDBEAF7A3B00000000000000000000000000
0000000000000000000000000000144868776C502E0C000000000000000000000000000000000000000000123556706E623E0900000000000000000000000000
000000000000000000000000000000001E272006000000000000000000000000000000000000000000000000000B252013000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000B150B000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000053C5A6554300000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000053E76AAB59C6F3300000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000002E74AFE7FFE0A46620000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000E539BE1FFFFFFD38D46000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000347BC1FFFFFFFFF9B36C270000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000165BA2E8FFFFFFFFFFD9944D0700000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000003C82C8FFFFFFFFFFFFFFBA742E00000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000001D63AAEFFFFFFFFFFFFFFFE19B540E000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000448BD0FFFFFFFFFFFFFFFFFFC17B35000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000002469B0F6FFFFFFFFFFFFFFFFFFE8A25C160000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000044A91D7FFFFFFFFFFFFFFFFFFFFFFC8833C0000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000002B70B7FDFFFFFFFFFFFFFFFFFFFFFFEFAA631D00000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000B5298DEFFFFFFFFFFFFFFFFFFFFFFFFFFD08B4400000000000000000000000000000000000000000000
000000000000000000000000000000000000000000003278BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B06924000000000000000000000000000000000000000000
0000000000000000000000000000000000000008183463A0E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD793592B1405000000000000000000000000000000000000
00000000000000000000000000000B1B2A3948586679A5D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA9B746254453627180800000000000000000000000000
0000000000000000000F1E2D3C4B5A69788897A6B5C6E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDCC1B2A3948475665648392A1B0B0000000000000000
000000000000203D4E5D6C7C8B9AAAB8C7D6E5F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E2D3C4B5A6978878695A4B38170000000000
00000000002D608A9DADBBCAD9E8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4E5D6C7B8AA9A85552400000000
000000001A649ED0EBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E8C794550B000000
000000003280CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF7022000000
000000003582CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC07225000000
000000001F6CB7F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8AA5D10000000
00000000064784BEF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB3783B00000000
0000000000134D87C2FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B77C410700000000
00000000000017518CC6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4BA7F460B0000000000
000000000000001B548FC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8BE83490F000000000000
00000000000000001E5893CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC1874C1200000000000000
000000000000000000215C96D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC58B50160000000000000000
0000000000000000000025609AD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC98E541A000000000000000000
000000000000000000000029639ED8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD92581D00000000000000000000
0000000000000000000000002D67A1DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0965C210000000000000000000000
00000000000000000000000000306BA5E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4995F25000000000000000000000000
00000000000000000000000000003471B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A8642800000000000000000000000000
000000000000000000000000000006529FEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB90430000000000000000000000000000
0000000000000000000000000000004292E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD282320000000000000000000000000000
0000000000000000000000000000004B9BEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB8B3B0000000000000000000000000000
00000000000000000000000000000655A5F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE495450000000000000000000000000000
0000000000000000000000000000105FAFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE9F4F0000000000000000000000000000
00000000000000000000000000001A69B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A9590A00000000000000000000000000
00000000000000000000000000002373C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3631300000000000000000000000000
00000000000000000000000000002E7ECDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD6D1E00000000000000000000000000
00000000000000000000000000003788D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7772800000000000000000000000000
00000000000000000000000000004191E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1813100000000000000000000000000
00000000000000000000000000004B9BEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB8B3B00000000000000000000000000
000000000000000000000000000655A5F4FFFFFFFFFFFFFFFFFFFFFFFFF7D5BBB6BEDCFEFFFFFFFFFFFFFFFFFFFFFFFFE4954500000000000000000000000000
00000000000000000000000000105FAFFEFFFFFFFFFFFFFFFFFFFFF2D0AE8D6C667295B6D8F9FFFFFFFFFFFFFFFFFFFFEE9F4F00000000000000000000000000
000000000000000000000000001A69B9FFFFFFFFFFFFFFFFFFEECCAA8866442216284A6B90B1D3F5FFFFFFFFFFFFFFFFF8A9590A000000000000000000000000
000000000000000000000000002473C3FFFFFFFFFFFFFFE9C7A78361401E00000000022446688BADCFF1FFFFFFFFFFFFFFB36314000000000000000000000000
00000000000000000000000000297AC9FFFFFFFFFFE5C3A17F5D3B1900000000000000000020436486A9CAECFFFFFFFFFFB96919000000000000000000000000
000000000000000000000000001965B3F6FFFFE1BF9C7B583614000000000000000000000000001C3E5F81A3C5E7FFFFEAA45609000000000000000000000000
00000000000000000000000000024785B2C7B8997654321000000000000000000000000000000000001739587D9FBDBEAF7A3B00000000000000000000000000
0000000000000000000000000000144868776C502E0C000000000000000000000000000000000000000000123556716E623E0800000000000000000000000000
000000000000000000000000000000001E272106000000000000000000000000000000000000000000000000000B252013000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000B150B000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000053C5A6554300000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000053E76AAB59C6F3300000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000002E74AFE7FFE0A46620000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000E549BE1FFFFFFD38D46000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000357BC1FFFFFFFFF9B36B260000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000165CA2E8FFFFFFFFFFD9944D0700000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000003C82C8FFFFFFFFFFFFFFBA742E00000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000001D63AAEFFFFFFFFFFFFFFFE19B540E000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000448BD0FFFFFFFFFFFFFFFFFFC17B35000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000002369B0F6FFFFFFFFFFFFFFFFFFE8A25C160000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000044A92D7FFFFFFFFFFFFFFFFFFFFFFC8833C0000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000002B71B7FDFFFFFFFFFFFFFFFFFFFFFFF0AA631D00000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000B5298DEFFFFFFFFFFFFFFFFFFFFFFFFFFD08B4400000000000000000000000000000000000000000000
000000000000000000000000000000000000000000003278BFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7B06924000000000000000000000000000000000000000000
0000000000000000000000000000000000000008183463A1E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD795582D1505000000000000000000000000000000000000
00000000000000000000000000000C1B2A3948586679A5D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA97766354453627180800000000000000000000000000
0000000000000000000F1E2D3C4B5A69788897A6B5C6E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFC1B2A3948475665648392A1B0C0000000000000000
000000000000203D4E5D6C7C8B9AAAB8C7D6E5F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1E2D3C4B5A6978878695A4B38170000000000
00000000002D608A9DADBBCAD9E8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5E5D6C7B8AA9A86552400000000
000000001A649ED0ECFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E8C794550C000000
000000003280CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF7022000000
000000003582CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC07225000000
000000001F6CB7F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8AA5D10000000
00000000064684BEF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB2783A00000000
0000000000134D87C2FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B67C410700000000
00000000000016518CC6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4BA7F450B0000000000
000000000000001B548FC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8BE83490F000000000000
00000000000000001E5893CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC1874C1200000000000000
000000000000000000225D96D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC58B50160000000000000000
0000000000000000000025609AD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC98E541A000000000000000000
000000000000000000000029639ED8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD92581D00000000000000000000
0000000000000000000000002D67A2DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0965C210000000000000000000000
00000000000000000000000000316BA5E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5995F25000000000000000000000000
00000000000000000000000000003471B7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A8642800000000000000000000000000
000000000000000000000000000006529FEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB90440000000000000000000000000000
0000000000000000000000000000004292E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD282320000000000000000000000000000
0000000000000000000000000000004B9BEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB8B3B0000000000000000000000000000
00000000000000000000000000000655A5F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE495460000000000000000000000000000
0000000000000000000000000000105FAFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE9F4F0000000000000000000000000000
00000000000000000000000000001A69B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8A9590A00000000000000000000000000
00000000000000000000000000002373C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB3631300000000000000000000000000
00000000000000000000000000002E7ECDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD6D1E00000000000000000000000000
00000000000000000000000000003788D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC7772800000000000000000000000000
00000000000000000000000000004191E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1813200000000000000000000000000
00000000000000000000000000004B9BEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB8B3B00000000000000000000000000
000000000000000000000000000655A5F4FFFFFFFFFFFFFFFFFFFFFFFFF7D5BBB6BEDCFEFFFFFFFFFFFFFFFFFFFFFFFFE4954600000000000000000000000000
00000000000000000000000000105FAFFEFFFFFFFFFFFFFFFFFFFFF2D0AE8D6C667195B6D8F9FFFFFFFFFFFFFFFFFFFFEE9F4F00000000000000000000000000
000000000000000000000000001A69B9FFFFFFFFFFFFFFFFFFEECCAA8866442216284A6B90B1D3F5FFFFFFFFFFFFFFFFF8A9590A000000000000000000000000
000000000000000000000000002473C3FFFFFFFFFFFFFFE9C7A78361401E00000000022446688BADCEF1FFFFFFFFFFFFFFB36314000000000000000000000000
00000000000000000000000000297AC9FFFFFFFFFFE5C3A17F5D3B1900000000000000000020436486A9CAECFFFFFFFFFFB96919000000000000000000000000
000000000000000000000000001965B3F6FFFFE1BF9C7B583614000000000000000000000000001B3D5F81A3C5E7FFFFEAA45609000000000000000000000000
00000000000000000000000000024786B2C7B8997654321000000000000000000000000000000000001739587D9FBDBEAF7A3B00000000000000000000000000
0000000000000000000000000000144868776C502E0C000000000000000000000000000000000000000000123556706E623E0800000000000000000000000000
000000000000000000000000000000001E272006000000000000000000000000000000000000000000000000000B252013000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000016373737373737373737373737373737373737373737372C000000000000000000000000
000000000000000000000000000000000000000000000000000000124D878787878787878787878787878787878787878787876F330000000000000000000000
00000000000000000000000000000000000000000000000000000E4883BED7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D79E4E0000000000000000000000
0000000000000000000000000000000000000000000000000009447EB9F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
000000000000000000000000000000000000000000000000043F7AB5F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000000000000000000000000000003A74B0EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000000000000000000000000003570ABE5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000000000000000000000000306BA6E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000000000000000000000002C67A1DDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
000000000000000000000000000000000000000027629DD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000000000000000000225E98D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000000000000000001D5893CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
000000000000000000000000000000000019548FC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000000000000144F8AC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000000000000F4A85C0FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000000000A4680BBF6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000000006417BB7F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
000000000000000000000000013C77B2EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000003772ADE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000F5FA8E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE9E4E0000000000000000000000
00000000000000000000000C5AA6C4C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C896470000000000000000000000
00000000000000000000000035687478787878787878787878787878787878787878787878787878787878787878787878787864250000000000000000000000
000000000000000000000000001D242828282828282828282828282828282828282828282828282828282828282828282828281B000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000001213537373737373737373737373737373730170000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000E4769858787878787878787878787878787877D623501000000000000000000000000000000000000000000000000000000000000000000000000
00000000014780B4D4D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7C8A67230000000000000000000000000000000000000000000000000000000000000000000000000
000000002069B4F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE39C55080000000000000000000000000000000000000000000000000000000000000000000000
000000003484D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB060100000000000000000000000000000000000000000000000000000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB060100000000000000000000000000000000000000000000000000000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB0602F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2E250900000000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB27F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7E705328000000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCEBB99642C0000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD599510900000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC702000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFF7D8CCC7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C5752500000000000000000000
000000003787D7FFFFFFFFFFFFF6CBAD8F7C777777777777777777777777777777777777777777777777777777777777777777776E2300000000000000000000
000000003787D7FFFFFFFFFFF3BC8561442C27272727272727272727272727272727272727272727272727272727272727272727240000000000000000000000
000000003787D7FFFFFFFFF4B8824B19000002020202020202020202020202020202020202020202020202020202020202020202020202020202020000000000
000000003787D7FFFFFFFFD0884711062D4C52525252525252525252525252525252525252525252525252525252525252525252525252525252522D00000000
000000003787D7FFFFFFF5AD651D08407697A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A29E580C000000
000000003787D7FFFFFFD78B43002F77B1E0F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2BD7023000000
000000003787D7FFFFFFCC7D2D02509AE2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC67626000000
000000003787D7FFFFFFC474240A5AAAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC07020000000
000000003787D7FFFFFFBE6E1E1060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB96919000000
000000003787D7FFFFFFB868181666B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB26213000000
000000003787D7FFFFFFB363131C6CBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAC5C0C000000
000000003787D7FFFFFDAD5D0D2171C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5A55505000000
000000003787D7FFFFF7A757072777C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE9E4E00000000
000000003787D7FFFFF1A151012D7DCDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7984700000000
000000003787D7FFFFEB9B4B003382D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1914100000000
000000003787D7FFFFE69646003989D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA8A3A00000000
000000003787D7FFFFE09040003F8FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD3833300000000
000000003787D7FFFFDA8A3A004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD7D2D00000000
000000003787D7FFFFD48334004A9AEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6762600000000
000000003787D7FFFFCE7E2E0050A0F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF6F1F00000000
000000003787D7FFFFC878280656A6F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB8691900000000
000000003787D7FFFFC373230C5CACFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB2621200000000
000000003787D7FFFFBF6F1F1261B1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B00000000
000000003787D7FFFFCB8B4E487FC1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4A5550500000000
000000003787D7FFFFFCBF9894B9F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE9E4E0000000000
000000003787D7FFFFFFFDE5E3F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE797470000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE090400000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDA8A3A0000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD382330000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC7D2C0000000000
000000003382CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA71230000000000
000000001A62ACE5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD0974F070000000000
00000000003B74A5C5C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7B8965F28000000000000
0000000000033B5C757777777777777777777777777777777777777777777777777777777777777777777777777777777777777777776B4E2500000000000000
00000000000000122527272727272727272727272727272727272727272727272727272727272727272727272727272727272727272720040000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000F202F32353735322C1C0C0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000162E3E4D5D6E7E82858785827B6A5A4A3B2B1000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000221405E7C8C9DADBCCCD2D5D7D5D2C9BAAA9A8978593A1B0000000000000000000000000000000000000000
000000000000000000000000000000000000082C4C698BA9C9DBEBFBFFFFFFFFFFFFFFFFFFF8E7D7C2A384654526000000000000000000000000000000000000
00000000000000000000000000000000001D4A7697B5D4F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDCEAE906D411400000000000000000000000000000000
0000000000000000000000000000000633608DB9DFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D9B184562A000000000000000000000000000000
00000000000000000000000000001B4974A2CFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C6996C3F1100000000000000000000000000
000000000000000000000000001D568BB8E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBAE824B12000000000000000000000000
0000000000000000000000001D568FC7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BC844B120000000000000000000000
00000000000000000000001D568FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4BC844B1200000000000000000000
000000000000000000001B568FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E6D8D4D2D4DAEBFBFFFFFFFFFFFFFFFFFFFFFFFFFFF4BC844B0E000000000000000000
00000000000000000006498BC7FFFFFFFFFFFFFFFFFFFFFFFFEED3C1AC99888482848C9DADBCD9F8FFFFFFFFFFFFFFFFFFFFFFF4BC7D3B000000000000000000
0000000000000000003374B8FAFFFFFFFFFFFFFFFFFFFFFBC8A785715D4A383432343E4D5D6F91AFCEF4FFFFFFFFFFFFFFFFFFFFECAB68260000000000000000
00000000000000001D60A2E5FFFFFFFFFFFFFFFFFFFFFFDE8E5D3B2410000000000000000F26466585B1DEFFFFFFFFFFFFFFFFFFFFD795521000000000000000
00000000000000084A8DCFFFFFFFFFFFFFFFFFFFFFFFFFFBC187501700000000000000000000001B426F9CC9FDFFFFFFFFFFFFFFFFFFC27F3C00000000000000
000000000000002C76B9FCFFFFFFFFFFFFFFFFFFFFFFFFFFFAC18750170000000000000000000000002D598CC4FDFFFFFFFFFFFFFFFFEEAD681E000000000000
000000000000024C97DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC18750170000000000000000000000001B538CC4FDFFFFFFFFFFFFFFFFD1873D000000000000
0000000000002169B5FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC18750170000000000000000000000001B538CCDFFFFFFFFFFFFFFFFEFA65C120000000000
000000000000408BD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC18750170000000000000000000000001B5EA0E3FFFFFFFFFFFFFFFFC57B310000000000
0000000000165EA9F3FFFFFFFFFFFFFFFBDEFBFFFFFFFFFFFFFFFFFFFAC18750170000000000000000000000003173B6F8FFFFFFFFFFFFFFE49C510700000000
00000000002E7DC8FFFFFFFFFFFFFFFFC88EC1FAFFFFFFFFFFFFFFFFFFFAC1875017000000000000000000000004478ED6FFFFFFFFFFFFFFFFBA6C1E00000000
00000000003E8CDBFFFFFFFFFFFFFFEEA75D87C1FAFFFFFFFFFFFFFFFFFFFAC18750170000000000000000000000236CB7FFFFFFFFFFFFFFFFCB7D2E00000000
00000000004D9DEBFFFFFFFFFFFFFFD3853B5087C1FAFFFFFFFFFFFFFFFFFFFAC187501700000000000000000000054E99E1FFFFFFFFFFFFFFDB8D3E00000000
000000000F5DADFBFFFFFFFFFFFFFFBF7124185087C1FAFFFFFFFFFFFFFFFFFFFAC1875017000000000000000000002E7BC9FFFFFFFFFFFFFFEB9D4E00000000
00000000206EBCFFFFFFFFFFFFFFF9AC5D1000185087C1FAFFFFFFFFFFFFFFFFFFFAC18750170000000000000000001C6AB9FFFFFFFFFFFFFFFBAD5E10000000
000000002F7ECDFFFFFFFFFFFFFFE6994A000000185087C1FAFFFFFFFFFFFFFFFFFFFAC187501700000000000000000C59A9F7FFFFFFFFFFFFFFBD6E1F000000
000000003282D2FFFFFFFFFFFFFFD8883700000000185087C1FAFFFFFFFFFFFFFFFFFFFAC187501700000000000000004A99E8FFFFFFFFFFFFFFC27222000000
000000003585D5FFFFFFFFFFFFFFD584350000000000185087C1FAFFFFFFFFFFFFFFFFFFFAC1875017000000000000004494E4FFFFFFFFFFFFFFC57525000000
000000003787D7FFFFFFFFFFFFFFD28232000000000000185087C1FAFFFFFFFFFFFFFFFFFFFAC18750170000000000004292E2FFFFFFFFFFFFFFC77727000000
000000003584D5FFFFFFFFFFFFFFD5843500000000000000175087C1FAFFFFFFFFFFFFFFFFFFFAC187501700000000004595E5FFFFFFFFFFFFFFC47424000000
000000003282D2FFFFFFFFFFFFFFDA8C3E0000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFAC1875017000000004A99E9FFFFFFFFFFFFFFC27222000000
000000002C7BC9FFFFFFFFFFFFFFEB9D4D000000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFAC18750170000105DACF9FFFFFFFFFFFFFFB96B1D000000
000000001C6ABAFFFFFFFFFFFFFFFBAD5D0F000000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFAC1875017002471BFFFFFFFFFFFFFFFF8AA5A0C000000
000000000C5AAAF8FFFFFFFFFFFFFFBD6F2700000000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFAC18750173785D3FFFFFFFFFFFFFFE89A4B00000000
00000000004A9AE7FFFFFFFFFFFFFFD991460000000000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFAC18750509BE6FFFFFFFFFFFFFFD88A3B00000000
00000000003B89D7FFFFFFFFFFFFFFF9AF661B0000000000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFAC18771BBFFFFFFFFFFFFFFFFC8792B00000000
00000000002B78C2FFFFFFFFFFFFFFFFCE8543010000000000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFAC1A2DDFFFFFFFFFFFFFFFDB4681B00000000
00000000001059A3EDFFFFFFFFFFFFFFF4B26F2D000000000000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFFEFFFFFFFFFFFFFFFFFDE964A0100000000
0000000000003984CEFFFFFFFFFFFFFFFFDF9D5A1B000000000000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC0742B0000000000
0000000000001B65AEF8FFFFFFFFFFFFFFFFC98C541B000000000000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAA1560C0000000000
000000000000004591D9FFFFFFFFFFFFFFFFFDC58D541C000000000000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA8037000000000000
00000000000000266EB1F3FFFFFFFFFFFFFFFFFEC58D5E32050000000000000000000000175087C1FAFFFFFFFFFFFFFFFFFFFFFFFFFFE6A46117000000000000
00000000000000004184C6FFFFFFFFFFFFFFFFFFFECEA17447240500000000000000000000175087C1FFFFFFFFFFFFFFFFFFFFFFFFFBB9763400000000000000
0000000000000000145699DBFFFFFFFFFFFFFFFFFFFFE4B68E6D4F2F1C0C00000000001024375071A2EFFFFFFFFFFFFFFFFFFFFFFFCF8C4A0700000000000000
0000000000000000002A6CAEF1FFFFFFFFFFFFFFFFFFFFF9D7B89A7B6A5A4A4443454A5D718599BBDDFFFFFFFFFFFFFFFFFFFFFFE4A15F1D0000000000000000
000000000000000000003F82BCF5FFFFFFFFFFFFFFFFFFFFFFFFE2C9BAAA9994939599ABC1D3E6FFFFFFFFFFFFFFFFFFFFFFFFEAB17432000000000000000000
00000000000000000000124B84BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFF8E8E4E3E5E9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFEAB1794005000000000000000000
0000000000000000000000124B84BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAB179400700000000000000000000
000000000000000000000000124B84BCEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B17940070000000000000000000000
00000000000000000000000000124B7DABD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCCFA3754008000000000000000000000000
00000000000000000000000000000E3B6895C2EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7BA8D60330600000000000000000000000000
0000000000000000000000000000000026527FADD1EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBCBA5774B1E000000000000000000000000000000
0000000000000000000000000000000000103D6887A6C5E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0C1A48262350800000000000000000000000000000000
000000000000000000000000000000000000001E3D5C7C9CBACBDBEBFBFFFFFFFFFFFFFFFAEAD9CAB59776573819000000000000000000000000000000000000
0000000000000000000000000000000000000000001231516C7D8D9DADBDC2C5C9C6C4BBAC9C8B7B6A4C2D0D0000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000071E2E3E4E5D6E72757976746C5C4C3D2D1C0200000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000101F22252926241E0E000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000F202F32353735322C1C0C0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000162E3E4D5D6E7E82858785827B6A5A4A3B2B1000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000221405E7C8C9DADBCCCD2D5D7D5D2C9BAAA9A8978593A1B0000000000000000000000000000000000000000
000000000000000000000000000000000000082C4C698BA9C9DBEBFBFFFFFFFFFFFFFFFFFFF8E7D7C2A384654526000000000000000000000000000000000000
00000000000000000000000000000000001D4A7697B5D4F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDCEAE916E411400000000000000000000000000000000
0000000000000000000000000000000633608DB9DFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D9B184562A000000000000000000000000000000
00000000000000000000000000001B4874A2CFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C6996C3F1200000000000000000000000000
000000000000000000000000001D568BB8E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBAE824B12000000000000000000000000
0000000000000000000000001D568FC7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BC844B120000000000000000000000
00000000000000000000001D568FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4BC844B1200000000000000000000
000000000000000000001B568FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4BC844B0E000000000000000000
00000000000000000006498BC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4BC7D3B000000000000000000
0000000000000000003374B8FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECAB68260000000000000000
00000000000000001D60A2E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD795521000000000000000
00000000000000084A8DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC27F3C00000000000000
000000000000002C76B9FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEAD681E000000000000
000000000000024C97DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1873D000000000000
0000000000002169B5FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFA65C120000000000
000000000000408BD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC57B310000000000
0000000000165EA9F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE49A510700000000
00000000002E7DC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA6C1E00000000
00000000003E8CDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB7D2E00000000
00000000004D9DEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB8D3E00000000
000000000F5DADFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB9D4E00000000
00000000206EBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAD5D10000000
000000002F7ECDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD6E1F000000
000000003282D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC27222000000
000000003585D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC57525000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003584D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC47424000000
000000003282D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC27222000000
000000002C7BC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB96B1D000000
000000001C6ABAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8AA5A0C000000
000000000C5AAAF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE89A4B00000000
00000000004A9AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8893B00000000
00000000003B89D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8792B00000000
00000000002B78C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB4681B00000000
00000000001059A3EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE964A0100000000
0000000000003A84CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF742B0000000000
0000000000001B65AEF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAA1560C0000000000
000000000000004591D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA8037000000000000
00000000000000266EB0F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6A36117000000000000
00000000000000004184C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB9763400000000000000
0000000000000000155699DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8C4A0700000000000000
0000000000000000002A6CAEF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4A15F1C0000000000000000
000000000000000000003F82BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B17432000000000000000000
00000000000000000000124B84BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B1784005000000000000000000
0000000000000000000000124B84BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B178400700000000000000000000
000000000000000000000000124B84BCEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4B17840070000000000000000000000
00000000000000000000000000124B7DABD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBCEA1744007000000000000000000000000
00000000000000000000000000000E3B6895C2EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6B98C5F320500000000000000000000000000
0000000000000000000000000000000026527FADD1EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9CAA3764A1C000000000000000000000000000000
0000000000000000000000000000000000103D6887A6C5E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDEBFA18061340700000000000000000000000000000000
000000000000000000000000000000000000001E3D5C7C9CBACBDBEBFBFFFFFFFFFFFFFFF8E8D8C8B49674563717000000000000000000000000000000000000
0000000000000000000000000000000000000000001231516C7D8D9DADBDC2C5C7C4C2BAAA9A8979684A2B0C0000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000071E2E3E4E5D6E72757774726B5A4B3B2B1B0100000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000101F22252724221D0C000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000009303315000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000842798250160000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000053F79B3C1874D130000000000053E50505050505050491C000000000000000000000000
000000000000000000000000000000000000000000000000000000033C76B0EAF8BE844A0F000000003576A0A0A0A0A0A0A08D51060000000000000000000000
0000000000000000000000000000000000000000000000000000003974ADE7FFFFF5BB81470C0000004191E1F0F0F0F0F0F0AF5F0F0000000000000000000000
00000000000000000000000000000000000000000000000000003670AAE4FFFFFFFFF2B87D430900004191E1FFFFFFFFFFFFAF5F0F0000000000000000000000
00000000000000000000000000000000000000000000000000336DA7E1FFFFFFFFFFFFEFB47A400600408EC8FFFFFFFFFFFFAF5F0F0000000000000000000000
0000000000000000000000000000000000000000000000003069A4DEFFFFFFFFFFFFFFFFEBB1783D031D5792CCFFFFFFFFFFAF5F0F0000000000000000000000
00000000000000000000000000000000000000000000002C66A1DBFFFFFFFFF5F3FFFFFFFFE8AE743A00215B95D0FFFFFFFFAF5F0F0000000000000000000000
0000000000000000000000000000000000000000000029639DD7FFFFFFFFD7A7A3CBFFFFFFFFE5AB713600245F99D4FFFFFFAF5F0F0000000000000000000000
00000000000000000000000000000000000000000026609AD4FFFFFFFFDAA1665992CDFFFFFFFFE2A76D330028629DD7FFFFAF5F0F0000000000000000000000
0000000000000000000000000000000000000000235E97D1FFFFFFFFDDA36930215C96D0FFFFFFFFDEA46A30002C66A1DBFFAF5F0F0000000000000000000000
00000000000000000000000000000000000000205A94CEFFFFFFFFE1A66C320000245F99D3FFFFFFFFDBA1672D00306AA4DFAF5F0F0000000000000000000000
0000000000000000000000000000000000001D5791CBFFFFFFFFE4AA6F35001E250028629CD6FFFFFFFFD89E642900336DA8AF5F0F0000000000000000000000
00000000000000000000000000000000001A538EC8FFFFFFFFE7AD733800215B692F002B65A0D9FFFFFFFFD59B6026003771AC5F0F0000000000000000000000
0000000000000000000000000000000016508BC5FFFFFFFFEAB0763C021E5892A0662B002F68A3DDFFFFFFFFD2975E23003B745F0F0000000000000000000000
000000000000000000000000000000134D87C1FCFFFFFFEDB3793F051B558FC9D79D622800326CA6E0FFFFFFFFCF945A20043D42020000000000000000000000
0000000000000000000000000000104A84BEF9FFFFFFF0B67C420818528CC6FFFFD3995F2500356FA9E3FFFFFFFFCB91571D0000000000000000000000000000
000000000000000000000000000E4781BBF5FFFFFFF3B97F450B154F89C3FDFFFFFFD0965C22003872ACE7FFFFFFFFC88E531A00000000000000000000000000
0000000000000000000000000A447EB8F2FFFFFFF7BC82480E114B86C0FAFFFFFFFFFFCD93591E013B77B0EAFFFFFFFFC58B5016000000000000000000000000
000000000000000000000007417BB5EFFFFFFFFABF854B110E4883BDF7FFFFFFFFFFFFFFCA90551B043E79B3EDFFFFFFFCC1874D130000000000000000000000
00000000000000000000043D78B2ECFFFFFFFDC3894E140B467FB9F4FFFFFFFFFFFFFFFFFFC68C521807427BB6F0FFFFFFF8BE854A1000000000000000000000
000000000000000000003B75AFE9FFFFFFFFC68C521808427CB7F1FFFFFFFFFFFFFFFFFFFFFDC3884F150B457FB9F3FFFFFFF5BB81470C000000000000000000
0000000000000000003772ACE6FFFFFFFFC98F551B053F79B3EDFFFFFFFFFFFFFFFFFFFFFFFFFAC0864C120E4883BCF7FFFFFFF2B87D43090000000000000000
0000000000000000346EA8E3FFFFFFFFCC92581E023C76B0EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7BD83480E114B86C0FAFFFFFFEFB57A400600000000000000
00000000000000316BA5DFFFFFFFFFD0955B21003973ADE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B97F460B144E87C3FDFFFFFFEBB1783D03000000000000
0000000000002E68A2DCFFFFFFFFD2985F24003670AAE4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1B77C420818528CC6FFFFFFFFE8AE743A000000000000
00000000002B659FD9FFFFFFFFD59B612700326DA7E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB3793F041B558FC9FFFFFFFFE5AB71360000000000
0000000021629CD6FFFFFFFFD99F642A002F69A3DEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAB0773C021E5892CDFFFFFFFFE2A86D3300000000
000000003382D2FFFFFFFFDCA2672D002C66A0DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7AD733800215C96D0FFFFFFFFDFA4661D000000
000000002D74B4F1FFFFDFA56B310029639DD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4A96F3500245F99D3FFFFFFFFC47424000000
00000000044281BEFCE2A86E340026609AD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0A66C320028629CD6FFFFD2945612000000
00000000000F4D8CC9AB713700235E97D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDA3692F002B65A0D9DDA0612400000000
0000000000001B5886733A00165A94CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAA0662B002F68A3AA6C2F0000000000
000000000000001D363102001F6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD79D60130032656839000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFFFFFE1DCDCDCDCDCDCDCDCDCE5FFFFFFFFFFFFFFFFFFFFFFFFB565150000181800000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFFFCC968C8C8C8C8C8C8C8C8C9AD6FFFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF3A45B3C3C3C3C3C3C3C3C3C65B1FFFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001F6FBFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000D5DADFDFFFFFFFFFFFFFFFFFFFFB565150000000000000000000000
0000000000000000000000001D6CB4C7C7C7C7C7C7C7C7C7C7C7A05000000000000000000D5DADC7C7C7C7C7C7C7C7C7C7C7AC62130000000000000000000000
0000000000000000000000000542747777777777777777777777774E00000000000000000C5A777777777777777777777777713B000000000000000000000000
000000000000000000000000000924272727272727272727272727170000000000000000001F2727272727272727272727272303000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000F202F32353735322C1C0C0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000162E3E4D5D6E7E82858785827B6A5A4A3B2B1000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000221405E7C8C9DADBCCCD2D5D7D5D2C9BAAA9A8978593A1B0000000000000000000000000000000000000000
000000000000000000000000000000000000082C4C698BA9C9DBEBFBFFFFFFFFFFFFFFFFFFF8E7D7C2A384654526000000000000000000000000000000000000
00000000000000000000000000000000001D4A7697B5D4F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDCEAE916E411400000000000000000000000000000000
0000000000000000000000000000000633608DB9DFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D9B184562A000000000000000000000000000000
00000000000000000000000000001B4874A2CFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C6996C3F1200000000000000000000000000
000000000000000000000000001D568BB8E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBAE824B12000000000000000000000000
0000000000000000000000001D568FC7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BC844B120000000000000000000000
00000000000000000000001D568FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4BC844B1200000000000000000000
000000000000000000001B568FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4BC844B0E000000000000000000
00000000000000000006498BC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4BC7D3B000000000000000000
0000000000000000003374B8FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECAB68260000000000000000
00000000000000001D60A2E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD795521000000000000000
00000000000000084A8DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC27F3C00000000000000
000000000000002C76B9FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEAD681E000000000000
000000000000024C97DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1873D000000000000
0000000000002169B5FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFA65C120000000000
000000000000408BD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC57B310000000000
0000000000165EA9F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE49C510700000000
00000000002E7DC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA6C1E00000000
00000000003E8CDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB7D2E00000000
00000000004D9DEBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB8D3E00000000
000000000F5DADFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEB9D4E00000000
00000000206EBCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAD5D10000000
000000002F7ECDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD6E1F000000
000000003282D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC27222000000
000000003585D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC57525000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003584D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC47424000000
000000003282D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC27222000000
000000002C7BC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB96B1D000000
000000001C6ABAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8AA5A0C000000
000000000C5AAAF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE89A4B00000000
00000000004A9AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8893B00000000
00000000003B89D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8792B00000000
00000000002B78C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB4681B00000000
00000000001059A3EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE964A0100000000
0000000000003A84CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF742B0000000000
0000000000001B65AEF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAA1560C0000000000
000000000000004591D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA8037000000000000
00000000000000266EB0F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6A36117000000000000
00000000000000004184C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB9763400000000000000
0000000000000000155699DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8C4A0700000000000000
0000000000000000002A6CAEF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4A15F1C0000000000000000
000000000000000000003F82BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B17432000000000000000000
00000000000000000000124B84BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B1784005000000000000000000
0000000000000000000000124B84BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B178400700000000000000000000
000000000000000000000000124B84BCEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4B17840070000000000000000000000
00000000000000000000000000124B7DABD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBCEA1744007000000000000000000000000
00000000000000000000000000000E3B6895C2EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6B98C5F320500000000000000000000000000
0000000000000000000000000000000026527FADD1EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9CAA3764A1C000000000000000000000000000000
0000000000000000000000000000000000103D6887A6C5E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDEBFA18061340700000000000000000000000000000000
000000000000000000000000000000000000001E3D5C7C9CBACBDBEBFBFFFFFFFFFFFFFFF8E8D8C8B49674563717000000000000000000000000000000000000
0000000000000000000000000000000000000000001231516C7D8D9DADBDC2C5C7C4C2BAAA9A8979684A2B0C0000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000071E2E3E4E5D6E72757774726B5A4B3B2B1B0100000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000101F22252724221D0C000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000015454D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D481B00000000
0000000048869D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8C5004000000
0000000454A4EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9AB5B0B000000
000000004D8EA9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9935506000000
000000001D5059595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959595959522200000000
00000000000209090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909040000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000052F36363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636363636310A00000000
000000003D76868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686868686867B4200000000
0000000454A4D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6AB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
00000002519EBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFA35709000000
000000002D646F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F683200000000
0000000000181F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1A0000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000019202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020202020201B0000000000
000000002E6470707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070707070683300000000
00000002519FC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0A45809000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B000000
0000000454A4D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5AB5B0B000000
000000003C77858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585858585857A4200000000
00000000042D35353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535353535300900000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000016373737373737373737373737373737373737373737372C000000000000000000000000
000000000000000000000000000000000000000000000000000000124D878787878787878787878787878787878787878787876F330000000000000000000000
00000000000000000000000000000000000000000000000000000E4883BED7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D79E4E0000000000000000000000
0000000000000000000000000000000000000000000000000009447EB9F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
000000000000000000000000000000000000000000000000043F7AB5F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000000000000000000000000000003A74B0EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000000000000000000000000003570ABE5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000000000000000000000000306BA6E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000000000000000000000002C67A1DDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
000000000000000000000000000000000000000027629DD8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000000000000000000225E98D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000000000000000001D5893CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
000000000000000000000000000000000019548FC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000000000000144F8AC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000000000000F4A85C0FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000000000A4680BBF6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000000006417BB7F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
000000000000000000000000013C77B2EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
0000000000000000000000003772ADE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000F5FA8E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9EAEAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFB89A9AB8F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCBD7E4A4A7FBFFDFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCB8B4C0E0E4E8DCCFFFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFD99A5A1B00001D5C9BDBFFFFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFE7A86829000000002A6AA9E8FFFFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFF5B676370000000000003978B7F6FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFC4854506000000000000084786C4FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFD29353140000000000000000165494D4FFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFE0A16123000000000000000000002463A1E1FFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFEEAE6F300000000000000000000000003271B0EFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFCBD7E3E00000000000000000000000000013F7FBFFDFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFCB8B4C0E00000000000000000000000000000E4E8DCCFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFD99A5A1B000000000000000000000000000000001D5C9BDBFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFE7A868290000000000000000000000000000000000002A6AAAE8FFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFBC783800000000000000000000000000000000000000003979BEFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFB569434343434335000000000000000000003643434343436AB6FFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFD49E93939393935E0E0000000000000000106093939393939ED6FFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFEBE3E3E3E3AE5E0E00000000000000001060B0E3E3E3E3EBFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFEAE5E0E00000000000000001060B0FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFEAE5E0E00000000000000001060B0FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFEAE5E0E00000000000000001060B0FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFEAE5E0E00000000000000001060B0FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFEAE5E0E00000000000000001060B0FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFEAE5E0E00000000000000001060B0FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFEAE5E0E00000000000000001060B0FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFEAE5E0E00000000000000001060B0FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFEAE5E0E00000000000000001060B0FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFEAE5E0E00000000000000001060B0FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFEAE5E0E00000000000000001060B0FFFFFFFFFFFFFFFFFFFFF0A0500000000000000000000000
00000000000000000000000D5CA6C8C8C8C8C8C8C8C8C8C8C8C8AE5E0E00000000000000001060B0C8C8C8C8C8C8C8C8C8C8C89A4C0000000000000000000000
000000000000000000000000356C787878787878787878787878785A0D00000000000000000E5C78787878787878787878787864290000000000000000000000
0000000000000000000000000022282828282828282828282828282000000000000000000000202828282828282828282828281E000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000122B313737373737373737373737352F250600000000000000000000000000000000000000000000
000000000000000000000000000000000000000000001D3C5C7B818787878787878787878787857F6E5030110000000000000000000000000000000000000000
000000000000000000000000000000000000000011466686A5C6D1D7D7D7D7D7D7D7D7D7D7D7D5CFB9997A5B3500000000000000000000000000000000000000
00000000000000000000000000000000000000114A82B1D0EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4C5A66D35000000000000000000000000000000000000
000000000000000000000000000000000000114A82BBF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEA66D350000000000000000000000000000000000
0000000000000000000000000000000000034982BBF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEA66D3000000000000000000000000000000000
0000000000000000000000000000000000226AB5F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE994F06000000000000000000000000000000
0000000000000000000000000000000000418BD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB96D25000000000000000000000000000000
000000000000000000000000000000001760AAF4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD88F45000000000000000000000000000000
000000000000000000000000000000003380C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8AD63150000000000000000000000000000
000000000000000000000000000000003989D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B0000000000000000000000000000
000000000000000000000000000000003F8FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC171210000000000000000000000000000
000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC272220000000000000000000000000000
000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC272220000000000000000000000000000
000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC272220000000000000000000000000000
000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC272220000000000000000000000000000
000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC272220000000000000000000000000000
000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC272220000000000000000000000000000
000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC272220000000000000000000000000000
000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC272220000000000000000000000000000
000000000000000000000000000008174090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC272221500000000000000000000000000
000000000000000000000000013251676A90E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC2726A6245230000000000000000000000
0000000000000000000000003A729DB7BAC2F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDBABAAE915E2400000000000000000000
0000000000000000000000236BABE4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8CF955108000000000000000000
0000000000000000000000428DD6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA6F26000000000000000000
00000000000000000000004D9DEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF7F2F000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004E9EEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD08030000000000000000000
00000000000000000000004793DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC07529000000000000000000
00000000000000000000002971B5EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD89F560D000000000000000000
000000000000000000000007437BA8C5C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7BB9E672E00000000000000000000
0000000000000000000000000B3F5B757777777777777777777777777777777777777777777777777777777777777777777770522D0000000000000000000000
00000000000000000000000000001425272727272727272727272727272727272727272727272727272727272727272727272208000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000900000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000028592D000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000037876A370300000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787A874400E000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7B17D4A170000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7EFBB87542100000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFF8C5915F2A000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFFFFFCF9B68340100000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFFFFFFFD9A5723E0B000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFFFFFFFFFE2AF7B48140000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFFFFFFFFFFFECB985521E00000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFFFFFFFFFFFFFF6C38F5C28000000000000000000000000000000000000
000000001A40404040404040404040404040404040404040404040404040404087D7FFFFFFFFFFFFFFFFFFCC9965320000000000000000000000000000000000
000000003787909090909090909090909090909090909090909090909090909097DBFFFFFFFFFFFFFFFFFFFFD6A36F3C08000000000000000000000000000000
000000003787D7E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E1FFFFFFFFFFFFFFFFFFFFFFFFE0AC7946110000000000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B6834F1C00000000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C08D5925000000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDCA96632F0000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4A06C3906000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDAA7843100000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7B4804C1A00000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BE8B5623000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBC794602C0000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD19E6A3601000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBA76E1E000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFAB78440C000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5A26E3B0700000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC986431000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6C28F5B2700000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB985511E0000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3AF7B4814000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD9A6723E0B00000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD09C6835010000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC6935F2B00000000000000000000000000
000000003787D7FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFBFFFFFFFFFFFFFFFFFFFFFFFFF1BD8955220000000000000000000000000000
000000003787AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADE6FFFFFFFFFFFFFFFFFFFFE7B37F4C18000000000000000000000000000000
000000002D5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A87D7FFFFFFFFFFFFFFFFFFDDAA76420F00000000000000000000000000000000
00000000000A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A3787D7FFFFFFFFFFFFFFFFD4A06C39050000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFFFFFFFFFFFFECA96632F00000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFFFFFFFFFF4C18D59260000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFFFFFFFEBB783501C000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFFFFFE1AE7A471200000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFFFD8A4703D090000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7FFCE9A673300000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787D7C5915E290000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003787BB875320000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000037877E4A1600000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003471400E0000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000042104000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000F1F2F32353735322C1C0C0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000152D3D4D5D6D7E82858785827B6A5A4A3A2A0F00000000000000000000000000000000000000000000
000000000000000000000000000000000000000001213F5D7C8C9DADBCCCD2D5D7D5D2C9B9AA99897859391A0000000000000000000000000000000000000000
000000000000000000000000000000000000072C4B698AA9C8DAEAFBFFFFFFFFFFFFFFFFFFF7E7D7C3A383624526000000000000000000000000000000000000
00000000000000000000000000000000001C497496B4D4F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECCDAE906D401400000000000000000000000000000000
00000000000000000000000000000005325F8CB8DEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D8B0835529000000000000000000000000000000
00000000000000000000000000001A4874A1CEFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2C4986B3E1000000000000000000000000000
000000000000000000000000001C558BB7E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAAE814A11000000000000000000000000
0000000000000000000000001C558DC6F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0BB834A110000000000000000000000
00000000000000000000001C558DC6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3BB834A1100000000000000000000
000000000000000000001A558DC6FFFFFFFFFFFFFFFFFFFFFFFFFFEFDFCFC0BBB9BCC2D2E2F2FFFFFFFFFFFFFFFFFFFFFFFFF3BB834A0E000000000000000000
00000000000000000005488BC6FFFFFFFFFFFFFFFFFFFFFFF8D9BAA19180706B696C738394A5C1E0FFFFFFFFFFFFFFFFFFFFFFF3BB7C3B000000000000000000
0000000000000000003274B7F9FFFFFFFFFFFFFFFFFFFED2AF916F514232221B191C253545577697B5DBFFFFFFFFFFFFFFFFFFFFECAA67250000000000000000
00000000000000001C5FA1E4FFFFFFFFFFFFFFFFFFE9BC90634627070000000000000000000D2D4C6B99C4F2FFFFFFFFFFFFFFFFFFD694510F00000000000000
0000000000000007498CCEFFFFFFFFFFFFFFFFFFD9A77A4D20000000000000000000000000000002295583B0E4FFFFFFFFFFFFFFFFFFC17E3C00000000000000
000000000000002C74B8FBFFFFFFFFFFFFFFFFD9A067380B0000000000000000000000000000000000144073ABE4FFFFFFFFFFFFFFFFEDAC661D000000000000
000000000000014B96DEFFFFFFFFFFFFFFFFD9A0672F0000000000000000000000000000000000000000023A73ABE4FFFFFFFFFFFFFFFFD0863B000000000000
0000000000002169B4FEFFFFFFFFFFFFFFE9A7672F00000000000000000000000000000000000000000000023A73B4F6FFFFFFFFFFFFFFEFA55B120000000000
0000000000003F8AD3FFFFFFFFFFFFFFFEBC7A38000000000000000000000000000000000000000000000000024587C9FFFFFFFFFFFFFFFFC57B310000000000
0000000000155DA9F3FFFFFFFFFFFFFFD2904D0B00000000000000000000000000000000000000000000000000185A9DDFFFFFFFFFFFFFFFE499500700000000
00000000002D7CC8FFFFFFFFFFFFFFF8AF63200000000000000000000000000000000000000000000000000000002E73BDFFFFFFFFFFFFFFFFB96C1E00000000
00000000003D8CDAFFFFFFFFFFFFFFD991461F36363636363636363636363636363636363636363636363636363514549EE8FFFFFFFFFFFFFFCB7C2E00000000
00000000004D9DEAFFFFFFFFFFFFFFBA6F274A8686868686868686868686868686868686868686868686868686853A357FC9FFFFFFFFFFFFFFDB8D3E00000000
000000000F5DADFBFFFFFFFFFFFFEFA151082462A1D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D49555171661B1FFFFFFFFFFFFFFEB9D4E00000000
000000001F6DBCFFFFFFFFFFFFFFDF91420000316FAEEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0A16224000351A1EFFFFFFFFFFFFFFBAD5D10000000
000000002F7ECDFFFFFFFFFFFFFFCF80320000003D7BBBF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDAE6F310000004290DEFFFFFFFFFFFFFFBD6E1F000000
000000003282D2FFFFFFFFFFFFFFC070220000000C4A88C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFABB7C3D000000003280CFFFFFFFFFFFFFFFC27222000000
000000003585D5FFFFFFFFFFFFFFBB6B1B00000000195796D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8894A0C000000002B7CCBFFFFFFFFFFFFFFC57525000000
000000003787D7FFFFFFFFFFFFFFB9691900000000002564A2E1FFFFFFFFFFFFFFFFFFFFFFFFFFD59657190000000000297AC9FFFFFFFFFFFFFFC77727000000
000000003584D5FFFFFFFFFFFFFFBC6C1C0000000000003271AFEEFFFFFFFFFFFFFFFFFFFFFFE1A364250000000000002C7DCCFFFFFFFFFFFFFFC47424000000
000000003281D2FFFFFFFFFFFFFFC27325000000000000013E7DBDFBFFFFFFFFFFFFFFFFFFEFB07132000000000000003583D2FFFFFFFFFFFFFFC27222000000
000000002C7BC9FFFFFFFFFFFFFFD28335000000000000000E4C8BC9FFFFFFFFFFFFFFFFFBBD7E3F01000000000000004594E2FFFFFFFFFFFFFFBA6A1C000000
000000001C6ABAFFFFFFFFFFFFFFE2944500000000000000001A5897D6FFFFFFFFFFFFFFC98B4C0E000000000000000655A4F2FFFFFFFFFFFFF8AA5A0C000000
000000000C5AAAF7FFFFFFFFFFFFF2A5570D00000000000000002665A4E3FFFFFFFFFFD798591A00000000000000001C65B4FFFFFFFFFFFFFFE89A4A00000000
00000000004A99E7FFFFFFFFFFFFFFC1772D0000000000000000003472B1F0FFFFFFE3A466260000000000000000003B85CFFFFFFFFFFFFFFFD7893B00000000
00000000003A89D7FFFFFFFFFFFFFFE0974C02000000000000000002407FBEFCFFF0B17234000000000000000000115BA5EEFFFFFFFFFFFFFFC7792B00000000
00000000002A78C3FFFFFFFFFFFFFFFFB56B290000000000000000000E4D8CCBFDBE7F4002000000000000000000377AC5FFFFFFFFFFFFFFFDB3681A00000000
00000000000F59A3ECFFFFFFFFFFFFFFDB9955140000000000000000001C5A99CB8C4D0F0000000000000000002163A6E8FFFFFFFFFFFFFFDD954A0000000000
0000000000003983CDFFFFFFFFFFFFFFFFC48340020000000000000000002867995A1C0000000000000000000D4D90D2FFFFFFFFFFFFFFFFBE742B0000000000
0000000000001A62AEF8FFFFFFFFFFFFFFF2B0733A02000000000000000000355B280000000000000000000D467EBEFFFFFFFFFFFFFFFFE99F550B0000000000
000000000000004590D8FFFFFFFFFFFFFFFFE4AB733A020000000000000000000B0000000000000000000D467EB7EFFFFFFFFFFFFFFFFFC98036000000000000
00000000000000266DB0F2FFFFFFFFFFFFFFFFE4AB7345180000000000000000000000000000000000214E7EB7EFFFFFFFFFFFFFFFFFE5A26017000000000000
00000000000000004083C4FFFFFFFFFFFFFFFFFFE4B4875A2E0A0000000000000000000000000011376390BDEFFFFFFFFFFFFFFFFFFAB8753300000000000000
0000000000000000145598DBFFFFFFFFFFFFFFFFFFF6C99D735435160300000000000000061C3B5B7AA6D2FFFFFFFFFFFFFFFFFFFFCD8B490600000000000000
000000000000000000296BAEF0FFFFFFFFFFFFFFFFFFFFDFBD9E7F615142322B292C3545546585A5C5E8FFFFFFFFFFFFFFFFFFFFE3A05E1B0000000000000000
000000000000000000003E81BBF3FFFFFFFFFFFFFFFFFFFFFFE8C9B1A190807B797C8394A4B4CFEEFFFFFFFFFFFFFFFFFFFFFFE8B07431000000000000000000
00000000000000000000104A83BBF3FFFFFFFFFFFFFFFFFFFFFFFFFFEFDFCFCBC9CCD2E2F2FFFFFFFFFFFFFFFFFFFFFFFFFFE8B0773E04000000000000000000
0000000000000000000000114A83BBF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8B0773E0600000000000000000000
000000000000000000000000114A83BBECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE3B0773E060000000000000000000000
00000000000000000000000000114A7CAAD6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFACDA0743E06000000000000000000000000
00000000000000000000000000000E3B6794C1EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5B88B5E310400000000000000000000000000
0000000000000000000000000000000025517EACD0EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9C9A275491B000000000000000000000000000000
00000000000000000000000000000000000F3C6686A5C5E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDDBEA18060330600000000000000000000000000000000
000000000000000000000000000000000000001D3B5B7B9CB9CBDBEBFBFFFFFFFFFFFFFFF8E8D7C7B39574553616000000000000000000000000000000000000
0000000000000000000000000000000000000000001231506C7C8D9DADBDC2C5C7C4C2BAAA9A8979684A2B0B0000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000071E2E3E4E5D6E72757774726A5A4A3B2B1A0000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000101F22252724221C0C000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005080A0C000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000001B3A55585A5C4B3806000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000C426584A4A8AAAC997020000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000E467DAECEEDF8E5AD743C03000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000457FB7EEFFFFE5AD743C0300000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000286CB3F0FFFFE5AD743C030000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000094F95DBFFFFE5AD743C03000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000226EBCFFFFFFC7773C0300000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000003885D2FFFFFFC777270000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000014E9CE8FFFFFFC777270000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000A59A9F9FFFFFFC777270000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000001160B0FFFFFFFFC77727000000000000000000000000192E090000
000000000000000000000000000000000000000000000000000000000000000000000000001767B7FFFFFFFFC7772700000000000000000000001A527A2C0000
000000000000000000000000000000000000000000000000000000000000000000000000001161B1FFFFFFFFC77727000000000000000000001A528B8D3F0000
000000000000000000000000000000000000000000000000000000000000000000000000000959A9F9FFFFFFC777270000000000000000001A528BC39B4B0000
00000000000000000000000000000000000000000000000000000000000000000000000000004E9CE8FFFFFFC7772700000000000000001A528BC3E999490000
000000000000000000000000000000000000000000000000000000000000000000000000001A5290DBFFFFFFC777373737373737373737528BC3FCE797470000
0000000000000000000000000000000000000000000000000000000000000000000000001A538BC3FCFFFFFFC8878787878787878787878BC3FCFFD890430000
00000000000000000000000000000000000000000000000000000000000000000000001A538BC4FCFFFFFFFFF1D7D7D7D7D7D7D7D7D7D7D8FCFFFFB96E250000
000000000000000000000000000000000000000000000000000000000000000000001A538BC4FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD79B50060000
0000000000000000000000000000000000000000000000000000000000000000001B538BC4FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAA0662C000000
00000000000000000000000000000000000000000000000000000000000000001B538CC4FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECC49D682F00000000
000000000000000000000000000000000000000000000000000000000000001B548CC5FDFFFFFFFFFFFFFFFFFFE6CADEEAF2F5EFE8D5BEA67F562F0000000000
0000000000000000000000000000000000000000000000000000000000001B548CC5FDFFFFFFFFFFFFFFFFFFE5AD7A919AA2A69F9888715B3912000000000000
00000000000000000000000000000000000000000000000000000000001B548CC5FDFFFFFFFFFFFFFFFFFFE5AD743C414A52564F483A240E0000000000000000
000000000000000000000000000000000000000000000000000000001C548DC5FDFFFFFFFFFFFFFFFFFFE5AD743C030000030600000000000000000000000000
0000000000000000000000000000000000000000000000000000001B548DC5FEFFFFFFFFFFFFFFFFFFE5AD743C03000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000001B548DC5FEFFFFFFFFFFFFFFFFFFE5AD743C0300000000000000000000000000000000000000
000000000000000000000000000000000000000000000000001B548CC5FEFFFFFFFFFFFFFFFFFFE5AD743C030000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000001B548CC5FDFFFFFFFFFFFFFFFFFFE5AD743C03000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000001B538CC5FDFFFFFFFFFFFFFFFFFFE5AD743C0300000000000000000000000000000000000000000000
000000000000000000000000000000000000000000001A538CC5FDFFFFFFFFFFFFFFFFFFE5AD743C030000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001A538BC4FDFFFFFFFFFFFFFFFFFFE5AD743C03000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000001A538BC4FCFFFFFFFFFFFFFFFFFFE5AD743C0300000000000000000000000000000000000000000000000000
000000000000000000000000000000090703001A538BC4FCFFFFFFFFFFFFFFFFFFE5AD743C030000000000000000000000000000000000000000000000000000
0000000000000000000000142F3D4B5957534D528BC4FCFFFFFFFFFFFFFFFFFFE5AD743C03000000000000000000000000000000000000000000000000000000
00000000000000000023415E7C8C9BA9A7A39B90C3FCFFFFFFFFFFFFFFFFFFE5AD743C0300000000000000000000000000000000000000000000000000000000
00000000000000113D6A8DA9C6DBE9F7F7F3E8DBFCFFFFFFFFFFFFFFFFFFE5AD743C030000000000000000000000000000000000000000000000000000000000
000000000000255380AED6F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5AD743C03000000000000000000000000000000000000000000000000000000000000
00000000001F5B96C3EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5AD743C0300000000000000000000000000000000000000000000000000000000000000
00000000195490CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5AD743C030000000000000000000000000000000000000000000000000000000000000000
00000000438AC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5AD743C03000000000000000000000000000000000000000000000000000000000000000000
0000001961ADF6FFFFE5C7C7C7C7C7C7C7C7C7C8F1FFFFFFFFE6AD743C0300000000000000000000000000000000000000000000000000000000000000000000
0000003982CCFFFFE5AD77777777777777777787D7FFFFFFFFCA7A3C030000000000000000000000000000000000000000000000000000000000000000000000
0000004F9FECFFE5AD743C272727272727273787D7FFFFFFFFDD8F40000000000000000000000000000000000000000000000000000000000000000000000000
00000353A3F3E5AD743C03000000000000003787D7FFFFFFFFE49444000000000000000000000000000000000000000000000000000000000000000000000000
00000757A7E5AD743C0300000000000000003787D7FFFFFFFFE79747000000000000000000000000000000000000000000000000000000000000000000000000
00000B5BABAD743C030000000000000000003787D7FFFFFFFFE59646000000000000000000000000000000000000000000000000000000000000000000000000
0000004A99743C03000000000000000000003787D7FFFFFFFFD68839000000000000000000000000000000000000000000000000000000000000000000000000
00000038703C0300000000000000000000003787D7FFFFFFFFC97A2B000000000000000000000000000000000000000000000000000000000000000000000000
0000000620030000000000000000000000003787D7FFFFFFFCB1651C000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000003787D7FFFFFFDF954900000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000001A528BD8FFFFFFC2762C00000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000001A528BC3FCFFFFD997530F00000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000001A528BC3FCFFFFEFAE6A280000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000001A528BC3FCFFFFEBB6803D000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000001A528BC3FCFFFFE0AF7A440F000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000019528BC3E6E2D7B797733E0900000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000002E7A8D9A96928E6C4E2E020000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000092C3F4A46423E240500000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000437551A000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000E41747727000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000174B7EB27727000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000215488BCC77727000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000002B5E92C5F9C77727000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000135689CCFFFFFC77727000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000B3E72A5D9FFFFFFC77727000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000014487CAFE3FFFFFFFFC77727000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001F5286B9EDFFFFFFFFFFC77727000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000285C8FC3F6FFFFFFFFFFFFC77727000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000326699CDFFFFFFFFFFFFFFFFC77727000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000093C6FA3D7FFFFFFFFFFFFFFFFFFC77740404040404040404040404040404040404040404040404040403E0E000000
00000000000000000000000000000000124679ADE0FFFFFFFFFFFFFFFFFFFFCB9090909090909090909090909090909090909090909090909090907727000000
0000000000000000000000000000001C4F83B7EAFFFFFFFFFFFFFFFFFFFFFFFDE0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0C77727000000
000000000000000000000000000026598DC1F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
00000000000000000000000000306397CAFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000000000000000000006396DA1D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
00000000000000000000104377AADEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
0000000000000000001A4D80B4E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000000000000024578BBEF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000000000002D6094C8FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000000003376A9ED2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000000D4174A8DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000002E7EB2E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
00000000194E82B6E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
0000000000114479ACDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000000000083B6FA2D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
0000000000000000316599CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000000000000000285C8FC3F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000000000000000001F5286B9EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000000000000000000015487CB0E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
0000000000000000000000000C3F73A6DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000000000000000000000000235699DD0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
0000000000000000000000000000002C5F93C7FAFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAC77727000000
00000000000000000000000000000000235687BEF1FFFFFFFFFFFFFFFFFFFFD8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA7727000000
0000000000000000000000000000000000194C80B4E8FFFFFFFFFFFFFFFFFFC7775A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A571F000000
0000000000000000000000000000000000000F4378AADEFFFFFFFFFFFFFFFFC777270A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0900000000
00000000000000000000000000000000000000063A6DA1D5FFFFFFFFFFFFFFC77727000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000306397CBFEFFFFFFFFFFC77727000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000265A8EC2F5FFFFFFFFC77727000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000001D5185B8ECFFFFFFC77727000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000013477AAEE2FFFFC77727000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000A3D71A5D9FFC77727000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000034679BCFC77727000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000002A5E92C57727000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000002154877727000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000174B6A24000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000D1F00000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000001E31373737311D00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000225B80878787805A21000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000195B94CCD7D7D7CB925A170000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000C00002A79C9FFFFFFFFFFC7772800000D0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000C2D475C26002F7FCFFFFFFFFFFFCE7E2E00275D472C0B0000000000000000000000000000000000000000
000000000000000000000000000000000000000A2F5377948131002F7FCFFFFFFFFFFFCE7E2E0033839376522E0A000000000000000000000000000000000000
0000000000000000000000000000000000002D52769ABFD18131002F7FCFFFFFFFFFFFCE7E2E003383D3BE9974512D0000000000000000000000000000000000
0000000000000000000000000000000011406F99BDE2FFD18131002F7FCFFFFFFFFFFFCE7E2E003383D3FFE0BC996E3F10000000000000000000000000000000
000000000000000000000000000000235281B0DFFFFFFFD18131002F7FCFFFFFFFFFFFCE7E2E003383D3FFFFFFDEAE8051220000000000000000000000000000
00000000000000000000000000002C6493C3F1FFFFFFFFD18131002F7FCFFFFFFFFFFFCE7E2E003383D3FFFFFFFFF0C292622A00000000000000000000000000
000000000000000000000000002C649DD4FFFFFFFFFFFFD18131002F7FCFFFFFFFFFFFCE7E2E003383D3FFFFFFFFFFFFD39C632B000000000000000000000000
0000000000000000000000002D659DD6FFFFFFFFFFFFFFD18131002F7FCFFFFFFFFFFFCE7E2E003383D3FFFFFFFFFFFFFFD49C642C0000000000000000000000
000000000000000000000023639ED6FFFFFFFFFFFFFFFFD18131002F7FCFFFFFFFFFFFCE7E2E003383D3FFFFFFFFFFFFFFFFD59D612100000000000000000000
00000000000000000000125293D3FFFFFFFFFFFFFFFFFFD18131002F7FCFFFFFFFFFFFCE7E2E003383D3FFFFFFFFFFFFFFFFFFD2925111000000000000000000
000000000000000000014182C3FFFFFFFFFFFFFFFFFFF3CA8131002F7FCFFFFFFFFFFFCE7E2E003383CBF4FFFFFFFFFFFFFFFFFFC18140000000000000000000
0000000000000000002D71B2F1FFFFFFFFFFFFFFFFE2AE855B23002F7FCFFFFFFFFFFFCE7E2E00255C86AFE3FFFFFFFFFFFFFFFFF1B0702C0000000000000000
00000000000000000B5299E0FFFFFFFFFFFFFFFFDFA871401700002F7FCFFFFFFFFFFFCE7E2E0000184172A9E1FFFFFFFFFFFFFFFFDF99510A00000000000000
00000000000000003077BEFFFFFFFFFFFFFFFFDDA66E37000000002F7FCFFFFFFFFFFFCE7E2E000000013870A7DEFFFFFFFFFFFFFFFFBC762F00000000000000
000000000000000E559DE3FFFFFFFFFFFFFFDEA36C3500000000002F7FCFFFFFFFFFFFCE7E2E0000000000366DA4E0FFFFFFFFFFFFFFE29B530D000000000000
000000000000002D78C2FFFFFFFFFFFFFFF9B46F320000000000002F7FCFFFFFFFFFFFCE7E2E0000000000003371B6FAFFFFFFFFFFFFFFC0772B000000000000
000000000000004693DEFFFFFFFFFFFFFFD08B46020000000000002F7FCFFFFFFFFFFFCE7E2E00000000000003488DD1FFFFFFFFFFFFFFDC9144000000000000
000000000000145FACF7FFFFFFFFFFFFEAA7611D000000000000002F7FCFFFFFFFFFFFCE7E2E000000000000001E63A9ECFFFFFFFFFFFFF6AA5D120000000000
0000000000002D79C5FFFFFFFFFFFFFFC17C3800000000000000002F7FCFFFFFFFFFFFCE7E2E0000000000000000397DC3FFFFFFFFFFFFFFC3772B0000000000
0000000000004190DFFFFFFFFFFFFFF7AB5C1000000000000000002F7FCFFFFFFFFFFFCE7E2E0000000000000000115EABF8FFFFFFFFFFFFDD8E3F0000000000
0000000000004D9DECFFFFFFFFFFFFE195470000000000000000002F7FCFFFFFFFFFFFCE7E2E0000000000000000004996E3FFFFFFFFFFFFEA9B4B0000000000
00000000000C5AAAF9FFFFFFFFFFFFCB7E310000000000000000002D7DCCFFFFFFFFFFCB7C2C0000000000000000003380CDFFFFFFFFFFFFF7A8580A00000000
00000000001967B7FFFFFFFFFFFFFFB5681B000000000000000000226CA8E0F4F4F4DFA66B210000000000000000001D69B7FFFFFFFFFFFFFFB5661600000000
00000000002373C3FFFFFFFFFFFFF7A7570700000000000000000000366F9CA4A4A49C6E35000000000000000000000858A8F8FFFFFFFFFFFFC1712100000000
00000000002575C5FFFFFFFFFFFFF3A353030000000000000000000000364C5454544C3400000000000000000000000555A5F5FFFFFFFFFFFFC3732300000000
00000000002777C7FFFFFFFFFFFFEF9F4F0000000000000000000000000000040404000000000000000000000000000151A1F1FFFFFFFFFFFFC6762600000000
00000000002575C5FFFFFFFFFFFFF2A2520200000000000000000000000000000000000000000000000000000000000353A3F3FFFFFFFFFFFFC3732300000000
00000000002272C2FFFFFFFFFFFFF6A8580B00000000000000000000000000000000000000000000000000000000000C5AAAF8FFFFFFFFFFFFC0702000000000
00000000001D6BBAFFFFFFFFFFFFFFB8691B00000000000000000000000000000000000000000000000000000000001C6BBAFFFFFFFFFFFFFFB8691B00000000
00000000000D5BABF8FFFFFFFFFFFFC8792B00000000000000000000000000000000000000000000000000000000002D7CC9FFFFFFFFFFFFF6A9590B00000000
0000000000004B9AE8FFFFFFFFFFFFD88B3F0000000000000000000000000000000000000000000000000000000000428CDAFFFFFFFFFFFFE698490000000000
0000000000003B8AD8FFFFFFFFFFFFF3A95D150000000000000000000000000000000000000000000000000000001761ABF5FFFFFFFFFFFFD688390000000000
0000000000002B7AC8FFFFFFFFFFFFFFC87E350000000000000000000000000000000000000000000000000000003680CAFFFFFFFFFFFFFFC677290000000000
0000000000001A65B0FAFFFFFFFFFFFFE89E591700000000000000000000000000000000000000000000000000185A9FE9FFFFFFFFFFFFF8AE65190000000000
000000000000004792DBFFFFFFFFFFFFFFC88644010000000000000000000000000000000000000000000000034588CAFFFFFFFFFFFFFFD99145000000000000
000000000000002871BBFFFFFFFFFFFFFFF5B3703000000000000000000000000000000000000000000000003072B4F7FFFFFFFFFFFFFFBA6F26000000000000
0000000000000008529EE6FFFFFFFFFFFFFFE0A16830000000000000000000000000000000000000000000306AA1E2FFFFFFFFFFFFFFE59A5107000000000000
0000000000000000347DC6FFFFFFFFFFFFFFFFD9A1683001000000000000000000000000000000000002306AA1DBFFFFFFFFFFFFFFFFC57C3200000000000000
0000000000000000135699DBFFFFFFFFFFFFFFFFD9A1704417000000000000000000000000000000184572A1DBFFFFFFFFFFFFFFFFDA98541200000000000000
0000000000000000002A6CAEF1FFFFFFFFFFFFFFFFE0B386593515000000000000000000000016355A87B4E1FFFFFFFFFFFFFFFFEFAE6A280000000000000000
000000000000000000003F82C5FFFFFFFFFFFFFFFFFFF5C89E7F5D3F2B1B0A0200020B1B2B405E7F9EC9F7FFFFFFFFFFFFFFFFFFC3803D000000000000000000
00000000000000000000135498D6FFFFFFFFFFFFFFFFFFFFE8C8A98B796958524F5259697A8BAAC9E8FFFFFFFFFFFFFFFFFFFFD4965311000000000000000000
000000000000000000000028659DD6FFFFFFFFFFFFFFFFFFFFFFF3D8C8B8A8A29FA2A9B8C8D8F4FFFFFFFFFFFFFFFFFFFFFFD49C632700000000000000000000
0000000000000000000000002C659DD6FFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F2EFF2F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFD49C632B0000000000000000000000
000000000000000000000000002C659DD6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD49C632B000000000000000000000000
00000000000000000000000000002C6598C5F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C397632B00000000000000000000000000
000000000000000000000000000000285482AEDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAAE8153270000000000000000000000000000
00000000000000000000000000000000133F6C99C6E6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6C4986B3E12000000000000000000000000000000
0000000000000000000000000000000000002A567E9EBBDBFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9DABB9D7D55290000000000000000000000000000000000
000000000000000000000000000000000000001334527192B0C8D8E8F8FFFFFFFFFFFFFFF8E8D8C8B09270523312000000000000000000000000000000000000
000000000000000000000000000000000000000000082847657A8A9AABBAC2C5C7C5C2BAAA9A8979664627080000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000001A2B3B4B5B6B72757775726A5A4B3B2B1A0000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000D1D22252725221C0C000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000312223033353734312C1C0B00000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000011F32425160708083858784817B6A5949392813000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000E2D4B688191A0B0BFCED3D5D7D4D1C9B9A99887765D3D1F00000000000000000000000000000000000000
000000000000000000000000000000000000001C3A597696B4CFDFEEFEFFFFFFFFFFFFFFFFFFF7E6D5C6A7886848290A00000000000000000000000000000000
000000000000000000000000000000000008346084A3C2DFFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0D1B294725326000000000000000000001000000000
000000000000000000000000000000001F4B77A3CFEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCDCBC95683B0E0000000000000D3F5D1F000000
00000000000000000000000000000837628FBAE6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD7AB7D512400000000174A7D7727000000
000000000000000000000000000A4279A7D1FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECC09366390300225488BB7727000000
0000000000000000000000000C447CB3E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD5A9743C2C5F92C5C77727000000
00000000000000000000000E477EB5EDFFFFFFFFFFFFFFFFFFFFFFF8E8D9CABCB9B7BABFCFE0F0FFFFFFFFFFFFFFFFFFFFFFFFE5AD786A9DD0FFC77727000000
000000000000000000000C4880B8EFFFFFFFFFFFFFFFFFFFFFE8C9AC9A8B7B6C69676A708192A3B8D7F6FFFFFFFFFFFFFFFFFFFFE7B0A9DBFFFFC77727000000
000000000000000000003B7CB9F1FFFFFFFFFFFFFFFFFFE0BCA07F5F4B3C2C1C19171A223343536D8EACCBF0FFFFFFFFFFFFFFFFFFF5EFFFFFFFC77727000000
0000000000000000002668AAEBFFFFFFFFFFFFFFFFF4C99D71533517000000000000000000000524436081AED9FFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
0000000000000000135496D8FFFFFFFFFFFFFFFFE0B186592E09000000000000000000000000000000183E6A97C3EFFFFFFFFFFFFFFFFFFFFFFFC77727000000
00000000000000004182C4FFFFFFFFFFFFFFFFDDA66E431700000000000000000000000000000000000000285380B3E9FFFFFFFFFFFFFFFFFFFFC77727000000
00000000000000236BB1F1FFFFFFFFFFFFFFDBA46C3500000000000000000000000000000000000000000000114278AFF7FFFFFFFFFFFFFFFFFFC77727000000
00000000000000448ED7FFFFFFFFFFFFFFE3A16A3300000000000000000000000000000000000000000000001C4E82B5FCFFFFFFFFFFFFFFFFFFC77727000000
0000000000001A64ADF7FFFFFFFFFFFFF6B57332000000000000000000000000000000000000000000000026598CBFF2FFFFFFFFFFFFFFFFFFFFC77727000000
0000000000003A84CDFFFFFFFFFFFFFFC887450300000000000000000000000000000000000000000000316497CAFDFFFFFFFFFFFFFFFFFFFFFFC77727000000
0000000000125BA4EEFFFFFFFFFFFFE39B5817000000000000000000000000000000000000000000093B6FA1D5FFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
00000000002A78C6FFFFFFFFFFFFFFC37930000000000000000000000000000000000000000000003979A4A9AFB4BAC0C5CBD0D6DBE1E6ECF1F7C77727000000
00000000003B89D8FFFFFFFFFFFFECA35910000000000000000000000000000000000000000000002D4E54595F646A70757B80868B91969CA1A7AC7727000000
00000000004B9AE8FFFFFFFFFFFFCB823900000000000000000000000000022029322D1200000000000004090F141A20252B30363B41464C51575C5D1F000000
000000000E5BABF9FFFFFFFFFFFFB8691B00000000000000000000000018446D7882785D421100000000000000000000000000000000000001070C1000000000
000000001F6DBBFFFFFFFFFFFFF6A8580A0000000000000000000000245A87B3C8D1C4A883480D00000000000000000000000000000000000000000000000000
000000002E7ECCFFFFFFFFFFFFE597480000000000000000000000054B93CAF6FFFFFFF3B97D4200000000000000000000000000000000000000000000000000
000000003282D2FFFFFFFFFFFFD6863800000000000000000000002B71B8FEFFFFFFFFFFEFAE5F12000000000000000000000000000000000000000000000000
000000003585D5FFFFFFFFFFFFD3823300000000000000000000003E8EDEFFFFFFFFFFFFFFC17426000000000000000000000000000000000000000000000000
000000003787D7FFFFFFFFFFFFD0803000000000000000000000003E8EDEFFFFFFFFFFFFFFD18334000000000000000000000000000000000000000000000000
000000003484D4FFFFFFFFFFFFD3833300000000000000000000003E8ED6FFFFFFFFFFFFFFBD6F22000000000000000000000000000000000000000000000000
000000003281D2FFFFFFFFFFFFD8893B00000000000000000000002369B0F7FFFFFFFFFFE4A95B0E000000000000000000000000000000000000000000000000
000000002C7AC9FFFFFFFFFFFFE89A4B000000000000000000000000448BBCE9FFFFFFE4AE733800000000000000000000000000000000000000000000000000
000000001B69B8FFFFFFFFFFFFF9AB5B0E00000000000000000000001B4D7AA6B8C2B59B783D0200000000000000000000000000000000000000000000000000
000000000A58A8F6FFFFFFFFFFFFBB6C1F0000000000000000000000000A375D6872694E33060000000000000000000000000000000000000000000000000000
00000000004897E5FFFFFFFFFFFFD2893F00000000000000000000000000001019221E0300000000000000000000000000001C0F000000000000000000000000
00000000003886D4FFFFFFFFFFFFF2A95E1600000000000000000000000000000000000000000000000000000000000000256859391A00000000000000000000
00000000002774BEFFFFFFFFFFFFFFC98036000000000000000000000000000000000000000000000000000000000000034A92A3836245260700000000000000
00000000000B55A0E8FFFFFFFFFFFFE9A462200000000000000000000000000000000000000000000000000000000000286DB6ECCDAE906F5132120000000000
000000000000357EC7FFFFFFFFFFFFFFD2904E0D000000000000000000000000000000000000000000000000000000215E99DBFFFFF8D9BA9C7C5C3C00000000
000000000000145BA7F0FFFFFFFFFFFFFFBE7C3C04000000000000000000000000000000000000000000000000001A5692CEFFFFFFFFFFFFE5C59B5306000000
000000000000003D87D0FFFFFFFFFFFFFFECAD783E070000000000000000000000000000000000000000000000124F8BC7FFFFFFFFFFFFFFFFC0783000000000
000000000000001D65A7E8FFFFFFFFFFFFFFE7AF78400D0000000000000000000000000000000000000000001A4784C0FCFFFFFFFFFFFFFFD996520D00000000
00000000000000003779BBFDFFFFFFFFFFFFFFE9B17C512400000000000000000000000000000000000009335E89B8F4FFFFFFFFFFFFFFF0AE6A270000000000
00000000000000000A4B8DCEFFFFFFFFFFFFFFFFEBBF94673B18000000000000000000000000000000224D77A2CDF8FFFFFFFFFFFFFFFFC4823E000000000000
0000000000000000001D5FA0E2FFFFFFFFFFFFFFFFFFD6AB806044260D0000000000000000061C32496591BBE6FFFFFFFFFFFFFFFFFFD1955513000000000000
000000000000000000003172AEE5FFFFFFFFFFFFFFFFFFEDCBAD8F6F5A4B3C2C29272B2F3C52687F96ACD4FEFFFFFFFFFFFFFFFFFFD89C602400000000000000
00000000000000000000033D74ACE3FFFFFFFFFFFFFFFFFFFFF7D8BAAA9B8B7C79777B7F89A0B6CCE2F9FFFFFFFFFFFFFFFFFFFFDFA3672B0000000000000000
0000000000000000000000033B72AAE1FFFFFFFFFFFFFFFFFFFFFFFFF8E9D9CCC9C7CBCFD6ECFFFFFFFFFFFFFFFFFFFFFFFFFFD6A16E32000000000000000000
000000000000000000000000013870A8DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD99653100000000000000000000
0000000000000000000000000000366C99C4F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9BF905C280000000000000000000000
0000000000000000000000000000002A5481AED8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD0A67B511F000000000000000000000000
00000000000000000000000000000000123E6996C0DEFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D6B68D62370C00000000000000000000000000
00000000000000000000000000000000000027527595B2D1EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBCFAE8E6A491E000000000000000000000000000000
000000000000000000000000000000000000000D2B496886A5BFCFDEEEFEFFFFFFFFFFFFFFFBEFE1CBB49F866543230200000000000000000000000000000000
000000000000000000000000000000000000000000001E3B5A718090A0B0BFC3C5C7C5C3B7ACA1957E68513B1C00000000000000000000000000000000000000
000000000000000000000000000000000000000000000000102232415160707375777573685C5145311B04000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000212202325272523190D0200000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000022A302C0500000000000000000000000000000000000000000000000000000000000F2F302500000000000000000000000000
000000000000000000000000073F728077440B000000000000000000000000000000000000000000000000000000174F7E806834000000000000000000000000
0000000000000000000000073F78B1D0B57C440B00000000000000000000000000000000000000000000000000174F88C0D0A56D340000000000000000000000
00000000000000000000073F78B1E9FFEEB57C440B0000000000000000000000000000000000000000000000174F88C0F9FFDEA56D3400000000000000000000
000000000000000000073F78B1E9FFFFFFEEB57C440B000000000000000000000000000000000000000000174F88C0F9FFFFFFDEA56D34000000000000000000
0000000000000000073F78B1E9FFFFFFFFFFEEB57C440B00000000000000000000000000000000000000174F88C0F9FFFFFFFFFFDEA56C340000000000000000
00000000000000073F78B1E9FFFFFFFFFFFFFFEEB57C440B0000000000000000000000000000000000174F88C0F9FFFFFFFFFFFFFFDEA56C3400000000000000
000000000000073F78B1E9FFFFFFFFFFFFFFFFFFEEB57C440B000000000000000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFDEA56C34000000000000
0000000000073F78B1E9FFFFFFFFFFFFFFFFFFFFFFEEB57C440B00000000000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFDEA56C340000000000
00000000023F78B1E9FFFFFFFFFFFFFFFFFFFFFFFFFFEEB57C440B0000000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFDEA56C3400000000
000000002A72B1E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEB57C440B000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDEA5651B000000
000000003080D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEB57C440B00000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC07020000000
000000002C77B5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEB57C440B0000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2A9681D000000
0000000005447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEB57C440B000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA713800000000
00000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEB57C440B00174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA71390000000000
0000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEB57C44174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA7139000000000000
000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEB57C4F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA713900000000000000
00000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEB587C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA71390000000000000000
0000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEED7F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA7139000000000000000000
000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA713800000000000000000000
00000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA71380000000000000000000000
0000000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA7138000000000000000000000000
000000000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA713800000000000000000000000000
00000000000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA71380000000000000000000000000000
0000000000000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA7138000000000000000000000000000000
000000000000000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA713800000000000000000000000000000000
00000000000000000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA71380000000000000000000000000000000000
0000000000000000000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA7138000000000000000000000000000000000000
00000000000000000000000000000000000000174F87D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77C440B000000000000000000000000000000000000
000000000000000000000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B0000000000000000000000000000000000
0000000000000000000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B00000000000000000000000000000000
00000000000000000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B000000000000000000000000000000
000000000000000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B0000000000000000000000000000
0000000000000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B00000000000000000000000000
00000000000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B000000000000000000000000
000000000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B0000000000000000000000
0000000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B00000000000000000000
00000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B000000000000000000
000000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2C7EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B0000000000000000
0000000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA7CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B00000000000000
00000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA71447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B000000000000
000000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA71390B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B0000000000
0000000000174F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA713900000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C440B00000000
000000000F4F88C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA7139000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB57C4201000000
000000002E7EC0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA71390000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB26E1F000000
000000003080D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA713900000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC07020000000
000000002568A5DEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA7139000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD29A5B16000000
0000000000346CA5DEFFFFFFFFFFFFFFFFFFFFFFFFFFE2AA71390000000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFD29A612800000000
000000000000346CA5DEFFFFFFFFFFFFFFFFFFFFFFE2AA713900000000000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFFFFFD29A61280000000000
00000000000000346CA5DEFFFFFFFFFFFFFFFFFFE2AA7139000000000000000000000000000000000B447CB5EEFFFFFFFFFFFFFFFFFFD29A6128000000000000
0000000000000000346CA5DEFFFFFFFFFFFFFFE2AA71390000000000000000000000000000000000000B447CB5EEFFFFFFFFFFFFFFD29A612800000000000000
000000000000000000346CA5DEFFFFFFFFFFE2AA713900000000000000000000000000000000000000000B447CB5EEFFFFFFFFFFD29A61280000000000000000
00000000000000000000346CA5DEFFFFFFE2AA7139000000000000000000000000000000000000000000000B447CB5EEFFFFFFD29A6128000000000000000000
0000000000000000000000346CA5DEFFE2AA71390000000000000000000000000000000000000000000000000B447CB5EEFFD29A612800000000000000000000
000000000000000000000000346CA5C0A9713900000000000000000000000000000000000000000000000000000B447CB3C09A61280000000000000000000000
000000000000000000000000003465706838000000000000000000000000000000000000000000000000000000000B426E705B28000000000000000000000000
00000000000000000000000000001B201D000000000000000000000000000000000000000000000000000000000000021F201600000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000213939240000000000000000000000000000000000000000000000000000000000000000000000000221231A00000000000000000000
0000000000000000002A618989642E000000000000000000000000000000000000000000000000000000000000000000000B426F735F2D000000000000000000
000000000000000029629BD2D59F672F00000000000000000000000000000000000000000000000000000000000000000C447CB2C39E662D0000000000000000
0000000000000029629BD3FFFFD8A068300000000000000000000000000000000000000000000000000000000000000C457DB5EDFFD79E652C00000000000000
00000000000029629AD3FFFFFFFFDAA16A32000000000000000000000000000000000000000000000000000000000E457EB6EEFFFFFFD69D652C000000000000
000000000028619AD3FFFFFFFFFFFFDBA36B3300000000000000000000000000000000000000000000000000000E477EB7EFFFFFFFFFFFD69D642B0000000000
000000001F5F9AD2FFFFFFFFFFFFFFFFDCA46D350000000000000000000000000000000000000000000000000F477FB8F0FFFFFFFFFFFFFFD59C632B00000000
000000003787CFFFFFFFFFFFFFFFFFFFFFDEA66E3600000000000000000000000000000000000000000000104780B8F0FFFFFFFFFFFFFFFFFFD59C5C17000000
000000003787D3FFFFFFFFFFFFFFFFFFFFFFDFA76F370000000000000000000000000000000000000000114981B8F1FFFFFFFFFFFFFFFFFFFFFFBF6F1F000000
0000000022629DD7FFFFFFFFFFFFFFFFFFFFFFE0A97139010000000000000000000000000000000000114A82BAF2FFFFFFFFFFFFFFFFFFFFFFEBB06C1E000000
00000000002C669FD8FFFFFFFFFFFFFFFFFFFFFFE2AA723A03000000000000000000000000000000124A83BBF3FFFFFFFFFFFFFFFFFFFFFFEAB2794000000000
0000000000002E67A0DAFFFFFFFFFFFFFFFFFFFFFFE3AB743C0300000000000000000000000000134B83BCF4FFFFFFFFFFFFFFFFFFFFFFEAB279410800000000
000000000000002F68A1DBFFFFFFFFFFFFFFFFFFFFFFE5AD743D050000000000000000000000144C84BCF5FFFFFFFFFFFFFFFFFFFFFFEAB17940080000000000
0000000000000000306AA3DDFFFFFFFFFFFFFFFFFFFFFFE5AE783E06000000000000000000154D85BDF5FFFFFFFFFFFFFFFFFFFFFFE9B1794008000000000000
000000000000000000326BA5DEFFFFFFFFFFFFFFFFFFFFFFE7AF78400800000000000000164E86BEF6FFFFFFFFFFFFFFFFFFFFFFE9B178400700000000000000
00000000000000000000336DA6DFFFFFFFFFFFFFFFFFFFFFFFE9B17941090000000000164F87BFF7FFFFFFFFFFFFFFFFFFFFFFE9B07840070000000000000000
0000000000000000000000356EA8E1FFFFFFFFFFFFFFFFFFFFFFEAB27A420A000000174F88C0F8FFFFFFFFFFFFFFFFFFFFFFE9B0783F07000000000000000000
0000000000000000000000003770A9E2FFFFFFFFFFFFFFFFFFFFFFEBB37B440C00185088C1F9FFFFFFFFFFFFFFFFFFFFFFE8B0773F0700000000000000000000
000000000000000000000000003871AAE4FFFFFFFFFFFFFFFFFFFFFFEDB57C451A5189C1F9FFFFFFFFFFFFFFFFFFFFFFE8B0773F060000000000000000000000
00000000000000000000000000003973ACE5FFFFFFFFFFFFFFFFFFFFFFEEB67E528BC2FAFFFFFFFFFFFFFFFFFFFFFFE8AF773E06000000000000000000000000
0000000000000000000000000000023B74ADE6FFFFFFFFFFFFFFFFFFFFFFEFB88FC3FCFFFFFFFFFFFFFFFFFFFFFFE7AF773E0600000000000000000000000000
000000000000000000000000000000033C77AFE8FFFFFFFFFFFFFFFFFFFFFFF3DFFCFFFFFFFFFFFFFFFFFFFFFFE7AF763E050000000000000000000000000000
00000000000000000000000000000000043E78B0E9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7AE763D05000000000000000000000000000000
0000000000000000000000000000000000063F79B2EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6AE763D0500000000000000000000000000000000
00000000000000000000000000000000000007417AB3ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5AE753D050000000000000000000000000000000000
0000000000000000000000000000000000000009427BB5EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5AD743D04000000000000000000000000000000000000
00000000000000000000000000000000000000000A437CB6EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5AD743C0300000000000000000000000000000000000000
0000000000000000000000000000000000000000000C457EB8F3FFFFFFFFFFFFFFFFFFFFFFFFFFE6AD743C030000000000000000000000000000000000000000
0000000000000000000000000000000000000000000019528FDFFFFFFFFFFFFFFFFFFFFFFFFFFFCF7F470D000000000000000000000000000000000000000000
00000000000000000000000000000000000000000017508AC3FCFFFFFFFFFFFFFFFFFFFFFFFFFFF1B87E450C0000000000000000000000000000000000000000
0000000000000000000000000000000000000000164F88C1FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFB67C440B00000000000000000000000000000000000000
00000000000000000000000000000000000000154E87C0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEB57B430A000000000000000000000000000000000000
000000000000000000000000000000000000134C86BFF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDB47A41080000000000000000000000000000000000
0000000000000000000000000000000000124B84BDF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECB379400700000000000000000000000000000000
00000000000000000000000000000000114A83BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBB1793F06000000000000000000000000000000
0000000000000000000000000000000F4882BBF4FFFFFFFFFFFFFFFFFFFFFFE6CFF0FFFFFFFFFFFFFFFFFFFFFFE9B0783E050000000000000000000000000000
00000000000000000000000000000E4780BAF3FFFFFFFFFFFFFFFFFFFFFFE5AC7FB7EEFFFFFFFFFFFFFFFFFFFFFFE8AF783D0300000000000000000000000000
000000000000000000000000000D467FB8F1FFFFFFFFFFFFFFFFFFFFFFE4AC74457CB4EBFFFFFFFFFFFFFFFFFFFFFFE7AE743C03000000000000000000000000
0000000000000000000000000B457EB7F0FFFFFFFFFFFFFFFFFFFFFFE3AB733B0C437AB2E9FFFFFFFFFFFFFFFFFFFFFFE5AD743A010000000000000000000000
00000000000000000000000A437CB6EFFFFFFFFFFFFFFFFFFFFFFFE2AA723A0200094078AFE6FFFFFFFFFFFFFFFFFFFFFFE5AB72390000000000000000000000
0000000000000000000009427BB4EEFFFFFFFFFFFFFFFFFFFFFFE2AA713901000000073E77ADE4FFFFFFFFFFFFFFFFFFFFFFE3AA713800000000000000000000
00000000000000000007417AB3ECFFFFFFFFFFFFFFFFFFFFFFE1A97138000000000000043C73AAE1FFFFFFFFFFFFFFFFFFFFFFE2A97037000000000000000000
0000000000000000063F78B2EBFFFFFFFFFFFFFFFFFFFFFFE0A870380000000000000000023970A8DFFFFFFFFFFFFFFFFFFFFFFFE1A86F360000000000000000
00000000000000053E77B0EAFFFFFFFFFFFFFFFFFFFFFFE0A76F370000000000000000000000376EA5DCFFFFFFFFFFFFFFFFFFFFFFE0A76E3400000000000000
000000000000033D76AFE8FFFFFFFFFFFFFFFFFFFFFFDFA76E3600000000000000000000000000346BA3DAFFFFFFFFFFFFFFFFFFFFFFDFA66C33000000000000
0000000000033B74AEE7FFFFFFFFFFFFFFFFFFFFFFDEA66E360000000000000000000000000000003169A0D7FFFFFFFFFFFFFFFFFFFFFFDEA46B320000000000
00000000003A74ADE5FFFFFFFFFFFFFFFFFFFFFFDEA56D3500000000000000000000000000000000002F669ED5FFFFFFFFFFFFFFFFFFFFFFDCA36A3000000000
00000000256CABE5FFFFFFFFFFFFFFFFFFFFFFDDA46C34000000000000000000000000000000000000002C649BD3FFFFFFFFFFFFFFFFFFFFFFDBA1621A000000
000000002B7CCBFFFFFFFFFFFFFFFFFFFFFFDCA46C330000000000000000000000000000000000000000002A6199D0FFFFFFFFFFFFFFFFFFFFFFBF6F1F000000
000000002974B4ECFFFFFFFFFFFFFFFFFFDBA36B330000000000000000000000000000000000000000000000285F96CEFFFFFFFFFFFFFFFFFFE7AB691E000000
0000000004437AB3EBFFFFFFFFFFFFFFDBA16A3200000000000000000000000000000000000000000000000000255C94CBFFFFFFFFFFFFFFEDB1763B00000000
00000000000A427AB2EAFFFFFFFFFFDAA16931000000000000000000000000000000000000000000000000000000235A91C9FFFFFFFFFFF1B77C400500000000
000000000000094179B1E9FFFFFFD9A16930000000000000000000000000000000000000000000000000000000000020578FC6FDFFFFF7BC81460A0000000000
00000000000000084079B0E8FFD8A06830000000000000000000000000000000000000000000000000000000000000001E558CC4FBFCC2864B10000000000000
0000000000000000073F78AEC0A0672F0000000000000000000000000000000000000000000000000000000000000000001B5288BEC08B501500000000000000
000000000000000000063D6A70602E0000000000000000000000000000000000000000000000000000000000000000000000194D7070511A0000000000000000
00000000000000000000001F201A000000000000000000000000000000000000000000000000000000000000000000000000000C20200E000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000007192B343A414747413B352D1B0900000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000133043546679848A919797918B857C685645321600000000000000000000000000000000000000000000000000
0000000000000000000000000000000005223F5D7A92A4B5C7D4DAE1E7E7E1DBD5C9B7A5937E6145250500000000000000000000000000000000000000000000
000000000000000000000000000000244C6B8BA7C5DFF1FFFFFFFFFFFFFFFFFFFFFFFFF3E1C9AC906D4E25000000000000000000000000000000000000000000
0000000000000000000000000018406892B8D4F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D8B89469411800000000000000000000000000000000000000
000000000000000000000000305D86AFD6FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8AE865D31000000000000000000000000000000000000
00000000000000000000093B6EA0CBF3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4CBA16F3C0A00000000000000000000000000000000
00000000000000000015477AACDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFAD7A4815000000000000000000000000000000
0000000000000000165086B8EAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBB8864F140000000000000000000000000000
000000000000000F4E87C1F6FFFFFFFFFFFFFFFFFFFFFFFFFFF7EAE4DEDEE4EAF6FFFFFFFFFFFFFFFFFFFFFFFFFFF6C0864A0F00000000000000000000000000
000000000000001E68A1D8FFFFFFFFFFFFFFFFFFFFFFE8CDBBAA9A948E8E949AA8BACCE5FFFFFFFFFFFFFFFFFFFFFFF6BB81460A000000000000000000000000
000000000000000030669ED5FFFFFFFFFFFFFFFFDABBA0806C5A4A443E3E444A596C7F9CB9DAFFFFFFFFFFFFFFFFFFFFF1B77B3B000000000000000000000000
0000000000000000002C639BD2FFFFFFFFFFE4BC946F52351F0D0000000000000C1E33506E94BBE4FFFFFFFFFFFFFFFFFFECAB68260000000000000000000000
000000000000000000002A6198CFFFFFFFCF9F764E260800000000000000000000000006264E779FD0FFFFFFFFFFFFFFFFFFD896521100000000000000000000
0000000000000000000000275E95CCF6C4915F31090000000000000000000000000000000009315F92C4F7FFFFFFFFFFFFFFFFC3813E00000000000000000000
000000000000000000000000245B92BD8553210000000000000000000000000000000000000000215386C0FBFFFFFFFFFFFFFFF0AB621B000000000000000000
000000000000000000000000002158864C1500000000000000000000000000000000000000000000154F88C4FFFFFFFFFFFFFFFFCE863E000000000000000000
00000000000000000000000000001E3A15000000000000000000000000000000000000000000000000195390D2FFFFFFFFFFFFFFF1AA61190000000000000000
0000000000000000071D180000000000000000000000000000000000071D1800000000000000000000002163A7E9FFFFFFFFFFFFFFCC853A0000000000000000
000000000000000B466D632D0000000000000000000000000000000B466D632E0000000000000000000000387ABDFFFFFFFFFFFFFFEB9F530600000000000000
00000000000007427DB79F64290000000000000000000000000007417CB79F6429000000000000000000000C4F92D7FFFFFFFFFFFFFFB76A1F00000000000000
0000000000033D78B3EED59A5F240000000000000000000000023D78B3EDD59A5F24000000000000000000002670BCFFFFFFFFFFFFFFD0843800000000000000
00000000003974AEE9FFFFD0955B20000000000000000000003873AEE9FFFFD0965B200000000000000000000A55A1ECFFFFFFFFFFFFE99D4E00000000000000
00000000346FAAE5FFFFFFFFCC91561B0000000000000000346FA9E4FFFFFFFFCC91561B0000000000000000003A86D1FFFFFFFFFFFFFAAC5C0E000000000000
0000002F6AA5E0FFFFFFFFFFFFC78C51170000000000002F6AA5E0FFFFFFFFFFFFC78C511600000000000000001F69B7FFFFFFFFFFFFFFBA6A1B000000000000
0000125FA0DBFFFFFFFFFFFFFFFDC2874D12000000002B65A0DBFFFFFFFFFFFFFFFDC3864000000000000000000A58A8F6FFFFFFFFFFFFC77729000000000000
00001565B4F1FFFFFFFFFFFFFFFFF9BE84480E000026619CD6FFFFFFFFFFFFFFFFFFD894440000000000000000004A99E7FFFFFFFFFFFFD58637000000000000
0000024480BBF6FFFFFFFFFFFFFFFFF4B97E4409215D97D2FFFFFFFFFFFFFFFFFFDDA167290000001B1F1F1F1F203C8CDCFFFFFFFFFFFFDB8B3B202020202014
0000000F4A85BFFAFFFFFFFFFFFFFFFFF0B5793F5892CEFFFFFFFFFFFFFFFFFFE2A76C310000001B666F6F6F6F707087D7FFFFFFFFFFFFDF8F70707070707054
00000000134E87C4FFFFFFFFFFFFFFFFFFEBB0778EC9FFFFFFFFFFFFFFFFFFE5AB7035000000000E4F8FBFBFBFC0C0C2EDFFFFFFFFFFFFF7C6C0C0C0C0BF7D3C
000000000018538DC9FFFFFFFFFFFFFFFFFFE6B2C4FFFFFFFFFFFFFFFFFFEBB0743A0000000000001F5E9EDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF8F4E0E
0000000000001C5792CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFB4793F04000000000000002D6CACECFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1A05F1F00
00000000000000215C97D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B87E43080000000000000000003B7ABBFAFFFFFFFFFFFFFFFFFFFFFFFFF3B271300000
000000000000000026609BD6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8BD83470E000000000000000000000B4A88C9FFFFFFFFFFFFFFFFFFFFFFFFC48341010000
0000000000000000002A65A0DBFFFFFFFFFFFFFFFFFFFFFFFFFFFCC2874C12000000000000000000000000195898D8FFFFFFFFFFFFFFFFFFFFD5955313000000
000000000000000000002F6AA4DFFFFFFFFFFFFFFFFFFFFFFFFFC78B511600000000000000000000000000002767A7E6FFFFFFFFFFFFFFFFE7A6652400000000
0000000000000000000000336EA9ECFFFFFFFFFFFFFFFFFFFFCE90561B000000000000000000000000000000003777B5F5FFFFFFFFFFFFF8B776360000000000
00000000000000000000002E69A4E9FFFFFFFFFFFFFFFFFFFFCA8B501600000000000000000000000000000000064585C4FFFFFFFFFFFFC98848070000000000
000000000000000000002A649FDAFFFFFFFFFFFFFFFFFFFFFFFCC2864C1100000000000000000000000000000000145393D3FFFFFFFFDB9A5918000000000000
00000000000000000025609BD6FFFFFFFFFFFFFFFFFFFFFFFFFFF8BD83470C000000000000000000000000000000002362A1E1FFFFECAC6A2A00000000000000
0000000000000000205B96D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3B87D4308000000000000000000000000000000003171B0F0FEBE7C3B0000000000000000
000000000000001C5792CCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFB4793E03000000000000000000000000000000013F7FBFCE8E4D0C0000000000000000
00000000000017528DC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAAF7439000000000000000000000000000000000F4E8EA05E1E000000000000000000
0000000000134E89C3FEFFFFFFFFFFFFFFFFEBB7C9FFFFFFFFFFFFFFFFFFE5AB7035000000000000000000000000000000001E5E702F00000000000000000000
000000000E4984BFFAFFFFFFFFFFFFFFFFF0B57A93CEFFFFFFFFFFFFFFFFFFE1A66B300000000000000000000000000000000027300000000000000000000000
00000009447FBAF5FFFFFFFFFFFFFFFFF5BA7F445E98D2FFFFFFFFFFFFFFFFFFDCA1662C00000000000000000000000000000000000000000000000000000000
0000003F7BB6F0FFFFFFFFFFFFFFFFF9BE84490E26619CD7FFFFFFFFFFFFFFFFFFD89D6224000000000000000000000000000000000000000000000000000000
00001565AFECFFFFFFFFFFFFFFFFFEC3884D1300002B66A1DCFFFFFFFFFFFFFFFFFFD39444000000000000000000000000000000000000000000000000000000
00001461A5E0FFFFFFFFFFFFFFFFC88D521700000000306BA5E0FFFFFFFFFFFFFFFFC88B41000000000000000000000000000000000000000000000000000000
000000346FAAE5FFFFFFFFFFFFCC91571C000000000000346FAAE5FFFFFFFFFFFFCC91571B000000000000000000000000000000000000000000000000000000
000000003974AFEAFFFFFFFFD1965B2000000000000000003974AFE9FFFFFFFFD1965B2000000000000000000000000000000000000000000000000000000000
00000000033E79B3EEFFFFD59B6025000000000000000000033D79B3EEFFFFD59B60250000000000000000000000000000000000000000000000000000000000
000000000007427CB8F3DA9F642A000000000000000000000007427CB8F3DA9F642A000000000000000000000000000000000000000000000000000000000000
0000000000000C4782BCA4692E000000000000000000000000000C4782BCA4692E00000000000000000000000000000000000000000000000000000000000000
00000000000000114B746933000000000000000000000000000000104B7469330000000000000000000000000000000000000000000000000000000000000000
00000000000000000D241F00000000000000000000000000000000000D241F000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000024323737373737373737373737373737373737373737373737373737373737372F190000000000000000000000
0000000000000000000000000000000000002C65828787878787878787878787878787878787878787878787878787878787877F541B00000000000000000000
000000000000000000000000000000000026659DD1D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7C58C5411000000000000000000
00000000000000000000000000000000003989D6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC17122000000000000000000
00000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004090E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004393E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
0000000000000000000000000000000005529FECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
000000000000000000000000000000001C68B6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
000000000000000000000000000000003580CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
000000000000000000000000000000195DA2E8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
0000000000000000000000000000034689CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000003072B5F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000195C9FE2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
000000000000000000000000004389CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
0000000000000000000000001C68B0F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
0000000000000000000000003380CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
0000000000000000000000004A97E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000B5BABFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000E5EAEFBDEC4D0FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
000000000000000000000005538DB296778CB7F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
0000000000000000000000001F49654D2C4796E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000051601003F8FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000003F8FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000003F8FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000004595E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000125CA6F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000000000307BC5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
0000000000000000000000000000001A5799E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000000001A528BC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
0000000000000000000000000016528BC3FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
000000000000000000000000014887C3FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
0000000000000000000000001F68B3F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
0000000000000000000000003D88D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000857A7F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000F5FAFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000F5FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000F5FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC87727000000000000000000
00000000000000000000000F5FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000000000000000
00000000000000000000000F5FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC37323000000000000000000
00000000000000000000000F5FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB6691D000000000000000000
00000000000000000000000F5FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE79E5004000000000000000000
00000000000000000000000F5FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE813600000000000000000000
00000000000000000000000F5FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD69E641C00000000000000000000
00000000000000000000000856A6E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8CF9D642C0000000000000000000000
0000000000000000000000003770A9C6C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C3B59E82642B000000000000000000000000
00000000000000000000000000376A76777777777777777777777777777777777777777777777777777777777777736950361D00000000000000000000000000
00000000000000000000000000001C27272727272727272727272727272727272727272727272727272727272727231C04000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000082E373737373737372D00000000000000000000000000000000000000000000000000000000002D3737373721000000000000000000000000000000
000000002E798787878787878761110000000000000000000000000000000000000000000000000000000A5A878787875A220000000000000000000000000000
000000003787D7D7D7D7D7D7B161110000000000000000000000000000000000000000000000000000000A5AAAD7D7CB935A2200000000000000000000000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFCB935A22000000000000000000000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFCB935A220000000000000000000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFCB935A2200000000000000000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFCB935A22000000000000000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFCB935A220000000000000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFFFCB935A2200000000000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFFFFFCB935A22000000000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFFFFFFFCB935A220000000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFFFFFFFFFCB935A2200000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFFFFFFFFFFFCB935A1C000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFB161110000000000000000000000000000000000000000000000000000000A5AAAFAFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFB16121212121212121212121212121212121212121212121212121212121215AAAFAFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFB171717171717171717171717171717171717171717171717171717171717171AAFAFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFD4C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1D1FFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003787C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C77727000000
0000000029697777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777631A000000
00000000001E27272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727272727271A00000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000001020303437353326160600000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000001C3B4E5E6F7F8487858374645444270800000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000004284766859EAEBDCDD4D7D5D3C3B3A392705233120000000000000000000000000000000000000000000000000000000000
0000000000000000000000000019467092B0CFECFCFFFFFFFFFFFFFFFFF1DABA9D7D552900000000000000000000000000000000000000000000000000000000
0000000000000000000000012F5B89B5DBF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFE5C4986B3E120000000000000000000000000000000000000000000000000000
00000000000000000000033C719ECBF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAAE81501800000000000000000000000000000000000000000000000000
000000000000000000033C74AEE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C1875018000000000000000000000000000000000000000000000000
0000000000000000013C74AEE5FFFFFFFFFFFFFFFFFDE9E6D7D7D9E7F7FFFFFFFFFFFFFFFAC18750170000000000000000000000000000000000000000000000
00000000000000002F71AEE5FFFFFFFFFFFFFFE5C7B6A09687879597A7C2DEFDFFFFFFFFFFFAC187460400000000000000000000000000000000000000000000
00000000000000195B9EE0FFFFFFFFFFFFE4BB9E8585858585858585858597BBE7FFFFFFFFFFF8B5733100000000000000000000000000000000000000000000
000000000000044689CBFFFFFFFFFFFFCDA08585858585858585858585858585ABD8FFFFFFFFFFE2A05E1B000000000000000000000000000000000000000000
0000000000002870B5F8FFFFFFFFFFCB96858585858585858585858585858585859ED9FFFFFFFFFFCD8B42000000000000000000000000000000000000000000
0000000000004792DBFFFFFFFFFFD197858585858585858585858585858585858585A7E3FFFFFFFFF5AA61170000000000000000000000000000000000000000
00000000001C66B0F9FFFFFFFFE6A08585858585858585858585858585858585858585ADF3FFFFFFFFCA80360000000000000000000000000000000000000000
00000000003B85CFFFFFFFFFFFC285858585858585858585858585858585858585858587CAFFFFFFFFE9A1550B00000000000000000000000000000000000000
00000000004E9EECFFFFFFFFE9A085858585858585858585858585858585858585858585ABF8FFFFFFFFB96A1C00000000000000000000000000000000000000
00000000105EAEFBFFFFFFFFD7888585858585858585858585858585858585858585858596DEFFFFFFFFC97B2C00000000000000000000000000000000000000
00000000206FBDFFFFFFFFFFBA858585858585858585858585858585858585858585858585C7FFFFFFFFD98B3C00000000000000000000000000000000000000
00000000307FCDFFFFFFFFFFB6858585858585858585858585858585858585858585858585C6FFFFFFFFE99B4B00000000000000000000000000000000000000
000000003484D4FFFFFFFFF7A7858585858585858585858585858585858585858585858585B7FFFFFFFFF0A05000000000000000000000000000000000000000
000000003787D7FFFFFFFFF6A6858585858585858585858585858585858585858585858585B6FFFFFFFFF3A35303000000000000000000000000000000000000
000000003585D5FFFFFFFFF6A6858585858585858585858585858585858585858585858585B6FFFFFFFFF2A25202000000000000000000000000000000000000
000000003382D3FFFFFFFFF7A7858585858585858585858585858585858585858585858585B7FFFFFFFFEC9D4D00000000000000000000000000000000000000
000000002674C3FFFFFFFFFFB7858585858585858585858585858585858585858585858585C7FFFFFFFFDF904000000000000000000000000000000000000000
000000001664B3FFFFFFFFFFC7858585858585858585858585858585858585858585858596DAFFFFFFFFD2833400000000000000000000000000000000000000
000000000654A3F1FFFFFFFFDD9685858585858585858585858585858585858585858585A7F4FFFFFFFFBF722600000000000000000000000000000000000000
00000000004491DAFFFFFFFFFCB585858585858585858585858585858585858585858587CAFFFFFFFFF2A65A0E00000000000000000000000000000000000000
00000000002770BAFFFFFFFFFFD1968585858585858585858585858585858585858585ABEEFFFFFFFFDA8E410000000000000000000000000000000000000000
000000000008529DE5FFFFFFFFFDBB868585858585858585858585858585858585859DD9FFFFFFFFFEB76D270000000000000000000000000000000000000000
000000000000337CC4FFFFFFFFFFEEB4858585858585858585858585858585858597CCFFFFFFFFFFDA934A030000000000000000000000000000000000000000
000000000000125598DBFFFFFFFFFFEDB48585858585858585858585858585859ECEFFFFFFFFFFF5B26D26000000000000000000000000000000000000000000
00000000000000296BAEF0FFFFFFFFFFEEC197858585858585858585858586ACD8FFFFFFFFFFFFCF864301000000000000000000000000000000000000000000
00000000000000003E81C1FAFFFFFFFFFFFFD8B7978585858585858589A7C9F2FFFFFFFFFFFFFFE2A76E35050300000000000000000000000000000000000000
0000000000000000125087C1FAFFFFFFFFFFFFFDDFC7B7ADA7A7B6C3D7EEFFFFFFFFFFFFFFFFFFFFDFA76E505248280000000000000000000000000000000000
000000000000000000185087C1F7FFFFFFFFFFFFFFFFFFF9F7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFA79AA298683000000000000000000000000000000000
00000000000000000000185087B5E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D5E8FFFFFFFFFFEAE5F1D9A16930000000000000000000000000000000
0000000000000000000000174673A0CDF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDAB286ACE4FFFFFFFFFFFFFFFFDAA169300000000000000000000000000000
00000000000000000000000004315E8BAACAE9FFFFFFFFFFFFFFFFFFFFFFF2DAB7946D4373ABE4FFFFFFFFFFFFFFFFDAA1693000000000000000000000000000
00000000000000000000000000001B426180A1B9C9D9E9F0F3F2EBDFD2BFA68E6D4A27023A72ABECFFFFFFFFFFFFFFFFDAA16930000000000000000000000000
000000000000000000000000000000001736556A7B8B9BA0A3A29D9083725A412703000003509CE6FFFFFFFFFFFFFFFFFFDAA169300000000000000000000000
0000000000000000000000000000000000000B1C2C3C4B5053524D4034260E00000000000453A3F2FFFFFFFFFFFFFFFFFFFFDAA1693000000000000000000000
000000000000000000000000000000000000000000000000030200000000000000000000004798D9FFFFFFFFFFFFFFFFFFFFFFDAA16930000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000002968A1DAFFFFFFFFFFFFFFFFFFFFFFDAA169300000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFDAA1693000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFDAA16930000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFDAA169300000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFDAA1692F00000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFDAA05A10000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFC27525000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFC17424000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFD89E580E000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFD8A0672D00000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFD8A0672F0000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFD8A0672F000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A0C2C19E672F00000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002F5A7574582D0000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001025240E000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000122F3537373737373737373737373222030000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000163C5C7B858787878787878787878787826A4C2D00000000000000000000000000000000000000000000
000000000000000000000000000000000000000000175086A5C6D5D7D7D7D7D7D7D7D7D7D7D7D2B5976C33000000000000000000000000000000000000000000
0000000000000000000000000000000000000000135088C1EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDA56C330000000000000000000000000000000000000000
0000000000000000000000000000000000000000347EC1F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDA4590F00000000000000000000000000000000000000
0000000000000000000000000000000000000009539FE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3782E00000000000000000000000000000000000000
000000000000000000000000000000000000002070BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1984800000000000000000000000000000000000000
000000000000000000000000000000000000002676C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEE9E4E00000000000000000000000000000000000000
000000000000000000000F12121212121212122777C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF9F4F12121212121212121109000000000000000000
00000000000000001F445F62626262626262626277C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEF9F6262626262626262626153340300000000000000
000000000000001F588FADB2B2B2B2B2B2B2B2B2B2D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBEB2B2B2B2B2B2B2B2B2B19F743C00000000000000
00000000000000428DCAF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5AD681E000000000000
0000000000000D5CACF6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD18435000000000000
0000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD88837000000000000
0000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD88837000000000000
0000000000001060B0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD88837000000000000
0000000000000E5EAEFEFFD4BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEC1F3FFD68636000000000000
000000000000014B96D9FFB26E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E8ADAF5BA6F26000000000000
000000000000002B68A0C1B2621E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E3A8AC7B1844C07000000000000
00000000000000002F5874775E193333333333333333333333333333333333333333333333333333333333333333333333332C38777768471300000000000000
0000000000000000000E24271E418383838383838383838383838383838383838383838383838383838383838383838383836A1A27271D000000000000000000
000000000000000000000000004494D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3BB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004494E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6B1B000000000000000000000000
000000000000000000000000004292E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBA6A1A000000000000000000000000
00000000000000000000000000317BC5FDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1A1560C000000000000000000000000
0000000000000000000000000012548CB6C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C5A7703400000000000000000000000000
00000000000000000000000000001B4C6A777777777777777777777777777777777777777777777777777777777777755C370000000000000000000000000000
00000000000000000000000000000003202727272727272727272727272727272727272727272727272727272727272513000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000F1F2E32353735322E1F0F000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000192C3C4C5C6D7E82858785827D6D5D4E3F2F190000000000000000000000000000000000000000000000
00000000000000000000000000000000000000062544627A8B9BACBCCCD2D5D7D5D2CBBCAD9D8D7E614527080000000000000000000000000000000000000000
000000000000000000000000000000000011304F6D8FADC8D9E9FAFFFFFFFFFFFFFFFFFFFBEBDCCCAD9070523514000000000000000000000000000000000000
000000000018000000000000000000022F5A7999B8D7F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7D9BB9F7E562C0000000000000000000000000000000000
000000002D6835020000000000001844719EC3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7C69B6E4317000000000000000000000000000000
00000000378773400E000000012D5987B3E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDB186592E0000000000000000000000000000
000000003787B17D4A17000E426F9CC9F6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4C99D6F3700000000000000000000000000
000000003787D7BB875522487FB2DEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0A87139020000000000000000000000
000000003787D7F9C6936081B9F0FFFFFFFFFFFFFFFFFFFFFFFEEDDDCCBDB9B7BABECCDCECFCFFFFFFFFFFFFFFFFFFFFFFE2AA733B0400000000000000000000
000000003787D7FFFFD09FBBF2FFFFFFFFFFFFFFFFFFFFF0D1B29F8E7E6D69676A6E7E8E9EB1D0EEFFFFFFFFFFFFFFFFFFFFE4AC773D00000000000000000000
000000003787D7FFFFFFECFCFFFFFFFFFFFFFFFFFFE8C5A6876850402F1F19171A20303F4E6886A4C2E9FFFFFFFFFFFFFFFFFFE6AE6E2D000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFDD1A57B5C3C1F02000000000000000000001D3B5A7AA6D1FDFFFFFFFFFFFFFFFFDE9D5A190000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFE6BA8E6136120000000000000000000000000000001037628FBAEBFFFFFFFFFFFFFFFFCA88470600000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFDEA8774B1F000000000000000000000000000000000000001F4B79B1E9FFFFFFFFFFFFFFF8B7773400000000000000
000000003787D7FFFFFFFFFFFFFFFFFFE8A36D3708000000000000000000000000000000000000000000084078AFE7FFFFFFFFFFFFFFE5A35E15000000000000
000000003787D7FFFFFFFFFFFFFFFFFFECAB78441100000000000000000000000000000000000000000000063E78AFF0FFFFFFFFFFFFFFC87E35000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFE8B5824F1C00000000000000000000000000000000000000000000043E81C3FFFFFFFFFFFFFFE89F550C0000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFF3C08D5A2600000000000000000000000000000000000000000000115295D6FFFFFFFFFFFFFFC0762D0000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFDCA976431000000000000000000000000000000000000000000002566AAF2FFFFFFFFFFFFDF974C0300000000
000000003787D7F6F0EBE5E0DAD5CFC9C4BEB9B3AEA8A26F2E000000000000000000000000000000000000000000003F88D2FFFFFFFFFFFFFFB6691B00000000
000000003787ABA6A09B95908A857F7A746E69635E58534D25000000000000000000000000000000000000000000001F68B2FBFFFFFFFFFFFFC97A2B00000000
000000002D615B56504B45403A352F29241E19130E0803000000000000173230271C00000000000000000000000000004793DBFFFFFFFFFFFFD98A3C00000000
0000000000110B06000000000000000000000000000000000000001D46617E8077673B0F0000000000000000000000002B79C8FFFFFFFFFFFFE99B4C00000000
000000000000000000000000000000000000000000000000000018538EADC9D0C6AB7E511700000000000000000000001A68B7FFFFFFFFFFFFFAAC5C0F000000
000000000000000000000000000000000000000000000000000C4E89C4F9FFFFFFEDC1843D00000000000000000000000957A7F5FFFFFFFFFFFFBC6D1F000000
00000000000000000000000000000000000000000000000000226FBDFAFFFFFFFFFFF0AA631D00000000000000000000004796E6FFFFFFFFFFFFC27222000000
000000000000000000000000000000000000000000000000003683D1FFFFFFFFFFFFFFCE7E2E00000000000000000000004393E3FFFFFFFFFFFFC57525000000
000000000000000000000000000000000000000000000000004494E1FFFFFFFFFFFFFFCE7E2E00000000000000000000004191E1FFFFFFFFFFFFC77727000000
000000000000000000000000000000000000000000000000003280CDFFFFFFFFFFFFFFC87E2E00000000000000000000004393E3FFFFFFFFFFFFC47424000000
000000000000000000000000000000000000000000000000001E6BB5F0FFFFFFFFFFE8A25C1500000000000000000000004A99E7FFFFFFFFFFFFC27222000000
0000000000000000000000000000000000000000000000000005437EB9EAFFFFFFE0B37C3500000000000000000000000D5AAAF8FFFFFFFFFFFFB96A1C000000
00000000000000000000000000000000000000000000000000000E48829FBAC0B69D70440E00000000000000000000001E6BBAFFFFFFFFFFFFF7A9590B000000
0000000000000000000000000000000000000000000000000000001137536E70665A2E020000000000000000000000002E7DCBFFFFFFFFFFFFE6984900000000
0000000000000000000000000015190000000000000000000000000000082220160C00000000000000000000000000054E99E1FFFFFFFFFFFFD5883900000000
000000000000000000000221405E5E1700000000000000000000000000000000000000000000000000000000000000256DB9FFFFFFFFFFFFFFC4762800000000
00000000000000000D2C4B698AA9833C000000000000000000000000000000000000000000000000000000000000014590D8FFFFFFFFFFFFF9B0661700000000
0000000000001938577696B5D3F0A9601C00000000000000000000000000000000000000000000000000000000002E6FB1F8FFFFFFFFFFFFD991460000000000
000000000B446181A1C1DFFEFFFFCC8D51150000000000000000000000000000000000000000000000000000001A5B9EDFFFFFFFFFFFFFFFB96E250000000000
000000001661AACCEBFFFFFFFFFFFEC2864A0E0000000000000000000000000000000000000000000000000010488BCBFFFFFFFFFFFFFFE2994F060000000000
00000000003E86CFFFFFFFFFFFFFFFF7BB7E43070000000000000000000000000000000000000000000000124981B9F9FFFFFFFFFFFFFFC2782F000000000000
00000000001C60A3E7FFFFFFFFFFFFFFF0B4783D12000000000000000000000000000000000000000000164B83BBF2FFFFFFFFFFFFFFDC9A560F000000000000
0000000000003478BBFEFFFFFFFFFFFFFFE9AD81552B010000000000000000000000000000000000022D5885BDF4FFFFFFFFFFFFFFEFAE6C2A00000000000000
000000000000094C90D3FFFFFFFFFFFFFFFFEFC49A6E44190000000000000000000000000000011F44709CC8F6FFFFFFFFFFFFFFFFC2803D0000000000000000
000000000000002063A1DDFFFFFFFFFFFFFFFFFFDDB2875D442E17010000000000000000102C4A6888B3DFFFFFFFFFFFFFFFFFFFD59451100000000000000000
0000000000000000306CA8E4FFFFFFFFFFFFFFFFFFF6CCA8927B634E382E2A272A303F4E5E7696B3D1F6FFFFFFFFFFFFFFFFFFDAA36524000000000000000000
0000000000000000003774AFEAFFFFFFFFFFFFFFFFFFFFF4DEC8B19C847E7A777A7E8E9EADC1DFFDFFFFFFFFFFFFFFFFFFFFD8A1693200000000000000000000
000000000000000000033E79ACE0FFFFFFFFFFFFFFFFFFFFFFFFFEE8D3CECAC7CACDDCECFCFFFFFFFFFFFFFFFFFFFFFFFFD69F67300000000000000000000000
00000000000000000000083C6FA3D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED39D652E000000000000000000000000
00000000000000000000000032669AC7F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7BB90632B00000000000000000000000000
00000000000000000000000000295883AFD9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD0A4784D200000000000000000000000000000
0000000000000000000000000000153F6A96BCDDFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D8B88D613509000000000000000000000000000000
0000000000000000000000000000000027527295B5D5EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9CAAD8F6E4A1D0000000000000000000000000000000000
0000000000000000000000000000000000092A4A6A8DA3B9D0E6F2FDFFFFFFFFFFFFFFFBEBDBCCBC9F8060442506000000000000000000000000000000000000
0000000000000000000000000000000000000002233F556B8298A3AEB9C4C6C7C5C2BCAD9D8D7D6D543618000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000091F3647535E6A74767775726D5D4E3E2F1F0A0000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000004101B24262725221E0F00000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

65
data/theme/default/Up.edf Normal file
View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000000A1C00000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000006446831000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000003B77A264270000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000306DABD5985B1E00000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000002663A1DEFFCC8E5114000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000001D5A97D5FFFFFFC285480B0000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000012508DCBFFFFFFFFF6B97B3E0100000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000094783C1FEFFFFFFFFFFECAF723400000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000003C7AB7F4FFFFFFFFFFFFFFE2A5682B000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000003270ADEBFFFFFFFFFFFFFFFFFFD99C5F220000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000002866A3E0FFFFFFFFFFFFFFFFFFFFFFCF92551800000000000000000000000000000000000000000000
000000000000000000000000000000000000000000001F5D9AD7FFFFFFFFFFFFFFFFFFFFFFFFFFC6884B0F000000000000000000000000000000000000000000
000000000000000000000000000000000000000000155290CDFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9BD7F42050000000000000000000000000000000000000000
00000000000000000000000000000000000000000C4886C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0B377390000000000000000000000000000000000000000
00000000000000000000000000000000000000013F7CB9F7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6A96C2F00000000000000000000000000000000000000
000000000000000000000000000000000000003572B0EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDA06226000000000000000000000000000000000000
0000000000000000000000000000000000002B68A6E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD496591C0000000000000000000000000000000000
0000000000000000000000000000000000215F9CD9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA8D4F1200000000000000000000000000000000
00000000000000000000000000000000175592CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDC0844709000000000000000000000000000000
0000000000000000000000000000000E4B89C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B7793C000000000000000000000000000000
000000000000000000000000000004417FBCF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEBAD70330000000000000000000000000000
00000000000000000000000000003775B2F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE1A4662900000000000000000000000000
000000000000000000000000002D6BA8E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD79A5E20000000000000000000000000
00000000000000000000000024619FDCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE9153160000000000000000000000
00000000000000000000001A5795D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC4874A0E00000000000000000000
00000000000000000000104D8BC8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8BB7D4003000000000000000000
000000000000000000064481BEFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFB17437000000000000000000
0000000000000000003B77B5DCDCDCDCDCDCDCDCDCE8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2DCDCDCDCDCDCDCDCDCA86A2D0000000000000000
000000000000000019698C8C8C8C8C8C8C8C8C8C8CAAF7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE79C8C8C8C8C8C8C8C8C8C8C8C590900000000000000
000000000000000007383C3C3C3C3C3C3C3C3C3C55A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE595453C3C3C3C3C3C3C3C3C3C330000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE5954500000000000000000000000000000000000000
000000000000000000000000000000000000000555A5DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC954500000000000000000000000000000000000000
0000000000000000000000000000000000000005558C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C4500000000000000000000000000000000000000
00000000000000000000000000000000000000002C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C2200000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000020E1A26292B29241A0E020000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000F2740505D6976797B7974695D513E27100000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000022435B738CA0ADB9C5C9CBC9C4B9ADA18B735C4321000000000000000000000000000000000000000000
00000000000000000000000000000000000000002346698EA8C0D8EFFBFFFFFFFFFFFFFFFCEFD8C1AA8C68472500000000000000000000000000000000000000
00000000000000000000000000000000000013416A90B2D5F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6D4B3926A3E130000000000000000000000000000000000
0000000000000000000000000000000000285482B1D7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBD9AF82552A00000000000000000000000000000000
00000000000000000000000000000000366A98C5F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1C4996732000000000000000000000000000000
0000000000000000000000000000043A70A7D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8A36E390400000000000000000000000000
00000000000000000000000000033E74ABE2FFFFFFFFFFFFFFFFFFFFFCE3D9D5D1D5D9E6FDFFFFFFFFFFFFFFFFFFFFDFAA743900000000000000000000000000
000000000000000000000000003573AFE5FFFFFFFFFFFFFFFFF8DFC8AF9789858185899BB1C8DEF5FFFFFFFFFFFFFFFFE5AA6D30000000000000000000000000
0000000000000000000000002867A5E4FFFFFFFFFFFFFFFFD2AC947B624B39353135394D637B92ACD7FFFFFFFFFFFFFFFFDEA163260000000000000000000000
0000000000000000000000195A99D8FFFFFFFFFFFFFFEBBD9062472E1700000000000000172E456895C0EBFFFFFFFFFFFFFFD597520F00000000000000000000
00000000000000000000004186CBFFFFFFFFFFFFFFD6A97B4D210000000000000000000000000026507DA9D4FFFFFFFFFFFFFFC27D3900000000000C00000000
000000000000000000002468AEF4FFFFFFFFFFFFCF9466390C0000000000000000000000000000000E3A659DDAFFFFFFFFFFFFECA96320000D2B485918000000
000000000000000000054B92D6FFFFFFFFFFFFDC9E5F24000000000000000000000000000000000000002C69A5E2FFFFFFFFFFFFD28D443A5874946A1D000000
000000000000000000246DB8FEFFFFFFFFFFE9AA6B2C0000000000000000000000000000000000000000003471AEEBFFFFFFFFFFF7AE6684A2C0A45609000000
000000000000000000438EBFDBF8FFFFFFF5B6783A00000000000000000000000000000000000000000000003D79B9FFFFFFFFFFFFD3B5CFECDD8F4200000000
00000000000000000032577392ADCAE8FFCF8646070000000000000000000000000000000000000000000000094C95DBFFFFFFFFFFFFFFFFFFC87B2D00000000
000000000000000000000C294661809FB9AE651C0000000000000000000000000000000000000000000000001D3A6EB7FFFFFFFFFFFFFFFFFFB3651800000000
000000000000000000000000001835526D8C44000000000000000000000000000000000000000000000D2C496685A3C7FFFFFFFFFFFFFFFFEC9F510300000000
00000000000000000000000000000007243C1E0000000000000000000000000000000000000000001D587595B1CFEDFFFFFFFFFFFFFFFFFFD78A3C0000000000
00000000000000001C4D360E00000000000000000000000000000000000000000000000000000000245F87AFD7FFFFFFFFFFFFFFFFFFFFFFC274270000000000
000000000000000035827C532D050000000000000000000000000000000000000000000000000000001A426993BAE2FFFFFFFFFFFFFFFFFBAD5F120000000000
00000000000000004B99C19A724A2300000000000000000000000000000000000000000000000000000000254C749DC4EDFFFFFFFFFFFFE69A4B000000000000
000000000000001460AEFBDFB891684019000000000000000000000000000000000000000000000000000000072F567FA9D0F7FFFFFFFFD18437000000000000
000000000000002A76C4FFFFFDD5AE865F370F000000000000000000000000000000000000000000000000000000123A628BB2DAFFFFFFBD6F22000000000000
00000000000000408DDAFFFFFFFFF4CCA47C542D050000000000000000000000000000000000000000000000000000001C446C95BCE5F5A85A0D000000000000
0000000000000955A3F0FFFFFFFFFFFFE9C29A724B2300000000000000000000000000000000000000000000000000000000274F779FC7944600000000000000
0000000000001F6BB9FFFFFFFFFFFFFFFFFFE0B8916841190000000000000000000000000000000000000000000000000000000A3158827F3100000000000000
0000000000003581CFFFFFFFFFFFFFFFFFFFFFFED6AE87591500000000000000000000000000000000000000000000000000000000143C531900000000000000
0000000000004B99E5FFFFFFFFFFFFFFFFF7DABCA18365480F00000000000000000000000000000000000000000024391D000000000000060000000000000000
00000000001360AEFBFFFFFFFFFFFFFFFCB5917255381C00000000000000000000000000000000000000000000074F85664A2C0E000000000000000000000000
00000000002976C4FFFFFFFFFFFFFFFFFFB66D280B000000000000000000000000000000000000000000000000286FBAB29576593B1D00000000000000000000
00000000003F8DDAFFFEECFFFFFFFFFFFFDA944B0D0000000000000000000000000000000000000000000000125194DCFCDEC1A385684A1F0000000000000000
000000000855A3EDD1B39CD2FFFFFFFFFFFFBA7D4004000000000000000000000000000000000000000000064483C1FFFFFFFFEDD0B282360000000000000000
000000001E6AB8A2856868B0F9FFFFFFFFFFEEB274380000000000000000000000000000000000000000003876B5F3FFFFFFFFFFF4AC60190000000000000000
00000000318173573A1E458DD1FFFFFFFFFFFFE5A96C30000000000000000000000000000000000000012E6AA9E7FFFFFFFFFFFFCB8641000000000000000000
000000001A412A0C00001E62A8EBFFFFFFFFFFFFDDA16D41170000000000000000000000000000001743709EDBFFFFFFFFFFFFE8A35D18000000000000000000
0000000000000000000000397CC1FFFFFFFFFFFFFFDDB185582D030000000000000000000000052C5886B3E0FFFFFFFFFFFFFFBF7A3400000000000000000000
00000000000000000000000E5193D0FFFFFFFFFFFFFFF4C89C705038210A00000000000A2139516E9CC8F5FFFFFFFFFFFFFFCD8E500C00000000000000000000
000000000000000000000000225F9CDAFFFFFFFFFFFFFFFFDFB69D856D5644403C4044576E869EB5DEFFFFFFFFFFFFFFFFD99B5C1E0000000000000000000000
000000000000000000000000002B69A6DEFFFFFFFFFFFFFFFFFFE9D2BAA494908C9094A4BBD3EAFFFFFFFFFFFFFFFFFFDCA66829000000000000000000000000
0000000000000000000000000000356DA1D8FFFFFFFFFFFFFFFFFFFFFFF0E4E0DCE0E4F0FFFFFFFFFFFFFFFFFFFFFFD8A16B3500000000000000000000000000
00000000000000000000000000000031679CD1FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFED19D67300000000000000000000000000000
000000000000000000000000000000002B608FBBE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE8BB8F612C000000000000000000000000000000
00000000000000000000000000000000001F4C78A5CDF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0CEA7794C1F00000000000000000000000000000000
00000000000000000000000000000000000009356185A8CAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEACBA98563370A0000000000000000000000000000000000
00000000000000000000000000000000000000001A3D5F819EB5CDE4F0FCFFFFFFFFFFFCF0E4CDB59F82603D1A00000000000000000000000000000000000000
00000000000000000000000000000000000000000000173951688095A1AEBABEBFBDB9ADA1958068513918000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000051C3445515E6A6E6F6D695D5146341C050000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000030F1A1E1F1D1A0E02000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000F202F32353735322C1C0C0000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000162E3E4E5D6E7E82858785827B6A5A4A3B2B1000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000221405E7C8D9DADBDCCD2D5D7D5D2C9BAAA9A8978593A1B0000000000000000000000000000000000000000
000000000000000000000000000000000000082C4C698BA9C9DBEBFBFFFFFFFFFFFFFFFFFFF8E8D7C2A384634526000000000000000000000000000000000000
00000000000000000000000000000000001D4A7697B5D4F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDCEAE916E411500000000000000000000000000000000
0000000000000000000000000000000633608DB9DFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8D9B084562A000000000000000000000000000000
00000000000000000000000000001B4975A2CFFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3C6996C3F1200000000000000000000000000
000000000000000000000000001E568BB8E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBAE824B12000000000000000000000000
0000000000000000000000001E568FC7FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF1BC844B120000000000000000000000
00000000000000000000001E568FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5BC844B1200000000000000000000
000000000000000000001B568FC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5BC844B0E000000000000000000
00000000000000000006498BC7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5BC7D3B000000000000000000
0000000000000000003374B8FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECAB68260000000000000000
00000000000000001D60A2E5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD795521000000000000000
00000000000000084A8DCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC27F3D00000000000000
000000000000002C76B9FCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEAD681E000000000000
000000000000024C97DFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD1873D000000000000
0000000000002169B5FEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFA65C120000000000
000000000000408BD4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC57B310000000000
0000000000165EA9F3FFFFFFFFFFFFFFFFFFFFFFFFFFFAFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFCFFFFFFFFFFFFFFFFFFFFFFFFFFE49C510700000000
00000000002E7DC9FFFFFFFFFFFFFFFFFFFFFFFFFCCCAAACB2DFFFFFFFFFFFFFFFFFFFFFFFFFFFD5ACAAADD5FFFFFFFFFFFFFFFFFFFFFFFFFFBA6C1E00000000
004A4239313E8CDBEDF5FDFFFFFFFFFFFFFFFFFCC38B5B5C6FA1DAFFFFFFFFFFFFFFFFFFFFFFCF96645A6496CFFFFFFFFFFFFFFFFFFFFFFFFFCB7D2E00000000
009A9289817A8E969EA6AEB6BEC6CED6DEE5EDC38B521B0C3069A1DAFFFFFFFFFFFFFFFFFFCF965E250A255E96CFFFFFFFFFFFFFFFFFFFFFFFDB8D3E00000000
00C7E1D9D1A252464E565E666E767E868E969E8B52494139313069A1DAF6FDFFFFFFFFFFCF965E25000000255E96CFFFFFFFFFFFFFFFFFFFFFEB9D4E00000000
00B7BDC4CB9243201A130E161E262E363E4671A9A1999189817971699EA6AEB6BEC6CECF965E250901000000255E9BE0FFFFFFFFFFFFFFFFFFFBAD5D10000000
00676D747B8977706A635C564F48413B343686D6F1E9E1D9D1C9C1B9965E5E666E767E867169615951494139313A8ADAFFFFFFFFFFFFFFFFFFFFBD6E1F000000
00171D243282C7C0BAB3ACA69F98918B847D77BFFFFFFFFFFFFFFFFFCF965E251E3169A2C1B9B1A9A199918981799AE0FFFFFFFFFFFFFFFFFFFFC27222000000
000000003585D5FFFFFFFCF5EFE8E1DBD4CDC7E0FFFFFFFFFFFFFFFFFFCF965E4269A2DAFFFFFFF9F0E9E1D9D1C9D2FFFFFFFFFFFFFFFFFFFFFFC57525000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF9D92A7DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC77727000000
000000003584D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE7E2ECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC47424000000
000000003282D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC27222000000
000000002C7BC9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB96B1D000000
000000001C6ABAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8AA5A0C000000
000000000C5AAAF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE89A4B00000000
00000000004A9AE7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD8893B00000000
00000000003B89D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC8792B00000000
00000000002B78C2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB4681B00000000
00000000001059A3EDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDE964A0100000000
0000000000003984CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF742B0000000000
0000000000001B65AEF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAA1560C0000000000
000000000000004591D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA8037000000000000
00000000000000266EB1F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6A36117000000000000
00000000000000004184C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB9763400000000000000
0000000000000000155699DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCE8C490700000000000000
0000000000000000002A6CAEF1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4A15F1C0000000000000000
000000000000000000003F82BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B17432000000000000000000
00000000000000000000124B84BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B1783F05000000000000000000
0000000000000000000000124B84BCF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9B1783F0700000000000000000000
000000000000000000000000124B84BCEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE4B1783F070000000000000000000000
00000000000000000000000000124B7DABD7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBCEA1743F07000000000000000000000000
00000000000000000000000000000E3B6895C2EEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE6B98C5F320500000000000000000000000000
0000000000000000000000000000000026527FADD1EFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9CAA3764A1C000000000000000000000000000000
0000000000000000000000000000000000103D6887A6C5E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDDEBFA18061340700000000000000000000000000000000
000000000000000000000000000000000000001E3D5C7C9CBACBDBEBFBFFFFFFFFFFFFFFF8E8D8C8B49674563717000000000000000000000000000000000000
0000000000000000000000000000000000000000001231516C7D8D9DADBDC2C5C7C4C2BAAA9A8979684A2B0C0000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000071E2E3E4E5E6E72757774726B5A4B3B2B1B0100000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000101F22252724221D0C000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000191B000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000245D5E230000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000245D95945A2000000000000000
0000000000000000000000000000000000000000000000000000000000121200000000000000000000000000000000000000245D95CECB915617000000000000
000000000000000000000000000000000000000000000000000000001C5453060000000000000000000000000000000000215D95CEFFFFC78643010000000000
0000000000000000000000000000000000000000000000000000001C548D59090000000000000000000000000000000000367BB6F0FFFFF5B3702E0000000000
00000000000000000000000000000000000000000000000000001C548DA9590900000000000000000000000000000000000A457FB9F6FFFFE09D5A1800000000
000000000000000000000000000000000000000000000000001C548DC5A9590900000000000000000000000000000C3722000E4886C9FFFFFFCA874503000000
0000000000000000000000000000000000000000000000001C548DC5F9A95909000000000000000000000000000C457E5A2000185A9DDFFFFFF7B47230000000
00000000000000000000000000000000000000000000001C548DC5FEF9A959090000000000000000000000000C457EB6915718002D6FB2F4FFFFE19F560C0000
000000000000000000000000000000000000000000001C548DC5FEFFF9A9590900000000000000000000000C457EB6EFC8874502014385C7FFFFFFC0752C0000
0000000000000000000000000000000000000000001C548DC5FEFFFFF9A959090000000000000000000000447EB6EFFFF6B4712F0016589BE0FFFFDE964B0100
00000000000000000000000000000000000000001C548DC5FEFFFFFFF9A959090000000000000000000000437EB8F5FFFFE19E5C19002E78C2FFFFFEB4692100
000000000000000000000000000000000000001C548DC5FEFFFFFFFFF9A9590900000000000000002425000E4786C8FFFFFFCB8846000F59A2ECFFFFD38A3F00
0000000000000000000000000000000000001C548DC5FEFFFFFFFFFFF9A95909000000000000002B63652B0017589CDEFFFFF8B0651D003983CDFFFFF3A95D15
00000000000000000000000000000000001C548DC5FEFFFFFFFFFFFFF9A959090000000000002B639C9C5E1C002C6EB0F3FFFFD0863B001A62AEF7FFFFC87D2F
00000000021F1F1F1F1F1F1F1F1F1F1F1F548DC5FEFFFFFFFFFFFFFFF9A9590900000000002B639CD5CE8B4907004187D1FFFFEFA55B11004590D8FFFFDB8D3F
00000000346F6F6F6F6F6F6F6F6F6F6F6F8DC5FEFFFFFFFFFFFFFFFFF9A959090000000028639CD5FFFBB87732001F68B2FCFFFFC57A30002977C6FFFFEC9E4E
000000003787BFBFBFBFBFBFBFBFBFBFBFCAFEFFFFFFFFFFFFFFFFFFF9A95909000000003074B1EDFFFFE59E540A004894DCFFFFE49748001967B6FFFFFCAE5E
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A959090000000004407BC1FFFFFFBD732A002972BDFFFFF5A8570A0856A6F4FFFFBD6F
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A9590900000000000D57A1EBFFFFDD9549000F5DACFBFFFFB7681A004796E4FFFFCD7F
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A959090000000000003882CBFFFFF9AA5B0D004D9CEAFFFFC7782A003785D4FFFFDE8F
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A959090000000000001960ACF6FFFFBA6B1D003D8CDAFFFFD7893A002775C5FFFFE999
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A95909000000000000004392E2FFFFCA7C2E002D7CCCFFFFE29242002272C2FFFFEC9C
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A95909000000000000003C8CDCFFFFD48334002979C9FFFFE49444001F6FBFFFFFEF9F
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A95909000000000000003787D7FFFFD68736002777C7FFFFE79747001C6CBCFFFFF1A1
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A95909000000000000003D8DDDFFFFD48334002A7ACAFFFFE49444001F6FBFFFFFEF9F
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A95909000000000000004492E2FFFFCA7C2D00307ECDFFFFE19141002272C2FFFFEC9C
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A959090000000000001A62ADF7FFFFB96B1D00408FDDFFFFD48638002776C6FFFFE999
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A959090000000000003982CCFFFFF8A95A0D01509FEDFFFFC47628003786D4FFFFDD8F
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A9590900000000000F58A2ECFFFFDB934700125FAFFDFFFFB56517004796E4FFFFCD7F
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9A959090000000006427EC1FFFFFFBD7129002E78C2FFFFF3A555070957A7F5FFFFBE6E
000000003787BCBCBCBCBCBCBCBCBCBCBCC7FCFFFFFFFFFFFFFFFFFFF9A95909000000003577B3EFFFFFE49F5309044D97E0FFFFDE9446001967B6FFFFFBAD5E
00000000346C6C6C6C6C6C6C6C6C6C6C6C8BC3FCFFFFFFFFFFFFFFFFF9A959090000000027619AD2FFF9B6743100236BB7FFFFFFC0752C002977C6FFFFEB9D4E
00000000011C1C1C1C1C1C1C1C1C1C1C1C528BC3FCFFFFFFFFFFFFFFF9A95909000000000029619AD2CC8A470506498DD6FFFFEAA2560C004691D9FFFFDB8D3E
00000000000000000000000000000000001A528BC3FCFFFFFFFFFFFFF9A9590900000000000029619A9A5C1A003375B8FAFFFFCB8137001B65AFF8FFFFC77D2E
0000000000000000000000000000000000001A528BC3FCFFFFFFFFFFF9A959090000000000000029616328001E60A3E5FFFFF1AB5F17003A84CEFFFFF2A85E14
000000000000000000000000000000000000001A528BC3FCFFFFFFFFF9A95909000000000000000022240016518DCFFFFFFFC4823F00105AA3EDFFFFD2893E00
00000000000000000000000000000000000000001A528BC3FCFFFFFFF9A9590900000000000000000000004887C2FDFFFFD9975413002F79C3FFFFFDB3681F00
0000000000000000000000000000000000000000001A528BC3FCFFFFF9A9590900000000000000000000003B74ADE5FFEFAD6A280017599CE2FFFFDD954A0000
000000000000000000000000000000000000000000001A528BC3FCFFF9A959090000000000000000000000033C74ADE5BF803D00024487C9FFFFFFBF742B0000
00000000000000000000000000000000000000000000001A528BC3FCF9A95909000000000000000000000000033C74AD884E11002F71B3F6FFFFE09E550B0000
0000000000000000000000000000000000000000000000001A528BC3F9A9590900000000000000000000000000033C74511700195B9EE0FFFFF5B3702E000000
000000000000000000000000000000000000000000000000001A528BC3A959090000000000000000000000000000032B1700104A88CBFFFFFFC8864401000000
00000000000000000000000000000000000000000000000000001A528BA9590900000000000000000000000000000000000C4781BBF7FFFFDE9C591700000000
0000000000000000000000000000000000000000000000000000001A528B59090000000000000000000000000000000000367DB8F1FFFFF3B16E2D0000000000
000000000000000000000000000000000000000000000000000000001A5252060000000000000000000000000000000000205A93CCFFFFC68441000000000000
00000000000000000000000000000000000000000000000000000000000B1100000000000000000000000000000000000000225A93CCC98F5415000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000225A9392581E00000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000225A5C210000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001718000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000001B2D020000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000001D566F210000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000001D568E73230000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000001D568EC373230000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000001D568EC7C373230000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000001D568EC7FFC373230000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000001D568EC7FFFFC373230000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000001D568EC7FFFFFFC373230000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001D568EC7FFFFFFFFC373230000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000001D568EC7FFFFFFFFFFC373230000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000001D568EC7FFFFFFFFFFFFC373230000000000000000000000130000000000000000000000001200000000000000
0000000000000000000000000000000000001D568EC7FFFFFFFFFFFFFFC373230000000000000000000B42633F080000000000000000043C62450E0000000000
00000000000000000000000000000000001D568EC7FFFFFFFFFFFFFFFFC3732300000000000000000B447CAE794008000000000000043D76AC7F470E00000000
000000000E2D2D2D2D2D2D2D2D2D2D2D2D568EC7FFFFFFFFFFFFFFFFFFC37323000000000000000B447CB5EAB179400800000000043D76AEE7B87F470E000000
00000000377E7D7D7D7D7D7D7D7D7D7D7D8EC7FFFFFFFFFFFFFFFFFFFFC3732300000000000008447CB5EDFFEAB17940080000043D76AEE7FFF0B87F470B0000
000000003787CDCDCDCDCDCDCDCDCDCDCDD4FFFFFFFFFFFFFFFFFFFFFFC373230000000000002B74B5EDFFFFFFEAB1794008043D76AEE7FFFFFFF0B879300000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC373230000000000002369A3DCFFFFFFFFEAB179403D76AEE7FFFFFFFFDFA66C270000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3732300000000000000326BA3DCFFFFFFFFEAB17976AEE7FFFFFFFFDFA66E35000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC373230000000000000000326BA3DCFFFFFFFFEAB1AFE7FFFFFFFFDFA66E3500000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC37323000000000000000000326BA3DCFFFFFFFFF9F6FFFFFFFFDFA66E350000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3732300000000000000000000326BA3DCFFFFFFFFFFFFFFFFDFA66E35000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC373230000000000000000000000326BA3DCFFFFFFFFFFFFDFA66E3500000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC373230000000000000000000000043D76C2FFFFFFFFFFFFC579400800000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3732300000000000000000000043D76AEE7FFFFFFFFFFFFEAB1794008000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC37323000000000000000000043D76AEE7FFFFFFFFFFFFFFFFEAB17940080000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC373230000000000000000043D76AEE7FFFFFFFFEAE7FFFFFFFFEAB179400800000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC3732300000000000000043D76AEE7FFFFFFFFDFA6A3DCFFFFFFFFEAB1794008000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC37323000000000000023D76AEE7FFFFFFFFDFA66E6BA3DCFFFFFFFFEAB17940060000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC373230000000000002A70AEE7FFFFFFFFDFA66E35326BA3DCFFFFFFFFEAB1742E0000
000000003787BEBEBEBEBEBEBEBEBEBEBEC5F4FFFFFFFFFFFFFFFFFFFFC37323000000000000276DA9E2FFFFFFDFA66E350000326BA3DCFFFFFFE5AD712B0000
00000000346E6E6E6E6E6E6E6E6E6E6E6E84BCF4FFFFFFFFFFFFFFFFFFC37323000000000000003871A9E2FFDFA66E3500000000326BA3DCFFE5AD743B020000
00000000011E1E1E1E1E1E1E1E1E1E1E1E4B84BCF4FFFFFFFFFFFFFFFFC3732300000000000000003871A9DFA66E35000000000000326BA3DCAD743B03000000
0000000000000000000000000000000000124B84BCF4FFFFFFFFFFFFFFC3732300000000000000000038719F6E350000000000000000326B9D743B0300000000
000000000000000000000000000000000000124B84BCF4FFFFFFFFFFFFC373230000000000000000000034533200000000000000000000305237030000000000
00000000000000000000000000000000000000124B84BCF4FFFFFFFFFFC373230000000000000000000000030000000000000000000000000200000000000000
0000000000000000000000000000000000000000124B84BCF4FFFFFFFFC373230000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000124B84BCF4FFFFFFC373230000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000124B84BCF4FFFFC373230000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000124B84BCF4FFC373230000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000124B84BCF4C373230000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000124B84BCC373230000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000124B84BC73230000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000124B8473230000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000124B681D0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000D1D000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000273F3F3D1C0000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000103C698F8F8C5F3204000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000004477FACD8DFCEA17437000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000003174B6EEFFFFFFE4A865220000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000165BA0E4FFFFFFFFFFD4914B0700000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000003F84C9FFFFFFFFFFFFFEB9742F00000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000002468ADF2FFFFFFFFFFFFFFE29E5714000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000084D92D6FFFFFFFFFFFFFFFFFFC7823D000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000003175BAFFFFFFFFFFFFFFFFFFFFF0AC66220000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000016599FE4FFFFFFFFFFFFFFFFFFFFFFD4904B0600000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000003E83C8FFFFFFFFFFFFFFFFFFFFFFFFFDB9742F00000000000000000000000000000000000000000000
000000000000000000000000000000000000000000002367ADF1FFFFFFFFFFFFFFFFFFFFFFFFFFE29D5713000000000000000000000000000000000000000000
000000000000000000000000000000000000000000074C91D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC6823D000000000000000000000000000000000000000000
0000000000000000000000000000000000000000003074BAFEFFFFFFFFFFF6D8CFDAFFFFFFFFFFFFEFAC66210000000000000000000000000000000000000000
000000000000000000000000000000000000000015599EE3FFFFFFFFFFF5BC897F90C7FFFFFFFFFFFFD38F4A0500000000000000000000000000000000000000
00000000000000000000000000000000000000003E82C7FFFFFFFFFFFFC0844B30568FCDFFFFFFFFFFFDB8732E00000000000000000000000000000000000000
000000000000000000000000000000000000002266ACF0FFFFFFFFFFFDAE5E13001F6EBEFFFFFFFFFFFFE19C5613000000000000000000000000000000000000
000000000000000000000000000000000000064B90D4FFFFFFFFFFFFFBAB5B0B001A6ABAFFFFFFFFFFFFFFC5813C000000000000000000000000000000000000
0000000000000000000000000000000000002F74B9FDFFFFFFFFFFFFFBAB5B0B001A6ABAFFFFFFFFFFFFFFEFAB65200000000000000000000000000000000000
000000000000000000000000000000000014579DE2FFFFFFFFFFFFFFFBAB5B0B001A6ABAFFFFFFFFFFFFFFFFD38F490500000000000000000000000000000000
00000000000000000000000000000000003D81C6FFFFFFFFFFFFFFFFFBAB5B0B001A6ABAFFFFFFFFFFFFFFFFFCB7722E00000000000000000000000000000000
000000000000000000000000000000002166ACEFFFFFFFFFFFFFFFFFFBAB5B0B001A6ABAFFFFFFFFFFFFFFFFFFE09C5612000000000000000000000000000000
000000000000000000000000000000064A90D3FFFFFFFFFFFFFFFFFFFBAB5B0B001A6ABAFFFFFFFFFFFFFFFFFFFFC4803B000000000000000000000000000000
0000000000000000000000000000002E73B8FDFFFFFFFFFFFFFFFFFFFBAB5B0B001A6ABAFFFFFFFFFFFFFFFFFFFFEEAB64200000000000000000000000000000
000000000000000000000000000013569CE1FFFFFFFFFFFFFFFFFFFFFBAB5B0B001A6ABAFFFFFFFFFFFFFFFFFFFFFFD28E490400000000000000000000000000
00000000000000000000000000003C80C5FFFFFFFFFFFFFFFFFFFFFFFBAB5B0B001A6ABAFFFFFFFFFFFFFFFFFFFFFFFBB7722D00000000000000000000000000
000000000000000000000000002065ABEFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B001A6ABAFFFFFFFFFFFFFFFFFFFFFFFFE09B5512000000000000000000000000
00000000000000000000000005498FD2FFFFFFFFFFFFFFFFFFFFFFFFFBAB5B0B001A6ABAFFFFFFFFFFFFFFFFFFFFFFFFFFC47F3B000000000000000000000000
0000000000000000000000002D72B7FCFFFFFFFFFFFFFFFFFFFFFFFFFFB26222002D71C1FFFFFFFFFFFFFFFFFFFFFFFFFFEDAA641F0000000000000000000000
000000000000000000000012559CE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFCC935B45669ED8FFFFFFFFFFFFFFFFFFFFFFFFFFFFD28D480400000000000000000000
00000000000000000000003B80C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCC9F95A3D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBB6712D00000000000000000000
000000000000000000001F64AAEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDE5F0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF9B5411000000000000000000
00000000000000000004488ED2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC47F3B000000000000000000
0000000000000000002D71B6FBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDA9631F0000000000000000
000000000000000011559BDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD18D480300000000000000
00000000000000003B7FC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAB6702C00000000000000
000000000000001F63AAEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF9A5410000000000000
00000000000003488DD1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC37E3A000000000000
0000000000002C70B6FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFECA9631E0000000000
000000000010549ADFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD18C470200000000
0000000000397EC3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9B5702A00000000
00000000165DA4EBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD974F07000000
000000002676C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB66616000000
000000002E7ECEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE6E1E000000
000000003686CEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBF7626000000
000000001A60A6E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDD98520C000000
000000000039799ABCCDD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CCB7956F2B00000000
0000000000093052737D8080808080808080808080808080808080808080808080808080808080808080808080808080808080808080807C6B4B290000000000
000000000000000A272D3030303030303030303030303030303030303030303030303030303030303030303030303030303030303030302C2402000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000132908000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000003B792B000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000004B8A3C000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000D5B9B4C000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000001E6CAB5C0E0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000002F7EBC6D1F0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000003F8ECC7E300000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000F293D4A1D509FDD8F402B4939250A000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000233F5A748B7D2E60AFEEA0513E8C886F553A1D00000000000000000000000000000000000000000000
0000000000000000000000000000000000000000001A41688BA6C1BA6B2371BFFEB0612D7CCABCA186633D180000000000000000000000000000000000000000
0000000000000000000000000000000000000010386087AED6F1F8AB5B3381D0FFC072246ABAFFECD0AB845E3101000000000000000000000000000000000000
00000000000000000000000000000000000018507EA7CDF4FFFFE79A4A4493E1FFD1823459A9F7FFFFF1CBA17141120000000000000000000000000000000000
0000000000000000000000000000000000175089C1EBFFFFFFFFD7893A54A4F1FFE294454999E6FFFFFFFFE1B2824F1600000000000000000000000000000000
00000000000000000000000000000000175089C1FAFFFFFFFFFFC6772A65B4FFFFF2A5553988D6FFFFFFFFFFF1C0874F16000000000000000000000000000000
000000000000000000000000000000175089C1FAFFFFFFFFFFE4B6672776C4FFFFFFB5662977C5E9FFFFFFFFFFF9C0874E0F0000000000000000000000000000
0000000000000000000000000000105089C1FAFFFFFFFFF4C79B79513887D5FFFFFFC576285C7FA3CFFCFFFFFFFFF9C07F3F0000000000000000000000000000
0000000000000000000000000000387EC1FAFFFFFFFFE0B1855830104898E5FFFFFFD688391535608DB9E9FFFFFFFFEFAE6E2E00000000000000000000000000
000000000000000000000000001A60A7EBFFFFFFFFE2A76F4216000B58A8F6FFFFFFE6984900001D4A79B1EAFFFFFFFFDE9E5711000000000000000000000000
000000000000000000000000004187CDFFFFFFFFE0A78B62380F001B69B8FFFFFFFFF7A9590C001740697FB1EAFFFFFFFFC57E38000000000000000000000000
0000000000000000000000002368AEF4FFFFFFF4B16F66A87D522A2C7BC9FFFFFFFFFFBA6A1C325C859E577ABDFFFFFFFFEAA45D160000000000000000000000
0000000000000000000000003F8CD6FFFFFFFFC885423F85C2996E458BD9FFFFFFFFFFCA7C4E77A0BC76304E91D3FFFFFFFFC97E320000000000000000000000
00000000000000000000000E5AA6F1FFFFFFE39C5816185DA3DDB38B9CEAFFFFFFFFFFDA8C93BCDB9650092264AAF0FFFFFFE49A4D0100000000000000000000
00000000000000000000002974C0FBEADACABA79300000367CC2F8CFCBFFFFFFFFFFFFF7C6D7FAB46D2800003C86BDCDDDEEFEB3681C00000000000000000000
00000000000000000000003C8BBDAD9D8C7C6B5210061727549BE0FFFFFFFFFFFFFFFFFFFFFFD28D472413031D5B6E7F8FA0B0C07D2F00000000000000000000
00000000000000000000004B7F6E5D4D3D2D2434445465758697D8FFFFFFFFFFFFFFFFFFFFFFC993827261514131213041506171823C00000000000000000000
00000000000000000000001E302131415161728293A4B4C4D4E5FFFFFFFFFFFFFFFFFFFFFFFFFAE1D1C1B1A1907F6F5E4E3E2E23321700000000000000000000
000000000000000D1D2E3E4E5E6F7F90A1B1C1D1E1F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEDECEBDAD9D8D7C6B5B4B3B2A1A09000000000000
00000000133B4B5B6B7C8D9DADBDCEDEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCEBDBCABAAB9A89796857483706000000
0000000029798A9AAABACBDBECFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9E8D8C8B7A797866919000000
00000000082B3B4B5B6C7D8D9EAEBECEDEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCECDBCBBAAB9A8A79685848382800000000
00000000000000000D1E2E3E4E5E6F8090A1B1C1D1E2F2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFDECEBEAE9E8D7D6C5B4B3B2B1A0A00000000000000
00000000000000000000002C40302131425262728394A4B4C4D5F8FFFFFFFFFFFFFFFFFFFFFFEDD1C1B1A190806F5E4E3E2E2333422300000000000000000000
0000000000000000000000498F7E6D5D4D3D2C24354554657687D5FFFFFFFFFFFFFFFFFFFFFFC6837262524231213040506071818B3B00000000000000000000
00000000000000000000003A88CCBCAC9C8B7B5E150007175DA3E8FFFFFFFFFFFFFFFFFFFFFFDB964F14030022687E8F9FAFBFC97A2C00000000000000000000
0000000000000000000000246FBBFFFAEAD9C87F3500003E84CBEAC1BDFDFFFFFFFFFFEFB6C9F2BC77300000428DCCDDEDFDFAAE611700000000000000000000
00000000000000000000000A55A1ECFFFFFFE9A4611E1F65ACCFA67C99E7FFFFFFFFFFD78984AFD79D56112A6CAFF6FFFFFFDF95480000000000000000000000
0000000000000000000000003B86D0FFFFFFFFD08D4A468DB48B613988D6FFFFFFFFFFC677406993BC7E395599DBFFFFFFFFC3792D0000000000000000000000
0000000000000000000000001C63ABF1FFFFFFFCB9796D996E461C2977C5FFFFFFFFFFB66719254E78A16083C4FFFFFFFFE49D550F0000000000000000000000
000000000000000000000000003E85CBFFFFFFFFEAB17E532B01001866B5FFFFFFFFF4A656080009325C87BBF4FFFFFFFFBE7730000000000000000000000000
00000000000000000000000000185FA1E1FFFFFFFFEAB17A4E21000755A5F3FFFFFFE3954600002A5583BBF6FFFFFFFFD696520B000000000000000000000000
00000000000000000000000000003071B2F1FFFFFFFFEABE91643C1D4594E2FFFFFFD2833622426C99C4F4FFFFFFFFE7A7662500000000000000000000000000
0000000000000000000000000000014183C0F9FFFFFFFFFFD3A986583583D1FFFFFFC27325668DAEDBFFFFFFFFFFEFB676360000000000000000000000000000
000000000000000000000000000000124F87C0F9FFFFFFFFFFF0B96A2472C1FFFFFFB1622C7BC9F6FFFFFFFFFFEFB67D45060000000000000000000000000000
00000000000000000000000000000000164F87C0EFFFFFFFFFFFC97B2D61B0FEFFEFA1523C8BD9FFFFFFFFFFE6B67D450C000000000000000000000000000000
0000000000000000000000000000000000174F7FAEDEFFFFFFFFDA8C3D51A0EEFFDE90424D9CEAFFFFFFFFD6A776450C00000000000000000000000000000000
0000000000000000000000000000000000000F3F6E9FC5EBFFFFEB9D4E418FDDFFCE7F315DACFAFFFFE4BE966636060000000000000000000000000000000000
00000000000000000000000000000000000000002E577EA4C9E4FBAD5E307ECDFFBE6E206EBDFADFC39D77522500000000000000000000000000000000000000
00000000000000000000000000000000000000000011385D7E9AB3BD6F216DBCFBAD5D307FC9AE957956300B0000000000000000000000000000000000000000
000000000000000000000000000000000000000000000016324D667D80305CACEA9C4D408B7A61482D1000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000011C2F3C164C9BDA8C3D223B2C1700000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000003C8BC97B2C0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000002B7AB96A1C0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000001B69A9590B0000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000A589849000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000488738000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000376928000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000061900000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000122B3F4446433C2B1A090000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000002A455E778F9496938A7968573D1A000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000017426E92ABC4DDE4E6E3D8C7B7A78563411F00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000002E5986B1DDF6FFFFFFFFFFFFFFFFF0CEAB896330000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000037709DC9F4FFFFFFFFFFFFFFFFFFFFFFFFF4D1A16E3B0900000000000000000000000000000000000000
0000000000000000000000000000000000000000003770A8E0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFAC79470D000000000000000000000000000000000000
00000000000000000000000000000000000000003770A8E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEAB77C3D000000000000000000000000000000000000
000000000000000000000000000000000000002E6FA8E1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEDAD6D2D0000000000000000000000000000000000
0000000000000000000000000000000000001A5C9EE0FFFFFFFFFFFFFFFFF8F1EFF3FFFFFFFFFFFFFFFFFFFFDD9E5E1D00000000000000000000000000000000
000000000000000000000000000000000007488BCCFFFFFFFFFFFFFFE0C6ACA19FA3B7CCE3FFFFFFFFFFFFFFFFCD8E4A01000000000000000000000000000000
00000000000000000000000000000000003576B8FAFFFFFFFFFFF0C1967A5F514F53697F9DC8F1FFFFFFFFFFFFFEB56A22000000000000000000000000000000
000000000000000000000000000000001860A4E6FFFFFFFFFFE1AF80512E140100071C325883ADE5FFFFFFFFFFFFD68E44000000000000000000000000000000
000000000000000000000000000000003B82CBFFFFFFFFFFE9AC703F1100000000000000153F74AEE8FFFFFFFFFFF7AE661D0000000000000000000000000000
000000000000000000000000000000165EA7EEFFFFFFFFF1B4783B00000000000000000000033D78B1F3FFFFFFFFFFD0873D0000000000000000000000000000
0000000000000000000000000000003980C9FFFFFFFFFFC68043070000000000000000000000064085CAFFFFFFFFFFF1A6570A00000000000000000000000000
0000000000000000000000000000135BA3EBFFFFFFFFE29D561300000000000000000000000000175CA1E7FFFFFFFFFFB96B1D00000000000000000000000000
00000000000000000000000000002C78C5FFFFFFFFFFBA742F0000000000000000000000000000003379C1FFFFFFFFFFCD7F3100000000000000000000000000
00000000000000000000000000004491DDFFFFFFFFE1974C07000000000000000000000000000000105BA6F2FFFFFFFFE0934500000000000000000000000000
000000000000000000000000000F5BA8F4FFFFFFFFC4792E0000000000000000000000000000000000408CD7FFFFFFFFF3A6580A000000000000000000000000
000000000000000000000000002773C0FFFFFFFFF1A75C120000000000000000000000000000000000256FBBFFFFFFFFFFB96B1D000000000000000000000000
000000000000000000000000003F8CD8FFFFFFFFD98B3E0000000000000000000000000000000000000D5BAAF9FFFFFFFFC57525000000000000000000000000
0000000000000000000000000251A1EFFFFFFFFFC5772A000000000000000000000000000000000000004C9CEAFFFFFFFFCC7D2C000000000000000000000000
0000000000000000000000000E5DADFCFFFFFFFFB26417000000000000000000000000000000000000003D8CDBFFFFFFFFD48334000000000000000000000000
0000000000000000000000001B69B9FFFFFFFFEDA05103000000000000000000000000000000000000002F7DCCFFFFFFFFDB8B3B000000000000000000000000
0000000000000000000000002676C5FFFFFFFFE1914100000000000000000000000000000000000000002776C6FFFFFFFFE29343000000000000000000000000
0000000000000000000000003282D1FFFFFFFFD7883800000000000000000000000000000000000000002272C2FFFFFFFFEA9A4A000000000000000000000000
0000000000000000000000003F8EDDFFFFFFFFCE7E2F00000000000000000000000000000000000000001D6DBDFFFFFFFFF0A050000000000000000000000000
0000000000000000000000004494E4FFFFFFFFC5752500000000000000000000000000000000000000001867B8FFFFFFFFEF9F4F000000000000000000000000
0000000000000000000000004696E6FFFFFFFFC0702000000000000000000000000000000612121212121767B7FFFFFFFFEE9E4E121212120E00000000000000
0000000000000000000000004798E8FFFFFFFFBE6E1E00000000000000000000000000004662626262626269B9FFFFFFFFED9D62626262625514000000000000
0000000000000000000000004797E7FFFFFFFFBF6F1F00000000000000000000000000004180B2B2B2B2B2B2D2FFFFFFFFFDBDB2B2B2B293520E000000000000
0000000000000000000000004595E5FFFFFFFFC0702000000000000000000000000000000F4E8DCCFFFFFFFFFFFFFFFFFFFFFFFFFFE3A3622300000000000000
0000000000000000000000004393E3FFFFFFFFC676270000000000000000000000000000001D5C9BDAFFFFFFFFFFFFFFFFFFFFFFF3B373330000000000000000
0000000000000000000000003A89D9FFFFFFFFCF8030000000000000000000000000000000002A69A8E7FFFFFFFFFFFFFFFFFFFFC48343030000000000000000
0000000000000000000000002E7DCDFFFFFFFFD8893900000000000000000000000000000000003878B5F4FFFFFFFFFFFFFFFFD4945313000000000000000000
0000000000000000000000002271C0FFFFFFFFE293430000000000000000000000000000000000064584C3FFFFFFFFFFFFFFE4A4632400000000000000000000
0000000000000000000000001665B5FFFFFFFFF0A354060000000000000000000000000000000000135291D0FFFFFFFFFFF4B474340000000000000000000000
0000000000000000000000000A58A8F8FFFFFFFFB56619000000000000000000000000000000000000215F9EDDFFFFFFFFC48443040000000000000000000000
000000000000000000000000004C9BE6FFFFFFFFC87B2D000000000000000000000000000000000000002D6CACEBFFFFD5955414000000000000000000000000
000000000000000000000000003682CFFFFFFFFFDC8F4300000000000000000000000000000000000000003B7AB8F7E5A5642400000000000000000000000000
000000000000000000000000001E6AB7FFFFFFFFF6AB601600000000000000000000000000000000000000094887C6B574350000000000000000000000000000
000000000000000000000000000652A0ECFFFFFFFFC97E3300000000000000000000000000000000000000001755958545050000000000000000000000000000
00000000000000000000000000003C89D5FFFFFFFFE69D520D000000000000000000000000000000000000000024635515000000000000000000000000000000
00000000000000000000000000002470BBFFFFFFFFFFC07A35000000000000000000000000000000000000000000201900000000000000000000000000000000
0000000000000000000000000000085199E0FFFFFFFFE8A35E190000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000002E76BEFFFFFFFFFFCC874B0E00000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000B539CE4FFFFFFFFF8BC804308000000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000003179C1FFFFFFFFFFF1B478491A0000000000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000E5699DAFFFFFFFFFFE9B98B5B39200D0500000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000296BAEEFFFFFFFFFFFFACBA0866A5D4C07000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000003D80C2FFFFFFFFFFFFFFEBD1B7AD6111000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000105295D6FFFFFFFFFFFFFFFFFFB16111000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000025659ED7FFFFFFFFFFFFFFFFB16111000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000002C659FD8FFFFFFFFFFFFFFB16111000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000002D66A0D6FFFFFFFFFFFFB16111000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000002F6794C0ECFFFFFFFFB16111000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000025507DAAD5EDFFFFB16111000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000E3B6689A2BAD3B16111000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000223C546D85896111000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000092235393200000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -0,0 +1,65 @@
#EDF // Generate with EGAMI (64,64)
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000001020303437353326160600000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000001C3B4E5E6E7F8487858374645444270800000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000004284766859EAEBDCDD4D7D5D3C3B3A391705233120000000000000000000000000000000000000000000000000000000000
0000000000000000000000000019467092B0CFECFCFFFFFFFFFFFFFFFFF1DABA9D7D552900000000000000000000000000000000000000000000000000000000
0000000000000000000000012F5B89B5DAF9FFFFFFFFFFFFFFFFFFFFFFFFFFFFE5C4986B3E120000000000000000000000000000000000000000000000000000
00000000000000000000033C719ECBF8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDAAE81501800000000000000000000000000000000000000000000000000
000000000000000000033C74AEE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0C1875018000000000000000000000000000000000000000000000000
0000000000000000013C74AEE5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC18750170000000000000000000000000000000000000000000000
00000000000000002F71AEE5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAC187460400000000000000000000000000000000000000000000
00000000000000195B9EE0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8B5733000000000000000000000000000000000000000000000
000000000000044689CBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2A05E1B000000000000000000000000000000000000000000
0000000000002770B5F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCD8B41000000000000000000000000000000000000000000
0000000000004792DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4AA61170000000000000000000000000000000000000000
00000000001C66B0F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCA80360000000000000000000000000000000000000000
00000000003B85CFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE9A1550B00000000000000000000000000000000000000
00000000004E9EECFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB96A1C00000000000000000000000000000000000000
00000000105EAEFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFC97B2C00000000000000000000000000000000000000
00000000206EBDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD98B3C00000000000000000000000000000000000000
00000000307FCDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE99B4B00000000000000000000000000000000000000
000000003484D4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0A05000000000000000000000000000000000000000
000000003787D7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF3A35303000000000000000000000000000000000000
000000003585D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2A25202000000000000000000000000000000000000
000000003382D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEC9D4D00000000000000000000000000000000000000
000000002674C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDF904000000000000000000000000000000000000000
000000001664B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD2833400000000000000000000000000000000000000
000000000654A3F1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBE712600000000000000000000000000000000000000
00000000004491DAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEEA3570C00000000000000000000000000000000000000
00000000002770BAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFD4893C0000000000000000000000000000000000000000
000000000008529DE5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFB96D220000000000000000000000000000000000000000
000000000000337CC4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDB9852070000000000000000000000000000000000000000
000000000000125598DBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4B06C29000000000000000000000000000000000000000000
00000000000000296BAEF0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCF864100000000000000000000000000000000000000000000
00000000000000003E81C1FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE2A76E35050300000000000000000000000000000000000000
0000000000000000125087C1FAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFA76E505248280000000000000000000000000000000000
000000000000000000185087C1F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFA79AA298683000000000000000000000000000000000
00000000000000000000185087B5E2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF4D2E6FFFFFFFFFFEAE5F1D9A16930000000000000000000000000000000
0000000000000000000000174673A0CDF5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDBB086ABE4FFFFFFFFFFFFFFFFDAA169300000000000000000000000000000
00000000000000000000000004315E8BAACAE9FFFFFFFFFFFFFFFFFFFFFFEFD4BA986C4272ABE4FFFFFFFFFFFFFFFFDAA1693000000000000000000000000000
00000000000000000000000000001B426180A1B9C9D9E9F0F3F2ECDFD2BEA3896D5329013A72ABECFFFFFFFFFFFFFFFFDAA16930000000000000000000000000
000000000000000000000000000000001736556A7B8B9BA0A3A29D908371573D2208000004509CE6FFFFFFFFFFFFFFFFFFDAA169300000000000000000000000
0000000000000000000000000000000000000B1C2C3C4B5053524D4134260C00000000000453A3F2FFFFFFFFFFFFFFFFFFFFDAA1693000000000000000000000
000000000000000000000000000000000000000000000000030200000000000000000000004798D9FFFFFFFFFFFFFFFFFFFFFFDAA16930000000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000002968A1DAFFFFFFFFFFFFFFFFFFFFFFDAA169300000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFDAA1693000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFDAA16930000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFDAA169300000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFDAA1692D00000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFDA9E5E16000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFFFBC6C1C000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFFFFFBC6C1C000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFFFFFD89C5C15000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFFFFFD8A0672B00000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFFFFFD8A0672F0000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003069A1DAFFFFD8A0672F000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000030699EBCBC9C672F00000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002D5E6C6C5C2B0000000000000000
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000161C1C15000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

View File

@@ -1,6 +0,0 @@
#!/usr/bin/python
import lutinModule
import lutinTools
lutinModule.ImportPath(lutinTools.GetCurrentPath(__file__) + "/sources/")
lutinModule.ImportPath(lutinTools.GetCurrentPath(__file__) + "/../ewol/")

134
lutin_edn.py Normal file
View File

@@ -0,0 +1,134 @@
#!/usr/bin/python
import lutin.module as module
import lutin.tools as tools
import lutin.debug as debug
import os
def get_type():
return "BINARY"
def get_name():
return "Editeur de N'ours"
def get_desc():
return "Text editor for sources code with ctags management"
def get_licence():
return "GPL-3"
def get_compagny_type():
return "org"
def get_compagny_name():
return "Edouard DUPIN"
def get_maintainer():
return ["Mr DUPIN Edouard <yui.heero@gmail.com>"]
def get_version():
return [1,3,0]
def get_version_id():
return 6
def create(target, module_name):
my_module = module.Module(__file__, module_name, get_type())
my_module.add_extra_compile_flags()
my_module.add_src_file([
'sources/appl/ctags/readtags.cpp'
])
my_module.add_src_file([
'sources/appl/debug.cpp',
'sources/appl/global.cpp',
'sources/appl/globalMsg.cpp',
'sources/appl/init.cpp'
])
# Gui:
my_module.add_src_file([
'sources/appl/Gui/BufferView.cpp',
'sources/appl/Gui/TextViewer.cpp',
'sources/appl/Gui/ViewerManager.cpp',
'sources/appl/Gui/MainWindows.cpp',
'sources/appl/Gui/Search.cpp',
'sources/appl/Gui/TagFileSelection.cpp',
'sources/appl/Gui/TagFileList.cpp',
'sources/appl/Gui/WorkerSaveFile.cpp',
'sources/appl/Gui/WorkerSaveAllFile.cpp',
'sources/appl/Gui/WorkerCloseFile.cpp',
'sources/appl/Gui/WorkerCloseAllFile.cpp'
])
# All needed for the buffer management :
my_module.add_src_file([
'sources/appl/Buffer.cpp',
'sources/appl/BufferManager.cpp',
'sources/appl/TextPlugin.cpp',
'sources/appl/TextPluginCopy.cpp',
'sources/appl/TextPluginMultiLineTab.cpp',
'sources/appl/TextPluginAutoIndent.cpp',
'sources/appl/TextPluginHistory.cpp',
'sources/appl/TextPluginRmLine.cpp',
'sources/appl/TextPluginSelectAll.cpp',
'sources/appl/TextPluginCtags.cpp',
'sources/appl/TextPluginManager.cpp'
])
# Generic color management for the text editor :
my_module.add_src_file([
'sources/appl/GlyphDecoration.cpp',
'sources/appl/GlyphPainting.cpp'
])
# syntax coloration for the text editor
my_module.add_src_file([
'sources/appl/HighlightPattern.cpp',
'sources/appl/Highlight.cpp',
'sources/appl/HighlightManager.cpp'
])
my_module.add_module_depend(['ewol'])
my_module.copy_path('data/icon.*','')
my_module.copy_path('data/languages/gcov/*.xml','languages/gcov/')
my_module.copy_path('data/languages/asm/*.xml','languages/asm/')
my_module.copy_path('data/languages/bash/*.xml','languages/bash/')
my_module.copy_path('data/languages/boo/*.xml','languages/boo/')
my_module.copy_path('data/languages/cpp/*.xml','languages/cpp/')
my_module.copy_path('data/languages/c/*.xml','languages/c/')
my_module.copy_path('data/languages/cmake/*.xml','languages/cmake/')
my_module.copy_path('data/languages/glsl/*.xml','languages/glsl/')
my_module.copy_path('data/languages/in/*.xml','languages/in/')
my_module.copy_path('data/languages/java/*.xml','languages/java/')
my_module.copy_path('data/languages/json/*.xml','languages/json/')
my_module.copy_path('data/languages/lua/*.xml','languages/lua/')
my_module.copy_path('data/languages/makefile/*.xml','languages/makefile/')
my_module.copy_path('data/languages/matlab/*.xml','languages/matlab/')
my_module.copy_path('data/languages/php/*.xml','languages/php/')
my_module.copy_path('data/languages/xml/*.xml','languages/xml/')
my_module.copy_path('data/languages/python/*.xml','languages/python/')
my_module.copy_path('data/theme/default/*.svg','theme/shape/square/')
my_module.copy_path('data/theme/default/*.edf','theme/shape/square/')
my_module.copy_path('data/theme/colorWhite/*.json','theme/color/white/')
my_module.copy_path('data/theme/colorBlack/*.json','theme/color/black/')
my_module.copy_path('data/GUI-Search.xml','')
my_module.add_path(os.path.join(tools.get_current_path(__file__), "sources"))
my_module.copy_file("data/Font/freefont/FreeSerif.ttf","fonts/FreeSerif.ttf")
my_module.copy_path("data/Font/freefont/FreeMon*.ttf","fonts/")
my_module.compile_flags('c', [
"-DPROJECT_NAME=\"\\\""+my_module.name+"\\\"\"",
"-DAPPL_VERSION=\"\\\"" + tools.version_to_string(get_version()) + "\\\"\""
])
versionIDCode = str(get_version_id())
# set the package properties:
my_module.pkg_set("VERSION_CODE", versionIDCode)
if target.name=="MacOs":
my_module.pkg_set("ICON", os.path.join(tools.get_current_path(__file__), "data/icon.icns"))
else:
my_module.pkg_set("ICON", os.path.join(tools.get_current_path(__file__), "data/icon.png"))
my_module.pkg_set("SECTION", ["Development", "Editors"])
my_module.pkg_set("PRIORITY", "optional")
my_module.pkg_add("RIGHT", "WRITE_EXTERNAL_STORAGE")
my_module.pkg_add("RIGHT", "SET_ORIENTATION")
return my_module

110
sources/CMakeLists.txt Normal file
View File

@@ -0,0 +1,110 @@
cmake_minimum_required(VERSION 2.8)
# Declare the project
project(edn)
##
## Include C++ X11 dependency ... (check correct flags)
##
include(CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
else()
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX0X)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")
else()
message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.")
endif()
endif()
# set output path:
set(LIBRARY_OUTPUT_PATH lib/${CMAKE_BUILD_TYPE})
include_directories(.)
#Create src file list
set(src_files
appl/ctags/readtags.cpp
appl/debug.cpp
appl/global.cpp
appl/globalMsg.cpp
appl/init.cpp
appl/Gui/BufferView.cpp
appl/Gui/TextViewer.cpp
appl/Gui/ViewerManager.cpp
appl/Gui/MainWindows.cpp
appl/Gui/Search.cpp
appl/Gui/TagFileSelection.cpp
appl/Gui/TagFileList.cpp
appl/Gui/WorkerSaveFile.cpp
appl/Gui/WorkerSaveAllFile.cpp
appl/Gui/WorkerCloseFile.cpp
appl/Gui/WorkerCloseAllFile.cpp
appl/Buffer.cpp
appl/BufferManager.cpp
appl/TextPlugin.cpp
appl/TextPluginCopy.cpp
appl/TextPluginMultiLineTab.cpp
appl/TextPluginAutoIndent.cpp
appl/TextPluginHistory.cpp
appl/TextPluginRmLine.cpp
appl/TextPluginSelectAll.cpp
appl/TextPluginCtags.cpp
appl/TextPluginManager.cpp
appl/GlyphDecoration.cpp
appl/GlyphPainting.cpp
appl/HighlightPattern.cpp
appl/Highlight.cpp
appl/HighlightManager.cpp
)
add_definitions( -DDEBUG_LEVEL=3 )
add_definitions( -DDEBUG=1 )
add_definitions( -DPROJECT_NAME="edn" )
if (APPLE)
add_definitions( -D__TARGET_OS__MacOs )
elseif (UNIX)
add_definitions( -D__TARGET_OS__Linux )
elseif (WIN32)
add_definitions( -D__TARGET_OS__Windows )
endif ()
# read version :
file (STRINGS "tag" BUILD_VERSION)
add_definitions( -DAPPL_VERSION="${BUILD_VERSION}" )
#Create a static Lib:
add_executable(edn ${src_files} )
include_directories(${zlib_SOURCE_DIR}/contrib/)
include_directories(${linearmath_SOURCE_DIR}/bullet/src/)
include_directories(${etk_SOURCE_DIR})
include_directories(${freetype_SOURCE_DIR})
include_directories(${exml_SOURCE_DIR})
include_directories(${ejson_SOURCE_DIR})
include_directories(${egami_SOURCE_DIR})
include_directories(${edtaa3_SOURCE_DIR})
include_directories(${date_SOURCE_DIR})
include_directories(${agg_SOURCE_DIR})
include_directories(${ewol_SOURCE_DIR})
#target_link_libraries(edn ewol)
target_link_libraries(edn ewol linearmath zlib etk freetype exml ejson egami edtaa3 date esvg png)
if (APPLE)
target_link_libraries(edn
"-framework Cocoa"
"-framework OpenGL"
"-framework QuartzCore"
"-framework AppKit"
)
elseif (UNIX)
target_link_libraries(edn -lGL -lX11 -lpthread)
elseif (WIN32)
endif ()

View File

@@ -1,51 +1,43 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <etk/types.h>
#include <etk/stdTools.h>
#include <appl/Buffer.h> #include <appl/Buffer.h>
#include <appl/debug.h> #include <appl/debug.h>
#include <ewol/clipBoard.h> #include <gale/context/clipBoard.h>
#include <appl/HighlightManager.h> #include <appl/HighlightManager.h>
appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ () {
const char* const appl::Buffer::eventIsModify = "edn-is-modify"; m_value = u32char::Null;
const char* const appl::Buffer::eventIsSave = "edn-is-save";
const char* const appl::Buffer::eventSelectChange = "edn-select-change";
const char* const appl::Buffer::eventChangeName = "edn-buffer-name-change";
appl::Buffer::Iterator& appl::Buffer::Iterator::operator++ (void) {
m_value = etk::UChar::Null;
if (m_current < 0) { if (m_current < 0) {
m_current = 0; m_current = 0;
return *this; return *this;
} }
if (m_data != NULL) { if (m_data != nullptr) {
if (m_current < m_data->m_data.size() ) { if (m_current < (int64_t)m_data->m_data.size() ) {
int8_t nbChar = etk::UChar::theoricUTF8Len(m_data->m_data[m_current]); int8_t nbChar = utf8::theoricLen(m_data->m_data[m_current]);
if (nbChar != 0) { if (nbChar != 0) {
m_current+=nbChar; m_current+=nbChar;
} else { } else {
m_current++; m_current++;
} }
} }
if (m_current >= m_data->m_data.size()) { if (m_current >= (int64_t)m_data->m_data.size()) {
m_current = m_data->m_data.size(); m_current = m_data->m_data.size();
} }
} }
return *this; return *this;
} }
appl::Buffer::Iterator& appl::Buffer::Iterator::operator-- (void) { appl::Buffer::Iterator& appl::Buffer::Iterator::operator-- () {
m_value = etk::UChar::Null; m_value = u32char::Null;
if (m_data != NULL) { if (m_data != nullptr) {
if (m_current > 0) { if (m_current > 0) {
int32_t iii = -1; int32_t iii = -1;
while( etk::UChar::theoricUTF8First(m_data->m_data[m_current+iii]) == false while( utf8::theoricFirst(m_data->m_data[m_current+iii]) == false
&& iii >= -6 && iii >= -6
&& m_current-iii>0) { && m_current-iii>0) {
--iii; --iii;
@@ -61,28 +53,28 @@ appl::Buffer::Iterator& appl::Buffer::Iterator::operator-- (void) {
return *this; return *this;
} }
char32_t appl::Buffer::Iterator::operator* (void) { char32_t appl::Buffer::Iterator::operator* () {
if (m_value != etk::UChar::Null) { if (m_value != u32char::Null) {
return m_value; return m_value;
} }
if (m_data == NULL) { if (m_data == nullptr) {
APPL_ERROR("request an element that iterator not link"); APPL_ERROR("request an element that iterator not link");
return m_value; return m_value;
} }
if ( m_current < 0 if ( m_current < 0
|| m_current >= m_data->m_data.size()) { || m_current >= (int64_t)m_data->m_data.size()) {
APPL_ERROR("request an element out of bounding !!! 0 <= " << m_current << " < " << m_data->m_data.size()); APPL_ERROR("request an element out of bounding !!! 0 <= " << m_current << " < " << m_data->m_data.size());
return m_value; return m_value;
} }
char tmpVal[5]; char tmpVal[5];
memset(tmpVal, 0, sizeof(tmpVal)); memset(tmpVal, 0, sizeof(tmpVal));
tmpVal[0] = m_data->m_data[m_current]; tmpVal[0] = m_data->m_data[m_current];
int8_t nbChar = etk::UChar::theoricUTF8Len(tmpVal[0]); int8_t nbChar = utf8::theoricLen(tmpVal[0]);
for (int32_t iii=1; iii<nbChar && m_current+iii<m_data->m_data.size(); ++iii) { for (int32_t iii=1; iii<nbChar && m_current+iii<(int64_t)m_data->m_data.size(); ++iii) {
tmpVal[iii] = m_data->m_data[m_current+iii]; tmpVal[iii] = m_data->m_data[m_current+iii];
} }
// transform ... // transform ...
m_value = etk::setUtf8(tmpVal); m_value = utf8::convertChar32(tmpVal);
return m_value; return m_value;
} }
@@ -91,32 +83,35 @@ appl::Buffer::Iterator appl::Buffer::position(int64_t _pos) {
return appl::Buffer::Iterator(this, _pos); return appl::Buffer::Iterator(this, _pos);
} }
appl::Buffer::Iterator appl::Buffer::begin(void) { appl::Buffer::Iterator appl::Buffer::begin() {
return position(0); return position(0);
} }
appl::Buffer::Iterator appl::Buffer::end(void) { appl::Buffer::Iterator appl::Buffer::end() {
// TODO : chek the validity of the char ... // TODO : chek the validity of the char ...
return position( m_data.size() ); return position( m_data.size() );
} }
appl::Buffer::Iterator appl::Buffer::cursor(void) { appl::Buffer::Iterator appl::Buffer::cursor() {
if (m_cursorPos<= 0) { if (m_cursorPos<= 0) {
return begin(); return begin();
} }
return position( m_cursorPos ); return position( m_cursorPos );
} }
appl::Buffer::Iterator appl::Buffer::selectStart(void) { appl::Buffer::Iterator appl::Buffer::selectStart() {
return position( getStartSelectionPos() ); return position( getStartSelectionPos() );
} }
appl::Buffer::Iterator appl::Buffer::selectStop(void) { appl::Buffer::Iterator appl::Buffer::selectStop() {
return position( getStopSelectionPos() ); return position( getStopSelectionPos() );
} }
appl::Buffer::Buffer() :
appl::Buffer::Buffer(void) : signalIsModify(this, "is-modify", ""),
signalIsSave(this, "is-save", ""),
signalSelectChange(this, "select-change", ""),
signalChangeName(this, "change-name", ""),
m_hasFileName(false), m_hasFileName(false),
m_fileName(""), m_fileName(""),
m_isModify(false), m_isModify(false),
@@ -124,63 +119,72 @@ appl::Buffer::Buffer(void) :
m_cursorSelectPos(-1), m_cursorSelectPos(-1),
m_cursorPreferredCol(-1), m_cursorPreferredCol(-1),
m_nbLines(1), m_nbLines(1),
m_highlight(NULL) { m_highlight(nullptr) {
addObjectType("appl::Buffer"); addObjectType("appl::Buffer");
static int32_t bufferBaseId = 0; static int32_t bufferBaseId = 0;
m_fileName = "No Name " + std::to_string(bufferBaseId); m_fileName = "No Name " + etk::to_string(bufferBaseId);
bufferBaseId++; bufferBaseId++;
addEventId(eventIsModify);
addEventId(eventIsSave);
addEventId(eventSelectChange);
addEventId(eventChangeName);
} }
appl::Buffer::~Buffer(void) { void appl::Buffer::init() {
if (m_highlight == NULL) { ewol::Object::init();
appl::Highlight::release(m_highlight); }
}
appl::Buffer::~Buffer() {
APPL_ERROR("REAL remove buffer : '" << propertyName << "'");
} }
bool appl::Buffer::loadFile(const std::string& _name) { bool appl::Buffer::loadFile(const std::string& _name) {
APPL_DEBUG("Load file : '" << _name << "'"); APPL_DEBUG("Convert filename :'" << _name << "'");
m_fileName = _name; etk::FSNode file(_name);
std::string name = file.getName();
APPL_INFO("Load file : '" << name << "'");
m_fileName = name;
m_hasFileName = true; m_hasFileName = true;
m_isModify = true; m_isModify = true;
m_cursorPos = 0; m_cursorPos = 0;
setHighlightType(""); setHighlightType("");
etk::FSNode file(m_fileName); m_nbLines = 0;
if (file.exist() == false) { if (file.exist() == false) {
APPL_INFO("File doesn not exist !!! " << file); APPL_ERROR("File : '" << m_fileName << "' does not exist...");
return false; return false;
} }
m_nbLines = 0; if (file.fileOpenRead() == false) {
if (true == m_data.dumpFrom(file) ) { APPL_ERROR("File : '" << m_fileName << "' Fail to open in read mode");
countNumberofLine(); return false;
tryFindHighlightType();
m_isModify = false;
return true;
} }
return false; m_data = file.fileReadAllString();
file.fileClose();
countNumberofLine();
tryFindHighlightType();
m_isModify = false;
return true;
} }
void appl::Buffer::setFileName(const std::string& _name) { void appl::Buffer::setFileName(const std::string& _name) {
if (m_fileName == _name) { APPL_DEBUG("Convert filename :'" << _name << "'");
etk::FSNode file(_name);
std::string name = file.getName();
if (m_fileName == name) {
return; return;
} }
m_fileName = _name; m_fileName = name;
m_hasFileName = true; m_hasFileName = true;
generateEventId(eventChangeName); signalChangeName.emit();
setModification(true); setModification(true);
} }
bool appl::Buffer::storeFile(void) { bool appl::Buffer::storeFile() {
etk::FSNode file(m_fileName); etk::FSNode file(m_fileName);
if (true == m_data.dumpIn(file) ) { if (file.fileOpenWrite() == false) {
APPL_INFO("saving file : " << file); APPL_ERROR("File : '" << m_fileName << "' Fail to open in write mode");
setModification(false); return false;
return true;
} }
return false; file.fileWriteAll(m_data);
file.fileClose();
APPL_INFO("saving file : " << m_fileName);
setModification(false);
return true;
} }
void appl::Buffer::setModification(bool _status) { void appl::Buffer::setModification(bool _status) {
@@ -189,19 +193,19 @@ void appl::Buffer::setModification(bool _status) {
} }
m_isModify = _status; m_isModify = _status;
if (m_isModify == true) { if (m_isModify == true) {
generateEventId(eventIsModify); signalIsModify.emit();
} else { } else {
generateEventId(eventIsSave); signalIsSave.emit();
} }
} }
// TODO : Naming error // TODO : Naming error
void appl::Buffer::countNumberofLine(void) { void appl::Buffer::countNumberofLine() {
m_nbLines = 1; m_nbLines = 1;
for (Iterator it = begin(); for (Iterator it = begin();
(bool)it == true; (bool)it == true;
++it) { ++it) {
if (*it == etk::UChar::Return) { if (*it == u32char::Return) {
++m_nbLines; ++m_nbLines;
} }
} }
@@ -210,7 +214,7 @@ void appl::Buffer::countNumberofLine(void) {
appl::Buffer::Iterator appl::Buffer::getStartLine(const appl::Buffer::Iterator& _pos) { appl::Buffer::Iterator appl::Buffer::getStartLine(const appl::Buffer::Iterator& _pos) {
appl::Buffer::Iterator startPos; appl::Buffer::Iterator startPos;
if (false == searchBack(_pos, etk::UChar::Return, startPos)) { if (false == searchBack(_pos, u32char::Return, startPos)) {
return begin(); return begin();
} }
// note search will return the position of \n ==> the lione start just after ... // note search will return the position of \n ==> the lione start just after ...
@@ -219,7 +223,7 @@ appl::Buffer::Iterator appl::Buffer::getStartLine(const appl::Buffer::Iterator&
appl::Buffer::Iterator appl::Buffer::getEndLine(const appl::Buffer::Iterator& _pos) { appl::Buffer::Iterator appl::Buffer::getEndLine(const appl::Buffer::Iterator& _pos) {
appl::Buffer::Iterator endPos; appl::Buffer::Iterator endPos;
if (false == search(_pos, etk::UChar::Return, endPos)) { if (false == search(_pos, u32char::Return, endPos)) {
endPos = end(); endPos = end();
} }
// Note the line end at the \n // Note the line end at the \n
@@ -298,7 +302,7 @@ bool appl::Buffer::search(const appl::Buffer::Iterator& _pos,
for (Iterator it = _pos; for (Iterator it = _pos;
(bool)it == true; (bool)it == true;
++it) { ++it) {
if (tolower(*it) == firstElement) { if ((char32_t)tolower(*it) == firstElement) {
// find the first char ==> check next... // find the first char ==> check next...
bool find = true; bool find = true;
Iterator tmp = it; Iterator tmp = it;
@@ -370,7 +374,7 @@ bool appl::Buffer::searchBack(const appl::Buffer::Iterator& _pos,
(bool)it == true; (bool)it == true;
--it) { --it) {
//APPL_DEBUG("compare : " << *it << " ?= " << _search); //APPL_DEBUG("compare : " << *it << " ?= " << _search);
if (tolower(*it) == lastElement) { if ((char32_t)tolower(*it) == lastElement) {
// find the last char ==> check previous... // find the last char ==> check previous...
bool find = true; bool find = true;
_result = it; _result = it;
@@ -414,13 +418,13 @@ void appl::Buffer::moveCursor(int64_t _pos) {
if (m_cursorPos == m_cursorSelectPos) { if (m_cursorPos == m_cursorSelectPos) {
m_cursorSelectPos = -1; m_cursorSelectPos = -1;
} }
generateEventId(eventSelectChange); signalSelectChange.emit();
return; return;
} }
// move mode // move mode
m_cursorPos = _pos; m_cursorPos = _pos;
m_cursorSelectPos = -1; m_cursorSelectPos = -1;
generateEventId(eventSelectChange); signalSelectChange.emit();
} }
bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos, bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
@@ -429,16 +433,16 @@ bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
char32_t currentValue = *position(_startPos); char32_t currentValue = *position(_startPos);
_beginPos = begin(); _beginPos = begin();
_endPos = end(); _endPos = end();
if ( currentValue == etk::UChar::Tabulation if ( currentValue == u32char::Tabulation
|| currentValue == etk::UChar::Space) { || currentValue == u32char::Space) {
APPL_DEBUG("select spacer"); APPL_DEBUG("select spacer");
// Search back // Search back
for (Iterator it = --position(_startPos); for (Iterator it = --position(_startPos);
(bool)it == true; (bool)it == true;
--it) { --it) {
currentValue = *it; currentValue = *it;
if ( currentValue != etk::UChar::Tabulation if ( currentValue != u32char::Tabulation
&& currentValue != etk::UChar::Space) { && currentValue != u32char::Space) {
_beginPos = ++it; _beginPos = ++it;
break; break;
} }
@@ -448,14 +452,14 @@ bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
(bool)it == true; (bool)it == true;
++it) { ++it) {
currentValue = *it; currentValue = *it;
if ( currentValue != etk::UChar::Tabulation if ( currentValue != u32char::Tabulation
&& currentValue != etk::UChar::Space) { && currentValue != u32char::Space) {
_endPos = it; _endPos = it;
break; break;
} }
} }
return true; return true;
} else if( etk::isSpecialChar(currentValue) == false } else if( u32char::isSpecialChar(currentValue) == false
|| currentValue == '_') { || currentValue == '_') {
APPL_DEBUG("select normal Char"); APPL_DEBUG("select normal Char");
// Search back // Search back
@@ -464,7 +468,7 @@ bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
--it) { --it) {
currentValue = *it; currentValue = *it;
if ( currentValue != '_' if ( currentValue != '_'
&& true == etk::isSpecialChar(currentValue)) { && u32char::isSpecialChar(currentValue) == true) {
_beginPos = ++it; _beginPos = ++it;
break; break;
} }
@@ -475,7 +479,7 @@ bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
++it) { ++it) {
currentValue = *it; currentValue = *it;
if ( currentValue != '_' if ( currentValue != '_'
&& true == etk::isSpecialChar(currentValue)) { && u32char::isSpecialChar(currentValue) == true) {
_endPos = it; _endPos = it;
break; break;
} }
@@ -513,12 +517,12 @@ bool appl::Buffer::getPosAround(const appl::Buffer::Iterator& _startPos,
void appl::Buffer::setSelectionPos(const appl::Buffer::Iterator& _pos) { void appl::Buffer::setSelectionPos(const appl::Buffer::Iterator& _pos) {
m_cursorSelectPos = _pos; m_cursorSelectPos = _pos;
generateEventId(eventSelectChange); signalSelectChange.emit();
} }
void appl::Buffer::unSelect(void) { void appl::Buffer::unSelect() {
m_cursorSelectPos = -1; m_cursorSelectPos = -1;
generateEventId(eventSelectChange); signalSelectChange.emit();
} }
static const char *ControlCodeTable[32] = { static const char *ControlCodeTable[32] = {
@@ -528,21 +532,21 @@ static const char *ControlCodeTable[32] = {
void appl::Buffer::expand(int32_t& _indent, const char32_t& _value, std::u32string& _out) const { void appl::Buffer::expand(int32_t& _indent, const char32_t& _value, std::u32string& _out) const {
_out.clear(); _out.clear();
int32_t tabDist = 4; int32_t tabDist = 4;
if (_value == etk::UChar::Tabulation) { if (_value == u32char::Tabulation) {
int32_t nSpaces = tabDist - (_indent % tabDist); int32_t nSpaces = tabDist - (_indent % tabDist);
for (int32_t iii=0; iii<nSpaces; iii++) { for (int32_t iii=0; iii<nSpaces; iii++) {
_out += etk::UChar::Space; _out += u32char::Space;
} }
return; return;
} }
// convert ASCII control codes to readable character sequences // convert ASCII control codes to readable character sequences
if (_value == etk::UChar::Null) { if (_value == u32char::Null) {
_out += U"<nul>"; _out += U"<nul>";
return; return;
} }
if (_value == etk::UChar::Return) { if (_value == u32char::Return) {
// nothing to display... // nothing to display...
_out += etk::UChar::Return; _out += u32char::Return;
return; return;
} }
if (_value <= 31) { if (_value <= 31) {
@@ -555,7 +559,7 @@ void appl::Buffer::expand(int32_t& _indent, const char32_t& _value, std::u32stri
_out += '>'; _out += '>';
return; return;
} }
if (_value == etk::UChar::Delete) { if (_value == u32char::Delete) {
_out += U"<del>"; _out += U"<del>";
return; return;
} }
@@ -572,7 +576,7 @@ appl::Buffer::Iterator appl::Buffer::countForwardNLines(const appl::Buffer::Iter
(bool)it == true; (bool)it == true;
++it) { ++it) {
value = *it; value = *it;
if (value == etk::UChar::Return) { if (value == u32char::Return) {
lineCount++; lineCount++;
if (lineCount == _nLines) { if (lineCount == _nLines) {
//APPL_INFO(" == > (1) at position=" << myPosIt.Position()+1 ); //APPL_INFO(" == > (1) at position=" << myPosIt.Position()+1 );
@@ -592,7 +596,7 @@ appl::Buffer::Iterator appl::Buffer::countBackwardNLines(const appl::Buffer::Ite
(bool)it == true; (bool)it == true;
--it) { --it) {
value = *it; value = *it;
if (value == etk::UChar::Return) { if (value == u32char::Return) {
lineCount++; lineCount++;
if (lineCount >= _nLines) { if (lineCount >= _nLines) {
//APPL_INFO(" == > (1) at position=" << myPosIt.Position()+1 ); //APPL_INFO(" == > (1) at position=" << myPosIt.Position()+1 );
@@ -624,8 +628,6 @@ bool appl::Buffer::copy(std::string& _data) {
void appl::Buffer::copy(std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { void appl::Buffer::copy(std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) {
_data.clear(); _data.clear();
int64_t startPos = getStartSelectionPos();
int64_t endPos = getStopSelectionPos();
for (Iterator it = _pos; for (Iterator it = _pos;
it != _posEnd && it != _posEnd &&
(bool)it == true; (bool)it == true;
@@ -639,8 +641,8 @@ bool appl::Buffer::write(const std::string& _data, const appl::Buffer::Iterator&
if (position < 0){ if (position < 0){
position = 0; position = 0;
} }
APPL_ERROR("writye at pos: " << (int64_t)_pos << " ==> " << position); APPL_VERBOSE("write at pos: " << (int64_t)_pos << " ==> " << position << " data : " << _data);
m_data.insert(position, (int8_t*)(_data.c_str()), _data.size()); m_data.insert((size_t)position, _data);
if (m_cursorPos < 0) { if (m_cursorPos < 0) {
m_cursorPos = 0; m_cursorPos = 0;
} }
@@ -657,7 +659,7 @@ bool appl::Buffer::replace(const std::string& _data, const appl::Buffer::Iterato
if (position < 0){ if (position < 0){
position = 0; position = 0;
} }
m_data.replace(position, (int64_t)_posEnd-(int64_t)_pos, (int8_t*)(_data.c_str()), _data.size()); m_data.replace(m_data.begin() + position, m_data.begin() + (int64_t)_posEnd, _data.begin(), _data.end());
regenerateHighLightAt(position, (int64_t)_posEnd-(int64_t)_pos, _data.size()); regenerateHighLightAt(position, (int64_t)_posEnd-(int64_t)_pos, _data.size());
m_selectMode = false; m_selectMode = false;
moveCursor(position+_data.size()); moveCursor(position+_data.size());
@@ -666,13 +668,13 @@ bool appl::Buffer::replace(const std::string& _data, const appl::Buffer::Iterato
return true; return true;
} }
void appl::Buffer::removeSelection(void) { void appl::Buffer::removeSelection() {
if (hasTextSelected() == false) { if (hasTextSelected() == false) {
return; return;
} }
int64_t startPos = getStartSelectionPos(); int64_t startPos = getStartSelectionPos();
int64_t endPos = getStopSelectionPos(); int64_t endPos = getStopSelectionPos();
m_data.remove(startPos, endPos-startPos); m_data.erase(startPos, endPos-startPos);
regenerateHighLightAt(startPos, endPos-startPos, 0); regenerateHighLightAt(startPos, endPos-startPos, 0);
m_selectMode = false; m_selectMode = false;
moveCursor(startPos); moveCursor(startPos);
@@ -680,9 +682,9 @@ void appl::Buffer::removeSelection(void) {
setModification(true); setModification(true);
} }
void appl::Buffer::tryFindHighlightType(void) { void appl::Buffer::tryFindHighlightType() {
etk::FSNode file(m_fileName); etk::FSNode file(m_fileName);
std::string type = appl::highlightManager::getTypeExtention(file.fileGetExtention()); std::string type = appl::highlightManager::getTypeFile(file.getNameFile());
if (type.size() == 0) { if (type.size() == 0) {
return; return;
} }
@@ -693,21 +695,19 @@ void appl::Buffer::tryFindHighlightType(void) {
void appl::Buffer::setHighlightType(const std::string& _type) { void appl::Buffer::setHighlightType(const std::string& _type) {
m_highlightType = ""; m_highlightType = "";
cleanHighLight(); cleanHighLight();
if (m_highlight == NULL) { m_highlight.reset();
appl::Highlight::release(m_highlight);
}
std::string resourceName = appl::highlightManager::getFileWithTypeType(_type); std::string resourceName = appl::highlightManager::getFileWithTypeType(_type);
if (resourceName == "") { if (resourceName == "") {
return; return;
} }
m_highlightType = _type; m_highlightType = _type;
m_highlight = appl::Highlight::keep(resourceName); m_highlight = appl::Highlight::create(resourceName);
generateHighLightAt(0, m_data.size()); generateHighLightAt(0, m_data.size());
} }
void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64_t _nbAdded) { void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64_t _nbAdded) {
// prevent ERROR... // prevent ERROR...
if (NULL == m_highlight) { if (m_highlight == nullptr) {
return; return;
} }
// prevent No data Call // prevent No data Call
@@ -716,7 +716,7 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64
return; return;
} }
// normal case // normal case
//APPL_INFO("(pos="<<pos<<", nbDeleted="<<nbDeleted<<", nbAdded=" << nbAdded << "\");"); APPL_VERBOSE("(_pos="<<_pos<<", _nbDeleted="<<_nbDeleted<<", _nbAdded=" << _nbAdded << "\");");
int64_t posEnd = _pos + _nbDeleted; int64_t posEnd = _pos + _nbDeleted;
// search position of the old element to reparse IT... // search position of the old element to reparse IT...
int64_t startId; int64_t startId;
@@ -729,60 +729,71 @@ void appl::Buffer::regenerateHighLightAt(int64_t _pos, int64_t _nbDeleted, int64
} }
// find element previous // find element previous
findMainHighLightPosition(_pos, posEnd, startId, stopId, true); findMainHighLightPosition(_pos, posEnd, startId, stopId, true);
APPL_VERBOSE(" list old parse:");
for (auto &elem : m_HLDataPass1) {
APPL_VERBOSE(" " << elem.start << "=>" << elem.stop);
}
// Remove previous element to prevent many errors like parsing of // for example
startId--;
APPL_VERBOSE("Find startId=" << startId << " stopId=" << stopId << " list size=" << m_HLDataPass1.size());
// remove deprecated element // remove deprecated element
if ( startId == -1 if ( startId <= -1
&& stopId == -1) { && stopId <= -1) {
m_HLDataPass1.clear(); m_HLDataPass1.clear();
} else if (startId == -1) { APPL_VERBOSE("1 * clear");
} else if (startId <= -1) {
if (stopId == 0){ if (stopId == 0){
m_HLDataPass1.erase(m_HLDataPass1.begin()); m_HLDataPass1.erase(m_HLDataPass1.begin());
//APPL_DEBUG("1 * Erase 0"); APPL_VERBOSE("1 * Erase 0");
} else { } else {
m_HLDataPass1.erase(m_HLDataPass1.begin(), m_HLDataPass1.begin()+stopId); m_HLDataPass1.erase(m_HLDataPass1.begin(), m_HLDataPass1.begin()+stopId);
//APPL_DEBUG("2 * Erase 0->" << stopId); APPL_VERBOSE("2 * Erase 0->" << stopId);
} }
} else if (stopId == -1) { } else if (stopId <= -1) {
//APPL_DEBUG("3 * Erase " << startId+1 << "-> end"); APPL_VERBOSE("3 * Erase " << startId+1 << "-> end");
m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1, m_HLDataPass1.end()); m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1, m_HLDataPass1.end());
stopId = -1; stopId = -1;
} else { } else {
int32_t currentSize = m_HLDataPass1.size(); int32_t currentSize = m_HLDataPass1.size();
//APPL_DEBUG("4 * Erase " << startId+1 << "->" << stopId << " in " << currentSize << " elements" ); APPL_VERBOSE("4 * Erase " << startId+1 << "->" << stopId << " in " << currentSize << " elements" );
m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1, m_HLDataPass1.begin()+stopId); m_HLDataPass1.erase(m_HLDataPass1.begin()+startId+1, m_HLDataPass1.begin()+stopId+1);
if (stopId == currentSize-1) { if (stopId == currentSize-1) {
stopId = -1; stopId = -1;
} }
} }
//APPL_DEBUG("new size=" << (int32_t)m_HLDataPass1.size()-1); APPL_VERBOSE(" list afterRemove:");
for (auto &elem : m_HLDataPass1) {
APPL_VERBOSE(" " << elem.start << "=>" << elem.stop);
}
// update position after the range position : // update position after the range position :
int64_t elemStart; int64_t elemStart;
if (startId == -1) { if (startId <= -1) {
elemStart = 0; elemStart = 0;
} else { } else {
elemStart = startId+1; elemStart = startId+1;
} }
for (int64_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) { for (auto it(m_HLDataPass1.begin()+elemStart); it != m_HLDataPass1.end(); ++it) {
//APPL_DEBUG("move element=" << i); //APPL_DEBUG("move element=" << i);
m_HLDataPass1[iii].beginStart += _nbAdded - _nbDeleted; it->start += _nbAdded - _nbDeleted;
m_HLDataPass1[iii].beginStop += _nbAdded - _nbDeleted; it->stop += _nbAdded - _nbDeleted;
m_HLDataPass1[iii].endStart += _nbAdded - _nbDeleted;
m_HLDataPass1[iii].endStop += _nbAdded - _nbDeleted;
} }
//Regenerate Element inside range //Regenerate Element inside range
if ( startId == -1 if ( startId <= -1
&& stopId == -1) { && stopId <= -1) {
//APPL_DEBUG("******* Regenerate ALL"); APPL_VERBOSE("******* Regenerate ALL");
generateHighLightAt(0, m_data.size()); generateHighLightAt(0, m_data.size());
} else if(-1 == startId) { } else if(startId <= -1) {
//APPL_DEBUG("******* Regenerate START"); APPL_VERBOSE("******* Regenerate START");
generateHighLightAt(0, m_HLDataPass1[0].beginStart, 0); generateHighLightAt(0, m_HLDataPass1[0].start, 0);
} else if(-1 == stopId) { } else if(stopId <= -1) {
//APPL_DEBUG("******* Regenerate STOP"); APPL_VERBOSE("******* Regenerate STOP");
generateHighLightAt(m_HLDataPass1[m_HLDataPass1.size() -1].endStop, m_data.size(), m_HLDataPass1.size()); generateHighLightAt(m_HLDataPass1[m_HLDataPass1.size() -1].stop, m_data.size(), m_HLDataPass1.size());
} else { } else {
//APPL_DEBUG("******* Regenerate RANGE"); APPL_VERBOSE("******* Regenerate RANGE");
generateHighLightAt(m_HLDataPass1[startId].endStop, m_HLDataPass1[startId+1].beginStart, startId+1); generateHighLightAt(m_HLDataPass1[startId].stop, m_HLDataPass1[startId+1].start, startId+1);
} }
} }
@@ -830,8 +841,8 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos,
------------ ------------- ---------- ------------ ------------- ----------
S=-1 *************** E S=-1 *************** E
*/ */
for (int32_t iii = 0; iii < m_HLDataPass1.size(); ++iii) { for (size_t iii = 0; iii < m_HLDataPass1.size(); ++iii) {
if (m_HLDataPass1[iii].endStop > _startPos) { if (m_HLDataPass1[iii].stop > _startPos) {
break; break;
} }
_startId = iii; _startId = iii;
@@ -851,8 +862,8 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos,
} else { } else {
elemStart = _startId+1; elemStart = _startId+1;
} }
for (int32_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) { for (size_t iii = elemStart; iii < m_HLDataPass1.size(); ++iii) {
if (m_HLDataPass1[iii].beginStart > _endPos) { if (m_HLDataPass1[iii].start > _endPos) {
_stopId = iii; _stopId = iii;
break; break;
} }
@@ -860,46 +871,47 @@ void appl::Buffer::findMainHighLightPosition(int64_t _startPos,
} }
void appl::Buffer::generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _addingPos) { void appl::Buffer::generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _addingPos) {
if (NULL == m_highlight) { if (m_highlight == nullptr) {
return; return;
} }
//APPL_DEBUG("area : ("<<pos<<","<<endPos<<") insert at : " << addingPos); //APPL_DEBUG("area : ("<<pos<<","<<endPos<<") insert at : " << addingPos);
m_highlight->parse(_pos, _endPos, m_HLDataPass1, _addingPos, m_data); m_highlight->parse(_pos, _endPos, m_HLDataPass1, _addingPos, m_data);
} }
void appl::Buffer::cleanHighLight(void) { void appl::Buffer::cleanHighLight() {
// remove all element in the list... // remove all element in the list...
m_HLDataPass1.clear(); m_HLDataPass1.clear();
} }
appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(int64_t _pos, int64_t &_starPos) { appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(int64_t _pos, int64_t &_starPos) {
int32_t start = etk_max(0, _starPos-1); int32_t start = std::max((int64_t)0, _starPos-1);
for (int32_t iii = start; iii < m_HLDataPass1.size(); ++iii) { for (size_t iii = start; iii < m_HLDataPass1.size(); ++iii) {
_starPos = iii; _starPos = iii;
if ( m_HLDataPass1[iii].beginStart <= _pos if ( m_HLDataPass1[iii].start <= _pos
&& m_HLDataPass1[iii].endStop > _pos) { && m_HLDataPass1[iii].stop > _pos) {
return &m_HLDataPass1[iii]; return &m_HLDataPass1[iii];
} }
if(m_HLDataPass1[iii].beginStart > _pos) { if(m_HLDataPass1[iii].start > _pos) {
return NULL; return nullptr;
} }
} }
return NULL; return nullptr;
} }
void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, int64_t _HLStart, int64_t _nbLines) { void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, const appl::Buffer::Iterator& _HLStart, int64_t _nbLines) {
_MData.posHLPass1 = 0; _MData.posHLPass1 = 0;
_MData.posHLPass2 = 0; _MData.posHLPass2 = 0;
if (NULL == m_highlight) { if (m_highlight == nullptr) {
return; return;
} }
//GTimeVal timeStart; //int64_t timeStart = ewol::getTime();
//g_get_current_time(&timeStart);
_HLStart = (int32_t)getStartLine(position(_HLStart)); appl::Buffer::Iterator HLStartLine = getStartLine(_HLStart);
int64_t HLStartPos = (int64_t)HLStartLine;
_MData.HLData.clear(); _MData.HLData.clear();
int64_t HLStop = countForwardNLines(position(_HLStart), _nbLines); int64_t HLStop = (int64_t)countForwardNLines(HLStartLine, _nbLines);
int64_t startId = 0; int64_t startId = 0;
int64_t stopId = 0; int64_t stopId = 0;
// find element previous // find element previous
@@ -911,67 +923,76 @@ void appl::Buffer::hightlightGenerateLines(appl::DisplayHLData& _MData, int64_t
endSearch = m_HLDataPass1.size(); endSearch = m_HLDataPass1.size();
} }
int64_t kkk; int64_t kkk;
for (kkk = etk_max(startId, 0); kkk < endSearch; ++kkk) { for (kkk = std::max(startId, (int64_t)0); kkk < endSearch; ++kkk) {
// empty section : // empty section :
if (kkk == 0) { if (kkk == 0) {
if (_HLStart < m_HLDataPass1[kkk].beginStart) { if (HLStartPos < m_HLDataPass1[kkk].start) {
//APPL_DEBUG(" == > (empty section 1 ) k="<<k<<" start="<<HLStart<<" stop="<<m_HLDataPass1[k].beginStart ); APPL_VERBOSE(" == > (empty section 1 ) kkk=" << kkk <<
m_highlight->parse2(_HLStart, " start=" << HLStartPos <<
m_HLDataPass1[kkk].beginStart, " stop=" << m_HLDataPass1[kkk].start );
_MData.HLData, m_highlight->parse2(HLStartPos,
m_data); m_HLDataPass1[kkk].start,
_MData.HLData,
m_data);
} // else : nothing to do ... } // else : nothing to do ...
} else { } else {
//APPL_DEBUG(" == > (empty section 2 ) k="<<k<<" start="<<m_HLDataPass1[k-1].endStop<<" stop="<<m_HLDataPass1[k].beginStart ); APPL_VERBOSE(" == > (empty section 2 ) kkk=" << kkk <<
m_highlight->parse2(m_HLDataPass1[kkk-1].endStop, " start=" << m_HLDataPass1[kkk-1].stop <<
m_HLDataPass1[kkk].beginStart, " stop=" << m_HLDataPass1[kkk].start );
_MData.HLData, m_highlight->parse2(m_HLDataPass1[kkk-1].stop,
m_data); m_HLDataPass1[kkk].start,
_MData.HLData,
m_data);
} }
// under section : // under section :
//APPL_DEBUG(" == > (under section ) k="<<k<<" start="<<m_HLDataPass1[k].beginStart<<" stop="<<m_HLDataPass1[k].endStop << " subSectionOfID=" << 99999999); APPL_VERBOSE(" == > (under section ) kkk="<<kkk<<" start="<<m_HLDataPass1[kkk].start<<" stop="<<m_HLDataPass1[kkk].stop << " subSectionOfID=" << 99999999);
// TODO : ... m_highlight->parseSubElement(m_HLDataPass1[kkk],
_MData.HLData,
m_data);
} }
if (endSearch == (int32_t)m_HLDataPass1.size() ){ if (endSearch == (int32_t)m_HLDataPass1.size() ){
//if( k < (int32_t)m_HLDataPass1.size()) { //if( k < (int32_t)m_HLDataPass1.size()) {
if (m_HLDataPass1.size() != 0) { if (m_HLDataPass1.size() != 0) {
//APPL_DEBUG(" == > (empty section 3 ) k="<<k<<" start="<<m_HLDataPass1[k-1].endStop<<" stop="<<HLStop ); APPL_VERBOSE(" == > (empty section 3 ) kkk=" << kkk <<
m_highlight->parse2(m_HLDataPass1[kkk-1].endStop, " start=" << m_HLDataPass1[kkk-1].stop <<
HLStop, " stop=" << HLStop );
_MData.HLData, m_highlight->parse2(m_HLDataPass1[kkk-1].stop,
m_data); HLStop,
_MData.HLData,
m_data);
} else { } else {
//APPL_DEBUG(" == > (empty section 4 ) k="<<k<<" start=0 stop="<<HLStop ); APPL_VERBOSE(" == > (empty section 4 ) kkk=" << kkk <<
" start=0 stop=" << HLStop );
m_highlight->parse2(0, m_highlight->parse2(0,
HLStop, HLStop,
_MData.HLData, _MData.HLData,
m_data); m_data);
} }
} }
/*
//GTimeVal timeStop; int64_t timeStop = ewol::getTime();
//g_get_current_time(&timeStop); APPL_DEBUG("Display 2nd pass = " << (timeStop-timeStart)/1000.0f << " milli-second");
//APPL_DEBUG("Display reAnnalyse = " << timeStop.tv_usec - timeStart.tv_usec << " micro-s"); */
} }
appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(appl::DisplayHLData& _MData, int64_t _pos) { appl::HighlightInfo* appl::Buffer::getElementColorAtPosition(appl::DisplayHLData& _MData, int64_t _pos) {
int64_t start = etk_max(0, _MData.posHLPass2-1); int64_t start = std::max((int64_t)0, _MData.posHLPass2-1);
for (int64_t iii=start; iii<(int32_t)_MData.HLData.size(); iii++) { for (int64_t iii=start; iii<(int32_t)_MData.HLData.size(); iii++) {
_MData.posHLPass2 = iii; _MData.posHLPass2 = iii;
if( _MData.HLData[iii].beginStart <= _pos if( _MData.HLData[iii].start <= _pos
&& _MData.HLData[iii].endStop > _pos) && _MData.HLData[iii].stop > _pos)
{ {
return &_MData.HLData[iii]; return &_MData.HLData[iii];
} }
if(_MData.HLData[iii].beginStart > _pos) { if(_MData.HLData[iii].start > _pos) {
return getElementColorAtPosition(_pos, _MData.posHLPass1); return getElementColorAtPosition(_pos, _MData.posHLPass1);
} }
} }
return getElementColorAtPosition(_pos, _MData.posHLPass1); return getElementColorAtPosition(_pos, _MData.posHLPass1);
} }
uint32_t appl::Buffer::getCursorLinesId(void) { uint32_t appl::Buffer::getCursorLinesId() {
if (m_data.size() == 0) { if (m_data.size() == 0) {
return 0; return 0;
} }
@@ -979,9 +1000,52 @@ uint32_t appl::Buffer::getCursorLinesId(void) {
for (Iterator it = begin(); for (Iterator it = begin();
(bool)it == true && it <= cursor(); (bool)it == true && it <= cursor();
++it) { ++it) {
if (*it == etk::UChar::Return) { if (*it == u32char::Return) {
++line; ++line;
} }
} }
return line; return line;
} }
namespace etk {
template<> std::string to_string<ememory::SharedPtr<appl::Buffer>>(const ememory::SharedPtr<appl::Buffer>& _obj) {
if (_obj != nullptr) {
return _obj->getFileName();
}
return "";
}
template<> std::u32string to_u32string<ememory::SharedPtr<appl::Buffer>>(const ememory::SharedPtr<appl::Buffer>& _obj) {
return etk::to_u32string(etk::to_string(_obj));
}
template<> bool from_string<ememory::SharedPtr<appl::Buffer>>(ememory::SharedPtr<appl::Buffer>& _variableRet, const std::string& _value) {
if (_variableRet != nullptr) {
_variableRet->loadFile(_value);
return true;
}
return false;
}
template<> bool from_string<ememory::SharedPtr<appl::Buffer>>(ememory::SharedPtr<appl::Buffer>& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, etk::to_string(_value));
}
template<> std::string to_string<appl::Buffer>(const appl::Buffer& _obj) {
return _obj.getFileName();
}
template<> std::u32string to_u32string<appl::Buffer>(const appl::Buffer& _obj) {
return etk::to_u32string(etk::to_string(_obj));
}
template<> bool from_string<appl::Buffer>(appl::Buffer& _variableRet, const std::string& _value) {
_variableRet.loadFile(_value);
return true;
}
template<> bool from_string<appl::Buffer>(appl::Buffer& _variableRet, const std::u32string& _value) {
return from_string(_variableRet, etk::to_string(_value));
}
};
#include <esignal/details/Signal.hxx>
// declare for signal event
ESIGNAL_DECLARE_SIGNAL(ememory::SharedPtr<appl::Buffer>);

View File

@@ -1,23 +1,18 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_BUFFER_H__ #include <etk/types.h>
#define __APPL_BUFFER_H__
#include <etk/UString.h>
#include <etk/os/FSNode.h> #include <etk/os/FSNode.h>
#include <etk/unicode.h>
#include <ewol/ewol.h> #include <ewol/ewol.h>
#include <etk/Buffer.h> #include <ewol/object/Object.h>
#include <ewol/renderer/EObject.h>
#include <ewol/widget/Widget.h> #include <ewol/widget/Widget.h>
#include <ewol/compositing/Text.h> #include <ewol/compositing/Text.h>
#include <appl/Highlight.h> #include <appl/Highlight.h>
#include <esignal/Signal.h>
namespace appl { namespace appl {
@@ -27,7 +22,10 @@ namespace appl {
int64_t posHLPass1; int64_t posHLPass1;
int64_t posHLPass2; int64_t posHLPass2;
}; };
class Buffer : public ewol::EObject { class Buffer;
using BufferShared = ememory::SharedPtr<appl::Buffer>;
using BufferWeak = ememory::WeakPtr<appl::Buffer>;
class Buffer : public ewol::Object {
public: public:
class Iterator { class Iterator {
// Private data : // Private data :
@@ -39,10 +37,10 @@ namespace appl {
/** /**
* @brief Basic itarator constructor with no link. * @brief Basic itarator constructor with no link.
*/ */
Iterator(void): Iterator():
m_current(0), m_current(0),
m_data(NULL), m_data(nullptr),
m_value(etk::UChar::Null) { m_value(u32char::Null) {
// nothing to do ... // nothing to do ...
}; };
/** /**
@@ -52,7 +50,7 @@ namespace appl {
Iterator(const Iterator & _obj): Iterator(const Iterator & _obj):
m_current(_obj.m_current), m_current(_obj.m_current),
m_data(_obj.m_data), m_data(_obj.m_data),
m_value(etk::UChar::Null) { m_value(u32char::Null) {
// nothing to do ... // nothing to do ...
}; };
/** /**
@@ -63,26 +61,26 @@ namespace appl {
Iterator& operator=(const Iterator & _obj) { Iterator& operator=(const Iterator & _obj) {
m_current = _obj.m_current; m_current = _obj.m_current;
m_data = _obj.m_data; m_data = _obj.m_data;
m_value = etk::UChar::Null; m_value = u32char::Null;
return *this; return *this;
}; };
/** /**
* @brief Basic destructor * @brief Basic destructor
*/ */
~Iterator(void) { virtual ~Iterator() {
m_current = 0; m_current = 0;
m_data = NULL; m_data = nullptr;
m_value = etk::UChar::Null; m_value = u32char::Null;
}; };
/** /**
* @brief basic boolean cast * @brief basic boolean cast
* @return true if the element is present in buffer * @return true if the element is present in buffer
*/ */
operator bool (void) const { operator bool () const {
if (m_data == NULL) { if (m_data == nullptr) {
return false; return false;
} }
if (m_current >= m_data->m_data.size()) { if (m_current >= (int64_t)m_data->m_data.size()) {
return false; return false;
} }
if (m_current < 0) { if (m_current < 0) {
@@ -94,15 +92,15 @@ namespace appl {
* @brief basic boolean cast * @brief basic boolean cast
* @return true if the element is present in buffer * @return true if the element is present in buffer
*/ */
operator int64_t (void) const { operator int64_t () const {
if (m_data == NULL) { if (m_data == nullptr) {
return 0; return 0;
} }
if (m_current < 0) { if (m_current < 0) {
return 0; return 0;
} }
if (m_current > m_data->m_data.size()) { if (m_current > (int64_t)m_data->m_data.size()) {
return m_data->m_data.size(); return (int64_t)m_data->m_data.size();
} }
return m_current; return m_current;
}; };
@@ -110,12 +108,12 @@ namespace appl {
* @brief Incremental operator * @brief Incremental operator
* @return Reference on the current iterator incremented * @return Reference on the current iterator incremented
*/ */
Iterator& operator++ (void); Iterator& operator++ ();
/** /**
* @brief Decremental operator * @brief Decremental operator
* @return Reference on the current iterator decremented * @return Reference on the current iterator decremented
*/ */
Iterator& operator-- (void); Iterator& operator-- ();
/** /**
* @brief Incremental operator * @brief Incremental operator
* @return Reference on a new iterator and increment the other one * @return Reference on a new iterator and increment the other one
@@ -212,19 +210,19 @@ namespace appl {
* @brief Get the value on the current element * @brief Get the value on the current element
* @return The request element value * @return The request element value
*/ */
char32_t operator* (void); char32_t operator* ();
/** /**
* @brief Get the position in the buffer * @brief Get the position in the buffer
* @return The requested position. * @return The requested position.
*/ */
int64_t getPos(void) const { int64_t getPos() const {
if (m_data == NULL) { if (m_data == nullptr) {
return 0; return 0;
} }
if (m_current < 0) { if (m_current < 0) {
return 0; return 0;
} }
if (m_current >= m_data->m_data.size()) { if (m_current >= (int64_t)m_data->m_data.size()) {
return m_data->m_data.size()-1; return m_data->m_data.size()-1;
} }
return m_current; return m_current;
@@ -249,7 +247,7 @@ namespace appl {
}; };
Iterator operator+ (const size_t _val) const { Iterator operator+ (const size_t _val) const {
Iterator tmpp(*this); Iterator tmpp(*this);
for (int64_t iii=0; iii<_val; ++iii) { for (int64_t iii=0; iii<(int64_t)_val; ++iii) {
++tmpp; ++tmpp;
} }
return tmpp; return tmpp;
@@ -274,7 +272,7 @@ namespace appl {
}; };
Iterator operator- (const size_t _val) const { Iterator operator- (const size_t _val) const {
Iterator tmpp(*this); Iterator tmpp(*this);
for (int64_t iii=0; iii<_val; ++iii) { for (int64_t iii=0; iii<(int64_t)_val; ++iii) {
--tmpp; --tmpp;
} }
return tmpp; return tmpp;
@@ -283,19 +281,22 @@ namespace appl {
Iterator(Buffer* _obj, int64_t _pos) : Iterator(Buffer* _obj, int64_t _pos) :
m_current(_pos), m_current(_pos),
m_data(_obj), m_data(_obj),
m_value(etk::UChar::Null) { m_value(u32char::Null) {
// nothing to do ... // nothing to do ...
}; };
friend class Buffer; friend class Buffer;
}; };
public: public:
static const char* const eventIsModify; esignal::Signal<> signalIsModify;
static const char* const eventIsSave; esignal::Signal<> signalIsSave;
static const char* const eventSelectChange; esignal::Signal<> signalSelectChange;
static const char* const eventChangeName; esignal::Signal<> signalChangeName;
protected:
Buffer();
void init();
public: public:
Buffer(void); DECLARE_FACTORY(Buffer);
~Buffer(void); virtual ~Buffer();
private: private:
bool m_hasFileName; //!< when new file, the buffer has no name ==> but it might be reference with a single name ... bool m_hasFileName; //!< when new file, the buffer has no name ==> but it might be reference with a single name ...
std::string m_fileName; //!< name of the file (with his path) std::string m_fileName; //!< name of the file (with his path)
@@ -303,14 +304,14 @@ namespace appl {
/** /**
* @brief get the curent filename of the Buffer * @brief get the curent filename of the Buffer
*/ */
const std::string& getFileName(void) { const std::string& getFileName() const {
return m_fileName; return m_fileName;
} }
/** /**
* @brief Check if the buffer has a real filename. * @brief Check if the buffer has a real filename.
* @return the status of the existance of a name. * @return the status of the existance of a name.
*/ */
bool hasFileName(void) { bool hasFileName() const {
return m_hasFileName; return m_hasFileName;
} }
/** /**
@@ -328,7 +329,7 @@ namespace appl {
* @brief save the file in the specify path. * @brief save the file in the specify path.
* @return true is saving well done * @return true is saving well done
*/ */
bool storeFile(void); bool storeFile();
protected: protected:
bool m_isModify; //!< true if the file is modify bool m_isModify; //!< true if the file is modify
public: public:
@@ -336,7 +337,7 @@ namespace appl {
* @breif get the status of file modification. * @breif get the status of file modification.
* @return true if file is modify. * @return true if file is modify.
*/ */
bool isModify(void) { bool isModify() const {
return m_isModify; return m_isModify;
} }
/** /**
@@ -345,9 +346,9 @@ namespace appl {
*/ */
void setModification(bool _status); void setModification(bool _status);
protected: protected:
etk::Buffer m_data; //!< copy of the file buffer std::string m_data; //!< copy of the file buffer
public: public:
etk::Buffer& getData(void) { std::string& getData() {
return m_data; return m_data;
}; };
protected: protected:
@@ -365,31 +366,31 @@ namespace appl {
/** /**
* @brief Remove Selection of the buffer. * @brief Remove Selection of the buffer.
*/ */
void unSelect(void); void unSelect();
/** /**
* @brief Remove the selection of the buffer. (do nothing if no secection) * @brief Remove the selection of the buffer. (do nothing if no secection)
*/ */
void removeSelection(void); void removeSelection();
/** /**
* @brief Get the status of selection. * @brief Get the status of selection.
* @return true if we have a curent selection, false otherwise. * @return true if we have a curent selection, false otherwise.
*/ */
bool hasTextSelected(void) { bool hasTextSelected() {
return m_cursorSelectPos >= 0; return m_cursorSelectPos >= 0;
} }
/** /**
* @brief Get the Start position of the selection. * @brief Get the Start position of the selection.
* @return position of the start selection. * @return position of the start selection.
*/ */
int64_t getStartSelectionPos(void) { int64_t getStartSelectionPos() {
return etk_min(m_cursorPos, m_cursorSelectPos); return std::min(m_cursorPos, m_cursorSelectPos);
} }
/** /**
* @brief Get the Stop position of the selection. * @brief Get the Stop position of the selection.
* @return position of the stop selection. * @return position of the stop selection.
*/ */
int64_t getStopSelectionPos(void) { int64_t getStopSelectionPos() {
return etk_max(m_cursorPos, m_cursorSelectPos); return std::max(m_cursorPos, m_cursorSelectPos);
} }
protected: protected:
float m_cursorPreferredCol; //!< position of the cursor when up and down is done. float m_cursorPreferredCol; //!< position of the cursor when up and down is done.
@@ -405,7 +406,7 @@ namespace appl {
* @brief Get the favorite distance from the left screen (For up and down moving). * @brief Get the favorite distance from the left screen (For up and down moving).
* @return The distance in pixels. * @return The distance in pixels.
*/ */
float getFavoriteUpDownPos(void) { float getFavoriteUpDownPos() {
return m_cursorPreferredCol; return m_cursorPreferredCol;
} }
protected: protected:
@@ -422,7 +423,7 @@ namespace appl {
* @brief Get the selection mode (if true, the move event creata a selection) * @brief Get the selection mode (if true, the move event creata a selection)
* @return The selecting mode. * @return The selecting mode.
*/ */
bool getSelectMode(void) { bool getSelectMode() {
return m_selectMode; return m_selectMode;
} }
public: public:
@@ -545,27 +546,27 @@ namespace appl {
* @brief Get an Iterator on the start position. * @brief Get an Iterator on the start position.
* @return The Iterator * @return The Iterator
*/ */
Iterator begin(void); Iterator begin();
/** /**
* @brief Get an Iterator on the end position. * @brief Get an Iterator on the end position.
* @return The Iterator * @return The Iterator
*/ */
Iterator end(void); Iterator end();
/** /**
* @brief Get an Iterator on the cursor position. * @brief Get an Iterator on the cursor position.
* @return The Iterator * @return The Iterator
*/ */
Iterator cursor(void); Iterator cursor();
/** /**
* @brief Get an Iterator on the start selection. * @brief Get an Iterator on the start selection.
* @return The Iterator * @return The Iterator
*/ */
Iterator selectStart(void); Iterator selectStart();
/** /**
* @brief Get an Iterator on the stop selection. * @brief Get an Iterator on the stop selection.
* @return The Iterator * @return The Iterator
*/ */
Iterator selectStop(void); Iterator selectStop();
protected: protected:
int32_t m_nbLines; //!< number of line in the buffer int32_t m_nbLines; //!< number of line in the buffer
public: public:
@@ -573,29 +574,29 @@ namespace appl {
* @brief Get the number of line in the buffer. * @brief Get the number of line in the buffer.
* @return number of line in the Buffer. * @return number of line in the Buffer.
*/ */
int32_t getNumberOfLines(void) { int32_t getNumberOfLines() {
return m_nbLines; return m_nbLines;
} }
/** /**
* @brief Get the cursor line numberin the buffer. * @brief Get the cursor line numberin the buffer.
* @return the line id in the Buffer. * @return the line id in the Buffer.
*/ */
uint32_t getCursorLinesId(void); uint32_t getCursorLinesId();
protected: protected:
/** /**
* @brief Count the number of line in the buffer * @brief Count the number of line in the buffer
*/ */
void countNumberofLine(void); void countNumberofLine();
protected: protected:
std::string m_highlightType; //!< Name of the highlight type std::string m_highlightType; //!< Name of the highlight type
appl::Highlight* m_highlight; //!< internal link with the Highlight system ememory::SharedPtr<appl::Highlight> m_highlight; //!< internal link with the Highlight system
std::vector<appl::HighlightInfo> m_HLDataPass1; //!< colorisation position in the current buffer pass 1 std::vector<appl::HighlightInfo> m_HLDataPass1; //!< colorisation position in the current buffer pass 1
public: public:
/** /**
* @brief Find the Highligh capability * @brief Find the Highligh capability
*/ */
void tryFindHighlightType(void); void tryFindHighlightType();
/** /**
* @brief Set type of highlight * @brief Set type of highlight
* @param[in] _type type of the highlight * @param[in] _type type of the highlight
@@ -605,7 +606,7 @@ namespace appl {
* @brief Get type of highlight * @brief Get type of highlight
* @return Type of the highlight * @return Type of the highlight
*/ */
const std::string& setHighlightType(void) { const std::string& setHighlightType() {
return m_highlightType; return m_highlightType;
}; };
@@ -616,12 +617,9 @@ namespace appl {
int64_t& _stopId, int64_t& _stopId,
bool _backPreviousNotEnded); bool _backPreviousNotEnded);
void generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _addingPos=0); void generateHighLightAt(int64_t _pos, int64_t _endPos, int64_t _addingPos=0);
void cleanHighLight(void); void cleanHighLight();
appl::HighlightInfo* getElementColorAtPosition(int64_t _pos, int64_t &_starPos); appl::HighlightInfo* getElementColorAtPosition(int64_t _pos, int64_t &_starPos);
void hightlightGenerateLines(appl::DisplayHLData& _MData, int64_t _HLStart, int64_t _nbLines); void hightlightGenerateLines(appl::DisplayHLData& _MData, const appl::Buffer::Iterator& _HLStart, int64_t _nbLines);
appl::HighlightInfo* getElementColorAtPosition(appl::DisplayHLData& _MData, int64_t _pos); appl::HighlightInfo* getElementColorAtPosition(appl::DisplayHLData& _MData, int64_t _pos);
}; };
}; }
#endif

View File

@@ -1,103 +1,110 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <etk/types.h>
#include <etk/os/FSNode.h>
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <ewol/renderer/EObject.h> #include <ewol/object/Object.h>
#include <ewol/renderer/EObjectManager.h> #include <ewol/object/Manager.h>
#include <esignal/Signal.h>
#include <gale/resource/Manager.h>
#undef __class__ appl::BufferManager::BufferManager() :
#define __class__ "BufferManager" signalNewBuffer(this, "new-buffer", ""),
signalSelectFile(this, "select-buffer", ""),
appl::BufferManager::BufferManager(void) : signalTextSelectionChange(this, "text-selection-change", ""),
ewol::Resource("???BufferManager???"), signalRemoveBuffer(this, "remove-buffer", "") {
m_bufferSelected(NULL) {
addObjectType("appl::BufferManager"); addObjectType("appl::BufferManager");
} }
appl::BufferManager::~BufferManager(void) { appl::BufferManager::~BufferManager() {
int32_t previousCount = m_list.size();
for (int32_t iii = m_list.size()-1; iii >= 0 ; --iii) {
if (m_list[iii] == NULL) {
continue;
}
delete(m_list[iii]);
if (previousCount == m_list.size()) {
APPL_ERROR("Error in removing buffer !! ");
}
previousCount = m_list.size();
}
m_list.clear(); m_list.clear();
} }
appl::Buffer* appl::BufferManager::createNewBuffer(void) { ememory::SharedPtr<appl::Buffer> appl::BufferManager::createNewBuffer() {
appl::Buffer* tmp = new appl::Buffer(); ememory::SharedPtr<appl::Buffer> tmp = appl::Buffer::create();
if (tmp == NULL) { if (tmp == nullptr) {
APPL_ERROR("Can not allocate the Buffer (empty)."); APPL_ERROR("Can not allocate the Buffer (empty).");
return NULL; return nullptr;
} }
tmp->setParent(ewol::Object::sharedFromThis());
m_list.push_back(tmp); m_list.push_back(tmp);
sendMultiCast(appl::MsgSelectNewFile, tmp->getFileName()); APPL_INFO("Create a new Buffer");
signalNewBuffer.emit(tmp->getFileName());
APPL_INFO("Create a new Buffer (done)");
APPL_INFO("select Buffer");
signalSelectFile.emit(tmp->getFileName());
APPL_INFO("select Buffer (done)");
return tmp; return tmp;
} }
appl::Buffer* appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) { ememory::SharedPtr<appl::Buffer> appl::BufferManager::get(const std::string& _fileName, bool _createIfNeeded) {
for (int32_t iii = 0; iii < m_list.size(); ++iii) { APPL_INFO("get('" << _fileName << "'," << _createIfNeeded << ")");
if (m_list[iii] == NULL) { for (auto &it : m_list) {
if (it == nullptr) {
continue; continue;
} }
if (m_list[iii]->getFileName() == _fileName) { if (it->getFileName() == _fileName) {
return m_list[iii]; return it;
} }
} }
if (_createIfNeeded == true) { if (_createIfNeeded == true) {
if (etk::FSNodeGetType(_fileName) == etk::FSN_FOLDER) { if (etk::FSNodeGetType(_fileName) == etk::typeNode_folder) {
APPL_INFO("try open a folder : " << _fileName); APPL_WARNING("try open a folder : " << _fileName);
return NULL; APPL_CRITICAL("plop");
return nullptr;
} }
appl::Buffer* tmp = new appl::Buffer(); ememory::SharedPtr<appl::Buffer> tmp = appl::Buffer::create();
if (tmp == NULL) { if (tmp == nullptr) {
APPL_ERROR("Can not allocate the Buffer class : " << _fileName); APPL_ERROR("Can not allocate the Buffer class : " << _fileName);
return NULL; return nullptr;
} }
tmp->setParent(ewol::Object::sharedFromThis());
tmp->loadFile(_fileName); tmp->loadFile(_fileName);
m_list.push_back(tmp); m_list.push_back(tmp);
APPL_INFO("Creata a open Buffer");
signalNewBuffer.emit(tmp->getFileName());
APPL_INFO("Creata a open Buffer (done)");
return tmp; return tmp;
} }
return NULL; return nullptr;
}
void appl::BufferManager::setBufferSelected(appl::Buffer* _bufferSelected) {
m_bufferSelected = _bufferSelected;
sendMultiCast(appl::MsgSelectChange, "");
} }
void appl::BufferManager::onObjectRemove(ewol::EObject * _removeObject) { void appl::BufferManager::setBufferSelected(ememory::SharedPtr<appl::Buffer> _bufferSelected) {
if (m_bufferSelected == _removeObject) { m_bufferSelected = _bufferSelected;
setBufferSelected(NULL); if (m_bufferSelected == nullptr) {
} APPL_ERROR("select a NULL buffer ...");
for (int32_t iii = 0; iii < m_list.size(); ++iii) { propertySetOnWidgetNamed("appl-widget-display-name", "value", "---");
if (m_list[iii] != _removeObject) {
continue;
}
m_list[iii] = NULL;
m_list.erase(m_list.begin()+iii);
return; return;
} }
APPL_INFO("Set buffer selected");
//signalSelectFile.emit(m_bufferSelected->getName());
//propertySetOnWidgetNamed("appl-widget-display-name", "value", m_bufferSelected->getName());
APPL_INFO("Set buffer selected (done)");
}
ememory::SharedPtr<appl::Buffer> appl::BufferManager::get(int32_t _id) {
int32_t id = 0;
for (auto &it : m_list) {
if (id == _id) {
return it;
}
id++;
}
return m_list.back();
} }
bool appl::BufferManager::exist(const std::string& _fileName) { bool appl::BufferManager::exist(const std::string& _fileName) {
for (int32_t iii = 0; iii < m_list.size(); ++iii) { for (auto &it : m_list) {
if (m_list[iii] == NULL) { if (it == nullptr) {
continue; continue;
} }
if (m_list[iii]->getFileName() == _fileName) { if (it->getFileName() == _fileName) {
return true; return true;
} }
} }
@@ -106,40 +113,60 @@ bool appl::BufferManager::exist(const std::string& _fileName) {
void appl::BufferManager::open(const std::string& _fileName) { void appl::BufferManager::open(const std::string& _fileName) {
if (exist(_fileName) == true) { if (exist(_fileName) == true) {
APPL_WARNING(" the element '" << _fileName << "' already exist ... just reselect it ...");
signalSelectFile.emit(_fileName);
propertySetOnWidgetNamed("appl-widget-display-name", "value", etk::FSNodeGetRealName(_fileName));
return; return;
} }
if (get(_fileName, true) == NULL) { if (get(_fileName, true) == nullptr) {
APPL_ERROR("Error get '" << _fileName << "' ... ");
return; return;
} }
sendMultiCast(appl::MsgSelectNewFile, _fileName); signalSelectFile.emit(_fileName);
propertySetOnWidgetNamed("appl-widget-display-name", "value", etk::FSNodeGetRealName(_fileName));
} }
void appl::BufferManager::onReceiveMessage(const ewol::EMessage& _msg) { void appl::BufferManager::requestDestroyFromChild(const ememory::SharedPtr<Object>& _child) {
APPL_DEBUG("receive message !!! " << _msg); APPL_WARNING("Buffer request a close...");
bool find = false;
int32_t newValue = -1;
auto it = m_list.begin();
while(it != m_list.end()) {
if (*it == nullptr) {
it = m_list.erase(it);
continue;
}
if (*it == _child) {
it = m_list.erase(it);
find = true;
break;
}
newValue++;
++it;
}
if (find == true) {
signalRemoveBuffer.emit(ememory::dynamicPointerCast<appl::Buffer>(_child));
}
if (m_bufferSelected == _child) {
if ( it != m_list.end()
&& *it != nullptr) {
APPL_VERBOSE("Remove buffer select new one");
signalSelectFile.emit((*it)->getFileName());
propertySetOnWidgetNamed("appl-widget-display-name", "value", etk::FSNodeGetRealName((*it)->getFileName()));
APPL_VERBOSE("Remove buffer select new one (done)");
return;
}
if ( m_list.size() != 0
&& m_list.back() != nullptr) {
APPL_VERBOSE("Remove buffer select new one (last)");
signalSelectFile.emit(m_list.back()->getFileName());
propertySetOnWidgetNamed("appl-widget-display-name", "value", etk::FSNodeGetRealName(m_list.back()->getFileName()));
APPL_VERBOSE("Remove buffer select new one (done)");
return;
}
signalSelectFile.emit("");
propertySetOnWidgetNamed("appl-widget-display-name", "value", "---");
m_bufferSelected = nullptr;
}
} }
appl::BufferManager* appl::BufferManager::keep(void) {
//EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\"");
appl::BufferManager* object = static_cast<appl::BufferManager*>(getManager().localKeep("???BufferManager???"));
if (NULL != object) {
return object;
}
// this element create a new one every time ....
EWOL_INFO("CREATE : appl::BufferManager: ???BufferManager???");
object = new appl::BufferManager();
if (NULL == object) {
EWOL_ERROR("allocation error of a resource : ???BufferManager???");
return NULL;
}
getManager().localAdd(object);
return object;
}
void appl::BufferManager::release(appl::BufferManager*& _object) {
if (NULL == _object) {
return;
}
ewol::Resource* object2 = static_cast<ewol::Resource*>(_object);
getManager().release(object2);
_object = NULL;
}

View File

@@ -1,26 +1,34 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __BUFFER_MANAGER_H__ #include <list>
#define __BUFFER_MANAGER_H__
#include <appl/Buffer.h> #include <appl/Buffer.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
#include <ewol/widget/Widget.h> #include <ewol/widget/Widget.h>
#include <ewol/resources/Resource.h> #include <gale/resource/Resource.h>
namespace appl { namespace appl {
class BufferManager : public ewol::Resource { class BufferManager;
using BufferManagerShared = ememory::SharedPtr<appl::BufferManager>;
using BufferManagerWeak = ememory::WeakPtr<appl::BufferManager>;
// TODO: This is a service ...
class BufferManager : public ewol::Object {
public:
esignal::Signal<std::string> signalNewBuffer;
esignal::Signal<std::string> signalSelectFile;
esignal::Signal<> signalTextSelectionChange;
esignal::Signal<ememory::SharedPtr<appl::Buffer>> signalRemoveBuffer;
protected: protected:
BufferManager(void); BufferManager();
~BufferManager(void); public:
DECLARE_SINGLE_FACTORY(BufferManager, "???Buffer_Manager???");
virtual ~BufferManager();
private: private:
std::vector<appl::Buffer*> m_list; // list of all buffer curently open std::list<ememory::SharedPtr<appl::Buffer>> m_list; // list of all buffer curently open
public: public:
/** /**
* @brief Get a specific buffer with his name (can create a new buffer). * @brief Get a specific buffer with his name (can create a new buffer).
@@ -28,7 +36,7 @@ namespace appl {
* @param[in] _createIfNeeded Create the buffer if not existed. * @param[in] _createIfNeeded Create the buffer if not existed.
* @return a pointer on the buffer * @return a pointer on the buffer
*/ */
appl::Buffer* get(const std::string& _fileName, bool _createIfNeeded=false); ememory::SharedPtr<appl::Buffer> get(const std::string& _fileName, bool _createIfNeeded=false);
/** /**
* @brief Load a specific file, event if it not existed: * @brief Load a specific file, event if it not existed:
* @param[in] _fileName Name of the file to open or create. * @param[in] _fileName Name of the file to open or create.
@@ -44,7 +52,7 @@ namespace appl {
* @brief Get count of all buffer availlable. * @brief Get count of all buffer availlable.
* @return Number of buffer * @return Number of buffer
*/ */
int32_t size(void) const { int32_t size() const {
return m_list.size(); return m_list.size();
} }
/** /**
@@ -52,47 +60,44 @@ namespace appl {
* @param[in] _id Number of buffer * @param[in] _id Number of buffer
* @return pointer on the buffer * @return pointer on the buffer
*/ */
appl::Buffer* get(int32_t _id) { ememory::SharedPtr<appl::Buffer> get(int32_t _id);
return m_list[_id];
}
/** /**
* @brief Create a new buffer empty. * @brief Create a new buffer empty.
* @return Created buffer or NULL. * @return Created buffer or nullptr.
*/ */
appl::Buffer* createNewBuffer(void); ememory::SharedPtr<appl::Buffer> createNewBuffer();
private: private:
appl::Buffer* m_bufferSelected; ememory::SharedPtr<appl::Buffer> m_bufferSelected;
public: public:
/** /**
* @brief Set the current buffer selected * @brief Set the current buffer selected
* @param[in] _bufferSelected Pointer on the buffer selected * @param[in] _bufferSelected Pointer on the buffer selected
*/ */
void setBufferSelected(appl::Buffer* _bufferSelected); void setBufferSelected(ememory::SharedPtr<appl::Buffer> _bufferSelected);
/** /**
* @brief Get the current buffer selected * @brief Get the current buffer selected
* @return Pointer on the buffer selected * @return Pointer on the buffer selected
*/ */
appl::Buffer* getBufferSelected(void) { ememory::SharedPtr<appl::Buffer> getBufferSelected() {
return m_bufferSelected; return m_bufferSelected;
}; };
public: // herited function private:
void onReceiveMessage(const ewol::EMessage& _msg); void requestDestroyFromChild(const ememory::SharedPtr<Object>& _child);
void onObjectRemove(ewol::EObject * _removeObject); public:
public: // resource manager // generic iterators:
/** std::list<ememory::SharedPtr<appl::Buffer>>::const_iterator begin() const {
* @brief keep the resource pointer. return m_list.begin();
* @note Never free this pointer by your own... }
* @param[in] _filename Name of the configuration file. std::list<ememory::SharedPtr<appl::Buffer>>::const_iterator end() const {
* @return pointer on the resource or NULL if an error occured. return m_list.end();
*/ }
static appl::BufferManager* keep(void); std::list<ememory::SharedPtr<appl::Buffer>>::iterator begin() {
/** return m_list.begin();
* @brief release the keeped resources }
* @param[in,out] reference on the object pointer std::list<ememory::SharedPtr<appl::Buffer>>::iterator end() {
*/ return m_list.end();
static void release(appl::BufferManager*& _object); }
}; };
}; }
#endif

View File

@@ -1,51 +1,40 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/GlyphDecoration.h> #include <appl/GlyphDecoration.h>
#undef __class__
#define __class__ "GlyphDecoration"
appl::GlyphDecoration::GlyphDecoration(const std::string &_newColorName) : appl::GlyphDecoration::GlyphDecoration(const std::string &_newColorName) :
m_colorName(_newColorName), m_colorName(_newColorName),
m_colorFG(etk::color::black), m_colorFG(etk::color::black),
m_colorBG(etk::color::none), m_colorBG(etk::color::none),
m_italic(false), m_italic(false),
m_bold(false) m_bold(false) {
{ APPL_VERBOSE("create");
APPL_VERBOSE("New(" << __class__ << ")");
} }
void appl::GlyphDecoration::setItalic(bool _enable) void appl::GlyphDecoration::setItalic(bool _enable) {
{
m_italic = _enable; m_italic = _enable;
if (true == _enable) { if (_enable == true) {
APPL_VERBOSE("color : \"" << m_colorName << "\" enable italic"); APPL_VERBOSE("color : \"" << m_colorName << "\" enable italic");
} else { } else {
APPL_VERBOSE("color : \"" << m_colorName << "\" disable italic"); APPL_VERBOSE("color : \"" << m_colorName << "\" disable italic");
} }
} }
void appl::GlyphDecoration::setBold(bool _enable) void appl::GlyphDecoration::setBold(bool _enable) {
{
m_bold = _enable; m_bold = _enable;
if (true == _enable) { if (_enable == true) {
APPL_VERBOSE("color : \"" << m_colorName << "\" enable bold"); APPL_VERBOSE("color : \"" << m_colorName << "\" enable bold");
} else { } else {
APPL_VERBOSE("color : \"" << m_colorName << "\" disable bold"); APPL_VERBOSE("color : \"" << m_colorName << "\" disable bold");
} }
} }
etk::CCout& appl::operator <<(etk::CCout& _os, const appl::GlyphDecoration& _obj) std::ostream& appl::operator <<(std::ostream& _os, const appl::GlyphDecoration& _obj) {
{
_os << "{fg=" << _obj.getForeground(); _os << "{fg=" << _obj.getForeground();
_os << ",bg=" << _obj.getBackground(); _os << ",bg=" << _obj.getBackground();
_os << ",italic=" << _obj.getItalic(); _os << ",italic=" << _obj.getItalic();

View File

@@ -1,23 +1,19 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __GLYPH_DECORATION_H__
#define __GLYPH_DECORATION_H__
#include <etk/Color.h> #include <etk/Color.h>
#include <etk/UString.h> #include <etk/types.h>
namespace appl { namespace appl {
class GlyphDecoration { class GlyphDecoration {
public: public:
// Constructeur // Constructeur
GlyphDecoration(const std::string& _newColorName = "no_name"); GlyphDecoration(const std::string& _newColorName = "no_name");
~GlyphDecoration(void) { virtual ~GlyphDecoration() {
// nothing to do ... // nothing to do ...
}; };
private: private:
@@ -34,7 +30,7 @@ namespace appl {
* @brief Get the color name. * @brief Get the color name.
* @return The name of the color. * @return The name of the color.
*/ */
const std::string& getName(void) const { const std::string& getName() const {
return m_colorName; return m_colorName;
}; };
private: private:
@@ -51,14 +47,14 @@ namespace appl {
* @brief Get the foreground color. * @brief Get the foreground color.
* @return The color. * @return The color.
*/ */
const etk::Color<>& getForeground(void) const { const etk::Color<>& getForeground() const {
return m_colorFG; return m_colorFG;
}; };
/** /**
* @brief Get the foreground color status. * @brief Get the foreground color status.
* @return true if the color is visible. * @return true if the color is visible.
*/ */
bool haveFg(void) const { bool haveFg() const {
return m_colorFG.a() != 0; return m_colorFG.a() != 0;
}; };
private: private:
@@ -75,14 +71,14 @@ namespace appl {
* @brief Get the background color. * @brief Get the background color.
* @return The color. * @return The color.
*/ */
const etk::Color<>& getBackground(void) const { const etk::Color<>& getBackground() const {
return m_colorBG; return m_colorBG;
}; };
/** /**
* @brief Get the background color status. * @brief Get the background color status.
* @return true if the color is visible. * @return true if the color is visible.
*/ */
bool haveBackground(void) const { bool haveBackground() const {
return m_colorBG.a()!=0; return m_colorBG.a()!=0;
}; };
private: private:
@@ -97,7 +93,7 @@ namespace appl {
* @brief Get the italic status. * @brief Get the italic status.
* @return true if the glyph might be display in italic. * @return true if the glyph might be display in italic.
*/ */
bool getItalic(void) const { bool getItalic() const {
return m_italic; return m_italic;
}; };
private: private:
@@ -112,13 +108,11 @@ namespace appl {
* @brief Get the bold status. * @brief Get the bold status.
* @return true if the glyph might be display in bold. * @return true if the glyph might be display in bold.
*/ */
bool getBold(void) const { bool getBold() const {
return m_bold; return m_bold;
}; };
}; };
etk::CCout& operator <<(etk::CCout& _os, const appl::GlyphDecoration& _obj); std::ostream& operator <<(std::ostream& _os, const appl::GlyphDecoration& _obj);
} }
#endif

View File

@@ -1,37 +1,33 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/GlyphPainting.h> #include <appl/GlyphPainting.h>
#include <ejson/ejson.h> #include <ejson/ejson.h>
#include <etk/os/FSNode.h> #include <etk/os/FSNode.h>
#include <ewol/resources/ResourceManager.h> #include <gale/resource/Manager.h>
#undef __class__
#define __class__ "GlyphPainting"
appl::GlyphPainting::GlyphPainting() {
addResourceType("appl::GlyphPainting");
}
appl::GlyphPainting::GlyphPainting(const std::string& _filename) : void appl::GlyphPainting::init(const std::string& _filename) {
ewol::Resource(_filename) { gale::Resource::init(_filename);
addObjectType("appl::GlyphPainting"); APPL_DEBUG("SFP : load \"" << _filename << "\"");
EWOL_DEBUG("SFP : load \"" << _filename << "\"");
reload(); reload();
} }
appl::GlyphPainting::~GlyphPainting(void) { appl::GlyphPainting::~GlyphPainting() {
} }
void appl::GlyphPainting::reload(void) { void appl::GlyphPainting::reload() {
ejson::Document doc; ejson::Document doc;
if (false == doc.load(m_name)) { if (doc.load(m_name) == false) {
APPL_ERROR("Can not load file : '" << m_name << "' = " << etk::FSNode(m_name).getFileSystemName()); APPL_ERROR("Can not load file : '" << m_name << "' = " << etk::FSNode(m_name).getFileSystemName());
return; return;
} }
@@ -42,25 +38,25 @@ void appl::GlyphPainting::reload(void) {
doc.generate(tmppppp); doc.generate(tmppppp);
APPL_DEBUG(tmppppp); APPL_DEBUG(tmppppp);
*/ */
ejson::Array* baseArray = doc.getArray("ednColor"); ejson::Array baseArray = doc["ednColor"].toArray();
if (baseArray == NULL) { if (baseArray.exist() == false) {
APPL_ERROR("Can not get basic array : 'ednColor'"); APPL_ERROR("Can not get basic array : 'ednColor'");
return; return;
} }
for (int32_t iii = 0; iii < baseArray->size(); ++iii) { for (const auto it : baseArray) {
ejson::Object* tmpObj = baseArray->getObject(iii); ejson::Object tmpObj = it.toObject();
if (tmpObj == NULL) { if (tmpObj.exist() == false) {
APPL_DEBUG(" can not get object in 'ednColor' id=" << iii); APPL_DEBUG(" can not get object in 'ednColor' it=" << it);
continue; continue;
} }
std::string name = tmpObj->getStringValue("name", ""); std::string name = tmpObj["name"].toString().get();
std::string background = tmpObj->getStringValue("background", "#FFF0"); std::string background = tmpObj["background"].toString().get("#FFF0");
std::string foreground = tmpObj->getStringValue("foreground", "#000F"); std::string foreground = tmpObj["foreground"].toString().get("#000F");
bool italic = tmpObj->getBooleanValue("italic", false); bool italic = tmpObj["italic"].toBoolean().get(false);
bool bold = tmpObj->getBooleanValue("bold", false); bool bold = tmpObj["bold"].toBoolean().get(false);
APPL_VERBOSE("find new color : '" << name << "' fg='" << foreground << "' bg='" << background << "' italic='" << italic << "' bold='" << bold << "'"); APPL_VERBOSE("find new color : '" << name << "' fg='" << foreground << "' bg='" << background << "' italic='" << italic << "' bold='" << bold << "'");
bool findElement = false; bool findElement = false;
for (int32_t jjj=0; jjj<m_list.size(); ++jjj) { for (size_t jjj=0; jjj<m_list.size(); ++jjj) {
if (m_list[jjj].getName() != name) { if (m_list[jjj].getName() != name) {
continue; continue;
} }
@@ -84,7 +80,7 @@ void appl::GlyphPainting::reload(void) {
int32_t appl::GlyphPainting::request(const std::string& _name) { int32_t appl::GlyphPainting::request(const std::string& _name) {
for (int32_t iii=0; iii<m_list.size(); ++iii) { for (size_t iii=0; iii<m_list.size(); ++iii) {
if (m_list[iii].getName() == _name) { if (m_list[iii].getName() == _name) {
return iii; return iii;
} }
@@ -94,30 +90,3 @@ int32_t appl::GlyphPainting::request(const std::string& _name) {
m_list.push_back(tmpDeco); m_list.push_back(tmpDeco);
return m_list.size()-1; return m_list.size()-1;
} }
appl::GlyphPainting* appl::GlyphPainting::keep(const std::string& _filename) {
//EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\"");
appl::GlyphPainting* object = static_cast<appl::GlyphPainting*>(getManager().localKeep(_filename));
if (NULL != object) {
return object;
}
// this element create a new one every time ....
EWOL_INFO("CREATE : appl::GlyphPainting : file : \"" << _filename << "\"");
object = new appl::GlyphPainting(_filename);
if (NULL == object) {
EWOL_ERROR("allocation error of a resource : ??GlyphPainting??");
return NULL;
}
getManager().localAdd(object);
return object;
}
void appl::GlyphPainting::release(appl::GlyphPainting*& _object) {
if (NULL == _object) {
return;
}
ewol::Resource* object2 = static_cast<ewol::Resource*>(_object);
getManager().release(object2);
_object = NULL;
}

View File

@@ -1,31 +1,30 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_GLYPH_PAINTING_H__
#define __APPL_GLYPH_PAINTING_H__
#include <etk/types.h> #include <etk/types.h>
#include <ewol/debug.h> #include <ewol/debug.h>
#include <ewol/resources/Resource.h> #include <gale/resource/Resource.h>
#include <appl/GlyphDecoration.h> #include <appl/GlyphDecoration.h>
namespace appl { namespace appl {
class GlyphPainting : public ewol::Resource { class GlyphPainting : public gale::Resource {
private: private:
std::vector<appl::GlyphDecoration> m_list; std::vector<appl::GlyphDecoration> m_list;
protected: protected:
GlyphPainting(const std::string& _filename); GlyphPainting();
virtual ~GlyphPainting(void); void init(const std::string& _filename);
public:
DECLARE_RESOURCE_NAMED_FACTORY(GlyphPainting);
virtual ~GlyphPainting();
public: public:
/** /**
* @brief Load or reload data from config * @brief Load or reload data from config
*/ */
void reload(void); void reload();
/** /**
* @brief Register a decoration with his name and get the ref id. * @brief Register a decoration with his name and get the ref id.
* @param[in] _name Name of the deco. * @param[in] _name Name of the deco.
@@ -48,21 +47,7 @@ namespace appl {
const appl::GlyphDecoration& operator[] (int32_t _pos) const { const appl::GlyphDecoration& operator[] (int32_t _pos) const {
return m_list[_pos]; return m_list[_pos];
} }
public:
/**
* @brief keep the resource pointer.
* @note Never free this pointer by your own...
* @param[in] _filename Name of the configuration file.
* @return pointer on the resource or NULL if an error occured.
*/
static appl::GlyphPainting* keep(const std::string& _filename);
/**
* @brief release the keeped resources
* @param[in,out] reference on the object pointer
*/
static void release(appl::GlyphPainting*& _object);
}; };
}; }
#endif

View File

@@ -1,36 +1,25 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/Gui/BufferView.h> #include <appl/Gui/BufferView.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
//#include <ColorizeManager.h> //#include <ColorizeManager.h>
#include <appl/Gui/MainWindows.h> #include <appl/Gui/MainWindows.h>
#include <ewol/renderer/EObject.h> #include <ewol/object/Object.h>
#undef __class__ // TODO : write it better
#define __class__ "BufferView" static void SortElementList(std::vector<appl::dataBufferStruct>& _list) {
std::vector<appl::dataBufferStruct> tmpList = _list;
static void SortElementList(std::vector<appl::dataBufferStruct*>& _list) {
std::vector<appl::dataBufferStruct *> tmpList = _list;
_list.clear(); _list.clear();
for(int32_t iii=0; iii<tmpList.size(); iii++) { for(size_t iii=0; iii<tmpList.size(); iii++) {
if (NULL == tmpList[iii]) { size_t findPos = 0;
continue; for(size_t jjj=0; jjj<_list.size(); jjj++) {
}
int32_t findPos = 0;
for(int32_t jjj=0; jjj<_list.size(); jjj++) {
//EWOL_DEBUG("compare : \""<<*tmpList[iii] << "\" and \"" << *m_listDirectory[jjj] << "\""); //EWOL_DEBUG("compare : \""<<*tmpList[iii] << "\" and \"" << *m_listDirectory[jjj] << "\"");
if (_list[jjj] == NULL) { if (tmpList[iii].m_bufferName.getNameFile() > _list[jjj].m_bufferName.getNameFile()) {
continue;
}
if (tmpList[iii]->m_bufferName.getNameFile() > _list[jjj]->m_bufferName.getNameFile()) {
findPos = jjj+1; findPos = jjj+1;
} }
} }
@@ -39,22 +28,15 @@ static void SortElementList(std::vector<appl::dataBufferStruct*>& _list) {
} }
} }
BufferView::BufferView(void) : BufferView::BufferView() :
m_openOrderMode(false) { m_openOrderMode(false) {
addObjectType("appl::BufferView"); addObjectType("appl::BufferView");
setCanHaveFocus(true);
registerMultiCast(ednMsgBufferListChange);
registerMultiCast(ednMsgBufferState);
registerMultiCast(ednMsgBufferId);
registerMultiCast(appl::MsgSelectNewFile);
registerMultiCast(appl::MsgSelectChange);
registerMultiCast(appl::MsgNameChange);
m_selectedID = -1; m_selectedID = -1;
m_selectedIdRequested = -1; m_selectedIdRequested = -1;
// load buffer manager: // load buffer manager:
m_bufferManager = appl::BufferManager::keep(); m_bufferManager = appl::BufferManager::create();
// load color properties // load color properties
m_paintingProperties = appl::GlyphPainting::keep("THEME:COLOR:bufferList.json"); m_paintingProperties = appl::GlyphPainting::create("THEME:COLOR:bufferList.json");
// get all id properties ... // get all id properties ...
m_colorBackground1 = m_paintingProperties->request("backgroung1"); m_colorBackground1 = m_paintingProperties->request("backgroung1");
m_colorBackground2 = m_paintingProperties->request("backgroung2"); m_colorBackground2 = m_paintingProperties->request("backgroung2");
@@ -63,185 +45,129 @@ BufferView::BufferView(void) :
m_colorTextModify = m_paintingProperties->request("textModify"); m_colorTextModify = m_paintingProperties->request("textModify");
} }
BufferView::~BufferView(void) { void BufferView::init() {
ewol::widget::List::init();
propertyHide.set(true);
propertyCanFocus.set(true);
if (m_bufferManager != nullptr) {
m_bufferManager->signalNewBuffer.connect(sharedFromThis(), &BufferView::onCallbackNewBuffer);
m_bufferManager->signalSelectFile.connect(sharedFromThis(), &BufferView::onCallbackselectNewFile);
m_bufferManager->signalRemoveBuffer.connect(sharedFromThis(), &BufferView::onCallbackBufferRemoved);
}
}
BufferView::~BufferView() {
removeAllElement(); removeAllElement();
} }
void BufferView::removeAllElement(void) { void BufferView::removeAllElement() {
for(int32_t iii=0; iii<m_list.size(); iii++) {
if (NULL!=m_list[iii]) {
delete(m_list[iii]);
m_list[iii] = NULL;
}
}
m_list.clear(); m_list.clear();
if (m_bufferManager != NULL) {
appl::BufferManager::release(m_bufferManager);
}
} }
void BufferView::insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _selectNewPosition) { void BufferView::insertAlphabetic(const appl::dataBufferStruct& _dataStruct, bool _selectNewPosition) {
if (_dataStruct == NULL) {
return;
}
// alphabetical order: // alphabetical order:
for (size_t iii = 0; iii < m_list.size(); ++iii) { for (size_t iii = 0; iii < m_list.size(); ++iii) {
if (m_list[iii] == NULL) { if (etk::tolower(m_list[iii].m_bufferName.getNameFile()) > etk::tolower(_dataStruct.m_bufferName.getNameFile())) {
continue;
}
if (to_lower(m_list[iii]->m_bufferName.getNameFile()) > to_lower(_dataStruct->m_bufferName.getNameFile())) {
m_list.insert(m_list.begin() + iii, _dataStruct); m_list.insert(m_list.begin() + iii, _dataStruct);
_dataStruct = NULL;
if (_selectNewPosition == true) { if (_selectNewPosition == true) {
m_selectedID = iii; m_selectedID = iii;
} }
break; return;
} }
} }
if (_dataStruct != NULL) { m_list.push_back(_dataStruct);
m_list.push_back(_dataStruct); if (_selectNewPosition == true) {
if (_selectNewPosition == true) { m_selectedID = m_list.size()-1;
m_selectedID = m_list.size()-1;
}
} }
} }
void BufferView::onCallbackNewBuffer(const std::string& _value) {
ememory::SharedPtr<appl::Buffer> buffer = m_bufferManager->get(_value);
if (buffer == nullptr) {
APPL_ERROR("event on element nor exist : " << _value);
return;
}
buffer->signalIsSave.connect(sharedFromThis(), &BufferView::onCallbackIsSave);
buffer->signalIsModify.connect(sharedFromThis(), &BufferView::onCallbackIsModify);
buffer->signalChangeName.connect(sharedFromThis(), &BufferView::onCallbackChangeName);
appl::dataBufferStruct tmp(_value, buffer);
if (m_openOrderMode == true) {
m_list.push_back(tmp);
} else {
insertAlphabetic(tmp);
}
if (m_list.size() <= 1) {
propertyHide.set(true);
propertySetOnWidgetNamed("appl-Buffer-viewer-separator", "hide", "true");
} else {
propertyHide.set(false);
propertySetOnWidgetNamed("appl-Buffer-viewer-separator", "hide", "false");
}
markToRedraw();
}
void BufferView::onReceiveMessage(const ewol::EMessage& _msg) { // TODO : Review this callback with the real shared_ptr on the buffer ...
widget::List::onReceiveMessage(_msg); void BufferView::onCallbackselectNewFile(const std::string& _value) {
if (_msg.getMessage() == appl::MsgSelectNewFile) { m_selectedID = -1;
appl::Buffer* buffer = m_bufferManager->get(_msg.getData()); for (size_t iii=0; iii<m_list.size(); iii++) {
if (buffer == NULL) { if (m_list[iii].m_buffer == nullptr) {
APPL_ERROR("event on element nor exist : " << _msg.getData()); continue;
return;
} }
buffer->registerOnEvent(this, appl::Buffer::eventIsSave); if (m_list[iii].m_buffer->getFileName() != _value) {
buffer->registerOnEvent(this, appl::Buffer::eventIsModify); continue;
buffer->registerOnEvent(this, appl::Buffer::eventChangeName);
appl::dataBufferStruct* tmp = new appl::dataBufferStruct(_msg.getData(), buffer);
if (tmp == NULL) {
APPL_ERROR("Allocation error of the tmp buffer list element");
return;
} }
if (m_openOrderMode == true) { m_selectedID = iii;
m_list.push_back(tmp); break;
} else {
insertAlphabetic(tmp);
}
markToRedraw();
return;
} }
if (_msg.getMessage() == appl::Buffer::eventChangeName) { markToRedraw();
for (size_t iii = 0; iii < m_list.size(); ++iii) { }
if (m_list[iii] == NULL) {
continue; void BufferView::onCallbackChangeName() {
} for (size_t iii = 0; iii < m_list.size(); ++iii) {
if (m_list[iii]->m_bufferName != m_list[iii]->m_buffer->getFileName()) { if (m_list[iii].m_bufferName != m_list[iii].m_buffer->getFileName()) {
m_list[iii]->m_bufferName = m_list[iii]->m_buffer->getFileName(); m_list[iii].m_bufferName = m_list[iii].m_buffer->getFileName();
if (m_openOrderMode == false) { if (m_openOrderMode == false) {
// re-order the fine in the correct position // re-order the fine in the correct position
appl::dataBufferStruct* tmp = m_list[iii]; appl::dataBufferStruct tmp = m_list[iii];
m_list[iii] = NULL; m_list.erase(m_list.begin() + iii);
m_list.erase(m_list.begin() + iii); insertAlphabetic(tmp, ((int64_t)iii == m_selectedID));
insertAlphabetic(tmp, (iii == m_selectedID));
break;
}
}
}
markToRedraw();
return;
}
if (_msg.getMessage() == appl::Buffer::eventIsSave) {
markToRedraw();
return;
}
if (_msg.getMessage() == appl::Buffer::eventIsModify) {
markToRedraw();
return;
}
APPL_DEBUG("message : " << _msg);
if (_msg.getMessage() == appl::MsgSelectChange) {
m_selectedID = -1;
appl::Buffer* tmpBuffer = NULL;
if (m_bufferManager != NULL) {
tmpBuffer = m_bufferManager->getBufferSelected();
}
if (tmpBuffer != NULL) {
for (int32_t iii=0; iii<m_list.size(); iii++) {
if (m_list[iii] == NULL) {
continue;
}
if (m_list[iii]->m_buffer != tmpBuffer) {
continue;
}
m_selectedID = iii;
break; break;
} }
} }
markToRedraw();
return;
}
if (_msg.getMessage() == ednMsgBufferListChange) {
// clean The list
removeAllElement();
// get all the buffer name and properties:
int32_t nbBufferOpen = 0; // BufferManager::size();
for (int32_t iii=0; iii<nbBufferOpen; iii++) {
/*
if (BufferManager::exist(iii)) {
BufferText* tmpBuffer = BufferManager::get(iii);
if (NULL != tmpBuffer) {
bool isModify = tmpBuffer->isModify();
etk::FSNode name = tmpBuffer->getFileName();
appl::dataBufferStruct* tmpElement = new appl::dataBufferStruct(name, iii, isModify);
if (NULL != tmpElement) {
m_list.push_back(tmpElement);
} else {
APPL_ERROR("Allocation error of the tmp buffer list element");
}
}
}
*/
}
if (true == globals::OrderTheBufferList() ) {
SortElementList(m_list);
}
markToRedraw();
}else if (_msg.getMessage() == ednMsgBufferId) {
m_selectedIdRequested = 0; //BufferManager::getSelected();
markToRedraw();
}else if (_msg.getMessage() == ednMsgBufferState) {
// update list of modify section ...
for (int32_t iii=0; iii<m_list.size(); iii++) {
if (NULL!=m_list[iii]) {
//m_list[iii]->m_isModify = BufferManager::get(m_list[iii]->m_bufferID)->isModify();
}
}
markToRedraw();
} }
markToRedraw();
} }
void BufferView::onObjectRemove(ewol::EObject* _removeObject) { void BufferView::onCallbackBufferRemoved(const ememory::SharedPtr<appl::Buffer>& _buffer) {
widget::List::onObjectRemove(_removeObject); APPL_ERROR("request remove buffer:");
for (int32_t iii=0; iii<m_list.size(); iii++) { auto it = m_list.begin();
if (m_list[iii] == NULL) { while (it != m_list.end()) {
continue; if (it->m_buffer == _buffer) {
it = m_list.erase(it);
m_selectedID = -1;
} else {
++it;
} }
if (m_list[iii]->m_buffer != _removeObject) {
continue;
}
m_list.erase(m_list.begin()+iii);
markToRedraw();
return;
} }
if (m_list.size() <= 1) {
propertyHide.set(true);
} else {
propertyHide.set(false);
}
markToRedraw();
}
void BufferView::onCallbackIsSave() {
markToRedraw();
}
void BufferView::onCallbackIsModify() {
markToRedraw();
} }
etk::Color<> BufferView::getBasicBG() {
etk::Color<> BufferView::getBasicBG(void) {
return (*m_paintingProperties)[m_colorBackground1].getForeground(); return (*m_paintingProperties)[m_colorBackground1].getForeground();
} }
uint32_t BufferView::getNuberOfColomn(void) { uint32_t BufferView::getNuberOfColomn() {
return 1; return 1;
} }
@@ -250,18 +176,17 @@ bool BufferView::getTitle(int32_t _colomn, std::string &_myTitle, etk::Color<> &
return true; return true;
} }
uint32_t BufferView::getNuberOfRaw(void) { uint32_t BufferView::getNuberOfRaw() {
return m_list.size(); return m_list.size();
} }
bool BufferView::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) { bool BufferView::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) {
if( _raw >= 0 if( _raw >= 0
&& _raw<m_list.size() && _raw<(int64_t)m_list.size() ) {
&& NULL != m_list[_raw]) { _myTextToWrite = m_list[_raw].m_bufferName.getNameFile();
_myTextToWrite = m_list[_raw]->m_bufferName.getNameFile();
if ( m_list[_raw]->m_buffer != NULL if ( m_list[_raw].m_buffer != nullptr
&& m_list[_raw]->m_buffer->isModify() == false) { && m_list[_raw].m_buffer->isModify() == false) {
_fg = (*m_paintingProperties)[m_colorTextNormal].getForeground(); _fg = (*m_paintingProperties)[m_colorTextNormal].getForeground();
} else { } else {
_fg = (*m_paintingProperties)[m_colorTextModify].getForeground(); _fg = (*m_paintingProperties)[m_colorTextModify].getForeground();
@@ -281,17 +206,16 @@ bool BufferView::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextT
return true; return true;
} }
bool BufferView::onItemEvent(int32_t _IdInput, enum ewol::keyEvent::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y) bool BufferView::onItemEvent(int32_t _IdInput, enum gale::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y) {
{ if (1 == _IdInput && _typeEvent == gale::key::status::pressSingle) {
if (1 == _IdInput && _typeEvent == ewol::keyEvent::statusSingle) {
APPL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw ); APPL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw );
if( _raw >= 0 if( _raw >= 0
&& _raw<m_list.size() && _raw<(int64_t)m_list.size()) {
&& NULL != m_list[_raw]) { if (m_list[_raw].m_buffer != nullptr) {
if (m_list[_raw]->m_buffer != NULL) { if (m_bufferManager != nullptr) {
sendMultiCast(appl::MsgSelectNewFile, m_list[_raw]->m_buffer->getFileName()); APPL_INFO("Select file :" << m_list[_raw].m_buffer->getFileName() << " in list");
m_selectedID = _raw; m_bufferManager->open(m_list[_raw].m_buffer->getFileName());
markToRedraw(); }
return true; return true;
} }
} }

View File

@@ -1,13 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __BUFFER_VIEW_H__
#define __BUFFER_VIEW_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
@@ -15,28 +11,28 @@
#include <ewol/widget/List.h> #include <ewol/widget/List.h>
#include <ewol/widget/Windows.h> #include <ewol/widget/Windows.h>
namespace appl namespace appl {
{ class dataBufferStruct {
class dataBufferStruct
{
public: public:
etk::FSNode m_bufferName; etk::FSNode m_bufferName;
appl::Buffer* m_buffer; ememory::SharedPtr<appl::Buffer> m_buffer;
dataBufferStruct(const std::string& _bufferName, appl::Buffer* _buffer) : dataBufferStruct(const std::string& _bufferName, const ememory::SharedPtr<appl::Buffer>& _buffer) :
m_bufferName(_bufferName), m_bufferName(_bufferName),
m_buffer(_buffer) { m_buffer(_buffer) {
}; };
~dataBufferStruct(void) { }; virtual ~dataBufferStruct() { };
}; };
}; };
class BufferView : public widget::List class BufferView;
{ using BufferViewShared = ememory::SharedPtr<BufferView>;
using BufferViewWeak = ememory::WeakPtr<BufferView>;
class BufferView : public ewol::widget::List {
private: private:
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
private: private:
appl::GlyphPainting* m_paintingProperties; //!< element painting property ememory::SharedPtr<appl::GlyphPainting> m_paintingProperties; //!< element painting property
int32_t m_colorBackground1; int32_t m_colorBackground1;
int32_t m_colorBackground2; int32_t m_colorBackground2;
int32_t m_colorBackgroundSelect; int32_t m_colorBackgroundSelect;
@@ -45,34 +41,37 @@ class BufferView : public widget::List
private: private:
int32_t m_selectedIdRequested; int32_t m_selectedIdRequested;
int32_t m_selectedID; int32_t m_selectedID;
std::vector<appl::dataBufferStruct*> m_list; std::vector<appl::dataBufferStruct> m_list;
/** /**
* @brief Insert the element in the alphabetic order. * @brief Insert the element in the alphabetic order.
* @param[in] _dataStruct element to add. * @param[in] _dataStruct element to add.
*/ */
void insertAlphabetic(appl::dataBufferStruct* _dataStruct, bool _selectNewPosition = false); void insertAlphabetic(const appl::dataBufferStruct& _dataStruct, bool _selectNewPosition = false);
public: protected:
// Constructeur // Constructeur
BufferView(void); BufferView();
~BufferView(void); void init();
// Derived function public:
virtual void onReceiveMessage(const ewol::EMessage& _msg); DECLARE_FACTORY(BufferView);
virtual void onObjectRemove(ewol::EObject* _removeObject); virtual ~BufferView();
private: private:
bool m_openOrderMode; //!< true if the order is the opening order mode, otherwise, Alphabetic order bool m_openOrderMode; //!< true if the order is the opening order mode, otherwise, Alphabetic order
protected: protected:
// function call to display the list : // function call to display the list :
virtual etk::Color<> getBasicBG(void); virtual etk::Color<> getBasicBG();
void removeAllElement(void); void removeAllElement();
// Derived function // Derived function
virtual uint32_t getNuberOfColomn(void); virtual uint32_t getNuberOfColomn();
virtual bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg); virtual bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg);
virtual uint32_t getNuberOfRaw(void); virtual uint32_t getNuberOfRaw();
virtual bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg); virtual bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg);
virtual bool onItemEvent(int32_t _IdInput, enum ewol::keyEvent::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y); virtual bool onItemEvent(int32_t _IdInput, enum gale::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y);
private: //callback function:
void onCallbackChangeName();
void onCallbackIsSave();
void onCallbackIsModify();
void onCallbackNewBuffer(const std::string& _value);
void onCallbackselectNewFile(const std::string& _value);
void onCallbackBufferRemoved(const ememory::SharedPtr<appl::Buffer>& _buffer);
}; };
#endif

View File

@@ -1,12 +1,8 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/Gui/MainWindows.h> #include <appl/Gui/MainWindows.h>
@@ -27,10 +23,9 @@
#include <ewol/widget/Menu.h> #include <ewol/widget/Menu.h>
#include <ewol/widget/meta/FileChooser.h> #include <ewol/widget/meta/FileChooser.h>
#include <ewol/widget/meta/Parameter.h> #include <ewol/widget/meta/Parameter.h>
#include <ewol/widget/WidgetManager.h> #include <ewol/widget/Manager.h>
#include <ewol/renderer/EObject.h> #include <ewol/object/Object.h>
#include <ewol/renderer/eContext.h> #include <ewol/context/Context.h>
#include <date/date.h>
#include <ewol/widget/meta/StdPopUp.h> #include <ewol/widget/meta/StdPopUp.h>
#include <appl/Gui/WorkerSaveFile.h> #include <appl/Gui/WorkerSaveFile.h>
#include <appl/Gui/WorkerSaveAllFile.h> #include <appl/Gui/WorkerSaveAllFile.h>
@@ -38,53 +33,36 @@
#include <appl/Gui/WorkerCloseAllFile.h> #include <appl/Gui/WorkerCloseAllFile.h>
namespace appl { namespace appl {
std::string getVersion(void) { std::string getVersion() {
#define FIRST_YEAR (2010) return APPL_VERSION;
std::string tmpOutput = std::to_string(date::getYear()-FIRST_YEAR);
tmpOutput += ".";
tmpOutput += std::to_string(date::getMonth());
tmpOutput += ".";
tmpOutput += std::to_string(date::getDay());
return tmpOutput;
} }
} }
#undef __class__
#define __class__ "AboutGui"
#include <ewol/widget/Label.h> #include <ewol/widget/Label.h>
#include <ewol/widget/Spacer.h> #include <ewol/widget/Spacer.h>
class ParameterAboutGui : public widget::Sizer { class ParameterAboutGui : public ewol::widget::Sizer {
public : public :
ParameterAboutGui(void) : ParameterAboutGui() {
widget::Sizer(widget::Sizer::modeVert) { addObjectType("appl::ParameterAboutGui");
widget::Spacer* mySpacer = NULL; }
void init() {
propertyMode.setDirectCheck(ewol::widget::Sizer::modeVert);
ewol::widget::Sizer::init();
ememory::SharedPtr<ewol::widget::Spacer> mySpacer;
mySpacer = new widget::Spacer(); mySpacer = ewol::widget::Spacer::create();
if (NULL == mySpacer) { if (mySpacer == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
mySpacer->setExpand(bvec2(true,true)); mySpacer->propertyExpand.set(bvec2(true,true));
subWidgetAdd(mySpacer); subWidgetAdd(mySpacer);
} }
std::string tmpLabel = "<left>"; std::string tmpLabel = "<left>";
tmpLabel += " <b>Editeur De N'ours</b> : v:"; tmpLabel += " <b>Editeur De N'ours</b> : v:";
tmpLabel += appl::getVersion(); tmpLabel += appl::getVersion();
tmpLabel += "<br/>"; tmpLabel += "<br/>";
tmpLabel += " <b>Build Time</b> : ";
tmpLabel += date::getYear();
tmpLabel += "/";
tmpLabel += date::getMonth();
tmpLabel += "/";
tmpLabel += date::getDay();
tmpLabel += " ";
tmpLabel += date::getHour();
tmpLabel += "h";
tmpLabel += date::getMinute();
tmpLabel += "<br/>";
tmpLabel += " <b>Website</b> : https://github.com/HeeroYui/edn<br/>"; tmpLabel += " <b>Website</b> : https://github.com/HeeroYui/edn<br/>";
tmpLabel += " <b>License</b> : GPL v3<br/>"; tmpLabel += " <b>License</b> : GPL v3<br/>";
tmpLabel += " <b>Copyright</b> : 2010 Edouard DUPIN<br/>"; tmpLabel += " <b>Copyright</b> : 2010 Edouard DUPIN<br/>";
@@ -93,320 +71,287 @@ class ParameterAboutGui : public widget::Sizer {
tmpLabel += " libPng, ogg-tremor, portaudio, libZip<br/>"; tmpLabel += " libPng, ogg-tremor, portaudio, libZip<br/>";
tmpLabel += " tinyXml, freetype, agg2.4, etk<br/>"; tmpLabel += " tinyXml, freetype, agg2.4, etk<br/>";
tmpLabel += "</left>"; tmpLabel += "</left>";
widget::Label* myLabel = new widget::Label(tmpLabel); ememory::SharedPtr<ewol::widget::Label> myLabel = ewol::widget::Label::create();
if (NULL == myLabel) { if (myLabel == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error"); APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
myLabel->setExpand(bvec2(true,false)); myLabel->propertyValue.set(tmpLabel);
myLabel->propertyExpand.set(bvec2(true,false));
subWidgetAdd(myLabel); subWidgetAdd(myLabel);
} }
}; };
~ParameterAboutGui(void) { ~ParameterAboutGui() {
}; };
}; };
// Local main windows event :
static const char* mainWindowsRequestSaveFile = "appl-event-main-windows-save-file";
static const char* mainWindowsRequestSaveFileAs = "appl-event-main-windows-save-file-as";
static const char* mainWindowsRequestcloseFileNoCheck = "appl-event-main-windows-close-file-no-check";
const char* l_smoothChick = "tmpEvent_smooth"; MainWindows::MainWindows() {
const char* l_smoothMin = "tmpEvent_minChange";
const char* l_smoothMax = "tmpEvent_maxChange";
#undef __class__
#define __class__ "MainWindows"
MainWindows::MainWindows(void) {
addObjectType("appl::MainWindows"); addObjectType("appl::MainWindows");
}
void MainWindows::init() {
ewol::widget::Windows::init();
APPL_DEBUG("CREATE WINDOWS ... "); APPL_DEBUG("CREATE WINDOWS ... ");
widget::Sizer * mySizerVert = NULL; ewol::widget::SizerShared mySizerVert;
widget::Sizer * mySizerVert2 = NULL; ewol::widget::SizerShared mySizerVert2;
widget::Sizer * mySizerHori = NULL; ewol::widget::SizerShared mySizerHori;
//ewol::Button * myButton = NULL; ememory::SharedPtr<appl::TextViewer> myTextView;
appl::TextViewer * myTextView = NULL; ememory::SharedPtr<appl::TextViewer> myTextView2;
BufferView * myBufferView = NULL; ememory::SharedPtr<BufferView> myBufferView;
widget::Menu * myMenu = NULL; ewol::widget::MenuShared myMenu;
// load buffer manager: // load buffer manager:
m_bufferManager = appl::BufferManager::keep(); m_bufferManager = appl::BufferManager::create();
m_viewerManager = appl::ViewerManager::create();
mySizerVert = new widget::Sizer(widget::Sizer::modeVert); mySizerVert = ewol::widget::Sizer::create();
mySizerVert->propertyName.set("plop 1111111");
mySizerVert->propertyMode.set(ewol::widget::Sizer::modeVert);
setSubWidget(mySizerVert); setSubWidget(mySizerVert);
mySizerHori = ewol::widget::Sizer::create();
mySizerHori = new widget::Sizer(widget::Sizer::modeHori); mySizerHori->propertyName.set("plop 222222222");
mySizerHori->propertyMode.set(ewol::widget::Sizer::modeHori);
mySizerVert->subWidgetAdd(mySizerHori); mySizerVert->subWidgetAdd(mySizerHori);
myBufferView = new BufferView(); myBufferView = BufferView::create();
myBufferView->setExpand(bvec2(false,true)); myBufferView->propertyName.set("plop 3333333");
myBufferView->setFill(bvec2(true,true)); myBufferView->propertyExpand.set(bvec2(false,true));
myBufferView->propertyFill.set(bvec2(true,true));
mySizerHori->subWidgetAdd(myBufferView); mySizerHori->subWidgetAdd(myBufferView);
mySizerVert2 = new widget::Sizer(widget::Sizer::modeVert); ewol::widget::SpacerShared mySpacer = ewol::widget::Spacer::create();
mySizerHori->subWidgetAdd(mySizerVert2); mySpacer->propertyName.set("appl-Buffer-viewer-separator");
mySpacer->propertyColor.set(etk::color::black);
// main buffer Area : mySpacer->propertyMinSize.set(gale::Dimension(vec2(2,2), gale::distance::pixel));
myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11); mySpacer->propertyExpand.set(bvec2(false,true));
myTextView->setExpand(bvec2(true,true)); mySpacer->propertyFill.set(bvec2(true,true));
myTextView->setFill(bvec2(true,true)); mySpacer->propertyHide.set(true);
mySizerVert2->subWidgetAdd(myTextView); mySizerHori->subWidgetAdd(mySpacer);
/*
myTextView = new appl::TextViewer("FreeMono;DejaVuSansMono;FreeSerif", 11);
myTextView->setExpand(bvec2(true,true));
myTextView->setFill(bvec2(true,true));
mySizerVert2->subWidgetAdd(myTextView);
*/
// search area :
Search * mySearch = new Search();
mySizerVert2->subWidgetAdd(mySearch);
#ifdef APPL_BUFFER_FONT_DISTANCE_FIELD
{
widget::Sizer * mySizerHori2 = new widget::Sizer(widget::Sizer::modeHori);
mySizerVert2->subWidgetAdd(mySizerHori2);
widget::CheckBox* tmpCheck = new widget::CheckBox("smooth");
mySizerHori2->subWidgetAdd(tmpCheck);
tmpCheck->registerOnEvent(this, ewolEventCheckBoxClicked, l_smoothChick);
widget::Slider* tmpSlider = new widget::Slider();
mySizerHori2->subWidgetAdd(tmpSlider);
tmpSlider->registerOnEvent(this, ewolEventSliderChange, l_smoothMin);
tmpSlider->setExpand(bvec2(true,false));
tmpSlider->setMin(0);
tmpSlider->setMax(1000);
tmpSlider->setValue(0450);
tmpSliderMin = tmpSlider;
tmpSlider = new widget::Slider();
mySizerHori2->subWidgetAdd(tmpSlider);
tmpSlider->registerOnEvent(this, ewolEventSliderChange, l_smoothMax);
tmpSlider->setExpand(bvec2(true,false));
tmpSlider->setMin(0);
tmpSlider->setMax(1000);
tmpSlider->setValue(0550);
tmpSliderMax = tmpSlider;
}
#endif
mySizerHori = new widget::Sizer(widget::Sizer::modeHori); mySizerVert2 = ewol::widget::Sizer::create();
mySizerVert2->propertyMode.set(ewol::widget::Sizer::modeVert);
mySizerHori->subWidgetAdd(mySizerVert2);
mySizerVert2->propertyName.set("appl-view-code-sizer");
// main buffer Area :
#if defined(__TARGET_OS__Android)
int32_t sizeText = 16;
#else
int32_t sizeText = 11;
#endif
myTextView2 = appl::TextViewer::create("font-size", sizeText);
myTextView2->propertyName.set("appl-text-viewer2");
myTextView2->propertyExpand.set(bvec2(true,true));
myTextView2->propertyFill.set(bvec2(true,true));
myTextView2->propertyHide.set(true);
mySizerVert2->subWidgetAdd(myTextView2);
mySpacer = ewol::widget::Spacer::create();
mySpacer->propertyName.set("appl-text-separator");
mySpacer->propertyColor.set(etk::color::black);
mySpacer->propertyMinSize.set(gale::Dimension(vec2(2,2), gale::distance::pixel));
mySpacer->propertyExpand.set(bvec2(true,false));
mySpacer->propertyFill.set(bvec2(true,true));
mySpacer->propertyHide.set(true);
mySizerVert2->subWidgetAdd(mySpacer);
myTextView = appl::TextViewer::create("font-size", sizeText);
myTextView->propertyName.set("appl-text-viewer1");
myTextView->propertyExpand.set(bvec2(true,true));
myTextView->propertyFill.set(bvec2(true,true));
mySizerVert2->subWidgetAdd(myTextView);
// search area:
m_widgetSearch = appl::widget::Search::create();
mySizerVert2->subWidgetAdd(m_widgetSearch);
mySizerHori = ewol::widget::Sizer::create();
mySizerHori->propertyName.set("plop 555555");
mySizerHori->propertyMode.set(ewol::widget::Sizer::modeHori);
mySizerVert->subWidgetAdd(mySizerHori); mySizerVert->subWidgetAdd(mySizerHori);
myMenu = new widget::Menu(); myMenu = ewol::widget::Menu::create();
myMenu->propertyName.set("appl-menu-interface");
mySizerHori->subWidgetAdd(myMenu); mySizerHori->subWidgetAdd(myMenu);
int32_t idMenuFile = myMenu->addTitle("File"); int32_t idMenuFile = myMenu->addTitle("_T{File}");
(void)myMenu->add(idMenuFile, "New", "", ednMsgGuiNew); myMenu->add(idMenuFile, "_T{New}", "", "menu:new");
(void)myMenu->addSpacer(); myMenu->addSpacer();
(void)myMenu->add(idMenuFile, "Open", "THEME:GUI:Load.svg", ednMsgGuiOpen); myMenu->add(idMenuFile, "_T{Open}", "THEME:GUI:Load.edf", "menu:open");
(void)myMenu->add(idMenuFile, "Close", "THEME:GUI:Close.svg", ednMsgGuiClose, "current"); myMenu->add(idMenuFile, "_T{Close}", "THEME:GUI:Close.edf", "menu:close");
(void)myMenu->add(idMenuFile, "Close (all)", "", ednMsgGuiClose, "All"); myMenu->add(idMenuFile, "_T{Close (all)}", "", "menu:close-all");
(void)myMenu->add(idMenuFile, "Save", "THEME:GUI:Save.svg", ednMsgGuiSave, "current"); myMenu->add(idMenuFile, "_T{Save}", "THEME:GUI:Save.edf", "menu:save");
(void)myMenu->add(idMenuFile, "Save As ...", "", ednMsgGuiSaveAs); myMenu->add(idMenuFile, "_T{Save As ...}", "", "menu:save-as");
(void)myMenu->addSpacer(); myMenu->addSpacer();
//(void)myMenu->add(idMenuFile, "Exit", "", ednMsgGuiExit); myMenu->add(idMenuFile, "_T{Properties}", "THEME:GUI:Parameter.edf", "menu:property");
(void)myMenu->addSpacer(); int32_t idMenuEdit = myMenu->addTitle("_T{Edit}");
(void)myMenu->add(idMenuFile, "Properties", "THEME:GUI:Parameter.svg", ednMsgProperties); myMenu->add(idMenuEdit, "_T{Goto line ...}","", "menu:goto-line");
int32_t idMenuEdit = myMenu->addTitle("Edit"); int32_t idMenuSearch = myMenu->addTitle("_T{Search}");
(void)myMenu->add(idMenuEdit, "Undo", "THEME:GUI:Undo.svg", ednMsgGuiUndo); myMenu->add(idMenuSearch, "_T{Search}", "THEME:GUI:Search.edf", "menu:search");
(void)myMenu->add(idMenuEdit, "Redo", "THEME:GUI:Redo.svg", ednMsgGuiRedo); myMenu->add(idMenuSearch, "_T{Replace}", "THEME:GUI:Replace.edf", "menu:replace");
(void)myMenu->addSpacer(); myMenu->addSpacer();
(void)myMenu->add(idMenuEdit, "Copy", "", ednMsgGuiCopy, "STD"); myMenu->add(idMenuSearch, "_T{Find (previous)}","", "menu:find:previous");
(void)myMenu->add(idMenuEdit, "Cut", "", ednMsgGuiCut, "STD"); myMenu->add(idMenuSearch, "_T{Find (next)}", "", "menu:find:next");
(void)myMenu->add(idMenuEdit, "Paste", "", ednMsgGuiPaste, "STD"); myMenu->add(idMenuSearch, "_T{Find (all)}", "", "menu:find:all");
(void)myMenu->add(idMenuEdit, "Remove", "", ednMsgGuiRm); myMenu->add(idMenuSearch, "_T{Un-Select}", "", "menu:find:none");
(void)myMenu->addSpacer(); int32_t idMenugDisplay = myMenu->addTitle("_T{Display}");
(void)myMenu->add(idMenuEdit, "Select All","", ednMsgGuiSelect, "ALL"); myMenu->add(idMenugDisplay, "_T{Color Black}", "", "menu:color:color/black/");
(void)myMenu->add(idMenuEdit, "Un-Select","", ednMsgGuiSelect, "NONE"); myMenu->add(idMenugDisplay, "_T{Color White}", "", "menu:color:color/white/");
(void)myMenu->add(idMenuEdit, "Goto line ...","", ednMsgGuiGotoLine, "???"); myMenu->add(idMenugDisplay, "_T{Shape square}", "", "menu:shape:shape/square/");
int32_t idMenuSearch = myMenu->addTitle("Search"); myMenu->add(idMenugDisplay, "_T{Shape round}", "", "menu:shape:shape/round/");
(void)myMenu->add(idMenuSearch, "Search", "THEME:GUI:Search.svg", ednMsgGuiSearch); myMenu->addSpacer();
(void)myMenu->add(idMenuSearch, "Replace", "THEME:GUI:Replace.svg", ednMsgGuiReplace); myMenu->add(idMenugDisplay, "_T{Reload openGl Shader}", "", "menu:reloadShape");
(void)myMenu->addSpacer(); myMenu->addSpacer();
(void)myMenu->add(idMenuSearch, "Find (previous)","", ednMsgGuiFind, "Previous"); myMenu->add(idMenugDisplay, "_T{Split}", "", "menu:split:enable");
(void)myMenu->add(idMenuSearch, "Find (next)", "", ednMsgGuiFind, "Next"); myMenu->add(idMenugDisplay, "_T{Unsplit}", "", "menu:split:disable");
(void)myMenu->add(idMenuSearch, "Find (all)", "", ednMsgGuiFind, "All"); myMenu->add(idMenugDisplay, "_T{Vertical}", "", "menu:split:vert");
(void)myMenu->add(idMenuSearch, "Un-Select", "", ednMsgGuiFind, "None"); myMenu->add(idMenugDisplay, "_T{Horizontal}", "", "menu:split:hori");
/* ==> must be in the pluggin list control ... myMenu->signalSelect.connect(sharedFromThis(), &MainWindows::onCallbackMenuEvent);
int32_t idMenuCTags = myMenu->addTitle("C-tags"); m_widgetLabelFileName = ewol::widget::Label::create();
(void)myMenu->add(idMenuCTags, "Load", "", ednMsgGuiCtags, "Load"); m_widgetLabelFileName->propertyValue.set("FileName");
(void)myMenu->add(idMenuCTags, "ReLoad", "", ednMsgGuiCtags, "ReLoad"); m_widgetLabelFileName->propertyName.set("appl-widget-display-name");
(void)myMenu->add(idMenuCTags, "Jump", "", ednMsgGuiCtags, "Jump"); m_widgetLabelFileName->propertyExpand.set(bvec2(true,false));
(void)myMenu->add(idMenuCTags, "Back", "", ednMsgGuiCtags, "Back"); m_widgetLabelFileName->propertyFill.set(bvec2(true,false));;
*/
int32_t idMenugDisplay = myMenu->addTitle("Display");
(void)myMenu->add(idMenugDisplay, "Color Black", "", appl::MsgNameGuiChangeColor, "colorBlack/");
(void)myMenu->add(idMenugDisplay, "Color White", "", appl::MsgNameGuiChangeColor, "colorWhite/");
(void)myMenu->addSpacer();
(void)myMenu->add(idMenugDisplay, "Reload openGl Shader", "", ednMsgGuiReloadShader);
m_widgetLabelFileName = new widget::Label("FileName");
m_widgetLabelFileName->setExpand(bvec2(true,false));
m_widgetLabelFileName->setFill(bvec2(true,false));;
mySizerHori->subWidgetAdd(m_widgetLabelFileName); mySizerHori->subWidgetAdd(m_widgetLabelFileName);
// add generic shortcut ... // add generic shortcut ...
// (shift, control, alt, meta, char32_t unicodeValue, const char * generateEventId, std::string& data) shortCutAdd("ctrl+o", "menu:open");
shortCutAdd("ctrl+o", ednMsgGuiOpen, "", true); shortCutAdd("ctrl+n", "menu:new");
shortCutAdd("ctrl+n", ednMsgGuiNew, "", true);
shortCutAdd("ctrl+s", ednMsgGuiSave, "current", true); shortCutAdd("ctrl+s", "menu:save");
shortCutAdd("ctrl+shift+s", ednMsgGuiSave, "All", true); shortCutAdd("ctrl+shift+s", "menu:save-all");
shortCutAdd("ctrl+q", ednMsgGuiClose, "current", true); shortCutAdd("ctrl+q", "menu:close");
shortCutAdd("ctrl+shift+q", ednMsgGuiClose, "All", true); shortCutAdd("ctrl+shift+q", "menu:close-all");
shortCutAdd("ctrl+z", ednMsgGuiUndo, "", true); shortCutAdd("ctrl+l", "menu:goto-line");
shortCutAdd("ctrl+shift+z", ednMsgGuiRedo, "", true);
shortCutAdd("ctrl+l", ednMsgGuiGotoLine, "???", true); shortCutAdd("ctrl+f", "menu:search");
shortCutAdd("F12", "menu:reloade-shader");
shortCutAdd("ctrl+f", ednMsgGuiSearch, "", true); // TODO : auto-connect on shortcut event ==> maybe do beter later ...
shortCutAdd("F12", ednMsgGuiReloadShader, "", true); signalShortcut.connect(sharedFromThis(), &MainWindows::onCallbackShortCut);
m_bufferManager->signalSelectFile.connect(sharedFromThis(), &MainWindows::onCallbackselectNewFile);
//shortCutAdd("ctrl+d", ednMsgGuiCtags, "Jump", true);
// Generic event ...
registerMultiCast(ednMsgGuiSave);
registerMultiCast(ednMsgGuiSaveAs);
registerMultiCast(ednMsgProperties);
registerMultiCast(ednMsgGuiNew);
registerMultiCast(ednMsgGuiOpen);
registerMultiCast(ednMsgGuiClose);
// to update the title ...
registerMultiCast(ednMsgBufferState);
registerMultiCast(ednMsgBufferId);
registerMultiCast(ednMsgGuiReloadShader);
registerMultiCast(appl::MsgNameGuiChangeColor);
registerMultiCast(appl::MsgSelectNewFile);
} }
MainWindows::~MainWindows(void) { MainWindows::~MainWindows() {
appl::BufferManager::release(m_bufferManager);
} }
void MainWindows::onCallbackShortCut(const std::string& _value) {
APPL_WARNING("Event from ShortCut : " << _value);
onCallbackMenuEvent(_value);
}
const char *const ednEventPopUpFileSelected = "edn-mainWindows-openSelected"; void MainWindows::onCallbackMenuEvent(const std::string& _value) {
const char *const ednEventPopUpFileSaveAs = "edn-mainWindows-saveAsSelected"; APPL_WARNING("Event from Menu : " << _value);
if (_value == "menu:new") {
if (m_bufferManager != nullptr) {
void MainWindows::onReceiveMessage(const ewol::EMessage& _msg) { m_bufferManager->createNewBuffer();
ewol::Windows::onReceiveMessage(_msg); }
} else if (_value == "menu:open") {
APPL_VERBOSE("Receive Event from the main windows: " << _msg ); displayOpen();
// open file Section ... } else if (_value == "menu:close") {
if (_msg.getMessage() == ednMsgGuiOpen) { ememory::SharedPtr<appl::WorkerCloseFile> worker = appl::WorkerCloseFile::create();
widget::FileChooser* tmpWidget = new widget::FileChooser(); worker->startAction("");
if (tmpWidget == NULL) { } else if (_value == "menu:close-all") {
APPL_ERROR("Can not open File chooser !!! "); appl::WorkerCloseAllFile::create();
} else if (_value == "menu:save") {
appl::WorkerSaveFile::create("", false);
} else if (_value == "menu:save-all") {
appl::WorkerSaveAllFile::create();
} else if (_value == "menu:save-as") {
appl::WorkerSaveFile::create("", true);
} else if (_value == "menu:property") {
displayProperty();
} else if (_value == "menu:search") {
if (m_widgetSearch == nullptr) {
return; return;
} }
tmpWidget->setTitle("Open files ..."); if (m_widgetSearch->propertyHide.get() == true) {
tmpWidget->setValidateLabel("Open"); m_widgetSearch->propertyHide.set(false);
if (m_bufferManager == NULL) { m_widgetSearch->selectSearch();
APPL_ERROR("can not call unexistant buffer manager ... ");
return;
}
// Get a ref on the buffer selected (if null, no buffer was selected ...)
appl::Buffer* tmpBuffer = m_bufferManager->getBufferSelected();
if (tmpBuffer != NULL) {
etk::FSNode tmpFile = tmpBuffer->getFileName();
tmpWidget->setFolder(tmpFile.getNameFolder());
}
// apply widget pop-up ...
popUpWidgetPush(tmpWidget);
tmpWidget->registerOnEvent(this, widget::FileChooser::eventValidate, ednEventPopUpFileSelected);
} else if (_msg.getMessage() == ednMsgProperties) {
// Request the parameter GUI
widget::Parameter* tmpWidget = new widget::Parameter();
if (NULL == tmpWidget) {
APPL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
tmpWidget->setTitle("Properties"); if (m_widgetSearch->isSelectSearch()) {
popUpWidgetPush(tmpWidget); m_widgetSearch->propertyHide.set(true);
tmpWidget->menuAddGroup("Editor"); if (m_viewerManager != nullptr) {
ewol::Widget* tmpSubWidget = new globals::ParameterGlobalsGui(); ememory::SharedPtr<appl::TextViewer> tmp = m_viewerManager->getViewerSelected();
tmpWidget->menuAdd("Editor", "", tmpSubWidget); if (tmp != nullptr) {
tmpWidget->menuAdd("Font & Color", "", NULL); tmp->keepFocus();
tmpWidget->menuAdd("Highlight", "", NULL); }
tmpWidget->menuAddGroup("General"); }
tmpWidget->menuAdd("Display", "", NULL); } else {
tmpSubWidget = new ParameterAboutGui(); m_widgetSearch->selectSearch();
tmpWidget->menuAdd("About", "", tmpSubWidget); }
} }
} else if (_msg.getMessage() == appl::MsgNameGuiChangeColor) { } else if (_value == "menu:replace") {
etk::theme::setName("COLOR", _msg.getData()); if (m_widgetSearch == nullptr) {
return;
}
if (m_widgetSearch->propertyHide.get() == true) {
m_widgetSearch->propertyHide.set(false);
m_widgetSearch->selectReplace();
} else {
if (m_widgetSearch->isSelectReplace()) {
m_widgetSearch->propertyHide.set(true);
if (m_viewerManager != nullptr) {
ememory::SharedPtr<appl::TextViewer> tmp = m_viewerManager->getViewerSelected();
if (tmp != nullptr) {
tmp->keepFocus();
}
}
} else {
m_widgetSearch->selectReplace();
}
}
} else if (_value == "menu:find:previous") {
APPL_TODO("Event from Menu : " << _value);
} else if (_value == "menu:find:next") {
APPL_TODO("Event from Menu : " << _value);
} else if (_value == "menu:find:all") {
APPL_TODO("Event from Menu : " << _value);
} else if (_value == "menu:find:none") {
APPL_TODO("Event from Menu : " << _value);
} else if ( _value == "menu:color:color/black/"
|| _value == "menu:color:color/white/") {
etk::theme::setName("COLOR", std::string(_value, 11));
EWOL_ERROR("Select Shape or Color : 'COLOR'='" << std::string(_value, 11) << "'");
ewol::getContext().getResourcesManager().reLoadResources(); ewol::getContext().getResourcesManager().reLoadResources();
ewol::getContext().forceRedrawAll(); ewol::getContext().forceRedrawAll();
} else if (_msg.getMessage() == ednMsgGuiReloadShader) { } else if ( _value == "menu:shape:shape/square/"
|| _value == "menu:shape:shape/round/") {
EWOL_ERROR("Select Shape or Color : 'GUI'='" << std::string(_value, 11) << "'");
etk::theme::setName("GUI", std::string(_value, 11));
ewol::getContext().getResourcesManager().reLoadResources(); ewol::getContext().getResourcesManager().reLoadResources();
ewol::getContext().forceRedrawAll(); ewol::getContext().forceRedrawAll();
} else if (_msg.getMessage() == ednMsgGuiExit) { } else if (_value == "menu:reloadShape") {
// TODO : ... ewol::getContext().getResourcesManager().reLoadResources();
ewol::getContext().forceRedrawAll();
} else if (_value == "menu:split:enable") {
propertySetOnWidgetNamed("appl-text-viewer2", "hide", "false");
propertySetOnWidgetNamed("appl-text-separator", "hide", "false");
} else if (_value == "menu:split:disable") {
propertySetOnWidgetNamed("appl-text-viewer2", "hide", "true");
propertySetOnWidgetNamed("appl-text-separator", "hide", "true");
} else if (_value == "menu:split:vert") {
propertySetOnWidgetNamed("appl-view-code-sizer", "mode", "vert");
propertySetOnWidgetNamed("appl-text-separator", "expand", "true,false");
} else if (_value == "menu:split:hori") {
propertySetOnWidgetNamed("appl-view-code-sizer", "mode", "hori");
propertySetOnWidgetNamed("appl-text-separator", "expand", "false,true");
} else if (_value == "menu:reloade-shader") {
ewol::getContext().getResourcesManager().reLoadResources();
ewol::getContext().forceRedrawAll();
} else {
APPL_ERROR("Event from Menu UNKNOW : '" << _value << "'");
} }
// Note : Fore all next message we need to acces to the buffer manager ==> just check one time ... }
if (m_bufferManager == NULL) { /* TODO :
APPL_ERROR("can not call unexistant buffer manager ... ");
return;
}
if ( _msg.getMessage() == appl::MsgSelectNewFile
|| _msg.getMessage() == appl::Buffer::eventIsModify
|| _msg.getMessage() == appl::Buffer::eventIsSave
|| _msg.getMessage() == appl::Buffer::eventChangeName) {
// select a new Buffer ==> change title:
appl::Buffer* tmpp = m_bufferManager->getBufferSelected();
if (tmpp == NULL) {
setTitle("Edn");
if (m_widgetLabelFileName != NULL) {
m_widgetLabelFileName->setLabel("");
}
} else {
if (_msg.getMessage() == appl::MsgSelectNewFile) {
tmpp->registerOnEvent(this, appl::Buffer::eventIsModify);
tmpp->registerOnEvent(this, appl::Buffer::eventIsSave);
tmpp->registerOnEvent(this, appl::Buffer::eventChangeName);
}
setTitle(std::string("Edn : ") + (tmpp->isModify()==true?" *":"") + tmpp->getFileName());
if (m_widgetLabelFileName != NULL) {
m_widgetLabelFileName->setLabel(tmpp->getFileName() + (tmpp->isModify()==true?" *":""));
}
}
} else if (_msg.getMessage() == ednMsgGuiNew) {
(void)m_bufferManager->createNewBuffer();
} else if (_msg.getMessage() == ednEventPopUpFileSelected) {
APPL_DEBUG("Request opening the file : " << _msg.getData());
m_bufferManager->open(_msg.getData());
} else if (_msg.getMessage() == ednMsgGuiSave) {
APPL_DEBUG("Request saving the file : " << _msg.getData());
if (to_lower(_msg.getData()) == "current") {
appl::WorkerSaveFile* tmpWorker = new appl::WorkerSaveFile("", false);
return;
} else if (to_lower(_msg.getData()) == "all") {
appl::WorkerSaveAllFile* tmpWorker = new appl::WorkerSaveAllFile();
return;
} else {
APPL_ERROR("UNKNOW request : " << _msg);
}
} else if (_msg.getMessage() == ednMsgGuiSaveAs) {
appl::WorkerSaveFile* tmpWorker = new appl::WorkerSaveFile("", true);
} else if (_msg.getMessage() == ednMsgGuiClose) {
// Get a ref on the buffer selected (if null, no buffer was selected ...)
if (_msg.getData() == "current") {
appl::WorkerCloseFile* tmpWorker = new appl::WorkerCloseFile("");
} else {
appl::WorkerCloseAllFile* tmpWorker = new appl::WorkerCloseAllFile();
}
} else if (_msg.getMessage() == mainWindowsRequestSaveFile) { // return after a choice of close... } else if (_msg.getMessage() == mainWindowsRequestSaveFile) { // return after a choice of close...
if (m_bufferManager->exist(_msg.getData()) == false) { if (m_bufferManager->exist(_msg.getData()) == false) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return; return;
} }
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData()); ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) { if (tmpBuffer == nullptr) {
APPL_ERROR("Error to get the buffer : " << _msg.getData()); APPL_ERROR("Error to get the buffer : " << _msg.getData());
return; return;
} }
@@ -424,8 +369,8 @@ void MainWindows::onReceiveMessage(const ewol::EMessage& _msg) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return; return;
} }
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData()); ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) { if (tmpBuffer == nullptr) {
APPL_ERROR("Error to get the buffer : " << _msg.getData()); APPL_ERROR("Error to get the buffer : " << _msg.getData());
return; return;
} }
@@ -435,64 +380,160 @@ void MainWindows::onReceiveMessage(const ewol::EMessage& _msg) {
APPL_ERROR("Try to save an non-existant file :" << _msg.getData()); APPL_ERROR("Try to save an non-existant file :" << _msg.getData());
return; return;
} }
appl::Buffer* tmpBuffer = m_bufferManager->get(_msg.getData()); ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(_msg.getData());
if (tmpBuffer == NULL) { if (tmpBuffer == nullptr) {
APPL_ERROR("Error to get the buffer : " << _msg.getData()); APPL_ERROR("Error to get the buffer : " << _msg.getData());
return; return;
} }
// note: just remove ==> no check : normal case ... // note: just remove ==> no check : normal case ...
tmpBuffer->removeObject(); //tmpBuffer->removeObject();
EWOL_TODO("call remove buffer ...");
} }
return; */
}
void MainWindows::saveAsPopUp(appl::Buffer* _buffer) { void MainWindows::displayOpen() {
if (_buffer == NULL) { ememory::SharedPtr<ewol::widget::FileChooser> tmpWidget = ewol::widget::FileChooser::create();
APPL_ERROR("Call With NULL input..."); if (tmpWidget == nullptr) {
APPL_ERROR("Can not open File chooser !!! ");
return; return;
} }
appl::WorkerSaveFile* tmpObject = new appl::WorkerSaveFile(_buffer->getFileName()); tmpWidget->propertyLabelTitle.set("_T{Open files ...}");
} tmpWidget->propertyLabelValidate.set("_T{Open}");
if (m_bufferManager == nullptr) {
void MainWindows::closeNotSavedFile(appl::Buffer* _buffer) { APPL_ERROR("can not call unexistant buffer manager ... ");
if (_buffer == NULL) {
APPL_ERROR("Call With NULL input...");
return; return;
} }
widget::StdPopUp* tmpPopUp = new widget::StdPopUp(); // Get a ref on the buffer selected (if null, no buffer was selected ...)
if (tmpPopUp == NULL) { ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->getBufferSelected();
if (tmpBuffer != nullptr) {
etk::FSNode tmpFile = tmpBuffer->getFileName();
tmpWidget->propertyPath.set(tmpFile.getNameFolder());
}
// apply widget pop-up ...
popUpWidgetPush(tmpWidget);
tmpWidget->signalValidate.connect(sharedFromThis(), &MainWindows::onCallbackPopUpFileSelected);
}
void MainWindows::displayProperty() {
// Request the parameter GUI
ememory::SharedPtr<ewol::widget::Parameter> tmpWidget = ewol::widget::Parameter::create();
if (tmpWidget == nullptr) {
APPL_ERROR("Can not allocate widget == > display might be in error");
return;
}
#if 0
std::string menuDescription = "<title>Properties</title>\n";
menuDescription += "<group title='_T{Editor}'>\n";
menuDescription += " <menu title='_T{Editor Interface}' short-title='Editor' widget='appl-text-viewer'>\n";
menuDescription += "</group>\n";
menuDescription += "<group title='_T{Gui}'>\n";
menuDescription += " <menu title='Font selection' short-title='Font' widget=''>\n";
menuDescription += " <menu title='Color selection' short-title='Color' widget=''>\n";
menuDescription += " <menu title='Theme selection' short-title='Theme' widget=''>\n";
menuDescription += "</group>\n";
tmpWidget->setMenu(menuDescription);
#else
tmpWidget->propertyLabelTitle.set("_T{Properties}");
popUpWidgetPush(tmpWidget);
tmpWidget->menuAddGroup("_T{Editor}");
ememory::SharedPtr<ewol::Widget> tmpSubWidget = globals::ParameterGlobalsGui::create();
tmpWidget->menuAdd("_T{Editor}", "", tmpSubWidget);
tmpWidget->menuAdd("_T{Font & Color}", "", nullptr);
tmpWidget->menuAdd("_T{Highlight}", "", nullptr);
tmpWidget->menuAddGroup("_T{General}");
tmpWidget->menuAdd("_T{Display}", "", nullptr);
tmpSubWidget = ParameterAboutGui::create();
tmpWidget->menuAdd("_T{About}", "", tmpSubWidget);
#endif
}
void MainWindows::onCallbackselectNewFile(const std::string& _value) {
APPL_INFO("onCallbackselectNewFile(" << _value << ")");
if (m_bufferManager == nullptr) {
APPL_ERROR("can not call unexistant buffer manager ... ");
return;
}
m_connectionSave.disconnect();
m_connectionModify.disconnect();
m_connectionSaveName.disconnect();
onCallbackTitleUpdate();
ememory::SharedPtr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
if (tmpp != nullptr) {
m_connectionSave = tmpp->signalIsSave.connect(this, &MainWindows::onCallbackTitleUpdate);
m_connectionModify = tmpp->signalIsModify.connect(this, &MainWindows::onCallbackTitleUpdate);
m_connectionSaveName = tmpp->signalChangeName.connect(this, &MainWindows::onCallbackTitleUpdate);
}
}
void MainWindows::onCallbackPopUpFileSelected(const std::string& _value) {
APPL_INFO("onCallbackPopUpFileSelected(" << _value << ")");
APPL_DEBUG("Request opening the file : " << _value);
m_bufferManager->open(_value);
}
void MainWindows::onCallbackTitleUpdate() {
APPL_INFO("onCallbackTitleUpdate()");
if (m_bufferManager == nullptr) {
APPL_ERROR("can not call unexistant buffer manager ... ");
return;
}
// select a new Buffer ==> change title:
ememory::SharedPtr<appl::Buffer> tmpp = m_bufferManager->getBufferSelected();
if (tmpp == nullptr) {
propertyTitle.set("Edn");
if (m_widgetLabelFileName != nullptr) {
m_widgetLabelFileName->propertyValue.set("");
}
} else {
std::string nameFileSystem = etk::FSNode(tmpp->getFileName()).getFileSystemName();
propertyTitle.set(std::string("Edn : ") + (tmpp->isModify()==true?" *":"") + nameFileSystem);
if (m_widgetLabelFileName != nullptr) {
m_widgetLabelFileName->propertyValue.set(nameFileSystem + (tmpp->isModify()==true?" *":""));
}
}
}
void MainWindows::saveAsPopUp(const ememory::SharedPtr<appl::Buffer>& _buffer) {
if (_buffer == nullptr) {
APPL_ERROR("Call With nullptr input...");
return;
}
ememory::SharedPtr<appl::WorkerSaveFile> tmpObject = appl::WorkerSaveFile::create("buffer-name", _buffer->getFileName());
}
void MainWindows::closeNotSavedFile(const ememory::SharedPtr<appl::Buffer>& _buffer) {
if (_buffer == nullptr) {
APPL_ERROR("Call With nullptr input...");
return;
}
ememory::SharedPtr<ewol::widget::StdPopUp> tmpPopUp = ewol::widget::StdPopUp::create();
if (tmpPopUp == nullptr) {
APPL_ERROR("Can not create a simple pop-up"); APPL_ERROR("Can not create a simple pop-up");
return; return;
} }
tmpPopUp->setTitle("<bold>Close un-saved file:</bold>"); tmpPopUp->propertyTitle.set("<bold>_T{Close un-saved file:}</bold>");
tmpPopUp->setComment("The file named : <i>\"" + _buffer->getFileName() + "\"</i> is curently modify. <br/>If you don't saves these modifications,<br/>they will be definitly lost..."); tmpPopUp->propertyComment.set("_T{The file named:} <i>\"" + _buffer->getFileName() + "\"</i> _T{is curently modify.} <br/>_T{If you don't saves these modifications,<br/>they will be definitly lost...}");
ewol::Widget* bt = NULL; ememory::SharedPtr<ewol::widget::Button> bt = nullptr;
if (_buffer->hasFileName() == true) { if (_buffer->hasFileName() == true) {
bt = tmpPopUp->addButton("Save", true); bt = tmpPopUp->addButton("_T{Save}", true);
if (bt != NULL) { if (bt != nullptr) {
// TODO : The element is removed before beeing pressed // TODO : The element is removed before beeing pressed
bt->registerOnEvent(this, widget::Button::eventPressed, mainWindowsRequestSaveFile, _buffer->getFileName()); // TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestSaveFile, _buffer->getFileName());
bt->registerOnEvent(this, widget::Button::eventPressed, mainWindowsRequestcloseFileNoCheck, _buffer->getFileName()); // TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
} }
} }
bt = tmpPopUp->addButton("Save As", true); bt = tmpPopUp->addButton("_T{Save As}", true);
if (bt != NULL) { if (bt != nullptr) {
bt->registerOnEvent(this, widget::Button::eventPressed, mainWindowsRequestSaveFileAs, _buffer->getFileName()); // TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestSaveFileAs, _buffer->getFileName());
//bt->registerOnEvent(this, widget::Button::eventPressed, mainWindowsRequestcloseFileNoCheck, _buffer->getFileName()); //bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
// TODO : Request the close when saved ... // TODO : Request the close when saved ...
} }
bt = tmpPopUp->addButton("Close", true); bt = tmpPopUp->addButton("_T{Close}", true);
if (bt != NULL) { if (bt != nullptr) {
bt->registerOnEvent(this, widget::Button::eventPressed, mainWindowsRequestcloseFileNoCheck, _buffer->getFileName()); // TODO : bt->signalPressed.connect(sharedFromThis(), mainWindowsRequestcloseFileNoCheck, _buffer->getFileName());
} }
tmpPopUp->addButton("Cancel", true); tmpPopUp->addButton("_T{Cancel}", true);
tmpPopUp->setRemoveOnExternClick(true); tmpPopUp->propertyCloseOutEvent.set(true);
popUpWidgetPush(tmpPopUp); popUpWidgetPush(tmpPopUp);
} }
void MainWindows::onObjectRemove(ewol::EObject* _removeObject) {
ewol::Windows::onObjectRemove(_removeObject);
if (m_widgetLabelFileName == _removeObject) {
m_widgetLabelFileName = NULL;
}
}

View File

@@ -1,13 +1,9 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __MAIN_WINDOWS_H__
#define __MAIN_WINDOWS_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
@@ -16,33 +12,43 @@
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <ewol/widget/Label.h> #include <ewol/widget/Label.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <appl/Gui/Search.h>
class MainWindows : public ewol::Windows { #include <appl/Gui/ViewerManager.h>
class MainWindows : public ewol::widget::Windows {
private: private:
int32_t m_currentSavingAsIdBuffer; ewol::widget::LabelShared m_widgetLabelFileName;
widget::Label* m_widgetLabelFileName; appl::widget::SearchShared m_widgetSearch;
public: esignal::Connection m_connectionSave;
esignal::Connection m_connectionModify;
esignal::Connection m_connectionSaveName;
protected:
// Constructeur // Constructeur
MainWindows(void); MainWindows();
~MainWindows(void); void init();
public:
DECLARE_FACTORY(MainWindows);
virtual ~MainWindows();
private: private:
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
ememory::SharedPtr<appl::ViewerManager> m_viewerManager; //!< handle on the buffer manager
/** /**
* @brief Display a pop-up to the select the name of the file. * @brief Display a pop-up to the select the name of the file.
* @param[in] _buffer Buffer that might be saved with a new name. * @param[in] _buffer Buffer that might be saved with a new name.
*/ */
void saveAsPopUp(appl::Buffer* _buffer); void saveAsPopUp(const ememory::SharedPtr<appl::Buffer>& _buffer);
/** /**
* @brief Display a pop-up to the user to confirm wat he want to do when he close a file not saved. * @brief Display a pop-up to the user to confirm wat he want to do when he close a file not saved.
* @param[in] _buffer Buffer that might be close. * @param[in] _buffer Buffer that might be close.
*/ */
void closeNotSavedFile(appl::Buffer* _buffer); void closeNotSavedFile(const ememory::SharedPtr<appl::Buffer>& _buffer);
public: // Derived function void displayOpen();
virtual void onReceiveMessage(const ewol::EMessage& _msg); void displayProperty();
virtual void onObjectRemove(ewol::EObject * _removeObject); private:
void onCallbackPopUpFileSelected(const std::string& _value);
void onCallbackTitleUpdate();
void onCallbackMenuEvent(const std::string& _value);
void onCallbackShortCut(const std::string& _value);
void onCallbackselectNewFile(const std::string& _value);
}; };
#endif

View File

@@ -1,79 +1,60 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include "appl/global.h" #include "appl/global.h"
#include "appl/Gui/Search.h" #include "appl/Gui/Search.h"
#include "appl/BufferManager.h" #include "appl/BufferManager.h"
#include "appl/Gui/TextViewer.h" #include "appl/Gui/TextViewer.h"
#include "appl/Gui/MainWindows.h" #include "appl/Gui/MainWindows.h"
#include "appl/globalMsg.h" #include "appl/globalMsg.h"
#include <ewol/widget/Button.h>
#include <ewol/widget/Entry.h>
appl::widget::Search::Search() :
#undef __class__
#define __class__ "Search"
const char* const l_eventSearchEntry = "appl-search-entry";
const char* const l_eventSearchEntryEnter = "appl-search-entry-enter";
const char* const l_eventReplaceEntry = "appl-replace-entry";
const char* const l_eventReplaceEntryEnter = "appl-replace-entry-enter";
const char* const l_eventSearchBt = "appl-search-button";
const char* const l_eventReplaceBt = "appl-replace-button";
const char* const l_eventCaseCb = "appl-case-sensitive-CheckBox";
const char* const l_eventWrapCb = "appl-wrap-CheckBox";
const char* const l_eventForwardCb = "appl-forward-CheckBox";
const char* const l_eventHideBt = "appl-hide-button";
Search::Search(void) :
widget::Composer(widget::Composer::file, "DATA:GUI-Search.xml"),
m_viewerManager(NULL),
m_forward(true), m_forward(true),
m_caseSensitive(false), m_caseSensitive(false),
m_wrap(true), m_wrap(true) {
m_searchEntry(NULL), addObjectType("appl::widget::Search");
m_replaceEntry(NULL) { }
addObjectType("appl::Search"); void appl::widget::Search::init() {
// load buffer manager: ewol::widget::Composer::init();
m_viewerManager = appl::ViewerManager::keep(); loadFromFile("DATA:GUI-Search.xml");
m_viewerManager = appl::ViewerManager::create();
// link event // link event
registerOnEventNameWidget(this, "SEARCH:close", "pressed", l_eventHideBt); subBind(ewol::widget::Button, "SEARCH:close", signalPressed, sharedFromThis(), &appl::widget::Search::OnCallbackHide);
registerOnEventNameWidget(this, "SEARCH:search-entry", "modify", l_eventSearchEntry); subBind(ewol::widget::Entry, "SEARCH:search-entry", signalModify, sharedFromThis(), &appl::widget::Search::OnCallbackSearchValue);
registerOnEventNameWidget(this, "SEARCH:search-entry", "enter", l_eventSearchEntryEnter); subBind(ewol::widget::Entry, "SEARCH:search-entry", signalEnter, sharedFromThis(), &appl::widget::Search::OnCallbackSearchEntryValidate);
registerOnEventNameWidget(this, "SEARCH:search", "pressed", l_eventSearchBt); subBind(ewol::widget::Button, "SEARCH:search", signalPressed, sharedFromThis(), &appl::widget::Search::OnCallbackSearch);
registerOnEventNameWidget(this, "SEARCH:replace-entry", "modify", l_eventReplaceEntry); subBind(ewol::widget::Entry, "SEARCH:replace-entry", signalModify, sharedFromThis(), &appl::widget::Search::OnCallbackReplaceValue);
registerOnEventNameWidget(this, "SEARCH:replace-entry", "enter", l_eventReplaceEntryEnter); subBind(ewol::widget::Entry, "SEARCH:replace-entry", signalEnter, sharedFromThis(), &appl::widget::Search::OnCallbackReplaceEntryValidate);
registerOnEventNameWidget(this, "SEARCH:replace", "pressed", l_eventReplaceBt); subBind(ewol::widget::Button, "SEARCH:replace", signalPressed, sharedFromThis(), &appl::widget::Search::OnCallbackReplace);
registerOnEventNameWidget(this, "SEARCH:case", "value", l_eventCaseCb); subBind(ewol::widget::Button, "SEARCH:case", signalValue, sharedFromThis(), &appl::widget::Search::OnCallbackCase);
registerOnEventNameWidget(this, "SEARCH:wrap", "value", l_eventWrapCb); subBind(ewol::widget::Button, "SEARCH:wrap", signalValue, sharedFromThis(), &appl::widget::Search::OnCallbackWrap);
registerOnEventNameWidget(this, "SEARCH:up-down", "value", l_eventForwardCb); subBind(ewol::widget::Button, "SEARCH:up-down", signalValue, sharedFromThis(), &appl::widget::Search::OnCallbackForward);
// set default properties // set default properties
setConfigNamed("SEARCH:case", "value", std::to_string(m_caseSensitive)); propertySetOnWidgetNamed("SEARCH:case", "value", etk::to_string(m_caseSensitive));
setConfigNamed("SEARCH:wrap", "value", std::to_string(m_wrap)); propertySetOnWidgetNamed("SEARCH:wrap", "value", etk::to_string(m_wrap));
setConfigNamed("SEARCH:up-down", "value", std::to_string(m_forward)); propertySetOnWidgetNamed("SEARCH:up-down", "value", etk::to_string(m_forward));
// get widget // get widget
m_searchEntry = dynamic_cast<widget::Entry*>(getWidgetNamed("SEARCH:search-entry")); m_searchEntry = ememory::dynamicPointerCast<ewol::widget::Entry>(getSubObjectNamed("SEARCH:search-entry"));
m_replaceEntry = dynamic_cast<widget::Entry*>(getWidgetNamed("SEARCH:replace-entry")); m_replaceEntry = ememory::dynamicPointerCast<ewol::widget::Entry>(getSubObjectNamed("SEARCH:replace-entry"));
// Display and hide event:
registerMultiCast(ednMsgGuiSearch);
// basicly hiden ... // basicly hiden ...
hide(); propertyHide.set(true);
} }
Search::~Search(void) { appl::widget::Search::~Search() {
appl::ViewerManager::release(m_viewerManager);
} }
void Search::find(void) { void appl::widget::Search::find() {
if (m_viewerManager == NULL) { if (m_viewerManager == nullptr) {
APPL_WARNING("No viewer manager selected!!!"); APPL_WARNING("No viewer manager selected!!!");
return; return;
} }
appl::TextViewer* viewer = m_viewerManager->getViewerSelected(); ememory::SharedPtr<appl::TextViewer> viewer = m_viewerManager->getViewerSelected();
if (viewer == NULL) { if (viewer == nullptr) {
APPL_INFO("No viewer selected!!!"); APPL_INFO("No viewer selected!!!");
return; return;
} }
@@ -103,13 +84,13 @@ void Search::find(void) {
} }
} }
void Search::replace(void) { void appl::widget::Search::replace() {
if (m_viewerManager == NULL) { if (m_viewerManager == nullptr) {
APPL_WARNING("No viewer manager selected!!!"); APPL_WARNING("No viewer manager selected!!!");
return; return;
} }
appl::TextViewer* viewer = m_viewerManager->getViewerSelected(); ememory::SharedPtr<appl::TextViewer> viewer = m_viewerManager->getViewerSelected();
if (viewer == NULL) { if (viewer == nullptr) {
APPL_INFO("No viewer selected!!!"); APPL_INFO("No viewer selected!!!");
return; return;
} }
@@ -120,58 +101,64 @@ void Search::replace(void) {
viewer->replace(m_replaceData); viewer->replace(m_replaceData);
} }
void appl::widget::Search::OnCallbackHide() {
propertyHide.set(true);
}
void appl::widget::Search::OnCallbackSearchValue(const std::string& _value) {
m_searchData = etk::to_u32string(_value);
}
void appl::widget::Search::OnCallbackSearch() {
find();
}
void appl::widget::Search::OnCallbackSearchEntryValidate(const std::string& _value) {
m_searchData = etk::to_u32string(_value);
find();
}
void appl::widget::Search::OnCallbackReplaceValue(const std::string& _value) {
m_replaceData = etk::to_u32string(_value);
}
void appl::widget::Search::OnCallbackReplace() {
replace();
find();
}
void appl::widget::Search::OnCallbackReplaceEntryValidate(const std::string& _value) {
m_replaceData = etk::to_u32string(_value);
replace();
find();
}
void appl::widget::Search::OnCallbackCase(const bool& _value) {
m_caseSensitive = _value;
}
void appl::widget::Search::OnCallbackWrap(const bool& _value) {
m_wrap = _value;
}
void appl::widget::Search::OnCallbackForward(const bool& _value) {
m_forward = _value;
}
void Search::onReceiveMessage(const ewol::EMessage& _msg) { void appl::widget::Search::selectSearch() {
widget::Composer::onReceiveMessage(_msg); if (m_searchEntry != nullptr) {
APPL_INFO("Search receive message : " << _msg); m_searchEntry->keepFocus();
if ( _msg.getMessage() == l_eventSearchEntry) {
m_searchData = to_u32string(_msg.getData());
} else if ( _msg.getMessage() == l_eventSearchEntryEnter
|| _msg.getMessage() == l_eventSearchBt) {
find();
} else if ( _msg.getMessage() == l_eventReplaceEntry) {
m_replaceData = to_u32string(_msg.getData());
} else if ( _msg.getMessage() == l_eventReplaceEntryEnter
|| _msg.getMessage() == l_eventReplaceBt) {
replace();
find();
} else if ( _msg.getMessage() == l_eventCaseCb) {
m_caseSensitive = stobool(_msg.getData());
} else if ( _msg.getMessage() == l_eventWrapCb) {
m_wrap = stobool(_msg.getData());
} else if ( _msg.getMessage() == l_eventForwardCb) {
m_forward = stobool(_msg.getData());
} else if ( _msg.getMessage() == l_eventHideBt) {
hide();
} else if ( _msg.getMessage() == ednMsgGuiSearch) {
if (true == isHide()) {
show();
if (m_searchEntry!= NULL) {
m_searchEntry->keepFocus();
}
} else {
if( (m_searchEntry!=NULL && true == m_searchEntry->getFocus())
|| (m_replaceEntry!=NULL && true == m_replaceEntry->getFocus()) ) {
hide();
} else if (m_searchEntry!= NULL) {
m_searchEntry->keepFocus();
} else {
hide();
}
}
} }
} }
void Search::onObjectRemove(ewol::EObject * _removeObject) { bool appl::widget::Search::isSelectSearch() {
widget::Composer::onObjectRemove(_removeObject); if (m_searchEntry != nullptr) {
if (_removeObject == m_searchEntry) { return m_searchEntry->getFocus();
m_searchEntry = NULL;
} }
if (_removeObject == m_replaceEntry) { return false;
m_replaceEntry = NULL; }
}
if (_removeObject == m_viewerManager) { void appl::widget::Search::selectReplace() {
m_viewerManager = NULL; if (m_replaceEntry != nullptr) {
m_replaceEntry->keepFocus();
} }
} }
bool appl::widget::Search::isSelectReplace() {
if (m_replaceEntry != nullptr) {
return m_replaceEntry->getFocus();
}
return false;
}

View File

@@ -1,48 +1,62 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __SEARCH_H__
#define __SEARCH_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <ewol/widget/Composer.h> #include <ewol/widget/Composer.h>
#include <ewol/widget/Entry.h> #include <ewol/widget/Entry.h>
#include <appl/Buffer.h> #include <appl/Buffer.h>
#include <appl/Gui/ViewerManager.h> #include <appl/Gui/ViewerManager.h>
namespace appl {
class Search : public widget::Composer { namespace widget {
private: class Search;
appl::ViewerManager* m_viewerManager; //!< handle on the buffer manager using SearchShared = ememory::SharedPtr<appl::widget::Search>;
bool m_forward; using SearchWeak = ememory::WeakPtr<appl::widget::Search>;
bool m_caseSensitive; class Search : public ewol::widget::Composer {
bool m_wrap; private:
widget::Entry* m_searchEntry; ememory::SharedPtr<appl::ViewerManager> m_viewerManager; //!< handle on the buffer manager
widget::Entry* m_replaceEntry; bool m_forward;
std::u32string m_searchData; bool m_caseSensitive;
std::u32string m_replaceData; bool m_wrap;
public: ememory::SharedPtr<ewol::widget::Entry> m_searchEntry;
// Constructeur ememory::SharedPtr<ewol::widget::Entry> m_replaceEntry;
Search(void); std::u32string m_searchData;
~Search(void); std::u32string m_replaceData;
private: protected:
/** // Constructeur
* @brief Find the next element that corespond at the search Search();
*/ void init();
void find(void); public:
/** DECLARE_FACTORY(Search);
* @brief Replace the current selected text. virtual ~Search();
*/ private:
void replace(void); /**
public: // derived function * @brief Find the next element that corespond at the search
virtual void onReceiveMessage(const ewol::EMessage& _msg); */
virtual void onObjectRemove(ewol::EObject * _removeObject); void find();
}; /**
* @brief Replace the current selected text.
#endif */
void replace();
public:
void selectSearch();
bool isSelectSearch();
void selectReplace();
bool isSelectReplace();
private: // callback functions
void OnCallbackHide();
void OnCallbackSearchValue(const std::string& _value);
void OnCallbackSearch();
void OnCallbackSearchEntryValidate(const std::string& _value);
void OnCallbackReplaceValue(const std::string& _value);
void OnCallbackReplace();
void OnCallbackReplaceEntryValidate(const std::string& _value);
void OnCallbackCase(const bool& _value);
void OnCallbackWrap(const bool& _value);
void OnCallbackForward(const bool& _value);
};
};
}

View File

@@ -1,44 +1,43 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <etk/tool.h> #include <etk/tool.h>
#include <appl/Gui/TagFileList.h> #include <appl/Gui/TagFileList.h>
#undef __class__ appl::TagFileList::TagFileList() :
#define __class__ "TagFileList" signalSelect(this, "select", ""),
signalValidate(this, "validate", ""),
extern const char * const applEventCtagsListSelect = "appl-event-ctags-list-select"; signalUnSelect(this, "unselect", "") {
extern const char * const applEventCtagsListUnSelect = "appl-event-ctags-list-un-select";
extern const char * const applEventCtagsListValidate = "appl-event-ctags-list-validate";
appl::TagFileList::TagFileList(void) {
addObjectType("appl::TagFileList"); addObjectType("appl::TagFileList");
m_selectedLine = -1; m_selectedLine = -1;
addEventId(applEventCtagsListSelect);
addEventId(applEventCtagsListValidate);
setMouseLimit(1); setMouseLimit(1);
// Load color properties: (use file list to be generic ...)
m_colorProperty = ewol::resource::ColorFile::create("THEME:COLOR:ListFileSystem.json");
if (m_colorProperty != nullptr) {
m_colorIdText = m_colorProperty->request("text");
m_colorIdBackground1 = m_colorProperty->request("background1");
m_colorIdBackground2 = m_colorProperty->request("background2");
m_colorIdBackgroundSelected = m_colorProperty->request("selected");
}
}
void appl::TagFileList::init() {
ewol::widget::List::init();
} }
appl::TagFileList::~TagFileList() {
appl::TagFileList::~TagFileList(void) { for (auto &it : m_list) {
for (int32_t iii=0; iii<m_list.size(); iii++) { delete(it);
if (NULL != m_list[iii]) { it = nullptr;
delete(m_list[iii]);
m_list[iii] = NULL;
}
} }
} }
etk::Color<> appl::TagFileList::getBasicBG(void) { etk::Color<> appl::TagFileList::getBasicBG() {
return 0x00000010; return 0x00000010;
} }
uint32_t appl::TagFileList::getNuberOfColomn(void) { uint32_t appl::TagFileList::getNuberOfColomn() {
return 2; return 2;
} }
@@ -47,65 +46,53 @@ bool appl::TagFileList::getTitle(int32_t _colomn, std::string& _myTitle, etk::Co
return true; return true;
} }
uint32_t appl::TagFileList::getNuberOfRaw(void) { uint32_t appl::TagFileList::getNuberOfRaw() {
return m_list.size(); return m_list.size();
} }
bool appl::TagFileList::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) { bool appl::TagFileList::getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg) {
if (_raw >= 0 && _raw < m_list.size() && NULL != m_list[_raw]) { if (_raw >= 0 && (size_t)_raw < m_list.size() && nullptr != m_list[_raw]) {
if (0 == _colomn) { if (0 == _colomn) {
_myTextToWrite = std::to_string(m_list[_raw]->fileLine); _myTextToWrite = etk::to_string(m_list[_raw]->fileLine);
} else { } else {
_myTextToWrite = m_list[_raw]->filename; _myTextToWrite = m_list[_raw]->filename;
} }
} else { } else {
_myTextToWrite = "ERROR"; _myTextToWrite = "ERROR";
} }
_fg = etk::color::black; _fg = m_colorProperty->get(m_colorIdText);
if (_raw % 2) { if (_raw % 2) {
if (_colomn%2 == 0) { _bg = m_colorProperty->get(m_colorIdBackground1);
_bg = 0xFFFFFF00;
} else {
_bg = 0xFFFFFF10;
}
} else { } else {
if (_colomn%2 == 0) { _bg = m_colorProperty->get(m_colorIdBackground2);
_bg = 0xBFBFBFFF;
} else {
_bg = 0xCFCFCFFF;
}
} }
if (m_selectedLine == _raw) { if (m_selectedLine == _raw) {
if (_colomn%2 == 0) { _bg = m_colorProperty->get(m_colorIdBackgroundSelected);
_bg = 0x8F8FFFFF;
} else {
_bg = 0x7F7FFFFF;
}
} }
return true; return true;
}; };
bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum ewol::keyEvent::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y) { bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum gale::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y) {
if (_typeEvent == ewol::keyEvent::statusSingle) { if (_typeEvent == gale::key::status::pressSingle) {
EWOL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw ); EWOL_INFO("Event on List : IdInput=" << _IdInput << " colomn=" << _colomn << " raw=" << _raw );
if (_IdInput == 1) { if (_IdInput == 1) {
int32_t previousRaw = m_selectedLine; int32_t previousRaw = m_selectedLine;
if (_raw > m_list.size() ) { if (_raw > (int64_t)m_list.size() ) {
m_selectedLine = -1; m_selectedLine = -1;
} else { } else {
m_selectedLine = _raw; m_selectedLine = _raw;
} }
const char * event = applEventCtagsListValidate;
if (previousRaw != m_selectedLine) {
event = applEventCtagsListSelect;
}
if( m_selectedLine >= 0 if( m_selectedLine >= 0
&& m_selectedLine < m_list.size() && m_selectedLine < (int64_t)m_list.size()
&& NULL != m_list[m_selectedLine] ) { && nullptr != m_list[m_selectedLine] ) {
generateEventId(event, std::to_string(m_list[_raw]->fileLine)+":"+m_list[m_selectedLine]->filename); if (previousRaw != m_selectedLine) {
signalSelect.emit(etk::to_string(m_list[_raw]->fileLine)+":"+m_list[m_selectedLine]->filename);
} else {
signalValidate.emit(etk::to_string(m_list[_raw]->fileLine)+":"+m_list[m_selectedLine]->filename);
}
} else { } else {
generateEventId(applEventCtagsListUnSelect); signalUnSelect.emit();
} }
// need to regenerate the display of the list : // need to regenerate the display of the list :
markToRedraw(); markToRedraw();
@@ -123,7 +110,7 @@ bool appl::TagFileList::onItemEvent(int32_t _IdInput, enum ewol::keyEvent::statu
*/ */
void appl::TagFileList::add(std::string& _file, int32_t _line) { void appl::TagFileList::add(std::string& _file, int32_t _line) {
appl::TagListElement *tmpFile = new appl::TagListElement(_file, _line); appl::TagListElement *tmpFile = new appl::TagListElement(_file, _line);
if (NULL != tmpFile) { if (nullptr != tmpFile) {
m_list.push_back(tmpFile); m_list.push_back(tmpFile);
} }
markToRedraw(); markToRedraw();

View File

@@ -1,21 +1,12 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_CTAGS_LIST_H__
#define __APPL_CTAGS_LIST_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <ewol/widget/List.h> #include <ewol/widget/List.h>
#include <ewol/resource/ColorFile.h>
extern const char * const applEventCtagsListSelect;
extern const char * const applEventCtagsListValidate;
extern const char * const applEventCtagsListUnSelect;
namespace appl { namespace appl {
class TagListElement { class TagListElement {
@@ -27,24 +18,37 @@ namespace appl {
fileLine(_line) { fileLine(_line) {
}; };
~TagListElement(void) { virtual ~TagListElement() {
}; };
}; };
class TagFileList : public widget::List { class TagFileList : public ewol::widget::List {
public:
esignal::Signal<std::string> signalSelect;
esignal::Signal<std::string> signalValidate;
esignal::Signal<> signalUnSelect;
private: private:
int32_t m_selectedLine; int32_t m_selectedLine;
std::vector<appl::TagListElement*> m_list; std::vector<appl::TagListElement*> m_list;
protected:
ememory::SharedPtr<ewol::resource::ColorFile> m_colorProperty; //!< theme color property.
int32_t m_colorIdText; //!< Color of the text.
int32_t m_colorIdBackground1; //!< Color of the Background.
int32_t m_colorIdBackground2; //!< Color of the Background 2.
int32_t m_colorIdBackgroundSelected; //!< Color of line selected.
protected:
TagFileList();
void init();
public: public:
TagFileList(void); DECLARE_FACTORY(TagFileList);
~TagFileList(void); virtual ~TagFileList();
// display API : // display API :
virtual etk::Color<> getBasicBG(void); virtual etk::Color<> getBasicBG();
uint32_t getNuberOfColomn(void); uint32_t getNuberOfColomn();
bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg); bool getTitle(int32_t _colomn, std::string& _myTitle, etk::Color<>& _fg, etk::Color<>& _bg);
uint32_t getNuberOfRaw(void); uint32_t getNuberOfRaw();
bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg); bool getElement(int32_t _colomn, int32_t _raw, std::string& _myTextToWrite, etk::Color<>& _fg, etk::Color<>& _bg);
bool onItemEvent(int32_t _IdInput, enum ewol::keyEvent::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y); bool onItemEvent(int32_t _IdInput, enum gale::key::status _typeEvent, int32_t _colomn, int32_t _raw, float _x, float _y);
public: public:
/** /**
* @brief add a Ctags item on the curent list * @brief add a Ctags item on the curent list
@@ -53,10 +57,5 @@ namespace appl {
*/ */
void add(std::string& _file, int32_t _line); void add(std::string& _file, int32_t _line);
}; };
}; }
#endif

View File

@@ -1,17 +1,14 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/Gui/TagFileSelection.h> #include <appl/Gui/TagFileSelection.h>
#include <ewol/widget/Sizer.h> #include <ewol/widget/Sizer.h>
#include <ewol/widget/List.h> #include <ewol/widget/List.h>
#include <ewol/widget/Spacer.h> #include <ewol/widget/Spacer.h>
#include <ewol/widget/Image.h> #include <ewol/widget/Image.h>
#include <ewol/widget/WidgetManager.h> #include <ewol/widget/Manager.h>
#include <vector> #include <vector>
#include <etk/tool.h> #include <etk/tool.h>
#include <ewol/widget/Button.h> #include <ewol/widget/Button.h>
@@ -20,116 +17,107 @@
#include <ewol/ewol.h> #include <ewol/ewol.h>
appl::TagFileSelection::TagFileSelection() :
signalSelect(this, "select", ""),
#undef __class__ signalCancel(this, "cancel", "") {
#define __class__ "TagFileSelection"
extern const char * const applEventctagsSelection = "appl-event-ctags-validate";
extern const char * const applEventctagsCancel = "appl-event-ctags-cancel";
appl::TagFileSelection::TagFileSelection(void) {
addObjectType("appl::TagFileSelection"); addObjectType("appl::TagFileSelection");
addEventId(applEventctagsSelection); }
addEventId(applEventctagsCancel);
void appl::TagFileSelection::init() {
widget::Label* myWidgetTitle = NULL; ewol::widget::PopUp::init();
widget::Button* myWidgetValidate = NULL; ewol::widget::SizerShared mySizerVert;
widget::Button* myWidgetCancel = NULL;
widget::Sizer * mySizerVert = NULL;
widget::Sizer * mySizerHori = NULL;
widget::Spacer * mySpacer = NULL;
#if defined(__TARGET_OS__Android) #if defined(__TARGET_OS__Android)
setMinSize(ewol::Dimension(vec2(90,90),ewol::Dimension::Pourcent)); propertyMinSize.set(gale::Dimension(vec2(90,90), gale::distance::pourcent));
#elif defined(__TARGET_OS__Windows) #elif defined(__TARGET_OS__Windows)
setMinSize(ewol::Dimension(vec2(80,80),ewol::Dimension::Pourcent)); propertyMinSize.set(gale::Dimension(vec2(80,80), gale::distance::pourcent));
#else #else
setMinSize(ewol::Dimension(vec2(80,80),ewol::Dimension::Pourcent)); propertyMinSize.set(gale::Dimension(vec2(80,80), gale::distance::pourcent));
#endif #endif
mySizerVert = new widget::Sizer(widget::Sizer::modeVert); mySizerVert = ewol::widget::Sizer::create();
if (NULL == mySizerVert) { if (mySizerVert == nullptr) {
EWOL_ERROR("Can not allocate widget == > display might be in error");
return;
}
mySizerVert->propertyMode.set(ewol::widget::Sizer::modeVert);
mySizerVert->propertyLockExpand.set(bvec2(true,true));
mySizerVert->propertyExpand.set(bvec2(true,true));
// set it in the pop-up-system :
setSubWidget(mySizerVert);
ewol::WidgetShared compose = ewol::widget::composerGenerateString(
"<sizer mode='hori' expand='true,false' lock='false,true'>\n"
" <spacer expand='true,false'/>\n"
" <button name='PLUGIN-CTAGS-jump' expand='false' fill='true'>"
" <sizer mode='hori'>\n"
" <image src='THEME:GUI:Load.svg' fill='true' size='10,10mm'/>\n"
" <label>Jump</label>\n"
" </sizer>\n"
" </button>\n"
" <button name='PLUGIN-CTAGS-cancel' expand='false' fill='true'>"
" <sizer mode='hori'>\n"
" <image src='THEME:GUI:Remove.svg' fill='true' size='10,10mm'/>\n"
" <label>Cancel</label>\n"
" </sizer>\n"
" </button>\n"
"</sizer>\n");
mySizerVert->subWidgetAdd(compose);
externSubBind(compose, ewol::widget::Button, "PLUGIN-CTAGS-jump", signalPressed, sharedFromThis(), &appl::TagFileSelection::onCallbackCtagsSelection);
externSubBind(compose, ewol::widget::Button, "PLUGIN-CTAGS-cancel", signalPressed, sharedFromThis(), &appl::TagFileSelection::onCallbackCtagsCancel);
m_listTag = appl::TagFileList::create();
if (m_listTag == nullptr) {
EWOL_ERROR("Can not allocate widget == > display might be in error"); EWOL_ERROR("Can not allocate widget == > display might be in error");
} else { } else {
mySizerVert->lockExpand(bvec2(true,true)); m_listTag->signalValidate.connect(sharedFromThis(), &appl::TagFileSelection::onCallbackCtagsListValidate);
mySizerVert->setExpand(bvec2(true,true)); m_listTag->signalSelect.connect(sharedFromThis(), &appl::TagFileSelection::onCallbackCtagsListSelect);
// set it in the pop-up-system : m_listTag->signalUnSelect.connect(sharedFromThis(), &appl::TagFileSelection::onCallbackCtagsListUnSelect);
setSubWidget(mySizerVert); m_listTag->propertyExpand.set(bvec2(true,true));
widget::Composer* compose = new widget::Composer(widget::Composer::String, m_listTag->propertyFill.set(bvec2(true,true));
"<sizer mode=\"hori\" expand=\"true,false\" lock=\"false,true\">\n" mySizerVert->subWidgetAdd(m_listTag);
" <spacer expand=\"true,false\"/>\n"
" <button name=\"PLUGIN-CTAGS-jump\" expand=\"false\" fill=\"true\">"
" <sizer mode=\"hori\">\n"
" <image src=\"THEME:GUI:Load.svg\" fill=\"true\" size=\"10,10mm\"/>\n"
" <label>Jump</label>\n"
" </sizer>\n"
" </button>\n"
" <button name=\"PLUGIN-CTAGS-cancel\" expand=\"false\" fill=\"true\">"
" <sizer mode=\"hori\">\n"
" <image src=\"THEME:GUI:Remove.svg\" fill=\"true\" size=\"10,10mm\"/>\n"
" <label>Cancel</label>\n"
" </sizer>\n"
" </button>\n"
"</sizer>\n");
compose->setExpand(bvec2(true,false));
compose->setFill(bvec2(true,true));
mySizerVert->subWidgetAdd(compose);
compose->registerOnEventNameWidget(this, "PLUGIN-CTAGS-jump", "pressed", applEventctagsSelection);
compose->registerOnEventNameWidget(this, "PLUGIN-CTAGS-cancel", "pressed", applEventctagsCancel);
m_listTag = new appl::TagFileList();
if (NULL == m_listTag) {
EWOL_ERROR("Can not allocate widget == > display might be in error");
} else {
m_listTag->registerOnEvent(this, applEventCtagsListValidate);
m_listTag->registerOnEvent(this, applEventCtagsListSelect);
m_listTag->registerOnEvent(this, applEventCtagsListUnSelect);
m_listTag->setExpand(bvec2(true,true));
m_listTag->setFill(bvec2(true,true));
mySizerVert->subWidgetAdd(m_listTag);
}
myWidgetTitle = new widget::Label("Ctags Jump Selection ...");
if (NULL == myWidgetTitle) {
EWOL_ERROR("Can not allocate widget == > display might be in error");
} else {
mySizerVert->subWidgetAdd(myWidgetTitle);
}
} }
ewol::widget::LabelShared myWidgetTitle = ewol::widget::Label::create();
if (myWidgetTitle == nullptr) {
EWOL_ERROR("Can not allocate widget == > display might be in error");
return;
}
myWidgetTitle->propertyValue.set("Ctags Jump Selection ...");
mySizerVert->subWidgetAdd(myWidgetTitle);
} }
appl::TagFileSelection::~TagFileSelection(void) { appl::TagFileSelection::~TagFileSelection() {
} }
void appl::TagFileSelection::onReceiveMessage(const ewol::EMessage& _msg) { void appl::TagFileSelection::onCallbackCtagsSelection() {
EWOL_INFO("ctags LIST ... : " << _msg ); if (m_eventNamed != "") {
if (_msg.getMessage() == applEventctagsSelection) { signalSelect.emit(m_eventNamed);
if (m_eventNamed!="") {
generateEventId(applEventctagsSelection, m_eventNamed);
// == > Auto remove ...
autoDestroy();
}
} else if (_msg.getMessage() == applEventCtagsListSelect) {
m_eventNamed = _msg.getData();
} else if (_msg.getMessage() == applEventCtagsListUnSelect) {
m_eventNamed = "";
} else if (_msg.getMessage() == applEventCtagsListValidate) {
generateEventId(applEventctagsSelection, _msg.getData());
// == > Auto remove ...
autoDestroy();
} else if (_msg.getMessage() == applEventctagsCancel) {
generateEventId(applEventctagsCancel, "");
// == > Auto remove ... // == > Auto remove ...
autoDestroy(); autoDestroy();
} }
return; }
};
void appl::TagFileSelection::onCallbackCtagsCancel() {
signalCancel.emit();
// == > Auto remove ...
autoDestroy();
}
void appl::TagFileSelection::onCallbackCtagsListValidate(const std::string& _value) {
signalSelect.emit(_value);
// == > Auto remove ...
autoDestroy();
}
void appl::TagFileSelection::onCallbackCtagsListSelect(const std::string& _value) {
m_eventNamed = _value;
}
void appl::TagFileSelection::onCallbackCtagsListUnSelect() {
m_eventNamed = "";
}
/** /**
@@ -138,21 +126,8 @@ void appl::TagFileSelection::onReceiveMessage(const ewol::EMessage& _msg) {
* @param[in] jump line id * @param[in] jump line id
*/ */
void appl::TagFileSelection::addCtagsNewItem(std::string _file, int32_t _line) { void appl::TagFileSelection::addCtagsNewItem(std::string _file, int32_t _line) {
if (NULL != m_listTag) { if (m_listTag != nullptr) {
m_listTag->add(_file, _line); m_listTag->add(_file, _line);
} }
} }
void appl::TagFileSelection::onObjectRemove(ewol::EObject * _removeObject) {
// First step call parrent :
widget::PopUp::onObjectRemove(_removeObject);
// second step find if in all the elements ...
if(_removeObject == m_listTag) {
m_listTag = NULL;
}
}

View File

@@ -1,41 +1,39 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_CTAGS_SELECTION_H__
#define __APPL_CTAGS_SELECTION_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <ewol/widget/PopUp.h> #include <ewol/widget/PopUp.h>
#include <appl/Gui/TagFileList.h> #include <appl/Gui/TagFileList.h>
extern const char * const applEventctagsSelection;
extern const char * const applEventctagsCancel;
namespace appl { namespace appl {
class TagFileSelection : public widget::PopUp { class TagFileSelection : public ewol::widget::PopUp {
public:
esignal::Signal<std::string> signalSelect;
esignal::Signal<> signalCancel;
private: private:
appl::TagFileList* m_listTag; ememory::SharedPtr<appl::TagFileList> m_listTag;
std::string m_eventNamed; std::string m_eventNamed;
public: public:
TagFileSelection(void); TagFileSelection();
virtual ~TagFileSelection(void); void init();
public:
DECLARE_FACTORY(TagFileSelection);
virtual ~TagFileSelection();
/** /**
* @brief add a Ctags item on the curent list * @brief add a Ctags item on the curent list
* @param[in] file Compleate file name * @param[in] file Compleate file name
* @param[in] jump line id * @param[in] jump line id
*/ */
void addCtagsNewItem(std::string file, int32_t line); void addCtagsNewItem(std::string file, int32_t line);
public: // herited function public: // callback function
void onReceiveMessage(const ewol::EMessage& _msg); void onCallbackCtagsSelection();
void onObjectRemove(ewol::EObject * _removeObject); void onCallbackCtagsCancel();
void onCallbackCtagsListValidate(const std::string& _value);
void onCallbackCtagsListSelect(const std::string& _value);
void onCallbackCtagsListUnSelect();
}; };
}; }
#endif

View File

@@ -1,24 +1,19 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <ewol/clipBoard.h> #include <gale/context/clipBoard.h>
#include <ewol/widget/WidgetManager.h> #include <ewol/widget/Manager.h>
#include <appl/Gui/ViewerManager.h> #include <appl/Gui/ViewerManager.h>
#include <ewol/renderer/EObject.h> #include <ewol/object/Object.h>
#include <appl/TextPluginManager.h> #include <appl/TextPluginManager.h>
#include <etk/stdTools.h>
#undef __class__
#define __class__ "TextViewer"
#define tic() \ #define tic() \
int64_t startTime = ewol::getTime(); int64_t startTime = ewol::getTime();
@@ -28,26 +23,22 @@
int64_t processTimeLocal = (endTime - startTime); \ int64_t processTimeLocal = (endTime - startTime); \
APPL_DEBUG(comment << (float)((float)processTimeLocal / 1000.0) << "ms"); APPL_DEBUG(comment << (float)((float)processTimeLocal / 1000.0) << "ms");
appl::TextViewer::TextViewer(const std::string& _fontName, int32_t _fontSize) :
m_buffer(NULL), appl::TextViewer::TextViewer() :
m_displayText(_fontName, _fontSize), propertyFontName(this, "font-name", "FreeMono;DejaVuSansMono;FreeSerif", "Name of the font for the displayed text", &appl::TextViewer::onChangePropertyFontName),
propertyFontSize(this, "font-size", 12, "Size of the font for the displayed text", &appl::TextViewer::onChangePropertyFontSize),
m_insertMode(false) { m_insertMode(false) {
addObjectType("appl::TextViewer"); addObjectType("appl::TextViewer");
setCanHaveFocus(true);
registerMultiCast(ednMsgBufferId);
registerMultiCast(ednMsgGuiFind);
registerMultiCast(ednMsgGuiReplace);
registerMultiCast(appl::MsgSelectGotoLine);
registerMultiCast(appl::MsgSelectNewFile);
registerMultiCast(appl::MsgSelectGotoLineSelect);
setLimitScrolling(0.2); setLimitScrolling(0.2);
setSingleFinger(false);
// load buffer manager: // load buffer manager:
m_bufferManager = appl::BufferManager::keep(); m_bufferManager = appl::BufferManager::create();
m_viewerManager = appl::ViewerManager::keep(); m_pluginManager = appl::textPluginManager::create();
m_viewerManager = appl::ViewerManager::create();
// load color properties // load color properties
m_paintingProperties = appl::GlyphPainting::keep("THEME:COLOR:textViewer.json"); m_paintingProperties = appl::GlyphPainting::create("THEME:COLOR:textViewer.json");
// get all id properties ... // get all id properties ...
m_colorBackground = m_paintingProperties->request("CODE_basicBackgroung"); m_colorBackground = m_paintingProperties->request("CODE_basicBackgroung");
m_colorSpace = m_paintingProperties->request("CODE_space"); m_colorSpace = m_paintingProperties->request("CODE_space");
@@ -56,33 +47,120 @@ appl::TextViewer::TextViewer(const std::string& _fontName, int32_t _fontSize) :
m_colorLineNumber = m_paintingProperties->request("CODE_lineNumber"); m_colorLineNumber = m_paintingProperties->request("CODE_lineNumber");
m_colorSelection = m_paintingProperties->request("SelectedText"); m_colorSelection = m_paintingProperties->request("SelectedText");
m_colorNormal = m_paintingProperties->request("normal"); m_colorNormal = m_paintingProperties->request("normal");
}
appl::textPluginManager::connect(*this);
void appl::TextViewer::init() {
ewol::widget::WidgetScrolled::init();
propertyCanFocus.set(true);
m_displayText.setFont(*propertyFontName, *propertyFontSize);
m_pluginManager->connect(*this);
// last created has focus ... // last created has focus ...
setCurrentSelect(); setCurrentSelect();
signalShortcut.connect(sharedFromThis(), &appl::TextViewer::onCallbackShortCut);
/*
registerMultiCast(ednMsgBufferId);
registerMultiCast(ednMsgGuiFind);
registerMultiCast(ednMsgGuiReplace);
registerMultiCast(appl::MsgSelectGotoLine);
registerMultiCast(appl::MsgSelectGotoLineSelect);
*/
if (m_bufferManager != nullptr) {
m_bufferManager->signalSelectFile.connect(sharedFromThis(), &appl::TextViewer::onCallbackselectNewFile);
} else {
APPL_CRITICAL("Buffer manager has not been created at the init");
}
} }
appl::TextViewer::~TextViewer(void) { appl::TextViewer::~TextViewer() {
appl::textPluginManager::disconnect(*this); m_pluginManager->disconnect(*this);
appl::GlyphPainting::release(m_paintingProperties);
appl::BufferManager::release(m_bufferManager);
appl::ViewerManager::release(m_viewerManager);
} }
bool appl::TextViewer::calculateMinSize(void) { void appl::TextViewer::onCallbackShortCut(const std::string& _value) {
if (m_pluginManager->onReceiveShortCut(*this, _value) == true) {
return;
}
}
void appl::TextViewer::onCallbackselectNewFile(const std::string& _value) {
APPL_INFO("Select new file: " << _value);
if (isSelectedLast() == false) {
return;
}
// reset scroll:
if (m_buffer != nullptr) {
m_buffer->signals.disconnect(sharedFromThis());
bool needAdd = true;
auto it = m_drawingRemenber.begin();
while (it != m_drawingRemenber.end()) {
ememory::SharedPtr<appl::Buffer> tmpBuff = it->first.lock();
if (tmpBuff == nullptr) {
it = m_drawingRemenber.erase(it);
continue;
}
if (tmpBuff == m_buffer) {
it->second = m_originScrooled;
APPL_VERBOSE("store origin : " << m_originScrooled);
needAdd = false;
break;
}
++it;
}
if (needAdd == true) {
m_drawingRemenber.push_back(std::make_pair(ememory::WeakPtr<appl::Buffer>(m_buffer), m_originScrooled));
APPL_VERBOSE("Push origin : " << m_originScrooled);
}
}
m_originScrooled = vec2(0,0);
if (m_bufferManager != nullptr) {
m_buffer = m_bufferManager->get(_value);
m_bufferManager->setBufferSelected(m_buffer);
if (m_buffer != nullptr) {
m_buffer->signalIsModify.connect(sharedFromThis(), &appl::TextViewer::onCallbackIsModify);
m_buffer->signalSelectChange.connect(sharedFromThis(), &appl::TextViewer::onCallbackSelectChange);
for (auto element : m_drawingRemenber) {
if (element.first.lock() == m_buffer) {
m_originScrooled = element.second;
APPL_VERBOSE("retrive origin : " << m_originScrooled);
// TODO : Check if this element is not out of the display text ...
break;
}
}
}
}
markToRedraw();
return;
}
std::string appl::TextViewer::getBufferPath() {
if (m_buffer == nullptr) {
return "";
}
std::string filename = m_buffer->getFileName();
size_t pos = filename.rfind('/');
if (pos == std::string::npos) {
return "";
}
return std::string(filename, 0, pos);
}
bool appl::TextViewer::calculateMinSize() {
m_minSize.setValue(50,50); m_minSize.setValue(50,50);
return true; return true;
} }
void appl::TextViewer::onDraw(void) { void appl::TextViewer::onDraw() {
m_displayDrawing.draw(); m_displayDrawing.draw();
m_displayText.draw(); m_displayText.draw();
WidgetScrooled::onDraw(); WidgetScrolled::onDraw();
} }
void appl::TextViewer::onRegenerateDisplay(void) { void appl::TextViewer::onRegenerateDisplay() {
if (false == needRedraw()) { if (needRedraw() == false) {
return; return;
} }
//tic(); //tic();
@@ -95,10 +173,11 @@ void appl::TextViewer::onRegenerateDisplay(void) {
m_displayDrawing.setColor((*m_paintingProperties)[m_colorBackground].getForeground()); m_displayDrawing.setColor((*m_paintingProperties)[m_colorBackground].getForeground());
m_displayDrawing.rectangleWidth(m_size); m_displayDrawing.rectangleWidth(m_size);
if (m_buffer == NULL) { if (m_buffer == nullptr) {
m_maxSize.setX(256); m_maxSize.setX(256);
m_maxSize.setY(256); m_maxSize.setY(256);
m_displayText.setTextAlignement(10, m_size.x()-20, ewol::Text::alignLeft); float textEndAlignament = std::max(11.0f, m_size.x()-20.0f);
m_displayText.setTextAlignement(10, textEndAlignament, ewol::compositing::alignLeft);
m_displayText.setRelPos(vec3(10, 0, 0)); m_displayText.setRelPos(vec3(10, 0, 0));
std::string tmpString("<br/>\n" std::string tmpString("<br/>\n"
"<font color=\"red\">\n" "<font color=\"red\">\n"
@@ -117,21 +196,18 @@ void appl::TextViewer::onRegenerateDisplay(void) {
m_displayText.forceLineReturn(); m_displayText.forceLineReturn();
m_displayText.printDecorated(tmpString); m_displayText.printDecorated(tmpString);
// call the herited class... // call the herited class...
WidgetScrooled::onRegenerateDisplay(); WidgetScrolled::onRegenerateDisplay();
return; return;
} }
// normal displa of the buffer : // normal displa of the buffer :
vec3 tmpCursorPosition(0, 0, -1); vec3 tmpCursorPosition(0, 0, -1);
float tmpCursorLenght = -1.0; float tmpCursorLenght = -1.0;
// real display ... // real display ...
etk::Buffer& buf = m_buffer->getData(); m_displayText.setColor(etk::Color<>(0, 0, 0, 255));
m_displayText.setColor(etk::Color<>(0, 0, 0, 256));
float countNbLine = 1; float countNbLine = 1;
int32_t countColomn = 0; int32_t countColomn = 0;
// the siplay string : // the siplay string :
std::u32string stringToDisplay; std::u32string stringToDisplay;
int64_t bufferElementSize = 0;
bool isSelect = false;
appl::Buffer::Iterator selectPosStart = m_buffer->begin(); appl::Buffer::Iterator selectPosStart = m_buffer->begin();
appl::Buffer::Iterator selectPosStop = m_buffer->begin(); appl::Buffer::Iterator selectPosStop = m_buffer->begin();
if (m_buffer->hasTextSelected() == true) { if (m_buffer->hasTextSelected() == true) {
@@ -146,7 +222,7 @@ void appl::TextViewer::onRegenerateDisplay(void) {
for (startingIt = m_buffer->begin(); for (startingIt = m_buffer->begin();
(bool)startingIt == true; (bool)startingIt == true;
++startingIt) { ++startingIt) {
if (*startingIt == etk::UChar::Return) { if (*startingIt == u32char::Return) {
++startLineId; ++startLineId;
m_displayText.forceLineReturn(); m_displayText.forceLineReturn();
if (m_size.y() >= m_displayText.getPos().y()) { if (m_size.y() >= m_displayText.getPos().y()) {
@@ -191,9 +267,9 @@ void appl::TextViewer::onRegenerateDisplay(void) {
m_displayText.setClipping(vec2(m_lastOffsetDisplay, 0), m_size); m_displayText.setClipping(vec2(m_lastOffsetDisplay, 0), m_size);
} }
appl::DisplayHLData displayLocalSyntax; appl::DisplayHLData displayLocalSyntax;
m_buffer->hightlightGenerateLines(displayLocalSyntax, (int64_t)startingIt, m_size.y()); m_buffer->hightlightGenerateLines(displayLocalSyntax, startingIt, (m_size.y()/tmpLetterSize.y()) + 5);
float maxSizeX = 0; float maxSizeX = 0;
appl::HighlightInfo * HLColor = NULL; appl::HighlightInfo * HLColor = nullptr;
bool DisplayCursorAndSelection = isSelectedLast(); bool DisplayCursorAndSelection = isSelectedLast();
appl::Buffer::Iterator it; appl::Buffer::Iterator it;
for (it = startingIt; for (it = startingIt;
@@ -206,15 +282,15 @@ void appl::TextViewer::onRegenerateDisplay(void) {
} }
//APPL_DEBUG("display element '" << currentValue << "'at pos : " << m_displayText.getPos() ); //APPL_DEBUG("display element '" << currentValue << "'at pos : " << m_displayText.getPos() );
//APPL_DEBUG(" element size : " << iii << " : " << bufferElementSize); //APPL_DEBUG(" element size : " << iii << " : " << bufferElementSize);
if (*it == etk::UChar::Return) { if (*it == u32char::Return) {
countNbLine += 1; countNbLine += 1;
countColomn = 0; countColomn = 0;
maxSizeX = etk_max(m_displayText.getPos().x(), maxSizeX); maxSizeX = std::max(m_displayText.getPos().x(), maxSizeX);
// Display the end line position only if we have the focus ... // Display the end line position only if we have the focus ...
if (DisplayCursorAndSelection == true) { if (DisplayCursorAndSelection == true) {
if (it >= selectPosStart && it < selectPosStop) { if (it >= selectPosStart && it < selectPosStop) {
ewol::Drawing& draw = m_displayText.getDrawing(); ewol::compositing::Drawing& draw = m_displayText.getDrawing();
draw.setColor(etk::Color<>(0xFF0000FF)); draw.setColor(etk::Color<>(0xFF, 0x00, 0x00, 0xFF));
draw.setPos(m_displayText.getPos() + tmpLetterSize/4.0f); draw.setPos(m_displayText.getPos() + tmpLetterSize/4.0f);
draw.rectangle(m_displayText.getPos() + tmpLetterSize*3.0f/4.0f); draw.rectangle(m_displayText.getPos() + tmpLetterSize*3.0f/4.0f);
} }
@@ -231,8 +307,8 @@ void appl::TextViewer::onRegenerateDisplay(void) {
} }
HLColor = m_buffer->getElementColorAtPosition(displayLocalSyntax, (int64_t)it); HLColor = m_buffer->getElementColorAtPosition(displayLocalSyntax, (int64_t)it);
bool haveBackground = false; bool haveBackground = false;
if ( HLColor != NULL if ( HLColor != nullptr
&& HLColor->patern != NULL) { && HLColor->patern != nullptr) {
m_displayText.setColor(HLColor->patern->getColorGlyph().getForeground()); m_displayText.setColor(HLColor->patern->getColorGlyph().getForeground());
m_displayText.setColorBg(HLColor->patern->getColorGlyph().getBackground()); m_displayText.setColorBg(HLColor->patern->getColorGlyph().getBackground());
haveBackground = HLColor->patern->getColorGlyph().haveBackground(); haveBackground = HLColor->patern->getColorGlyph().haveBackground();
@@ -245,9 +321,9 @@ void appl::TextViewer::onRegenerateDisplay(void) {
m_displayText.setColor((*m_paintingProperties)[m_colorNormal].getForeground()); m_displayText.setColor((*m_paintingProperties)[m_colorNormal].getForeground());
} }
if (haveBackground == false) { if (haveBackground == false) {
if (*it == etk::UChar::Space) { if (*it == u32char::Space) {
m_displayText.setColorBg((*m_paintingProperties)[m_colorSpace].getForeground()); m_displayText.setColorBg((*m_paintingProperties)[m_colorSpace].getForeground());
} else if (*it == etk::UChar::Tabulation) { } else if (*it == u32char::Tabulation) {
m_displayText.setColorBg((*m_paintingProperties)[m_colorTabulation].getForeground()); m_displayText.setColorBg((*m_paintingProperties)[m_colorTabulation].getForeground());
} }
} }
@@ -270,7 +346,7 @@ void appl::TextViewer::onRegenerateDisplay(void) {
tmpCursorPosition = m_displayText.getPos(); tmpCursorPosition = m_displayText.getPos();
tmpCursorLenght = 5; tmpCursorLenght = 5;
} }
maxSizeX = etk_max(m_displayText.getPos().x(), maxSizeX); maxSizeX = std::max(m_displayText.getPos().x(), maxSizeX);
// Display cursor only if we have the focus ... // Display cursor only if we have the focus ...
if ( tmpCursorPosition.z() != -1 if ( tmpCursorPosition.z() != -1
&& getFocus() == true) { && getFocus() == true) {
@@ -298,30 +374,30 @@ void appl::TextViewer::onRegenerateDisplay(void) {
} }
//toc("Display time : "); //toc("Display time : ");
// call the herited class... // call the herited class...
WidgetScrooled::onRegenerateDisplay(); WidgetScrolled::onRegenerateDisplay();
} }
bool appl::TextViewer::onEventEntry(const ewol::EventEntry& _event) { bool appl::TextViewer::onEventEntry(const ewol::event::Entry& _event) {
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return false; return false;
} }
// First call plugin // First call plugin
if (appl::textPluginManager::onEventEntry(*this, _event) == true) { if (m_pluginManager->onEventEntry(*this, _event) == true) {
markToRedraw(); markToRedraw();
return true; return true;
} }
// just forward event == > manage directly in the buffer // just forward event == > manage directly in the buffer
if (_event.getType() == ewol::keyEvent::keyboardChar) { if (_event.getType() == gale::key::keyboard::character) {
//APPL_DEBUG("KB EVENT : \"" << UTF8_data << "\" size=" << strlen(UTF8_data) << "type=" << (int32_t)typeEvent); //APPL_DEBUG("KB EVENT : \"" << UTF8_data << "\" size=" << strlen(UTF8_data) << "type=" << (int32_t)typeEvent);
if (_event.getStatus() != ewol::keyEvent::statusDown) { if (_event.getStatus() != gale::key::status::down) {
return false; return false;
} }
char32_t localValue = _event.getChar(); char32_t localValue = _event.getChar();
if (localValue == etk::UChar::Return) { if (localValue == u32char::Return) {
if (true == _event.getSpecialKey().isSetShift()) { if (true == _event.getSpecialKey().getShift()) {
localValue = etk::UChar::CarrierReturn; localValue = u32char::CarrierReturn;
} }
} else if (localValue == etk::UChar::Suppress ) { } else if (localValue == u32char::Suppress ) {
//APPL_INFO("keyEvent : <suppr> pos=" << m_cursorPos); //APPL_INFO("keyEvent : <suppr> pos=" << m_cursorPos);
if (m_buffer->hasTextSelected()) { if (m_buffer->hasTextSelected()) {
remove(); remove();
@@ -332,7 +408,7 @@ bool appl::TextViewer::onEventEntry(const ewol::EventEntry& _event) {
replace("", pos, posEnd); replace("", pos, posEnd);
} }
return true; return true;
} else if (localValue == etk::UChar::Delete) { } else if (localValue == u32char::Delete) {
//APPL_INFO("keyEvent : <del> pos=" << m_cursorPos); //APPL_INFO("keyEvent : <del> pos=" << m_cursorPos);
if (m_buffer->hasTextSelected()) { if (m_buffer->hasTextSelected()) {
remove(); remove();
@@ -347,9 +423,10 @@ bool appl::TextViewer::onEventEntry(const ewol::EventEntry& _event) {
m_buffer->setSelectMode(false); m_buffer->setSelectMode(false);
// normal adding char ... // normal adding char ...
char output[5]; char output[5];
int32_t nbElement = etk::getUtf8(localValue, output); output[0] = '0';
u32char::convertUtf8(localValue, output);
if ( m_buffer->hasTextSelected() == false if ( m_buffer->hasTextSelected() == false
&& _event.getSpecialKey().isSetInsert() == true) { && _event.getSpecialKey().getInsert() == true) {
appl::Buffer::Iterator pos = m_buffer->cursor(); appl::Buffer::Iterator pos = m_buffer->cursor();
appl::Buffer::Iterator posEnd = pos; appl::Buffer::Iterator posEnd = pos;
++posEnd; ++posEnd;
@@ -362,45 +439,44 @@ bool appl::TextViewer::onEventEntry(const ewol::EventEntry& _event) {
return true; return true;
} }
// move events ... // move events ...
if (_event.getStatus() == ewol::keyEvent::statusDown) { if (_event.getStatus() == gale::key::status::down) {
bool needUpdatePosition = true;
// selection when shift is set: // selection when shift is set:
m_buffer->setSelectMode(_event.getSpecialKey().isSetShift()); m_buffer->setSelectMode(_event.getSpecialKey().getShift());
// check selection event ... // check selection event ...
switch(_event.getType()) { switch(_event.getType()) {
case ewol::keyEvent::keyboardInsert: case gale::key::keyboard::insert:
m_insertMode = m_insertMode==true?false:true; m_insertMode = m_insertMode==true?false:true;
markToRedraw(); markToRedraw();
break; break;
case ewol::keyEvent::keyboardLeft: case gale::key::keyboard::left:
//APPL_INFO("keyEvent : <LEFT>"); //APPL_INFO("keyEvent : <LEFT>");
moveCursorLeft(); moveCursorLeft();
break; break;
case ewol::keyEvent::keyboardRight: case gale::key::keyboard::right:
//APPL_INFO("keyEvent : <RIGHT>"); //APPL_INFO("keyEvent : <RIGHT>");
moveCursorRight(); moveCursorRight();
break; break;
case ewol::keyEvent::keyboardUp: case gale::key::keyboard::up:
//APPL_INFO("keyEvent : <UP>"); //APPL_INFO("keyEvent : <UP>");
moveCursorUp(1); moveCursorUp(1);
break; break;
case ewol::keyEvent::keyboardDown: case gale::key::keyboard::down:
//APPL_INFO("keyEvent : <DOWN>"); //APPL_INFO("keyEvent : <DOWN>");
moveCursorDown(1); moveCursorDown(1);
break; break;
case ewol::keyEvent::keyboardPageUp: case gale::key::keyboard::pageUp:
//APPL_INFO("keyEvent : <PAGE-UP>"); //APPL_INFO("keyEvent : <PAGE-UP>");
moveCursorUp(15); // TODO : Set the real number of line ... moveCursorUp(15); // TODO : Set the real number of line ...
break; break;
case ewol::keyEvent::keyboardPageDown: case gale::key::keyboard::pageDown:
//APPL_INFO("keyEvent : <PAGE-DOWN>"); //APPL_INFO("keyEvent : <PAGE-DOWN>");
moveCursorDown(15); // TODO : Set the real number of line ... moveCursorDown(15); // TODO : Set the real number of line ...
break; break;
case ewol::keyEvent::keyboardStart: case gale::key::keyboard::start:
//APPL_INFO("keyEvent : <Start of line>"); //APPL_INFO("keyEvent : <Start of line>");
moveCursorLeft(moveEnd); moveCursorLeft(moveEnd);
break; break;
case ewol::keyEvent::keyboardEnd: case gale::key::keyboard::end:
//APPL_INFO("keyEvent : <End of line>"); //APPL_INFO("keyEvent : <End of line>");
moveCursorRight(moveEnd); moveCursorRight(moveEnd);
break; break;
@@ -412,21 +488,22 @@ bool appl::TextViewer::onEventEntry(const ewol::EventEntry& _event) {
return false; return false;
} }
bool appl::TextViewer::onEventInput(const ewol::EventInput& _event) { bool appl::TextViewer::onEventInput(const ewol::event::Input& _event) {
if (_event.getId() != 0) { if ( _event.getId() != 0
&& _event.getStatus() == gale::key::status::down) {
keepFocus(); keepFocus();
} }
//tic(); //tic();
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return false; return false;
} }
// First call the scrolling widget : // First call the scrolling widget :
if (WidgetScrooled::onEventInput(_event) == true) { if (ewol::widget::WidgetScrolled::onEventInput(_event) == true) {
markToRedraw(); markToRedraw();
return true; return true;
} }
// Second call plugin // Second call plugin
if (appl::textPluginManager::onEventInput(*this, _event) == true) { if (m_pluginManager->onEventInput(*this, _event) == true) {
markToRedraw(); markToRedraw();
return true; return true;
} }
@@ -441,25 +518,26 @@ bool appl::TextViewer::onEventInput(const ewol::EventInput& _event) {
relativePos.setX(0); relativePos.setX(0);
} }
if ( _event.getId() == 12 if ( _event.getId() == 12
&& _event.getStatus() == ewol::keyEvent::statusSingle) { && _event.getStatus() == gale::key::status::pressSingle) {
APPL_DEBUG("kjhkjhkjh"); APPL_TODO("RAT5 SAVE button ==> TODO implement");
// Rat5 save event // Rat5 save event
sendMultiCast(ednMsgGuiSave, "current"); //sendMultiCast(ednMsgGuiSave, "current");
return true; return true;
} }
// just forward event == > manage directly in the buffer // just forward event == > manage directly in the buffer
if (_event.getId() == 1) { if (_event.getId() == 1) {
// mouse selection : // mouse selection :
if (_event.getType() == ewol::keyEvent::typeMouse) { //if (_event.getType() == gale::key::typeMouse) {
if (_event.getStatus() == ewol::keyEvent::statusDown) { if (_event.getStatus() == gale::key::status::down) {
//if (_event.getSpecialKey().isSetShift() == false) { //if (_event.getSpecialKey().isSetShift() == false) {
appl::Buffer::Iterator newPos = getMousePosition(relativePos); appl::Buffer::Iterator newPos = getMousePosition(relativePos);
m_buffer->setSelectMode(false);
moveCursor(newPos); moveCursor(newPos);
m_buffer->setSelectMode(true); m_buffer->setSelectMode(true);
markToRedraw(); markToRedraw();
return true; return true;
//} //}
} else if (_event.getStatus() == ewol::keyEvent::statusUp) { } else if (_event.getStatus() == gale::key::status::up) {
appl::Buffer::Iterator newPos = getMousePosition(relativePos); appl::Buffer::Iterator newPos = getMousePosition(relativePos);
moveCursor(newPos); moveCursor(newPos);
m_buffer->setSelectMode(false); m_buffer->setSelectMode(false);
@@ -467,52 +545,62 @@ bool appl::TextViewer::onEventInput(const ewol::EventInput& _event) {
std::string value; std::string value;
m_buffer->copy(value); m_buffer->copy(value);
if (value.size() != 0) { if (value.size() != 0) {
ewol::clipBoard::set(ewol::clipBoard::clipboardSelection, value); gale::context::clipBoard::set(gale::context::clipBoard::clipboardSelection, value);
} }
markToRedraw(); markToRedraw();
return true; return true;
} }
} //}
if (_event.getStatus() == ewol::keyEvent::statusSingle) { if (_event.getStatus() == gale::key::status::pressSingle) {
if (_event.getType() == ewol::keyEvent::typeMouse) { if ( _event.getType() == gale::key::type::mouse
|| _event.getType() == gale::key::type::finger) {
appl::Buffer::Iterator newPos = getMousePosition(relativePos); appl::Buffer::Iterator newPos = getMousePosition(relativePos);
moveCursor(newPos); moveCursor(newPos);
markToRedraw(); markToRedraw();
return true; return true;
} }
} else if (_event.getStatus() == ewol::keyEvent::statusDouble) { } else if (_event.getStatus() == gale::key::status::pressDouble) {
mouseEventDouble(); mouseEventDouble();
// Copy selection : // Copy selection :
std::string value; std::string value;
m_buffer->copy(value); m_buffer->copy(value);
if (value.size() != 0) { if (value.size() != 0) {
ewol::clipBoard::set(ewol::clipBoard::clipboardSelection, value); gale::context::clipBoard::set(gale::context::clipBoard::clipboardSelection, value);
} }
markToRedraw(); markToRedraw();
return true; return true;
} else if (_event.getStatus() == ewol::keyEvent::statusTriple) { } else if (_event.getStatus() == gale::key::status::pressTriple) {
mouseEventTriple(); mouseEventTriple();
// Copy selection : // Copy selection :
std::string value; std::string value;
m_buffer->copy(value); m_buffer->copy(value);
if (value.size() != 0) { if (value.size() != 0) {
ewol::clipBoard::set(ewol::clipBoard::clipboardSelection, value); gale::context::clipBoard::set(gale::context::clipBoard::clipboardSelection, value);
} }
markToRedraw(); markToRedraw();
return true; return true;
} else if (_event.getStatus() == ewol::keyEvent::statusMove) { } else if (_event.getStatus() == gale::key::status::move) {
if (m_buffer->getSelectMode() == true) { if (m_buffer->getSelectMode() == true) {
//int64_t timeStart = ewol::getTime();
appl::Buffer::Iterator newPos = getMousePosition(relativePos); appl::Buffer::Iterator newPos = getMousePosition(relativePos);
//int64_t timeMedium1 = ewol::getTime();
moveCursor(newPos); moveCursor(newPos);
//int64_t timeMedium2 = ewol::getTime();
markToRedraw(); markToRedraw();
/*
int64_t timeStop = ewol::getTime();
APPL_DEBUG("Display selection=" << (timeStop-timeStart)/1000.0f << " ms");
APPL_DEBUG(" 1=" << (timeMedium1-timeStart)/1000.0f << " ms");
APPL_DEBUG(" 2=" << (timeMedium2-timeMedium1)/1000.0f << " ms");
*/
return true; return true;
} }
} }
} else if (2 == _event.getId()) { } else if (2 == _event.getId()) {
if (ewol::keyEvent::statusSingle == _event.getStatus()) { if (gale::key::status::pressSingle == _event.getStatus()) {
appl::Buffer::Iterator newPos = getMousePosition(relativePos); appl::Buffer::Iterator newPos = getMousePosition(relativePos);
moveCursor(newPos); moveCursor(newPos);
ewol::clipBoard::request(ewol::clipBoard::clipboardSelection); gale::context::clipBoard::request(gale::context::clipBoard::clipboardSelection);
markToRedraw(); markToRedraw();
return true; return true;
} }
@@ -521,7 +609,7 @@ bool appl::TextViewer::onEventInput(const ewol::EventInput& _event) {
} }
void appl::TextViewer::mouseEventDouble(void) { void appl::TextViewer::mouseEventDouble() {
//m_selectMode = false; //m_selectMode = false;
appl::Buffer::Iterator beginPos, endPos; appl::Buffer::Iterator beginPos, endPos;
if (true == m_buffer->getPosAround(m_buffer->cursor(), beginPos, endPos)) { if (true == m_buffer->getPosAround(m_buffer->cursor(), beginPos, endPos)) {
@@ -530,12 +618,13 @@ void appl::TextViewer::mouseEventDouble(void) {
} }
} }
void appl::TextViewer::mouseEventTriple(void) { void appl::TextViewer::mouseEventTriple() {
//m_selectMode = false; //m_selectMode = false;
moveCursor(m_buffer->getEndLine(m_buffer->cursor())); moveCursor(m_buffer->getEndLine(m_buffer->cursor()));
m_buffer->setSelectionPos(m_buffer->getStartLine(m_buffer->cursor())); m_buffer->setSelectionPos(m_buffer->getStartLine(m_buffer->cursor()));
} }
// TODO : optimise this with retaine the display position buffer and his position in the real view ...
appl::Buffer::Iterator appl::TextViewer::getMousePosition(const vec2& _relativePos) { appl::Buffer::Iterator appl::TextViewer::getMousePosition(const vec2& _relativePos) {
char32_t currentValue; char32_t currentValue;
vec3 positionCurentDisplay(0,0,0); vec3 positionCurentDisplay(0,0,0);
@@ -549,17 +638,23 @@ appl::Buffer::Iterator appl::TextViewer::getMousePosition(const vec2& _relativeP
(bool)it == true; (bool)it == true;
++it) { ++it) {
currentValue = *it; currentValue = *it;
m_buffer->expand(countColomn, currentValue, stringToDisplay); if (currentValue == u32char::Return) {
for (size_t kkk=0; kkk<stringToDisplay.size(); ++kkk) { m_displayText.forceLineReturn();
if (stringToDisplay[kkk] == etk::UChar::Return) { countColomn = 0;
m_displayText.forceLineReturn(); } else {
countColomn = 0; if (-_relativePos.y() >= positionCurentDisplay.y()) {
} else { m_buffer->expand(countColomn, currentValue, stringToDisplay);
//note : Without this condithion the time od selection change to 0.6 ms to 8ms ... for (size_t kkk=0; kkk<stringToDisplay.size(); ++kkk) {
if (-_relativePos.y() >= positionCurentDisplay.y()) { if (stringToDisplay[kkk] == u32char::Return) {
m_displayText.print(stringToDisplay[kkk]); m_displayText.forceLineReturn();
countColomn = 0;
} else {
//note : Without this condithion the time od selection change to 0.6 ms to 8ms ...
//APPL_DEBUG("check : " << -_relativePos.y() << ">=" << positionCurentDisplay.y());
m_displayText.printChar(stringToDisplay[kkk]);
++countColomn;
}
} }
++countColomn;
} }
} }
if (-_relativePos.y() >= positionCurentDisplay.y()) { if (-_relativePos.y() >= positionCurentDisplay.y()) {
@@ -580,125 +675,47 @@ appl::Buffer::Iterator appl::TextViewer::getMousePosition(const vec2& _relativeP
return m_buffer->end(); return m_buffer->end();
} }
void appl::TextViewer::onEventClipboard(enum ewol::clipBoard::clipboardListe _clipboardID) { void appl::TextViewer::onEventClipboard(enum gale::context::clipBoard::clipboardListe _clipboardID) {
if (m_buffer != NULL) { if (m_buffer != nullptr) {
std::string data = ewol::clipBoard::get(_clipboardID); std::string data = gale::context::clipBoard::get(_clipboardID);
write(data); write(data);
} }
markToRedraw(); markToRedraw();
} }
void appl::TextViewer::onReceiveMessage(const ewol::EMessage& _msg) { void appl::TextViewer::onCallbackIsModify() {
widget::WidgetScrooled::onReceiveMessage(_msg); markToRedraw();
APPL_VERBOSE("receive msg: " << _msg); }
// First call plugin void appl::TextViewer::onCallbackSelectChange() {
if (appl::textPluginManager::onReceiveMessage(*this, _msg) == true) { markToRedraw();
markToRedraw();
return;
}
// event needed even if selection of buffer is not done ...
if (_msg.getMessage() == appl::Buffer::eventIsModify) {
markToRedraw();
return;
}
if (_msg.getMessage() == appl::Buffer::eventSelectChange) {
markToRedraw();
return;
}
// If not the last buffer selected, then no event parsing ...
if (isSelectedLast() == false) {
return;
}
if (_msg.getMessage() == appl::MsgSelectGotoLineSelect) {
if (m_buffer == NULL) {
return;
}
appl::Buffer::Iterator it = m_buffer->countForwardNLines(m_buffer->begin(), std::stoi(_msg.getData()));
select(it, m_buffer->getEndLine(it));
markToRedraw();
return;
}
if (_msg.getMessage() == appl::MsgSelectGotoLine) {
if (m_buffer == NULL) {
return;
}
appl::Buffer::Iterator it = m_buffer->countForwardNLines(m_buffer->begin(), std::stoi(_msg.getData()));
moveCursor(it);
markToRedraw();
return;
}
if (_msg.getMessage() == appl::MsgSelectNewFile) {
// reset scroll:
if (m_buffer != NULL) {
m_buffer->unRegisterOnEvent(this);
bool needAdd = true;
for (size_t iii=0; iii<m_drawingRemenber.size(); ++iii) {
if (m_drawingRemenber[iii].first == m_buffer) {
m_drawingRemenber[iii].second = m_originScrooled;
APPL_VERBOSE("store origin : " << m_originScrooled);
needAdd = false;
break;
}
}
if (needAdd == true) {
m_drawingRemenber.push_back(std::make_pair(m_buffer, m_originScrooled));
APPL_VERBOSE("Push origin : " << m_originScrooled);
}
}
m_originScrooled = vec2(0,0);
if (m_bufferManager != NULL) {
m_buffer = m_bufferManager->get(_msg.getData());
m_bufferManager->setBufferSelected(m_buffer);
if (m_buffer != NULL) {
m_buffer->registerOnEvent(this, appl::Buffer::eventIsModify);
m_buffer->registerOnEvent(this, appl::Buffer::eventSelectChange);
for (auto element : m_drawingRemenber) {
if (element.first == m_buffer) {
m_originScrooled = element.second;
APPL_VERBOSE("retrive origin : " << m_originScrooled);
// TODO : Check if this element is not out of the display text ...
break;
}
}
}
}
markToRedraw();
return;
}
} }
void appl::TextViewer::onObjectRemove(ewol::EObject* _removeObject) {
widget::WidgetScrooled::onObjectRemove(_removeObject);
if (m_buffer == _removeObject) {
m_buffer = NULL;
markToRedraw();
}
}
void appl::TextViewer::onGetFocus(void) { void appl::TextViewer::onGetFocus() {
showKeyboard(); showKeyboard();
APPL_INFO("Focus - In"); APPL_INFO("Focus - In");
setCurrentSelect(); setCurrentSelect();
markToRedraw(); markToRedraw();
} }
void appl::TextViewer::onLostFocus(void) { void appl::TextViewer::onLostFocus() {
hideKeyboard(); hideKeyboard();
APPL_INFO("Focus - out"); APPL_INFO("Focus - out");
markToRedraw(); markToRedraw();
} }
void appl::TextViewer::setFontSize(int32_t _size) { void appl::TextViewer::onChangePropertyFontSize() {
m_displayText.setFontSize(_size); m_displayText.setFontSize(*propertyFontSize);
setScrollingSize(_size*3.0*1.46); // 1.46 is a magic number ... setScrollingSize(*propertyFontSize*3.0*1.46); // 1.46 is a magic number ...
} }
void appl::TextViewer::setFontName(const std::string& _fontName) { void appl::TextViewer::onChangePropertyFontName() {
m_displayText.setFontName(_fontName); m_displayText.setFontName(*propertyFontName);
} }
void appl::TextViewer::updateScrolling(void) { // TODO : Update process time ==> a little expensive (2->4ms) in end of file
if (m_buffer == NULL) { void appl::TextViewer::updateScrolling() {
if (m_buffer == nullptr) {
return; return;
} }
vec2 realCursorPosition(0,0); vec2 realCursorPosition(0,0);
@@ -727,11 +744,11 @@ void appl::TextViewer::updateScrolling(void) {
} }
bool appl::TextViewer::moveCursor(const appl::Buffer::Iterator& _pos) { bool appl::TextViewer::moveCursor(const appl::Buffer::Iterator& _pos) {
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return false; return false;
} }
markToRedraw(); markToRedraw();
if (appl::textPluginManager::onCursorMove(*this, _pos) == true) { if (m_pluginManager->onCursorMove(*this, _pos) == true) {
updateScrolling(); updateScrolling();
return true; return true;
} }
@@ -741,7 +758,7 @@ bool appl::TextViewer::moveCursor(const appl::Buffer::Iterator& _pos) {
} }
bool appl::TextViewer::write(const std::string& _data) { bool appl::TextViewer::write(const std::string& _data) {
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return false; return false;
} }
if (m_buffer->hasTextSelected() == true) { if (m_buffer->hasTextSelected() == true) {
@@ -751,39 +768,39 @@ bool appl::TextViewer::write(const std::string& _data) {
} }
bool appl::TextViewer::write(const std::string& _data, const appl::Buffer::Iterator& _pos) { bool appl::TextViewer::write(const std::string& _data, const appl::Buffer::Iterator& _pos) {
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return false; return false;
} }
markToRedraw(); markToRedraw();
if (appl::textPluginManager::onWrite(*this, _pos, _data) == true) { if (m_pluginManager->onWrite(*this, _pos, _data) == true) {
// no call of the move cursor, because pluging might call theses function to copy and cut data... // no call of the move cursor, because pluging might call theses function to copy and cut data...
updateScrolling(); updateScrolling();
return true; return true;
} }
bool ret = m_buffer->write(_data, _pos); bool ret = m_buffer->write(_data, _pos);
appl::textPluginManager::onCursorMove(*this, m_buffer->cursor()); m_pluginManager->onCursorMove(*this, m_buffer->cursor());
updateScrolling(); updateScrolling();
return ret; return ret;
} }
bool appl::TextViewer::replace(const std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { bool appl::TextViewer::replace(const std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) {
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return false; return false;
} }
markToRedraw(); markToRedraw();
if (appl::textPluginManager::onReplace(*this, _pos, _data, _posEnd) == true) { if (m_pluginManager->onReplace(*this, _pos, _data, _posEnd) == true) {
// no call of the move cursor, because pluging might call theses function to copy and cut data... // no call of the move cursor, because pluging might call theses function to copy and cut data...
updateScrolling(); updateScrolling();
return true; return true;
} }
bool ret = m_buffer->replace(_data, _pos, _posEnd); bool ret = m_buffer->replace(_data, _pos, _posEnd);
appl::textPluginManager::onCursorMove(*this, m_buffer->cursor()); m_pluginManager->onCursorMove(*this, m_buffer->cursor());
updateScrolling(); updateScrolling();
return ret; return ret;
} }
bool appl::TextViewer::replace(const std::string& _data) { bool appl::TextViewer::replace(const std::string& _data) {
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return false; return false;
} }
if (m_buffer->hasTextSelected() == false) { if (m_buffer->hasTextSelected() == false) {
@@ -792,8 +809,8 @@ bool appl::TextViewer::replace(const std::string& _data) {
return replace(_data, m_buffer->selectStart(), m_buffer->selectStop()); return replace(_data, m_buffer->selectStart(), m_buffer->selectStop());
} }
void appl::TextViewer::remove(void) { void appl::TextViewer::remove() {
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return; return;
} }
if (m_buffer->hasTextSelected() == false) { if (m_buffer->hasTextSelected() == false) {
@@ -801,17 +818,17 @@ void appl::TextViewer::remove(void) {
return; return;
} }
markToRedraw(); markToRedraw();
if (appl::textPluginManager::onRemove(*this, m_buffer->selectStart(), m_buffer->selectStop()) == true) { if (m_pluginManager->onRemove(*this, m_buffer->selectStart(), m_buffer->selectStop()) == true) {
return; return;
} }
m_buffer->removeSelection(); m_buffer->removeSelection();
appl::textPluginManager::onCursorMove(*this, m_buffer->cursor()); m_pluginManager->onCursorMove(*this, m_buffer->cursor());
} }
void appl::TextViewer::moveCursorRight(appl::TextViewer::moveMode _mode) { void appl::TextViewer::moveCursorRight(appl::TextViewer::moveMode _mode) {
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return; return;
} }
markToRedraw(); markToRedraw();
@@ -834,7 +851,7 @@ void appl::TextViewer::moveCursorRight(appl::TextViewer::moveMode _mode) {
} }
void appl::TextViewer::moveCursorLeft(appl::TextViewer::moveMode _mode) { void appl::TextViewer::moveCursorLeft(appl::TextViewer::moveMode _mode) {
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return; return;
} }
markToRedraw(); markToRedraw();
@@ -857,7 +874,7 @@ void appl::TextViewer::moveCursorLeft(appl::TextViewer::moveMode _mode) {
} }
void appl::TextViewer::moveCursorUp(uint32_t _nbLine) { void appl::TextViewer::moveCursorUp(uint32_t _nbLine) {
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return; return;
} }
markToRedraw(); markToRedraw();
@@ -883,7 +900,7 @@ void appl::TextViewer::moveCursorUp(uint32_t _nbLine) {
} }
void appl::TextViewer::moveCursorDown(uint32_t _nbLine) { void appl::TextViewer::moveCursorDown(uint32_t _nbLine) {
if (m_buffer == NULL) { if (m_buffer == nullptr) {
return; return;
} }
markToRedraw(); markToRedraw();
@@ -921,10 +938,10 @@ appl::Buffer::Iterator appl::TextViewer::getPosSize(const appl::Buffer::Iterator
currentValue = *it; currentValue = *it;
m_buffer->expand(countColomn, currentValue, stringToDisplay); m_buffer->expand(countColomn, currentValue, stringToDisplay);
for (size_t kkk=0; kkk<stringToDisplay.size(); ++kkk) { for (size_t kkk=0; kkk<stringToDisplay.size(); ++kkk) {
if (stringToDisplay[kkk] == etk::UChar::Return) { if (stringToDisplay[kkk] == u32char::Return) {
return it; return it;
} else { } else {
m_displayText.print(stringToDisplay[kkk]); m_displayText.printChar(stringToDisplay[kkk]);
} }
} }
if (m_displayText.getPos().x() >= _distance) { if (m_displayText.getPos().x() >= _distance) {
@@ -950,10 +967,10 @@ float appl::TextViewer::getScreenSize(const appl::Buffer::Iterator& _startLinePo
//APPL_DEBUG("parse : " << currentValue); //APPL_DEBUG("parse : " << currentValue);
m_buffer->expand(countColomn, currentValue, stringToDisplay); m_buffer->expand(countColomn, currentValue, stringToDisplay);
for (size_t kkk=0; kkk<stringToDisplay.size(); ++kkk) { for (size_t kkk=0; kkk<stringToDisplay.size(); ++kkk) {
if (stringToDisplay[kkk] == etk::UChar::Return) { if (stringToDisplay[kkk] == u32char::Return) {
return m_displayText.getPos().x() + 2; // TODO : Add the +2 for the end of line ... return m_displayText.getPos().x() + 2; // TODO : Add the +2 for the end of line ...
} else { } else {
m_displayText.print(stringToDisplay[kkk]); m_displayText.printChar(stringToDisplay[kkk]);
} }
} }
ret = m_displayText.getPos().x(); ret = m_displayText.getPos().x();
@@ -962,15 +979,15 @@ float appl::TextViewer::getScreenSize(const appl::Buffer::Iterator& _startLinePo
return ret; return ret;
} }
void appl::TextViewer::setCurrentSelect(void) { void appl::TextViewer::setCurrentSelect() {
if (m_viewerManager != NULL) { if (m_viewerManager != nullptr) {
m_viewerManager->setViewerSelected(this, m_buffer); m_viewerManager->setViewerSelected(ememory::dynamicPointerCast<appl::TextViewer>(sharedFromThis()), m_buffer);
} }
} }
bool appl::TextViewer::isSelectedLast(void) { bool appl::TextViewer::isSelectedLast() {
if (m_viewerManager != NULL) { if (m_viewerManager != nullptr) {
return m_viewerManager->isLastSelected(this); return m_viewerManager->isLastSelected(ememory::dynamicPointerCast<appl::TextViewer>(sharedFromThis()));
} }
return false; return false;
} }

View File

@@ -1,29 +1,32 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __APPL_TEXT_VIEWER_H__
#define __APPL_TEXT_VIEWER_H__
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/Buffer.h> #include <appl/Buffer.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
#include <ewol/widget/WidgetScrolled.h> #include <ewol/widget/WidgetScrolled.h>
#include <ewol/compositing/Text.h> #include <ewol/compositing/Text.h>
#include <ewol/compositing/TextDF.h>
#include <ewol/compositing/Drawing.h> #include <ewol/compositing/Drawing.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <appl/Gui/ViewerManager.h> #include <appl/Gui/ViewerManager.h>
#include <utility> #include <utility>
namespace appl { namespace appl {
class TextViewer : public widget::WidgetScrooled { class textPluginManager;
class TextViewer;
using TextViewerShared = ememory::SharedPtr<appl::TextViewer>;
using TextViewerWeak = ememory::WeakPtr<appl::TextViewer>;
class TextViewer : public ewol::widget::WidgetScrolled {
private: private:
appl::GlyphPainting* m_paintingProperties; //!< element painting property eproperty::Value<std::string> propertyFontName; //!< name of the font to display text.
eproperty::Value<int32_t> propertyFontSize; //!< Size of the font to display text.
ememory::SharedPtr<appl::GlyphPainting> m_paintingProperties; //!< element painting property
int32_t m_colorBackground; int32_t m_colorBackground;
int32_t m_colorSpace; int32_t m_colorSpace;
int32_t m_colorTabulation; int32_t m_colorTabulation;
@@ -32,40 +35,42 @@ namespace appl {
int32_t m_colorSelection; int32_t m_colorSelection;
int32_t m_colorNormal; int32_t m_colorNormal;
private: private:
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
appl::ViewerManager* m_viewerManager; //!< handle on the buffer manager ememory::SharedPtr<appl::textPluginManager> m_pluginManager; //!< Plugin manager interface
ememory::SharedPtr<appl::ViewerManager> m_viewerManager; //!< handle on the buffer manager
protected:
TextViewer();
void init();
public: public:
TextViewer(const std::string& _fontName="", int32_t _fontSize=-1); DECLARE_FACTORY(TextViewer);
virtual ~TextViewer(void); virtual ~TextViewer();
private: private:
appl::Buffer* m_buffer; //!< pointer on the current buffer to display (can be null if the buffer is remover or in state of changing buffer) ememory::SharedPtr<appl::Buffer> m_buffer; //!< pointer on the current buffer to display (can be null if the buffer is remover or in state of changing buffer)
public: public:
/** /**
* @brief Get the buffer property (only for the class : template <typename TYPE> class TextViewerPluginData) * @brief Get the buffer property (only for the class : template <typename TYPE> class TextViewerPluginData)
* @return pointer on buffer * @return pointer on buffer
*/ */
appl::Buffer* internalGetBuffer(void) { ememory::SharedPtr<appl::Buffer> internalGetBuffer() {
return m_buffer; return m_buffer;
} }
private: private:
ewol::Text m_displayText; //!< Text display properties. ewol::compositing::Text m_displayText; //!< Text display properties.
ewol::Drawing m_displayDrawing; //!< Other diaplay requested. ewol::compositing::Drawing m_displayDrawing; //!< Other display requested.
std::vector<std::pair<appl::Buffer*, vec2>> m_drawingRemenber; std::vector<std::pair<ememory::WeakPtr<appl::Buffer>, vec2>> m_drawingRemenber;
public: public:
void setFontSize(int32_t _size); virtual void onChangePropertyFontSize();
void setFontName(const std::string& _fontName); virtual void onChangePropertyFontName();
protected: // derived function protected: // derived function
virtual void onDraw(void); virtual void onDraw();
public: // Derived function public: // Derived function
virtual bool calculateMinSize(void); virtual bool calculateMinSize();
virtual void onRegenerateDisplay(void); virtual void onRegenerateDisplay();
virtual void onReceiveMessage(const ewol::EMessage& _msg); virtual bool onEventInput(const ewol::event::Input& _event);
virtual void onObjectRemove(ewol::EObject* _removeObject); virtual bool onEventEntry(const ewol::event::Entry& _event);
virtual bool onEventInput(const ewol::EventInput& _event); virtual void onEventClipboard(enum gale::context::clipBoard::clipboardListe _clipboardID);
virtual bool onEventEntry(const ewol::EventEntry& _event); virtual void onGetFocus();
virtual void onEventClipboard(enum ewol::clipBoard::clipboardListe _clipboardID); virtual void onLostFocus();
virtual void onGetFocus(void);
virtual void onLostFocus(void);
private: private:
float m_lastOffsetDisplay; //!< Line number ofssed in the display float m_lastOffsetDisplay; //!< Line number ofssed in the display
private: private:
@@ -75,7 +80,7 @@ namespace appl {
* @brief Update the scrolling position from the cursor position, * @brief Update the scrolling position from the cursor position,
* it might be be all time in the display screen. * it might be be all time in the display screen.
*/ */
void updateScrolling(void); void updateScrolling();
// TODO : Doc : write data on buffer // TODO : Doc : write data on buffer
bool moveCursor(const appl::Buffer::Iterator& _pos); bool moveCursor(const appl::Buffer::Iterator& _pos);
bool write(const std::string& _data); bool write(const std::string& _data);
@@ -83,17 +88,17 @@ namespace appl {
bool replace(const std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd); bool replace(const std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd);
bool replace(const std::string& _data); bool replace(const std::string& _data);
bool replace(const std::u32string& _data) { bool replace(const std::u32string& _data) {
return replace(to_u8string(_data)); return replace(etk::to_string(_data));
} }
/** /**
* @brief Remove selected data ... * @brief Remove selected data ...
*/ */
void remove(void); void remove();
/** /**
* @brief Remove selected data ... (No plugin call) * @brief Remove selected data ... (No plugin call)
*/ */
void removeDirect(void) { void removeDirect() {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return; return;
} }
m_buffer->removeSelection(); m_buffer->removeSelection();
@@ -106,7 +111,7 @@ namespace appl {
* @return true of no error occured. * @return true of no error occured.
*/ */
bool copy(std::string& _data) { bool copy(std::string& _data) {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return false; return false;
} }
return m_buffer->copy(_data); return m_buffer->copy(_data);
@@ -118,7 +123,7 @@ namespace appl {
* @param[in] _posEnd End position to end replace the data. * @param[in] _posEnd End position to end replace the data.
*/ */
void copy(std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { void copy(std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return; return;
} }
m_buffer->copy(_data, _pos, _posEnd); m_buffer->copy(_data, _pos, _posEnd);
@@ -130,7 +135,7 @@ namespace appl {
* @return true if the write is done corectly * @return true if the write is done corectly
*/ */
bool writeDirect(const std::string& _data, const appl::Buffer::Iterator& _pos) { bool writeDirect(const std::string& _data, const appl::Buffer::Iterator& _pos) {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return false; return false;
} }
bool ret = m_buffer->write(_data, _pos); bool ret = m_buffer->write(_data, _pos);
@@ -145,7 +150,7 @@ namespace appl {
* @return true if the write is done corectly * @return true if the write is done corectly
*/ */
bool replaceDirect(const std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) { bool replaceDirect(const std::string& _data, const appl::Buffer::Iterator& _pos, const appl::Buffer::Iterator& _posEnd) {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return false; return false;
} }
bool ret = m_buffer->replace(_data, _pos, _posEnd); bool ret = m_buffer->replace(_data, _pos, _posEnd);
@@ -154,8 +159,8 @@ namespace appl {
} }
appl::Buffer::Iterator getMousePosition(const vec2& _relativePos); appl::Buffer::Iterator getMousePosition(const vec2& _relativePos);
void mouseEventDouble(void); void mouseEventDouble();
void mouseEventTriple(void); void mouseEventTriple();
private: private:
enum moveMode { enum moveMode {
moveLetter, moveLetter,
@@ -189,26 +194,31 @@ namespace appl {
/** /**
* @brief Set the current buffer selected * @brief Set the current buffer selected
*/ */
void setCurrentSelect(void); void setCurrentSelect();
/** /**
* @brief Check if the current buffer is last selected * @brief Check if the current buffer is last selected
* @return true if selected last * @return true if selected last
*/ */
bool isSelectedLast(void); bool isSelectedLast();
public: public:
/**
* @brief get the path of the current buffer
* @return Path of the buffer (remove the ended name)
*/
virtual std::string getBufferPath();
/** /**
* @brief Check if the buffer is availlable * @brief Check if the buffer is availlable
* @return true if a display buffer is present, false otherwise. * @return true if a display buffer is present, false otherwise.
*/ */
virtual bool hasBuffer(void) { virtual bool hasBuffer() {
return m_buffer != NULL; return m_buffer != nullptr;
} }
/** /**
* @brief Get the status of selection. * @brief Get the status of selection.
* @return true if we have a current selection, false otherwise. * @return true if we have a current selection, false otherwise.
*/ */
virtual bool hasTextSelected(void) { virtual bool hasTextSelected() {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return false; return false;
} }
return m_buffer->hasTextSelected(); return m_buffer->hasTextSelected();
@@ -216,8 +226,8 @@ namespace appl {
/** /**
* @brief Remove Selection of the buffer. * @brief Remove Selection of the buffer.
*/ */
virtual void unSelect(void) { virtual void unSelect() {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return; return;
} }
m_buffer->unSelect(); m_buffer->unSelect();
@@ -228,7 +238,7 @@ namespace appl {
* @param[in] _stop Stop position of the selection (the curor is set at this position) * @param[in] _stop Stop position of the selection (the curor is set at this position)
*/ */
virtual void select(const appl::Buffer::Iterator& _start, const appl::Buffer::Iterator& _stop) { virtual void select(const appl::Buffer::Iterator& _start, const appl::Buffer::Iterator& _stop) {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return; return;
} }
moveCursor(_stop); moveCursor(_stop);
@@ -248,7 +258,7 @@ namespace appl {
appl::Buffer::Iterator& _resultStart, appl::Buffer::Iterator& _resultStart,
appl::Buffer::Iterator& _resultStop, appl::Buffer::Iterator& _resultStop,
bool _caseSensitive = true) { bool _caseSensitive = true) {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return false; return false;
} }
bool ret = m_buffer->search(_pos, _search, _resultStart, _caseSensitive); bool ret = m_buffer->search(_pos, _search, _resultStart, _caseSensitive);
@@ -271,7 +281,7 @@ namespace appl {
appl::Buffer::Iterator& _resultStart, appl::Buffer::Iterator& _resultStart,
appl::Buffer::Iterator& _resultStop, appl::Buffer::Iterator& _resultStop,
bool _caseSensitive = true) { bool _caseSensitive = true) {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return false; return false;
} }
bool ret = m_buffer->searchBack(_pos, _search, _resultStart, _caseSensitive); bool ret = m_buffer->searchBack(_pos, _search, _resultStart, _caseSensitive);
@@ -290,7 +300,7 @@ namespace appl {
bool getPosAround(const appl::Buffer::Iterator& _pos, bool getPosAround(const appl::Buffer::Iterator& _pos,
appl::Buffer::Iterator &_beginPos, appl::Buffer::Iterator &_beginPos,
appl::Buffer::Iterator &_endPos) { appl::Buffer::Iterator &_endPos) {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return false; return false;
} }
return m_buffer->getPosAround(_pos, _beginPos, _endPos); return m_buffer->getPosAround(_pos, _beginPos, _endPos);
@@ -301,7 +311,7 @@ namespace appl {
* @return The Iterator * @return The Iterator
*/ */
appl::Buffer::Iterator position(int64_t _pos) { appl::Buffer::Iterator position(int64_t _pos) {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
return m_buffer->position(_pos); return m_buffer->position(_pos);
@@ -310,8 +320,8 @@ namespace appl {
* @brief Get the cursor position. * @brief Get the cursor position.
* @return The iterator on the cursor position * @return The iterator on the cursor position
*/ */
appl::Buffer::Iterator cursor(void) { appl::Buffer::Iterator cursor() {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
return m_buffer->cursor(); return m_buffer->cursor();
@@ -320,8 +330,8 @@ namespace appl {
* @brief Get the begin position. * @brief Get the begin position.
* @return The iterator on the begin position * @return The iterator on the begin position
*/ */
appl::Buffer::Iterator begin(void) { appl::Buffer::Iterator begin() {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
return m_buffer->begin(); return m_buffer->begin();
@@ -330,8 +340,8 @@ namespace appl {
* @brief Get the end position. * @brief Get the end position.
* @return The iterator on the end position * @return The iterator on the end position
*/ */
appl::Buffer::Iterator end(void) { appl::Buffer::Iterator end() {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
return m_buffer->end(); return m_buffer->end();
@@ -340,8 +350,8 @@ namespace appl {
* @brief Get an Iterator on the start selection. * @brief Get an Iterator on the start selection.
* @return The Iterator * @return The Iterator
*/ */
appl::Buffer::Iterator selectStart(void) { appl::Buffer::Iterator selectStart() {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
return m_buffer->selectStart(); return m_buffer->selectStart();
@@ -350,8 +360,8 @@ namespace appl {
* @brief Get an Iterator on the stop selection. * @brief Get an Iterator on the stop selection.
* @return The Iterator * @return The Iterator
*/ */
appl::Buffer::Iterator selectStop(void) { appl::Buffer::Iterator selectStop() {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
return m_buffer->selectStop(); return m_buffer->selectStop();
@@ -362,7 +372,7 @@ namespace appl {
* @return The position in the buffer of the start of the line. * @return The position in the buffer of the start of the line.
*/ */
appl::Buffer::Iterator getStartLine(const appl::Buffer::Iterator& _pos) { appl::Buffer::Iterator getStartLine(const appl::Buffer::Iterator& _pos) {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
return m_buffer->getStartLine(_pos); return m_buffer->getStartLine(_pos);
@@ -373,7 +383,7 @@ namespace appl {
* @return The position in the buffer of the end of the line. * @return The position in the buffer of the end of the line.
*/ */
appl::Buffer::Iterator getEndLine(const appl::Buffer::Iterator& _pos) { appl::Buffer::Iterator getEndLine(const appl::Buffer::Iterator& _pos) {
if (m_buffer==NULL) { if (m_buffer==nullptr) {
return appl::Buffer::Iterator(); return appl::Buffer::Iterator();
} }
return m_buffer->getEndLine(_pos); return m_buffer->getEndLine(_pos);
@@ -382,23 +392,31 @@ namespace appl {
* @brief Register of the arrival of a Multicast message * @brief Register of the arrival of a Multicast message
* @param[in] _messageId Event Id waiting for... * @param[in] _messageId Event Id waiting for...
*/ */
// TODO : Remove
void ext_registerMultiCast(const char* const _messageId) { void ext_registerMultiCast(const char* const _messageId) {
registerMultiCast(_messageId); //registerMultiCast(_messageId);
} }
/** /**
* @brief add a specific shortcut with his description * @brief add a specific shortcut with his description
* @param[in] _descriptiveString Description string of the shortcut * @param[in] _descriptiveString Description string of the shortcut
* @param[in] _generateEventId Event generic of the element * @param[in] _generateEventName Event generic of the element
* @param[in] _data Associate data wit the event
*/ */
virtual void ext_shortCutAdd(const char * _descriptiveString, virtual void ext_shortCutAdd(const std::string& _descriptiveString,
const char * _generateEventId, const std::string& _generateEventName) {
std::string _data="", shortCutAdd(_descriptiveString, _generateEventName);
bool _broadcast=false) {
shortCutAdd(_descriptiveString, _generateEventId, _data, _broadcast);
} }
/**
* @brief Remove a specific shortcut with his event name
* @param[in] _generateEventName Event of the element shortcut
*/
virtual void ext_shortCutRm(const std::string& _generateEventName) {
shortCutRemove(_generateEventName);
}
private: // callback fundtions
void onCallbackIsModify();
void onCallbackShortCut(const std::string& _value);
void onCallbackSelectChange();
void onCallbackselectNewFile(const std::string& _value);
}; };
}; }
#endif

View File

@@ -1,77 +1,40 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/global.h> #include <appl/global.h>
#include <appl/Gui/ViewerManager.h> #include <appl/Gui/ViewerManager.h>
#include <appl/Gui/TextViewer.h> #include <appl/Gui/TextViewer.h>
#include <ewol/renderer/EObject.h> #include <ewol/object/Object.h>
#include <ewol/renderer/EObjectManager.h> #include <ewol/object/Manager.h>
#include <gale/resource/Manager.h>
#undef __class__ appl::ViewerManager::ViewerManager() {
#define __class__ "ViewerManager"
appl::ViewerManager::ViewerManager(void) :
ewol::Resource("???ViewerManager???"),
m_viewer(NULL) {
addObjectType("appl::ViewerManager"); addObjectType("appl::ViewerManager");
// load buffer manager: // load buffer manager:
m_bufferManager = appl::BufferManager::keep(); m_bufferManager = appl::BufferManager::create();
} }
appl::ViewerManager::~ViewerManager(void) { appl::ViewerManager::~ViewerManager() {
appl::BufferManager::release(m_bufferManager);
} }
void appl::ViewerManager::setViewerSelected(appl::TextViewer* _viewer, appl::Buffer* _buffer) { ememory::SharedPtr<appl::TextViewer> appl::ViewerManager::getViewerSelected() {
if (m_viewer == _viewer) { return m_viewer.lock();
}
bool appl::ViewerManager::isLastSelected(const ememory::SharedPtr<appl::TextViewer>& _viewer) {
return m_viewer.lock() == _viewer;
}
void appl::ViewerManager::setViewerSelected(const ememory::SharedPtr<appl::TextViewer>& _viewer, const ememory::SharedPtr<appl::Buffer>& _buffer) {
if (m_viewer.lock() == _viewer) {
return; return;
} }
m_viewer = _viewer; m_viewer = _viewer;
if (m_bufferManager != NULL) { if (m_bufferManager != nullptr) {
m_bufferManager->setBufferSelected(_buffer); //m_bufferManager->setBufferSelected(_buffer);
} }
} }
void appl::ViewerManager::onReceiveMessage(const ewol::EMessage& _msg) {
APPL_DEBUG("receive message !!! " << _msg);
}
void appl::ViewerManager::onObjectRemove(ewol::EObject* _removeObject) {
ewol::Resource:: onObjectRemove(_removeObject);
if (_removeObject == m_viewer) {
m_viewer = NULL;
return;
}
}
appl::ViewerManager* appl::ViewerManager::keep(void) {
//EWOL_INFO("KEEP : appl::GlyphPainting : file : \"" << _filename << "\"");
appl::ViewerManager* object = static_cast<appl::ViewerManager*>(getManager().localKeep("???ViewerManager???"));
if (NULL != object) {
return object;
}
// this element create a new one every time ....
EWOL_INFO("CREATE : appl::ViewerManager: ???ViewerManager???");
object = new appl::ViewerManager();
if (NULL == object) {
EWOL_ERROR("allocation error of a resource : ???ViewerManager???");
return NULL;
}
getManager().localAdd(object);
return object;
}
void appl::ViewerManager::release(appl::ViewerManager*& _object) {
if (NULL == _object) {
return;
}
ewol::Resource* object2 = static_cast<ewol::Resource*>(_object);
getManager().release(object2);
_object = NULL;
}

View File

@@ -1,68 +1,45 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __VIEWER_MANAGER_H__
#define __VIEWER_MANAGER_H__
#include <appl/Buffer.h> #include <appl/Buffer.h>
#include <appl/globalMsg.h> #include <appl/globalMsg.h>
#include <ewol/widget/Widget.h> #include <ewol/widget/Widget.h>
#include <ewol/resources/Resource.h> #include <gale/resource/Resource.h>
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
namespace appl { namespace appl {
class TextViewer; class TextViewer;
class ViewerManager : public ewol::Resource { class ViewerManager;
using ViewerManagerShared = ememory::SharedPtr<appl::ViewerManager>;
using ViewerManagerWeak = ememory::WeakPtr<appl::ViewerManager>;
class ViewerManager : public ewol::Object {
protected: protected:
ViewerManager(void); ViewerManager();
~ViewerManager(void); public:
DECLARE_SINGLE_FACTORY(ViewerManager, "???ViewerManager???");
virtual ~ViewerManager();
private: private:
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
appl::TextViewer* m_viewer; ememory::WeakPtr<appl::TextViewer> m_viewer;
public: public:
/** /**
* @brief Set the current buffer selected * @brief Set the current buffer selected
* @param[in] _viewer Pointer on the viewer selected * @param[in] _viewer Pointer on the viewer selected
*/ */
void setViewerSelected(appl::TextViewer* _viewer, appl::Buffer* _buffer); void setViewerSelected(const ememory::SharedPtr<appl::TextViewer>& _viewer, const ememory::SharedPtr<appl::Buffer>& _buffer);
/** /**
* @brief Get the current buffer selected * @brief Get the current buffer selected
* @return Pointer on the buffer selected * @return Pointer on the buffer selected
*/ */
appl::TextViewer* getViewerSelected(void) { ememory::SharedPtr<appl::TextViewer> getViewerSelected();
return m_viewer;
};
/** /**
* @breif Check if the element is the last request selection * @breif Check if the element is the last request selection
* @param[in] _viewer element selected. * @param[in] _viewer element selected.
* @return true if the element is selected * @return true if the element is selected
*/ */
bool isLastSelected(appl::TextViewer* _viewer) { bool isLastSelected(const ememory::SharedPtr<appl::TextViewer>& _viewer);
return m_viewer == _viewer;
};
public: // herited function
void onReceiveMessage(const ewol::EMessage& _msg);
void onObjectRemove(ewol::EObject* _removeObject);
public: // resource manager
/**
* @brief keep the resource pointer.
* @note Never free this pointer by your own...
* @param[in] _filename Name of the configuration file.
* @return pointer on the resource or NULL if an error occured.
*/
static appl::ViewerManager* keep(void);
/**
* @brief release the keeped resources
* @param[in,out] reference on the object pointer
*/
static void release(appl::ViewerManager*& _object);
}; };
}; }
#endif

View File

@@ -1,94 +1,77 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#include <ewol/context/Context.h>
#include <ewol/renderer/eContext.h>
#include <appl/debug.h> #include <appl/debug.h>
#include <appl/Gui/WorkerCloseAllFile.h> #include <appl/Gui/WorkerCloseAllFile.h>
#undef __class__ appl::WorkerCloseAllFile::WorkerCloseAllFile() {
#define __class__ "WorkerCloseAllFile"
static const char* s_closeDone = "close-done";
appl::WorkerCloseAllFile::WorkerCloseAllFile(void) :
m_worker(NULL),
m_bufferManager(NULL) {
addObjectType("appl::WorkerCloseAllFile"); addObjectType("appl::WorkerCloseAllFile");
// load buffer manager: // load buffer manager:
m_bufferManager = appl::BufferManager::keep(); m_bufferManager = appl::BufferManager::create();
}
if (m_bufferManager == NULL) {
void appl::WorkerCloseAllFile::init() {
ewol::object::Worker::init();
if (m_bufferManager == nullptr) {
APPL_ERROR("can not call unexistant buffer manager ... "); APPL_ERROR("can not call unexistant buffer manager ... ");
autoDestroy(); destroy();
return; return;
} }
// List all current open file : // List all current open file :
for (int64_t iii=m_bufferManager->size()-1; iii>=0; --iii) { for (int64_t iii=m_bufferManager->size()-1; iii>=0; --iii) {
appl::Buffer* tmpBuffer = m_bufferManager->get(iii); ememory::SharedPtr<appl::Buffer> tmpBuffer = m_bufferManager->get(iii);
if (tmpBuffer == NULL) { if (tmpBuffer == nullptr) {
continue; continue;
} }
if (tmpBuffer->isModify() == false) { if (tmpBuffer->isModify() == false) {
tmpBuffer->removeObject(); APPL_TODO("destroy object");
tmpBuffer->destroy();
continue; continue;
} }
m_bufferNameList.push_back(tmpBuffer->getFileName()); m_bufferNameList.push_back(tmpBuffer->getFileName());
} }
// checkif an element has something to do in the queue // checkif an element has something to do in the queue
if (m_bufferNameList.size() == 0) { if (m_bufferNameList.size() == 0) {
autoDestroy(); destroy();
return; return;
} }
// create the worker : // create the worker :
m_worker = new appl::WorkerCloseFile(m_bufferNameList.front()); m_worker = appl::WorkerCloseFile::create();
m_worker->signalCloseDone.connect(sharedFromThis(), &appl::WorkerCloseAllFile::onCallbackCloseDone);
m_worker->startAction(m_bufferNameList.front());
// remove first element : // remove first element :
m_bufferNameList.erase(m_bufferNameList.begin()); m_bufferNameList.erase(m_bufferNameList.begin());
if (m_bufferNameList.size() == 0) { if (m_bufferNameList.size() == 0) {
autoDestroy(); destroy();
return; return;
} }
m_worker->registerOnEvent(this, appl::WorkerCloseFile::eventCloseDone, s_closeDone);
} }
appl::WorkerCloseAllFile::~WorkerCloseAllFile(void) { appl::WorkerCloseAllFile::~WorkerCloseAllFile() {
appl::BufferManager::release(m_bufferManager); APPL_ERROR("Remove Worker");
} }
void appl::WorkerCloseAllFile::onReceiveMessage(const ewol::EMessage& _msg) { void appl::WorkerCloseAllFile::onCallbackCloseDone() {
if (m_bufferManager == NULL) { if (m_bufferManager == nullptr) {
// nothing to do in this case ==> can do nothing ... // nothing to do in this case ==> can do nothing ...
return; return;
} }
if (_msg.getMessage() == s_closeDone) { if (m_bufferNameList.size() == 0) {
if (m_bufferNameList.size() == 0) { destroy();
autoDestroy(); return;
return; }
} // create the worker :
// create the worker : m_worker = appl::WorkerCloseFile::create();
m_worker = new appl::WorkerCloseFile(m_bufferNameList.front()); m_worker->signalCloseDone.connect(sharedFromThis(), &appl::WorkerCloseAllFile::onCallbackCloseDone);
// remove first element : m_worker->startAction(m_bufferNameList.front());
m_bufferNameList.erase(m_bufferNameList.begin()); // remove first element :
if (m_bufferNameList.size() == 0) { m_bufferNameList.erase(m_bufferNameList.begin());
autoDestroy(); if (m_bufferNameList.size() == 0) {
return; destroy();
} return;
m_worker->registerOnEvent(this, appl::WorkerCloseFile::eventCloseDone, s_closeDone);
}
}
void appl::WorkerCloseAllFile::onObjectRemove(ewol::EObject* _removeObject) {
if (_removeObject == m_worker) {
m_worker = NULL;
APPL_VERBOSE("AutoRemove After saving sub widget ...");
autoDestroy();
} else if (_removeObject == m_bufferManager) {
m_bufferManager = NULL;
autoDestroy();
} }
} }

View File

@@ -1,31 +1,26 @@
/** /** @file
* @author Edouard DUPIN * @author Edouard DUPIN
*
* @copyright 2010, Edouard DUPIN, all right reserved * @copyright 2010, Edouard DUPIN, all right reserved
*
* @license GPL v3 (see license file) * @license GPL v3 (see license file)
*/ */
#pragma once
#ifndef __WORKER_CLOSE_ALL_FILE_H__ #include <ewol/object/Worker.h>
#define __WORKER_CLOSE_ALL_FILE_H__
#include <appl/BufferManager.h> #include <appl/BufferManager.h>
#include <appl/Gui/WorkerCloseFile.h> #include <appl/Gui/WorkerCloseFile.h>
namespace appl { namespace appl {
class WorkerCloseAllFile : public ewol::EObject { class WorkerCloseAllFile : public ewol::object::Worker {
protected:
WorkerCloseAllFile();
void init();
public: public:
WorkerCloseAllFile(void); DECLARE_FACTORY(WorkerCloseAllFile);
virtual ~WorkerCloseAllFile(void); virtual ~WorkerCloseAllFile();
private: private:
std::vector<std::string> m_bufferNameList; std::vector<std::string> m_bufferNameList;
appl::WorkerCloseFile* m_worker; //! pop-up element that is open... ememory::SharedPtr<appl::WorkerCloseFile> m_worker; //! pop-up element that is open...
appl::BufferManager* m_bufferManager; //!< handle on the buffer manager ememory::SharedPtr<appl::BufferManager> m_bufferManager; //!< handle on the buffer manager
public: // derived function public: // callback function
virtual void onReceiveMessage(const ewol::EMessage& _msg); void onCallbackCloseDone();
virtual void onObjectRemove(ewol::EObject * _removeObject);
}; };
}; }
#endif

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