Skip to content

Commit d78efb1

Browse files
committed
Release 1.0.5
* Added memswap() function for vertical flipping support of the image. * Updated build scripts.
2 parents 02b9614 + 0d60558 commit d78efb1

File tree

20 files changed

+669
-89
lines changed

20 files changed

+669
-89
lines changed

.cproject

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
33
<storageModule moduleId="org.eclipse.cdt.core.settings">
44
<cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.705626182">
5-
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.705626182" moduleId="org.eclipse.cdt.core.settings" name="Debug Linux">
5+
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.705626182" moduleId="org.eclipse.cdt.core.settings" name="DebugLinux">
66
<externalSettings/>
77
<extensions>
88
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
@@ -14,7 +14,7 @@
1414
</extensions>
1515
</storageModule>
1616
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
17-
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.705626182" name="Debug Linux" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="cdt.managedbuild.config.gnu.exe.debug">
17+
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.705626182" name="DebugLinux" optionalBuildProperties="org.eclipse.cdt.docker.launcher.containerbuild.property.selectedvolumes=,org.eclipse.cdt.docker.launcher.containerbuild.property.volumes=" parent="cdt.managedbuild.config.gnu.exe.debug">
1818
<folderInfo id="cdt.managedbuild.config.gnu.exe.debug.705626182." name="/" resourcePath="">
1919
<toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.2068026832" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug">
2020
<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.171051444" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>
@@ -30,6 +30,9 @@
3030
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/include}&quot;"/>
3131
</option>
3232
<option id="gnu.cpp.compiler.option.dialect.std.1954407220" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.c++11" valueType="enumerated"/>
33+
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.1394487476" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
34+
<listOptionValue builtIn="false" value="LSP_IDE_DEBUG"/>
35+
</option>
3336
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.641013938" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
3437
</tool>
3538
<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.1381029469" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug">
@@ -40,10 +43,17 @@
4043
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/modules/lsp-test-fw/include}&quot;"/>
4144
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/include}&quot;"/>
4245
</option>
46+
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.preprocessor.def.symbols.1241691936" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
47+
<listOptionValue builtIn="false" value="LSP_IDE_DEBUG"/>
48+
</option>
4349
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.736688226" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
4450
</tool>
4551
<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.1514007439" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/>
4652
<tool id="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug.1664616527" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.exe.debug">
53+
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="true" id="gnu.cpp.link.option.paths.666971429" superClass="gnu.cpp.link.option.paths" useByScannerDiscovery="false" valueType="libPaths"/>
54+
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.link.option.libs.1060458037" superClass="gnu.cpp.link.option.libs" useByScannerDiscovery="false" valueType="libs">
55+
<listOptionValue builtIn="false" value="shlwapi"/>
56+
</option>
4757
<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1107016539" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">
4858
<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
4959
<additionalInput kind="additionalinput" paths="$(LIBS)"/>
@@ -84,11 +94,17 @@
8494
<option id="gnu.cpp.compiler.exe.release.option.optimization.level.984701037" name="Optimization Level" superClass="gnu.cpp.compiler.exe.release.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>
8595
<option defaultValue="gnu.cpp.compiler.debugging.level.none" id="gnu.cpp.compiler.exe.release.option.debugging.level.1265681203" name="Debug Level" superClass="gnu.cpp.compiler.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/>
8696
<option id="gnu.cpp.compiler.option.dialect.std.1749799414" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.c++11" valueType="enumerated"/>
97+
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.790840761" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
98+
<listOptionValue builtIn="false" value="LSP_IDE_DEBUG"/>
99+
</option>
87100
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1616599406" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
88101
</tool>
89102
<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.release.676858264" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.release">
90103
<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.exe.release.option.optimization.level.585862832" name="Optimization Level" superClass="gnu.c.compiler.exe.release.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>
91104
<option defaultValue="gnu.c.debugging.level.none" id="gnu.c.compiler.exe.release.option.debugging.level.2085962841" name="Debug Level" superClass="gnu.c.compiler.exe.release.option.debugging.level" useByScannerDiscovery="false" valueType="enumerated"/>
105+
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.preprocessor.def.symbols.473707831" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
106+
<listOptionValue builtIn="false" value="LSP_IDE_DEBUG"/>
107+
</option>
92108
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1200202128" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
93109
</tool>
94110
<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.release.804882748" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.release"/>
@@ -111,7 +127,7 @@
111127
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
112128
</cconfiguration>
113129
<cconfiguration id="cdt.managedbuild.config.gnu.exe.debug.705626182.1343390006">
114-
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.705626182.1343390006" moduleId="org.eclipse.cdt.core.settings" name="Debug Win">
130+
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.exe.debug.705626182.1343390006" moduleId="org.eclipse.cdt.core.settings" name="DebugWin">
115131
<externalSettings/>
116132
<extensions>
117133
<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>
@@ -123,7 +139,7 @@
123139
</extensions>
124140
</storageModule>
125141
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
126-
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.705626182.1343390006" name="Debug Win" optionalBuildProperties="" parent="cdt.managedbuild.config.gnu.exe.debug">
142+
<configuration artifactName="${ProjName}" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.exe" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.exe,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.exe.debug.705626182.1343390006" name="DebugWin" optionalBuildProperties="" parent="cdt.managedbuild.config.gnu.exe.debug">
127143
<folderInfo id="cdt.managedbuild.config.gnu.exe.debug.705626182.1343390006." name="/" resourcePath="">
128144
<toolChain id="cdt.managedbuild.toolchain.gnu.exe.debug.364246085" name="Linux GCC" superClass="cdt.managedbuild.toolchain.gnu.exe.debug">
129145
<targetPlatform id="cdt.managedbuild.target.gnu.platform.exe.debug.1400935511" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.exe.debug"/>
@@ -139,6 +155,9 @@
139155
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/include}&quot;"/>
140156
</option>
141157
<option id="gnu.cpp.compiler.option.dialect.std.2057861912" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.c++11" valueType="enumerated"/>
158+
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.cpp.compiler.option.preprocessor.def.146669855" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">
159+
<listOptionValue builtIn="false" value="LSP_IDE_DEBUG"/>
160+
</option>
142161
<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.292790526" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>
143162
</tool>
144163
<tool id="cdt.managedbuild.tool.gnu.c.compiler.exe.debug.2075476036" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.exe.debug">
@@ -149,6 +168,9 @@
149168
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/modules/lsp-test-fw/include}&quot;"/>
150169
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/include}&quot;"/>
151170
</option>
171+
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="gnu.c.compiler.option.preprocessor.def.symbols.990169030" name="Defined symbols (-D)" superClass="gnu.c.compiler.option.preprocessor.def.symbols" useByScannerDiscovery="false" valueType="definedSymbols">
172+
<listOptionValue builtIn="false" value="LSP_IDE_DEBUG"/>
173+
</option>
152174
<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1556748581" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
153175
</tool>
154176
<tool id="cdt.managedbuild.tool.gnu.c.linker.exe.debug.1121939403" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.exe.debug"/>
@@ -195,11 +217,13 @@
195217
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
196218
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
197219
<storageModule moduleId="refreshScope" versionNumber="2">
198-
<configuration configurationName="Debug">
220+
<configuration configurationName="Debug Linux"/>
221+
<configuration configurationName="Debug Win"/>
222+
<configuration configurationName="Release">
199223
<resource resourceType="PROJECT" workspacePath="/lsp-r3d-base-lib"/>
200224
</configuration>
201-
<configuration configurationName="Release">
225+
<configuration configurationName="Debug">
202226
<resource resourceType="PROJECT" workspacePath="/lsp-r3d-base-lib"/>
203227
</configuration>
204228
</storageModule>
205-
</cproject>
229+
</cproject>

