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)
|
||||
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
|
||||
# the terminal ioctls (TIOCGWINSZ) Tactility's ioctl() supports for app fds.
|
||||
# C and C++ only: assembly sources can't include a C header.
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.usbHostEnabled=true
|
||||
storage.userDataLocation=Internal
|
||||
|
||||
display.size=5"
|
||||
display.shape=rectangle
|
||||
display.dpi=187
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.9"
|
||||
display.shape=rectangle
|
||||
display.dpi=139
|
||||
|
||||
lvgl.colorDepth=8
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.2"
|
||||
display.shape=rectangle
|
||||
display.dpi=182
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.4"
|
||||
display.shape=rectangle
|
||||
display.dpi=167
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.4"
|
||||
display.shape=rectangle
|
||||
display.dpi=167
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.8"
|
||||
display.shape=rectangle
|
||||
display.dpi=143
|
||||
|
||||
touch.calibrationSupported=true
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.8"
|
||||
display.shape=rectangle
|
||||
display.dpi=143
|
||||
|
||||
touch.calibrationSupported=true
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=3.2"
|
||||
display.shape=rectangle
|
||||
display.dpi=125
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=3.5"
|
||||
display.shape=rectangle
|
||||
display.dpi=165
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -13,6 +13,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=4"
|
||||
display.shape=rectangle
|
||||
display.dpi=170
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=4.3"
|
||||
display.shape=rectangle
|
||||
display.dpi=217
|
||||
|
||||
cdn.infoMessage=
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.8"
|
||||
display.shape=rectangle
|
||||
display.dpi=143
|
||||
|
||||
touch.calibrationSupported=true
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.8"
|
||||
display.shape=rectangle
|
||||
display.dpi=125
|
||||
|
||||
touch.calibrationSupported=true
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.8"
|
||||
display.shape=rectangle
|
||||
display.dpi=143
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=3.5"
|
||||
display.shape=rectangle
|
||||
display.dpi=165
|
||||
|
||||
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
|
||||
|
||||
display.size=5"
|
||||
display.shape=rectangle
|
||||
display.dpi=187
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.8"
|
||||
display.shape=rectangle
|
||||
display.dpi=143
|
||||
|
||||
touch.calibrationSupported=true
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=3.5"
|
||||
display.shape=rectangle
|
||||
display.dpi=165
|
||||
|
||||
touch.calibrationSupported=true
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=5.0"
|
||||
display.shape=rectangle
|
||||
display.dpi=187
|
||||
|
||||
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
|
||||
|
||||
display.size=2.8"
|
||||
display.shape=rectangle
|
||||
display.dpi=143
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -14,6 +14,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=7"
|
||||
display.shape=rectangle
|
||||
display.dpi=187
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -10,6 +10,7 @@ hardware.spiRam=false
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.8"
|
||||
display.shape=rectangle
|
||||
display.dpi=143
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -14,6 +14,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=5"
|
||||
display.shape=rectangle
|
||||
display.dpi=187
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=Internal
|
||||
|
||||
display.size=0.96"
|
||||
display.shape=rectangle
|
||||
display.dpi=149
|
||||
|
||||
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
|
||||
|
||||
display.size=4.7"
|
||||
display.shape=rectangle
|
||||
display.dpi=235
|
||||
|
||||
lvgl.colorDepth=8
|
||||
|
||||
@ -19,6 +19,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=Internal
|
||||
|
||||
display.size=3.1"
|
||||
display.shape=rectangle
|
||||
display.dpi=128
|
||||
|
||||
lvgl.colorDepth=8
|
||||
|
||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.8"
|
||||
display.shape=rectangle
|
||||
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.
|
||||
|
||||
@ -18,6 +18,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=3.1"
|
||||
display.shape=rectangle
|
||||
display.dpi=128
|
||||
|
||||
lvgl.colorDepth=8
|
||||
|
||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.8"
|
||||
display.shape=rectangle
|
||||
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.
|
||||
|
||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=Internal
|
||||
|
||||
display.size=1.9"
|
||||
display.shape=rectangle
|
||||
display.dpi=191
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -13,6 +13,7 @@ hardware.esptoolFlashFreq=80M
|
||||
storage.userDataLocation=Internal
|
||||
|
||||
display.size=1.14"
|
||||
display.shape=rectangle
|
||||
display.dpi=242
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=0.96"
|
||||
display.shape=rectangle
|
||||
display.dpi=186
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=1.9"
|
||||
display.shape=rectangle
|
||||
display.dpi=191
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.8"
|
||||
display.shape=rectangle
|
||||
display.dpi=125
|
||||
|
||||
touch.calibrationSupported=true
|
||||
|
||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2.33"
|
||||
display.shape=rectangle
|
||||
display.dpi=227
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -13,6 +13,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
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)
|
||||
display.dpi=139
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
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)
|
||||
display.dpi=139
|
||||
|
||||
|
||||
@ -13,6 +13,7 @@ hardware.esptoolFlashFreq=80M
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2"
|
||||
display.shape=rectangle
|
||||
display.dpi=200
|
||||
|
||||
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
|
||||
|
||||
display.size=2"
|
||||
display.shape=rectangle
|
||||
display.dpi=200
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=4.7"
|
||||
display.shape=rectangle
|
||||
display.dpi=235
|
||||
|
||||
lvgl.colorDepth=8
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=2"
|
||||
display.shape=rectangle
|
||||
display.dpi=200
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -13,6 +13,7 @@ hardware.esptoolFlashFreq=80M
|
||||
storage.userDataLocation=Internal
|
||||
|
||||
display.size=1.14"
|
||||
display.shape=rectangle
|
||||
display.dpi=242
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=Internal
|
||||
|
||||
display.size=1.14"
|
||||
display.shape=rectangle
|
||||
display.dpi=242
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -21,6 +21,7 @@ storage.userDataLocation=SD
|
||||
dependencies.useDeprecatedHal=false
|
||||
|
||||
display.size=5"
|
||||
display.shape=rectangle
|
||||
display.dpi=294
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -18,6 +18,7 @@ touch.calibrationSupported=true
|
||||
touch.calibrationRequired=false
|
||||
|
||||
display.size=7"
|
||||
display.shape=rectangle
|
||||
display.dpi=117
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -13,6 +13,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=3.5"
|
||||
display.shape=rectangle
|
||||
display.dpi=165
|
||||
|
||||
touch.calibrationSupported=true
|
||||
|
||||
@ -18,6 +18,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=1.14"
|
||||
display.shape=rectangle
|
||||
display.dpi=143
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -17,6 +17,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=1.3"
|
||||
display.shape=rectangle
|
||||
display.dpi=261
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -18,6 +18,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=Internal
|
||||
|
||||
display.size=1.28"
|
||||
display.shape=circle
|
||||
display.dpi=265
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -84,7 +84,6 @@
|
||||
compatible = "galaxycore,gc9a01";
|
||||
horizontal-resolution = <240>;
|
||||
vertical-resolution = <240>;
|
||||
shape = <DISPLAY_SHAPE_CIRCLE>;
|
||||
mirror-y;
|
||||
invert-color;
|
||||
bgr-order;
|
||||
|
||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=1.47"
|
||||
display.shape=rectangle
|
||||
display.dpi=247
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -77,9 +77,6 @@
|
||||
compatible = "jadard,jd9853";
|
||||
horizontal-resolution = <172>;
|
||||
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>;
|
||||
invert-color;
|
||||
pin-dc = <&gpio0 45 GPIO_FLAG_NONE>;
|
||||
|
||||
@ -16,6 +16,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=4.3"
|
||||
display.shape=rectangle
|
||||
display.dpi=217
|
||||
|
||||
lvgl.colorDepth=16
|
||||
|
||||
@ -15,6 +15,7 @@ hardware.bluetooth=true
|
||||
storage.userDataLocation=SD
|
||||
|
||||
display.size=3.5"
|
||||
display.shape=rectangle
|
||||
display.dpi=165
|
||||
|
||||
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
|
||||
|
||||
include: ["display.yaml"]
|
||||
|
||||
compatible: "galaxycore,gc9a01"
|
||||
|
||||
properties:
|
||||
|
||||
@ -9,13 +9,9 @@ extern "C" {
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <tactility/device.h>
|
||||
#include <tactility/drivers/display.h>
|
||||
#include <tactility/drivers/gpio.h>
|
||||
|
||||
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 vertical_resolution;
|
||||
int32_t gap_x;
|
||||
|
||||
@ -316,11 +316,6 @@ static error_t gc9a01_get_backlight(Device* device, Device** backlight) {
|
||||
|
||||
// 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 = {
|
||||
.capabilities = DISPLAY_CAPABILITY_CAP_MIRROR | DISPLAY_CAPABILITY_CAP_SWAP_XY |
|
||||
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_backlight = gc9a01_get_backlight,
|
||||
.has_capability = nullptr,
|
||||
.get_shape = gc9a01_get_shape,
|
||||
};
|
||||
|
||||
Driver gc9a01_driver = {
|
||||
|
||||
@ -2,8 +2,6 @@ description: Jadard JD9853 display panel
|
||||
|
||||
bus: spi
|
||||
|
||||
include: ["display.yaml"]
|
||||
|
||||
compatible: "jadard,jd9853"
|
||||
|
||||
properties:
|
||||
|
||||
@ -9,13 +9,9 @@ extern "C" {
|
||||
#include <stdbool.h>
|
||||
|
||||
#include <tactility/device.h>
|
||||
#include <tactility/drivers/display.h>
|
||||
#include <tactility/drivers/gpio.h>
|
||||
|
||||
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 vertical_resolution;
|
||||
int32_t gap_x;
|
||||
|
||||
@ -329,11 +329,6 @@ static error_t jd9853_get_backlight(Device* device, Device** backlight) {
|
||||
|
||||
// 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 = {
|
||||
.capabilities = DISPLAY_CAPABILITY_CAP_MIRROR | DISPLAY_CAPABILITY_CAP_SWAP_XY |
|
||||
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_backlight = jd9853_get_backlight,
|
||||
.has_capability = nullptr,
|
||||
.get_shape = jd9853_get_shape,
|
||||
};
|
||||
|
||||
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:
|
||||
|
||||
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).
|
||||
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.
|
||||
|
||||
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.
|
||||
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.
|
||||
|
||||
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 |
|
||||
|--------------------|-------------------------|
|
||||
| Tactility | GNU Public License v3.0 |
|
||||
| TactilityC | Apache License v2.0 |
|
||||
| TactilityFreeRTOS | Apache License v2.0 |
|
||||
| TactilityKernel | Apache License v2.0 |
|
||||
| Tests | (varies) |
|
||||
|
||||
@ -28,7 +28,7 @@ enum AppCategory {
|
||||
|
||||
/** Bit flags for AppManifest::flags. */
|
||||
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,
|
||||
/** No window-manager dependency. Safe to start from a context with no GUI available. */
|
||||
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 = [
|
||||
# Location tracking
|
||||
"location_on",
|
||||
"location_off",
|
||||
# Development server
|
||||
"cloud",
|
||||
# Low on available memory
|
||||
|
||||
@ -17,8 +17,8 @@ extern "C" {
|
||||
* @brief Trackball operating mode.
|
||||
*/
|
||||
enum LvglTrackballMode {
|
||||
/** Navigation with arrow keys, and the button as the enter key. No cursor is shown. */
|
||||
LVGL_TRACKBALL_MODE_KEYS,
|
||||
/** Navigation via enc_diff (scroll wheel behavior). No cursor is shown. */
|
||||
LVGL_TRACKBALL_MODE_ENCODER,
|
||||
/** Mouse cursor via point.x/point.y. A cursor is shown if an image was set via
|
||||
* lvgl_trackball_set_cursor_image(). */
|
||||
LVGL_TRACKBALL_MODE_POINTER
|
||||
@ -33,8 +33,8 @@ struct LvglTrackballSettings {
|
||||
/** When false, movement and button presses are drained from the device and discarded:
|
||||
* the indev reports no movement and stays released. */
|
||||
bool enabled;
|
||||
/** Keys mode: arrow key presses per raw trackball tick. Must be >= 1. */
|
||||
uint8_t key_sensitivity;
|
||||
/** Encoder mode: steps per raw trackball tick. Must be >= 1. */
|
||||
uint8_t encoder_sensitivity;
|
||||
/** Pointer mode: pixels per raw trackball tick. Must be >= 1. */
|
||||
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
|
||||
* 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,
|
||||
* e.g. to switch to pointer mode - each device added this way can independently run with or
|
||||
* 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);
|
||||
|
||||
/**
|
||||
* @return the default (all fields explicitly set) LvglTrackballSettings: keys mode, enabled,
|
||||
* key_sensitivity 1, pointer_sensitivity 10.
|
||||
* @return the default (all fields explicitly set) LvglTrackballSettings: encoder mode, enabled,
|
||||
* encoder_sensitivity 1, pointer_sensitivity 10.
|
||||
*/
|
||||
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);
|
||||
|
||||
/**
|
||||
* @brief Moves the focus to the next or previous widget, 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.
|
||||
* @param[in] group the focus group
|
||||
* @param[in] next true for the next widget, false for the previous widget
|
||||
* @brief Moves the focus to the next or previous child in their order, for devices that can only step through widgets.
|
||||
* Past the last or first child, the focus moves to the next or previous object in the container's focus group.
|
||||
* @param[in] container a container that was passed to lvgl_grid_navigation_add()
|
||||
* @param[in] next true for the next child, false for the previous child
|
||||
*/
|
||||
void lvgl_grid_navigation_step(lv_group_t* group, 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);
|
||||
void lvgl_grid_navigation_focus_next(lv_obj_t* container, bool next);
|
||||
|
||||
/**
|
||||
* @param[in] container a container that was passed to lvgl_grid_navigation_add()
|
||||
|
||||
@ -9,7 +9,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
/** 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
|
||||
extern const char* const lvgl_icon_shared_names[];
|
||||
|
||||
@ -3,7 +3,6 @@
|
||||
#pragma once
|
||||
|
||||
#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_MEMORY "\xEE\x8C\xA2"
|
||||
#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" {
|
||||
#endif
|
||||
|
||||
#include <lvgl.h>
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
void lvgl_keyboard_on_start_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
|
||||
}
|
||||
#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
|
||||
#include <lvgl/devices/keyboard.h>
|
||||
#include <lvgl/devices/device_context.h>
|
||||
#include <lvgl/devices/keyboard_private.h>
|
||||
#include <lvgl/grid_navigation.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_RIGHT: return LV_KEY_RIGHT;
|
||||
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_END: return LV_KEY_END;
|
||||
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) {
|
||||
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;
|
||||
}
|
||||
|
||||
data->key = codepoint_to_lv_key(key_data.key);
|
||||
lv_group_t* group = lv_indev_get_group(indev);
|
||||
if (key_data.key == CODEPOINT_FOCUS_NEXT || key_data.key == CODEPOINT_FOCUS_PREVIOUS) {
|
||||
// Devices that can only step through widgets also visit the children of grid navigation containers.
|
||||
// LVGL doesn't see these keys: the group would skip the children, as only the container is in the group.
|
||||
if (key_data.pressed && group != nullptr) {
|
||||
lvgl_grid_navigation_step(group, key_data.key == CODEPOINT_FOCUS_NEXT);
|
||||
lv_obj_t* focused = group != nullptr ? lv_group_get_focused(group) : nullptr;
|
||||
if (lvgl_grid_navigation_is_container(focused)) {
|
||||
if (key_data.key == CODEPOINT_ARROW_UP) {
|
||||
// Grid navigation moves the focus in two dimensions with the arrow keys
|
||||
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->continue_reading = key_data.continue_reading;
|
||||
}
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
#include <lvgl/devices/pointer.h>
|
||||
#include <lvgl/devices/device_context.h>
|
||||
#include <lvgl/grid_navigation.h>
|
||||
|
||||
#include <tactility/device.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
|
||||
// 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
|
||||
// point this round go inactive (RELEASED). Returns true when a new touch started.
|
||||
static bool lvgl_pointer_pool_assign(struct LvglPointerPool* pool, int32_t native_x_max) {
|
||||
// point this round go inactive (RELEASED).
|
||||
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
|
||||
// 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.
|
||||
@ -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
|
||||
// that wasn't just released this round.
|
||||
bool touch_started = false;
|
||||
for (uint8_t r = 0; r < pool->raw_count; r++) {
|
||||
if (raw_claimed[r]) continue;
|
||||
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].y = (lv_coord_t)pool->raw_y[r];
|
||||
raw_claimed[r] = true;
|
||||
touch_started = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return touch_started;
|
||||
}
|
||||
|
||||
// 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_y_max = display != NULL ? lv_display_get_original_vertical_resolution(display) - 1 : 0;
|
||||
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.
|
||||
// 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());
|
||||
}
|
||||
lvgl_pointer_pool_assign(pool, native_x_max);
|
||||
}
|
||||
pool->round_pos = (uint8_t)((pool->round_pos + 1) % pool->slot_count);
|
||||
|
||||
|
||||
@ -2,16 +2,11 @@
|
||||
#include <lvgl/devices/trackball.h>
|
||||
#include <lvgl/devices/device_context.h>
|
||||
#include <lvgl/devices/keyboard.h>
|
||||
#include <lvgl/devices/keyboard_private.h>
|
||||
#include <lvgl/grid_navigation.h>
|
||||
#include <lvgl/lvgl.h>
|
||||
|
||||
#include <tactility/drivers/keyboard.h>
|
||||
#include <tactility/drivers/trackball.h>
|
||||
|
||||
#include <algorithm>
|
||||
#include <cstdint>
|
||||
#include <cstdlib>
|
||||
|
||||
constexpr auto* TAG = "lvgl_trackball";
|
||||
|
||||
@ -21,13 +16,6 @@ struct LvglTrackballCtx {
|
||||
int32_t cursor_y;
|
||||
lv_obj_t* cursor;
|
||||
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) {
|
||||
@ -80,49 +68,6 @@ static void hide_cursor(LvglTrackballCtx* ctx) {
|
||||
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) {
|
||||
auto* wrapper = static_cast<LvglDeviceContext*>(lv_indev_get_driver_data(indev));
|
||||
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);
|
||||
|
||||
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;
|
||||
if (ctx->settings.enabled) {
|
||||
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;
|
||||
|
||||
// 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) {
|
||||
lv_display_trigger_activity(display);
|
||||
}
|
||||
@ -171,9 +113,9 @@ extern "C" {
|
||||
|
||||
LvglTrackballSettings lvgl_trackball_settings_get_default() {
|
||||
return LvglTrackballSettings {
|
||||
.mode = LVGL_TRACKBALL_MODE_KEYS,
|
||||
.mode = LVGL_TRACKBALL_MODE_ENCODER,
|
||||
.enabled = true,
|
||||
.key_sensitivity = 1,
|
||||
.encoder_sensitivity = 1,
|
||||
.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;
|
||||
}
|
||||
|
||||
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_driver_data(indev, wrapper);
|
||||
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);
|
||||
|
||||
// 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
|
||||
// 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);
|
||||
}
|
||||
|
||||
@ -246,8 +188,8 @@ error_t lvgl_trackball_set_settings(lv_indev_t* indev, const struct LvglTrackbal
|
||||
}
|
||||
|
||||
if (
|
||||
(settings->mode != LVGL_TRACKBALL_MODE_KEYS && settings->mode != LVGL_TRACKBALL_MODE_POINTER) ||
|
||||
settings->key_sensitivity == 0 ||
|
||||
(settings->mode != LVGL_TRACKBALL_MODE_ENCODER && settings->mode != LVGL_TRACKBALL_MODE_POINTER) ||
|
||||
settings->encoder_sensitivity == 0 ||
|
||||
settings->pointer_sensitivity == 0
|
||||
) {
|
||||
return ERROR_INVALID_ARGUMENT;
|
||||
@ -261,8 +203,6 @@ error_t lvgl_trackball_set_settings(lv_indev_t* indev, const struct LvglTrackbal
|
||||
ctx->settings = *settings;
|
||||
|
||||
if (mode_changed) {
|
||||
ctx->pending_count = 0;
|
||||
ctx->pressed_key = 0;
|
||||
if (settings->mode == LVGL_TRACKBALL_MODE_POINTER) {
|
||||
lvgl_keyboard_disable(indev);
|
||||
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);
|
||||
} else {
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
// 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
|
||||
// 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) {
|
||||
|
||||
@ -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) {
|
||||
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);
|
||||
|
||||
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_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);
|
||||
|
||||
if (group == nullptr) {
|
||||
@ -82,63 +65,27 @@ void lvgl_grid_navigation_remove(lv_obj_t* container) {
|
||||
|
||||
// Matches which children grid navigation can focus
|
||||
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
|
||||
static lv_obj_t* find_focusable_child(lv_obj_t* container, int32_t index, bool next) {
|
||||
void lvgl_grid_navigation_focus_next(lv_obj_t* container, bool next) {
|
||||
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) {
|
||||
auto* child = lv_obj_get_child(container, index);
|
||||
if (is_focusable(child)) {
|
||||
return child;
|
||||
}
|
||||
}
|
||||
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);
|
||||
lv_gridnav_set_focused(container, child, LV_ANIM_ON);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
lv_group_set_editing(group, false);
|
||||
if (next) {
|
||||
lv_group_focus_next(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);
|
||||
lv_group_t* group = lv_obj_get_group(container);
|
||||
if (group != nullptr) {
|
||||
if (next) {
|
||||
lv_group_focus_next(group);
|
||||
} else {
|
||||
lv_group_focus_prev(group);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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[] = {
|
||||
"location_on",
|
||||
"location_off",
|
||||
"cloud",
|
||||
"memory",
|
||||
"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/grid_navigation.h>
|
||||
#include <lvgl/insets.h>
|
||||
#include <lvgl/theme.h>
|
||||
#include <lvgl/widgets/badge.h>
|
||||
#include <lvgl/widgets/card.h>
|
||||
#include <lvgl/widgets/chip.h>
|
||||
#include <lvgl/widgets/icon_button.h>
|
||||
#include <lvgl/widgets/page_indicator.h>
|
||||
#include <lvgl/widgets/spinner.h>
|
||||
#include <lvgl/widgets/toolbar.h>
|
||||
|
||||
@ -67,15 +65,9 @@ const struct ModuleSymbol lvgl_module_symbols[] = {
|
||||
// lvgl_grid_navigation
|
||||
DEFINE_MODULE_SYMBOL(lvgl_grid_navigation_add),
|
||||
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_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
|
||||
DEFINE_MODULE_SYMBOL(lvgl_theme_get_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),
|
||||
// lvgl_badge
|
||||
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
|
||||
DEFINE_MODULE_SYMBOL(lvgl_card_create),
|
||||
// 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_chip_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_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_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 PAGE_INDICATOR_COLOR COLOR_ON_SURFACE_VARIANT
|
||||
#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_COLOR COLOR_PRIMARY
|
||||
#define BADGE_SIZE (theme->config.is_compact ? 4 : LV_DPX_CALC(theme->disp_dpi, 6))
|
||||
#define SCROLLBAR_COLOR COLOR_OUTLINE
|
||||
#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_PRESSED_CONTAINER_COLOR COLOR_PRIMARY
|
||||
#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_FILLED_COLOR COLOR_PRIMARY
|
||||
#define ICON_BUTTON_FILLED_ICON_COLOR COLOR_ON_PRIMARY
|
||||
@ -339,12 +334,6 @@ typedef struct {
|
||||
lv_style_t screen;
|
||||
lv_style_t container;
|
||||
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 chip;
|
||||
lv_style_t chip_selected;
|
||||
@ -407,7 +396,7 @@ typedef struct {
|
||||
lv_style_t checkbox_box_selected;
|
||||
#endif
|
||||
lv_style_t sliderbox;
|
||||
#if LV_USE_BAR || LV_USE_SLIDER
|
||||
#if LV_USE_SLIDER
|
||||
lv_style_t slider_track_size;
|
||||
#endif
|
||||
#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_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);
|
||||
lv_style_set_width(&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);
|
||||
|
||||
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_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);
|
||||
@ -991,7 +957,7 @@ static void style_init(my_theme_t * theme)
|
||||
style_init_reset(&theme->styles.sliderbox);
|
||||
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);
|
||||
lv_style_set_height(&theme->styles.slider_track_size, SLIDER_TRACK_HEIGHT);
|
||||
#endif
|
||||
@ -1836,11 +1802,6 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
||||
return;
|
||||
}
|
||||
#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;
|
||||
}
|
||||
#endif
|
||||
@ -1872,29 +1833,11 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
||||
return;
|
||||
}
|
||||
#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)) {
|
||||
/* badge */
|
||||
lv_obj_add_style(obj, &theme->styles.badge, 0);
|
||||
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)) {
|
||||
/* chip */
|
||||
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_obj_check_type(obj, &lv_bar_class)) {
|
||||
/* 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_indicator, LV_PART_INDICATOR);
|
||||
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_chip_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 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_PAD_HOR (theme->config.is_compact ? 3 : SPACE_4)
|
||||
#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_SIZE (theme->config.is_compact ? 4 : LV_DPX_CALC(theme->disp_dpi, 6))
|
||||
#define SCROLLBAR_COLOR COLOR_ON_SURFACE
|
||||
@ -221,12 +216,6 @@ typedef struct {
|
||||
lv_style_t screen;
|
||||
lv_style_t container;
|
||||
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 chip;
|
||||
#if LV_USE_BUTTON || LV_USE_MSGBOX
|
||||
@ -261,7 +250,7 @@ typedef struct {
|
||||
lv_style_t checkbox_box_selected;
|
||||
#endif
|
||||
lv_style_t sliderbox;
|
||||
#if LV_USE_BAR || LV_USE_SLIDER
|
||||
#if LV_USE_SLIDER
|
||||
lv_style_t slider_track_size;
|
||||
#endif
|
||||
#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_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);
|
||||
lv_style_set_width(&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);
|
||||
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);
|
||||
lv_style_set_height(&theme->styles.slider_track_size, SLIDER_TRACK_HEIGHT);
|
||||
#endif
|
||||
@ -1435,11 +1401,6 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
||||
return;
|
||||
}
|
||||
#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;
|
||||
}
|
||||
#endif
|
||||
@ -1467,17 +1428,6 @@ static void theme_apply(lv_theme_t * th, lv_obj_t * obj)
|
||||
return;
|
||||
}
|
||||
#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)) {
|
||||
/* badge */
|
||||
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_obj_check_type(obj, &lv_bar_class)) {
|
||||
/* 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_active_track, LV_PART_INDICATOR);
|
||||
lv_obj_add_style(obj, &theme->styles.focus_ring, LV_STATE_FOCUS_KEY);
|
||||
|
||||