feat: adapt to new assemblicon API with MSIX artifact support

This commit is contained in:
yyc12345 committed 2026-10-16 09:49:29 +08:00
1 parent 75a080bf09
commit a049b23c77
6 files changed
+122 -48

No files matched your search

+11 -5
View File
@@ -1,5 +1,10 @@
from pathlib import Path
from assemblicon.highlevel.utils import DEFAULT_FD_THUMBNAIL_HWS
from assemblicon.highlevel.utils import (
DEFAULT_FD_THUMBNAIL_HWS,
DEFAULT_MSIX_SCALES,
DEFAULT_MSIX_APP44_TARGETSIZES,
DEFAULT_MSIX_EXT_TARGETSIZES,
)
from assemblicon.highlevel.environment import Environment
from assemblicon.highlevel.context import Context
from assemblicon.logger import APP_LOGGER as LOGGER
@@ -23,11 +28,12 @@ def main() -> None:
iconset_input,
iconset_output,
opts.svg_render,
# TODO: For easy testing, we only build 32x32 and 48x48.
# Enable full generation after testing.
# DEFAULT_FD_THUMBNAIL_HWS,
(32, 48, 256),
DEFAULT_FD_THUMBNAIL_HWS,
DEFAULT_MSIX_SCALES,
DEFAULT_MSIX_APP44_TARGETSIZES,
DEFAULT_MSIX_EXT_TARGETSIZES,
tempdir_initializer,
opts.format_selection,
)
env = Environment(prologue)
ctx = Context(env)
+20 -3
View File
@@ -1,19 +1,28 @@
from dataclasses import dataclass
from typing import Optional
from assemblicon.cli import (
SvgRenderKind,
StdOptsSetup,
create_argparser,
parse_standard_opts,
)
from assemblicon.highlevel.address import Family
from assemblicon.lowlevel.artrdr import SvgRenderKind
@dataclass(frozen=True)
class AuroraOpts:
selection: Optional[list[str]]
"""The list holding all name of jobs for building."""
"""
The list holding all name of jobs for building.
``None`` for building artifacts of all jobs.
"""
svg_render: SvgRenderKind
"""The render kind for SVG file."""
format_selection: Optional[set[Family]]
"""
The set holding all formats of artifacts for building.
``None`` for building artifacts of all formats.
"""
def parse() -> AuroraOpts:
@@ -26,6 +35,14 @@ def parse() -> AuroraOpts:
ns = parser.parse_args()
opts = parse_standard_opts(setup, ns)
format_selection = (
None
if opts.format_selection is None
else {item.to_assemblicon_type() for item in opts.format_selection}
)
return AuroraOpts(
selection=opts.selection, svg_render=opts.svg_render.to_assemblicon_type()
selection=opts.selection,
svg_render=opts.svg_render.to_assemblicon_type(),
format_selection=format_selection,
)
@@ -1,12 +1,23 @@
from ..types import AuroraContext, AuroraEnvironment
from assemblicon.highlevel.utils import FdContext, WinCategory, MacCategory
from assemblicon.highlevel.utils import (
FdContext,
IcoCategory,
IcnsCategory,
MsixCategory,
)
from assemblicon.highlevel.source import (
SvgSource,
TempArtSource,
NewArtSource,
BlenderSource,
)
from assemblicon.highlevel.sink import FdArtSink, WinArtSink, MacArtSink, TempArtSink
from assemblicon.highlevel.sink import (
FdArtSink,
IcoArtSink,
MsixArtSink,
IcnsArtSink,
TempArtSink,
)
from assemblicon.lowlevel.artproc import (
art_anchor_to_offset,
default_art_resize,
@@ -24,8 +35,9 @@ def register(ctx: AuroraContext) -> None:
TempArtSource("image-jpeg.png"),
NewArtSource(),
FdArtSink(FdContext.Applications, "org.sarasaschipworkshop.picture"),
WinArtSink(WinCategory.Application, "sarasacw-picture"),
MacArtSink(MacCategory.Application, "sarasacw-picture"),
IcoArtSink(IcoCategory.Application, "sarasacw-picture"),
MsixArtSink(MsixCategory.Application, "sarasacw-picture"),
IcnsArtSink(IcnsCategory.Application, "sarasacw-picture"),
),
build_sarasacw_picture_icon,
)
@@ -34,7 +46,8 @@ def register(ctx: AuroraContext) -> None:
(
BlenderSource("apps", "notepad.blend"),
TempArtSink("notepad.png"),
WinArtSink(WinCategory.Application, "notepad"),
IcoArtSink(IcoCategory.Application, "notepad"),
MsixArtSink(MsixCategory.Application, "notepad"),
),
build_notepad_icon,
)
@@ -46,8 +59,9 @@ def build_sarasacw_picture_icon(
inner_src: TempArtSource,
new_art: NewArtSource,
fd_sink: FdArtSink,
win_sink: WinArtSink,
mac_sink: MacArtSink,
ico_sink: IcoArtSink,
msix_sink: MsixArtSink,
icns_sink: IcnsArtSink,
) -> None:
app = new_art.pull()
frame = frame_src.pull(env)
@@ -67,16 +81,19 @@ def build_sarasacw_picture_icon(
# save artifact
fd_sink.push(env, app)
win_sink.push(env, app)
mac_sink.push(env, app)
ico_sink.push(env, app)
msix_sink.push(env, app)
icns_sink.push(env, app)
def build_notepad_icon(
env: AuroraEnvironment,
src: BlenderSource,
temp_sink: TempArtSink,
win_sink: WinArtSink,
ico_sink: IcoArtSink,
msix_sink: MsixArtSink,
) -> None:
src.pull_to_temp(env, temp_sink)
with temp_sink.repull(env) as art:
win_sink.push(env, art)
ico_sink.push(env, art)
msix_sink.push(env, art)
@@ -1,7 +1,18 @@
from ..types import AuroraContext, AuroraEnvironment
from assemblicon.highlevel.utils import FdContext, WinCategory, MacCategory
from assemblicon.highlevel.utils import (
FdContext,
IcoCategory,
IcnsCategory,
MsixCategory,
)
from assemblicon.highlevel.source import SvgSource, TempArtSource
from assemblicon.highlevel.sink import TempArtSink, FdArtSink, WinArtSink, MacArtSink
from assemblicon.highlevel.sink import (
TempArtSink,
FdArtSink,
IcoArtSink,
MsixArtSink,
IcnsArtSink,
)
def register(ctx: AuroraContext) -> None:
@@ -1,14 +1,25 @@
import PIL.Image
import PIL.ImageEnhance
from ..types import AuroraContext, AuroraEnvironment
from assemblicon.highlevel.utils import FdContext, WinCategory, MacCategory
from assemblicon.highlevel.utils import (
FdContext,
IcoCategory,
IcnsCategory,
MsixCategory,
)
from assemblicon.highlevel.source import (
SvgSource,
BitmapSource,
TempArtSource,
FdArtSource,
)
from assemblicon.highlevel.sink import TempArtSink, FdArtSink, WinArtSink, MacArtSink
from assemblicon.highlevel.sink import (
TempArtSink,
FdArtSink,
IcoArtSink,
MsixArtSink,
IcnsArtSink,
)
from assemblicon.geometry import Rectangle, Point
from assemblicon.lowlevel.artio import new_artifact
from assemblicon.lowlevel.artproc import (
@@ -42,8 +53,9 @@ def register(ctx: AuroraContext) -> None:
BitmapSource("bitmap", "Niinsaare_järv.jpg"),
TempArtSink("image-jpeg.png"),
FdArtSink(FdContext.MimeTypes, "image-jpeg"),
WinArtSink(WinCategory.Extension, "jpg"),
MacArtSink(MacCategory.Extension, "jpg"),
IcoArtSink(IcoCategory.Extension, "jpg"),
MsixArtSink(MsixCategory.Extension, "jpg"),
IcnsArtSink(IcnsCategory.Extension, "jpg"),
),
build_image_jpeg_icon,
)
@@ -55,8 +67,9 @@ def register(ctx: AuroraContext) -> None:
BitmapSource("bitmap", "Tulipa_suaveolens_floriade_to_Canberra-mask.png"),
SvgSource("image-png-checkerboard.svg"),
FdArtSink(FdContext.MimeTypes, "image-png"),
WinArtSink(WinCategory.Extension, "png"),
MacArtSink(MacCategory.Extension, "png"),
IcoArtSink(IcoCategory.Extension, "png"),
MsixArtSink(MsixCategory.Extension, "png"),
IcnsArtSink(IcnsCategory.Extension, "png"),
),
build_image_png_icon,
)
@@ -66,8 +79,9 @@ def register(ctx: AuroraContext) -> None:
TempArtSource("component", "image-base.png"),
BitmapSource("bitmap", "Van_Gogh_-_Starry_Night_-_Google_Art_Project.jpg"),
FdArtSink(FdContext.MimeTypes, "image-bmp"),
WinArtSink(WinCategory.Extension, "bmp"),
MacArtSink(MacCategory.Extension, "bmp"),
IcoArtSink(IcoCategory.Extension, "bmp"),
MsixArtSink(MsixCategory.Extension, "bmp"),
IcnsArtSink(IcnsCategory.Extension, "bmp"),
),
build_image_bmp_icon,
)
@@ -77,8 +91,9 @@ def register(ctx: AuroraContext) -> None:
TempArtSource("component", "image-base.png"),
BitmapSource("bitmap", "Hot-air_balloon_in_Tambov_-_02.jpg"),
FdArtSink(FdContext.MimeTypes, "image-gif"),
WinArtSink(WinCategory.Extension, "gif"),
MacArtSink(MacCategory.Extension, "gif"),
IcoArtSink(IcoCategory.Extension, "gif"),
MsixArtSink(MsixCategory.Extension, "gif"),
IcnsArtSink(IcnsCategory.Extension, "gif"),
),
build_image_gif_icon,
)
@@ -107,8 +122,9 @@ def build_image_jpeg_icon(
bitmap_src: BitmapSource,
temp_sink: TempArtSink,
fd_sink: FdArtSink,
win_sink: WinArtSink,
mac_sink: MacArtSink,
ico_sink: IcoArtSink,
msix_sink: MsixArtSink,
icns_sink: IcnsArtSink,
) -> None:
jpg_image = base_src.pull(env)
@@ -143,8 +159,9 @@ def build_image_jpeg_icon(
# save for FD
fd_sink.push(env, jpg_image)
# save for windows and mac
win_sink.push(env, jpg_image)
mac_sink.push(env, jpg_image)
ico_sink.push(env, jpg_image)
msix_sink.push(env, jpg_image)
icns_sink.push(env, jpg_image)
def build_image_png_icon(
@@ -154,8 +171,9 @@ def build_image_png_icon(
bitmap_mask_src: BitmapSource,
checkerboard_src: SvgSource,
fd_sink: FdArtSink,
win_sink: WinArtSink,
mac_sink: MacArtSink,
ico_sink: IcoArtSink,
msix_sink: MsixArtSink,
icns_sink: IcnsArtSink,
) -> None:
png_image = base_src.pull(env)
@@ -200,8 +218,9 @@ def build_image_png_icon(
# save for FD
fd_sink.push(env, png_image)
# save for windows and mac
win_sink.push(env, png_image)
mac_sink.push(env, png_image)
ico_sink.push(env, png_image)
msix_sink.push(env, png_image)
icns_sink.push(env, png_image)
def build_image_bmp_icon(
@@ -209,8 +228,9 @@ def build_image_bmp_icon(
base_src: TempArtSource,
bitmap_src: BitmapSource,
fd_sink: FdArtSink,
win_sink: WinArtSink,
mac_sink: MacArtSink,
ico_sink: IcoArtSink,
msix_sink: MsixArtSink,
icns_sink: IcnsArtSink,
) -> None:
bmp_image = base_src.pull(env)
@@ -233,8 +253,9 @@ def build_image_bmp_icon(
# save for FD
fd_sink.push(env, bmp_image)
# save for windows and mac
win_sink.push(env, bmp_image)
mac_sink.push(env, bmp_image)
ico_sink.push(env, bmp_image)
msix_sink.push(env, bmp_image)
icns_sink.push(env, bmp_image)
def build_image_gif_icon(
@@ -242,8 +263,9 @@ def build_image_gif_icon(
base_src: TempArtSource,
bitmap_src: BitmapSource,
fd_sink: FdArtSink,
win_sink: WinArtSink,
mac_sink: MacArtSink,
ico_sink: IcoArtSink,
msix_sink: MsixArtSink,
icns_sink: IcnsArtSink,
) -> None:
gif_image = base_src.pull(env)
@@ -266,5 +288,6 @@ def build_image_gif_icon(
# save for FD
fd_sink.push(env, gif_image)
# save for windows and mac
win_sink.push(env, gif_image)
mac_sink.push(env, gif_image)
ico_sink.push(env, gif_image)
msix_sink.push(env, gif_image)
icns_sink.push(env, gif_image)
Generated
+1 -1
View File
@@ -5,7 +5,7 @@ requires-python = ">=3.13"
[[package]]
name = "assemblicon"
version = "0.1.0"
source = { git = "https://github.com/SarasasChipWorkshop/assemblicon#0073298d45d6c44fc164456ebdec5f0d3ada5dff" }
source = { git = "https://github.com/SarasasChipWorkshop/assemblicon#d0a3d48c174aad51f493224d47ec4600a3935591" }
dependencies = [
{ name = "pillow" },
]