add matplotlib and simple gradient colormaps
This commit is contained in:
@@ -1,10 +1,10 @@
|
||||
[package]
|
||||
name = "colorcet"
|
||||
version = "0.1.0"
|
||||
version = "0.2.0"
|
||||
edition = "2024"
|
||||
rust-version = "1.85.1"
|
||||
authors = ["Wim Pomp <w.pomp@nki.nl>"]
|
||||
license = "CC-BY"
|
||||
license = "CC-BY-4.0 AND PSF-2.0 AND MIT"
|
||||
description = "Colorcet colormaps."
|
||||
homepage = "https://github.com/wimpomp/colorcet"
|
||||
repository = "https://github.com/wimpomp/colorcet"
|
||||
@@ -13,5 +13,7 @@ keywords = ["color", "colormap", "color-scales", "visualization", "gradient"]
|
||||
categories = ["graphics", "visualization"]
|
||||
|
||||
[dependencies]
|
||||
phf = { version = "0.12.1", features = ["macros"] }
|
||||
colorgrad = "0.7.2"
|
||||
num-traits = "0.2.19"
|
||||
phf = { version = "0.13.1", features = ["macros"] }
|
||||
thiserror = "2.0.16"
|
||||
263
LICENSE
263
LICENSE
@@ -1,250 +1,19 @@
|
||||
Creative Commons Attribution 4.0 International Public License (CC-BY)
|
||||
Copyright (c) 2025 Wim Pomp
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution 4.0 International Public License ("Public License"). To the
|
||||
extent this Public License may be interpreted as a contract, You are
|
||||
granted the Licensed Rights in consideration of Your acceptance of
|
||||
these terms and conditions, and the Licensor grants You such rights in
|
||||
consideration of benefits the Licensor receives from making the
|
||||
Licensed Material available under these terms and conditions.
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
Section 1 - Definitions.
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material and
|
||||
in which the Licensed Material is translated, altered, arranged,
|
||||
transformed, or otherwise modified in a manner requiring permission
|
||||
under the Copyright and Similar Rights held by the Licensor. For
|
||||
purposes of this Public License, where the Licensed Material is a
|
||||
musical work, performance, or sound recording, Adapted Material is
|
||||
always produced where the Licensed Material is synched in timed
|
||||
relation with a moving image.
|
||||
b. Adapter's License means the license You apply to Your Copyright and
|
||||
Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
c. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section [5]2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
d. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
e. Exceptions and Limitations means fair use, fair dealing, and/or any
|
||||
other exception or limitation to Copyright and Similar Rights that
|
||||
applies to Your use of the Licensed Material.
|
||||
f. Licensed Material means the artistic or literary work, database, or
|
||||
other material to which the Licensor applied this Public License.
|
||||
g. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
h. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
i. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such as
|
||||
reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
j. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
k. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
Section 2 - Scope.
|
||||
a. License grant.
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
A. reproduce and Share the Licensed Material, in whole or in
|
||||
part; and
|
||||
B. produce, reproduce, and Share Adapted Material.
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with its
|
||||
terms and conditions.
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
[6]6(a).
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in all
|
||||
media and formats whether now known or hereafter created, and
|
||||
to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including technical
|
||||
modifications necessary to circumvent Effective Technological
|
||||
Measures. For purposes of this Public License, simply making
|
||||
modifications authorized by this Section [7]2(a)(4) never
|
||||
produces Adapted Material.
|
||||
5. Downstream recipients.
|
||||
A. Offer from the Licensor - Licensed Material. Every
|
||||
recipient of the Licensed Material automatically receives
|
||||
an offer from the Licensor to exercise the Licensed
|
||||
Rights under the terms and conditions of this Public
|
||||
License.
|
||||
B. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section [8]3(a)(1)(A)(i).
|
||||
b. Other rights.
|
||||
1. Moral rights, such as the right of integrity, are not licensed
|
||||
under this Public License, nor are publicity, privacy, and/or
|
||||
other similar personality rights; however, to the extent
|
||||
possible, the Licensor waives and/or agrees not to assert any
|
||||
such rights held by the Licensor to the limited extent
|
||||
necessary to allow You to exercise the Licensed Rights, but
|
||||
not otherwise.
|
||||
2. Patent and trademark rights are not licensed under this Public
|
||||
License.
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society under
|
||||
any voluntary or waivable statutory or compulsory licensing
|
||||
scheme. In all other cases the Licensor expressly reserves any
|
||||
right to collect such royalties.
|
||||
|
||||
Section 3 - License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
a. Attribution.
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
A. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if designated);
|
||||
ii. a copyright notice;
|
||||
iii. a notice that refers to this Public License;
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
B. indicate if You modified the Licensed Material and retain
|
||||
an indication of any previous modifications; and
|
||||
C. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
2. You may satisfy the conditions in Section [9]3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section [10]3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
4. If You Share Adapted Material You produce, the Adapter's
|
||||
License You apply must not prevent recipients of the Adapted
|
||||
Material from complying with this Public License.
|
||||
|
||||
Section 4 - Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
a. for the avoidance of doubt, Section [11]2(a)(1) grants You the
|
||||
right to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material; and
|
||||
c. You must comply with the conditions in Section [12]3(a) if You
|
||||
Share all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section [13]4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
Section 5 - Disclaimer of Warranties and Limitation of Liability.
|
||||
a. Unless otherwise separately undertaken by the Licensor, to the
|
||||
extent possible, the Licensor offers the Licensed Material as-is
|
||||
and as-available, and makes no representations or warranties of any
|
||||
kind concerning the Licensed Material, whether express, implied,
|
||||
statutory, or other. This includes, without limitation, warranties
|
||||
of title, merchantability, fitness for a particular purpose,
|
||||
non-infringement, absence of latent or other defects, accuracy, or
|
||||
the presence or absence of errors, whether or not known or
|
||||
discoverable. Where disclaimers of warranties are not allowed in
|
||||
full or in part, this disclaimer may not apply to You.
|
||||
b. To the extent possible, in no event will the Licensor be liable to
|
||||
You on any legal theory (including, without limitation, negligence)
|
||||
or otherwise for any direct, special, indirect, incidental,
|
||||
consequential, punitive, exemplary, or other losses, costs,
|
||||
expenses, or damages arising out of this Public License or use of
|
||||
the Licensed Material, even if the Licensor has been advised of the
|
||||
possibility of such losses, costs, expenses, or damages. Where a
|
||||
limitation of liability is not allowed in full or in part, this
|
||||
limitation may not apply to You.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
Section 6 - Term and Termination.
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section [14]6(a), it reinstates:
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the violation;
|
||||
or
|
||||
2. upon express reinstatement by the Licensor.
|
||||
For the avoidance of doubt, this Section [15]6(b) does not affect
|
||||
any right the Licensor may have to seek remedies for Your
|
||||
violations of this Public License.
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
d. Sections [16]1, [17]5, [18]6, [19]7, and [20]8 survive termination
|
||||
of this Public License.
|
||||
|
||||
Section 7 - Other Terms and Conditions.
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
Section 8 - Interpretation.
|
||||
a. For the avoidance of doubt, this Public License does not, and shall
|
||||
not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
d. Nothing in this Public License constitutes or may be interpreted as
|
||||
a limitation upon, or waiver of, any privileges and immunities that
|
||||
apply to the Licensor or You, including from the legal processes of
|
||||
any jurisdiction or authority.
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
250
LICENSE_colorcet
Normal file
250
LICENSE_colorcet
Normal file
@@ -0,0 +1,250 @@
|
||||
Creative Commons Attribution 4.0 International Public License (CC-BY)
|
||||
|
||||
By exercising the Licensed Rights (defined below), You accept and agree
|
||||
to be bound by the terms and conditions of this Creative Commons
|
||||
Attribution 4.0 International Public License ("Public License"). To the
|
||||
extent this Public License may be interpreted as a contract, You are
|
||||
granted the Licensed Rights in consideration of Your acceptance of
|
||||
these terms and conditions, and the Licensor grants You such rights in
|
||||
consideration of benefits the Licensor receives from making the
|
||||
Licensed Material available under these terms and conditions.
|
||||
|
||||
Section 1 - Definitions.
|
||||
a. Adapted Material means material subject to Copyright and Similar
|
||||
Rights that is derived from or based upon the Licensed Material and
|
||||
in which the Licensed Material is translated, altered, arranged,
|
||||
transformed, or otherwise modified in a manner requiring permission
|
||||
under the Copyright and Similar Rights held by the Licensor. For
|
||||
purposes of this Public License, where the Licensed Material is a
|
||||
musical work, performance, or sound recording, Adapted Material is
|
||||
always produced where the Licensed Material is synched in timed
|
||||
relation with a moving image.
|
||||
b. Adapter's License means the license You apply to Your Copyright and
|
||||
Similar Rights in Your contributions to Adapted Material in
|
||||
accordance with the terms and conditions of this Public License.
|
||||
c. Copyright and Similar Rights means copyright and/or similar rights
|
||||
closely related to copyright including, without limitation,
|
||||
performance, broadcast, sound recording, and Sui Generis Database
|
||||
Rights, without regard to how the rights are labeled or
|
||||
categorized. For purposes of this Public License, the rights
|
||||
specified in Section [5]2(b)(1)-(2) are not Copyright and Similar
|
||||
Rights.
|
||||
d. Effective Technological Measures means those measures that, in the
|
||||
absence of proper authority, may not be circumvented under laws
|
||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
||||
Treaty adopted on December 20, 1996, and/or similar international
|
||||
agreements.
|
||||
e. Exceptions and Limitations means fair use, fair dealing, and/or any
|
||||
other exception or limitation to Copyright and Similar Rights that
|
||||
applies to Your use of the Licensed Material.
|
||||
f. Licensed Material means the artistic or literary work, database, or
|
||||
other material to which the Licensor applied this Public License.
|
||||
g. Licensed Rights means the rights granted to You subject to the
|
||||
terms and conditions of this Public License, which are limited to
|
||||
all Copyright and Similar Rights that apply to Your use of the
|
||||
Licensed Material and that the Licensor has authority to license.
|
||||
h. Licensor means the individual(s) or entity(ies) granting rights
|
||||
under this Public License.
|
||||
i. Share means to provide material to the public by any means or
|
||||
process that requires permission under the Licensed Rights, such as
|
||||
reproduction, public display, public performance, distribution,
|
||||
dissemination, communication, or importation, and to make material
|
||||
available to the public including in ways that members of the
|
||||
public may access the material from a place and at a time
|
||||
individually chosen by them.
|
||||
j. Sui Generis Database Rights means rights other than copyright
|
||||
resulting from Directive 96/9/EC of the European Parliament and of
|
||||
the Council of 11 March 1996 on the legal protection of databases,
|
||||
as amended and/or succeeded, as well as other essentially
|
||||
equivalent rights anywhere in the world.
|
||||
k. You means the individual or entity exercising the Licensed Rights
|
||||
under this Public License. Your has a corresponding meaning.
|
||||
|
||||
Section 2 - Scope.
|
||||
a. License grant.
|
||||
1. Subject to the terms and conditions of this Public License,
|
||||
the Licensor hereby grants You a worldwide, royalty-free,
|
||||
non-sublicensable, non-exclusive, irrevocable license to
|
||||
exercise the Licensed Rights in the Licensed Material to:
|
||||
A. reproduce and Share the Licensed Material, in whole or in
|
||||
part; and
|
||||
B. produce, reproduce, and Share Adapted Material.
|
||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
||||
Exceptions and Limitations apply to Your use, this Public
|
||||
License does not apply, and You do not need to comply with its
|
||||
terms and conditions.
|
||||
3. Term. The term of this Public License is specified in Section
|
||||
[6]6(a).
|
||||
4. Media and formats; technical modifications allowed. The
|
||||
Licensor authorizes You to exercise the Licensed Rights in all
|
||||
media and formats whether now known or hereafter created, and
|
||||
to make technical modifications necessary to do so. The
|
||||
Licensor waives and/or agrees not to assert any right or
|
||||
authority to forbid You from making technical modifications
|
||||
necessary to exercise the Licensed Rights, including technical
|
||||
modifications necessary to circumvent Effective Technological
|
||||
Measures. For purposes of this Public License, simply making
|
||||
modifications authorized by this Section [7]2(a)(4) never
|
||||
produces Adapted Material.
|
||||
5. Downstream recipients.
|
||||
A. Offer from the Licensor - Licensed Material. Every
|
||||
recipient of the Licensed Material automatically receives
|
||||
an offer from the Licensor to exercise the Licensed
|
||||
Rights under the terms and conditions of this Public
|
||||
License.
|
||||
B. No downstream restrictions. You may not offer or impose
|
||||
any additional or different terms or conditions on, or
|
||||
apply any Effective Technological Measures to, the
|
||||
Licensed Material if doing so restricts exercise of the
|
||||
Licensed Rights by any recipient of the Licensed
|
||||
Material.
|
||||
6. No endorsement. Nothing in this Public License constitutes or
|
||||
may be construed as permission to assert or imply that You
|
||||
are, or that Your use of the Licensed Material is, connected
|
||||
with, or sponsored, endorsed, or granted official status by,
|
||||
the Licensor or others designated to receive attribution as
|
||||
provided in Section [8]3(a)(1)(A)(i).
|
||||
b. Other rights.
|
||||
1. Moral rights, such as the right of integrity, are not licensed
|
||||
under this Public License, nor are publicity, privacy, and/or
|
||||
other similar personality rights; however, to the extent
|
||||
possible, the Licensor waives and/or agrees not to assert any
|
||||
such rights held by the Licensor to the limited extent
|
||||
necessary to allow You to exercise the Licensed Rights, but
|
||||
not otherwise.
|
||||
2. Patent and trademark rights are not licensed under this Public
|
||||
License.
|
||||
3. To the extent possible, the Licensor waives any right to
|
||||
collect royalties from You for the exercise of the Licensed
|
||||
Rights, whether directly or through a collecting society under
|
||||
any voluntary or waivable statutory or compulsory licensing
|
||||
scheme. In all other cases the Licensor expressly reserves any
|
||||
right to collect such royalties.
|
||||
|
||||
Section 3 - License Conditions.
|
||||
|
||||
Your exercise of the Licensed Rights is expressly made subject to the
|
||||
following conditions.
|
||||
a. Attribution.
|
||||
1. If You Share the Licensed Material (including in modified
|
||||
form), You must:
|
||||
A. retain the following if it is supplied by the Licensor
|
||||
with the Licensed Material:
|
||||
i. identification of the creator(s) of the Licensed
|
||||
Material and any others designated to receive
|
||||
attribution, in any reasonable manner requested by
|
||||
the Licensor (including by pseudonym if designated);
|
||||
ii. a copyright notice;
|
||||
iii. a notice that refers to this Public License;
|
||||
iv. a notice that refers to the disclaimer of
|
||||
warranties;
|
||||
v. a URI or hyperlink to the Licensed Material to the
|
||||
extent reasonably practicable;
|
||||
B. indicate if You modified the Licensed Material and retain
|
||||
an indication of any previous modifications; and
|
||||
C. indicate the Licensed Material is licensed under this
|
||||
Public License, and include the text of, or the URI or
|
||||
hyperlink to, this Public License.
|
||||
2. You may satisfy the conditions in Section [9]3(a)(1) in any
|
||||
reasonable manner based on the medium, means, and context in
|
||||
which You Share the Licensed Material. For example, it may be
|
||||
reasonable to satisfy the conditions by providing a URI or
|
||||
hyperlink to a resource that includes the required
|
||||
information.
|
||||
3. If requested by the Licensor, You must remove any of the
|
||||
information required by Section [10]3(a)(1)(A) to the extent
|
||||
reasonably practicable.
|
||||
4. If You Share Adapted Material You produce, the Adapter's
|
||||
License You apply must not prevent recipients of the Adapted
|
||||
Material from complying with this Public License.
|
||||
|
||||
Section 4 - Sui Generis Database Rights.
|
||||
|
||||
Where the Licensed Rights include Sui Generis Database Rights that
|
||||
apply to Your use of the Licensed Material:
|
||||
a. for the avoidance of doubt, Section [11]2(a)(1) grants You the
|
||||
right to extract, reuse, reproduce, and Share all or a substantial
|
||||
portion of the contents of the database;
|
||||
b. if You include all or a substantial portion of the database
|
||||
contents in a database in which You have Sui Generis Database
|
||||
Rights, then the database in which You have Sui Generis Database
|
||||
Rights (but not its individual contents) is Adapted Material; and
|
||||
c. You must comply with the conditions in Section [12]3(a) if You
|
||||
Share all or a substantial portion of the contents of the database.
|
||||
|
||||
For the avoidance of doubt, this Section [13]4 supplements and does not
|
||||
replace Your obligations under this Public License where the Licensed
|
||||
Rights include other Copyright and Similar Rights.
|
||||
|
||||
Section 5 - Disclaimer of Warranties and Limitation of Liability.
|
||||
a. Unless otherwise separately undertaken by the Licensor, to the
|
||||
extent possible, the Licensor offers the Licensed Material as-is
|
||||
and as-available, and makes no representations or warranties of any
|
||||
kind concerning the Licensed Material, whether express, implied,
|
||||
statutory, or other. This includes, without limitation, warranties
|
||||
of title, merchantability, fitness for a particular purpose,
|
||||
non-infringement, absence of latent or other defects, accuracy, or
|
||||
the presence or absence of errors, whether or not known or
|
||||
discoverable. Where disclaimers of warranties are not allowed in
|
||||
full or in part, this disclaimer may not apply to You.
|
||||
b. To the extent possible, in no event will the Licensor be liable to
|
||||
You on any legal theory (including, without limitation, negligence)
|
||||
or otherwise for any direct, special, indirect, incidental,
|
||||
consequential, punitive, exemplary, or other losses, costs,
|
||||
expenses, or damages arising out of this Public License or use of
|
||||
the Licensed Material, even if the Licensor has been advised of the
|
||||
possibility of such losses, costs, expenses, or damages. Where a
|
||||
limitation of liability is not allowed in full or in part, this
|
||||
limitation may not apply to You.
|
||||
|
||||
c. The disclaimer of warranties and limitation of liability provided
|
||||
above shall be interpreted in a manner that, to the extent
|
||||
possible, most closely approximates an absolute disclaimer and
|
||||
waiver of all liability.
|
||||
|
||||
Section 6 - Term and Termination.
|
||||
a. This Public License applies for the term of the Copyright and
|
||||
Similar Rights licensed here. However, if You fail to comply with
|
||||
this Public License, then Your rights under this Public License
|
||||
terminate automatically.
|
||||
b. Where Your right to use the Licensed Material has terminated under
|
||||
Section [14]6(a), it reinstates:
|
||||
1. automatically as of the date the violation is cured, provided
|
||||
it is cured within 30 days of Your discovery of the violation;
|
||||
or
|
||||
2. upon express reinstatement by the Licensor.
|
||||
For the avoidance of doubt, this Section [15]6(b) does not affect
|
||||
any right the Licensor may have to seek remedies for Your
|
||||
violations of this Public License.
|
||||
c. For the avoidance of doubt, the Licensor may also offer the
|
||||
Licensed Material under separate terms or conditions or stop
|
||||
distributing the Licensed Material at any time; however, doing so
|
||||
will not terminate this Public License.
|
||||
d. Sections [16]1, [17]5, [18]6, [19]7, and [20]8 survive termination
|
||||
of this Public License.
|
||||
|
||||
Section 7 - Other Terms and Conditions.
|
||||
a. The Licensor shall not be bound by any additional or different
|
||||
terms or conditions communicated by You unless expressly agreed.
|
||||
b. Any arrangements, understandings, or agreements regarding the
|
||||
Licensed Material not stated herein are separate from and
|
||||
independent of the terms and conditions of this Public License.
|
||||
|
||||
Section 8 - Interpretation.
|
||||
a. For the avoidance of doubt, this Public License does not, and shall
|
||||
not be interpreted to, reduce, limit, restrict, or impose
|
||||
conditions on any use of the Licensed Material that could lawfully
|
||||
be made without permission under this Public License.
|
||||
b. To the extent possible, if any provision of this Public License is
|
||||
deemed unenforceable, it shall be automatically reformed to the
|
||||
minimum extent necessary to make it enforceable. If the provision
|
||||
cannot be reformed, it shall be severed from this Public License
|
||||
without affecting the enforceability of the remaining terms and
|
||||
conditions.
|
||||
c. No term or condition of this Public License will be waived and no
|
||||
failure to comply consented to unless expressly agreed to by the
|
||||
Licensor.
|
||||
d. Nothing in this Public License constitutes or may be interpreted as
|
||||
a limitation upon, or waiver of, any privileges and immunities that
|
||||
apply to the Licensor or You, including from the legal processes of
|
||||
any jurisdiction or authority.
|
||||
99
LICENSE_matplotlib
Normal file
99
LICENSE_matplotlib
Normal file
@@ -0,0 +1,99 @@
|
||||
License agreement for matplotlib versions 1.3.0 and later
|
||||
=========================================================
|
||||
|
||||
1. This LICENSE AGREEMENT is between the Matplotlib Development Team
|
||||
("MDT"), and the Individual or Organization ("Licensee") accessing and
|
||||
otherwise using matplotlib software in source or binary form and its
|
||||
associated documentation.
|
||||
|
||||
2. Subject to the terms and conditions of this License Agreement, MDT
|
||||
hereby grants Licensee a nonexclusive, royalty-free, world-wide license
|
||||
to reproduce, analyze, test, perform and/or display publicly, prepare
|
||||
derivative works, distribute, and otherwise use matplotlib
|
||||
alone or in any derivative version, provided, however, that MDT's
|
||||
License Agreement and MDT's notice of copyright, i.e., "Copyright (c)
|
||||
2012- Matplotlib Development Team; All Rights Reserved" are retained in
|
||||
matplotlib alone or in any derivative version prepared by
|
||||
Licensee.
|
||||
|
||||
3. In the event Licensee prepares a derivative work that is based on or
|
||||
incorporates matplotlib or any part thereof, and wants to
|
||||
make the derivative work available to others as provided herein, then
|
||||
Licensee hereby agrees to include in any such work a brief summary of
|
||||
the changes made to matplotlib .
|
||||
|
||||
4. MDT is making matplotlib available to Licensee on an "AS
|
||||
IS" basis. MDT MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
|
||||
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, MDT MAKES NO AND
|
||||
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF MATPLOTLIB
|
||||
WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
|
||||
|
||||
5. MDT SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF MATPLOTLIB
|
||||
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR
|
||||
LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING
|
||||
MATPLOTLIB , OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF
|
||||
THE POSSIBILITY THEREOF.
|
||||
|
||||
6. This License Agreement will automatically terminate upon a material
|
||||
breach of its terms and conditions.
|
||||
|
||||
7. Nothing in this License Agreement shall be deemed to create any
|
||||
relationship of agency, partnership, or joint venture between MDT and
|
||||
Licensee. This License Agreement does not grant permission to use MDT
|
||||
trademarks or trade name in a trademark sense to endorse or promote
|
||||
products or services of Licensee, or any third party.
|
||||
|
||||
8. By copying, installing or otherwise using matplotlib ,
|
||||
Licensee agrees to be bound by the terms and conditions of this License
|
||||
Agreement.
|
||||
|
||||
License agreement for matplotlib versions prior to 1.3.0
|
||||
========================================================
|
||||
|
||||
1. This LICENSE AGREEMENT is between John D. Hunter ("JDH"), and the
|
||||
Individual or Organization ("Licensee") accessing and otherwise using
|
||||
matplotlib software in source or binary form and its associated
|
||||
documentation.
|
||||
|
||||
2. Subject to the terms and conditions of this License Agreement, JDH
|
||||
hereby grants Licensee a nonexclusive, royalty-free, world-wide license
|
||||
to reproduce, analyze, test, perform and/or display publicly, prepare
|
||||
derivative works, distribute, and otherwise use matplotlib
|
||||
alone or in any derivative version, provided, however, that JDH's
|
||||
License Agreement and JDH's notice of copyright, i.e., "Copyright (c)
|
||||
2002-2011 John D. Hunter; All Rights Reserved" are retained in
|
||||
matplotlib alone or in any derivative version prepared by
|
||||
Licensee.
|
||||
|
||||
3. In the event Licensee prepares a derivative work that is based on or
|
||||
incorporates matplotlib or any part thereof, and wants to
|
||||
make the derivative work available to others as provided herein, then
|
||||
Licensee hereby agrees to include in any such work a brief summary of
|
||||
the changes made to matplotlib.
|
||||
|
||||
4. JDH is making matplotlib available to Licensee on an "AS
|
||||
IS" basis. JDH MAKES NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR
|
||||
IMPLIED. BY WAY OF EXAMPLE, BUT NOT LIMITATION, JDH MAKES NO AND
|
||||
DISCLAIMS ANY REPRESENTATION OR WARRANTY OF MERCHANTABILITY OR FITNESS
|
||||
FOR ANY PARTICULAR PURPOSE OR THAT THE USE OF MATPLOTLIB
|
||||
WILL NOT INFRINGE ANY THIRD PARTY RIGHTS.
|
||||
|
||||
5. JDH SHALL NOT BE LIABLE TO LICENSEE OR ANY OTHER USERS OF MATPLOTLIB
|
||||
FOR ANY INCIDENTAL, SPECIAL, OR CONSEQUENTIAL DAMAGES OR
|
||||
LOSS AS A RESULT OF MODIFYING, DISTRIBUTING, OR OTHERWISE USING
|
||||
MATPLOTLIB , OR ANY DERIVATIVE THEREOF, EVEN IF ADVISED OF
|
||||
THE POSSIBILITY THEREOF.
|
||||
|
||||
6. This License Agreement will automatically terminate upon a material
|
||||
breach of its terms and conditions.
|
||||
|
||||
7. Nothing in this License Agreement shall be deemed to create any
|
||||
relationship of agency, partnership, or joint venture between JDH and
|
||||
Licensee. This License Agreement does not grant permission to use JDH
|
||||
trademarks or trade name in a trademark sense to endorse or promote
|
||||
products or services of Licensee, or any third party.
|
||||
|
||||
8. By copying, installing or otherwise using matplotlib,
|
||||
Licensee agrees to be bound by the terms and conditions of this License
|
||||
Agreement.
|
||||
14
README.md
14
README.md
@@ -1,7 +1,11 @@
|
||||
# Colorcet
|
||||
Rust copy of Python library [colorcet](https://pypi.org/project/colorcet/).
|
||||
[Colorcet](https://colorcet.com/) is a set of perceptually uniform colormaps.
|
||||
|
||||
|
||||
|
||||
Basically list of colormaps copied from [colorcet the python package](https://pypi.org/project/colorcet/),
|
||||
also see the [colorcet website](https://colorcet.com/)
|
||||
and [matplotlib](https://pypi.org/project/matplotlib/) together with some colormaps defined by a simple
|
||||
gradient between black and a named or css color,
|
||||
generated using [colorgrad](https://crates.io/crates/colorgrad).
|
||||
|
||||
Colormaps copied from [colorcet the python package](https://pypi.org/project/colorcet/) are licensed
|
||||
under a [CC-BY license](LICENSE_colorcet), colormaps copied from
|
||||
[matplotlib](https://pypi.org/project/matplotlib/) are licensed under [PSF license](LICENSE_matplotlib).
|
||||
Code in this crate is licensed under a [MIT license](LICENSE).
|
||||
|
||||
27485
__init__.py
27485
__init__.py
File diff suppressed because it is too large
Load Diff
@@ -1,18 +1,15 @@
|
||||
import colorcet
|
||||
import re
|
||||
from matplotlib import colormaps
|
||||
|
||||
|
||||
def parse_cmaps() -> list[str]:
|
||||
pat = re.compile(r"(\s|\[)(\d)(,\s|])")
|
||||
s = []
|
||||
for name in colorcet.all_original_names():
|
||||
cmap = getattr(colorcet, name)
|
||||
if isinstance(cmap, list) and len(cmap) == 256 and isinstance(cmap[0], list):
|
||||
c = f"{cmap}"
|
||||
c = pat.sub(r"\1\2.0\3", c)
|
||||
c = pat.sub(r"\1\2.0\3", c)
|
||||
c = pat.sub(r"\1\2.0\3", c)
|
||||
s.append(f" \"{name}\" => {c},\n")
|
||||
if isinstance(cmap, list) and isinstance(cmap[0], list):
|
||||
c = f"&{[[float(i) for i in j] for j in cmap]}"
|
||||
s.append(f" \"{name.lower()}\" => {c},\n")
|
||||
return sorted(s)
|
||||
|
||||
|
||||
@@ -21,13 +18,24 @@ def parse_aliases() -> list[str]:
|
||||
s = []
|
||||
for name in colorcet.all_original_names():
|
||||
for alias in pat.split(colorcet.get_aliases(name)):
|
||||
s.append(f" \"{alias}\" => \"{name}\",\n")
|
||||
return sorted(s)
|
||||
s.append(f" \"{alias.lower()}\" => \"{name.lower()}\",\n")
|
||||
return s
|
||||
|
||||
|
||||
def parse_mpl_cmaps() -> list[str]:
|
||||
s = []
|
||||
for name in list(colormaps):
|
||||
if not name.lower().startswith("cet") and not name.lower().endswith("_r"):
|
||||
cmap = colormaps[name]
|
||||
cmap = cmap(range(cmap.N))[:, :3].tolist()
|
||||
c = f"&{[[float(i) for i in j] for j in cmap]}"
|
||||
s.append(f" \"{name.lower()}\" => {c},\n")
|
||||
return s
|
||||
|
||||
|
||||
def main() -> None:
|
||||
"""extract colormaps from the python package colorcet, run cargo fmt after"""
|
||||
cmaps = parse_cmaps()
|
||||
cmaps = parse_cmaps() + parse_mpl_cmaps()
|
||||
aliases = parse_aliases()
|
||||
|
||||
with open("src/colormaps.rs", "w") as f:
|
||||
@@ -35,15 +43,15 @@ def main() -> None:
|
||||
f.write("\n")
|
||||
f.write("/// unique colormaps\n")
|
||||
f.write("#[allow(clippy::approx_constant)]\n")
|
||||
f.write("pub static COLOR_MAPS: phf::Map<&'static str, [[f64; 3]; 256]> = phf_map! {\n")
|
||||
for i in cmaps:
|
||||
f.write("pub static COLOR_MAPS: phf::Map<&'static str, &[[f64; 3]]> = phf_map! {\n")
|
||||
for i in sorted(cmaps):
|
||||
f.write(i)
|
||||
f.write("};\n")
|
||||
f.write("\n")
|
||||
f.write("/// aliases to colormaps\n")
|
||||
f.write("#[allow(clippy::approx_constant)]\n")
|
||||
f.write("pub static ALIASES: phf::Map<&'static str, &'static str> = phf_map! {\n")
|
||||
for i in aliases:
|
||||
for i in sorted(aliases):
|
||||
f.write(i)
|
||||
f.write("};")
|
||||
|
||||
|
||||
444
src/colormaps.rs
444
src/colormaps.rs
File diff suppressed because one or more lines are too long
153
src/lib.rs
153
src/lib.rs
@@ -1,6 +1,15 @@
|
||||
//! Colorcet: a list of [colorcet](https://colorcet.com/),
|
||||
//! [matplotlib](https://pypi.org/project/matplotlib/) and simple
|
||||
//! gradient colormaps.
|
||||
|
||||
mod colormaps;
|
||||
|
||||
use std::ops::Sub;
|
||||
use colorgrad::{
|
||||
BasisGradient, CatmullRomGradient, Color, Gradient, GradientBuilder, GradientBuilderError,
|
||||
LinearGradient,
|
||||
};
|
||||
use num_traits::{Bounded, Float, FromPrimitive, NumCast, PrimInt, ToPrimitive};
|
||||
use std::str::FromStr;
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
@@ -9,52 +18,78 @@ pub enum ColorcetError {
|
||||
ColormapNotFound(String),
|
||||
}
|
||||
|
||||
pub trait Int: Sub + Sized {
|
||||
const MIN: Self;
|
||||
const MAX: Self;
|
||||
}
|
||||
|
||||
macro_rules! impl_int {
|
||||
($($t:tt),+ $(,)?) => {
|
||||
$(
|
||||
impl Int for $t {
|
||||
const MIN: Self = $t::MIN;
|
||||
const MAX: Self = $t::MAX;
|
||||
}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
impl_int!(
|
||||
u8, i8, u16, i16, u32, i32, u64, i64, u128, i128, isize, usize
|
||||
);
|
||||
|
||||
pub struct ColorMap([[f64; 3]; 256]);
|
||||
/// Struct holding f64 values defining the colormap.
|
||||
///
|
||||
/// # Examples
|
||||
/// ```
|
||||
/// use colorcet::ColorMap;
|
||||
/// use colorgrad::{LinearGradient, Color};
|
||||
///
|
||||
/// let colormap: ColorMap = "glasbey".parse().unwrap();
|
||||
/// let vec_color: Vec<Color> = colormap.clone().try_into().unwrap();
|
||||
/// let vec_css: Vec<String> = colormap.clone().try_into().unwrap();
|
||||
/// let linear_gradient: LinearGradient = colormap.clone().try_into().unwrap();
|
||||
/// let vec_float: Vec<[f64; 3]> = colormap.clone().get_rgb_float();
|
||||
/// let vec_int: Vec<[u8; 3]> = colormap.get_rgb_int();
|
||||
/// ```
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct ColorMap(Vec<[f64; 3]>);
|
||||
|
||||
impl ColorMap {
|
||||
/// get a vector of rgb values, scaled between 0.0 and 1.0
|
||||
pub fn get_colors_f64(&self) -> Vec<Vec<f64>> {
|
||||
self.0.iter().map(|row| row.to_vec()).collect()
|
||||
pub fn get_rgb_float<T>(&self) -> Vec<[T; 3]>
|
||||
where
|
||||
T: Float + NumCast,
|
||||
{
|
||||
self.0
|
||||
.iter()
|
||||
.map(|color| {
|
||||
[
|
||||
T::from(color[0]).unwrap(),
|
||||
T::from(color[1]).unwrap(),
|
||||
T::from(color[2]).unwrap(),
|
||||
]
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
/// get a vector of rgb values, scaled between T::MIN and T::MAX
|
||||
pub fn get_colors_int<T>(&self) -> Vec<Vec<T>>
|
||||
pub fn get_rgb_int<T>(&self) -> Vec<[T; 3]>
|
||||
where
|
||||
T: Int + From<f64>,
|
||||
f64: From<T>,
|
||||
T: Bounded + PrimInt + FromPrimitive + ToPrimitive,
|
||||
{
|
||||
let a: f64 = T::MIN.into();
|
||||
let b: f64 = T::MAX.into();
|
||||
let a: f64 = T::min_value().to_f64().unwrap();
|
||||
let b: f64 = T::max_value().to_f64().unwrap();
|
||||
let c = b - a;
|
||||
self.0
|
||||
.iter()
|
||||
.map(|row| row.iter().map(|&i| ((i - a) / c).round().into()).collect())
|
||||
.map(|color| {
|
||||
[
|
||||
T::from_f64(((color[0] - a) / c).round()).unwrap(),
|
||||
T::from_f64(((color[1] - a) / c).round()).unwrap(),
|
||||
T::from_f64(((color[2] - a) / c).round()).unwrap(),
|
||||
]
|
||||
})
|
||||
.collect()
|
||||
}
|
||||
|
||||
/// get names of all colormaps defined in this crate
|
||||
pub fn all_colormap_names() -> Vec<String> {
|
||||
colormaps::ALIASES
|
||||
.keys()
|
||||
.chain(colormaps::COLOR_MAPS.keys())
|
||||
.map(|k| k.to_string())
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
|
||||
/// find a colorcet colormap by name, add _r to reverse the colormap
|
||||
pub fn get_named_colormap(name: &str) -> Result<ColorMap, ColorcetError> {
|
||||
impl FromStr for ColorMap {
|
||||
type Err = ColorcetError;
|
||||
|
||||
/// find a colorcet colormap by name, add _r to reverse the colormap
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
let name = s.to_lowercase();
|
||||
let name = name.as_str();
|
||||
let (name0, reverse) = if let Some(name) = name.strip_suffix("_r") {
|
||||
(name, true)
|
||||
} else {
|
||||
@@ -64,7 +99,20 @@ pub fn get_named_colormap(name: &str) -> Result<ColorMap, ColorcetError> {
|
||||
if let Some(&alias) = colormaps::ALIASES.get(name0)
|
||||
&& let Some(cmap) = colormaps::COLOR_MAPS.get(alias)
|
||||
{
|
||||
let mut cmap = cmap.to_owned();
|
||||
let mut cmap = cmap.to_vec();
|
||||
if reverse {
|
||||
cmap.reverse();
|
||||
}
|
||||
Ok(ColorMap(cmap))
|
||||
} else if let Ok(cmap) = GradientBuilder::new()
|
||||
.html_colors(&["#000000", name0])
|
||||
.build::<LinearGradient>()
|
||||
{
|
||||
let mut cmap: Vec<_> = cmap
|
||||
.colors(256)
|
||||
.into_iter()
|
||||
.map(|c| [c.r as f64, c.g as f64, c.b as f64])
|
||||
.collect();
|
||||
if reverse {
|
||||
cmap.reverse();
|
||||
}
|
||||
@@ -72,4 +120,43 @@ pub fn get_named_colormap(name: &str) -> Result<ColorMap, ColorcetError> {
|
||||
} else {
|
||||
Err(ColorcetError::ColormapNotFound(name.into()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<ColorMap> for Vec<Color> {
|
||||
fn from(value: ColorMap) -> Self {
|
||||
value
|
||||
.get_rgb_float::<f32>()
|
||||
.into_iter()
|
||||
.map(|c| Color::from((c[0], c[1], c[2])))
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<ColorMap> for Vec<String> {
|
||||
/// convert ColorMap into a Vec of css color strings
|
||||
fn from(value: ColorMap) -> Self {
|
||||
value
|
||||
.get_rgb_float::<f32>()
|
||||
.into_iter()
|
||||
.map(|c| Color::from((c[0], c[1], c[2])).to_css_hex())
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! impl_to_gradient {
|
||||
($($t:ty $(,)?)*) => {
|
||||
$(
|
||||
impl TryFrom<ColorMap> for $t {
|
||||
type Error = GradientBuilderError;
|
||||
|
||||
fn try_from(value: ColorMap) -> Result<Self, Self::Error> {
|
||||
let colors: Vec<Color> = value.into();
|
||||
GradientBuilder::new().colors(&colors).build()
|
||||
}
|
||||
}
|
||||
)*
|
||||
};
|
||||
}
|
||||
|
||||
impl_to_gradient!(LinearGradient, CatmullRomGradient, BasisGradient);
|
||||
|
||||
Reference in New Issue
Block a user