feat: spine exporter localize
This commit is contained in:
@@ -494,7 +494,7 @@ namespace SpineViewer.Controls
|
||||
{
|
||||
logger.Fatal(ex.ToString());
|
||||
logger.Fatal("Render task stopped");
|
||||
MessagePopup.Error(ex.ToString(), "预览画面已停止渲染", Properties.Resources.msgBoxError);
|
||||
MessagePopup.Error(ex.ToString(), Properties.Resources.previewRenderStopped);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
@@ -52,7 +52,7 @@ namespace SpineViewer.Dialogs
|
||||
if (e.Error != null)
|
||||
{
|
||||
logger.Error(e.Error.ToString());
|
||||
MessagePopup.Error(e.Error.ToString(), "执行出错", Properties.Resources.msgBoxError);
|
||||
MessagePopup.Error(e.Error.ToString(), Properties.Resources.runtimeError);
|
||||
DialogResult = DialogResult.Abort;
|
||||
}
|
||||
else if (e.Cancelled)
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace SpineViewer
|
||||
catch (Exception ex)
|
||||
{
|
||||
logger.Fatal(ex.ToString());
|
||||
MessagePopup.Error(ex.ToString(), "程序已崩溃", Properties.Resources.msgBoxError);
|
||||
MessagePopup.Error(ex.ToString(), Properties.Resources.programCrashed);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
801
SpineViewer/Properties/Resources.Designer.cs
generated
801
SpineViewer/Properties/Resources.Designer.cs
generated
@@ -69,6 +69,15 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 动画.
|
||||
/// </summary>
|
||||
internal static string animation {
|
||||
get {
|
||||
return ResourceManager.GetString("animation", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to atlas文件不存在.
|
||||
/// </summary>
|
||||
@@ -78,6 +87,24 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to atlas文件路径.
|
||||
/// </summary>
|
||||
internal static string atlasPath {
|
||||
get {
|
||||
return ResourceManager.GetString("atlasPath", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 基本信息.
|
||||
/// </summary>
|
||||
internal static string basicInfo {
|
||||
get {
|
||||
return ResourceManager.GetString("basicInfo", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 自定义.
|
||||
/// </summary>
|
||||
@@ -96,6 +123,33 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to [2] FFmpeg 基本参数.
|
||||
/// </summary>
|
||||
internal static string categoryFFmpegParameter {
|
||||
get {
|
||||
return ResourceManager.GetString("categoryFFmpegParameter", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to [3] 格式参数.
|
||||
/// </summary>
|
||||
internal static string categoryFormatParameters {
|
||||
get {
|
||||
return ResourceManager.GetString("categoryFormatParameters", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to [2] 帧序列参数.
|
||||
/// </summary>
|
||||
internal static string categoryFrameSequenceParameters {
|
||||
get {
|
||||
return ResourceManager.GetString("categoryFrameSequenceParameters", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to [1] 预览.
|
||||
/// </summary>
|
||||
@@ -105,6 +159,24 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to [1] 单帧画面.
|
||||
/// </summary>
|
||||
internal static string categorySingleFrame {
|
||||
get {
|
||||
return ResourceManager.GetString("categorySingleFrame", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to [1] 视频参数.
|
||||
/// </summary>
|
||||
internal static string categoryVideoParameters {
|
||||
get {
|
||||
return ResourceManager.GetString("categoryVideoParameters", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 项,共 .
|
||||
/// </summary>
|
||||
@@ -132,6 +204,33 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 调试.
|
||||
/// </summary>
|
||||
internal static string debug {
|
||||
get {
|
||||
return ResourceManager.GetString("debug", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 使用预览画面分辨率的情况下, 允许内容溢出到边缘和填充区域.
|
||||
/// </summary>
|
||||
internal static string descAllowContentOverflow {
|
||||
get {
|
||||
return ResourceManager.GetString("descAllowContentOverflow", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 小于该值的像素点会被认为是透明像素.
|
||||
/// </summary>
|
||||
internal static string descAlphaThreshold {
|
||||
get {
|
||||
return ResourceManager.GetString("descAlphaThreshold", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 相关联的 SpineListView.
|
||||
/// </summary>
|
||||
@@ -141,6 +240,51 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 根据导出内容自动设置分辨率, 四周填充距离和内容溢出参数将会被忽略.
|
||||
/// </summary>
|
||||
internal static string descAutoResolution {
|
||||
get {
|
||||
return ResourceManager.GetString("descAutoResolution", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to -c:v, 要使用的编码器\n建议使用硬件加速, libaom-av1 速度非常非常非常慢.
|
||||
/// </summary>
|
||||
internal static string descAvifEncoder {
|
||||
get {
|
||||
return ResourceManager.GetString("descAvifEncoder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 要使用的背景色, 格式为 #RRGGBBAA.
|
||||
/// </summary>
|
||||
internal static string descBackgroundColor {
|
||||
get {
|
||||
return ResourceManager.GetString("descBackgroundColor", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to -crf, 取值范围 0-63, 建议范围 18-28, 默认取值 23, 数值越小则输出质量越高.
|
||||
/// </summary>
|
||||
internal static string descCRF {
|
||||
get {
|
||||
return ResourceManager.GetString("descCRF", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 使用 \"ffmpeg -h encoder=<编码器>\" 查看编码器支持的参数\n使用 \"ffmpeg -h muxer=<文件格式>\" 查看文件格式支持的参数.
|
||||
/// </summary>
|
||||
internal static string descCustomArgument {
|
||||
get {
|
||||
return ResourceManager.GetString("descCustomArgument", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 用于显示画面属性的属性页.
|
||||
/// </summary>
|
||||
@@ -150,6 +294,123 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 导出图像的每英寸像素数,用于调整图像的物理尺寸.
|
||||
/// </summary>
|
||||
internal static string descDPI {
|
||||
get {
|
||||
return ResourceManager.GetString("descDPI", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 可以从模型列表查看动画时长, 如果小于 0, 则在逐个导出时每个模型使用各自的所有轨道动画时长最大值.
|
||||
/// </summary>
|
||||
internal static string descDuration {
|
||||
get {
|
||||
return ResourceManager.GetString("descDuration", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 是否将模型在同一个画面上导出单个文件,否则逐个导出模型.
|
||||
/// </summary>
|
||||
internal static string descExportSingle {
|
||||
get {
|
||||
return ResourceManager.GetString("descExportSingle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to -f, 文件格式.
|
||||
/// </summary>
|
||||
internal static string descFileFormat {
|
||||
get {
|
||||
return ResourceManager.GetString("descFileFormat", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 与图像格式匹配的文件名后缀.
|
||||
/// </summary>
|
||||
internal static string descFileNameExtension {
|
||||
get {
|
||||
return ResourceManager.GetString("descFileNameExtension", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 文件名后缀.
|
||||
/// </summary>
|
||||
internal static string descFilenameSuffix {
|
||||
get {
|
||||
return ResourceManager.GetString("descFilenameSuffix", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 每秒画面数.
|
||||
/// </summary>
|
||||
internal static string descFPS {
|
||||
get {
|
||||
return ResourceManager.GetString("descFPS", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 帧文件的后缀,同时决定帧图像格式.
|
||||
/// </summary>
|
||||
internal static string descFrameFileExtension {
|
||||
get {
|
||||
return ResourceManager.GetString("descFrameFileExtension", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 当设置保留最后一帧时, 动图会更为连贯, 但是帧数可能比预期帧数多 1.
|
||||
/// </summary>
|
||||
internal static string descKeepLastFrame {
|
||||
get {
|
||||
return ResourceManager.GetString("descKeepLastFrame", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to -loop, 循环次数, 0 无限循环, 取值范围 [0, 65535].
|
||||
/// </summary>
|
||||
internal static string descLoopCount {
|
||||
get {
|
||||
return ResourceManager.GetString("descLoopCount", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to -lossless, 0 表示有损, 1 表示无损.
|
||||
/// </summary>
|
||||
internal static string descLoseless {
|
||||
get {
|
||||
return ResourceManager.GetString("descLoseless", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 画布外部的边缘距离 (Margin), 最终导出的分辨率需要加上这个边距.
|
||||
/// </summary>
|
||||
internal static string descMargin {
|
||||
get {
|
||||
return ResourceManager.GetString("descMargin", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 设置调色板使用的最大颜色数量, 越多则色彩保留程度越高.
|
||||
/// </summary>
|
||||
internal static string descMaxColor {
|
||||
get {
|
||||
return ResourceManager.GetString("descMaxColor", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 用于显示模型属性的组合属性页.
|
||||
/// </summary>
|
||||
@@ -159,6 +420,105 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 逐个导出时可以留空,将逐个导出到模型自身所在目录.
|
||||
/// </summary>
|
||||
internal static string descOutputFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("descOutputFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 画布内部的填充距离 (Padding), 导出的分辨率大小不会发生变化, 但是会留有四周空间.
|
||||
/// </summary>
|
||||
internal static string descPadding {
|
||||
get {
|
||||
return ResourceManager.GetString("descPadding", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to -pix_fmt, 要使用的像素格式.
|
||||
/// </summary>
|
||||
internal static string descPixelFormat {
|
||||
get {
|
||||
return ResourceManager.GetString("descPixelFormat", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to -profile, 预设配置.
|
||||
/// </summary>
|
||||
internal static string descPreset {
|
||||
get {
|
||||
return ResourceManager.GetString("descPreset", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 预览画面的视区参数,请在预览画面参数面板进行调整.
|
||||
/// </summary>
|
||||
internal static string descPreviewViewport {
|
||||
get {
|
||||
return ResourceManager.GetString("descPreviewViewport", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to -quality, 取值范围 0-100, 默认值 75.
|
||||
/// </summary>
|
||||
internal static string descQuality {
|
||||
get {
|
||||
return ResourceManager.GetString("descQuality", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 是否仅导出选中的模型,请在预览画面参数面板进行调整.
|
||||
/// </summary>
|
||||
internal static string descRenderSelected {
|
||||
get {
|
||||
return ResourceManager.GetString("descRenderSelected", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 是否将模型在同一个画面上导出单个文件,否则逐个导出模型.
|
||||
/// </summary>
|
||||
internal static string descResolution {
|
||||
get {
|
||||
return ResourceManager.GetString("descResolution", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 允许内容溢出.
|
||||
/// </summary>
|
||||
internal static string displayAllowContentOverflow {
|
||||
get {
|
||||
return ResourceManager.GetString("displayAllowContentOverflow", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 透明度阈值.
|
||||
/// </summary>
|
||||
internal static string displayAlphaThreshold {
|
||||
get {
|
||||
return ResourceManager.GetString("displayAlphaThreshold", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 自动分辨率.
|
||||
/// </summary>
|
||||
internal static string displayAutoResolution {
|
||||
get {
|
||||
return ResourceManager.GetString("displayAutoResolution", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 背景颜色.
|
||||
/// </summary>
|
||||
@@ -177,6 +537,51 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 自定义参数.
|
||||
/// </summary>
|
||||
internal static string displayCustomArgument {
|
||||
get {
|
||||
return ResourceManager.GetString("displayCustomArgument", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 编码器.
|
||||
/// </summary>
|
||||
internal static string displayEncoder {
|
||||
get {
|
||||
return ResourceManager.GetString("displayEncoder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 导出单个.
|
||||
/// </summary>
|
||||
internal static string displayExportSingle {
|
||||
get {
|
||||
return ResourceManager.GetString("displayExportSingle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 文件格式.
|
||||
/// </summary>
|
||||
internal static string displayFileFormat {
|
||||
get {
|
||||
return ResourceManager.GetString("displayFileFormat", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 文件名后缀.
|
||||
/// </summary>
|
||||
internal static string displayFilenameSuffix {
|
||||
get {
|
||||
return ResourceManager.GetString("displayFilenameSuffix", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 水平翻转.
|
||||
/// </summary>
|
||||
@@ -195,6 +600,69 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 帧率.
|
||||
/// </summary>
|
||||
internal static string displayFPS {
|
||||
get {
|
||||
return ResourceManager.GetString("displayFPS", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 图像格式.
|
||||
/// </summary>
|
||||
internal static string displayImageFormat {
|
||||
get {
|
||||
return ResourceManager.GetString("displayImageFormat", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 保留最后一帧.
|
||||
/// </summary>
|
||||
internal static string displayKeepLastFrame {
|
||||
get {
|
||||
return ResourceManager.GetString("displayKeepLastFrame", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 循环次数.
|
||||
/// </summary>
|
||||
internal static string displayLoopCount {
|
||||
get {
|
||||
return ResourceManager.GetString("displayLoopCount", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 无损.
|
||||
/// </summary>
|
||||
internal static string displayLoseless {
|
||||
get {
|
||||
return ResourceManager.GetString("displayLoseless", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 四周边缘距离.
|
||||
/// </summary>
|
||||
internal static string displayMargin {
|
||||
get {
|
||||
return ResourceManager.GetString("displayMargin", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 调色板最大颜色数量.
|
||||
/// </summary>
|
||||
internal static string displayMaxColor {
|
||||
get {
|
||||
return ResourceManager.GetString("displayMaxColor", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 最大帧率.
|
||||
/// </summary>
|
||||
@@ -204,6 +672,60 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 输出文件夹.
|
||||
/// </summary>
|
||||
internal static string displayOutputFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("displayOutputFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 四周填充距离.
|
||||
/// </summary>
|
||||
internal static string displayPadding {
|
||||
get {
|
||||
return ResourceManager.GetString("displayPadding", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 像素格式.
|
||||
/// </summary>
|
||||
internal static string displayPixelFormat {
|
||||
get {
|
||||
return ResourceManager.GetString("displayPixelFormat", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 预设.
|
||||
/// </summary>
|
||||
internal static string displayPreset {
|
||||
get {
|
||||
return ResourceManager.GetString("displayPreset", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 预览画面视区.
|
||||
/// </summary>
|
||||
internal static string displayPreviewViewport {
|
||||
get {
|
||||
return ResourceManager.GetString("displayPreviewViewport", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 质量.
|
||||
/// </summary>
|
||||
internal static string displayQuality {
|
||||
get {
|
||||
return ResourceManager.GetString("displayQuality", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 仅渲染选中.
|
||||
/// </summary>
|
||||
@@ -249,6 +771,15 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 时长.
|
||||
/// </summary>
|
||||
internal static string duration {
|
||||
get {
|
||||
return ResourceManager.GetString("duration", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 骨骼加载失败.
|
||||
/// </summary>
|
||||
@@ -258,6 +789,105 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 文件版本.
|
||||
/// </summary>
|
||||
internal static string fileVersion {
|
||||
get {
|
||||
return ResourceManager.GetString("fileVersion", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 水平翻转.
|
||||
/// </summary>
|
||||
internal static string flipX {
|
||||
get {
|
||||
return ResourceManager.GetString("flipX", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 垂直翻转.
|
||||
/// </summary>
|
||||
internal static string flipY {
|
||||
get {
|
||||
return ResourceManager.GetString("flipY", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 文件夹 .
|
||||
/// </summary>
|
||||
internal static string folderNotExistPrefix {
|
||||
get {
|
||||
return ResourceManager.GetString("folderNotExistPrefix", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 不存在.
|
||||
/// </summary>
|
||||
internal static string folderNotExistSuffix {
|
||||
get {
|
||||
return ResourceManager.GetString("folderNotExistSuffix", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 无法解析颜色,请使用 #RRGGBBAA、#RRGGBB、#RGBA 或 #RGB 格式.
|
||||
/// </summary>
|
||||
internal static string formatExceptionParseColor {
|
||||
get {
|
||||
return ResourceManager.GetString("formatExceptionParseColor", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 无法解析颜色,请检查格式.
|
||||
/// </summary>
|
||||
internal static string formatExceptionParseColorError {
|
||||
get {
|
||||
return ResourceManager.GetString("formatExceptionParseColorError", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 无法解析颜色,请使用已知的颜色名称.
|
||||
/// </summary>
|
||||
internal static string formatExceptionUnknownColor {
|
||||
get {
|
||||
return ResourceManager.GetString("formatExceptionUnknownColor", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 帧.
|
||||
/// </summary>
|
||||
internal static string frame {
|
||||
get {
|
||||
return ResourceManager.GetString("frame", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 输出文件夹无效.
|
||||
/// </summary>
|
||||
internal static string invalidInputFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("invalidInputFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 是否隐藏.
|
||||
/// </summary>
|
||||
internal static string isHidden {
|
||||
get {
|
||||
return ResourceManager.GetString("isHidden", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 已选择 .
|
||||
/// </summary>
|
||||
@@ -294,6 +924,15 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 全轨道最大时长.
|
||||
/// </summary>
|
||||
internal static string maximumTrackLength {
|
||||
get {
|
||||
return ResourceManager.GetString("maximumTrackLength", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 错误信息.
|
||||
/// </summary>
|
||||
@@ -330,6 +969,33 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 导出单个时必须提供输出文件夹.
|
||||
/// </summary>
|
||||
internal static string mustProvideOutputFolder {
|
||||
get {
|
||||
return ResourceManager.GetString("mustProvideOutputFolder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 名称.
|
||||
/// </summary>
|
||||
internal static string name {
|
||||
get {
|
||||
return ResourceManager.GetString("name", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 导出单个时导出时长不能为负数.
|
||||
/// </summary>
|
||||
internal static string negativeDuration {
|
||||
get {
|
||||
return ResourceManager.GetString("negativeDuration", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 链接已复制到剪贴板,请前往浏览器进行访问.
|
||||
/// </summary>
|
||||
@@ -348,6 +1014,24 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 位置.
|
||||
/// </summary>
|
||||
internal static string position {
|
||||
get {
|
||||
return ResourceManager.GetString("position", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 预览画面已停止渲染.
|
||||
/// </summary>
|
||||
internal static string previewRenderStopped {
|
||||
get {
|
||||
return ResourceManager.GetString("previewRenderStopped", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 已处理 .
|
||||
/// </summary>
|
||||
@@ -357,6 +1041,15 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 程序已崩溃.
|
||||
/// </summary>
|
||||
internal static string programCrashed {
|
||||
get {
|
||||
return ResourceManager.GetString("programCrashed", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 确认移除所有 .
|
||||
/// </summary>
|
||||
@@ -384,6 +1077,24 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 渲染.
|
||||
/// </summary>
|
||||
internal static string render {
|
||||
get {
|
||||
return ResourceManager.GetString("render", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 资源目录.
|
||||
/// </summary>
|
||||
internal static string resourcesPath {
|
||||
get {
|
||||
return ResourceManager.GetString("resourcesPath", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 语言已设为英语。立即重启应用程序吗?.
|
||||
/// </summary>
|
||||
@@ -402,6 +1113,33 @@ namespace SpineViewer.Properties {
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 执行出错.
|
||||
/// </summary>
|
||||
internal static string runtimeError {
|
||||
get {
|
||||
return ResourceManager.GetString("runtimeError", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 运行时版本.
|
||||
/// </summary>
|
||||
internal static string runtimeVersion {
|
||||
get {
|
||||
return ResourceManager.GetString("runtimeVersion", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 缩放比例.
|
||||
/// </summary>
|
||||
internal static string scale {
|
||||
get {
|
||||
return ResourceManager.GetString("scale", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to skel文件不存在.
|
||||
/// </summary>
|
||||
@@ -410,5 +1148,68 @@ namespace SpineViewer.Properties {
|
||||
return ResourceManager.GetString("skelNotExist", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to skel文件路径.
|
||||
/// </summary>
|
||||
internal static string skelPath {
|
||||
get {
|
||||
return ResourceManager.GetString("skelPath", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 皮肤.
|
||||
/// </summary>
|
||||
internal static string skin {
|
||||
get {
|
||||
return ResourceManager.GetString("skin", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 插槽.
|
||||
/// </summary>
|
||||
internal static string slot {
|
||||
get {
|
||||
return ResourceManager.GetString("slot", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 变换.
|
||||
/// </summary>
|
||||
internal static string transform {
|
||||
get {
|
||||
return ResourceManager.GetString("transform", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 预乘Alpha通道.
|
||||
/// </summary>
|
||||
internal static string usePremultipliedAlpha {
|
||||
get {
|
||||
return ResourceManager.GetString("usePremultipliedAlpha", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 需要提供有效的文件名后缀.
|
||||
/// </summary>
|
||||
internal static string validExtensionRequired {
|
||||
get {
|
||||
return ResourceManager.GetString("validExtensionRequired", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to 需要提供有效的格式.
|
||||
/// </summary>
|
||||
internal static string validFormatRequired {
|
||||
get {
|
||||
return ResourceManager.GetString("validFormatRequired", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -120,15 +120,27 @@
|
||||
<data name="about" xml:space="preserve">
|
||||
<value>About</value>
|
||||
</data>
|
||||
<data name="animation" xml:space="preserve">
|
||||
<value>Animation</value>
|
||||
</data>
|
||||
<data name="atlasNotExist" xml:space="preserve">
|
||||
<value>Atlas file doesn't exist.</value>
|
||||
</data>
|
||||
<data name="atlasPath" xml:space="preserve">
|
||||
<value>Atlas file path</value>
|
||||
</data>
|
||||
<data name="basicInfo" xml:space="preserve">
|
||||
<value>Basic info</value>
|
||||
</data>
|
||||
<data name="categoryCustom" xml:space="preserve">
|
||||
<value>Custom</value>
|
||||
</data>
|
||||
<data name="categoryExport" xml:space="preserve">
|
||||
<value>[0] Export</value>
|
||||
</data>
|
||||
<data name="categoryFormatParameters" xml:space="preserve">
|
||||
<value>[3] Format parameters</value>
|
||||
</data>
|
||||
<data name="categoryPreview" xml:space="preserve">
|
||||
<value>[1] Preview</value>
|
||||
</data>
|
||||
@@ -141,12 +153,18 @@
|
||||
<data name="countInfoStatusSuffix" xml:space="preserve">
|
||||
<value>in total.</value>
|
||||
</data>
|
||||
<data name="debug" xml:space="preserve">
|
||||
<value>Debug</value>
|
||||
</data>
|
||||
<data name="descAssociatedSpineListView" xml:space="preserve">
|
||||
<value>Associated SpineListView</value>
|
||||
</data>
|
||||
<data name="descDisplayImageProperties" xml:space="preserve">
|
||||
<value>Property page for displaying image properties</value>
|
||||
</data>
|
||||
<data name="descAvifEncoder" xml:space="preserve">
|
||||
<value>-c:v: Video encoder to use. Hardware acceleration is recommended. Note: libaom-av1 is extremely slow.</value>
|
||||
</data>
|
||||
<data name="descModelAttributes" xml:space="preserve">
|
||||
<value>Model attributes display page.</value>
|
||||
</data>
|
||||
@@ -156,6 +174,9 @@
|
||||
<data name="displayCenter" xml:space="preserve">
|
||||
<value>Center point of screen</value>
|
||||
</data>
|
||||
<data name="displayEncoder" xml:space="preserve">
|
||||
<value>Encoder</value>
|
||||
</data>
|
||||
<data name="displayFlipHorizontal" xml:space="preserve">
|
||||
<value>Flip horizontal</value>
|
||||
</data>
|
||||
@@ -180,9 +201,33 @@
|
||||
<data name="displayZoom" xml:space="preserve">
|
||||
<value>Zoom</value>
|
||||
</data>
|
||||
<data name="duration" xml:space="preserve">
|
||||
<value>Duration</value>
|
||||
</data>
|
||||
<data name="errorLoadSkeleton" xml:space="preserve">
|
||||
<value>Failed to load skeleton</value>
|
||||
</data>
|
||||
<data name="fileVersion" xml:space="preserve">
|
||||
<value>File version</value>
|
||||
</data>
|
||||
<data name="flipX" xml:space="preserve">
|
||||
<value>FlipX</value>
|
||||
</data>
|
||||
<data name="flipY" xml:space="preserve">
|
||||
<value>FlipY</value>
|
||||
</data>
|
||||
<data name="formatExceptionParseColor" xml:space="preserve">
|
||||
<value>Unable to parse color, please use #RRGGBBAA, #RRGGBB, #RGBA or #RGB format.</value>
|
||||
</data>
|
||||
<data name="formatExceptionParseColorError" xml:space="preserve">
|
||||
<value>Color format is invalid. Please check the format.</value>
|
||||
</data>
|
||||
<data name="formatExceptionUnknownColor" xml:space="preserve">
|
||||
<value>Color not recognized. Please use a valid color name.</value>
|
||||
</data>
|
||||
<data name="isHidden" xml:space="preserve">
|
||||
<value>Is hidden</value>
|
||||
</data>
|
||||
<data name="itemCountPrefix" xml:space="preserve">
|
||||
<value>.</value>
|
||||
</data>
|
||||
@@ -195,6 +240,9 @@
|
||||
<data name="loadAllSkeletonSuffix" xml:space="preserve">
|
||||
<value>skeletons found. Do you want to load them all at once?</value>
|
||||
</data>
|
||||
<data name="maximumTrackLength" xml:space="preserve">
|
||||
<value>Maximum Track Length</value>
|
||||
</data>
|
||||
<data name="msgBoxError" xml:space="preserve">
|
||||
<value>Error</value>
|
||||
</data>
|
||||
@@ -207,15 +255,27 @@
|
||||
<data name="msgBoxWarning" xml:space="preserve">
|
||||
<value>Warning</value>
|
||||
</data>
|
||||
<data name="name" xml:space="preserve">
|
||||
<value>Name</value>
|
||||
</data>
|
||||
<data name="notifyCopyGithubLink" xml:space="preserve">
|
||||
<value>Link copied to clipboard. Please open it in browser</value>
|
||||
</data>
|
||||
<data name="parameterError" xml:space="preserve">
|
||||
<value>Invalid Parameters</value>
|
||||
</data>
|
||||
<data name="position" xml:space="preserve">
|
||||
<value>Position</value>
|
||||
</data>
|
||||
<data name="previewRenderStopped" xml:space="preserve">
|
||||
<value>Preview Render Stopped</value>
|
||||
</data>
|
||||
<data name="process" xml:space="preserve">
|
||||
<value>Processed </value>
|
||||
</data>
|
||||
<data name="programCrashed" xml:space="preserve">
|
||||
<value>Application has crashed</value>
|
||||
</data>
|
||||
<data name="removeAllItemPrefix" xml:space="preserve">
|
||||
<value>Remove all </value>
|
||||
</data>
|
||||
@@ -225,13 +285,221 @@
|
||||
<data name="removeItemConfirmSuffix" xml:space="preserve">
|
||||
<value> item(s)?</value>
|
||||
</data>
|
||||
<data name="render" xml:space="preserve">
|
||||
<value>Render</value>
|
||||
</data>
|
||||
<data name="resourcesPath" xml:space="preserve">
|
||||
<value>Resource Path</value>
|
||||
</data>
|
||||
<data name="restartPrompt" xml:space="preserve">
|
||||
<value>Language set to Simplified Chinese. Restart application now?</value>
|
||||
</data>
|
||||
<data name="restartTitle" xml:space="preserve">
|
||||
<value>Application restart required!</value>
|
||||
</data>
|
||||
<data name="runtimeError" xml:space="preserve">
|
||||
<value>Runtime error</value>
|
||||
</data>
|
||||
<data name="runtimeVersion" xml:space="preserve">
|
||||
<value>Runtime version</value>
|
||||
</data>
|
||||
<data name="scale" xml:space="preserve">
|
||||
<value>Scale</value>
|
||||
</data>
|
||||
<data name="skelNotExist" xml:space="preserve">
|
||||
<value>Skel file doesn't exist.</value>
|
||||
</data>
|
||||
<data name="skelPath" xml:space="preserve">
|
||||
<value>Skel file path</value>
|
||||
</data>
|
||||
<data name="skin" xml:space="preserve">
|
||||
<value>Skin</value>
|
||||
</data>
|
||||
<data name="slot" xml:space="preserve">
|
||||
<value>Slot</value>
|
||||
</data>
|
||||
<data name="transform" xml:space="preserve">
|
||||
<value>Transform</value>
|
||||
</data>
|
||||
<data name="usePremultipliedAlpha" xml:space="preserve">
|
||||
<value>UsePremultipliedAlpha</value>
|
||||
</data>
|
||||
<data name="descCRF" xml:space="preserve">
|
||||
<value>-crf: Accepts values from 0 to 63. Recommended range is 18–28 (default is 23). Lower values result in higher output quality</value>
|
||||
</data>
|
||||
<data name="displayPixelFormat" xml:space="preserve">
|
||||
<value>Pixel format</value>
|
||||
</data>
|
||||
<data name="descPixelFormat" xml:space="preserve">
|
||||
<value>-pix_fmt: Pixel format to use.</value>
|
||||
</data>
|
||||
<data name="displayLoopCount" xml:space="preserve">
|
||||
<value>Loop count</value>
|
||||
</data>
|
||||
<data name="descLoopCount" xml:space="preserve">
|
||||
<value>-loop: Number of loops. 0 for infinite loops. Valid range: [0, 65535].</value>
|
||||
</data>
|
||||
<data name="invalidInputFolder" xml:space="preserve">
|
||||
<value>Invalid output folder</value>
|
||||
</data>
|
||||
<data name="folderNotExistPrefix" xml:space="preserve">
|
||||
<value>Folder </value>
|
||||
</data>
|
||||
<data name="folderNotExistSuffix" xml:space="preserve">
|
||||
<value>doesn't exist.</value>
|
||||
</data>
|
||||
<data name="mustProvideOutputFolder" xml:space="preserve">
|
||||
<value>An output folder must be provided when exporting a single file.</value>
|
||||
</data>
|
||||
<data name="categoryFFmpegParameter" xml:space="preserve">
|
||||
<value>[2] FFmpeg Basic Parameters</value>
|
||||
</data>
|
||||
<data name="displayFileFormat" xml:space="preserve">
|
||||
<value>File format</value>
|
||||
</data>
|
||||
<data name="descFileFormat" xml:space="preserve">
|
||||
<value>-f: Specify the output file format</value>
|
||||
</data>
|
||||
<data name="displayFilenameSuffix" xml:space="preserve">
|
||||
<value>File extension</value>
|
||||
</data>
|
||||
<data name="descFilenameSuffix" xml:space="preserve">
|
||||
<value>File extension</value>
|
||||
</data>
|
||||
<data name="displayOutputFolder" xml:space="preserve">
|
||||
<value>Output folder</value>
|
||||
</data>
|
||||
<data name="descOutputFolder" xml:space="preserve">
|
||||
<value>Leave empty to export to each model's folder.</value>
|
||||
</data>
|
||||
<data name="displayExportSingle" xml:space="preserve">
|
||||
<value>Export single</value>
|
||||
</data>
|
||||
<data name="descExportSingle" xml:space="preserve">
|
||||
<value>Export all models in a single file, or export each model separately.</value>
|
||||
</data>
|
||||
<data name="descResolution" xml:space="preserve">
|
||||
<value>Set pixel size in preview panel.</value>
|
||||
</data>
|
||||
<data name="displayPreviewViewport" xml:space="preserve">
|
||||
<value>Preview viewport</value>
|
||||
</data>
|
||||
<data name="descPreviewViewport" xml:space="preserve">
|
||||
<value>Preview viewport settings. Adjust in the preview panel.</value>
|
||||
</data>
|
||||
<data name="descRenderSelected" xml:space="preserve">
|
||||
<value>Export selected models only. Adjust this in the preview settings panel.</value>
|
||||
</data>
|
||||
<data name="descBackgroundColor" xml:space="preserve">
|
||||
<value>Background color to use, in #RRGGBBAA format.</value>
|
||||
</data>
|
||||
<data name="displayMargin" xml:space="preserve">
|
||||
<value>Margin</value>
|
||||
</data>
|
||||
<data name="descMargin" xml:space="preserve">
|
||||
<value>Outer canvas margin. This will be added to the final export resolution.</value>
|
||||
</data>
|
||||
<data name="displayPadding" xml:space="preserve">
|
||||
<value>Padding</value>
|
||||
</data>
|
||||
<data name="descPadding" xml:space="preserve">
|
||||
<value>Internal canvas padding. The export resolution remains unchanged, but space will be left around the edges.</value>
|
||||
</data>
|
||||
<data name="displayAllowContentOverflow" xml:space="preserve">
|
||||
<value>Allow content overflow</value>
|
||||
</data>
|
||||
<data name="descAllowContentOverflow" xml:space="preserve">
|
||||
<value>When using the preview resolution, allow content to overflow into the edges and padding areas.</value>
|
||||
</data>
|
||||
<data name="displayAutoResolution" xml:space="preserve">
|
||||
<value>Auto resolution</value>
|
||||
</data>
|
||||
<data name="descAutoResolution" xml:space="preserve">
|
||||
<value>Automatically set resolution based on export content. Edge padding and content overflow settings will be ignored.</value>
|
||||
</data>
|
||||
<data name="validFormatRequired" xml:space="preserve">
|
||||
<value>Valid format required.</value>
|
||||
</data>
|
||||
<data name="validExtensionRequired" xml:space="preserve">
|
||||
<value>Valie extension required.</value>
|
||||
</data>
|
||||
<data name="descCustomArgument" xml:space="preserve">
|
||||
<value>Use "ffmpeg -h encoder=<encoder>" to view supported encoder parameters.
|
||||
Use "ffmpeg -h muxer=<file format>" to view supported file format parameters.</value>
|
||||
</data>
|
||||
<data name="displayCustomArgument" xml:space="preserve">
|
||||
<value>Custom arguments</value>
|
||||
</data>
|
||||
<data name="categorySingleFrame" xml:space="preserve">
|
||||
<value>[1] Single Frame</value>
|
||||
</data>
|
||||
<data name="displayImageFormat" xml:space="preserve">
|
||||
<value>Image format</value>
|
||||
</data>
|
||||
<data name="descFileNameExtension" xml:space="preserve">
|
||||
<value>Filename extension matching the image format.</value>
|
||||
</data>
|
||||
<data name="descDPI" xml:space="preserve">
|
||||
<value>Pixels per inch (PPI) for the exported image, used to adjust the physical size of the image.</value>
|
||||
</data>
|
||||
<data name="categoryFrameSequenceParameters" xml:space="preserve">
|
||||
<value>[2] Frame Sequence Parameters</value>
|
||||
</data>
|
||||
<data name="descFrameFileExtension" xml:space="preserve">
|
||||
<value>Frame file extension, which also defines the image format of each frame.</value>
|
||||
</data>
|
||||
<data name="displayMaxColor" xml:space="preserve">
|
||||
<value>Max colors in palette</value>
|
||||
</data>
|
||||
<data name="descMaxColor" xml:space="preserve">
|
||||
<value>Max colors in palette. Higher value = better color retention.</value>
|
||||
</data>
|
||||
<data name="displayAlphaThreshold" xml:space="preserve">
|
||||
<value>Alpha threshold</value>
|
||||
</data>
|
||||
<data name="descAlphaThreshold" xml:space="preserve">
|
||||
<value>Pixels below this value will be considered transparent.</value>
|
||||
</data>
|
||||
<data name="displayPreset" xml:space="preserve">
|
||||
<value>Preset</value>
|
||||
</data>
|
||||
<data name="descPreset" xml:space="preserve">
|
||||
<value>-profile: Preset configuration</value>
|
||||
</data>
|
||||
<data name="negativeDuration" xml:space="preserve">
|
||||
<value>Export duration cannot be negative when exporting a single file.</value>
|
||||
</data>
|
||||
<data name="frame" xml:space="preserve">
|
||||
<value>frame(s)</value>
|
||||
</data>
|
||||
<data name="categoryVideoParameters" xml:space="preserve">
|
||||
<value>[1] Video Parameters</value>
|
||||
</data>
|
||||
<data name="descDuration" xml:space="preserve">
|
||||
<value>Check animation duration in the model list. If less than 0, each model uses its longest track when exporting individually.</value>
|
||||
</data>
|
||||
<data name="displayFPS" xml:space="preserve">
|
||||
<value>FPS</value>
|
||||
</data>
|
||||
<data name="descFPS" xml:space="preserve">
|
||||
<value>Frames Per Second (FPS)</value>
|
||||
</data>
|
||||
<data name="displayKeepLastFrame" xml:space="preserve">
|
||||
<value>Keep last frame</value>
|
||||
</data>
|
||||
<data name="descKeepLastFrame" xml:space="preserve">
|
||||
<value>Keeping the last frame smooths the animation, but may add one extra frame.</value>
|
||||
</data>
|
||||
<data name="displayLoseless" xml:space="preserve">
|
||||
<value>Loseless</value>
|
||||
</data>
|
||||
<data name="descLoseless" xml:space="preserve">
|
||||
<value>-lossless: 0 for lossy, 1 for lossless.</value>
|
||||
</data>
|
||||
<data name="displayQuality" xml:space="preserve">
|
||||
<value>Quality</value>
|
||||
</data>
|
||||
<data name="descQuality" xml:space="preserve">
|
||||
<value>-quality: Range 0-100, default is 75.</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -120,15 +120,27 @@
|
||||
<data name="about" xml:space="preserve">
|
||||
<value>关于 </value>
|
||||
</data>
|
||||
<data name="animation" xml:space="preserve">
|
||||
<value>动画</value>
|
||||
</data>
|
||||
<data name="atlasNotExist" xml:space="preserve">
|
||||
<value>atlas文件不存在</value>
|
||||
</data>
|
||||
<data name="atlasPath" xml:space="preserve">
|
||||
<value>atlas文件路径</value>
|
||||
</data>
|
||||
<data name="basicInfo" xml:space="preserve">
|
||||
<value>基本信息</value>
|
||||
</data>
|
||||
<data name="categoryCustom" xml:space="preserve">
|
||||
<value>自定义</value>
|
||||
</data>
|
||||
<data name="categoryExport" xml:space="preserve">
|
||||
<value>[0] 导出</value>
|
||||
</data>
|
||||
<data name="categoryFormatParameters" xml:space="preserve">
|
||||
<value>[3] 格式参数</value>
|
||||
</data>
|
||||
<data name="categoryPreview" xml:space="preserve">
|
||||
<value>[1] 预览</value>
|
||||
</data>
|
||||
@@ -141,12 +153,18 @@
|
||||
<data name="countInfoStatusSuffix" xml:space="preserve">
|
||||
<value> 项</value>
|
||||
</data>
|
||||
<data name="debug" xml:space="preserve">
|
||||
<value>调试</value>
|
||||
</data>
|
||||
<data name="descAssociatedSpineListView" xml:space="preserve">
|
||||
<value>相关联的 SpineListView</value>
|
||||
</data>
|
||||
<data name="descDisplayImageProperties" xml:space="preserve">
|
||||
<value>用于显示画面属性的属性页</value>
|
||||
</data>
|
||||
<data name="descAvifEncoder" xml:space="preserve">
|
||||
<value>-c:v, 要使用的编码器\n建议使用硬件加速, libaom-av1 速度非常非常非常慢</value>
|
||||
</data>
|
||||
<data name="descModelAttributes" xml:space="preserve">
|
||||
<value>用于显示模型属性的组合属性页</value>
|
||||
</data>
|
||||
@@ -156,6 +174,9 @@
|
||||
<data name="displayCenter" xml:space="preserve">
|
||||
<value>画面中心点</value>
|
||||
</data>
|
||||
<data name="displayEncoder" xml:space="preserve">
|
||||
<value>编码器</value>
|
||||
</data>
|
||||
<data name="displayFlipHorizontal" xml:space="preserve">
|
||||
<value>水平翻转</value>
|
||||
</data>
|
||||
@@ -180,9 +201,33 @@
|
||||
<data name="displayZoom" xml:space="preserve">
|
||||
<value>缩放</value>
|
||||
</data>
|
||||
<data name="duration" xml:space="preserve">
|
||||
<value>时长</value>
|
||||
</data>
|
||||
<data name="errorLoadSkeleton" xml:space="preserve">
|
||||
<value>骨骼加载失败</value>
|
||||
</data>
|
||||
<data name="fileVersion" xml:space="preserve">
|
||||
<value>文件版本</value>
|
||||
</data>
|
||||
<data name="flipX" xml:space="preserve">
|
||||
<value>水平翻转</value>
|
||||
</data>
|
||||
<data name="flipY" xml:space="preserve">
|
||||
<value>垂直翻转</value>
|
||||
</data>
|
||||
<data name="formatExceptionParseColor" xml:space="preserve">
|
||||
<value>无法解析颜色,请使用 #RRGGBBAA、#RRGGBB、#RGBA 或 #RGB 格式</value>
|
||||
</data>
|
||||
<data name="formatExceptionParseColorError" xml:space="preserve">
|
||||
<value>无法解析颜色,请检查格式</value>
|
||||
</data>
|
||||
<data name="formatExceptionUnknownColor" xml:space="preserve">
|
||||
<value>无法解析颜色,请使用已知的颜色名称</value>
|
||||
</data>
|
||||
<data name="isHidden" xml:space="preserve">
|
||||
<value>是否隐藏</value>
|
||||
</data>
|
||||
<data name="itemCountPrefix" xml:space="preserve">
|
||||
<value>已选择 </value>
|
||||
</data>
|
||||
@@ -195,6 +240,9 @@
|
||||
<data name="loadAllSkeletonSuffix" xml:space="preserve">
|
||||
<value> 个可加载骨骼,数量较多,是否一次性全部加载?</value>
|
||||
</data>
|
||||
<data name="maximumTrackLength" xml:space="preserve">
|
||||
<value>全轨道最大时长</value>
|
||||
</data>
|
||||
<data name="msgBoxError" xml:space="preserve">
|
||||
<value>错误信息</value>
|
||||
</data>
|
||||
@@ -207,15 +255,27 @@
|
||||
<data name="msgBoxWarning" xml:space="preserve">
|
||||
<value>警告信息</value>
|
||||
</data>
|
||||
<data name="name" xml:space="preserve">
|
||||
<value>名称</value>
|
||||
</data>
|
||||
<data name="notifyCopyGithubLink" xml:space="preserve">
|
||||
<value>链接已复制到剪贴板,请前往浏览器进行访问</value>
|
||||
</data>
|
||||
<data name="parameterError" xml:space="preserve">
|
||||
<value>参数错误</value>
|
||||
</data>
|
||||
<data name="position" xml:space="preserve">
|
||||
<value>位置</value>
|
||||
</data>
|
||||
<data name="previewRenderStopped" xml:space="preserve">
|
||||
<value>预览画面已停止渲染</value>
|
||||
</data>
|
||||
<data name="process" xml:space="preserve">
|
||||
<value>已处理 </value>
|
||||
</data>
|
||||
<data name="programCrashed" xml:space="preserve">
|
||||
<value>程序已崩溃</value>
|
||||
</data>
|
||||
<data name="removeAllItemPrefix" xml:space="preserve">
|
||||
<value>确认移除所有 </value>
|
||||
</data>
|
||||
@@ -225,13 +285,220 @@
|
||||
<data name="removeItemConfirmSuffix" xml:space="preserve">
|
||||
<value> 项吗?</value>
|
||||
</data>
|
||||
<data name="render" xml:space="preserve">
|
||||
<value>渲染</value>
|
||||
</data>
|
||||
<data name="resourcesPath" xml:space="preserve">
|
||||
<value>资源目录</value>
|
||||
</data>
|
||||
<data name="restartPrompt" xml:space="preserve">
|
||||
<value>语言已设为英语。立即重启应用程序吗?</value>
|
||||
</data>
|
||||
<data name="restartTitle" xml:space="preserve">
|
||||
<value>需要重新启动应用程序!</value>
|
||||
</data>
|
||||
<data name="runtimeError" xml:space="preserve">
|
||||
<value>执行出错</value>
|
||||
</data>
|
||||
<data name="runtimeVersion" xml:space="preserve">
|
||||
<value>运行时版本</value>
|
||||
</data>
|
||||
<data name="scale" xml:space="preserve">
|
||||
<value>缩放比例</value>
|
||||
</data>
|
||||
<data name="skelNotExist" xml:space="preserve">
|
||||
<value>skel文件不存在</value>
|
||||
</data>
|
||||
<data name="skelPath" xml:space="preserve">
|
||||
<value>skel文件路径</value>
|
||||
</data>
|
||||
<data name="skin" xml:space="preserve">
|
||||
<value>皮肤</value>
|
||||
</data>
|
||||
<data name="slot" xml:space="preserve">
|
||||
<value>插槽</value>
|
||||
</data>
|
||||
<data name="transform" xml:space="preserve">
|
||||
<value>变换</value>
|
||||
</data>
|
||||
<data name="usePremultipliedAlpha" xml:space="preserve">
|
||||
<value>预乘Alpha通道</value>
|
||||
</data>
|
||||
<data name="descCRF" xml:space="preserve">
|
||||
<value>-crf, 取值范围 0-63, 建议范围 18-28, 默认取值 23, 数值越小则输出质量越高</value>
|
||||
</data>
|
||||
<data name="displayPixelFormat" xml:space="preserve">
|
||||
<value>像素格式</value>
|
||||
</data>
|
||||
<data name="descPixelFormat" xml:space="preserve">
|
||||
<value>-pix_fmt, 要使用的像素格式</value>
|
||||
</data>
|
||||
<data name="displayLoopCount" xml:space="preserve">
|
||||
<value>循环次数</value>
|
||||
</data>
|
||||
<data name="descLoopCount" xml:space="preserve">
|
||||
<value>-loop, 循环次数, 0 无限循环, 取值范围 [0, 65535]</value>
|
||||
</data>
|
||||
<data name="invalidInputFolder" xml:space="preserve">
|
||||
<value>输出文件夹无效</value>
|
||||
</data>
|
||||
<data name="folderNotExistPrefix" xml:space="preserve">
|
||||
<value>文件夹 </value>
|
||||
</data>
|
||||
<data name="folderNotExistSuffix" xml:space="preserve">
|
||||
<value>不存在</value>
|
||||
</data>
|
||||
<data name="mustProvideOutputFolder" xml:space="preserve">
|
||||
<value>导出单个时必须提供输出文件夹</value>
|
||||
</data>
|
||||
<data name="categoryFFmpegParameter" xml:space="preserve">
|
||||
<value>[2] FFmpeg 基本参数</value>
|
||||
</data>
|
||||
<data name="displayFileFormat" xml:space="preserve">
|
||||
<value>文件格式</value>
|
||||
</data>
|
||||
<data name="descFileFormat" xml:space="preserve">
|
||||
<value>-f, 文件格式</value>
|
||||
</data>
|
||||
<data name="displayFilenameSuffix" xml:space="preserve">
|
||||
<value>文件名后缀</value>
|
||||
</data>
|
||||
<data name="descFilenameSuffix" xml:space="preserve">
|
||||
<value>文件名后缀</value>
|
||||
</data>
|
||||
<data name="displayOutputFolder" xml:space="preserve">
|
||||
<value>输出文件夹</value>
|
||||
</data>
|
||||
<data name="descOutputFolder" xml:space="preserve">
|
||||
<value>逐个导出时可以留空,将逐个导出到模型自身所在目录</value>
|
||||
</data>
|
||||
<data name="displayExportSingle" xml:space="preserve">
|
||||
<value>导出单个</value>
|
||||
</data>
|
||||
<data name="descExportSingle" xml:space="preserve">
|
||||
<value>是否将模型在同一个画面上导出单个文件,否则逐个导出模型</value>
|
||||
</data>
|
||||
<data name="descResolution" xml:space="preserve">
|
||||
<value>是否将模型在同一个画面上导出单个文件,否则逐个导出模型</value>
|
||||
</data>
|
||||
<data name="displayPreviewViewport" xml:space="preserve">
|
||||
<value>预览画面视区</value>
|
||||
</data>
|
||||
<data name="descPreviewViewport" xml:space="preserve">
|
||||
<value>预览画面的视区参数,请在预览画面参数面板进行调整</value>
|
||||
</data>
|
||||
<data name="descRenderSelected" xml:space="preserve">
|
||||
<value>是否仅导出选中的模型,请在预览画面参数面板进行调整</value>
|
||||
</data>
|
||||
<data name="descBackgroundColor" xml:space="preserve">
|
||||
<value>要使用的背景色, 格式为 #RRGGBBAA</value>
|
||||
</data>
|
||||
<data name="displayMargin" xml:space="preserve">
|
||||
<value>四周边缘距离</value>
|
||||
</data>
|
||||
<data name="descMargin" xml:space="preserve">
|
||||
<value>画布外部的边缘距离 (Margin), 最终导出的分辨率需要加上这个边距</value>
|
||||
</data>
|
||||
<data name="displayPadding" xml:space="preserve">
|
||||
<value>四周填充距离</value>
|
||||
</data>
|
||||
<data name="descPadding" xml:space="preserve">
|
||||
<value>画布内部的填充距离 (Padding), 导出的分辨率大小不会发生变化, 但是会留有四周空间</value>
|
||||
</data>
|
||||
<data name="displayAllowContentOverflow" xml:space="preserve">
|
||||
<value>允许内容溢出</value>
|
||||
</data>
|
||||
<data name="descAllowContentOverflow" xml:space="preserve">
|
||||
<value>使用预览画面分辨率的情况下, 允许内容溢出到边缘和填充区域</value>
|
||||
</data>
|
||||
<data name="displayAutoResolution" xml:space="preserve">
|
||||
<value>自动分辨率</value>
|
||||
</data>
|
||||
<data name="descAutoResolution" xml:space="preserve">
|
||||
<value>根据导出内容自动设置分辨率, 四周填充距离和内容溢出参数将会被忽略</value>
|
||||
</data>
|
||||
<data name="validFormatRequired" xml:space="preserve">
|
||||
<value>需要提供有效的格式</value>
|
||||
</data>
|
||||
<data name="validExtensionRequired" xml:space="preserve">
|
||||
<value>需要提供有效的文件名后缀</value>
|
||||
</data>
|
||||
<data name="descCustomArgument" xml:space="preserve">
|
||||
<value>使用 \"ffmpeg -h encoder=<编码器>\" 查看编码器支持的参数\n使用 \"ffmpeg -h muxer=<文件格式>\" 查看文件格式支持的参数</value>
|
||||
</data>
|
||||
<data name="displayCustomArgument" xml:space="preserve">
|
||||
<value>自定义参数</value>
|
||||
</data>
|
||||
<data name="categorySingleFrame" xml:space="preserve">
|
||||
<value>[1] 单帧画面</value>
|
||||
</data>
|
||||
<data name="displayImageFormat" xml:space="preserve">
|
||||
<value>图像格式</value>
|
||||
</data>
|
||||
<data name="descFileNameExtension" xml:space="preserve">
|
||||
<value>与图像格式匹配的文件名后缀</value>
|
||||
</data>
|
||||
<data name="descDPI" xml:space="preserve">
|
||||
<value>导出图像的每英寸像素数,用于调整图像的物理尺寸</value>
|
||||
</data>
|
||||
<data name="categoryFrameSequenceParameters" xml:space="preserve">
|
||||
<value>[2] 帧序列参数</value>
|
||||
</data>
|
||||
<data name="descFrameFileExtension" xml:space="preserve">
|
||||
<value>帧文件的后缀,同时决定帧图像格式</value>
|
||||
</data>
|
||||
<data name="displayMaxColor" xml:space="preserve">
|
||||
<value>调色板最大颜色数量</value>
|
||||
</data>
|
||||
<data name="descMaxColor" xml:space="preserve">
|
||||
<value>设置调色板使用的最大颜色数量, 越多则色彩保留程度越高</value>
|
||||
</data>
|
||||
<data name="displayAlphaThreshold" xml:space="preserve">
|
||||
<value>透明度阈值</value>
|
||||
</data>
|
||||
<data name="descAlphaThreshold" xml:space="preserve">
|
||||
<value>小于该值的像素点会被认为是透明像素</value>
|
||||
</data>
|
||||
<data name="displayPreset" xml:space="preserve">
|
||||
<value>预设</value>
|
||||
</data>
|
||||
<data name="descPreset" xml:space="preserve">
|
||||
<value>-profile, 预设配置</value>
|
||||
</data>
|
||||
<data name="negativeDuration" xml:space="preserve">
|
||||
<value>导出单个时导出时长不能为负数</value>
|
||||
</data>
|
||||
<data name="frame" xml:space="preserve">
|
||||
<value>帧</value>
|
||||
</data>
|
||||
<data name="categoryVideoParameters" xml:space="preserve">
|
||||
<value>[1] 视频参数</value>
|
||||
</data>
|
||||
<data name="descDuration" xml:space="preserve">
|
||||
<value>可以从模型列表查看动画时长, 如果小于 0, 则在逐个导出时每个模型使用各自的所有轨道动画时长最大值</value>
|
||||
</data>
|
||||
<data name="displayFPS" xml:space="preserve">
|
||||
<value>帧率</value>
|
||||
</data>
|
||||
<data name="descFPS" xml:space="preserve">
|
||||
<value>每秒画面数</value>
|
||||
</data>
|
||||
<data name="displayKeepLastFrame" xml:space="preserve">
|
||||
<value>保留最后一帧</value>
|
||||
</data>
|
||||
<data name="descKeepLastFrame" xml:space="preserve">
|
||||
<value>当设置保留最后一帧时, 动图会更为连贯, 但是帧数可能比预期帧数多 1</value>
|
||||
</data>
|
||||
<data name="displayLoseless" xml:space="preserve">
|
||||
<value>无损</value>
|
||||
</data>
|
||||
<data name="descLoseless" xml:space="preserve">
|
||||
<value>-lossless, 0 表示有损, 1 表示无损</value>
|
||||
</data>
|
||||
<data name="displayQuality" xml:space="preserve">
|
||||
<value>质量</value>
|
||||
</data>
|
||||
<data name="descQuality" xml:space="preserve">
|
||||
<value>-quality, 取值范围 0-100, 默认值 75</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,5 +1,6 @@
|
||||
using FFMpegCore;
|
||||
using SpineViewer.Utils;
|
||||
using SpineViewer.Utils.Localize;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -64,13 +65,17 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("av1_nvenc", "av1_amf", "libaom-av1", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("编码器"), Description("-c:v, 要使用的编码器\n建议使用硬件加速, libaom-av1 速度非常非常非常慢")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
|
||||
/// <summary>
|
||||
/// CRF
|
||||
/// </summary>
|
||||
[Category("[3] 格式参数"), DisplayName("CRF"), Description("-crf, 取值范围 0-63, 建议范围 18-28, 默认取值 23, 数值越小则输出质量越高")]
|
||||
/// <summary>
|
||||
/// CRF
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[DisplayName("CRF")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descCRF")]
|
||||
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; }
|
||||
|
||||
/// <summary>
|
||||
@@ -78,13 +83,17 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("像素格式"), Description("-pix_fmt, 要使用的像素格式")]
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
|
||||
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 循环次数
|
||||
/// </summary>
|
||||
[Category("[3] 格式参数"), DisplayName("循环次数"), Description("-loop, 循环次数, 0 无限循环, 取值范围 [0, 65535]")]
|
||||
/// <summary>
|
||||
/// 循环次数
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayLoopCount")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descLoopCount")]
|
||||
public int Loop { get => Exporter.Loop; set => Exporter.Loop = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using NLog;
|
||||
using SpineViewer.Extensions;
|
||||
using SpineViewer.Utils;
|
||||
using SpineViewer.Utils.Localize;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -345,66 +346,86 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
/// 输出文件夹
|
||||
/// </summary>
|
||||
[Editor(typeof(FolderNameEditor), typeof(UITypeEditor))]
|
||||
[Category("[0] 导出"), DisplayName("输出文件夹"), Description("逐个导出时可以留空,将逐个导出到模型自身所在目录")]
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayOutputFolder")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descOutputFolder")]
|
||||
public string? OutputDir { get => Exporter.OutputDir; set => Exporter.OutputDir = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 导出单个
|
||||
/// </summary>
|
||||
[Category("[0] 导出"), DisplayName("导出单个"), Description("是否将模型在同一个画面上导出单个文件,否则逐个导出模型")]
|
||||
public bool IsExportSingle { get => Exporter.IsExportSingle; set => Exporter.IsExportSingle = value; }
|
||||
/// <summary>
|
||||
/// 导出单个
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayExportSingle")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descExportSingle")]
|
||||
public bool IsExportSingle { get => Exporter.IsExportSingle; set => Exporter.IsExportSingle = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 画面分辨率
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(SizeConverter))]
|
||||
[Category("[0] 导出"), DisplayName("分辨率"), Description("画面的宽高像素大小,请在预览画面参数面板进行调整")]
|
||||
public Size Resolution { get => Exporter.Resolution; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayResoulution")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descResolution")]
|
||||
public Size Resolution { get => Exporter.Resolution; }
|
||||
|
||||
/// <summary>
|
||||
/// 预览画面视区
|
||||
/// </summary>
|
||||
[Category("[0] 导出"), DisplayName("预览画面视区"), Description("预览画面的视区参数,请在预览画面参数面板进行调整")]
|
||||
public SFML.Graphics.View View { get => Exporter.PreviewerView; }
|
||||
/// <summary>
|
||||
/// 预览画面视区
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayPreviewViewport")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descPreviewViewport")]
|
||||
public SFML.Graphics.View View { get => Exporter.PreviewerView; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否仅渲染选中
|
||||
/// </summary>
|
||||
[Category("[0] 导出"), DisplayName("仅渲染选中"), Description("是否仅导出选中的模型,请在预览画面参数面板进行调整")]
|
||||
public bool RenderSelectedOnly { get => Exporter.RenderSelectedOnly; }
|
||||
/// <summary>
|
||||
/// 是否仅渲染选中
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayRenderSelected")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descRenderSelected")]
|
||||
public bool RenderSelectedOnly { get => Exporter.RenderSelectedOnly; }
|
||||
|
||||
/// <summary>
|
||||
/// 背景颜色
|
||||
/// </summary>
|
||||
[Editor(typeof(SFMLColorEditor), typeof(UITypeEditor))]
|
||||
[TypeConverter(typeof(SFMLColorConverter))]
|
||||
[Category("[0] 导出"), DisplayName("背景颜色"), Description("要使用的背景色, 格式为 #RRGGBBAA")]
|
||||
public SFML.Graphics.Color BackgroundColor { get => Exporter.BackgroundColor; set => Exporter.BackgroundColor = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayBackgroundColor")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descBackgroundColor")]
|
||||
public SFML.Graphics.Color BackgroundColor { get => Exporter.BackgroundColor; set => Exporter.BackgroundColor = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 四周边缘距离
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(PaddingConverter))]
|
||||
[Category("[0] 导出"), DisplayName("四周边缘距离"), Description("画布外部的边缘距离 (Margin), 最终导出的分辨率需要加上这个边距")]
|
||||
public Padding Margin { get => Exporter.Margin; set => Exporter.Margin = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayMargin")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descMargin")]
|
||||
public Padding Margin { get => Exporter.Margin; set => Exporter.Margin = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 四周填充距离
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(PaddingConverter))]
|
||||
[Category("[0] 导出"), DisplayName("四周填充距离"), Description("画布内部的填充距离 (Padding), 导出的分辨率大小不会发生变化, 但是会留有四周空间")]
|
||||
public Padding Padding { get => Exporter.Padding; set => Exporter.Padding = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayPadding")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descPadding")]
|
||||
public Padding Padding { get => Exporter.Padding; set => Exporter.Padding = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 允许内容溢出到边缘和填充区域
|
||||
/// </summary>
|
||||
[Category("[0] 导出"), DisplayName("允许内容溢出"), Description("使用预览画面分辨率的情况下, 允许内容溢出到边缘和填充区域")]
|
||||
public bool AllowContentOverflow { get => Exporter.AllowContentOverflow; set => Exporter.AllowContentOverflow = value; }
|
||||
/// <summary>
|
||||
/// 允许内容溢出到边缘和填充区域
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayAllowContentOverflow")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descAllowContentOverflow")]
|
||||
public bool AllowContentOverflow { get => Exporter.AllowContentOverflow; set => Exporter.AllowContentOverflow = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 自动分辨率
|
||||
/// </summary>
|
||||
[Category("[0] 导出"), DisplayName("自动分辨率"), Description("根据导出内容自动设置分辨率, 四周填充距离和内容溢出参数将会被忽略")]
|
||||
public bool AutoResolution { get => Exporter.AutoResolution; set => Exporter.AutoResolution = value; }
|
||||
/// <summary>
|
||||
/// 自动分辨率
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryExport")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayAutoResolution")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descAutoResolution")]
|
||||
public bool AutoResolution { get => Exporter.AutoResolution; set => Exporter.AutoResolution = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Diagnostics;
|
||||
using SpineViewer.Utils.Localize;
|
||||
|
||||
namespace SpineViewer.Spine.SpineExporter
|
||||
{
|
||||
@@ -45,9 +46,9 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
if (base.Validate() is string error)
|
||||
return error;
|
||||
if (string.IsNullOrWhiteSpace(Format))
|
||||
return "需要提供有效的格式";
|
||||
return Properties.Resources.validFormatRequired;
|
||||
if (string.IsNullOrWhiteSpace(Suffix))
|
||||
return "需要提供有效的文件名后缀";
|
||||
return Properties.Resources.validExtensionRequired;
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -114,22 +115,28 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
[Browsable(false)]
|
||||
public override FFmpegVideoExporter Exporter => (FFmpegVideoExporter)base.Exporter;
|
||||
|
||||
/// <summary>
|
||||
/// 文件格式
|
||||
/// </summary>
|
||||
[Category("[2] FFmpeg 基本参数"), DisplayName("文件格式"), Description("-f, 文件格式")]
|
||||
/// <summary>
|
||||
/// 文件格式
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFFmpegParameter")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayFileFormat")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descFileFormat")]
|
||||
public virtual string Format => Exporter.Format;
|
||||
|
||||
/// <summary>
|
||||
/// 文件名后缀
|
||||
/// </summary>
|
||||
[Category("[2] FFmpeg 基本参数"), DisplayName("文件名后缀"), Description("文件名后缀")]
|
||||
/// <summary>
|
||||
/// 文件名后缀
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFFmpegParameter")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayFilenameSuffix")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descFilenameSuffix")]
|
||||
public virtual string Suffix => Exporter.Suffix;
|
||||
|
||||
/// <summary>
|
||||
/// 文件名后缀
|
||||
/// </summary>
|
||||
[Category("[2] FFmpeg 基本参数"), DisplayName("自定义参数"), Description("使用 \"ffmpeg -h encoder=<编码器>\" 查看编码器支持的参数\n使用 \"ffmpeg -h muxer=<文件格式>\" 查看文件格式支持的参数")]
|
||||
public string CustomArgument { get => Exporter.CustomArgument; set => Exporter.CustomArgument = value; }
|
||||
/// <summary>
|
||||
/// 文件名后缀
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFFmpegParameter")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayCustomArgument")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descCustomArgument")]
|
||||
public string CustomArgument { get => Exporter.CustomArgument; set => Exporter.CustomArgument = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using SpineViewer.Spine;
|
||||
using SpineViewer.Utils.Localize;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -49,7 +50,7 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
var filename = $"frame_{timestamp}{ImageFormat.GetSuffix()}";
|
||||
var savePath = Path.Combine(OutputDir, filename);
|
||||
|
||||
worker?.ReportProgress(0, $"已处理 0/1");
|
||||
worker?.ReportProgress(0, $"{Properties.Resources.process} 0/1");
|
||||
try
|
||||
{
|
||||
using var frame = GetFrame(spinesToRender);
|
||||
@@ -62,7 +63,7 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
logger.Error(ex.ToString());
|
||||
logger.Error("Failed to save single frame");
|
||||
}
|
||||
worker?.ReportProgress(100, $"已处理 1/1");
|
||||
worker?.ReportProgress(100, $"{Properties.Resources.process} 1/1");
|
||||
}
|
||||
|
||||
protected override void ExportIndividual(SpineObject[] spinesToRender, BackgroundWorker? worker = null)
|
||||
@@ -71,7 +72,7 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
int success = 0;
|
||||
int error = 0;
|
||||
|
||||
worker?.ReportProgress(0, $"已处理 0/{total}");
|
||||
worker?.ReportProgress(0, $"{Properties.Resources.process} 0/{total}");
|
||||
for (int i = 0; i < total; i++)
|
||||
{
|
||||
var spine = spinesToRender[i];
|
||||
@@ -95,7 +96,7 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
error++;
|
||||
}
|
||||
|
||||
worker?.ReportProgress((int)((i + 1) * 100.0) / total, $"已处理 {i + 1}/{total}");
|
||||
worker?.ReportProgress((int)((i + 1) * 100.0) / total, $"{Properties.Resources.process} {i + 1}/{total}");
|
||||
}
|
||||
|
||||
if (error > 0)
|
||||
@@ -114,20 +115,24 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
/// 单帧画面格式
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(ImageFormatConverter))]
|
||||
[Category("[1] 单帧画面"), DisplayName("图像格式")]
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categorySingleFrame")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayImageFormat")]
|
||||
public ImageFormat ImageFormat { get => Exporter.ImageFormat; set => Exporter.ImageFormat = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 文件名后缀
|
||||
/// </summary>
|
||||
[Category("[1] 单帧画面"), DisplayName("文件名后缀"), Description("与图像格式匹配的文件名后缀")]
|
||||
/// <summary>
|
||||
/// 文件名后缀
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categorySingleFrame")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayFilenameSuffix")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descFileNameExtension")]
|
||||
public string Suffix { get => Exporter.ImageFormat.GetSuffix(); }
|
||||
|
||||
/// <summary>
|
||||
/// DPI
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(SizeFConverter))]
|
||||
[Category("[1] 单帧画面"), DisplayName("DPI"), Description("导出图像的每英寸像素数,用于调整图像的物理尺寸")]
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categorySingleFrame")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descDPI")]
|
||||
public SizeF DPI { get => Exporter.DPI; set => Exporter.DPI = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using SpineViewer.Spine;
|
||||
using SpineViewer.Utils;
|
||||
using SpineViewer.Utils.Localize;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -93,7 +94,9 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
/// 文件名后缀
|
||||
/// </summary>
|
||||
[TypeConverter(typeof(StringEnumConverter)), StringEnumConverter.StandardValues(".png", ".jpg", ".tga", ".bmp")]
|
||||
[Category("[2] 帧序列参数"), DisplayName("文件名后缀"), Description("帧文件的后缀,同时决定帧图像格式")]
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFrameSequenceParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayFilenameSuffix")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descFrameFileExtension")]
|
||||
public string Suffix { get => Exporter.Suffix; set => Exporter.Suffix = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using FFMpegCore;
|
||||
using SpineViewer.Utils.Localize;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -58,22 +59,28 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
[Browsable(false)]
|
||||
public override GifExporter Exporter => (GifExporter)base.Exporter;
|
||||
|
||||
/// <summary>
|
||||
/// 调色板最大颜色数量
|
||||
/// </summary>
|
||||
[Category("[3] 格式参数"), DisplayName("调色板最大颜色数量"), Description("设置调色板使用的最大颜色数量, 越多则色彩保留程度越高")]
|
||||
/// <summary>
|
||||
/// 调色板最大颜色数量
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayMaxColor")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descMaxColor")]
|
||||
public uint MaxColors { get => Exporter.MaxColors; set => Exporter.MaxColors = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 透明度阈值
|
||||
/// </summary>
|
||||
[Category("[3] 格式参数"), DisplayName("透明度阈值"), Description("小于该值的像素点会被认为是透明像素")]
|
||||
/// <summary>
|
||||
/// 透明度阈值
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayAlphaThreshold")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descAlphaThreshold")]
|
||||
public byte AlphaThreshold { get => Exporter.AlphaThreshold; set => Exporter.AlphaThreshold = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 透明度阈值
|
||||
/// </summary>
|
||||
[Category("[3] 格式参数"), DisplayName("循环次数"), Description("-loop, 循环次数, -1 不循环, 0 无限循环, 取值范围 [-1, 65535]")]
|
||||
/// <summary>
|
||||
/// 透明度阈值
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayLoopCount")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descLoopCount")]
|
||||
public int Loop { get => Exporter.Loop; set => Exporter.Loop = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using FFMpegCore;
|
||||
using SpineViewer.Utils;
|
||||
using SpineViewer.Utils.Localize;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -58,21 +59,27 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("libx264", "libx265", "libvpx-vp9", "av1_nvenc", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("编码器"), Description("-c:v, 要使用的编码器")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
|
||||
/// <summary>
|
||||
/// CRF
|
||||
/// </summary>
|
||||
[Category("[3] 格式参数"), DisplayName("CRF"), Description("-crf, 取值范围 0-63, 建议范围 18-28, 默认取值 23, 数值越小则输出质量越高")]
|
||||
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; }
|
||||
/// <summary>
|
||||
/// CRF
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[DisplayName("CRF")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descCRF")]
|
||||
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 像素格式
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", "yuva420p", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("像素格式"), Description("-pix_fmt, 要使用的像素格式")]
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
|
||||
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using FFMpegCore;
|
||||
using SpineViewer.Utils;
|
||||
using SpineViewer.Utils.Localize;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -57,15 +58,19 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("prores_ks", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("编码器"), Description("-c:v, 要使用的编码器")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 预设
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("auto", "proxy", "lt", "standard", "hq", "4444", "4444xq")]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("预设"), Description("-profile, 预设配置")]
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayPreset")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descPreset")]
|
||||
public string Profile { get => Exporter.Profile; set => Exporter.Profile = value; }
|
||||
|
||||
/// <summary>
|
||||
@@ -73,7 +78,9 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("yuv422p10le", "yuv444p10le", "yuva444p10le", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("像素格式"), Description("-pix_fmt, 要使用的像素格式")]
|
||||
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
|
||||
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using FFMpegCore;
|
||||
using SpineViewer.Utils;
|
||||
using SpineViewer.Utils.Localize;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -58,21 +59,27 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("libx264", "libx265", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("编码器"), Description("-c:v, 要使用的编码器")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
|
||||
/// <summary>
|
||||
/// CRF
|
||||
/// </summary>
|
||||
[Category("[3] 格式参数"), DisplayName("CRF"), Description("-crf, 取值范围 0-63, 建议范围 18-28, 默认取值 23, 数值越小则输出质量越高")]
|
||||
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; }
|
||||
/// <summary>
|
||||
/// CRF
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[DisplayName("CRF")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descCRF")]
|
||||
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 像素格式
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("像素格式"), Description("-pix_fmt, 要使用的像素格式")]
|
||||
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
|
||||
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using SpineViewer.Spine;
|
||||
using SpineViewer.Utils.Localize;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -34,7 +35,7 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
if (base.Validate() is string error)
|
||||
return error;
|
||||
if (IsExportSingle && Duration < 0)
|
||||
return "导出单个时导出时长不能为负数";
|
||||
return Properties.Resources.negativeDuration;
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -55,11 +56,11 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
|
||||
int frameCount = 1 + total + final; // 所有帧的数量 = 起始帧 + 完整帧 + 最后一帧
|
||||
|
||||
worker?.ReportProgress(0, $"{spine.Name} 已处理 0/{frameCount} 帧");
|
||||
worker?.ReportProgress(0, $"{spine.Name} {Properties.Resources.process} 0/{frameCount} {Properties.Resources.frame}");
|
||||
|
||||
// 导出首帧
|
||||
var firstFrame = GetFrame(spine);
|
||||
worker?.ReportProgress(1 * 100 / frameCount, $"{spine.Name} 已处理 1/{frameCount} 帧");
|
||||
worker?.ReportProgress(1 * 100 / frameCount, $"{spine.Name} {Properties.Resources.process} 1/{frameCount} {Properties.Resources.frame}");
|
||||
yield return firstFrame;
|
||||
|
||||
// 导出完整帧
|
||||
@@ -73,7 +74,7 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
|
||||
spine.Update(delta);
|
||||
var frame = GetFrame(spine);
|
||||
worker?.ReportProgress((1 + i + 1) * 100 / frameCount, $"{spine.Name} 已处理 {1 + i + 1}/{frameCount} 帧");
|
||||
worker?.ReportProgress((1 + i + 1) * 100 / frameCount, $"{spine.Name} {Properties.Resources.process} {1 + i + 1}/{frameCount} {Properties.Resources.frame}");
|
||||
yield return frame;
|
||||
}
|
||||
|
||||
@@ -82,7 +83,7 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
{
|
||||
spine.Update(deltaFinal);
|
||||
var finalFrame = GetFrame(spine);
|
||||
worker?.ReportProgress(100, $"{spine.Name} 已处理 {frameCount}/{frameCount} 帧");
|
||||
worker?.ReportProgress(100, $"{spine.Name} {Properties.Resources.process} {frameCount}/{frameCount} {Properties.Resources.frame}");
|
||||
yield return finalFrame;
|
||||
}
|
||||
}
|
||||
@@ -103,11 +104,11 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
|
||||
int frameCount = 1 + total + final; // 所有帧的数量 = 起始帧 + 完整帧 + 最后一帧
|
||||
|
||||
worker?.ReportProgress(0, $"已处理 0/{frameCount} 帧");
|
||||
worker?.ReportProgress(0, $"{Properties.Resources.process} 0/{frameCount} {Properties.Resources.frame}");
|
||||
|
||||
// 导出首帧
|
||||
var firstFrame = GetFrame(spinesToRender);
|
||||
worker?.ReportProgress(1 * 100 / frameCount, $"已处理 1/{frameCount} 帧");
|
||||
worker?.ReportProgress(1 * 100 / frameCount, $"{Properties.Resources.process} 1/{frameCount} {Properties.Resources.frame}");
|
||||
yield return firstFrame;
|
||||
|
||||
// 导出完整帧
|
||||
@@ -121,7 +122,7 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
|
||||
foreach (var spine in spinesToRender) spine.Update(delta);
|
||||
var frame = GetFrame(spinesToRender);
|
||||
worker?.ReportProgress((1 + i + 1) * 100 / frameCount, $"已处理 {1 + i + 1}/{frameCount} 帧");
|
||||
worker?.ReportProgress((1 + i + 1) * 100 / frameCount, $"{Properties.Resources.process} {1 + i + 1}/{frameCount} {Properties.Resources.frame}");
|
||||
yield return frame;
|
||||
}
|
||||
|
||||
@@ -130,7 +131,7 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
{
|
||||
foreach (var spine in spinesToRender) spine.Update(delta);
|
||||
var finalFrame = GetFrame(spinesToRender);
|
||||
worker?.ReportProgress(100, $"已处理 {frameCount}/{frameCount} 帧");
|
||||
worker?.ReportProgress(100, $"{Properties.Resources.process} {frameCount}/{frameCount} {Properties.Resources.frame}");
|
||||
yield return finalFrame;
|
||||
}
|
||||
}
|
||||
@@ -148,22 +149,28 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
[Browsable(false)]
|
||||
public override VideoExporter Exporter => (VideoExporter)base.Exporter;
|
||||
|
||||
/// <summary>
|
||||
/// 导出时长
|
||||
/// </summary>
|
||||
[Category("[1] 视频参数"), DisplayName("时长"), Description("可以从模型列表查看动画时长, 如果小于 0, 则在逐个导出时每个模型使用各自的所有轨道动画时长最大值")]
|
||||
/// <summary>
|
||||
/// 导出时长
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryVideoParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "duration")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descDuration")]
|
||||
public float Duration { get => Exporter.Duration; set => Exporter.Duration = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 帧率
|
||||
/// </summary>
|
||||
[Category("[1] 视频参数"), DisplayName("帧率"), Description("每秒画面数")]
|
||||
public float FPS { get => Exporter.FPS; set => Exporter.FPS = value; }
|
||||
/// <summary>
|
||||
/// 帧率
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryVideoParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayFPS")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descFPS")]
|
||||
public float FPS { get => Exporter.FPS; set => Exporter.FPS = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 保留最后一帧
|
||||
/// </summary>
|
||||
[Category("[1] 视频参数"), DisplayName("保留最后一帧"), Description("当设置保留最后一帧时, 动图会更为连贯, 但是帧数可能比预期帧数多 1")]
|
||||
public bool KeepLast { get => Exporter.KeepLast; set => Exporter.KeepLast = value; }
|
||||
/// <summary>
|
||||
/// 保留最后一帧
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryVideoParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayKeepLastFrame")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descKeepLastFrame")]
|
||||
public bool KeepLast { get => Exporter.KeepLast; set => Exporter.KeepLast = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using FFMpegCore;
|
||||
using SpineViewer.Utils;
|
||||
using SpineViewer.Utils.Localize;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -59,21 +60,27 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("libvpx-vp9", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("编码器"), Description("-c:v, 要使用的编码器")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
|
||||
/// <summary>
|
||||
/// CRF
|
||||
/// </summary>
|
||||
[Category("[3] 格式参数"), DisplayName("CRF"), Description("-crf, 取值范围 0-63, 建议范围 18-28, 默认取值 23, 数值越小则输出质量越高")]
|
||||
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; }
|
||||
/// <summary>
|
||||
/// CRF
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[DisplayName("CRF")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descCRF")]
|
||||
public int CRF { get => Exporter.CRF; set => Exporter.CRF = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 像素格式
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("yuv420p", "yuv422p", "yuv444p", "yuva420p", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("像素格式"), Description("-pix_fmt, 要使用的像素格式")]
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
|
||||
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
using FFMpegCore;
|
||||
using SpineViewer.Utils;
|
||||
using SpineViewer.Utils.Localize;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -69,33 +70,43 @@ namespace SpineViewer.Spine.SpineExporter
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("libwebp_anim", "libwebp", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("编码器"), Description("-c:v, 要使用的编码器")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayEncoder")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descAvifEncoder")]
|
||||
public string Codec { get => Exporter.Codec; set => Exporter.Codec = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 是否无损
|
||||
/// </summary>
|
||||
[Category("[3] 格式参数"), DisplayName("无损"), Description("-lossless, 0 表示有损, 1 表示无损")]
|
||||
public bool Lossless { get => Exporter.Lossless; set => Exporter.Lossless = value; }
|
||||
/// <summary>
|
||||
/// 是否无损
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayLoseless")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descLoseless")]
|
||||
public bool Lossless { get => Exporter.Lossless; set => Exporter.Lossless = value; }
|
||||
|
||||
/// <summary>
|
||||
/// CRF
|
||||
/// </summary>
|
||||
[Category("[3] 格式参数"), DisplayName("质量"), Description("-quality, 取值范围 0-100, 默认值 75")]
|
||||
public int Quality { get => Exporter.Quality; set => Exporter.Quality = value; }
|
||||
/// <summary>
|
||||
/// CRF
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayQuality")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descQuality")]
|
||||
public int Quality { get => Exporter.Quality; set => Exporter.Quality = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 像素格式
|
||||
/// </summary>
|
||||
[StringEnumConverter.StandardValues("yuv420p", "yuva420p", Customizable = true)]
|
||||
[TypeConverter(typeof(StringEnumConverter))]
|
||||
[Category("[3] 格式参数"), DisplayName("像素格式"), Description("-pix_fmt, 要使用的像素格式")]
|
||||
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayPixelFormat")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descPixelFormat")]
|
||||
public string PixelFormat { get => Exporter.PixelFormat; set => Exporter.PixelFormat = value; }
|
||||
|
||||
/// <summary>
|
||||
/// 透明度阈值
|
||||
/// </summary>
|
||||
[Category("[3] 格式参数"), DisplayName("循环次数"), Description("-loop, 循环次数, 0 无限循环, 取值范围 [0, 65535]")]
|
||||
public int Loop { get => Exporter.Loop; set => Exporter.Loop = value; }
|
||||
/// <summary>
|
||||
/// 透明度阈值
|
||||
/// </summary>
|
||||
[LocalizedCategory(typeof(Properties.Resources), "categoryFormatParameters")]
|
||||
[LocalizedDisplayName(typeof(Properties.Resources), "displayLoopCount")]
|
||||
[LocalizedDescription(typeof(Properties.Resources), "descLoopCount")]
|
||||
public int Loop { get => Exporter.Loop; set => Exporter.Loop = value; }
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user