.github/FUNDING.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
liberapay: sadko4u
2+
patreon: sadko4u
3+
custom:
4+
- https://www.blockchain.com/btc/address/15X3AfDRF3EshSLBoK8UfHAsFr2TQsH8pk
5+
- https://etherscan.io/address/0x079b24da78d78302cd3cfbb80c728cd554606cc6
6+
- https://www.bountysource.com/teams/lsp-plugins
7+
- https://paypal.me/sadko4u

.github/workflows/build.yml

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
---
2+
3+
name: Build on various Operating Systems
4+
5+
on:
6+
push:
7+
branches: [devel, master]
8+
pull_request:
9+
branches: [devel, master]
10+
11+
env:
12+
ARTIFACT: lsp-r3d-base-lib
13+
VALGRIND_ARGS: --error-exitcode=255 --leak-check=full --track-origins=yes --keep-debuginfo=yes --suppressions=.github/workflows/valgrind.supp
14+
15+
jobs:
16+
arch_linux:
17+
runs-on: ubuntu-latest
18+
container:
19+
image: archlinux:latest
20+
steps:
21+
- name: Add debug repositories
22+
run: |
23+
printf "[core-debug]\nInclude = /etc/pacman.d/mirrorlist\n[extra-debug]\nInclude = /etc/pacman.d/mirrorlist\n[community-debug]\nInclude = /etc/pacman.d/mirrorlist" >> /etc/pacman.conf
24+
printf 'Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch\n%s\n' "$(cat /etc/pacman.d/mirrorlist)" > /etc/pacman.d/mirrorlist
25+
- name: Install dependencies
26+
run: pacman --noconfirm -Syu base-devel glibc-debug git valgrind
27+
- uses: actions/checkout@v2
28+
- name: Configure project
29+
run: make config TEST=1
30+
- name: Fetch project dependencies
31+
run: make fetch
32+
- name: Build project
33+
run: make VERBOSE=1
34+
- name: Run unit tests
35+
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1
36+
- name: Run unit tests with memcheck
37+
run: |
38+
for test in $(.build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --list --suppress); do \
39+
echo "***** MEMCHECK $test *****"; \
40+
valgrind ${{env.VALGRIND_ARGS}} .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \
41+
done
42+
arch_linux_debug:
43+
runs-on: ubuntu-latest
44+
container:
45+
image: archlinux:latest
46+
steps:
47+
- name: Add debug repositories
48+
run: |
49+
printf "[core-debug]\nInclude = /etc/pacman.d/mirrorlist\n[extra-debug]\nInclude = /etc/pacman.d/mirrorlist\n[community-debug]\nInclude = /etc/pacman.d/mirrorlist" >> /etc/pacman.conf
50+
printf 'Server = https://geo.mirror.pkgbuild.com/$repo/os/$arch\n%s\n' "$(cat /etc/pacman.d/mirrorlist)" > /etc/pacman.d/mirrorlist
51+
- name: Install dependencies
52+
run: pacman --noconfirm -Syu base-devel glibc-debug git valgrind
53+
- uses: actions/checkout@v2
54+
- name: Configure project
55+
run: make config TEST=1 DEBUG=1
56+
- name: Fetch project dependencies
57+
run: make fetch
58+
- name: Build project
59+
run: make VERBOSE=1
60+
- name: Run unit tests
61+
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1
62+
- name: Run unit tests with memcheck
63+
run: |
64+
for test in $(.build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --list --suppress); do \
65+
echo "***** MEMCHECK $test *****"; \
66+
valgrind ${{env.VALGRIND_ARGS}} .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \
67+
done
68+
opensuse_leap:
69+
runs-on: ubuntu-latest
70+
container:
71+
image: opensuse/leap:latest
72+
steps:
73+
- name: Install dependencies
74+
run: zypper --non-interactive --no-gpg-checks in tar gzip git make valgrind gcc gcc-c++
75+
- uses: actions/checkout@v2
76+
- name: Configure project
77+
run: make config TEST=1
78+
- name: Fetch project dependencies
79+
run: make fetch
80+
- name: Build project
81+
run: make VERBOSE=1
82+
- name: Run unit tests
83+
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1
84+
- name: Run unit tests with memcheck
85+
run: |
86+
for test in $(.build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --list --suppress); do \
87+
echo "***** MEMCHECK $test *****"; \
88+
valgrind ${{env.VALGRIND_ARGS}} .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \
89+
done
90+
debian_stable:
91+
runs-on: ubuntu-latest
92+
container:
93+
image: debian:stable
94+
steps:
95+
- name: Update repositories
96+
run: apt-get update
97+
- name: Install dependencies
98+
run: apt-get -y install git make pkg-config valgrind gcc g++
99+
- uses: actions/checkout@v2
100+
- name: Configure project
101+
run: make config TEST=1
102+
- name: Fetch project dependencies
103+
run: make fetch
104+
- name: Build project
105+
run: make VERBOSE=1
106+
- name: Run unit tests
107+
run: .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1
108+
- name: Run unit tests with memcheck
109+
run: |
110+
for test in $(.build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --list --suppress); do \
111+
echo "***** MEMCHECK $test *****"; \
112+
valgrind ${{env.VALGRIND_ARGS}} .build/target/${{env.ARTIFACT}}/${{env.ARTIFACT}}-test utest --verbose --jobs 1 --nofork --debug $test; \
113+
done

