f7a720204a
- 移除 GovAI, nomifun-tauri, 算力盒子 的 submodule 引用 - 添加所有子项目的完整源代码 - 保留原始 .git 为 .git.bak 备份
429 lines
16 KiB
Bash
429 lines
16 KiB
Bash
#!/bin/bash
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
OUTPUT="$SCRIPT_DIR/dark__cyber_future.pptx"
|
|
|
|
echo "Building: dark--cyber-future (未来已来:2050)"
|
|
rm -f "$OUTPUT"
|
|
officecli create "$OUTPUT"
|
|
|
|
# Colors
|
|
BG=0B0C10
|
|
CYAN=66FCF1
|
|
GRAY=1F2833
|
|
TEAL=45A29E
|
|
WHITE=FFFFFF
|
|
GRAY2=C5C6C7
|
|
|
|
# Off-canvas position
|
|
OFFSCREEN=36cm
|
|
|
|
# ============================================
|
|
# SLIDE 1 - HERO
|
|
# ============================================
|
|
echo "Building Slide 1: Hero..."
|
|
|
|
officecli add "$OUTPUT" '/' --type slide --prop layout=blank --prop background=$BG
|
|
|
|
# Scene actors: background elements
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!bg-orb' \
|
|
--prop preset=ellipse \
|
|
--prop fill=$CYAN \
|
|
--prop opacity=0.08 \
|
|
--prop x=0cm --prop y=0cm --prop width=20cm --prop height=20cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!bg-box' \
|
|
--prop fill=$GRAY \
|
|
--prop opacity=0.3 \
|
|
--prop x=2cm --prop y=2cm --prop width=8cm --prop height=15cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!accent-line' \
|
|
--prop fill=$CYAN \
|
|
--prop x=1cm --prop y=4cm --prop width=0.2cm --prop height=5cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!frame' \
|
|
--prop fill=none \
|
|
--prop line=$GRAY \
|
|
--prop lineWidth=2 \
|
|
--prop x=1.2cm --prop y=0.8cm --prop width=31.47cm --prop height=17.45cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!dot-1' \
|
|
--prop preset=ellipse \
|
|
--prop fill=$TEAL \
|
|
--prop x=5cm --prop y=10cm --prop width=0.5cm --prop height=0.5cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!dot-2' \
|
|
--prop preset=ellipse \
|
|
--prop fill=$CYAN \
|
|
--prop x=30cm --prop y=15cm --prop width=1cm --prop height=1cm
|
|
|
|
# Slide 1 headline actors (visible on hero)
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!hero-title' \
|
|
--prop text="未来已来:2050" \
|
|
--prop font="Arial" \
|
|
--prop size=64 \
|
|
--prop bold=true \
|
|
--prop color=$WHITE \
|
|
--prop fill=none \
|
|
--prop x=4cm --prop y=6cm --prop width=25cm --prop height=4cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!hero-sub' \
|
|
--prop text="全息时代的一天" \
|
|
--prop font="Arial" \
|
|
--prop size=36 \
|
|
--prop color=$GRAY2 \
|
|
--prop fill=none \
|
|
--prop x=4.2cm --prop y=10.5cm --prop width=15cm --prop height=2cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!hero-tag' \
|
|
--prop text="THE BOUNDARY DISSOLVES" \
|
|
--prop font="Montserrat" \
|
|
--prop size=16 \
|
|
--prop color=$CYAN \
|
|
--prop bold=true \
|
|
--prop fill=none \
|
|
--prop x=4.2cm --prop y=13cm --prop width=15cm --prop height=1.5cm
|
|
|
|
# Slide 2 statement actors (hidden initially)
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!stmt-text' \
|
|
--prop text="物理与数字的边界彻底消融" \
|
|
--prop font="Arial" \
|
|
--prop size=54 \
|
|
--prop bold=true \
|
|
--prop color=$WHITE \
|
|
--prop align=center \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=7cm --prop width=28cm --prop height=4cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!stmt-sub' \
|
|
--prop text="智能代理、脑机接口与空间计算重塑了我们的每一秒" \
|
|
--prop font="Arial" \
|
|
--prop size=24 \
|
|
--prop color=$TEAL \
|
|
--prop align=center \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=12cm --prop width=28cm --prop height=2cm
|
|
|
|
# Slide 3 pillar content actors (hidden initially)
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p1-bg' \
|
|
--prop preset=roundRect \
|
|
--prop fill=$GRAY \
|
|
--prop opacity=0.4 \
|
|
--prop x=${OFFSCREEN} --prop y=4.5cm --prop width=9cm --prop height=11cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p1-time' \
|
|
--prop text="07:00" \
|
|
--prop font="Montserrat" \
|
|
--prop size=28 \
|
|
--prop bold=true \
|
|
--prop color=$CYAN \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=5.5cm --prop width=7cm --prop height=1.5cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p1-title' \
|
|
--prop text="基因营养与唤醒" \
|
|
--prop font="Arial" \
|
|
--prop size=24 \
|
|
--prop bold=true \
|
|
--prop color=$WHITE \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=7.5cm --prop width=7.5cm --prop height=1.5cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p1-desc' \
|
|
--prop text="AI管家实时读取体征,合成专属营养早餐,温和唤醒意识。" \
|
|
--prop font="Arial" \
|
|
--prop size=16 \
|
|
--prop color=$GRAY2 \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=10cm --prop width=7cm --prop height=4cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p2-bg' \
|
|
--prop preset=roundRect \
|
|
--prop fill=$GRAY \
|
|
--prop opacity=0.4 \
|
|
--prop x=${OFFSCREEN} --prop y=4.5cm --prop width=9cm --prop height=11cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p2-time' \
|
|
--prop text="14:00" \
|
|
--prop font="Montserrat" \
|
|
--prop size=28 \
|
|
--prop bold=true \
|
|
--prop color=$CYAN \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=5.5cm --prop width=7cm --prop height=1.5cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p2-title' \
|
|
--prop text="全息远程协同" \
|
|
--prop font="Arial" \
|
|
--prop size=24 \
|
|
--prop bold=true \
|
|
--prop color=$WHITE \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=7.5cm --prop width=7.5cm --prop height=1.5cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p2-desc' \
|
|
--prop text="在虚拟火星基地与全球团队开启三维会议,数据触手可及。" \
|
|
--prop font="Arial" \
|
|
--prop size=16 \
|
|
--prop color=$GRAY2 \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=10cm --prop width=7cm --prop height=4cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p3-bg' \
|
|
--prop preset=roundRect \
|
|
--prop fill=$GRAY \
|
|
--prop opacity=0.4 \
|
|
--prop x=${OFFSCREEN} --prop y=4.5cm --prop width=9cm --prop height=11cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p3-time' \
|
|
--prop text="21:00" \
|
|
--prop font="Montserrat" \
|
|
--prop size=28 \
|
|
--prop bold=true \
|
|
--prop color=$CYAN \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=5.5cm --prop width=7cm --prop height=1.5cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p3-title' \
|
|
--prop text="沉浸式潜意识休眠" \
|
|
--prop font="Arial" \
|
|
--prop size=24 \
|
|
--prop bold=true \
|
|
--prop color=$WHITE \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=7.5cm --prop width=8cm --prop height=1.5cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!p3-desc' \
|
|
--prop text="脑机接口连接潜意识网络,在深睡中完成知识载入与精神放松。" \
|
|
--prop font="Arial" \
|
|
--prop size=16 \
|
|
--prop color=$GRAY2 \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=10cm --prop width=7cm --prop height=4cm
|
|
|
|
# Slide 4 evidence actors (hidden initially)
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!ev-bg' \
|
|
--prop fill=$TEAL \
|
|
--prop opacity=0.3 \
|
|
--prop x=${OFFSCREEN} --prop y=3cm --prop width=15cm --prop height=13cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!ev-num' \
|
|
--prop text="98.5%" \
|
|
--prop font="Montserrat" \
|
|
--prop size=96 \
|
|
--prop bold=true \
|
|
--prop color=$CYAN \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=5cm --prop width=15cm --prop height=5cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!ev-label' \
|
|
--prop text="全球人口脑机接口接入率" \
|
|
--prop font="Arial" \
|
|
--prop size=24 \
|
|
--prop color=$WHITE \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=11cm --prop width=13cm --prop height=2cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!ev2-bg' \
|
|
--prop fill=$GRAY \
|
|
--prop opacity=0.5 \
|
|
--prop x=${OFFSCREEN} --prop y=8cm --prop width=12cm --prop height=8cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!ev2-num' \
|
|
--prop text="12.4 hrs" \
|
|
--prop font="Montserrat" \
|
|
--prop size=64 \
|
|
--prop bold=true \
|
|
--prop color=$WHITE \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=9.5cm --prop width=10cm --prop height=3cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!ev2-label' \
|
|
--prop text="平均每日混合现实驻留时长" \
|
|
--prop font="Arial" \
|
|
--prop size=18 \
|
|
--prop color=$GRAY2 \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=13.5cm --prop width=10cm --prop height=2cm
|
|
|
|
# Slide 5 CTA actors (hidden initially)
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!cta-title' \
|
|
--prop text="准备好迎接你的未来了吗?" \
|
|
--prop font="Arial" \
|
|
--prop size=48 \
|
|
--prop bold=true \
|
|
--prop color=$WHITE \
|
|
--prop align=center \
|
|
--prop fill=none \
|
|
--prop x=${OFFSCREEN} --prop y=7cm --prop width=26cm --prop height=3cm
|
|
|
|
officecli add "$OUTPUT" '/slide[1]' --type shape \
|
|
--prop 'name=!!cta-btn' \
|
|
--prop text="EXPLORE 2050" \
|
|
--prop preset=roundRect \
|
|
--prop font="Montserrat" \
|
|
--prop size=18 \
|
|
--prop bold=true \
|
|
--prop color=$BG \
|
|
--prop fill=$CYAN \
|
|
--prop align=center \
|
|
--prop x=${OFFSCREEN} --prop y=11.5cm --prop width=6cm --prop height=1.5cm
|
|
|
|
# ============================================
|
|
# SLIDE 2 - STATEMENT
|
|
# ============================================
|
|
echo "Building Slide 2: Statement..."
|
|
|
|
officecli add "$OUTPUT" '/' --from '/slide[1]'
|
|
officecli set "$OUTPUT" '/slide[2]' --prop transition=morph
|
|
|
|
# Move scene actors
|
|
officecli set "$OUTPUT" '/slide[2]/shape[1]' --prop x=20cm --prop y=8cm --prop opacity=0.05 --prop fill=$TEAL
|
|
officecli set "$OUTPUT" '/slide[2]/shape[2]' --prop x=14cm --prop y=2cm --prop width=18cm --prop opacity=0.1
|
|
officecli set "$OUTPUT" '/slide[2]/shape[3]' --prop x=2cm --prop y=2cm --prop width=30cm --prop height=0.2cm
|
|
officecli set "$OUTPUT" '/slide[2]/shape[5]' --prop x=31cm --prop y=4cm
|
|
officecli set "$OUTPUT" '/slide[2]/shape[6]' --prop x=3cm --prop y=16cm
|
|
|
|
# Hide hero text
|
|
officecli set "$OUTPUT" '/slide[2]/shape[7]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[2]/shape[8]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[2]/shape[9]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
|
|
# Show statement text
|
|
officecli set "$OUTPUT" '/slide[2]/shape[10]' --prop x=2.9cm --prop y=7cm
|
|
officecli set "$OUTPUT" '/slide[2]/shape[11]' --prop x=2.9cm --prop y=12cm
|
|
|
|
# ============================================
|
|
# SLIDE 3 - PILLARS
|
|
# ============================================
|
|
echo "Building Slide 3: Pillars..."
|
|
|
|
officecli add "$OUTPUT" '/' --from '/slide[2]'
|
|
officecli set "$OUTPUT" '/slide[3]' --prop transition=morph
|
|
|
|
# Move scene actors
|
|
officecli set "$OUTPUT" '/slide[3]/shape[1]' --prop x=10cm --prop y=0cm --prop opacity=0.08 --prop fill=$CYAN
|
|
officecli set "$OUTPUT" '/slide[3]/shape[2]' --prop x=2cm --prop y=2cm --prop width=30cm --prop height=2cm --prop opacity=0.1
|
|
officecli set "$OUTPUT" '/slide[3]/shape[3]' --prop x=31cm --prop y=4cm --prop width=0.2cm --prop height=5cm
|
|
|
|
# Hide statement text
|
|
officecli set "$OUTPUT" '/slide[3]/shape[10]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[3]/shape[11]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
|
|
# Show pillar 1
|
|
officecli set "$OUTPUT" '/slide[3]/shape[12]' --prop x=2.5cm --prop y=4.5cm
|
|
officecli set "$OUTPUT" '/slide[3]/shape[13]' --prop x=3.5cm --prop y=5.5cm
|
|
officecli set "$OUTPUT" '/slide[3]/shape[14]' --prop x=3.5cm --prop y=7.5cm
|
|
officecli set "$OUTPUT" '/slide[3]/shape[15]' --prop x=3.5cm --prop y=10cm
|
|
|
|
# Show pillar 2
|
|
officecli set "$OUTPUT" '/slide[3]/shape[16]' --prop x=12.5cm --prop y=4.5cm
|
|
officecli set "$OUTPUT" '/slide[3]/shape[17]' --prop x=13.5cm --prop y=5.5cm
|
|
officecli set "$OUTPUT" '/slide[3]/shape[18]' --prop x=13.5cm --prop y=7.5cm
|
|
officecli set "$OUTPUT" '/slide[3]/shape[19]' --prop x=13.5cm --prop y=10cm
|
|
|
|
# Show pillar 3
|
|
officecli set "$OUTPUT" '/slide[3]/shape[20]' --prop x=22.5cm --prop y=4.5cm
|
|
officecli set "$OUTPUT" '/slide[3]/shape[21]' --prop x=23.5cm --prop y=5.5cm
|
|
officecli set "$OUTPUT" '/slide[3]/shape[22]' --prop x=23.5cm --prop y=7.5cm
|
|
officecli set "$OUTPUT" '/slide[3]/shape[23]' --prop x=23.5cm --prop y=10cm
|
|
|
|
# ============================================
|
|
# SLIDE 4 - EVIDENCE
|
|
# ============================================
|
|
echo "Building Slide 4: Evidence..."
|
|
|
|
officecli add "$OUTPUT" '/' --from '/slide[3]'
|
|
officecli set "$OUTPUT" '/slide[4]' --prop transition=morph
|
|
|
|
# Move scene actors
|
|
officecli set "$OUTPUT" '/slide[4]/shape[1]' --prop x=15cm --prop y=10cm --prop opacity=0.05
|
|
officecli set "$OUTPUT" '/slide[4]/shape[2]' --prop x=2cm --prop y=4cm --prop width=4cm --prop height=11cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[3]' --prop x=2cm --prop y=15.5cm --prop width=12cm --prop height=0.2cm
|
|
|
|
# Hide pillars
|
|
officecli set "$OUTPUT" '/slide[4]/shape[12]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[13]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[14]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[15]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[16]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[17]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[18]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[19]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[20]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[21]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[22]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[23]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
|
|
# Show evidence
|
|
officecli set "$OUTPUT" '/slide[4]/shape[24]' --prop x=4cm --prop y=3cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[25]' --prop x=5cm --prop y=5cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[26]' --prop x=5cm --prop y=12cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[27]' --prop x=20cm --prop y=8cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[28]' --prop x=21cm --prop y=9.5cm
|
|
officecli set "$OUTPUT" '/slide[4]/shape[29]' --prop x=21cm --prop y=13.5cm
|
|
|
|
# ============================================
|
|
# SLIDE 5 - CTA
|
|
# ============================================
|
|
echo "Building Slide 5: CTA..."
|
|
|
|
officecli add "$OUTPUT" '/' --from '/slide[4]'
|
|
officecli set "$OUTPUT" '/slide[5]' --prop transition=morph
|
|
|
|
# Move scene actors
|
|
officecli set "$OUTPUT" '/slide[5]/shape[1]' --prop x=8cm --prop y=0cm --prop width=15cm --prop height=15cm --prop opacity=0.08
|
|
officecli set "$OUTPUT" '/slide[5]/shape[2]' --prop x=12cm --prop y=10cm --prop width=10cm --prop height=6cm
|
|
officecli set "$OUTPUT" '/slide[5]/shape[3]' --prop x=16.5cm --prop y=16cm --prop width=0.8cm --prop height=0.2cm
|
|
|
|
# Hide evidence
|
|
officecli set "$OUTPUT" '/slide[5]/shape[24]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[5]/shape[25]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[5]/shape[26]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[5]/shape[27]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[5]/shape[28]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
officecli set "$OUTPUT" '/slide[5]/shape[29]' --prop x=${OFFSCREEN} --prop y=0cm
|
|
|
|
# Show CTA
|
|
officecli set "$OUTPUT" '/slide[5]/shape[30]' --prop x=3.9cm --prop y=7cm
|
|
officecli set "$OUTPUT" '/slide[5]/shape[31]' --prop x=13.9cm --prop y=11.5cm
|
|
|
|
# ============================================
|
|
# FINAL VALIDATION
|
|
# ============================================
|
|
officecli validate "$OUTPUT"
|
|
officecli view "$OUTPUT" outline
|
|
|
|
echo "✅ Build complete: $OUTPUT"
|