Compare commits
No commits in common. "6d01f6f6e7d6032c66aae96402e079b5ef1163be" and "0b5c302aa2e4a25a1b196f1328225b288b48ca55" have entirely different histories.
6d01f6f6e7
...
0b5c302aa2
@ -24,12 +24,6 @@ macro(tactility_project_post project_name)
|
|||||||
idf_build_set_property(COMPILE_OPTIONS "-fno-omit-frame-pointer" APPEND)
|
idf_build_set_property(COMPILE_OPTIONS "-fno-omit-frame-pointer" APPEND)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Binds the app's references to its own symbols at link time. The C++ standard library's templates
|
|
||||||
# (e.g. std::shared_ptr internals) keep default visibility despite -fvisibility=hidden, so without this
|
|
||||||
# the linker leaves symbol relocations for them, which the ELF loader only resolves against the
|
|
||||||
# firmware's exported symbols. On RISC-V that fails to load the app with "Can't find common <symbol>".
|
|
||||||
idf_build_set_property(COMPILE_OPTIONS "-Wl,-Bsymbolic" APPEND)
|
|
||||||
|
|
||||||
# ESP-IDF's own <sys/ioctl.h> (esp_libc/platform_include) is found before app-module's, which adds
|
# ESP-IDF's own <sys/ioctl.h> (esp_libc/platform_include) is found before app-module's, which adds
|
||||||
# the terminal ioctls (TIOCGWINSZ) Tactility's ioctl() supports for app fds.
|
# the terminal ioctls (TIOCGWINSZ) Tactility's ioctl() supports for app fds.
|
||||||
# C and C++ only: assembly sources can't include a C header.
|
# C and C++ only: assembly sources can't include a C header.
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.usbHostEnabled=true
|
|||||||
storage.userDataLocation=Internal
|
storage.userDataLocation=Internal
|
||||||
|
|
||||||
display.size=5"
|
display.size=5"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=187
|
display.dpi=187
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.9"
|
display.size=2.9"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=139
|
display.dpi=139
|
||||||
|
|
||||||
lvgl.colorDepth=8
|
lvgl.colorDepth=8
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.2"
|
display.size=2.2"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=182
|
display.dpi=182
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.4"
|
display.size=2.4"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=167
|
display.dpi=167
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.4"
|
display.size=2.4"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=167
|
display.dpi=167
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.8"
|
display.size=2.8"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=143
|
display.dpi=143
|
||||||
|
|
||||||
touch.calibrationSupported=true
|
touch.calibrationSupported=true
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.8"
|
display.size=2.8"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=143
|
display.dpi=143
|
||||||
|
|
||||||
touch.calibrationSupported=true
|
touch.calibrationSupported=true
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=3.2"
|
display.size=3.2"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=125
|
display.dpi=125
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=3.5"
|
display.size=3.5"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=165
|
display.dpi=165
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -13,6 +13,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=4"
|
display.size=4"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=170
|
display.dpi=170
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=4.3"
|
display.size=4.3"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=217
|
display.dpi=217
|
||||||
|
|
||||||
cdn.infoMessage=
|
cdn.infoMessage=
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.8"
|
display.size=2.8"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=143
|
display.dpi=143
|
||||||
|
|
||||||
touch.calibrationSupported=true
|
touch.calibrationSupported=true
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.8"
|
display.size=2.8"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=125
|
display.dpi=125
|
||||||
|
|
||||||
touch.calibrationSupported=true
|
touch.calibrationSupported=true
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.8"
|
display.size=2.8"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=143
|
display.dpi=143
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=3.5"
|
display.size=3.5"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=165
|
display.dpi=165
|
||||||
|
|
||||||
cdn.warningMessage=This device has display driver and memory issues. App Hub doesn't work.
|
cdn.warningMessage=This device has display driver and memory issues. App Hub doesn't work.
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=5"
|
display.size=5"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=187
|
display.dpi=187
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.8"
|
display.size=2.8"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=143
|
display.dpi=143
|
||||||
|
|
||||||
touch.calibrationSupported=true
|
touch.calibrationSupported=true
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=3.5"
|
display.size=3.5"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=165
|
display.dpi=165
|
||||||
|
|
||||||
touch.calibrationSupported=true
|
touch.calibrationSupported=true
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=5.0"
|
display.size=5.0"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=187
|
display.dpi=187
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -13,6 +13,7 @@ hardware.tinyUsbMsc=true
|
|||||||
hardware.bluetooth=true
|
hardware.bluetooth=true
|
||||||
|
|
||||||
display.size=2.8"
|
display.size=2.8"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=143
|
display.dpi=143
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -14,6 +14,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=7"
|
display.size=7"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=187
|
display.dpi=187
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.8"
|
display.size=2.8"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=143
|
display.dpi=143
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -14,6 +14,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=5"
|
display.size=5"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=187
|
display.dpi=187
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=Internal
|
storage.userDataLocation=Internal
|
||||||
|
|
||||||
display.size=0.96"
|
display.size=0.96"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=149
|
display.dpi=149
|
||||||
|
|
||||||
cdn.infoMessage=Due to the small size of the screen, the icons don't render properly.
|
cdn.infoMessage=Due to the small size of the screen, the icons don't render properly.
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=Internal
|
storage.userDataLocation=Internal
|
||||||
|
|
||||||
display.size=4.7"
|
display.size=4.7"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=235
|
display.dpi=235
|
||||||
|
|
||||||
lvgl.colorDepth=8
|
lvgl.colorDepth=8
|
||||||
|
|||||||
@ -19,6 +19,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=Internal
|
storage.userDataLocation=Internal
|
||||||
|
|
||||||
display.size=3.1"
|
display.size=3.1"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=128
|
display.dpi=128
|
||||||
|
|
||||||
lvgl.colorDepth=8
|
lvgl.colorDepth=8
|
||||||
|
|||||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.8"
|
display.size=2.8"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=143
|
display.dpi=143
|
||||||
|
|
||||||
cdn.infoMessage=To put the device into bootloader mode: <br/>1. Press the trackball and then the reset button at the same time,<br/>2. Let go of the reset button, then the trackball.<br/><br/>When this website reports that flashing is finished, you likely have to press the reset button.
|
cdn.infoMessage=To put the device into bootloader mode: <br/>1. Press the trackball and then the reset button at the same time,<br/>2. Let go of the reset button, then the trackball.<br/><br/>When this website reports that flashing is finished, you likely have to press the reset button.
|
||||||
|
|||||||
@ -18,6 +18,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=3.1"
|
display.size=3.1"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=128
|
display.dpi=128
|
||||||
|
|
||||||
lvgl.colorDepth=8
|
lvgl.colorDepth=8
|
||||||
|
|||||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.8"
|
display.size=2.8"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=143
|
display.dpi=143
|
||||||
|
|
||||||
cdn.infoMessage=To put the device into bootloader mode: <br/>1. Press the trackball and then the reset button at the same time,<br/>2. Let go of the reset button, then the trackball.<br/><br/>When this website reports that flashing is finished, you likely have to press the reset button.
|
cdn.infoMessage=To put the device into bootloader mode: <br/>1. Press the trackball and then the reset button at the same time,<br/>2. Let go of the reset button, then the trackball.<br/><br/>When this website reports that flashing is finished, you likely have to press the reset button.
|
||||||
|
|||||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=Internal
|
storage.userDataLocation=Internal
|
||||||
|
|
||||||
display.size=1.9"
|
display.size=1.9"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=191
|
display.dpi=191
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -13,6 +13,7 @@ hardware.esptoolFlashFreq=80M
|
|||||||
storage.userDataLocation=Internal
|
storage.userDataLocation=Internal
|
||||||
|
|
||||||
display.size=1.14"
|
display.size=1.14"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=242
|
display.dpi=242
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=0.96"
|
display.size=0.96"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=186
|
display.dpi=186
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=1.9"
|
display.size=1.9"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=191
|
display.dpi=191
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.8"
|
display.size=2.8"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=125
|
display.dpi=125
|
||||||
|
|
||||||
touch.calibrationSupported=true
|
touch.calibrationSupported=true
|
||||||
|
|||||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2.33"
|
display.size=2.33"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=227
|
display.dpi=227
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -13,6 +13,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=1.14"
|
display.size=1.14"
|
||||||
|
display.shape=rectangle
|
||||||
# TODO: dps is actually 242, but this breaks UI (button selection becomes invisible and switch visibility is reduced)
|
# TODO: dps is actually 242, but this breaks UI (button selection becomes invisible and switch visibility is reduced)
|
||||||
display.dpi=139
|
display.dpi=139
|
||||||
|
|
||||||
|
|||||||
@ -13,6 +13,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=1.14"
|
display.size=1.14"
|
||||||
|
display.shape=rectangle
|
||||||
# TODO: dps is actually 242, but this breaks UI (button selection becomes invisible and switch visibility is reduced)
|
# TODO: dps is actually 242, but this breaks UI (button selection becomes invisible and switch visibility is reduced)
|
||||||
display.dpi=139
|
display.dpi=139
|
||||||
|
|
||||||
|
|||||||
@ -13,6 +13,7 @@ hardware.esptoolFlashFreq=80M
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2"
|
display.size=2"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=200
|
display.dpi=200
|
||||||
|
|
||||||
cdn.warningMessage=This board implementation concerns the original Core2 hardware and **not** the v1.1 variant
|
cdn.warningMessage=This board implementation concerns the original Core2 hardware and **not** the v1.1 variant
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=Internal
|
storage.userDataLocation=Internal
|
||||||
|
|
||||||
display.size=2"
|
display.size=2"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=200
|
display.dpi=200
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=4.7"
|
display.size=4.7"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=235
|
display.dpi=235
|
||||||
|
|
||||||
lvgl.colorDepth=8
|
lvgl.colorDepth=8
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=2"
|
display.size=2"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=200
|
display.dpi=200
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -13,6 +13,7 @@ hardware.esptoolFlashFreq=80M
|
|||||||
storage.userDataLocation=Internal
|
storage.userDataLocation=Internal
|
||||||
|
|
||||||
display.size=1.14"
|
display.size=1.14"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=242
|
display.dpi=242
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=Internal
|
storage.userDataLocation=Internal
|
||||||
|
|
||||||
display.size=1.14"
|
display.size=1.14"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=242
|
display.dpi=242
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -21,6 +21,7 @@ storage.userDataLocation=SD
|
|||||||
dependencies.useDeprecatedHal=false
|
dependencies.useDeprecatedHal=false
|
||||||
|
|
||||||
display.size=5"
|
display.size=5"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=294
|
display.dpi=294
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -18,6 +18,7 @@ touch.calibrationSupported=true
|
|||||||
touch.calibrationRequired=false
|
touch.calibrationRequired=false
|
||||||
|
|
||||||
display.size=7"
|
display.size=7"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=117
|
display.dpi=117
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -13,6 +13,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=3.5"
|
display.size=3.5"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=165
|
display.dpi=165
|
||||||
|
|
||||||
touch.calibrationSupported=true
|
touch.calibrationSupported=true
|
||||||
|
|||||||
@ -18,6 +18,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=1.14"
|
display.size=1.14"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=143
|
display.dpi=143
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -17,6 +17,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=1.3"
|
display.size=1.3"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=261
|
display.dpi=261
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -18,6 +18,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=Internal
|
storage.userDataLocation=Internal
|
||||||
|
|
||||||
display.size=1.28"
|
display.size=1.28"
|
||||||
|
display.shape=circle
|
||||||
display.dpi=265
|
display.dpi=265
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -84,7 +84,6 @@
|
|||||||
compatible = "galaxycore,gc9a01";
|
compatible = "galaxycore,gc9a01";
|
||||||
horizontal-resolution = <240>;
|
horizontal-resolution = <240>;
|
||||||
vertical-resolution = <240>;
|
vertical-resolution = <240>;
|
||||||
shape = <DISPLAY_SHAPE_CIRCLE>;
|
|
||||||
mirror-y;
|
mirror-y;
|
||||||
invert-color;
|
invert-color;
|
||||||
bgr-order;
|
bgr-order;
|
||||||
|
|||||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=1.47"
|
display.size=1.47"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=247
|
display.dpi=247
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -77,9 +77,6 @@
|
|||||||
compatible = "jadard,jd9853";
|
compatible = "jadard,jd9853";
|
||||||
horizontal-resolution = <172>;
|
horizontal-resolution = <172>;
|
||||||
vertical-resolution = <320>;
|
vertical-resolution = <320>;
|
||||||
// The panel has rounded corners. The radius is estimated, as it isn't specified.
|
|
||||||
shape = <DISPLAY_SHAPE_ROUNDED>;
|
|
||||||
corner-radius = <40>;
|
|
||||||
gap-x = <34>;
|
gap-x = <34>;
|
||||||
invert-color;
|
invert-color;
|
||||||
pin-dc = <&gpio0 45 GPIO_FLAG_NONE>;
|
pin-dc = <&gpio0 45 GPIO_FLAG_NONE>;
|
||||||
|
|||||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=4.3"
|
display.size=4.3"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=217
|
display.dpi=217
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
|||||||
storage.userDataLocation=SD
|
storage.userDataLocation=SD
|
||||||
|
|
||||||
display.size=3.5"
|
display.size=3.5"
|
||||||
|
display.shape=rectangle
|
||||||
display.dpi=165
|
display.dpi=165
|
||||||
|
|
||||||
lvgl.colorDepth=16
|
lvgl.colorDepth=16
|
||||||
|
|||||||
BIN
Documentation/pics/screenshot-AppList.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 3.1 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 5.4 KiB |
|
Before Width: | Height: | Size: 2.0 KiB |
BIN
Documentation/pics/tactility-devices.webp
Normal file
|
After Width: | Height: | Size: 19 KiB |
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -2,8 +2,6 @@ description: Galaxycore GC9A01 round display panel
|
|||||||
|
|
||||||
bus: spi
|
bus: spi
|
||||||
|
|
||||||
include: ["display.yaml"]
|
|
||||||
|
|
||||||
compatible: "galaxycore,gc9a01"
|
compatible: "galaxycore,gc9a01"
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
|
|||||||
@ -9,13 +9,9 @@ extern "C" {
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <tactility/device.h>
|
#include <tactility/device.h>
|
||||||
#include <tactility/drivers/display.h>
|
|
||||||
#include <tactility/drivers/gpio.h>
|
#include <tactility/drivers/gpio.h>
|
||||||
|
|
||||||
struct Gc9a01Config {
|
struct Gc9a01Config {
|
||||||
// From display.yaml: a DisplayShapeType value and the corner radius for rounded displays
|
|
||||||
uint8_t shape;
|
|
||||||
uint16_t corner_radius;
|
|
||||||
uint16_t horizontal_resolution;
|
uint16_t horizontal_resolution;
|
||||||
uint16_t vertical_resolution;
|
uint16_t vertical_resolution;
|
||||||
int32_t gap_x;
|
int32_t gap_x;
|
||||||
|
|||||||
@ -316,11 +316,6 @@ static error_t gc9a01_get_backlight(Device* device, Device** backlight) {
|
|||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
static void gc9a01_get_shape(Device* device, DisplayShape* shape) {
|
|
||||||
const auto* config = GET_CONFIG(device);
|
|
||||||
*shape = { .shape = config->shape, .corner_radius = config->corner_radius };
|
|
||||||
}
|
|
||||||
|
|
||||||
static const DisplayApi gc9a01_display_api = {
|
static const DisplayApi gc9a01_display_api = {
|
||||||
.capabilities = DISPLAY_CAPABILITY_CAP_MIRROR | DISPLAY_CAPABILITY_CAP_SWAP_XY |
|
.capabilities = DISPLAY_CAPABILITY_CAP_MIRROR | DISPLAY_CAPABILITY_CAP_SWAP_XY |
|
||||||
DISPLAY_CAPABILITY_CAP_SET_GAP | DISPLAY_CAPABILITY_INVERT_COLOR | DISPLAY_CAPABILITY_ON_OFF |
|
DISPLAY_CAPABILITY_CAP_SET_GAP | DISPLAY_CAPABILITY_INVERT_COLOR | DISPLAY_CAPABILITY_ON_OFF |
|
||||||
@ -348,7 +343,6 @@ static const DisplayApi gc9a01_display_api = {
|
|||||||
.get_frame_buffer_count = nullptr,
|
.get_frame_buffer_count = nullptr,
|
||||||
.get_backlight = gc9a01_get_backlight,
|
.get_backlight = gc9a01_get_backlight,
|
||||||
.has_capability = nullptr,
|
.has_capability = nullptr,
|
||||||
.get_shape = gc9a01_get_shape,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Driver gc9a01_driver = {
|
Driver gc9a01_driver = {
|
||||||
|
|||||||
@ -2,8 +2,6 @@ description: Jadard JD9853 display panel
|
|||||||
|
|
||||||
bus: spi
|
bus: spi
|
||||||
|
|
||||||
include: ["display.yaml"]
|
|
||||||
|
|
||||||
compatible: "jadard,jd9853"
|
compatible: "jadard,jd9853"
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
|
|||||||
@ -9,13 +9,9 @@ extern "C" {
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include <tactility/device.h>
|
#include <tactility/device.h>
|
||||||
#include <tactility/drivers/display.h>
|
|
||||||
#include <tactility/drivers/gpio.h>
|
#include <tactility/drivers/gpio.h>
|
||||||
|
|
||||||
struct Jd9853Config {
|
struct Jd9853Config {
|
||||||
// From display.yaml: a DisplayShapeType value and the corner radius for rounded displays
|
|
||||||
uint8_t shape;
|
|
||||||
uint16_t corner_radius;
|
|
||||||
uint16_t horizontal_resolution;
|
uint16_t horizontal_resolution;
|
||||||
uint16_t vertical_resolution;
|
uint16_t vertical_resolution;
|
||||||
int32_t gap_x;
|
int32_t gap_x;
|
||||||
|
|||||||
@ -329,11 +329,6 @@ static error_t jd9853_get_backlight(Device* device, Device** backlight) {
|
|||||||
|
|
||||||
// endregion
|
// endregion
|
||||||
|
|
||||||
static void jd9853_get_shape(Device* device, DisplayShape* shape) {
|
|
||||||
const auto* config = GET_CONFIG(device);
|
|
||||||
*shape = { .shape = config->shape, .corner_radius = config->corner_radius };
|
|
||||||
}
|
|
||||||
|
|
||||||
static const DisplayApi jd9853_display_api = {
|
static const DisplayApi jd9853_display_api = {
|
||||||
.capabilities = DISPLAY_CAPABILITY_CAP_MIRROR | DISPLAY_CAPABILITY_CAP_SWAP_XY |
|
.capabilities = DISPLAY_CAPABILITY_CAP_MIRROR | DISPLAY_CAPABILITY_CAP_SWAP_XY |
|
||||||
DISPLAY_CAPABILITY_CAP_SET_GAP | DISPLAY_CAPABILITY_INVERT_COLOR | DISPLAY_CAPABILITY_ON_OFF |
|
DISPLAY_CAPABILITY_CAP_SET_GAP | DISPLAY_CAPABILITY_INVERT_COLOR | DISPLAY_CAPABILITY_ON_OFF |
|
||||||
@ -361,7 +356,6 @@ static const DisplayApi jd9853_display_api = {
|
|||||||
.get_frame_buffer_count = nullptr,
|
.get_frame_buffer_count = nullptr,
|
||||||
.get_backlight = jd9853_get_backlight,
|
.get_backlight = jd9853_get_backlight,
|
||||||
.has_capability = nullptr,
|
.has_capability = nullptr,
|
||||||
.get_shape = jd9853_get_shape,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Driver jd9853_driver = {
|
Driver jd9853_driver = {
|
||||||
|
|||||||
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -13,7 +13,7 @@ These applications are not part of the Tactility operating system's main firmwar
|
|||||||
|
|
||||||
The intentions behind picking the licenses for the subprojects:
|
The intentions behind picking the licenses for the subprojects:
|
||||||
|
|
||||||
1. Forks of the entire Tactility project required to be open source as: GPL v3.0 applies to the main firmware project (see `Tactility/`).
|
1. Forks of the entire Tactility project required to be open source as: GPL v3.0 applies to the main firmware projects (see `Firmware/` and `Tactility/`).
|
||||||
2. It should be possible to make closed source external applications using TactilitySDK and the libraries it includes (it must exclude software with a GPL license).
|
2. It should be possible to make closed source external applications using TactilitySDK and the libraries it includes (it must exclude software with a GPL license).
|
||||||
3. It should be possible to make closed source forks that only contain TactilityKernel, the platform implementations (`Platforms/*`) and most of the device and driver implementations. As few as possible driver and device combinations should prevent this.
|
3. It should be possible to make closed source forks that only contain TactilityKernel, the platform implementations (`Platforms/*`) and most of the device and driver implementations. As few as possible driver and device combinations should prevent this.
|
||||||
|
|
||||||
@ -30,12 +30,12 @@ The license texts that are relevant to this document:
|
|||||||
|
|
||||||
**IMPORTANT:** This document may have inaccuracies. It mainly exists to create awareness about license differences.
|
**IMPORTANT:** This document may have inaccuracies. It mainly exists to create awareness about license differences.
|
||||||
|
|
||||||
The top-level project `Tactility/` is licensed under `GPL v3.0`.
|
The top-level projects `Firmware/` and `Tactility/` are licensed under `GPL v3.0`.
|
||||||
|
|
||||||
Most devices are licensed with `Apache License v2.0` while some are implemented as `GPL v3.0` until author consent is given to change the license.
|
Most devices are licensed with `Apache License v2.0` while some are implemented as `GPL v3.0` until author consent is given to change the license.
|
||||||
New device implementations should be licensed under `Apache License v2.0`.
|
New device implementations should be licensed under `Apache License v2.0`.
|
||||||
|
|
||||||
Most drivers have an `Apache License v2.0`, with exceptions such as `Drivers/gps-meshtastic-module/`.
|
Most drivers have an `Apache License v2.0`, with exceptions such as `Drivers/gps-generic-module/`.
|
||||||
Licensing may also differ for subprojects intended for use in external applications.
|
Licensing may also differ for subprojects intended for use in external applications.
|
||||||
|
|
||||||
Driver subprojects aren't generally used directly in external app projects, but if they are, make sure to check their licenses.
|
Driver subprojects aren't generally used directly in external app projects, but if they are, make sure to check their licenses.
|
||||||
@ -65,6 +65,7 @@ Below is an overview of the licenses of some of the subprojects.
|
|||||||
| Project | License |
|
| Project | License |
|
||||||
|--------------------|-------------------------|
|
|--------------------|-------------------------|
|
||||||
| Tactility | GNU Public License v3.0 |
|
| Tactility | GNU Public License v3.0 |
|
||||||
|
| TactilityC | Apache License v2.0 |
|
||||||
| TactilityFreeRTOS | Apache License v2.0 |
|
| TactilityFreeRTOS | Apache License v2.0 |
|
||||||
| TactilityKernel | Apache License v2.0 |
|
| TactilityKernel | Apache License v2.0 |
|
||||||
| Tests | (varies) |
|
| Tests | (varies) |
|
||||||
|
|||||||
@ -28,7 +28,7 @@ enum AppCategory {
|
|||||||
|
|
||||||
/** Bit flags for AppManifest::flags. */
|
/** Bit flags for AppManifest::flags. */
|
||||||
enum AppManifestFlags {
|
enum AppManifestFlags {
|
||||||
/** Excluded from generic app-browsing UIs (e.g. Launcher, Settings) */
|
/** Excluded from generic app-browsing UIs (e.g. AppList, Settings) */
|
||||||
APP_MANIFEST_FLAG_HIDDEN = 1 << 0,
|
APP_MANIFEST_FLAG_HIDDEN = 1 << 0,
|
||||||
/** No window-manager dependency. Safe to start from a context with no GUI available. */
|
/** No window-manager dependency. Safe to start from a context with no GUI available. */
|
||||||
APP_MANIFEST_FLAG_HEADLESS = 1 << 1,
|
APP_MANIFEST_FLAG_HEADLESS = 1 << 1,
|
||||||
|
|||||||
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -1,195 +0,0 @@
|
|||||||
Apache License
|
|
||||||
==============
|
|
||||||
|
|
||||||
_Version 2.0, January 2004_
|
|
||||||
_<<http://www.apache.org/licenses/>>_
|
|
||||||
|
|
||||||
### Terms and Conditions for use, reproduction, and distribution
|
|
||||||
|
|
||||||
#### 1. Definitions
|
|
||||||
|
|
||||||
“License” shall mean the terms and conditions for use, reproduction, and
|
|
||||||
distribution as defined by Sections 1 through 9 of this document.
|
|
||||||
|
|
||||||
“Licensor” shall mean the copyright owner or entity authorized by the copyright
|
|
||||||
owner that is granting the License.
|
|
||||||
|
|
||||||
“Legal Entity” shall mean the union of the acting entity and all other entities
|
|
||||||
that control, are controlled by, or are under common control with that entity.
|
|
||||||
For the purposes of this definition, “control” means **(i)** the power, direct or
|
|
||||||
indirect, to cause the direction or management of such entity, whether by
|
|
||||||
contract or otherwise, or **(ii)** ownership of fifty percent (50%) or more of the
|
|
||||||
outstanding shares, or **(iii)** beneficial ownership of such entity.
|
|
||||||
|
|
||||||
“You” (or “Your”) shall mean an individual or Legal Entity exercising
|
|
||||||
permissions granted by this License.
|
|
||||||
|
|
||||||
“Source” form shall mean the preferred form for making modifications, including
|
|
||||||
but not limited to software source code, documentation source, and configuration
|
|
||||||
files.
|
|
||||||
|
|
||||||
“Object” form shall mean any form resulting from mechanical transformation or
|
|
||||||
translation of a Source form, including but not limited to compiled object code,
|
|
||||||
generated documentation, and conversions to other media types.
|
|
||||||
|
|
||||||
“Work” shall mean the work of authorship, whether in Source or Object form, made
|
|
||||||
available under the License, as indicated by a copyright notice that is included
|
|
||||||
in or attached to the work (an example is provided in the Appendix below).
|
|
||||||
|
|
||||||
“Derivative Works” shall mean any work, whether in Source or Object form, that
|
|
||||||
is based on (or derived from) the Work and for which the editorial revisions,
|
|
||||||
annotations, elaborations, or other modifications represent, as a whole, an
|
|
||||||
original work of authorship. For the purposes of this License, Derivative Works
|
|
||||||
shall not include works that remain separable from, or merely link (or bind by
|
|
||||||
name) to the interfaces of, the Work and Derivative Works thereof.
|
|
||||||
|
|
||||||
“Contribution” shall mean any work of authorship, including the original version
|
|
||||||
of the Work and any modifications or additions to that Work or Derivative Works
|
|
||||||
thereof, that is intentionally submitted to Licensor for inclusion in the Work
|
|
||||||
by the copyright owner or by an individual or Legal Entity authorized to submit
|
|
||||||
on behalf of the copyright owner. For the purposes of this definition,
|
|
||||||
“submitted” means any form of electronic, verbal, or written communication sent
|
|
||||||
to the Licensor or its representatives, including but not limited to
|
|
||||||
communication on electronic mailing lists, source code control systems, and
|
|
||||||
issue tracking systems that are managed by, or on behalf of, the Licensor for
|
|
||||||
the purpose of discussing and improving the Work, but excluding communication
|
|
||||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
|
||||||
owner as “Not a Contribution.”
|
|
||||||
|
|
||||||
“Contributor” shall mean Licensor and any individual or Legal Entity on behalf
|
|
||||||
of whom a Contribution has been received by Licensor and subsequently
|
|
||||||
incorporated within the Work.
|
|
||||||
|
|
||||||
#### 2. Grant of Copyright License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable copyright license to reproduce, prepare Derivative Works of,
|
|
||||||
publicly display, publicly perform, sublicense, and distribute the Work and such
|
|
||||||
Derivative Works in Source or Object form.
|
|
||||||
|
|
||||||
#### 3. Grant of Patent License
|
|
||||||
|
|
||||||
Subject to the terms and conditions of this License, each Contributor hereby
|
|
||||||
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
|
||||||
irrevocable (except as stated in this section) patent license to make, have
|
|
||||||
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
|
|
||||||
such license applies only to those patent claims licensable by such Contributor
|
|
||||||
that are necessarily infringed by their Contribution(s) alone or by combination
|
|
||||||
of their Contribution(s) with the Work to which such Contribution(s) was
|
|
||||||
submitted. If You institute patent litigation against any entity (including a
|
|
||||||
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
|
|
||||||
Contribution incorporated within the Work constitutes direct or contributory
|
|
||||||
patent infringement, then any patent licenses granted to You under this License
|
|
||||||
for that Work shall terminate as of the date such litigation is filed.
|
|
||||||
|
|
||||||
#### 4. Redistribution
|
|
||||||
|
|
||||||
You may reproduce and distribute copies of the Work or Derivative Works thereof
|
|
||||||
in any medium, with or without modifications, and in Source or Object form,
|
|
||||||
provided that You meet the following conditions:
|
|
||||||
|
|
||||||
* **(a)** You must give any other recipients of the Work or Derivative Works a copy of
|
|
||||||
this License; and
|
|
||||||
* **(b)** You must cause any modified files to carry prominent notices stating that You
|
|
||||||
changed the files; and
|
|
||||||
* **(c)** You must retain, in the Source form of any Derivative Works that You distribute,
|
|
||||||
all copyright, patent, trademark, and attribution notices from the Source form
|
|
||||||
of the Work, excluding those notices that do not pertain to any part of the
|
|
||||||
Derivative Works; and
|
|
||||||
* **(d)** If the Work includes a “NOTICE” text file as part of its distribution, then any
|
|
||||||
Derivative Works that You distribute must include a readable copy of the
|
|
||||||
attribution notices contained within such NOTICE file, excluding those notices
|
|
||||||
that do not pertain to any part of the Derivative Works, in at least one of the
|
|
||||||
following places: within a NOTICE text file distributed as part of the
|
|
||||||
Derivative Works; within the Source form or documentation, if provided along
|
|
||||||
with the Derivative Works; or, within a display generated by the Derivative
|
|
||||||
Works, if and wherever such third-party notices normally appear. The contents of
|
|
||||||
the NOTICE file are for informational purposes only and do not modify the
|
|
||||||
License. You may add Your own attribution notices within Derivative Works that
|
|
||||||
You distribute, alongside or as an addendum to the NOTICE text from the Work,
|
|
||||||
provided that such additional attribution notices cannot be construed as
|
|
||||||
modifying the License.
|
|
||||||
|
|
||||||
You may add Your own copyright statement to Your modifications and may provide
|
|
||||||
additional or different license terms and conditions for use, reproduction, or
|
|
||||||
distribution of Your modifications, or for any such Derivative Works as a whole,
|
|
||||||
provided Your use, reproduction, and distribution of the Work otherwise complies
|
|
||||||
with the conditions stated in this License.
|
|
||||||
|
|
||||||
#### 5. Submission of Contributions
|
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted
|
|
||||||
for inclusion in the Work by You to the Licensor shall be under the terms and
|
|
||||||
conditions of this License, without any additional terms or conditions.
|
|
||||||
Notwithstanding the above, nothing herein shall supersede or modify the terms of
|
|
||||||
any separate license agreement you may have executed with Licensor regarding
|
|
||||||
such Contributions.
|
|
||||||
|
|
||||||
#### 6. Trademarks
|
|
||||||
|
|
||||||
This License does not grant permission to use the trade names, trademarks,
|
|
||||||
service marks, or product names of the Licensor, except as required for
|
|
||||||
reasonable and customary use in describing the origin of the Work and
|
|
||||||
reproducing the content of the NOTICE file.
|
|
||||||
|
|
||||||
#### 7. Disclaimer of Warranty
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, Licensor provides the
|
|
||||||
Work (and each Contributor provides its Contributions) on an “AS IS” BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
|
|
||||||
including, without limitation, any warranties or conditions of TITLE,
|
|
||||||
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
|
|
||||||
solely responsible for determining the appropriateness of using or
|
|
||||||
redistributing the Work and assume any risks associated with Your exercise of
|
|
||||||
permissions under this License.
|
|
||||||
|
|
||||||
#### 8. Limitation of Liability
|
|
||||||
|
|
||||||
In no event and under no legal theory, whether in tort (including negligence),
|
|
||||||
contract, or otherwise, unless required by applicable law (such as deliberate
|
|
||||||
and grossly negligent acts) or agreed to in writing, shall any Contributor be
|
|
||||||
liable to You for damages, including any direct, indirect, special, incidental,
|
|
||||||
or consequential damages of any character arising as a result of this License or
|
|
||||||
out of the use or inability to use the Work (including but not limited to
|
|
||||||
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
|
|
||||||
any and all other commercial damages or losses), even if such Contributor has
|
|
||||||
been advised of the possibility of such damages.
|
|
||||||
|
|
||||||
#### 9. Accepting Warranty or Additional Liability
|
|
||||||
|
|
||||||
While redistributing the Work or Derivative Works thereof, You may choose to
|
|
||||||
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
|
|
||||||
other liability obligations and/or rights consistent with this License. However,
|
|
||||||
in accepting such obligations, You may act only on Your own behalf and on Your
|
|
||||||
sole responsibility, not on behalf of any other Contributor, and only if You
|
|
||||||
agree to indemnify, defend, and hold each Contributor harmless for any liability
|
|
||||||
incurred by, or claims asserted against, such Contributor by reason of your
|
|
||||||
accepting any such warranty or additional liability.
|
|
||||||
|
|
||||||
_END OF TERMS AND CONDITIONS_
|
|
||||||
|
|
||||||
### APPENDIX: How to apply the Apache License to your work
|
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following boilerplate
|
|
||||||
notice, with the fields enclosed by brackets `[]` replaced with your own
|
|
||||||
identifying information. (Don't include the brackets!) The text should be
|
|
||||||
enclosed in the appropriate comment syntax for the file format. We also
|
|
||||||
recommend that a file or class name and description of purpose be included on
|
|
||||||
the same “printed page” as the copyright notice for easier identification within
|
|
||||||
third-party archives.
|
|
||||||
|
|
||||||
Copyright [yyyy] [name of copyright owner]
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License.
|
|
||||||
|
|
||||||
@ -183,7 +183,6 @@ shared_symbol_code_point_names = [
|
|||||||
statusbar_symbol_code_point_names = [
|
statusbar_symbol_code_point_names = [
|
||||||
# Location tracking
|
# Location tracking
|
||||||
"location_on",
|
"location_on",
|
||||||
"location_off",
|
|
||||||
# Development server
|
# Development server
|
||||||
"cloud",
|
"cloud",
|
||||||
# Low on available memory
|
# Low on available memory
|
||||||
|
|||||||
@ -17,8 +17,8 @@ extern "C" {
|
|||||||
* @brief Trackball operating mode.
|
* @brief Trackball operating mode.
|
||||||
*/
|
*/
|
||||||
enum LvglTrackballMode {
|
enum LvglTrackballMode {
|
||||||
/** Navigation with arrow keys, and the button as the enter key. No cursor is shown. */
|
/** Navigation via enc_diff (scroll wheel behavior). No cursor is shown. */
|
||||||
LVGL_TRACKBALL_MODE_KEYS,
|
LVGL_TRACKBALL_MODE_ENCODER,
|
||||||
/** Mouse cursor via point.x/point.y. A cursor is shown if an image was set via
|
/** Mouse cursor via point.x/point.y. A cursor is shown if an image was set via
|
||||||
* lvgl_trackball_set_cursor_image(). */
|
* lvgl_trackball_set_cursor_image(). */
|
||||||
LVGL_TRACKBALL_MODE_POINTER
|
LVGL_TRACKBALL_MODE_POINTER
|
||||||
@ -33,8 +33,8 @@ struct LvglTrackballSettings {
|
|||||||
/** When false, movement and button presses are drained from the device and discarded:
|
/** When false, movement and button presses are drained from the device and discarded:
|
||||||
* the indev reports no movement and stays released. */
|
* the indev reports no movement and stays released. */
|
||||||
bool enabled;
|
bool enabled;
|
||||||
/** Keys mode: arrow key presses per raw trackball tick. Must be >= 1. */
|
/** Encoder mode: steps per raw trackball tick. Must be >= 1. */
|
||||||
uint8_t key_sensitivity;
|
uint8_t encoder_sensitivity;
|
||||||
/** Pointer mode: pixels per raw trackball tick. Must be >= 1. */
|
/** Pointer mode: pixels per raw trackball tick. Must be >= 1. */
|
||||||
uint8_t pointer_sensitivity;
|
uint8_t pointer_sensitivity;
|
||||||
};
|
};
|
||||||
@ -43,7 +43,7 @@ struct LvglTrackballSettings {
|
|||||||
* @brief Creates an lv_indev_t bound to the given TRACKBALL_TYPE device and registers a read
|
* @brief Creates an lv_indev_t bound to the given TRACKBALL_TYPE device and registers a read
|
||||||
* callback that polls the device through its TrackballApi.
|
* callback that polls the device through its TrackballApi.
|
||||||
*
|
*
|
||||||
* The indev starts in LVGL_TRACKBALL_MODE_KEYS, enabled, with default sensitivities (see
|
* The indev starts in LVGL_TRACKBALL_MODE_ENCODER, enabled, with default sensitivities (see
|
||||||
* lvgl_trackball_settings_get_default()). Call lvgl_trackball_set_settings() to change this,
|
* lvgl_trackball_settings_get_default()). Call lvgl_trackball_set_settings() to change this,
|
||||||
* e.g. to switch to pointer mode - each device added this way can independently run with or
|
* e.g. to switch to pointer mode - each device added this way can independently run with or
|
||||||
* without pointer support.
|
* without pointer support.
|
||||||
@ -68,8 +68,8 @@ error_t lvgl_trackball_add(struct Device* device, lv_display_t* display, lv_inde
|
|||||||
void lvgl_trackball_remove(lv_indev_t* indev);
|
void lvgl_trackball_remove(lv_indev_t* indev);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the default (all fields explicitly set) LvglTrackballSettings: keys mode, enabled,
|
* @return the default (all fields explicitly set) LvglTrackballSettings: encoder mode, enabled,
|
||||||
* key_sensitivity 1, pointer_sensitivity 10.
|
* encoder_sensitivity 1, pointer_sensitivity 10.
|
||||||
*/
|
*/
|
||||||
struct LvglTrackballSettings lvgl_trackball_settings_get_default(void);
|
struct LvglTrackballSettings lvgl_trackball_settings_get_default(void);
|
||||||
|
|
||||||
|
|||||||
@ -21,19 +21,12 @@ void lvgl_grid_navigation_add(lv_obj_t* container);
|
|||||||
void lvgl_grid_navigation_remove(lv_obj_t* container);
|
void lvgl_grid_navigation_remove(lv_obj_t* container);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Moves the focus to the next or previous widget, for devices that can only step through widgets.
|
* @brief Moves the focus to the next or previous child in their order, for devices that can only step through widgets.
|
||||||
* The children of grid navigation containers are visited in their order: entering a container forwards focuses its first child, and backwards its last child.
|
* Past the last or first child, the focus moves to the next or previous object in the container's focus group.
|
||||||
* @param[in] group the focus group
|
* @param[in] container a container that was passed to lvgl_grid_navigation_add()
|
||||||
* @param[in] next true for the next widget, false for the previous widget
|
* @param[in] next true for the next child, false for the previous child
|
||||||
*/
|
*/
|
||||||
void lvgl_grid_navigation_step(lv_group_t* group, bool next);
|
void lvgl_grid_navigation_focus_next(lv_obj_t* container, bool next);
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Hides the selection that keys made, e.g. when the touchscreen is used. The focus stays where it is,
|
|
||||||
* and the next key that moves the focus shows the selection again.
|
|
||||||
* @param[in] group the focus group
|
|
||||||
*/
|
|
||||||
void lvgl_focus_hide_key_selection(lv_group_t* group);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param[in] container a container that was passed to lvgl_grid_navigation_add()
|
* @param[in] container a container that was passed to lvgl_grid_navigation_add()
|
||||||
|
|||||||
@ -9,7 +9,7 @@ extern "C" {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
/** Changes whenever the icon TTF subset, its codepoints file or the icon name lists change */
|
/** Changes whenever the icon TTF subset, its codepoints file or the icon name lists change */
|
||||||
#define LVGL_ICON_FONT_VERSION 0x1B608834u
|
#define LVGL_ICON_FONT_VERSION 0xEE67835Du
|
||||||
|
|
||||||
// Icon names per icon font, resolved through the .codepoints file next to the TTF
|
// Icon names per icon font, resolved through the .codepoints file next to the TTF
|
||||||
extern const char* const lvgl_icon_shared_names[];
|
extern const char* const lvgl_icon_shared_names[];
|
||||||
|
|||||||
@ -3,7 +3,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#define LVGL_ICON_STATUSBAR_LOCATION_ON "\xEF\x87\x9B"
|
#define LVGL_ICON_STATUSBAR_LOCATION_ON "\xEF\x87\x9B"
|
||||||
#define LVGL_ICON_STATUSBAR_LOCATION_OFF "\xEE\x83\x87"
|
|
||||||
#define LVGL_ICON_STATUSBAR_CLOUD "\xEF\x85\x9C"
|
#define LVGL_ICON_STATUSBAR_CLOUD "\xEF\x85\x9C"
|
||||||
#define LVGL_ICON_STATUSBAR_MEMORY "\xEE\x8C\xA2"
|
#define LVGL_ICON_STATUSBAR_MEMORY "\xEE\x8C\xA2"
|
||||||
#define LVGL_ICON_STATUSBAR_SD_CARD "\xEE\x98\xA3"
|
#define LVGL_ICON_STATUSBAR_SD_CARD "\xEE\x98\xA3"
|
||||||
|
|||||||
@ -1,55 +0,0 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <lvgl.h>
|
|
||||||
|
|
||||||
#include <tactility/drivers/display.h>
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/** Margins in pixels on each side of a display */
|
|
||||||
typedef struct {
|
|
||||||
int32_t top;
|
|
||||||
int32_t bottom;
|
|
||||||
int32_t left;
|
|
||||||
int32_t right;
|
|
||||||
} LvglInsets;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Gets the shape of the display's visible area.
|
|
||||||
* @param[in] display the display
|
|
||||||
* @param[out] out_shape the shape: a rectangle when the display doesn't report one
|
|
||||||
*/
|
|
||||||
void lvgl_display_get_shape(lv_display_t* display, struct DisplayShape* out_shape);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Gets the margins that keep a rectangle inside the display's visible area.
|
|
||||||
* They're all zero for rectangular displays.
|
|
||||||
* @param[in] display the display
|
|
||||||
* @param[out] out_insets the margins
|
|
||||||
*/
|
|
||||||
void lvgl_display_get_insets(lv_display_t* display, LvglInsets* out_insets);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Gets the horizontal margin on both sides of a row, for layouts that follow the display's edge.
|
|
||||||
* @param[in] display the display
|
|
||||||
* @param[in] y the row, in display coordinates
|
|
||||||
* @return the margin in pixels on the left and on the right of the row
|
|
||||||
*/
|
|
||||||
int32_t lvgl_display_get_row_inset(lv_display_t* display, int32_t y);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Moves the object's content inward where it overlaps the curved edge of a round or rounded display.
|
|
||||||
* The extra horizontal padding is added to the object's current padding, and follows its size changes.
|
|
||||||
* Does nothing on rectangular displays.
|
|
||||||
* @param[in] obj the object, with its own padding already set
|
|
||||||
*/
|
|
||||||
void lvgl_obj_add_edge_padding(lv_obj_t* obj);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@ -1,37 +0,0 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <lvgl.h>
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Creates a page indicator: a row of dots with one dot per page, where the dot of the current page is filled.
|
|
||||||
* The theme determines the size and colour of the dots.
|
|
||||||
* When the dots are wider than the indicator's maximum width (lv_obj_set_style_max_width()), it shows the page number instead, e.g. "2/12".
|
|
||||||
* @param[in] parent the parent object
|
|
||||||
* @return the created page indicator
|
|
||||||
*/
|
|
||||||
lv_obj_t* lvgl_page_indicator_create(lv_obj_t* parent);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Sets the number of pages, which is the number of dots.
|
|
||||||
* @param[in] obj the page indicator
|
|
||||||
* @param[in] count the number of pages
|
|
||||||
*/
|
|
||||||
void lvgl_page_indicator_set_page_count(lv_obj_t* obj, uint32_t count);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Sets the current page, whose dot is filled.
|
|
||||||
* @param[in] obj the page indicator
|
|
||||||
* @param[in] page the zero-based index of the current page
|
|
||||||
*/
|
|
||||||
void lvgl_page_indicator_set_page(lv_obj_t* obj, uint32_t page);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@ -4,22 +4,9 @@
|
|||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <lvgl.h>
|
|
||||||
|
|
||||||
#include <stdint.h>
|
|
||||||
|
|
||||||
void lvgl_keyboard_on_start_lvgl();
|
void lvgl_keyboard_on_start_lvgl();
|
||||||
void lvgl_keyboard_on_stop_lvgl();
|
void lvgl_keyboard_on_stop_lvgl();
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Translates a key codepoint into the LVGL key for the object that the indev's group focuses.
|
|
||||||
* The arrow up and down keys move the focus to the previous and next widget, or within a grid navigation container.
|
|
||||||
* @param[in] indev the indev that reports the key
|
|
||||||
* @param[in] codepoint the key codepoint (see tactility/drivers/keyboard.h)
|
|
||||||
* @return the LVGL key
|
|
||||||
*/
|
|
||||||
uint32_t lvgl_keyboard_translate_key(lv_indev_t* indev, uint32_t codepoint);
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -1,12 +0,0 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include <lvgl/insets.h>
|
|
||||||
|
|
||||||
#include <tactility/drivers/display.h>
|
|
||||||
|
|
||||||
/** Calculates the insets of a display with the given shape and resolution */
|
|
||||||
LvglInsets lvgl_insets_calculate(const DisplayShape& shape, int32_t width, int32_t height);
|
|
||||||
|
|
||||||
/** Calculates the horizontal margin of a row of a display with the given shape and resolution */
|
|
||||||
int32_t lvgl_insets_calculate_row(const DisplayShape& shape, int32_t width, int32_t height, int32_t y);
|
|
||||||
@ -1,7 +1,6 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
#include <lvgl/devices/keyboard.h>
|
#include <lvgl/devices/keyboard.h>
|
||||||
#include <lvgl/devices/device_context.h>
|
#include <lvgl/devices/device_context.h>
|
||||||
#include <lvgl/devices/keyboard_private.h>
|
|
||||||
#include <lvgl/grid_navigation.h>
|
#include <lvgl/grid_navigation.h>
|
||||||
#include <lvgl/lvgl.h>
|
#include <lvgl/lvgl.h>
|
||||||
|
|
||||||
@ -57,26 +56,14 @@ static uint32_t codepoint_to_lv_key(uint32_t key) {
|
|||||||
case CODEPOINT_ARROW_UP: return LV_KEY_PREV;
|
case CODEPOINT_ARROW_UP: return LV_KEY_PREV;
|
||||||
case CODEPOINT_ARROW_RIGHT: return LV_KEY_RIGHT;
|
case CODEPOINT_ARROW_RIGHT: return LV_KEY_RIGHT;
|
||||||
case CODEPOINT_ARROW_DOWN: return LV_KEY_NEXT;
|
case CODEPOINT_ARROW_DOWN: return LV_KEY_NEXT;
|
||||||
|
case CODEPOINT_FOCUS_NEXT: return LV_KEY_NEXT;
|
||||||
|
case CODEPOINT_FOCUS_PREVIOUS: return LV_KEY_PREV;
|
||||||
case CODEPOINT_HOME: return LV_KEY_HOME;
|
case CODEPOINT_HOME: return LV_KEY_HOME;
|
||||||
case CODEPOINT_END: return LV_KEY_END;
|
case CODEPOINT_END: return LV_KEY_END;
|
||||||
default: return key;
|
default: return key;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t lvgl_keyboard_translate_key(lv_indev_t* indev, uint32_t codepoint) {
|
|
||||||
lv_group_t* group = lv_indev_get_group(indev);
|
|
||||||
lv_obj_t* focused = group != nullptr ? lv_group_get_focused(group) : nullptr;
|
|
||||||
if (lvgl_grid_navigation_is_container(focused)) {
|
|
||||||
// Grid navigation moves the focus in two dimensions with the arrow keys
|
|
||||||
if (codepoint == CODEPOINT_ARROW_UP) {
|
|
||||||
return LV_KEY_UP;
|
|
||||||
} else if (codepoint == CODEPOINT_ARROW_DOWN) {
|
|
||||||
return LV_KEY_DOWN;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return codepoint_to_lv_key(codepoint);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void lvgl_keyboard_read_cb(lv_indev_t* indev, lv_indev_data_t* data) {
|
static void lvgl_keyboard_read_cb(lv_indev_t* indev, lv_indev_data_t* data) {
|
||||||
auto* wrapper = static_cast<LvglDeviceContext*>(lv_indev_get_driver_data(indev));
|
auto* wrapper = static_cast<LvglDeviceContext*>(lv_indev_get_driver_data(indev));
|
||||||
|
|
||||||
@ -87,19 +74,26 @@ static void lvgl_keyboard_read_cb(lv_indev_t* indev, lv_indev_data_t* data) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
data->key = codepoint_to_lv_key(key_data.key);
|
||||||
lv_group_t* group = lv_indev_get_group(indev);
|
lv_group_t* group = lv_indev_get_group(indev);
|
||||||
if (key_data.key == CODEPOINT_FOCUS_NEXT || key_data.key == CODEPOINT_FOCUS_PREVIOUS) {
|
lv_obj_t* focused = group != nullptr ? lv_group_get_focused(group) : nullptr;
|
||||||
// Devices that can only step through widgets also visit the children of grid navigation containers.
|
if (lvgl_grid_navigation_is_container(focused)) {
|
||||||
// LVGL doesn't see these keys: the group would skip the children, as only the container is in the group.
|
if (key_data.key == CODEPOINT_ARROW_UP) {
|
||||||
if (key_data.pressed && group != nullptr) {
|
// Grid navigation moves the focus in two dimensions with the arrow keys
|
||||||
lvgl_grid_navigation_step(group, key_data.key == CODEPOINT_FOCUS_NEXT);
|
data->key = LV_KEY_UP;
|
||||||
|
} else if (key_data.key == CODEPOINT_ARROW_DOWN) {
|
||||||
|
data->key = LV_KEY_DOWN;
|
||||||
|
} else if (key_data.key == CODEPOINT_FOCUS_NEXT || key_data.key == CODEPOINT_FOCUS_PREVIOUS) {
|
||||||
|
// Devices that can only step through widgets visit the children in their order.
|
||||||
|
// LVGL doesn't see these keys: the group would skip the children, as only the container is in the group.
|
||||||
|
if (key_data.pressed) {
|
||||||
|
lvgl_grid_navigation_focus_next(focused, key_data.key == CODEPOINT_FOCUS_NEXT);
|
||||||
|
}
|
||||||
|
data->state = LV_INDEV_STATE_RELEASED;
|
||||||
|
data->continue_reading = key_data.continue_reading;
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
data->state = LV_INDEV_STATE_RELEASED;
|
|
||||||
data->continue_reading = key_data.continue_reading;
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
data->key = lvgl_keyboard_translate_key(indev, key_data.key);
|
|
||||||
data->state = key_data.pressed ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
|
data->state = key_data.pressed ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
|
||||||
data->continue_reading = key_data.continue_reading;
|
data->continue_reading = key_data.continue_reading;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,7 +1,6 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
// SPDX-License-Identifier: Apache-2.0
|
||||||
#include <lvgl/devices/pointer.h>
|
#include <lvgl/devices/pointer.h>
|
||||||
#include <lvgl/devices/device_context.h>
|
#include <lvgl/devices/device_context.h>
|
||||||
#include <lvgl/grid_navigation.h>
|
|
||||||
|
|
||||||
#include <tactility/device.h>
|
#include <tactility/device.h>
|
||||||
#include <tactility/drivers/pointer.h>
|
#include <tactility/drivers/pointer.h>
|
||||||
@ -141,8 +140,8 @@ static void lvgl_pointer_pool_refresh(struct LvglPointerPool* pool, int32_t nati
|
|||||||
// the touch controller reports points in a different order (no touch-ID/tracking field exists
|
// the touch controller reports points in a different order (no touch-ID/tracking field exists
|
||||||
// anywhere in this stack - see esp_lcd_touch_get_coordinates()/PointerApi.get_touched_points()).
|
// anywhere in this stack - see esp_lcd_touch_get_coordinates()/PointerApi.get_touched_points()).
|
||||||
// Unmatched raw points (new touches) claim the nearest inactive slot. Slots with no matching
|
// Unmatched raw points (new touches) claim the nearest inactive slot. Slots with no matching
|
||||||
// point this round go inactive (RELEASED). Returns true when a new touch started.
|
// point this round go inactive (RELEASED).
|
||||||
static bool lvgl_pointer_pool_assign(struct LvglPointerPool* pool, int32_t native_x_max) {
|
static void lvgl_pointer_pool_assign(struct LvglPointerPool* pool, int32_t native_x_max) {
|
||||||
// Touch drivers clamp raw coordinates to the panel's configured native resolution regardless
|
// Touch drivers clamp raw coordinates to the panel's configured native resolution regardless
|
||||||
// of calibration, so native_x_max is a valid scale reference for the distance cap even when calibration is disabled.
|
// of calibration, so native_x_max is a valid scale reference for the distance cap even when calibration is disabled.
|
||||||
// Falls back to a conservative fixed pixel value if the display/resolution isn't available for some reason.
|
// Falls back to a conservative fixed pixel value if the display/resolution isn't available for some reason.
|
||||||
@ -183,7 +182,6 @@ static bool lvgl_pointer_pool_assign(struct LvglPointerPool* pool, int32_t nativ
|
|||||||
|
|
||||||
// Second pass: any unclaimed raw point is a new touch - hand it to the first inactive slot
|
// Second pass: any unclaimed raw point is a new touch - hand it to the first inactive slot
|
||||||
// that wasn't just released this round.
|
// that wasn't just released this round.
|
||||||
bool touch_started = false;
|
|
||||||
for (uint8_t r = 0; r < pool->raw_count; r++) {
|
for (uint8_t r = 0; r < pool->raw_count; r++) {
|
||||||
if (raw_claimed[r]) continue;
|
if (raw_claimed[r]) continue;
|
||||||
for (uint8_t s = 0; s < pool->slot_count; s++) {
|
for (uint8_t s = 0; s < pool->slot_count; s++) {
|
||||||
@ -192,11 +190,9 @@ static bool lvgl_pointer_pool_assign(struct LvglPointerPool* pool, int32_t nativ
|
|||||||
pool->slot_point[s].x = (lv_coord_t)pool->raw_x[r];
|
pool->slot_point[s].x = (lv_coord_t)pool->raw_x[r];
|
||||||
pool->slot_point[s].y = (lv_coord_t)pool->raw_y[r];
|
pool->slot_point[s].y = (lv_coord_t)pool->raw_y[r];
|
||||||
raw_claimed[r] = true;
|
raw_claimed[r] = true;
|
||||||
touch_started = true;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return touch_started;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// The actual LVGL indev read callback, shared by every slot in the pool. Only the first slot to
|
// The actual LVGL indev read callback, shared by every slot in the pool. Only the first slot to
|
||||||
@ -223,11 +219,7 @@ static void lvgl_pointer_read_cb(lv_indev_t* indev, lv_indev_data_t* data) {
|
|||||||
int32_t native_x_max = display != NULL ? lv_display_get_original_horizontal_resolution(display) - 1 : 0;
|
int32_t native_x_max = display != NULL ? lv_display_get_original_horizontal_resolution(display) - 1 : 0;
|
||||||
int32_t native_y_max = display != NULL ? lv_display_get_original_vertical_resolution(display) - 1 : 0;
|
int32_t native_y_max = display != NULL ? lv_display_get_original_vertical_resolution(display) - 1 : 0;
|
||||||
lvgl_pointer_pool_refresh(pool, native_x_max, native_y_max);
|
lvgl_pointer_pool_refresh(pool, native_x_max, native_y_max);
|
||||||
// A touch hides the selection that keys made, so it doesn't look like two widgets are selected.
|
lvgl_pointer_pool_assign(pool, native_x_max);
|
||||||
// This runs before LVGL handles the press, so a widget that the touch focuses isn't affected.
|
|
||||||
if (lvgl_pointer_pool_assign(pool, native_x_max) && lv_group_get_default() != NULL) {
|
|
||||||
lvgl_focus_hide_key_selection(lv_group_get_default());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
pool->round_pos = (uint8_t)((pool->round_pos + 1) % pool->slot_count);
|
pool->round_pos = (uint8_t)((pool->round_pos + 1) % pool->slot_count);
|
||||||
|
|
||||||
|
|||||||
@ -2,16 +2,11 @@
|
|||||||
#include <lvgl/devices/trackball.h>
|
#include <lvgl/devices/trackball.h>
|
||||||
#include <lvgl/devices/device_context.h>
|
#include <lvgl/devices/device_context.h>
|
||||||
#include <lvgl/devices/keyboard.h>
|
#include <lvgl/devices/keyboard.h>
|
||||||
#include <lvgl/devices/keyboard_private.h>
|
|
||||||
#include <lvgl/grid_navigation.h>
|
|
||||||
#include <lvgl/lvgl.h>
|
#include <lvgl/lvgl.h>
|
||||||
|
|
||||||
#include <tactility/drivers/keyboard.h>
|
|
||||||
#include <tactility/drivers/trackball.h>
|
#include <tactility/drivers/trackball.h>
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <cstdlib>
|
|
||||||
|
|
||||||
constexpr auto* TAG = "lvgl_trackball";
|
constexpr auto* TAG = "lvgl_trackball";
|
||||||
|
|
||||||
@ -21,13 +16,6 @@ struct LvglTrackballCtx {
|
|||||||
int32_t cursor_y;
|
int32_t cursor_y;
|
||||||
lv_obj_t* cursor;
|
lv_obj_t* cursor;
|
||||||
const void* cursor_image_src;
|
const void* cursor_image_src;
|
||||||
// Keys mode: arrow key presses that are still to be reported
|
|
||||||
uint32_t pending_codepoint;
|
|
||||||
int32_t pending_count;
|
|
||||||
// Keys mode: the LVGL key that is reported as pressed, or 0
|
|
||||||
uint32_t pressed_key;
|
|
||||||
// Pointer mode: whether the button was pressed during the previous read
|
|
||||||
bool pointer_pressed;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static inline int32_t clamp(int32_t value, int32_t min_value, int32_t max_value) {
|
static inline int32_t clamp(int32_t value, int32_t min_value, int32_t max_value) {
|
||||||
@ -80,49 +68,6 @@ static void hide_cursor(LvglTrackballCtx* ctx) {
|
|||||||
lv_obj_add_flag(ctx->cursor, LV_OBJ_FLAG_HIDDEN);
|
lv_obj_add_flag(ctx->cursor, LV_OBJ_FLAG_HIDDEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Reports one key event per read: the button as the enter key, and movement as arrow key presses along its strongest axis.
|
|
||||||
static void read_keys(lv_indev_t* indev, LvglTrackballCtx* ctx, lv_indev_data_t* data, int32_t dx, int32_t dy, bool button_pressed) {
|
|
||||||
if (dx != 0 || dy != 0) {
|
|
||||||
uint32_t codepoint;
|
|
||||||
if (std::abs(dx) >= std::abs(dy)) {
|
|
||||||
codepoint = dx > 0 ? CODEPOINT_ARROW_RIGHT : CODEPOINT_ARROW_LEFT;
|
|
||||||
} else {
|
|
||||||
codepoint = dy > 0 ? CODEPOINT_ARROW_DOWN : CODEPOINT_ARROW_UP;
|
|
||||||
}
|
|
||||||
const int32_t steps = std::max(std::abs(dx), std::abs(dy)) * static_cast<int32_t>(ctx->settings.key_sensitivity);
|
|
||||||
// A change of direction drops the presses that weren't reported yet
|
|
||||||
if (codepoint != ctx->pending_codepoint) {
|
|
||||||
ctx->pending_codepoint = codepoint;
|
|
||||||
ctx->pending_count = 0;
|
|
||||||
}
|
|
||||||
ctx->pending_count = clamp(ctx->pending_count + steps, 0, INT16_MAX);
|
|
||||||
lv_display_trigger_activity(lv_indev_get_display(indev));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (ctx->pressed_key == LV_KEY_ENTER && button_pressed) {
|
|
||||||
data->key = LV_KEY_ENTER;
|
|
||||||
data->state = LV_INDEV_STATE_PRESSED;
|
|
||||||
} else if (ctx->pressed_key != 0) {
|
|
||||||
// Every press is released before the next event, so LVGL sees each arrow key press
|
|
||||||
data->key = ctx->pressed_key;
|
|
||||||
data->state = LV_INDEV_STATE_RELEASED;
|
|
||||||
ctx->pressed_key = 0;
|
|
||||||
data->continue_reading = ctx->pending_count > 0;
|
|
||||||
} else if (button_pressed) {
|
|
||||||
ctx->pressed_key = LV_KEY_ENTER;
|
|
||||||
data->key = LV_KEY_ENTER;
|
|
||||||
data->state = LV_INDEV_STATE_PRESSED;
|
|
||||||
lv_display_trigger_activity(lv_indev_get_display(indev));
|
|
||||||
} else if (ctx->pending_count > 0) {
|
|
||||||
ctx->pending_count--;
|
|
||||||
ctx->pressed_key = lvgl_keyboard_translate_key(indev, ctx->pending_codepoint);
|
|
||||||
data->key = ctx->pressed_key;
|
|
||||||
data->state = LV_INDEV_STATE_PRESSED;
|
|
||||||
} else {
|
|
||||||
data->state = LV_INDEV_STATE_RELEASED;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void lvgl_trackball_read_cb(lv_indev_t* indev, lv_indev_data_t* data) {
|
static void lvgl_trackball_read_cb(lv_indev_t* indev, lv_indev_data_t* data) {
|
||||||
auto* wrapper = static_cast<LvglDeviceContext*>(lv_indev_get_driver_data(indev));
|
auto* wrapper = static_cast<LvglDeviceContext*>(lv_indev_get_driver_data(indev));
|
||||||
auto* ctx = static_cast<LvglTrackballCtx*>(wrapper->context);
|
auto* ctx = static_cast<LvglTrackballCtx*>(wrapper->context);
|
||||||
@ -138,30 +83,27 @@ static void lvgl_trackball_read_cb(lv_indev_t* indev, lv_indev_data_t* data) {
|
|||||||
|
|
||||||
lv_display_t* display = lv_indev_get_display(indev);
|
lv_display_t* display = lv_indev_get_display(indev);
|
||||||
|
|
||||||
|
if (ctx->settings.mode == LVGL_TRACKBALL_MODE_ENCODER) {
|
||||||
|
int32_t ticks = (dx + dy) * static_cast<int32_t>(ctx->settings.encoder_sensitivity);
|
||||||
|
data->enc_diff = static_cast<int16_t>(clamp(ticks, INT16_MIN, INT16_MAX));
|
||||||
|
if (ticks != 0) {
|
||||||
|
lv_display_trigger_activity(display);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
int32_t max_x = display != nullptr ? lv_display_get_original_horizontal_resolution(display) - 1 : 0;
|
||||||
|
int32_t max_y = display != nullptr ? lv_display_get_original_vertical_resolution(display) - 1 : 0;
|
||||||
|
ctx->cursor_x = clamp(ctx->cursor_x + dx * static_cast<int32_t>(ctx->settings.pointer_sensitivity), 0, max_x);
|
||||||
|
ctx->cursor_y = clamp(ctx->cursor_y + dy * static_cast<int32_t>(ctx->settings.pointer_sensitivity), 0, max_y);
|
||||||
|
data->point.x = static_cast<int16_t>(ctx->cursor_x);
|
||||||
|
data->point.y = static_cast<int16_t>(ctx->cursor_y);
|
||||||
|
}
|
||||||
|
|
||||||
bool pressed = false;
|
bool pressed = false;
|
||||||
if (ctx->settings.enabled) {
|
if (ctx->settings.enabled) {
|
||||||
trackball_get_button_pressed(wrapper->device, &pressed);
|
trackball_get_button_pressed(wrapper->device, &pressed);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->settings.mode == LVGL_TRACKBALL_MODE_KEYS) {
|
|
||||||
read_keys(indev, ctx, data, dx, dy, pressed);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t max_x = display != nullptr ? lv_display_get_original_horizontal_resolution(display) - 1 : 0;
|
|
||||||
int32_t max_y = display != nullptr ? lv_display_get_original_vertical_resolution(display) - 1 : 0;
|
|
||||||
ctx->cursor_x = clamp(ctx->cursor_x + dx * static_cast<int32_t>(ctx->settings.pointer_sensitivity), 0, max_x);
|
|
||||||
ctx->cursor_y = clamp(ctx->cursor_y + dy * static_cast<int32_t>(ctx->settings.pointer_sensitivity), 0, max_y);
|
|
||||||
data->point.x = static_cast<int16_t>(ctx->cursor_x);
|
|
||||||
data->point.y = static_cast<int16_t>(ctx->cursor_y);
|
|
||||||
data->state = pressed ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
|
data->state = pressed ? LV_INDEV_STATE_PRESSED : LV_INDEV_STATE_RELEASED;
|
||||||
|
|
||||||
// Like a touch, a click hides the selection that keys made
|
|
||||||
if (pressed && !ctx->pointer_pressed && lv_group_get_default() != nullptr) {
|
|
||||||
lvgl_focus_hide_key_selection(lv_group_get_default());
|
|
||||||
}
|
|
||||||
ctx->pointer_pressed = pressed;
|
|
||||||
|
|
||||||
if (pressed) {
|
if (pressed) {
|
||||||
lv_display_trigger_activity(display);
|
lv_display_trigger_activity(display);
|
||||||
}
|
}
|
||||||
@ -171,9 +113,9 @@ extern "C" {
|
|||||||
|
|
||||||
LvglTrackballSettings lvgl_trackball_settings_get_default() {
|
LvglTrackballSettings lvgl_trackball_settings_get_default() {
|
||||||
return LvglTrackballSettings {
|
return LvglTrackballSettings {
|
||||||
.mode = LVGL_TRACKBALL_MODE_KEYS,
|
.mode = LVGL_TRACKBALL_MODE_ENCODER,
|
||||||
.enabled = true,
|
.enabled = true,
|
||||||
.key_sensitivity = 1,
|
.encoder_sensitivity = 1,
|
||||||
.pointer_sensitivity = 10,
|
.pointer_sensitivity = 10,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
@ -205,7 +147,7 @@ error_t lvgl_trackball_add(struct Device* device, lv_display_t* display, lv_inde
|
|||||||
return ERROR_OUT_OF_MEMORY;
|
return ERROR_OUT_OF_MEMORY;
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_indev_set_type(indev, LV_INDEV_TYPE_KEYPAD);
|
lv_indev_set_type(indev, LV_INDEV_TYPE_ENCODER);
|
||||||
lv_indev_set_read_cb(indev, lvgl_trackball_read_cb);
|
lv_indev_set_read_cb(indev, lvgl_trackball_read_cb);
|
||||||
lv_indev_set_driver_data(indev, wrapper);
|
lv_indev_set_driver_data(indev, wrapper);
|
||||||
if (display != nullptr) {
|
if (display != nullptr) {
|
||||||
@ -213,10 +155,10 @@ error_t lvgl_trackball_add(struct Device* device, lv_display_t* display, lv_inde
|
|||||||
}
|
}
|
||||||
recenter_cursor(ctx, indev);
|
recenter_cursor(ctx, indev);
|
||||||
|
|
||||||
// Keypad indevs are useless without a group (LVGL dispatch bails out immediately if indev->group is NULL)
|
// Encoder indevs are useless without a group (LVGL dispatch bails out immediately if indev->group is NULL)
|
||||||
// Use the keyboard group for now, until it's refactored into a proper global/shared group. See ideas.md
|
// Use the keyboard group for now, until it's refactored into a proper global/shared group. See ideas.md
|
||||||
// When refactoring this, you probably want to remove the calls to lvgl_keyboard_* below.
|
// When refactoring this, you probably want to remove the calls to lvgl_keyboard_* below.
|
||||||
if (ctx->settings.mode == LVGL_TRACKBALL_MODE_KEYS) {
|
if (ctx->settings.mode == LVGL_TRACKBALL_MODE_ENCODER) {
|
||||||
lvgl_keyboard_enable(indev);
|
lvgl_keyboard_enable(indev);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -246,8 +188,8 @@ error_t lvgl_trackball_set_settings(lv_indev_t* indev, const struct LvglTrackbal
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (
|
if (
|
||||||
(settings->mode != LVGL_TRACKBALL_MODE_KEYS && settings->mode != LVGL_TRACKBALL_MODE_POINTER) ||
|
(settings->mode != LVGL_TRACKBALL_MODE_ENCODER && settings->mode != LVGL_TRACKBALL_MODE_POINTER) ||
|
||||||
settings->key_sensitivity == 0 ||
|
settings->encoder_sensitivity == 0 ||
|
||||||
settings->pointer_sensitivity == 0
|
settings->pointer_sensitivity == 0
|
||||||
) {
|
) {
|
||||||
return ERROR_INVALID_ARGUMENT;
|
return ERROR_INVALID_ARGUMENT;
|
||||||
@ -261,8 +203,6 @@ error_t lvgl_trackball_set_settings(lv_indev_t* indev, const struct LvglTrackbal
|
|||||||
ctx->settings = *settings;
|
ctx->settings = *settings;
|
||||||
|
|
||||||
if (mode_changed) {
|
if (mode_changed) {
|
||||||
ctx->pending_count = 0;
|
|
||||||
ctx->pressed_key = 0;
|
|
||||||
if (settings->mode == LVGL_TRACKBALL_MODE_POINTER) {
|
if (settings->mode == LVGL_TRACKBALL_MODE_POINTER) {
|
||||||
lvgl_keyboard_disable(indev);
|
lvgl_keyboard_disable(indev);
|
||||||
lv_indev_set_type(indev, LV_INDEV_TYPE_POINTER);
|
lv_indev_set_type(indev, LV_INDEV_TYPE_POINTER);
|
||||||
@ -270,12 +210,12 @@ error_t lvgl_trackball_set_settings(lv_indev_t* indev, const struct LvglTrackbal
|
|||||||
show_cursor(ctx, indev);
|
show_cursor(ctx, indev);
|
||||||
} else {
|
} else {
|
||||||
hide_cursor(ctx);
|
hide_cursor(ctx);
|
||||||
lv_indev_set_type(indev, LV_INDEV_TYPE_KEYPAD);
|
lv_indev_set_type(indev, LV_INDEV_TYPE_ENCODER);
|
||||||
lvgl_keyboard_enable(indev);
|
lvgl_keyboard_enable(indev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Cursor visibility only tracks the enabled toggle in pointer mode - in keys mode it must
|
// Cursor visibility only tracks the enabled toggle in pointer mode - in encoder mode it must
|
||||||
// stay hidden regardless of enabled, otherwise this unconditionally un-hides the cursor
|
// stay hidden regardless of enabled, otherwise this unconditionally un-hides the cursor
|
||||||
// hide_cursor() just hid above (enabled is independent of mode, and defaults to true).
|
// hide_cursor() just hid above (enabled is independent of mode, and defaults to true).
|
||||||
if (ctx->cursor != nullptr && ctx->settings.mode == LVGL_TRACKBALL_MODE_POINTER) {
|
if (ctx->cursor != nullptr && ctx->settings.mode == LVGL_TRACKBALL_MODE_POINTER) {
|
||||||
|
|||||||
@ -19,24 +19,8 @@ static void on_child_created(lv_event_t* event) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Grid navigation shows the focused child as selected whenever the container gets the focus. That's only
|
|
||||||
// right when a key moved the focus there, not when it moved because e.g. the previously focused widget was deleted.
|
|
||||||
static void on_container_focused(lv_event_t* event) {
|
|
||||||
lv_indev_t* indev = lv_indev_active();
|
|
||||||
const lv_indev_type_t type = indev != nullptr ? lv_indev_get_type(indev) : LV_INDEV_TYPE_NONE;
|
|
||||||
if (type == LV_INDEV_TYPE_KEYPAD || type == LV_INDEV_TYPE_ENCODER) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lv_obj_t* child = lvgl_grid_navigation_get_focused(lv_event_get_current_target_obj(event));
|
|
||||||
if (child != nullptr) {
|
|
||||||
lv_obj_remove_state(child, LV_STATE_FOCUS_KEY);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void lvgl_grid_navigation_add(lv_obj_t* container) {
|
void lvgl_grid_navigation_add(lv_obj_t* container) {
|
||||||
lv_gridnav_add(container, LV_GRIDNAV_CTRL_NONE);
|
lv_gridnav_add(container, LV_GRIDNAV_CTRL_NONE);
|
||||||
// Added after grid navigation's own handler, so it runs after it
|
|
||||||
lv_obj_add_event_cb(container, on_container_focused, LV_EVENT_FOCUSED, nullptr);
|
|
||||||
lv_obj_add_flag(container, GRID_NAVIGATION_FLAG);
|
lv_obj_add_flag(container, GRID_NAVIGATION_FLAG);
|
||||||
|
|
||||||
const uint32_t child_count = lv_obj_get_child_count(container);
|
const uint32_t child_count = lv_obj_get_child_count(container);
|
||||||
@ -61,7 +45,6 @@ void lvgl_grid_navigation_remove(lv_obj_t* container) {
|
|||||||
|
|
||||||
lv_gridnav_remove(container);
|
lv_gridnav_remove(container);
|
||||||
lv_obj_remove_event_cb(container, on_child_created);
|
lv_obj_remove_event_cb(container, on_child_created);
|
||||||
lv_obj_remove_event_cb(container, on_container_focused);
|
|
||||||
lv_obj_remove_flag(container, GRID_NAVIGATION_FLAG);
|
lv_obj_remove_flag(container, GRID_NAVIGATION_FLAG);
|
||||||
|
|
||||||
if (group == nullptr) {
|
if (group == nullptr) {
|
||||||
@ -82,63 +65,27 @@ void lvgl_grid_navigation_remove(lv_obj_t* container) {
|
|||||||
|
|
||||||
// Matches which children grid navigation can focus
|
// Matches which children grid navigation can focus
|
||||||
static bool is_focusable(lv_obj_t* obj) {
|
static bool is_focusable(lv_obj_t* obj) {
|
||||||
return !lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN) && lv_obj_has_flag(obj, static_cast<lv_obj_flag_t>(LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_CLICK_FOCUSABLE));
|
return !lv_obj_has_flag(obj, LV_OBJ_FLAG_HIDDEN) && lv_obj_has_flag_any(obj, static_cast<lv_obj_flag_t>(LV_OBJ_FLAG_CLICKABLE | LV_OBJ_FLAG_CLICK_FOCUSABLE));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Finds the next focusable child after (or before) the given index
|
void lvgl_grid_navigation_focus_next(lv_obj_t* container, bool next) {
|
||||||
static lv_obj_t* find_focusable_child(lv_obj_t* container, int32_t index, bool next) {
|
|
||||||
const auto child_count = static_cast<int32_t>(lv_obj_get_child_count(container));
|
const auto child_count = static_cast<int32_t>(lv_obj_get_child_count(container));
|
||||||
|
lv_obj_t* focused = lvgl_grid_navigation_get_focused(container);
|
||||||
|
int32_t index = focused != nullptr ? lv_obj_get_index(focused) : (next ? -1 : child_count);
|
||||||
for (index += next ? 1 : -1; index >= 0 && index < child_count; index += next ? 1 : -1) {
|
for (index += next ? 1 : -1; index >= 0 && index < child_count; index += next ? 1 : -1) {
|
||||||
auto* child = lv_obj_get_child(container, index);
|
auto* child = lv_obj_get_child(container, index);
|
||||||
if (is_focusable(child)) {
|
if (is_focusable(child)) {
|
||||||
return child;
|
lv_gridnav_set_focused(container, child, LV_ANIM_ON);
|
||||||
}
|
|
||||||
}
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
void lvgl_grid_navigation_step(lv_group_t* group, bool next) {
|
|
||||||
lv_obj_t* focused = lv_group_get_focused(group);
|
|
||||||
if (lvgl_grid_navigation_is_container(focused)) {
|
|
||||||
lv_obj_t* focused_child = lvgl_grid_navigation_get_focused(focused);
|
|
||||||
const int32_t index = focused_child != nullptr ? lv_obj_get_index(focused_child) : (next ? -1 : static_cast<int32_t>(lv_obj_get_child_count(focused)));
|
|
||||||
lv_obj_t* child = find_focusable_child(focused, index, next);
|
|
||||||
if (child != nullptr) {
|
|
||||||
lv_gridnav_set_focused(focused, child, LV_ANIM_ON);
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lv_group_set_editing(group, false);
|
lv_group_t* group = lv_obj_get_group(container);
|
||||||
if (next) {
|
if (group != nullptr) {
|
||||||
lv_group_focus_next(group);
|
if (next) {
|
||||||
} else {
|
lv_group_focus_next(group);
|
||||||
lv_group_focus_prev(group);
|
} else {
|
||||||
}
|
lv_group_focus_prev(group);
|
||||||
|
|
||||||
// Grid navigation restores the child that was focused last, but stepping enters at the side it came from
|
|
||||||
lv_obj_t* entered = lv_group_get_focused(group);
|
|
||||||
if (lvgl_grid_navigation_is_container(entered)) {
|
|
||||||
const int32_t start = next ? -1 : static_cast<int32_t>(lv_obj_get_child_count(entered));
|
|
||||||
lv_obj_t* child = find_focusable_child(entered, start, next);
|
|
||||||
if (child != nullptr) {
|
|
||||||
lv_gridnav_set_focused(entered, child, LV_ANIM_ON);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void lvgl_focus_hide_key_selection(lv_group_t* group) {
|
|
||||||
lv_obj_t* focused = lv_group_get_focused(group);
|
|
||||||
if (focused == nullptr) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lv_group_set_editing(group, false);
|
|
||||||
constexpr auto key_states = static_cast<lv_state_t>(LV_STATE_FOCUS_KEY | LV_STATE_EDITED);
|
|
||||||
lv_obj_remove_state(focused, key_states);
|
|
||||||
if (lvgl_grid_navigation_is_container(focused)) {
|
|
||||||
lv_obj_t* child = lvgl_grid_navigation_get_focused(focused);
|
|
||||||
if (child != nullptr) {
|
|
||||||
lv_obj_remove_state(child, key_states);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -58,7 +58,6 @@ const size_t lvgl_icon_shared_name_count = sizeof(lvgl_icon_shared_names) / size
|
|||||||
|
|
||||||
const char* const lvgl_icon_statusbar_names[] = {
|
const char* const lvgl_icon_statusbar_names[] = {
|
||||||
"location_on",
|
"location_on",
|
||||||
"location_off",
|
|
||||||
"cloud",
|
"cloud",
|
||||||
"memory",
|
"memory",
|
||||||
"sd_card",
|
"sd_card",
|
||||||
|
|||||||
@ -1,78 +0,0 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
#include <lvgl/insets.h>
|
|
||||||
#include <lvgl/insets_math.h>
|
|
||||||
#include <lvgl/devices/device_context.h>
|
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <new>
|
|
||||||
|
|
||||||
static DisplayShape get_shape(lv_display_t* display) {
|
|
||||||
DisplayShape shape = { .shape = DISPLAY_SHAPE_RECTANGLE, .corner_radius = 0 };
|
|
||||||
const auto* wrapper = static_cast<const LvglDeviceContext*>(lv_display_get_driver_data(display));
|
|
||||||
if (wrapper != nullptr && wrapper->device != nullptr) {
|
|
||||||
display_get_shape(wrapper->device, &shape);
|
|
||||||
}
|
|
||||||
return shape;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct EdgePadding {
|
|
||||||
lv_obj_t* obj;
|
|
||||||
// The padding before the display's edge was added
|
|
||||||
int32_t base_left;
|
|
||||||
int32_t base_right;
|
|
||||||
};
|
|
||||||
|
|
||||||
static void update_edge_padding(void* data) {
|
|
||||||
const auto* padding = static_cast<const EdgePadding*>(data);
|
|
||||||
lv_display_t* display = lv_obj_get_display(padding->obj);
|
|
||||||
lv_area_t coords;
|
|
||||||
lv_obj_get_coords(padding->obj, &coords);
|
|
||||||
// The curve is widest at the object's edge that is nearest to the display's top or bottom
|
|
||||||
const int32_t inset = std::max(lvgl_display_get_row_inset(display, coords.y1), lvgl_display_get_row_inset(display, coords.y2));
|
|
||||||
const int32_t right_edge = lv_display_get_horizontal_resolution(display) - 1;
|
|
||||||
lv_obj_set_style_pad_left(padding->obj, padding->base_left + std::max<int32_t>(0, inset - coords.x1), LV_STATE_DEFAULT);
|
|
||||||
lv_obj_set_style_pad_right(padding->obj, padding->base_right + std::max<int32_t>(0, inset - (right_edge - coords.x2)), LV_STATE_DEFAULT);
|
|
||||||
}
|
|
||||||
|
|
||||||
// The position is final once the layout pass that changed the size has finished
|
|
||||||
static void on_size_changed(lv_event_t* event) {
|
|
||||||
lv_async_call(update_edge_padding, lv_event_get_user_data(event));
|
|
||||||
}
|
|
||||||
|
|
||||||
static void on_deleted(lv_event_t* event) {
|
|
||||||
auto* padding = static_cast<EdgePadding*>(lv_event_get_user_data(event));
|
|
||||||
lv_async_call_cancel(update_edge_padding, padding);
|
|
||||||
delete padding;
|
|
||||||
}
|
|
||||||
|
|
||||||
extern "C" {
|
|
||||||
|
|
||||||
void lvgl_obj_add_edge_padding(lv_obj_t* obj) {
|
|
||||||
if (get_shape(lv_obj_get_display(obj)).shape == DISPLAY_SHAPE_RECTANGLE) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
auto* padding = new(std::nothrow) EdgePadding {
|
|
||||||
.obj = obj,
|
|
||||||
.base_left = lv_obj_get_style_pad_left(obj, LV_PART_MAIN),
|
|
||||||
.base_right = lv_obj_get_style_pad_right(obj, LV_PART_MAIN)
|
|
||||||
};
|
|
||||||
if (padding == nullptr) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
lv_obj_add_event_cb(obj, on_size_changed, LV_EVENT_SIZE_CHANGED, padding);
|
|
||||||
lv_obj_add_event_cb(obj, on_deleted, LV_EVENT_DELETE, padding);
|
|
||||||
}
|
|
||||||
|
|
||||||
void lvgl_display_get_shape(lv_display_t* display, DisplayShape* out_shape) {
|
|
||||||
*out_shape = get_shape(display);
|
|
||||||
}
|
|
||||||
|
|
||||||
void lvgl_display_get_insets(lv_display_t* display, LvglInsets* out_insets) {
|
|
||||||
*out_insets = lvgl_insets_calculate(get_shape(display), lv_display_get_horizontal_resolution(display), lv_display_get_vertical_resolution(display));
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t lvgl_display_get_row_inset(lv_display_t* display, int32_t y) {
|
|
||||||
return lvgl_insets_calculate_row(get_shape(display), lv_display_get_horizontal_resolution(display), lv_display_get_vertical_resolution(display), y);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,60 +0,0 @@
|
|||||||
// SPDX-License-Identifier: Apache-2.0
|
|
||||||
#include <lvgl/insets_math.h>
|
|
||||||
|
|
||||||
#include <algorithm>
|
|
||||||
#include <cmath>
|
|
||||||
#include <numbers>
|
|
||||||
|
|
||||||
constexpr double INV_SQRT2 = 1.0 / std::numbers::sqrt2;
|
|
||||||
|
|
||||||
// The part of a corner's square that a circle with the given radius cuts off along its diagonal
|
|
||||||
static int32_t corner_inset(int32_t radius) {
|
|
||||||
return static_cast<int32_t>(std::ceil(radius * (1.0 - INV_SQRT2)));
|
|
||||||
}
|
|
||||||
|
|
||||||
// The horizontal distance between a circle's edge and its bounding box at the given distance from the circle's center row
|
|
||||||
static int32_t circle_row_inset(int32_t radius, int32_t distance_from_center) {
|
|
||||||
if (distance_from_center >= radius) {
|
|
||||||
return radius;
|
|
||||||
}
|
|
||||||
const double half_width = std::sqrt(static_cast<double>(radius) * radius - static_cast<double>(distance_from_center) * distance_from_center);
|
|
||||||
return static_cast<int32_t>(std::ceil(radius - half_width));
|
|
||||||
}
|
|
||||||
|
|
||||||
LvglInsets lvgl_insets_calculate(const DisplayShape& shape, int32_t width, int32_t height) {
|
|
||||||
switch (shape.shape) {
|
|
||||||
case DISPLAY_SHAPE_ROUNDED: {
|
|
||||||
const int32_t radius = std::min<int32_t>(shape.corner_radius, std::min(width, height) / 2);
|
|
||||||
const int32_t inset = corner_inset(radius);
|
|
||||||
return { .top = inset, .bottom = inset, .left = 0, .right = 0 };
|
|
||||||
}
|
|
||||||
case DISPLAY_SHAPE_CIRCLE: {
|
|
||||||
const int32_t diameter = std::min(width, height);
|
|
||||||
const int32_t inset = corner_inset(diameter / 2);
|
|
||||||
const int32_t horizontal = inset + (width - diameter) / 2;
|
|
||||||
const int32_t vertical = inset + (height - diameter) / 2;
|
|
||||||
return { .top = vertical, .bottom = vertical, .left = horizontal, .right = horizontal };
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
return { .top = 0, .bottom = 0, .left = 0, .right = 0 };
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t lvgl_insets_calculate_row(const DisplayShape& shape, int32_t width, int32_t height, int32_t y) {
|
|
||||||
switch (shape.shape) {
|
|
||||||
case DISPLAY_SHAPE_ROUNDED: {
|
|
||||||
const int32_t radius = std::min<int32_t>(shape.corner_radius, std::min(width, height) / 2);
|
|
||||||
// Distance from the row to the center row of the nearest corner's circle
|
|
||||||
const int32_t distance = std::max(radius - y, y - (height - 1 - radius));
|
|
||||||
return distance > 0 ? circle_row_inset(radius, distance) : 0;
|
|
||||||
}
|
|
||||||
case DISPLAY_SHAPE_CIRCLE: {
|
|
||||||
const int32_t diameter = std::min(width, height);
|
|
||||||
const int32_t radius = diameter / 2;
|
|
||||||
const int32_t distance = std::abs(y - height / 2);
|
|
||||||
return std::min(circle_row_inset(radius, distance) + (width - diameter) / 2, width / 2);
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@ -11,13 +11,11 @@
|
|||||||
|
|
||||||
#include <lvgl/widgets/sliderbox.h>
|
#include <lvgl/widgets/sliderbox.h>
|
||||||
#include <lvgl/grid_navigation.h>
|
#include <lvgl/grid_navigation.h>
|
||||||
#include <lvgl/insets.h>
|
|
||||||
#include <lvgl/theme.h>
|
#include <lvgl/theme.h>
|
||||||
#include <lvgl/widgets/badge.h>
|
#include <lvgl/widgets/badge.h>
|
||||||
#include <lvgl/widgets/card.h>
|
#include <lvgl/widgets/card.h>
|
||||||
#include <lvgl/widgets/chip.h>
|
#include <lvgl/widgets/chip.h>
|
||||||
#include <lvgl/widgets/icon_button.h>
|
#include <lvgl/widgets/icon_button.h>
|
||||||
#include <lvgl/widgets/page_indicator.h>
|
|
||||||
#include <lvgl/widgets/spinner.h>
|
#include <lvgl/widgets/spinner.h>
|
||||||
#include <lvgl/widgets/toolbar.h>
|
#include <lvgl/widgets/toolbar.h>
|
||||||
|
|
||||||
@ -67,15 +65,9 @@ const struct ModuleSymbol lvgl_module_symbols[] = {
|
|||||||
// lvgl_grid_navigation
|
// lvgl_grid_navigation
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_grid_navigation_add),
|
DEFINE_MODULE_SYMBOL(lvgl_grid_navigation_add),
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_grid_navigation_remove),
|
DEFINE_MODULE_SYMBOL(lvgl_grid_navigation_remove),
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_grid_navigation_step),
|
DEFINE_MODULE_SYMBOL(lvgl_grid_navigation_focus_next),
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_grid_navigation_get_focused),
|
DEFINE_MODULE_SYMBOL(lvgl_grid_navigation_get_focused),
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_grid_navigation_is_container),
|
DEFINE_MODULE_SYMBOL(lvgl_grid_navigation_is_container),
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_focus_hide_key_selection),
|
|
||||||
// lvgl_insets
|
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_display_get_shape),
|
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_display_get_insets),
|
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_display_get_row_inset),
|
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_obj_add_edge_padding),
|
|
||||||
// lvgl_theme
|
// lvgl_theme
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_theme_get_settings),
|
DEFINE_MODULE_SYMBOL(lvgl_theme_get_settings),
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_theme_get_default_settings),
|
DEFINE_MODULE_SYMBOL(lvgl_theme_get_default_settings),
|
||||||
@ -83,9 +75,6 @@ const struct ModuleSymbol lvgl_module_symbols[] = {
|
|||||||
DEFINE_MODULE_SYMBOL(lvgl_theme_is_mono),
|
DEFINE_MODULE_SYMBOL(lvgl_theme_is_mono),
|
||||||
// lvgl_badge
|
// lvgl_badge
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_badge_create),
|
DEFINE_MODULE_SYMBOL(lvgl_badge_create),
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_page_indicator_create),
|
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_page_indicator_set_page_count),
|
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_page_indicator_set_page),
|
|
||||||
// lvgl_card
|
// lvgl_card
|
||||||
DEFINE_MODULE_SYMBOL(lvgl_card_create),
|
DEFINE_MODULE_SYMBOL(lvgl_card_create),
|
||||||
// lvgl_chip
|
// lvgl_chip
|
||||||
|
|||||||
@ -16,8 +16,6 @@ extern const lv_obj_class_t lvgl_sliderbox_class;
|
|||||||
extern const lv_obj_class_t lvgl_card_class;
|
extern const lv_obj_class_t lvgl_card_class;
|
||||||
extern const lv_obj_class_t lvgl_chip_class;
|
extern const lv_obj_class_t lvgl_chip_class;
|
||||||
extern const lv_obj_class_t lvgl_badge_class;
|
extern const lv_obj_class_t lvgl_badge_class;
|
||||||
extern const lv_obj_class_t lvgl_page_indicator_class;
|
|
||||||
extern const lv_obj_class_t lvgl_page_indicator_dot_class;
|
|
||||||
|
|
||||||
#define NEUTRAL_4 lv_color_hex(0x0E0E0E)
|
#define NEUTRAL_4 lv_color_hex(0x0E0E0E)
|
||||||
#define NEUTRAL_6 lv_color_hex(0x131313)
|
#define NEUTRAL_6 lv_color_hex(0x131313)
|
||||||
@ -139,10 +137,7 @@ extern const lv_obj_class_t lvgl_page_indicator_dot_class;
|
|||||||
#define CHIP_SHAPE (theme->config.is_compact ? CORNER_COMPACT : CORNER_SMALL)
|
#define CHIP_SHAPE (theme->config.is_compact ? CORNER_COMPACT : CORNER_SMALL)
|
||||||
#define CHIP_PAD_HOR (theme->config.is_compact ? 3 : SPACE_4)
|
#define CHIP_PAD_HOR (theme->config.is_compact ? 3 : SPACE_4)
|
||||||
#define CHIP_PAD_VER (theme->config.is_compact ? 2 : LV_DPX_CALC(theme->disp_dpi, 6))
|
#define CHIP_PAD_VER (theme->config.is_compact ? 2 : LV_DPX_CALC(theme->disp_dpi, 6))
|
||||||
#define PAGE_INDICATOR_COLOR COLOR_ON_SURFACE_VARIANT
|
#define BADGE_COLOR COLOR_PRIMARY
|
||||||
#define PAGE_INDICATOR_DOT_SIZE (theme->config.is_compact ? 4 : LV_DPX_CALC(theme->disp_dpi, 6))
|
|
||||||
#define PAGE_INDICATOR_GAP (theme->config.is_compact ? 3 : LV_DPX_CALC(theme->disp_dpi, 6))
|
|
||||||
#define BADGE_COLOR COLOR_SECONDARY
|
|
||||||
#define BADGE_SIZE (theme->config.is_compact ? 4 : LV_DPX_CALC(theme->disp_dpi, 6))
|
#define BADGE_SIZE (theme->config.is_compact ? 4 : LV_DPX_CALC(theme->disp_dpi, 6))
|
||||||
#define SCROLLBAR_COLOR COLOR_OUTLINE
|
#define SCROLLBAR_COLOR COLOR_OUTLINE
|
||||||
#define SCROLLBAR_OPACITY (LV_OPA_40)
|
#define SCROLLBAR_OPACITY (LV_OPA_40)
|
||||||
@ -166,7 +161,7 @@ extern const lv_obj_class_t lvgl_page_indicator_dot_class;
|
|||||||
#define TEXT_BUTTON_LABEL_COLOR COLOR_PRIMARY
|
#define TEXT_BUTTON_LABEL_COLOR COLOR_PRIMARY
|
||||||
#define TEXT_BUTTON_PRESSED_CONTAINER_COLOR COLOR_PRIMARY
|
#define TEXT_BUTTON_PRESSED_CONTAINER_COLOR COLOR_PRIMARY
|
||||||
#define TEXT_BUTTON_PAD_HOR (theme->config.is_compact ? 3 : SPACE_3)
|
#define TEXT_BUTTON_PAD_HOR (theme->config.is_compact ? 3 : SPACE_3)
|
||||||
#define ICON_BUTTON_COLOR COLOR_ON_SURFACE
|
#define ICON_BUTTON_COLOR COLOR_ON_SURFACE_VARIANT
|
||||||
#define ICON_BUTTON_CONTAINER_SHAPE (theme->config.is_compact ? CORNER_COMPACT : CORNER_LARGE)
|
#define ICON_BUTTON_CONTAINER_SHAPE (theme->config.is_compact ? CORNER_COMPACT : CORNER_LARGE)
|
||||||
#define ICON_BUTTON_FILLED_COLOR COLOR_PRIMARY
|
#define ICON_BUTTON_FILLED_COLOR COLOR_PRIMARY
|
||||||
#define ICON_BUTTON_FILLED_ICON_COLOR COLOR_ON_PRIMARY
|
#define ICON_BUTTON_FILLED_ICON_COLOR COLOR_ON_PRIMARY
|
||||||
@ -339,12 +334,6 @@ typedef struct {
|
|||||||
lv_style_t screen;
|
lv_style_t screen;
|
||||||
lv_style_t container;
|
lv_style_t container;
|
||||||
lv_style_t card;
|
lv_style_t card;
|
||||||
lv_style_t page_indicator;
|
|
||||||
#if LV_USE_LABEL
|
|
||||||
lv_style_t page_indicator_label;
|
|
||||||
#endif
|
|
||||||
lv_style_t page_indicator_dot;
|
|
||||||
lv_style_t page_indicator_dot_current;
|
|
||||||
lv_style_t badge;
|
lv_style_t badge;
|
||||||
lv_style_t chip;
|
lv_style_t chip;
|
||||||
lv_style_t chip_selected;
|
lv_style_t chip_selected;
|
||||||
@ -407,7 +396,7 @@ typedef struct {
|
|||||||
lv_style_t checkbox_box_selected;
|
lv_style_t checkbox_box_selected;
|
||||||
#endif
|
#endif
|
||||||
lv_style_t sliderbox;
|
lv_style_t sliderbox;
|
||||||
#if LV_USE_BAR || LV_USE_SLIDER
|
#if LV_USE_SLIDER
|
||||||
lv_style_t slider_track_size;
|
lv_style_t slider_track_size;
|
||||||
#endif
|
#endif
|
||||||
#if LV_USE_SLIDER
|
#if LV_USE_SLIDER
|
||||||
@ -769,29 +758,6 @@ static void style_init(my_theme_t * theme)
|
|||||||
lv_style_set_pad_all(&theme->styles.card, CARD_PAD);
|
lv_style_set_pad_all(&theme->styles.card, CARD_PAD);
|
||||||
lv_style_set_pad_gap(&theme->styles.card, CARD_GAP);
|
lv_style_set_pad_gap(&theme->styles.card, CARD_GAP);
|
||||||
|
|
||||||
style_init_reset(&theme->styles.page_indicator);
|
|
||||||
lv_style_set_bg_opa(&theme->styles.page_indicator, LV_OPA_TRANSP);
|
|
||||||
lv_style_set_border_width(&theme->styles.page_indicator, 0);
|
|
||||||
lv_style_set_pad_all(&theme->styles.page_indicator, 0);
|
|
||||||
lv_style_set_pad_gap(&theme->styles.page_indicator, PAGE_INDICATOR_GAP);
|
|
||||||
|
|
||||||
#if LV_USE_LABEL
|
|
||||||
style_init_reset(&theme->styles.page_indicator_label);
|
|
||||||
lv_style_set_text_color(&theme->styles.page_indicator_label, PAGE_INDICATOR_COLOR);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
style_init_reset(&theme->styles.page_indicator_dot);
|
|
||||||
lv_style_set_width(&theme->styles.page_indicator_dot, PAGE_INDICATOR_DOT_SIZE);
|
|
||||||
lv_style_set_height(&theme->styles.page_indicator_dot, PAGE_INDICATOR_DOT_SIZE);
|
|
||||||
lv_style_set_radius(&theme->styles.page_indicator_dot, LV_RADIUS_CIRCLE);
|
|
||||||
lv_style_set_bg_color(&theme->styles.page_indicator_dot, PAGE_INDICATOR_COLOR);
|
|
||||||
lv_style_set_bg_opa(&theme->styles.page_indicator_dot, LV_OPA_TRANSP);
|
|
||||||
lv_style_set_border_color(&theme->styles.page_indicator_dot, PAGE_INDICATOR_COLOR);
|
|
||||||
lv_style_set_border_width(&theme->styles.page_indicator_dot, 1);
|
|
||||||
|
|
||||||
style_init_reset(&theme->styles.page_indicator_dot_current);
|
|
||||||
lv_style_set_bg_opa(&theme->styles.page_indicator_dot_current, LV_OPA_COVER);
|
|
||||||
|
|
||||||
style_init_reset(&theme->styles.badge);
|
style_init_reset(&theme->styles.badge);
|
||||||
lv_style_set_width(&theme->styles.badge, BADGE_SIZE);
|
lv_style_set_width(&theme->styles.badge, BADGE_SIZE);
|
||||||
lv_style_set_height(&theme->styles.badge, BADGE_SIZE);
|
lv_style_set_height(&theme->styles.badge, BADGE_SIZE);
|
||||||
@ -908,7 +874,7 @@ static void style_init(my_theme_t * theme)
|
|||||||
lv_style_set_bg_opa(&theme->styles.app_bar_button_pressed, APP_BAR_PRESSED_OPACITY);
|
lv_style_set_bg_opa(&theme->styles.app_bar_button_pressed, APP_BAR_PRESSED_OPACITY);
|
||||||
|
|
||||||
style_init_reset(&theme->styles.app_bar_focus_ring);
|
style_init_reset(&theme->styles.app_bar_focus_ring);
|
||||||
lv_style_set_outline_color(&theme->styles.app_bar_focus_ring, FOCUS_RING_COLOR);
|
lv_style_set_outline_color(&theme->styles.app_bar_focus_ring, APP_BAR_CONTENT_COLOR);
|
||||||
lv_style_set_outline_width(&theme->styles.app_bar_focus_ring, APP_BAR_FOCUS_WIDTH);
|
lv_style_set_outline_width(&theme->styles.app_bar_focus_ring, APP_BAR_FOCUS_WIDTH);
|
||||||
lv_style_set_outline_pad(&theme->styles.app_bar_focus_ring, -APP_BAR_FOCUS_WIDTH);
|
lv_style_set_outline_pad(&theme->styles.app_bar_focus_ring, -APP_BAR_FOCUS_WIDTH);
|
||||||
lv_style_set_outline_opa(&theme->styles.app_bar_focus_ring, LV_OPA_COVER);
|
lv_style_set_outline_opa(&theme->styles.app_bar_focus_ring, LV_OPA_COVER);
|
||||||
@ -991,7 +957,7 @@ static void style_init(my_theme_t * theme)
|
|||||||
style_init_reset(&theme->styles.sliderbox);
|
style_init_reset(&theme->styles.sliderbox);
|
||||||
lv_style_set_pad_column(&theme->styles.sliderbox, SLIDERBOX_GAP);
|
lv_style_set_pad_column(&theme->styles.sliderbox, SLIDERBOX_GAP);
|
||||||
|
|
||||||
#if LV_USE_BAR || LV_USE_SLIDER
|
#if LV_USE_SLIDER
|
||||||
style_init_reset(&theme->styles.slider_track_size);
|
style_init_reset(&theme->styles.slider_track_size);
|
||||||
lv_style_set_height(&theme->styles.slider_track_size, SLIDER_TRACK_HEIGHT);
|
lv_style_set_height(&theme->styles.slider_track_size, SLIDER_TRACK_HEIGHT);
|
||||||
#endif
|
#endif
|
||||||
@ -1836,11 +1802,6 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* page_indicator > label */
|
|
||||||
if(lv_obj_check_type(parent, &lvgl_page_indicator_class)) {
|
|
||||||
lv_obj_add_style(obj, &theme->styles.page_indicator_label, 0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1872,29 +1833,11 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if(lv_obj_check_type(obj, &lvgl_page_indicator_class)) {
|
|
||||||
/* page_indicator */
|
|
||||||
lv_obj_add_style(obj, &theme->styles.page_indicator, 0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(lv_obj_check_type(obj, &lvgl_page_indicator_dot_class)) {
|
|
||||||
/* page_indicator_dot */
|
|
||||||
lv_obj_add_style(obj, &theme->styles.page_indicator_dot, 0);
|
|
||||||
lv_obj_add_style(obj, &theme->styles.page_indicator_dot_current, LV_STATE_CHECKED);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(lv_obj_check_type(obj, &lvgl_badge_class)) {
|
if(lv_obj_check_type(obj, &lvgl_badge_class)) {
|
||||||
/* badge */
|
/* badge */
|
||||||
lv_obj_add_style(obj, &theme->styles.badge, 0);
|
lv_obj_add_style(obj, &theme->styles.badge, 0);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#if LV_USE_IMAGE
|
|
||||||
if(lv_obj_check_type(obj, &lv_image_class)) {
|
|
||||||
/* image */
|
|
||||||
lv_obj_add_style(obj, &theme->styles.focus_ring_inset, LV_STATE_FOCUS_KEY);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
if(lv_obj_check_type(obj, &lvgl_chip_class)) {
|
if(lv_obj_check_type(obj, &lvgl_chip_class)) {
|
||||||
/* chip */
|
/* chip */
|
||||||
lv_obj_add_style(obj, &theme->styles.chip, 0);
|
lv_obj_add_style(obj, &theme->styles.chip, 0);
|
||||||
@ -1935,7 +1878,6 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
|||||||
#if LV_USE_BAR
|
#if LV_USE_BAR
|
||||||
if(lv_obj_check_type(obj, &lv_bar_class)) {
|
if(lv_obj_check_type(obj, &lv_bar_class)) {
|
||||||
/* bar */
|
/* bar */
|
||||||
lv_obj_add_style(obj, &theme->styles.slider_track_size, 0);
|
|
||||||
lv_obj_add_style(obj, &theme->styles.progress_track, 0);
|
lv_obj_add_style(obj, &theme->styles.progress_track, 0);
|
||||||
lv_obj_add_style(obj, &theme->styles.progress_indicator, LV_PART_INDICATOR);
|
lv_obj_add_style(obj, &theme->styles.progress_indicator, LV_PART_INDICATOR);
|
||||||
lv_obj_add_style(obj, &theme->styles.focus_ring, LV_STATE_FOCUS_KEY);
|
lv_obj_add_style(obj, &theme->styles.focus_ring, LV_STATE_FOCUS_KEY);
|
||||||
|
|||||||
@ -16,8 +16,6 @@ extern const lv_obj_class_t lvgl_sliderbox_class;
|
|||||||
extern const lv_obj_class_t lvgl_card_class;
|
extern const lv_obj_class_t lvgl_card_class;
|
||||||
extern const lv_obj_class_t lvgl_chip_class;
|
extern const lv_obj_class_t lvgl_chip_class;
|
||||||
extern const lv_obj_class_t lvgl_badge_class;
|
extern const lv_obj_class_t lvgl_badge_class;
|
||||||
extern const lv_obj_class_t lvgl_page_indicator_class;
|
|
||||||
extern const lv_obj_class_t lvgl_page_indicator_dot_class;
|
|
||||||
|
|
||||||
#define BLACK lv_color_black()
|
#define BLACK lv_color_black()
|
||||||
#define WHITE lv_color_white()
|
#define WHITE lv_color_white()
|
||||||
@ -89,9 +87,6 @@ extern const lv_obj_class_t lvgl_page_indicator_dot_class;
|
|||||||
#define CHIP_SHAPE (theme->config.is_compact ? CORNER_COMPACT : CORNER_SMALL)
|
#define CHIP_SHAPE (theme->config.is_compact ? CORNER_COMPACT : CORNER_SMALL)
|
||||||
#define CHIP_PAD_HOR (theme->config.is_compact ? 3 : SPACE_4)
|
#define CHIP_PAD_HOR (theme->config.is_compact ? 3 : SPACE_4)
|
||||||
#define CHIP_PAD_VER (theme->config.is_compact ? 2 : SPACE_2)
|
#define CHIP_PAD_VER (theme->config.is_compact ? 2 : SPACE_2)
|
||||||
#define PAGE_INDICATOR_COLOR COLOR_ON_SURFACE
|
|
||||||
#define PAGE_INDICATOR_DOT_SIZE (theme->config.is_compact ? 4 : LV_DPX_CALC(theme->disp_dpi, 6))
|
|
||||||
#define PAGE_INDICATOR_GAP (theme->config.is_compact ? 3 : LV_DPX_CALC(theme->disp_dpi, 6))
|
|
||||||
#define BADGE_COLOR COLOR_ON_SURFACE
|
#define BADGE_COLOR COLOR_ON_SURFACE
|
||||||
#define BADGE_SIZE (theme->config.is_compact ? 4 : LV_DPX_CALC(theme->disp_dpi, 6))
|
#define BADGE_SIZE (theme->config.is_compact ? 4 : LV_DPX_CALC(theme->disp_dpi, 6))
|
||||||
#define SCROLLBAR_COLOR COLOR_ON_SURFACE
|
#define SCROLLBAR_COLOR COLOR_ON_SURFACE
|
||||||
@ -221,12 +216,6 @@ typedef struct {
|
|||||||
lv_style_t screen;
|
lv_style_t screen;
|
||||||
lv_style_t container;
|
lv_style_t container;
|
||||||
lv_style_t card;
|
lv_style_t card;
|
||||||
lv_style_t page_indicator;
|
|
||||||
#if LV_USE_LABEL
|
|
||||||
lv_style_t page_indicator_label;
|
|
||||||
#endif
|
|
||||||
lv_style_t page_indicator_dot;
|
|
||||||
lv_style_t page_indicator_dot_current;
|
|
||||||
lv_style_t badge;
|
lv_style_t badge;
|
||||||
lv_style_t chip;
|
lv_style_t chip;
|
||||||
#if LV_USE_BUTTON || LV_USE_MSGBOX
|
#if LV_USE_BUTTON || LV_USE_MSGBOX
|
||||||
@ -261,7 +250,7 @@ typedef struct {
|
|||||||
lv_style_t checkbox_box_selected;
|
lv_style_t checkbox_box_selected;
|
||||||
#endif
|
#endif
|
||||||
lv_style_t sliderbox;
|
lv_style_t sliderbox;
|
||||||
#if LV_USE_BAR || LV_USE_SLIDER
|
#if LV_USE_SLIDER
|
||||||
lv_style_t slider_track_size;
|
lv_style_t slider_track_size;
|
||||||
#endif
|
#endif
|
||||||
#if LV_USE_SLIDER
|
#if LV_USE_SLIDER
|
||||||
@ -559,29 +548,6 @@ static void style_init(my_theme_t * theme)
|
|||||||
lv_style_set_pad_all(&theme->styles.card, CARD_PAD);
|
lv_style_set_pad_all(&theme->styles.card, CARD_PAD);
|
||||||
lv_style_set_pad_gap(&theme->styles.card, CARD_GAP);
|
lv_style_set_pad_gap(&theme->styles.card, CARD_GAP);
|
||||||
|
|
||||||
style_init_reset(&theme->styles.page_indicator);
|
|
||||||
lv_style_set_bg_opa(&theme->styles.page_indicator, LV_OPA_TRANSP);
|
|
||||||
lv_style_set_border_width(&theme->styles.page_indicator, 0);
|
|
||||||
lv_style_set_pad_all(&theme->styles.page_indicator, 0);
|
|
||||||
lv_style_set_pad_gap(&theme->styles.page_indicator, PAGE_INDICATOR_GAP);
|
|
||||||
|
|
||||||
#if LV_USE_LABEL
|
|
||||||
style_init_reset(&theme->styles.page_indicator_label);
|
|
||||||
lv_style_set_text_color(&theme->styles.page_indicator_label, PAGE_INDICATOR_COLOR);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
style_init_reset(&theme->styles.page_indicator_dot);
|
|
||||||
lv_style_set_width(&theme->styles.page_indicator_dot, PAGE_INDICATOR_DOT_SIZE);
|
|
||||||
lv_style_set_height(&theme->styles.page_indicator_dot, PAGE_INDICATOR_DOT_SIZE);
|
|
||||||
lv_style_set_radius(&theme->styles.page_indicator_dot, LV_RADIUS_CIRCLE);
|
|
||||||
lv_style_set_bg_color(&theme->styles.page_indicator_dot, PAGE_INDICATOR_COLOR);
|
|
||||||
lv_style_set_bg_opa(&theme->styles.page_indicator_dot, LV_OPA_TRANSP);
|
|
||||||
lv_style_set_border_color(&theme->styles.page_indicator_dot, PAGE_INDICATOR_COLOR);
|
|
||||||
lv_style_set_border_width(&theme->styles.page_indicator_dot, 1);
|
|
||||||
|
|
||||||
style_init_reset(&theme->styles.page_indicator_dot_current);
|
|
||||||
lv_style_set_bg_opa(&theme->styles.page_indicator_dot_current, LV_OPA_COVER);
|
|
||||||
|
|
||||||
style_init_reset(&theme->styles.badge);
|
style_init_reset(&theme->styles.badge);
|
||||||
lv_style_set_width(&theme->styles.badge, BADGE_SIZE);
|
lv_style_set_width(&theme->styles.badge, BADGE_SIZE);
|
||||||
lv_style_set_height(&theme->styles.badge, BADGE_SIZE);
|
lv_style_set_height(&theme->styles.badge, BADGE_SIZE);
|
||||||
@ -722,7 +688,7 @@ static void style_init(my_theme_t * theme)
|
|||||||
style_init_reset(&theme->styles.sliderbox);
|
style_init_reset(&theme->styles.sliderbox);
|
||||||
lv_style_set_pad_column(&theme->styles.sliderbox, SLIDERBOX_GAP);
|
lv_style_set_pad_column(&theme->styles.sliderbox, SLIDERBOX_GAP);
|
||||||
|
|
||||||
#if LV_USE_BAR || LV_USE_SLIDER
|
#if LV_USE_SLIDER
|
||||||
style_init_reset(&theme->styles.slider_track_size);
|
style_init_reset(&theme->styles.slider_track_size);
|
||||||
lv_style_set_height(&theme->styles.slider_track_size, SLIDER_TRACK_HEIGHT);
|
lv_style_set_height(&theme->styles.slider_track_size, SLIDER_TRACK_HEIGHT);
|
||||||
#endif
|
#endif
|
||||||
@ -1435,11 +1401,6 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
/* page_indicator > label */
|
|
||||||
if(lv_obj_check_type(parent, &lvgl_page_indicator_class)) {
|
|
||||||
lv_obj_add_style(obj, &theme->styles.page_indicator_label, 0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -1467,17 +1428,6 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
if(lv_obj_check_type(obj, &lvgl_page_indicator_class)) {
|
|
||||||
/* page_indicator */
|
|
||||||
lv_obj_add_style(obj, &theme->styles.page_indicator, 0);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(lv_obj_check_type(obj, &lvgl_page_indicator_dot_class)) {
|
|
||||||
/* page_indicator_dot */
|
|
||||||
lv_obj_add_style(obj, &theme->styles.page_indicator_dot, 0);
|
|
||||||
lv_obj_add_style(obj, &theme->styles.page_indicator_dot_current, LV_STATE_CHECKED);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(lv_obj_check_type(obj, &lvgl_badge_class)) {
|
if(lv_obj_check_type(obj, &lvgl_badge_class)) {
|
||||||
/* badge */
|
/* badge */
|
||||||
lv_obj_add_style(obj, &theme->styles.badge, 0);
|
lv_obj_add_style(obj, &theme->styles.badge, 0);
|
||||||
@ -1520,7 +1470,6 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
|||||||
#if LV_USE_BAR
|
#if LV_USE_BAR
|
||||||
if(lv_obj_check_type(obj, &lv_bar_class)) {
|
if(lv_obj_check_type(obj, &lv_bar_class)) {
|
||||||
/* bar */
|
/* bar */
|
||||||
lv_obj_add_style(obj, &theme->styles.slider_track_size, 0);
|
|
||||||
lv_obj_add_style(obj, &theme->styles.slider_track, 0);
|
lv_obj_add_style(obj, &theme->styles.slider_track, 0);
|
||||||
lv_obj_add_style(obj, &theme->styles.slider_active_track, LV_PART_INDICATOR);
|
lv_obj_add_style(obj, &theme->styles.slider_active_track, LV_PART_INDICATOR);
|
||||||
lv_obj_add_style(obj, &theme->styles.focus_ring, LV_STATE_FOCUS_KEY);
|
lv_obj_add_style(obj, &theme->styles.focus_ring, LV_STATE_FOCUS_KEY);
|
||||||
|
|||||||