.github/workflows/valgrind.supp

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
{
2+
libdl is full of leaks
3+
Memcheck:Leak
4+
...
5+
fun:_dl_open
6+
...
7+
}
8+
{
9+
libdl is full of leaks
10+
Memcheck:Leak
11+
...
12+
fun:_dl_close
13+
...
14+
}
15+
{
16+
libdl is full of leaks
17+
Memcheck:Leak
18+
...
19+
fun:_dl_init
20+
}
21+
{
22+
libdl is full of leaks
23+
Memcheck:Leak
24+
...
25+
fun:_dl_allocate_tls
26+
...
27+
}
28+
{
29+
libdl is full of leaks
30+
Memcheck:Leak
31+
...
32+
fun:call_init.part.0
33+
}
34+
{
35+
ignore XInitThreads
36+
Memcheck:Leak
37+
...
38+
fun:XInitThreads
39+
...
40+
}

.gitignore

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,12 @@
22
/.settings/*
33
/.build/*
44
/.test/*
5-
/Debug/*
6-
/Release/*
7-
/Debug/
8-
/Release
95
*.log
106
/gmon.out
117
**/*.gmon
128
*.core
139
/.config.mk
14-
/Debug Linux/
10+
/modules/
11+
/Release/
12+
/DebugLinux/
13+
/DebugWin/

CHANGELOG

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22
* RECENT CHANGES
33
*******************************************************************************
44

5+
=== 1.0.5 ===
6+
* Added memswap() function for vertical flipping support of the image.
7+
* Updated build scripts.
8+
59
=== 1.0.4 ===
610
* Updated build scripts.
711

0 commit comments

Comments
 (0)