mirror of
https://github.com/drewcassidy/quicktex.git
synced 2024-09-13 06:37:34 +00:00
Compare commits
19 Commits
feature/py
...
0.2.0
Author | SHA1 | Date | |
---|---|---|---|
ec7953dcff | |||
3280fc74be | |||
cbec93ed55 | |||
8509384bff | |||
1c86b09ca0 | |||
d4eada16f9 | |||
aed575edc6 | |||
4cdcb65f3a | |||
0a66fcca20 | |||
37f0673e95 | |||
b81df96990 | |||
38beffef05 | |||
0dccd1cd07 | |||
7ea104f712 | |||
9cb60f0ce2 | |||
15e0c68df6 | |||
9f54349556 | |||
71c069d30c | |||
661536e6f6 |
8
.github/dependabot.yml
vendored
8
.github/dependabot.yml
vendored
@ -7,4 +7,10 @@ updates:
|
||||
target-branch: "dev"
|
||||
schedule:
|
||||
# Check for updates to GitHub Actions every weekday
|
||||
interval: "daily"
|
||||
interval: "daily"
|
||||
|
||||
# Maintain dependencies for pip
|
||||
- package-ecosystem: "pip"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
|
10
.github/workflows/python-package.yml
vendored
10
.github/workflows/python-package.yml
vendored
@ -16,7 +16,9 @@ jobs:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v3.1.2
|
||||
uses: actions/setup-python@v4.3.0
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
@ -76,7 +78,7 @@ jobs:
|
||||
platforms: arm64
|
||||
|
||||
- name: Build wheels
|
||||
uses: pypa/cibuildwheel@2.5.0
|
||||
uses: pypa/cibuildwheel@v2.11.2
|
||||
env:
|
||||
MACOSX_DEPLOYMENT_TARGET: "10.15"
|
||||
CIBW_ARCHS_LINUX: ${{ matrix.arch[3] }}
|
||||
@ -96,7 +98,9 @@ jobs:
|
||||
- uses: actions/checkout@v3 # just need the changelog
|
||||
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v3.1.2
|
||||
uses: actions/setup-python@v4.3.0
|
||||
with:
|
||||
python-version: '3.x'
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
|
13
CHANGELOG.md
13
CHANGELOG.md
@ -2,6 +2,19 @@
|
||||
|
||||
All notable changes to this project will be documented in this file
|
||||
|
||||
## 0.2.0 - 2023-06-21
|
||||
|
||||
### Changed
|
||||
|
||||
- Updated Pybind11 to version 3.10, adding Python 3.11 support
|
||||
- Updated install instructions in readme to reflect availability on PyPI
|
||||
- Encode now skips .dds files in its input to prevent needless re-encoding
|
||||
|
||||
### Added
|
||||
|
||||
- Added the `-n` option for bc3 encoding to perform a BC3nm swizzle
|
||||
|
||||
|
||||
## 0.1.3 - 2022-04-13
|
||||
|
||||
### Fixed
|
||||
|
23
README.md
23
README.md
@ -9,15 +9,32 @@ comparable to the original library.
|
||||
|
||||
## Installation
|
||||
|
||||
To install, first clone this repo and cd into it, then run:
|
||||
### From Wheel (Easiest)
|
||||
|
||||
To install, run
|
||||
|
||||
```shell
|
||||
pip install quicktex
|
||||
```
|
||||
|
||||
If you are on macOS, You need to install openMP from homebrew:
|
||||
|
||||
```shell
|
||||
brew install libomp
|
||||
```
|
||||
|
||||
### From Source
|
||||
|
||||
To build from source, first clone this repo and cd into it, then run:
|
||||
|
||||
```shell
|
||||
git submodule update --init
|
||||
pip install .
|
||||
```
|
||||
|
||||
and setuptools will take care of any dependencies for you.
|
||||
|
||||
If you are on macOS, it is recommended to first install openMP from homebrew to enable
|
||||
If you are on macOS, it is recommended to first install openMP from homebrew to enable
|
||||
multithreading, since it is not included in the default Apple Clang install:
|
||||
|
||||
```shell
|
||||
@ -31,8 +48,6 @@ required dependencies for them, install with options like so:
|
||||
pip install .[tests,stubs,docs]
|
||||
```
|
||||
|
||||
Quicktex will be available on Pypi once it is out of alpha.
|
||||
|
||||
## Usage
|
||||
|
||||
```
|
||||
|
@ -4,7 +4,7 @@ requires = [
|
||||
"setuptools_scm>=6.2",
|
||||
"wheel",
|
||||
"cmake>=3.18",
|
||||
"pybind11~=2.6.1",
|
||||
"pybind11~=2.10",
|
||||
"ninja; sys_platform != 'win32'",
|
||||
]
|
||||
build-backend = "setuptools.build_meta"
|
||||
@ -46,7 +46,7 @@ docs = [
|
||||
stubs = ["pybind11-stubgen"]
|
||||
|
||||
[project.urls]
|
||||
Docs = "https://quicktex.readthedocs.io/en/"
|
||||
Docs = "https://quicktex.readthedocs.io/en/latest/"
|
||||
Source = "https://github.com/drewcassidy/quicktex"
|
||||
Changelog = "https://github.com/drewcassidy/quicktex/blob/main/CHANGELOG.md"
|
||||
|
||||
@ -81,5 +81,5 @@ manylinux-aarch64-image = "manylinux2014"
|
||||
|
||||
[tool.black]
|
||||
line-length = 120 # 80-column is stupid
|
||||
target-version = ['py37', 'py38', 'py39', 'py310']
|
||||
target-version = ['py37', 'py38', 'py39', 'py310', 'py310']
|
||||
skip-string-normalization = true
|
@ -40,7 +40,7 @@ def path_pairs(inputs, output, suffix, extension):
|
||||
"""
|
||||
|
||||
if len(inputs) < 1:
|
||||
raise click.BadArgumentUsage('No input files were provided.')
|
||||
raise click.BadArgumentUsage('No valid input files were provided.')
|
||||
|
||||
inpaths = [pathlib.Path(i) for i in inputs]
|
||||
|
||||
|
@ -36,7 +36,8 @@ def encode():
|
||||
help="Output file or directory. If outputting to a file, input filenames must be only a single item. By default, files are decoded in place.",
|
||||
)
|
||||
@click.argument('filenames', nargs=-1, type=click.Path(exists=True, readable=True, dir_okay=False))
|
||||
def encode_format(encoder, four_cc, flip, remove, suffix, output, filenames):
|
||||
def encode_format(encoder, four_cc, flip, remove, suffix, output, filenames, swizzle=False):
|
||||
filenames = [f for f in filenames if not f.endswith('.dds')]
|
||||
path_pairs = common.path_pairs(filenames, output, suffix, '.dds')
|
||||
|
||||
with click.progressbar(
|
||||
@ -48,6 +49,11 @@ def encode_format(encoder, four_cc, flip, remove, suffix, output, filenames):
|
||||
if flip:
|
||||
image = image.transpose(Image.FLIP_TOP_BOTTOM)
|
||||
|
||||
if swizzle:
|
||||
bands = image.split()
|
||||
one = Image.new('L', image.size, 0xFF)
|
||||
image = Image.merge('RGBA', (one, bands[1], bands[1], bands[0]))
|
||||
|
||||
dds.encode(image, encoder, four_cc).save(outpath)
|
||||
|
||||
if remove:
|
||||
@ -107,8 +113,11 @@ def encode_auto(level, black, threecolor, flip, remove, suffix, output, filename
|
||||
|
||||
bc1_encoder = quicktex.s3tc.bc1.BC1Encoder(level, mode)
|
||||
bc3_encoder = quicktex.s3tc.bc3.BC3Encoder(level)
|
||||
filenames = [f for f in filenames if not f.endswith('.dds')]
|
||||
path_pairs = common.path_pairs(filenames, output, suffix, '.dds')
|
||||
|
||||
assert len(filenames) > 0
|
||||
|
||||
with click.progressbar(
|
||||
path_pairs, show_eta=False, show_pos=True, item_show_func=lambda x: str(x[0]) if x else ''
|
||||
) as bar:
|
||||
@ -175,9 +184,16 @@ def encode_bc1(level, black, threecolor, **kwargs):
|
||||
default=18,
|
||||
help='Quality level to use. Higher values = higher quality, but slower.',
|
||||
)
|
||||
def encode_bc3(level, **kwargs):
|
||||
@click.option(
|
||||
'-n/-N',
|
||||
'--normal/--no-normal',
|
||||
type=bool,
|
||||
default=False,
|
||||
help='Perform a BC3nm swizzle, copying the red channel into the alpha [default: no-normal]',
|
||||
)
|
||||
def encode_bc3(level, normal, **kwargs):
|
||||
"""Encode images to BC4 (RGBA, 8-bit interpolated alpha)."""
|
||||
encode_format.callback(quicktex.s3tc.bc3.BC3Encoder(level), 'DXT5', **kwargs)
|
||||
encode_format.callback(quicktex.s3tc.bc3.BC3Encoder(level), 'DXT5', swizzle=normal, **kwargs)
|
||||
|
||||
|
||||
@click.command('bc4')
|
||||
|
@ -58,7 +58,7 @@ template <size_t N> class OrderTable {
|
||||
static bool Generate() {
|
||||
static_assert(N == 4 || N == 3);
|
||||
|
||||
table_mutex.lock();
|
||||
std::scoped_lock{table_mutex};
|
||||
if (!generated) {
|
||||
hashes = new std::array<Hash, HashCount>();
|
||||
factors = new std::array<Vector4, OrderCount>();
|
||||
@ -85,8 +85,6 @@ template <size_t N> class OrderTable {
|
||||
|
||||
generated = true;
|
||||
}
|
||||
table_mutex.unlock();
|
||||
|
||||
assert(generated);
|
||||
return true;
|
||||
}
|
||||
|
Reference in New Issue
Block a user