feat: add magnifying glass, zoom in, out, notepad icons

This commit is contained in:
2026-09-08 14:31:15 +08:00
parent 765375f04c
commit e0d6aa63e6
3 changed files with 87 additions and 37 deletions
@@ -1,7 +1,12 @@
from ..types import AuroraContext, AuroraEnvironment from ..types import AuroraContext, AuroraEnvironment
from ..assemblicon.highlevel.utils import FdContext, WinCategory, MacCategory from ..assemblicon.highlevel.utils import FdContext, WinCategory, MacCategory
from ..assemblicon.highlevel.source import SvgSource, TempArtSource, NewArtSource from ..assemblicon.highlevel.source import (
from ..assemblicon.highlevel.sink import FdArtSink, WinArtSink, MacArtSink SvgSource,
TempArtSource,
NewArtSource,
BlenderSource,
)
from ..assemblicon.highlevel.sink import FdArtSink, WinArtSink, MacArtSink, TempArtSink
from ..assemblicon.lowlevel.artproc import ( from ..assemblicon.lowlevel.artproc import (
art_anchor_to_offset, art_anchor_to_offset,
default_art_resize, default_art_resize,
@@ -22,11 +27,20 @@ def register(ctx: AuroraContext) -> None:
WinArtSink(WinCategory.Application, "sarasacw-picture"), WinArtSink(WinCategory.Application, "sarasacw-picture"),
MacArtSink(MacCategory.Application, "sarasacw-picture"), MacArtSink(MacCategory.Application, "sarasacw-picture"),
), ),
build_sarasacw_picture_icons, build_sarasacw_picture_icon,
)
ctx.register(
"nostd/application/notepad",
(
BlenderSource("app", "notepad.blend"),
TempArtSink("notepad.png"),
WinArtSink(WinCategory.Application, "notepad"),
),
build_notepad_icon,
) )
def build_sarasacw_picture_icons( def build_sarasacw_picture_icon(
env: AuroraEnvironment, env: AuroraEnvironment,
frame_src: SvgSource, frame_src: SvgSource,
inner_src: TempArtSource, inner_src: TempArtSource,
@@ -55,3 +69,14 @@ def build_sarasacw_picture_icons(
fd_sink.push(env, app) fd_sink.push(env, app)
win_sink.push(env, app) win_sink.push(env, app)
mac_sink.push(env, app) mac_sink.push(env, app)
def build_notepad_icon(
env: AuroraEnvironment,
src: BlenderSource,
temp_sink: TempArtSink,
win_sink: WinArtSink,
) -> None:
src.pull_to_temp(env, temp_sink)
with temp_sink.repull(env) as art:
win_sink.push(env, art)
@@ -1,5 +1,7 @@
import PIL.Image import PIL.Image
from ..types import AuroraContext, AuroraEnvironment from ..types import AuroraContext, AuroraEnvironment
from ..assemblicon.geometry import Rectangle, Point
from ..assemblicon.lowlevel.artproc import default_art_resize, align_alpha_composite
from ..assemblicon.highlevel.utils import FdContext from ..assemblicon.highlevel.utils import FdContext
from ..assemblicon.highlevel.source import SvgSource, TempArtSource from ..assemblicon.highlevel.source import SvgSource, TempArtSource
from ..assemblicon.highlevel.sink import FdArtSink from ..assemblicon.highlevel.sink import FdArtSink
@@ -68,6 +70,9 @@ def register(ctx: AuroraContext) -> None:
ctx.register( ctx.register(
"std/action/zoom-[in|out]", "std/action/zoom-[in|out]",
( (
TempArtSource("component", "magnifying-glass.png"),
TempArtSource("component", "plus.png"),
TempArtSource("component", "minus.png"),
FdArtSink(FdContext.Actions, "zoom-in"), FdArtSink(FdContext.Actions, "zoom-in"),
FdArtSink(FdContext.Actions, "zoom-out"), FdArtSink(FdContext.Actions, "zoom-out"),
), ),
@@ -146,7 +151,26 @@ def build_zoom_origin_and_fit_best_icons(
def build_zoom_in_out_icons( def build_zoom_in_out_icons(
env: AuroraEnvironment, zoom_in_sink: FdArtSink, zoom_out_sink: FdArtSink env: AuroraEnvironment,
magnifying_glass_source: TempArtSource,
plus_source: TempArtSource,
minus_source: TempArtSource,
zoom_in_sink: FdArtSink,
zoom_out_sink: FdArtSink,
) -> None: ) -> None:
# TODO: finish this in future magnifying_glass = magnifying_glass_source.pull(env)
pass magnifying_glass_rect = Rectangle.from_padding_rect(
Point(665, 355), 200, 200, 200, 200
)
inner_size = (magnifying_glass_rect.width, magnifying_glass_rect.height)
plus = default_art_resize(plus_source.pull(env), *inner_size)
minus = default_art_resize(minus_source.pull(env), *inner_size)
zoom_in = magnifying_glass.copy()
align_alpha_composite(zoom_in, plus, magnifying_glass_rect.pos1, Point(0, 0))
zoom_in_sink.push(env, zoom_in)
zoom_out = magnifying_glass.copy()
align_alpha_composite(zoom_out, minus, magnifying_glass_rect.pos1, Point(0, 0))
zoom_out_sink.push(env, zoom_out)
@@ -1,6 +1,11 @@
import PIL.Image import PIL.Image
from ..types import AuroraContext, AuroraEnvironment from ..types import AuroraContext, AuroraEnvironment
from ..assemblicon.highlevel.source import SvgSource, TempArtSource, NewArtSource from ..assemblicon.highlevel.source import (
SvgSource,
TempArtSource,
NewArtSource,
BlenderSource,
)
from ..assemblicon.highlevel.sink import TempArtSink from ..assemblicon.highlevel.sink import TempArtSink
@@ -27,24 +32,24 @@ def register(ctx: AuroraContext) -> None:
build_triangle_icons, build_triangle_icons,
) )
ctx.register( ctx.register(
"component/plus", "component/plus_minus",
( (
SvgSource("component", "plus.svg"),
TempArtSource("component", "generic-background.png"), TempArtSource("component", "generic-background.png"),
SvgSource("component", "plus.svg"),
SvgSource("component", "minus.svg"),
NewArtSource(), NewArtSource(),
TempArtSink("component", "plus.png"), TempArtSink("component", "plus.png"),
),
build_plus_icon,
)
ctx.register(
"component/minus",
(
SvgSource("component", "minus.svg"),
TempArtSource("component", "generic-background.png"),
NewArtSource(),
TempArtSink("component", "minus.png"), TempArtSink("component", "minus.png"),
), ),
build_minus_icon, build_plus_minus_icons,
)
ctx.register(
"component/magnifying-glass",
(
BlenderSource("component", "magnifying-glass.blend"),
TempArtSink("component", "magnifying-glass.png"),
),
build_magnifying_glass_icon,
) )
@@ -91,33 +96,29 @@ def build_triangle_icons(
sink_up.push(env, tri_up) sink_up.push(env, tri_up)
def build_plus_icon( def build_plus_minus_icons(
env: AuroraEnvironment, env: AuroraEnvironment,
plus_src: SvgSource,
bg_src: TempArtSource, bg_src: TempArtSource,
plus_src: SvgSource,
minus_src: SvgSource,
new_art: NewArtSource, new_art: NewArtSource,
sink: TempArtSink, plus_sink: TempArtSink,
minus_sink: TempArtSink,
) -> None: ) -> None:
plus = plus_src.pull(env)
bg = bg_src.pull(env) bg = bg_src.pull(env)
plus = plus_src.pull(env)
art = new_art.pull() art = new_art.pull()
art.paste(bg, (0, 0), plus) art.paste(bg, (0, 0), plus)
plus_sink.push(env, art)
sink.push(env, art)
def build_minus_icon(
env: AuroraEnvironment,
minus_src: SvgSource,
bg_src: TempArtSource,
new_art: NewArtSource,
sink: TempArtSink,
) -> None:
minus = minus_src.pull(env) minus = minus_src.pull(env)
bg = bg_src.pull(env)
art = new_art.pull() art = new_art.pull()
art.paste(bg, (0, 0), minus) art.paste(bg, (0, 0), minus)
minus_sink.push(env, art)
sink.push(env, art)
def build_magnifying_glass_icon(
env: AuroraEnvironment, src: BlenderSource, sink: TempArtSink
) -> None:
src.pull_to_temp(env, sink)