diff --git a/tool/src/aurora_iconset_builder/__init__.py b/tool/src/aurora_iconset_builder/__init__.py index 09aa587..ff283f9 100644 --- a/tool/src/aurora_iconset_builder/__init__.py +++ b/tool/src/aurora_iconset_builder/__init__.py @@ -28,5 +28,5 @@ def main() -> None: def _build_icons(ctx: AdvancedContext) -> None: + build_standard_icons(ctx) build_non_standard_icons(ctx) - #build_standard_icons(ctx) diff --git a/tool/src/aurora_iconset_builder/assemblicon/context.py b/tool/src/aurora_iconset_builder/assemblicon/context.py index 19e816b..5c3d046 100644 --- a/tool/src/aurora_iconset_builder/assemblicon/context.py +++ b/tool/src/aurora_iconset_builder/assemblicon/context.py @@ -102,7 +102,7 @@ _DEFAULT_BLD_CONFIG = artrender.BlenderConfig(VANILLA_ARTIFACT_HW, VANILLA_ARTIF # TODO: For easy testing, we only build 32x32 and 48x48. # Enable full generation after testing. -_FD_THUMBNAIL_HWS: tuple[int, ...] = (32, 48, 1024) +_FD_THUMBNAIL_HWS: tuple[int, ...] = (32, 48) # _FD_THUMBNAIL_HWS: tuple[int, ...] = (16, 32, 48, 64, 128, 256) diff --git a/tool/src/aurora_iconset_builder/nostd_icons/__init__.py b/tool/src/aurora_iconset_builder/nostd_icons/__init__.py index 68ea84f..9bee5a6 100644 --- a/tool/src/aurora_iconset_builder/nostd_icons/__init__.py +++ b/tool/src/aurora_iconset_builder/nostd_icons/__init__.py @@ -1,4 +1,5 @@ from ..assemblicon.context import AdvancedContext +from .action_icons import build_action_icons from .mimetype_icons import build_mimetype_icons from .application_icons import build_application_icons @@ -6,3 +7,4 @@ from .application_icons import build_application_icons def build_non_standard_icons(ctx: AdvancedContext) -> None: build_mimetype_icons(ctx) build_application_icons(ctx) + build_action_icons(ctx) diff --git a/tool/src/aurora_iconset_builder/nostd_icons/action_icons.py b/tool/src/aurora_iconset_builder/nostd_icons/action_icons.py new file mode 100644 index 0000000..c71f2e7 --- /dev/null +++ b/tool/src/aurora_iconset_builder/nostd_icons/action_icons.py @@ -0,0 +1,29 @@ +import PIL.Image +from ..assemblicon.context import AdvancedContext, FdContext +from ..assemblicon.artproc import ( + anchor_to_pos, + align_alpha_composite, + VerticalAnchor, + HorizontalAnchor, +) + + +def build_action_icons(ctx: AdvancedContext) -> None: + _build_image_properties_icon(ctx) + + +def _build_image_properties_icon(ctx: AdvancedContext) -> None: + art = ctx.load_temporary_artifact("image-jpeg.png") + + info_mark = ctx.load_temporary_artifact("dialog-infomation.png") + resized_info_mark = info_mark.resize((500, 500), PIL.Image.Resampling.LANCZOS) + + align_alpha_composite( + art, + resized_info_mark, + anchor_to_pos(art, HorizontalAnchor.Right, VerticalAnchor.Bottom), + anchor_to_pos(resized_info_mark, HorizontalAnchor.Right, VerticalAnchor.Bottom), + ) + + # save artifact + ctx.save_fd_artifact(art, FdContext.Actions, "image-properties") diff --git a/tool/src/aurora_iconset_builder/std_icons/__init__.py b/tool/src/aurora_iconset_builder/std_icons/__init__.py index e342221..0fb8e90 100644 --- a/tool/src/aurora_iconset_builder/std_icons/__init__.py +++ b/tool/src/aurora_iconset_builder/std_icons/__init__.py @@ -1,6 +1,8 @@ from ..assemblicon.context import AdvancedContext from .action_icons import build_action_icons +from .status_icons import build_status_icons def build_standard_icons(ctx: AdvancedContext) -> None: build_action_icons(ctx) + build_status_icons(ctx) diff --git a/tool/src/aurora_iconset_builder/std_icons/status_icons.py b/tool/src/aurora_iconset_builder/std_icons/status_icons.py new file mode 100644 index 0000000..b924466 --- /dev/null +++ b/tool/src/aurora_iconset_builder/std_icons/status_icons.py @@ -0,0 +1,29 @@ +from ..assemblicon.context import AdvancedContext, FdContext + + +def build_status_icons(ctx: AdvancedContext) -> None: + _build_dialog_icons(ctx) + + +def _build_dialog_icons(ctx: AdvancedContext) -> None: + # save dialog icon with FreeDesktop icon and temp icon for reuse. + art = ctx.render_svg_then_load( + ctx.input_artifact("dialog-infomation.svg"), + ctx.temporary_artifact("dialog-infomation.png"), + ) + with art: + ctx.save_fd_artifact(art, FdContext.Status, "dialog-infomation") + + art = ctx.render_svg_then_load( + ctx.input_artifact("dialog-warning.svg"), + ctx.temporary_artifact("dialog-warning.png"), + ) + with art: + ctx.save_fd_artifact(art, FdContext.Status, "dialog-warning") + + art = ctx.render_svg_then_load( + ctx.input_artifact("dialog-error.svg"), + ctx.temporary_artifact("dialog-error.png"), + ) + with art: + ctx.save_fd_artifact(art, FdContext.Status, "dialog-error")