* feat(server,ui): 悬浮工具栏图片模式与装饰图叠加候选词 在 #1046 的基础上按最新 develop 重做。 悬浮工具栏 [toolbar] mode = "image":一整张背景图,按钮按 [toolbar.buttons.<按钮>] 的 x_dip / y_dip / width_dip / height_dip 摆放, 可按状态换图([images]),没图时画矢量图标。窗口按背景图的透明区域裁成 异形,透明处点得穿;图上除按钮外都能拖动。v2 皮肤的动图会播放,工具栏 隐藏或淡出后停帧。 候选窗装饰图可用 candidate_overlay_* 叠加一个候选词,太宽时缩字号; 设置页的皮肤预览一并显示。 ui 新增 OverlayPanel(绝对定位)与 ImageMask(按 alpha 生成区域)。 * fix(ui): 动图工具栏的窗口形状取所有帧的并集 窗口区域连画面一起裁,只按首帧裁形状时,动画里伸出首帧轮廓的部分 (抬头、飞出的纸)会被裁掉。改为把所有帧的 alpha 合起来再生成区域。 * fix(server): 工具栏按钮框始终算在异形窗口里 窗口形状只取背景图不透明的部分时,摆在图片透明处的按钮会被一起裁掉、 点不到。形状改为背景图轮廓并上每个按钮的框,按钮可以放在人物旁边的空白处, 不必在背景图里垫底。 * feat(server): 工具栏按钮可单独设内置图标的字号 [toolbar.buttons.<按钮>] 新增 icon_size_dip,内置 Segoe Fluent Icons 图标的 字号不再只能跟着按钮框走:按钮框铺满背景图里的圆底、图标单独调大小。 不写时仍是按钮框短边的 0.82 倍。 * feat(server): 设置页按图片模式预览悬浮工具栏 皮肤页的卡片与悬浮工具栏页的预览原来只会画矩形条。皮肤是图片模式时, 改按工具栏的画法预览:背景图(v2 皮肤的动图会播放)、按皮肤坐标摆放的 按钮、按钮贴图或内置图标(含 icon_size_dip),设置页关掉的按钮不画, 缩放与图标尺寸设置一并生效。 --------- Co-authored-by: fanlusky <1730976608@qq.com>
168 lines
4.7 KiB
CMake
168 lines
4.7 KiB
CMake
cmake_minimum_required(VERSION 3.25)
|
|
|
|
project(msimeui VERSION 0.1.0 LANGUAGES CXX)
|
|
|
|
include(CTest)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
add_definitions(
|
|
/D_UNICODE=1
|
|
/DUNICODE=1
|
|
/DNOMINMAX=1
|
|
/DWIN32_LEAN_AND_MEAN=1
|
|
)
|
|
|
|
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
|
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib)
|
|
|
|
add_library(msimeui STATIC
|
|
src/Accordion.cpp
|
|
src/AnimatedImage.cpp
|
|
src/Animation.cpp
|
|
src/Application.cpp
|
|
src/Brush.cpp
|
|
src/Button.cpp
|
|
src/CandidateList.cpp
|
|
src/ComboBox.cpp
|
|
src/ControlsInternal.cpp
|
|
src/DebugLog.cpp
|
|
src/DeviceResources.cpp
|
|
src/Fonts.cpp
|
|
src/Image.cpp
|
|
src/ImageMask.cpp
|
|
src/ListView.cpp
|
|
src/Menu.cpp
|
|
src/PagerArrows.cpp
|
|
src/Popup.cpp
|
|
src/RangeControls.cpp
|
|
src/Separator.cpp
|
|
src/TabControl.cpp
|
|
src/TextBox.cpp
|
|
src/TreeView.cpp
|
|
src/Layout.cpp
|
|
src/Scene.cpp
|
|
src/Theme.cpp
|
|
src/Window.cpp
|
|
src/WindowClass.cpp
|
|
src/tsf/DisplayAttribute.cpp
|
|
src/tsf/TextContainer.cpp
|
|
src/tsf/TextEditor.cpp
|
|
src/tsf/TextEditSink.cpp
|
|
src/tsf/TextLayout.cpp
|
|
src/tsf/TextStore.cpp
|
|
src/tsf/TsfTextServices.cpp
|
|
include/msimeui/AnimatedImage.h
|
|
include/msimeui/Animation.h
|
|
include/msimeui/Application.h
|
|
include/msimeui/Brush.h
|
|
src/ControlsInternal.h
|
|
src/DebugLog.h
|
|
include/msimeui/Controls.h
|
|
include/msimeui/DeviceResources.h
|
|
include/msimeui/Fonts.h
|
|
include/msimeui/ImageMask.h
|
|
include/msimeui/Layout.h
|
|
include/msimeui/Scene.h
|
|
include/msimeui/Theme.h
|
|
include/msimeui/Types.h
|
|
include/msimeui/Window.h
|
|
src/tsf/DisplayAttribute.h
|
|
src/tsf/private.h
|
|
src/tsf/TextContainer.h
|
|
src/tsf/TextEditor.h
|
|
src/tsf/TextEditSink.h
|
|
src/tsf/TextLayout.h
|
|
src/tsf/TextStore.h
|
|
src/tsf/TsfTextServices.h
|
|
)
|
|
|
|
target_include_directories(msimeui
|
|
PUBLIC
|
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
|
PRIVATE
|
|
${CMAKE_CURRENT_SOURCE_DIR}/src/tsf
|
|
)
|
|
|
|
target_link_libraries(msimeui PUBLIC
|
|
d2d1.lib
|
|
dxguid.lib
|
|
d3d11.lib
|
|
dcomp.lib
|
|
dxgi.lib
|
|
dwrite.lib
|
|
dwmapi.lib
|
|
imm32.lib
|
|
ole32.lib
|
|
oleaut32.lib
|
|
uuid.lib
|
|
windowscodecs.lib
|
|
shlwapi.lib
|
|
# DeviceResources backdrop composition (Windows.UI.Composition through the WRL ABI).
|
|
runtimeobject.lib
|
|
CoreMessaging.lib
|
|
)
|
|
|
|
add_executable(msimeui-demo WIN32
|
|
demos/msimeui-demo/DemoScene.cpp
|
|
demos/msimeui-demo/DemoScene.h
|
|
demos/msimeui-demo/main.cpp
|
|
demos/msimeui-demo/msimeui-demo.rc
|
|
demos/msimeui-demo/resource.h
|
|
)
|
|
|
|
target_link_libraries(msimeui-demo PRIVATE msimeui)
|
|
target_compile_definitions(msimeui-demo PRIVATE MSIMEUI_ASSET_DIR=L\"${CMAKE_CURRENT_SOURCE_DIR}/assets\")
|
|
|
|
add_executable(msimeui-emoji-panel WIN32
|
|
demos/msimeui-emoji-panel/EmojiPanel.cpp
|
|
demos/msimeui-emoji-panel/EmojiPanel.h
|
|
demos/msimeui-emoji-panel/main.cpp
|
|
demos/msimeui-emoji-panel/msimeui-emoji-panel.rc
|
|
demos/msimeui-emoji-panel/resource.h
|
|
)
|
|
|
|
target_link_libraries(msimeui-emoji-panel PRIVATE msimeui)
|
|
|
|
add_executable(msimeui-keyboard-demo WIN32
|
|
demos/msimeui-keyboard-demo/KeyboardPanel.cpp
|
|
demos/msimeui-keyboard-demo/KeyboardPanel.h
|
|
demos/msimeui-keyboard-demo/main.cpp
|
|
demos/msimeui-keyboard-demo/msimeui-keyboard-demo.rc
|
|
demos/msimeui-keyboard-demo/resource.h
|
|
)
|
|
|
|
target_link_libraries(msimeui-keyboard-demo PRIVATE msimeui)
|
|
|
|
add_executable(msimeui-handwriting-demo WIN32
|
|
demos/msimeui-handwriting-demo/HandwritingPanel.cpp
|
|
demos/msimeui-handwriting-demo/HandwritingPanel.h
|
|
demos/msimeui-handwriting-demo/main.cpp
|
|
demos/msimeui-handwriting-demo/msimeui-handwriting-demo.rc
|
|
demos/msimeui-handwriting-demo/resource.h
|
|
)
|
|
|
|
target_link_libraries(msimeui-handwriting-demo PRIVATE msimeui windowsapp.lib)
|
|
|
|
# C++/WinRT needs C++20 coroutines. Under C++17 it falls back to
|
|
# <experimental/coroutine>, which recent MSVC STL versions reject outright.
|
|
target_compile_features(msimeui-handwriting-demo PRIVATE cxx_std_20)
|
|
|
|
if(MSVC)
|
|
# include/msimeui/Controls.h is UTF-8 without a BOM, so every consumer of msimeui has to read
|
|
# it as UTF-8 too; otherwise a CJK-locale build (code page 936) swallows lines and fails.
|
|
target_compile_options(msimeui PUBLIC /utf-8)
|
|
target_compile_options(msimeui PRIVATE /W4 /permissive-)
|
|
target_compile_options(msimeui-demo PRIVATE /W4 /permissive-)
|
|
target_compile_options(msimeui-emoji-panel PRIVATE /W4 /permissive-)
|
|
target_compile_options(msimeui-keyboard-demo PRIVATE /W4 /permissive-)
|
|
target_compile_options(msimeui-handwriting-demo PRIVATE /W4 /permissive-)
|
|
endif()
|
|
|
|
if(BUILD_TESTING)
|
|
add_subdirectory(tests)
|
|
endif()
|