Skip to content

Commit

Permalink
Add ability to scale cursor images
Browse files Browse the repository at this point in the history
  • Loading branch information
quantum5 committed Jan 13, 2024
1 parent 0898f35 commit 507dfd8
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 1 deletion.
6 changes: 5 additions & 1 deletion win2xcur/main/win2xcur.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
from threading import Lock
from typing import BinaryIO

from win2xcur import shadow
from win2xcur import scale, shadow
from win2xcur.parser import open_blob
from win2xcur.writer import to_x11

Expand All @@ -32,6 +32,8 @@ def main() -> None:
help='y-offset of shadow (as fraction of height)')
parser.add_argument('-c', '--shadow-color', default='#000000',
help='color of the shadow')
parser.add_argument('-S', '--scale', default=None, type=float,
help='Scale the cursor by the specified factor.')

args = parser.parse_args()
print_lock = Lock()
Expand All @@ -46,6 +48,8 @@ def process(file: BinaryIO) -> None:
print(f'Error occurred while processing {name}:', file=sys.stderr)
traceback.print_exc()
else:
if args.scale:
scale.apply_to_frames(cursor.frames, scale=args.scale)
if args.shadow:
shadow.apply_to_frames(cursor.frames, color=args.shadow_color, radius=args.shadow_radius,
sigma=args.shadow_sigma, xoffset=args.shadow_x, yoffset=args.shadow_y)
Expand Down
5 changes: 5 additions & 0 deletions win2xcur/main/x2wincur.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
from threading import Lock
from typing import BinaryIO

from win2xcur import scale
from win2xcur.parser import open_blob
from win2xcur.writer import to_smart

Expand All @@ -17,6 +18,8 @@ def main() -> None:
help='X11 cursor files to convert (no extension)')
parser.add_argument('-o', '--output', '--output-dir', default=os.curdir,
help='Directory to store converted cursor files.')
parser.add_argument('-S', '--scale', default=None, type=float,
help='Scale the cursor by the specified factor.')

args = parser.parse_args()
print_lock = Lock()
Expand All @@ -31,6 +34,8 @@ def process(file: BinaryIO) -> None:
print(f'Error occurred while processing {name}:', file=sys.stderr)
traceback.print_exc()
else:
if args.scale:
scale.apply_to_frames(cursor.frames, scale=args.scale)
ext, result = to_smart(cursor.frames)
output = os.path.join(args.output, os.path.basename(name) + ext)
with open(output, 'wb') as f:
Expand Down
12 changes: 12 additions & 0 deletions win2xcur/scale.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
from typing import List

from win2xcur.cursor import CursorFrame


def apply_to_frames(frames: List[CursorFrame], *, scale: float) -> None:
for frame in frames:
for cursor in frame:
cursor.image.scale(
int(round(cursor.image.width * scale)),
int(round(cursor.image.height) * scale),
)

0 comments on commit 507dfd8

Please sign in to comment.