mirror of
https://github.com/kovidgoyal/kitty.git
synced 2026-08-28 04:13:44 +00:00
Move shader loading code into its own module
This commit is contained in:
parent
9a1c781230
commit
85a955a796
4 changed files with 36 additions and 30 deletions
|
|
@ -5,8 +5,8 @@ from enum import IntFlag
|
|||
from typing import Iterable, NamedTuple, Sequence
|
||||
|
||||
from .fast_data_types import BORDERS_PROGRAM, add_borders_rect, compile_program, get_options, init_borders_program, os_window_has_background_image
|
||||
from .shaders import load_shaders
|
||||
from .typing import LayoutType
|
||||
from .utils import load_shaders
|
||||
from .window_list import WindowGroup, WindowList
|
||||
|
||||
|
||||
|
|
|
|||
34
kitty/shaders.py
Normal file
34
kitty/shaders.py
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
#!/usr/bin/env python
|
||||
# License: GPLv3 Copyright: 2023, Kovid Goyal <kovid at kovidgoyal.net>
|
||||
|
||||
import re
|
||||
from typing import Iterator, Tuple
|
||||
|
||||
from .constants import read_kitty_resource
|
||||
from .fast_data_types import GLSL_VERSION
|
||||
|
||||
|
||||
def load_shaders(name: str, vertex_name: str = '', fragment_name: str = '') -> Tuple[Tuple[str, ...], Tuple[str, ...]]:
|
||||
pat = re.compile(r'^#pragma\s+kitty_include_shader\s+<(.+?)>', re.MULTILINE)
|
||||
|
||||
def load_sources(name: str, level: int = 0) -> Iterator[str]:
|
||||
if level == 0:
|
||||
yield f'#version {GLSL_VERSION}\n'
|
||||
src = read_kitty_resource(name).decode('utf-8')
|
||||
pos = 0
|
||||
for m in pat.finditer(src):
|
||||
prefix = src[pos:m.start()]
|
||||
if prefix:
|
||||
yield prefix
|
||||
iname = m.group(1)
|
||||
yield from load_sources(iname, level+1)
|
||||
pos = m.start()
|
||||
if pos < len(src):
|
||||
yield src[pos:]
|
||||
|
||||
def load(which: str, lname: str = '') -> Tuple[str, ...]:
|
||||
lname = lname or name
|
||||
main = f'{lname}_{which}.glsl'
|
||||
return tuple(load_sources(main))
|
||||
|
||||
return load('vertex', vertex_name), load('fragment', fragment_name)
|
||||
|
|
@ -20,7 +20,6 @@ from .constants import (
|
|||
config_dir,
|
||||
is_macos,
|
||||
is_wayland,
|
||||
read_kitty_resource,
|
||||
runtime_dir,
|
||||
shell_path,
|
||||
ssh_control_master_template,
|
||||
|
|
@ -104,33 +103,6 @@ def platform_window_id(os_window_id: int) -> Optional[int]:
|
|||
return None
|
||||
|
||||
|
||||
def load_shaders(name: str, vertex_name: str = '', fragment_name: str = '') -> Tuple[Tuple[str, ...], Tuple[str, ...]]:
|
||||
from .fast_data_types import GLSL_VERSION
|
||||
pat = re.compile(r'^#pragma\s+kitty_include_shader\s+<(.+?)>', re.MULTILINE)
|
||||
|
||||
def load_sources(name: str, level: int = 0) -> Iterator[str]:
|
||||
if level == 0:
|
||||
yield f'#version {GLSL_VERSION}\n'
|
||||
src = read_kitty_resource(name).decode('utf-8')
|
||||
pos = 0
|
||||
for m in pat.finditer(src):
|
||||
prefix = src[pos:m.start()]
|
||||
if prefix:
|
||||
yield prefix
|
||||
iname = m.group(1)
|
||||
yield from load_sources(iname, level+1)
|
||||
pos = m.start()
|
||||
if pos < len(src):
|
||||
yield src[pos:]
|
||||
|
||||
def load(which: str, lname: str = '') -> Tuple[str, ...]:
|
||||
lname = lname or name
|
||||
main = f'{lname}_{which}.glsl'
|
||||
return tuple(load_sources(main))
|
||||
|
||||
return load('vertex', vertex_name), load('fragment', fragment_name)
|
||||
|
||||
|
||||
def safe_print(*a: Any, **k: Any) -> None:
|
||||
with suppress(Exception):
|
||||
print(*a, **k)
|
||||
|
|
|
|||
|
|
@ -107,13 +107,13 @@ from .notify import (
|
|||
)
|
||||
from .options.types import Options
|
||||
from .rgb import to_color
|
||||
from .shaders import load_shaders
|
||||
from .terminfo import get_capabilities
|
||||
from .types import MouseEvent, OverlayType, WindowGeometry, ac, run_once
|
||||
from .typing import BossType, ChildType, EdgeLiteral, TabType, TypedDict
|
||||
from .utils import (
|
||||
docs_url,
|
||||
kitty_ansi_sanitizer_pat,
|
||||
load_shaders,
|
||||
log_error,
|
||||
open_cmd,
|
||||
open_url,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue