├── .gitattributes ├── .gitignore ├── .vscode ├── extensions.json └── tasks.json ├── AsyncImageSource.cs ├── LICENSE ├── Module.cs ├── README.md ├── img ├── xObsAsyncImageSource-Icon.ico ├── xObsAsyncImageSource-Icon.png ├── xObsAsyncImageSource-SplashScreen.jpg ├── xObsAsyncImageSource.jpg └── xObsAsyncImageSource.png ├── locale ├── ar-SA.ini ├── az-AZ.ini ├── ba-RU.ini ├── bg-BG.ini ├── bn-BD.ini ├── ca-ES.ini ├── cs-CZ.ini ├── da-DK.ini ├── de-DE.ini ├── el-GR.ini ├── en-GB.ini ├── en-US.ini ├── es-ES.ini ├── et-EE.ini ├── eu-ES.ini ├── fa-IR.ini ├── fi-FI.ini ├── fil-PH.ini ├── fr-FR.ini ├── gd-GB.ini ├── gl-ES.ini ├── he-IL.ini ├── hi-IN.ini ├── hr-HR.ini ├── hu-HU.ini ├── hy-AM.ini ├── id-ID.ini ├── it-IT.ini ├── ja-JP.ini ├── ka-GE.ini ├── kab-KAB.ini ├── kmr-TR.ini ├── ko-KR.ini ├── lo-LA.ini ├── lt-LT.ini ├── mn-MN.ini ├── ms-MY.ini ├── nb-NO.ini ├── nl-NL.ini ├── nn-NO.ini ├── oc-FR.ini ├── pa-IN.ini ├── pl-PL.ini ├── pt-BR.ini ├── pt-PT.ini ├── ro-RO.ini ├── ru-RU.ini ├── si-LK.ini ├── sk-SK.ini ├── sl-SI.ini ├── sr-CS.ini ├── sr-SP.ini ├── sv-SE.ini ├── ta-IN.ini ├── th-TH.ini ├── tl-PH.ini ├── tr-TR.ini ├── uk-UA.ini ├── ur-PK.ini ├── vi-VN.ini ├── zh-CN.ini └── zh-TW.ini ├── scripts ├── build-linux-x64.sh ├── build-win-x64.cmd ├── release-win-x64.cmd ├── wsl │ ├── build-linux-x64-wsl-setup.cmd │ └── build-linux-x64-wsl.cmd └── xObsAsyncImageSource-Installer.nsi └── xObsAsyncImageSource.csproj /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore 5 | 6 | # User-specific files 7 | *.rsuser 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Mono auto generated files 17 | mono_crash.* 18 | 19 | # Build results 20 | [Dd]ebug/ 21 | [Dd]ebugPublic/ 22 | [Rr]elease/ 23 | [Rr]eleases/ 24 | x64/ 25 | x86/ 26 | [Ww][Ii][Nn]32/ 27 | [Aa][Rr][Mm]/ 28 | [Aa][Rr][Mm]64/ 29 | bld/ 30 | [Bb]in/ 31 | [Oo]bj/ 32 | [Ll]og/ 33 | [Ll]ogs/ 34 | 35 | # Visual Studio 2015/2017 cache/options directory 36 | .vs/ 37 | # Uncomment if you have tasks that create the project's static files in wwwroot 38 | #wwwroot/ 39 | 40 | # Visual Studio 2017 auto generated files 41 | Generated\ Files/ 42 | 43 | # MSTest test Results 44 | [Tt]est[Rr]esult*/ 45 | [Bb]uild[Ll]og.* 46 | 47 | # NUnit 48 | *.VisualState.xml 49 | TestResult.xml 50 | nunit-*.xml 51 | 52 | # Build Results of an ATL Project 53 | [Dd]ebugPS/ 54 | [Rr]eleasePS/ 55 | dlldata.c 56 | 57 | # Benchmark Results 58 | BenchmarkDotNet.Artifacts/ 59 | 60 | # .NET 61 | project.lock.json 62 | project.fragment.lock.json 63 | artifacts/ 64 | 65 | # Tye 66 | .tye/ 67 | 68 | # ASP.NET Scaffolding 69 | ScaffoldingReadMe.txt 70 | 71 | # StyleCop 72 | StyleCopReport.xml 73 | 74 | # Files built by Visual Studio 75 | *_i.c 76 | *_p.c 77 | *_h.h 78 | *.ilk 79 | *.meta 80 | *.obj 81 | *.iobj 82 | *.pch 83 | *.pdb 84 | *.ipdb 85 | *.pgc 86 | *.pgd 87 | *.rsp 88 | *.sbr 89 | *.tlb 90 | *.tli 91 | *.tlh 92 | *.tmp 93 | *.tmp_proj 94 | *_wpftmp.csproj 95 | *.log 96 | *.tlog 97 | *.vspscc 98 | *.vssscc 99 | .builds 100 | *.pidb 101 | *.svclog 102 | *.scc 103 | 104 | # Chutzpah Test files 105 | _Chutzpah* 106 | 107 | # Visual C++ cache files 108 | ipch/ 109 | *.aps 110 | *.ncb 111 | *.opendb 112 | *.opensdf 113 | *.sdf 114 | *.cachefile 115 | *.VC.db 116 | *.VC.VC.opendb 117 | 118 | # Visual Studio profiler 119 | *.psess 120 | *.vsp 121 | *.vspx 122 | *.sap 123 | 124 | # Visual Studio Trace Files 125 | *.e2e 126 | 127 | # TFS 2012 Local Workspace 128 | $tf/ 129 | 130 | # Guidance Automation Toolkit 131 | *.gpState 132 | 133 | # ReSharper is a .NET coding add-in 134 | _ReSharper*/ 135 | *.[Rr]e[Ss]harper 136 | *.DotSettings.user 137 | 138 | # TeamCity is a build add-in 139 | _TeamCity* 140 | 141 | # DotCover is a Code Coverage Tool 142 | *.dotCover 143 | 144 | # AxoCover is a Code Coverage Tool 145 | .axoCover/* 146 | !.axoCover/settings.json 147 | 148 | # Coverlet is a free, cross platform Code Coverage Tool 149 | coverage*.json 150 | coverage*.xml 151 | coverage*.info 152 | 153 | # Visual Studio code coverage results 154 | *.coverage 155 | *.coveragexml 156 | 157 | # NCrunch 158 | _NCrunch_* 159 | .*crunch*.local.xml 160 | nCrunchTemp_* 161 | 162 | # MightyMoose 163 | *.mm.* 164 | AutoTest.Net/ 165 | 166 | # Web workbench (sass) 167 | .sass-cache/ 168 | 169 | # Installshield output folder 170 | [Ee]xpress/ 171 | 172 | # DocProject is a documentation generator add-in 173 | DocProject/buildhelp/ 174 | DocProject/Help/*.HxT 175 | DocProject/Help/*.HxC 176 | DocProject/Help/*.hhc 177 | DocProject/Help/*.hhk 178 | DocProject/Help/*.hhp 179 | DocProject/Help/Html2 180 | DocProject/Help/html 181 | 182 | # Click-Once directory 183 | publish/ 184 | 185 | # Publish Web Output 186 | *.[Pp]ublish.xml 187 | *.azurePubxml 188 | # Note: Comment the next line if you want to checkin your web deploy settings, 189 | # but database connection strings (with potential passwords) will be unencrypted 190 | *.pubxml 191 | *.publishproj 192 | 193 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 194 | # checkin your Azure Web App publish settings, but sensitive information contained 195 | # in these scripts will be unencrypted 196 | PublishScripts/ 197 | 198 | # NuGet Packages 199 | *.nupkg 200 | # NuGet Symbol Packages 201 | *.snupkg 202 | # The packages folder can be ignored because of Package Restore 203 | **/[Pp]ackages/* 204 | # except build/, which is used as an MSBuild target. 205 | !**/[Pp]ackages/build/ 206 | # Uncomment if necessary however generally it will be regenerated when needed 207 | #!**/[Pp]ackages/repositories.config 208 | # NuGet v3's project.json files produces more ignorable files 209 | *.nuget.props 210 | *.nuget.targets 211 | 212 | # Microsoft Azure Build Output 213 | csx/ 214 | *.build.csdef 215 | 216 | # Microsoft Azure Emulator 217 | ecf/ 218 | rcf/ 219 | 220 | # Windows Store app package directories and files 221 | AppPackages/ 222 | BundleArtifacts/ 223 | Package.StoreAssociation.xml 224 | _pkginfo.txt 225 | *.appx 226 | *.appxbundle 227 | *.appxupload 228 | 229 | # Visual Studio cache files 230 | # files ending in .cache can be ignored 231 | *.[Cc]ache 232 | # but keep track of directories ending in .cache 233 | !?*.[Cc]ache/ 234 | 235 | # Others 236 | ClientBin/ 237 | ~$* 238 | *~ 239 | *.dbmdl 240 | *.dbproj.schemaview 241 | *.jfm 242 | *.pfx 243 | *.publishsettings 244 | orleans.codegen.cs 245 | 246 | # Including strong name files can present a security risk 247 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 248 | #*.snk 249 | 250 | # Since there are multiple workflows, uncomment next line to ignore bower_components 251 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 252 | #bower_components/ 253 | 254 | # RIA/Silverlight projects 255 | Generated_Code/ 256 | 257 | # Backup & report files from converting an old project file 258 | # to a newer Visual Studio version. Backup files are not needed, 259 | # because we have git ;-) 260 | _UpgradeReport_Files/ 261 | Backup*/ 262 | UpgradeLog*.XML 263 | UpgradeLog*.htm 264 | ServiceFabricBackup/ 265 | *.rptproj.bak 266 | 267 | # SQL Server files 268 | *.mdf 269 | *.ldf 270 | *.ndf 271 | 272 | # Business Intelligence projects 273 | *.rdl.data 274 | *.bim.layout 275 | *.bim_*.settings 276 | *.rptproj.rsuser 277 | *- [Bb]ackup.rdl 278 | *- [Bb]ackup ([0-9]).rdl 279 | *- [Bb]ackup ([0-9][0-9]).rdl 280 | 281 | # Microsoft Fakes 282 | FakesAssemblies/ 283 | 284 | # GhostDoc plugin setting file 285 | *.GhostDoc.xml 286 | 287 | # Node.js Tools for Visual Studio 288 | .ntvs_analysis.dat 289 | node_modules/ 290 | 291 | # Visual Studio 6 build log 292 | *.plg 293 | 294 | # Visual Studio 6 workspace options file 295 | *.opt 296 | 297 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 298 | *.vbw 299 | 300 | # Visual Studio 6 auto-generated project file (contains which files were open etc.) 301 | *.vbp 302 | 303 | # Visual Studio 6 workspace and project file (working project files containing files to include in project) 304 | *.dsw 305 | *.dsp 306 | 307 | # Visual Studio 6 technical files 308 | *.ncb 309 | *.aps 310 | 311 | # Visual Studio LightSwitch build output 312 | **/*.HTMLClient/GeneratedArtifacts 313 | **/*.DesktopClient/GeneratedArtifacts 314 | **/*.DesktopClient/ModelManifest.xml 315 | **/*.Server/GeneratedArtifacts 316 | **/*.Server/ModelManifest.xml 317 | _Pvt_Extensions 318 | 319 | # Paket dependency manager 320 | .paket/paket.exe 321 | paket-files/ 322 | 323 | # FAKE - F# Make 324 | .fake/ 325 | 326 | # CodeRush personal settings 327 | .cr/personal 328 | 329 | # Python Tools for Visual Studio (PTVS) 330 | __pycache__/ 331 | *.pyc 332 | 333 | # Cake - Uncomment if you are using it 334 | # tools/** 335 | # !tools/packages.config 336 | 337 | # Tabs Studio 338 | *.tss 339 | 340 | # Telerik's JustMock configuration file 341 | *.jmconfig 342 | 343 | # BizTalk build output 344 | *.btp.cs 345 | *.btm.cs 346 | *.odx.cs 347 | *.xsd.cs 348 | 349 | # OpenCover UI analysis results 350 | OpenCover/ 351 | 352 | # Azure Stream Analytics local run output 353 | ASALocalRun/ 354 | 355 | # MSBuild Binary and Structured Log 356 | *.binlog 357 | 358 | # NVidia Nsight GPU debugger configuration file 359 | *.nvuser 360 | 361 | # MFractors (Xamarin productivity tool) working folder 362 | .mfractor/ 363 | 364 | # Local History for Visual Studio 365 | .localhistory/ 366 | 367 | # Visual Studio History (VSHistory) files 368 | .vshistory/ 369 | 370 | # BeatPulse healthcheck temp database 371 | healthchecksdb 372 | 373 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 374 | MigrationBackup/ 375 | 376 | # Ionide (cross platform F# VS Code tools) working folder 377 | .ionide/ 378 | 379 | # Fody - auto-generated XML schema 380 | FodyWeavers.xsd 381 | 382 | # VS Code files for those working on multiple tools 383 | .vscode/* 384 | !.vscode/settings.json 385 | !.vscode/tasks.json 386 | !.vscode/launch.json 387 | !.vscode/extensions.json 388 | *.code-workspace 389 | 390 | # Local History for Visual Studio Code 391 | .history/ 392 | 393 | # Windows Installer files from build outputs 394 | *.cab 395 | *.msi 396 | *.msix 397 | *.msm 398 | *.msp 399 | 400 | # JetBrains Rider 401 | *.sln.iml 402 | 403 | ## 404 | ## Visual studio for Mac 405 | ## 406 | 407 | 408 | # globs 409 | Makefile.in 410 | *.userprefs 411 | *.usertasks 412 | config.make 413 | config.status 414 | aclocal.m4 415 | install-sh 416 | autom4te.cache/ 417 | *.tar.gz 418 | tarballs/ 419 | test-results/ 420 | 421 | # Mac bundle stuff 422 | *.dmg 423 | *.app 424 | 425 | # content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore 426 | # General 427 | .DS_Store 428 | .AppleDouble 429 | .LSOverride 430 | 431 | # Icon must end with two \r 432 | Icon 433 | 434 | 435 | # Thumbnails 436 | ._* 437 | 438 | # Files that might appear in the root of a volume 439 | .DocumentRevisions-V100 440 | .fseventsd 441 | .Spotlight-V100 442 | .TemporaryItems 443 | .Trashes 444 | .VolumeIcon.icns 445 | .com.apple.timemachine.donotpresent 446 | 447 | # Directories potentially created on remote AFP share 448 | .AppleDB 449 | .AppleDesktop 450 | Network Trash Folder 451 | Temporary Items 452 | .apdisk 453 | 454 | # content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore 455 | # Windows thumbnail cache files 456 | Thumbs.db 457 | ehthumbs.db 458 | ehthumbs_vista.db 459 | 460 | # Dump file 461 | *.stackdump 462 | 463 | # Folder config file 464 | [Dd]esktop.ini 465 | 466 | # Recycle Bin used on file shares 467 | $RECYCLE.BIN/ 468 | 469 | # Windows Installer files 470 | *.cab 471 | *.msi 472 | *.msix 473 | *.msm 474 | *.msp 475 | 476 | # Windows shortcuts 477 | *.lnk 478 | 479 | # Local files 480 | *.local.cmd 481 | *.bak -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "gruntfuggly.todo-tree", 4 | "idleberg.nsis" 5 | ] 6 | } 7 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "publish (win-x64)", 6 | "command": "dotnet", 7 | "type": "process", 8 | "args": [ 9 | "publish", 10 | "-c", 11 | "Release", 12 | "-o", 13 | "publish\\win-x64", 14 | "-r", 15 | "win-x64", 16 | "/p:DefineConstants=WINDOWS", 17 | "/p:NativeLib=Shared", 18 | "/p:SelfContained=true" 19 | ], 20 | "problemMatcher": "$msCompile", 21 | "group": { 22 | "kind": "build", 23 | "isDefault": true 24 | } 25 | }, 26 | { 27 | "label": "publish and release (WSL linux-x64)", 28 | "type": "shell", 29 | "options": { 30 | "cwd": "${workspaceFolder}/scripts/wsl" 31 | }, 32 | "command": ".\\build-linux-x64-wsl.cmd" 33 | }, 34 | { 35 | "label": "test (win-x64)", 36 | "type": "shell", 37 | "options": { 38 | "cwd": "${workspaceFolder}/scripts" 39 | }, 40 | "command": ".\\test.local.cmd" 41 | }, 42 | { 43 | "label": "publish and test (win-x64)", 44 | "type": "shell", 45 | "options": { 46 | "cwd": "${workspaceFolder}/scripts" 47 | }, 48 | "command": ".\\test.local.cmd", 49 | "dependsOrder": "sequence", 50 | "dependsOn": [ 51 | "publish (win-x64)" 52 | ], 53 | "problemMatcher": "$msCompile" 54 | }, 55 | { 56 | "label": "publish and release (win-x64)", 57 | "type": "shell", 58 | "options": { 59 | "cwd": "${workspaceFolder}/scripts" 60 | }, 61 | "command": ".\\release-win-x64.cmd", 62 | "dependsOrder": "sequence", 63 | "dependsOn": [ 64 | "publish (win-x64)" 65 | ], 66 | "problemMatcher": "$msCompile" 67 | }, 68 | { 69 | "label": "Build win-x64 Installer", 70 | "type": "shell", 71 | "command": "makensis", 72 | "args": [ 73 | "/V3", 74 | "scripts\\xObsAsyncImageSource-Installer.nsi" 75 | ], 76 | "group": "build" 77 | }, 78 | { 79 | "label": "Build win-x64 Installer (strict)", 80 | "type": "shell", 81 | "command": "makensis", 82 | "args": [ 83 | "/V3", 84 | "/WX", 85 | "scripts\\xObsAsyncImageSource-Installer.nsi" 86 | ], 87 | "group": "build" 88 | } 89 | ] 90 | } -------------------------------------------------------------------------------- /AsyncImageSource.cs: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: © 2023 YorVeX, https://github.com/YorVeX 2 | // SPDX-License-Identifier: MIT 3 | 4 | using System.Runtime.InteropServices; 5 | using System.Text; 6 | using ObsInterop; 7 | namespace xObsAsyncImageSource; 8 | 9 | // original image source code this was derived from: https://github.com/obsproject/obs-studio/blob/29.0.2/plugins/image-source/image-source.c 10 | 11 | // list of things to test when making bigger changes to this: 12 | //[ ] test automatic reload on file change 13 | //[ ] test animated GIF 14 | //[ ] test changing existing file between GIF and png 15 | //[ ] test loading an invalid file 16 | //[ ] test starting with missing file 17 | //[ ] test with 60 or even more FPS to make threaded conflicts more probable and be sure this is also stable 18 | 19 | public class AsyncImageSource 20 | { 21 | 22 | unsafe struct image_source 23 | { 24 | public obs_source* source; 25 | public sbyte* file; 26 | public bool persistent; 27 | public bool linear_alpha; 28 | public long file_timestamp; 29 | public float update_time_elapsed; 30 | public ulong last_time; 31 | public bool active; 32 | public bool restart_gif; 33 | public gs_image_file4 if4; 34 | 35 | // extra fields needed for threaded loading 36 | public long last_load; 37 | public bool has_new_data; 38 | public gs_image_file4 new_if4; 39 | public sbyte* new_file; 40 | public bool new_persistent; 41 | public bool new_linear_alpha; 42 | public long new_file_timestamp; 43 | } 44 | 45 | #region Helper methods 46 | public static unsafe void Register() 47 | { 48 | var sourceInfo = new obs_source_info(); 49 | fixed (byte* id = Encoding.UTF8.GetBytes(Module.ModuleName)) 50 | { 51 | sourceInfo.id = (sbyte*)id; 52 | sourceInfo.type = obs_source_type.OBS_SOURCE_TYPE_INPUT; 53 | sourceInfo.output_flags = ObsSource.OBS_SOURCE_VIDEO | ObsSource.OBS_SOURCE_SRGB; 54 | sourceInfo.get_name = &image_source_get_name; 55 | sourceInfo.create = &image_source_create; 56 | sourceInfo.destroy = &image_source_destroy; 57 | sourceInfo.update = &image_source_update; 58 | sourceInfo.get_defaults = &image_source_defaults; 59 | sourceInfo.show = &image_source_show; 60 | sourceInfo.hide = &image_source_hide; 61 | sourceInfo.get_width = &image_source_getwidth; 62 | sourceInfo.get_height = &image_source_getheight; 63 | sourceInfo.video_render = &image_source_render; 64 | sourceInfo.video_tick = &image_source_tick; 65 | sourceInfo.missing_files = &image_source_missing_files; 66 | sourceInfo.get_properties = &image_source_get_properties; 67 | sourceInfo.icon_type = obs_icon_type.OBS_ICON_TYPE_IMAGE; 68 | sourceInfo.activate = &image_source_activate; 69 | sourceInfo.video_get_color_space = &image_source_get_color_space; 70 | ObsSource.obs_register_source_s(&sourceInfo, (nuint)Marshal.SizeOf(sourceInfo)); 71 | } 72 | 73 | } 74 | 75 | static unsafe long get_modified_timestamp(sbyte* filename) 76 | { 77 | try 78 | { 79 | return File.GetLastWriteTimeUtc(Marshal.PtrToStringUTF8((IntPtr)filename)!).Ticks; 80 | } 81 | catch 82 | { 83 | return -1; 84 | } 85 | } 86 | 87 | static unsafe void gs_image_file2_free(gs_image_file2* if2) 88 | { 89 | ObsImageFile.gs_image_file_free(&if2->image); 90 | } 91 | 92 | static unsafe void gs_image_file3_free(gs_image_file3* if3) 93 | { 94 | gs_image_file2_free(&if3->image2); 95 | } 96 | 97 | static unsafe void gs_image_file4_free(gs_image_file4* if4) 98 | { 99 | gs_image_file3_free(&if4->image3); 100 | } 101 | static unsafe void gs_image_file2_init_texture(gs_image_file2* if2) 102 | { 103 | ObsImageFile.gs_image_file_init_texture(&if2->image); 104 | } 105 | 106 | static unsafe void gs_image_file3_init_texture(gs_image_file3* if3) 107 | { 108 | gs_image_file2_init_texture(&if3->image2); 109 | } 110 | 111 | static unsafe void gs_image_file4_init_texture(gs_image_file4* if4) 112 | { 113 | gs_image_file3_init_texture(&if4->image3); 114 | } 115 | 116 | //TODO: test to replace this by the new ObsBmem.bstrdup function: https://github.com/kostya9/NetObsBindings/blob/main/NetObsBindings/ObsInterop/ObsBmem.Manual.cs#LL36 117 | static unsafe sbyte* bstrdup(sbyte* str) 118 | { 119 | var managedStr = Marshal.PtrToStringUTF8((IntPtr)str); 120 | if (string.IsNullOrEmpty(managedStr)) 121 | return null; 122 | sbyte* dup = (sbyte*)ObsBmem.bmemdup(str, (nuint)managedStr.Length + 1); 123 | dup[managedStr.Length] = 0; 124 | return dup; 125 | } 126 | #endregion Helper methods 127 | 128 | #region Source API methods 129 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 130 | static unsafe sbyte* image_source_get_name(void* data) 131 | { 132 | Module.Log("image_source_get_name called", ObsLogLevel.Debug); 133 | fixed (byte* logMessagePtr = "Image (Async)"u8) 134 | return (sbyte*)logMessagePtr; 135 | } 136 | static unsafe void image_source_load(image_source* context) 137 | { 138 | // this method differs a lot from the original since this is what is changed to async loading for this plugin 139 | 140 | Module.Log("image_source_load called", ObsLogLevel.Debug); 141 | 142 | context->last_load = DateTime.UtcNow.Ticks; 143 | 144 | if (context->file == null) // mimic the original behavior of this method for this case fully in synchronized context 145 | { 146 | Module.Log("image_source_load: null file", ObsLogLevel.Debug); 147 | Obs.obs_enter_graphics(); 148 | gs_image_file4_free(&context->if4); 149 | Obs.obs_leave_graphics(); 150 | return; 151 | } 152 | 153 | context->file_timestamp = get_modified_timestamp(context->file); 154 | 155 | // remember what is supposed to be loaded while still in synchronized context 156 | var file = bstrdup(context->file); 157 | var fileString = Marshal.PtrToStringUTF8((IntPtr)file); 158 | var persistent = context->persistent; 159 | var linear_alpha = context->linear_alpha; 160 | var file_timestamp = context->file_timestamp; 161 | var last_load = context->last_load; 162 | Task.Run(() => 163 | { 164 | gs_image_file4 if4; 165 | Module.Log(string.Format("loading texture '{0}'", fileString), ObsLogLevel.Debug); 166 | 167 | var stopwatch = new System.Diagnostics.Stopwatch(); 168 | stopwatch.Start(); 169 | // this is what takes too much time within a frame, the whole reason why this plugin exists is to run this here in a thread: 170 | ObsImageFile.gs_image_file4_init(&if4, file, linear_alpha ? gs_image_alpha_mode.GS_IMAGE_ALPHA_PREMULTIPLY_SRGB : gs_image_alpha_mode.GS_IMAGE_ALPHA_PREMULTIPLY); 171 | stopwatch.Stop(); 172 | 173 | // entering graphics context also ensures syncing to the main thread for the following operations 174 | Obs.obs_enter_graphics(); 175 | if (context->last_load > last_load) // if the current load operation is outdated in the meantime discard everything and abort 176 | { 177 | Module.Log(string.Format("aborting outdated load of texture '{0}'", fileString), ObsLogLevel.Debug); 178 | if (file != null) 179 | ObsBmem.bfree(file); 180 | gs_image_file4_free(&if4); 181 | Obs.obs_leave_graphics(); 182 | return; 183 | } 184 | if (context->has_new_data) // if there is already new data that hasn't been activated yet discard it now 185 | { 186 | Module.Log("discarding outdated previous texture", ObsLogLevel.Debug); 187 | if (context->new_file != null) 188 | ObsBmem.bfree(context->new_file); 189 | gs_image_file4_free(&context->new_if4); 190 | } 191 | gs_image_file4_init_texture(&if4); 192 | context->has_new_data = true; 193 | context->new_if4 = if4; 194 | context->new_file = file; 195 | context->new_persistent = persistent; 196 | context->new_linear_alpha = linear_alpha; 197 | if (Convert.ToBoolean(if4.image3.image2.image.loaded)) 198 | { 199 | // another difference to the original: the timestamp is only updated if the load was successful, see the discussion at https://github.com/obsproject/obs-studio/issues/3011 for details 200 | context->new_file_timestamp = file_timestamp; 201 | Module.Log(string.Format("loaded texture '{0}' ({1} ms)", fileString, stopwatch.ElapsedMilliseconds), ObsLogLevel.Debug); 202 | } 203 | else 204 | Module.Log(string.Format("failed to load texture '{0}'", fileString), ObsLogLevel.Warning); 205 | Obs.obs_leave_graphics(); 206 | }); 207 | } 208 | 209 | static unsafe void image_source_unload(image_source* context) 210 | { 211 | Module.Log("image_source_unload called", ObsLogLevel.Debug); 212 | Obs.obs_enter_graphics(); 213 | context->last_load = DateTime.UtcNow.Ticks; 214 | gs_image_file4_free(&context->if4); 215 | Obs.obs_leave_graphics(); 216 | } 217 | 218 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 219 | static unsafe void image_source_update(void* data, obs_data* settings) 220 | { 221 | Module.Log("image_source_update called", ObsLogLevel.Debug); 222 | var context = (image_source*)data; 223 | fixed (byte* 224 | propertyFileIdentifier = "file"u8, 225 | propertyUnloadIdentifier = "unload"u8, 226 | propertyLinearAlphaIdentifier = "linear_alpha"u8 227 | ) 228 | { 229 | var file = ObsData.obs_data_get_string(settings, (sbyte*)propertyFileIdentifier); 230 | bool unload = Convert.ToBoolean(ObsData.obs_data_get_bool(settings, (sbyte*)propertyUnloadIdentifier)); 231 | bool linear_alpha = Convert.ToBoolean(ObsData.obs_data_get_bool(settings, (sbyte*)propertyLinearAlphaIdentifier)); 232 | 233 | if (context->file != null) 234 | ObsBmem.bfree(context->file); 235 | context->file = bstrdup(file); 236 | context->persistent = !unload; 237 | context->linear_alpha = linear_alpha; 238 | 239 | /* Load the image if the source is persistent or showing */ 240 | if (context->persistent || Convert.ToBoolean(Obs.obs_source_showing(context->source))) 241 | image_source_load(context); 242 | else 243 | image_source_unload(context); 244 | } 245 | } 246 | 247 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 248 | static unsafe void image_source_defaults(obs_data* settings) 249 | { 250 | Module.Log("image_source_get_defaults called", ObsLogLevel.Debug); 251 | fixed (byte* 252 | propertyUnloadIdentifier = "unload"u8, 253 | propertyLinearAlphaIdentifier = "linear_alpha"u8 254 | ) 255 | { 256 | ObsData.obs_data_set_default_bool(settings, (sbyte*)propertyUnloadIdentifier, Convert.ToByte(false)); 257 | ObsData.obs_data_set_default_bool(settings, (sbyte*)propertyLinearAlphaIdentifier, Convert.ToByte(false)); 258 | } 259 | } 260 | 261 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 262 | static unsafe void image_source_show(void* data) 263 | { 264 | Module.Log("image_source_show called", ObsLogLevel.Debug); 265 | var context = (image_source*)data; 266 | 267 | if (!context->persistent) 268 | image_source_load(context); 269 | } 270 | 271 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 272 | static unsafe void image_source_hide(void* data) 273 | { 274 | Module.Log("image_source_hide called", ObsLogLevel.Debug); 275 | 276 | var context = (image_source*)data; 277 | 278 | if (!context->persistent) 279 | image_source_unload(context); 280 | } 281 | 282 | static unsafe void restart_gif(void* data) 283 | { 284 | // Module.Log("restart_gif called", ObsLogLevel.Debug); 285 | var context = (image_source*)data; 286 | 287 | if (Convert.ToBoolean(context->if4.image3.image2.image.is_animated_gif)) 288 | { 289 | context->if4.image3.image2.image.cur_frame = 0; 290 | context->if4.image3.image2.image.cur_loop = 0; 291 | context->if4.image3.image2.image.cur_time = 0; 292 | 293 | Obs.obs_enter_graphics(); 294 | ObsImageFile.gs_image_file4_update_texture(&context->if4); 295 | Obs.obs_leave_graphics(); 296 | 297 | context->restart_gif = false; 298 | } 299 | } 300 | 301 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 302 | static unsafe void image_source_activate(void* data) 303 | { 304 | Module.Log("image_source_activate called", ObsLogLevel.Debug); 305 | var context = (image_source*)data; 306 | context->restart_gif = true; 307 | } 308 | 309 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 310 | static unsafe void* image_source_create(obs_data* settings, obs_source* source) 311 | { 312 | Module.Log("image_source_create called", ObsLogLevel.Debug); 313 | 314 | 315 | var context = ObsBmem.bzalloc(); 316 | context->source = source; 317 | 318 | // a C# specific thing, image_source_update() can't be called directly since it was attributed with UnmanagedCallersOnly, a delegate is needed 319 | delegate* unmanaged[Cdecl] image_source_update_func = &image_source_update; 320 | image_source_update_func(context, settings); 321 | 322 | return (void*)context; 323 | } 324 | 325 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 326 | static unsafe void image_source_destroy(void* data) 327 | { 328 | Module.Log("image_source_destroy called", ObsLogLevel.Debug); 329 | var context = (image_source*)data; 330 | 331 | image_source_unload(context); 332 | 333 | if (context->file != null) 334 | ObsBmem.bfree(context->file); 335 | ObsBmem.bfree(context); 336 | } 337 | 338 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 339 | static unsafe uint image_source_getwidth(void* data) 340 | { 341 | // Module.Log("image_source_getwidth called", ObsLogLevel.Debug); 342 | return ((image_source*)data)->if4.image3.image2.image.cx; 343 | } 344 | 345 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 346 | static unsafe uint image_source_getheight(void* data) 347 | { 348 | // Module.Log("image_source_getheight called", ObsLogLevel.Debug); 349 | return ((image_source*)data)->if4.image3.image2.image.cy; 350 | } 351 | 352 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 353 | static unsafe void image_source_render(void* data, gs_effect* effect) 354 | { 355 | // Module.Log("image_source_render called", ObsLogLevel.Debug); 356 | var context = (image_source*)data; 357 | if (context->if4.image3.image2.image.texture == null) 358 | return; 359 | 360 | var previous = ObsGraphics.gs_framebuffer_srgb_enabled(); 361 | ObsGraphics.gs_enable_framebuffer_srgb(Convert.ToByte(true)); 362 | 363 | ObsGraphics.gs_blend_state_push(); 364 | ObsGraphics.gs_blend_function(gs_blend_type.GS_BLEND_ONE, gs_blend_type.GS_BLEND_INVSRCALPHA); 365 | 366 | fixed (byte* imageParam = "image"u8) 367 | ObsGraphics.gs_effect_set_texture_srgb(ObsGraphics.gs_effect_get_param_by_name(effect, (sbyte*)imageParam), context->if4.image3.image2.image.texture); 368 | 369 | ObsGraphics.gs_draw_sprite(context->if4.image3.image2.image.texture, 0, context->if4.image3.image2.image.cx, context->if4.image3.image2.image.cy); 370 | 371 | ObsGraphics.gs_blend_state_pop(); 372 | 373 | ObsGraphics.gs_enable_framebuffer_srgb(previous); 374 | } 375 | 376 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 377 | static unsafe void image_source_tick(void* data, float seconds) 378 | { 379 | // Module.Log("image_source_tick called", ObsLogLevel.Debug); 380 | var context = (image_source*)data; 381 | var frame_time = Obs.obs_get_video_frame_time(); 382 | 383 | context->update_time_elapsed += seconds; 384 | 385 | Obs.obs_enter_graphics(); 386 | if (context->has_new_data) // check if new data is available, needs to be done in graphics context so it is thread-synchronized 387 | { 388 | var fileString = Marshal.PtrToStringUTF8((IntPtr)context->new_file); 389 | Module.Log(string.Format("activating texture '{0}'", fileString), ObsLogLevel.Debug); 390 | // clean up current data 391 | if (context->file != null) 392 | ObsBmem.bfree(context->file); 393 | gs_image_file4_free(&context->if4); 394 | 395 | // move the new data into place 396 | context->if4 = context->new_if4; 397 | context->file = context->new_file; 398 | context->persistent = context->new_persistent; 399 | context->linear_alpha = context->new_linear_alpha; 400 | context->file_timestamp = context->new_file_timestamp; 401 | 402 | Module.Log(string.Format("activated texture '{0}'", fileString), ObsLogLevel.Debug); 403 | 404 | // reset for the next loading procedure 405 | context->has_new_data = false; 406 | } 407 | Obs.obs_leave_graphics(); 408 | 409 | if (Convert.ToBoolean(Obs.obs_source_showing(context->source))) 410 | { 411 | if (context->update_time_elapsed >= 1.0f) 412 | { 413 | var t = get_modified_timestamp(context->file); 414 | context->update_time_elapsed = 0.0f; 415 | 416 | if (context->file_timestamp != t) 417 | image_source_load(context); 418 | } 419 | } 420 | 421 | if (Convert.ToBoolean(Obs.obs_source_showing(context->source))) 422 | { 423 | if (!context->active) 424 | { 425 | if (Convert.ToBoolean(context->if4.image3.image2.image.is_animated_gif)) 426 | context->last_time = frame_time; 427 | context->active = true; 428 | } 429 | 430 | if (context->restart_gif) 431 | restart_gif(context); 432 | 433 | } 434 | else 435 | { 436 | if (context->active) 437 | { 438 | restart_gif(context); 439 | context->active = false; 440 | } 441 | 442 | return; 443 | } 444 | 445 | if ((context->last_time > 0) && Convert.ToBoolean(context->if4.image3.image2.image.is_animated_gif)) 446 | { 447 | var elapsed = frame_time - context->last_time; 448 | var updated = Convert.ToBoolean(ObsImageFile.gs_image_file4_tick(&context->if4, elapsed)); 449 | 450 | if (updated) 451 | { 452 | Obs.obs_enter_graphics(); 453 | ObsImageFile.gs_image_file4_update_texture(&context->if4); 454 | Obs.obs_leave_graphics(); 455 | } 456 | } 457 | 458 | context->last_time = frame_time; 459 | } 460 | 461 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 462 | static unsafe obs_properties* image_source_get_properties(void* data) 463 | { 464 | Module.Log("image_source_get_properties called", ObsLogLevel.Debug); 465 | var s = (image_source*)data; 466 | 467 | var properties = ObsProperties.obs_properties_create(); 468 | 469 | string defaultPath = Marshal.PtrToStringUTF8((IntPtr)s->file)!; 470 | if (!string.IsNullOrEmpty(defaultPath)) 471 | defaultPath = Path.GetDirectoryName(defaultPath)!; 472 | else 473 | defaultPath = ""; 474 | 475 | fixed (byte* 476 | path = Encoding.UTF8.GetBytes(defaultPath), 477 | propertyImageIdentifier = Module.ObsText("Image"), 478 | propertyAsyncInfoIdentifierId = "async_info"u8, 479 | propertyAsyncInfoIdentifierText = "(Async)"u8, 480 | propertyFileIdentifier = "file"u8, 481 | propertyFileCaption = Module.ObsText("File"), 482 | propertyUnloadIdentifier = "unload"u8, 483 | propertyUnloadCaption = Module.ObsText("UnloadWhenNotShowing"), 484 | propertyLinearAlphaIdentifier = "linear_alpha"u8, 485 | propertyLinearAlphaCaption = Module.ObsText("LinearAlpha"), 486 | #if WINDOWS 487 | browseFileFilter = @" 488 | All formats (*.bmp *.tga *.png *.jpeg *.jpg *.jxr *.gif *.psd *.webp);; 489 | BMP Files (*.bmp);; 490 | Targa Files (*.tga);; 491 | PNG Files (*.png);; 492 | JPEG Files (*.jpeg *.jpg);; 493 | JXR Files (*.jxr);; 494 | GIF Files (*.gif);; 495 | PSD Files (*.psd);; 496 | WebP Files (*.webp);; 497 | All Files (*.*) 498 | "u8 499 | #else 500 | browseFileFilter = @" 501 | All formats (*.bmp *.tga *.png *.jpeg *.jpg *.gif *.psd *.webp);; 502 | BMP Files (*.bmp);; 503 | Targa Files (*.tga);; 504 | PNG Files (*.png);; 505 | JPEG Files (*.jpeg *.jpg);; 506 | GIF Files (*.gif);; 507 | PSD Files (*.psd);; 508 | WebP Files (*.webp);; 509 | All Files (*.*) 510 | "u8 511 | #endif 512 | ) 513 | { 514 | var prop = ObsProperties.obs_properties_add_text(properties, (sbyte*)propertyAsyncInfoIdentifierId, (sbyte*)propertyAsyncInfoIdentifierText, obs_text_type.OBS_TEXT_INFO); 515 | 516 | prop = ObsProperties.obs_properties_add_path(properties, (sbyte*)propertyFileIdentifier, (sbyte*)propertyFileCaption, obs_path_type.OBS_PATH_FILE, (sbyte*)browseFileFilter, (sbyte*)path); 517 | 518 | prop = ObsProperties.obs_properties_add_bool(properties, (sbyte*)propertyUnloadIdentifier, (sbyte*)propertyUnloadCaption); 519 | 520 | prop = ObsProperties.obs_properties_add_bool(properties, (sbyte*)propertyLinearAlphaIdentifier, (sbyte*)propertyLinearAlphaCaption); 521 | } 522 | return properties; 523 | } 524 | 525 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 526 | static unsafe void missing_file_callback(void* src, sbyte* new_path, void* data) 527 | { 528 | Module.Log("missing_file_callback called", ObsLogLevel.Debug); 529 | var s = (image_source*)src; 530 | 531 | var settings = Obs.obs_source_get_settings(s->source); 532 | fixed (byte* propertyFileIdentifier = "file"u8) 533 | ObsData.obs_data_set_string(settings, (sbyte*)propertyFileIdentifier, new_path); 534 | Obs.obs_source_update(s->source, settings); 535 | ObsData.obs_data_release(settings); 536 | } 537 | 538 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 539 | static unsafe obs_missing_files* image_source_missing_files(void* data) 540 | { 541 | Module.Log("image_source_missing_files called", ObsLogLevel.Debug); 542 | var s = (image_source*)data; 543 | var files = ObsMissingFiles.obs_missing_files_create(); 544 | 545 | var file = Marshal.PtrToStringUTF8((IntPtr)s->file); 546 | if (!string.IsNullOrEmpty(file)) 547 | { 548 | if (!File.Exists(file)) 549 | { 550 | var missingFile = ObsMissingFiles.obs_missing_file_create(s->file, &missing_file_callback, (int)obs_missing_file_src.OBS_MISSING_FILE_SOURCE, s->source, null); 551 | ObsMissingFiles.obs_missing_files_add_file(files, missingFile); 552 | } 553 | } 554 | return files; 555 | 556 | } 557 | 558 | [UnmanagedCallersOnly(CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 559 | static unsafe gs_color_space image_source_get_color_space(void* data, nuint count, gs_color_space* preferred_spaces) 560 | { 561 | // Module.Log("image_source_get_color_space called", ObsLogLevel.Debug); 562 | var s = (image_source*)data; 563 | return (s->if4.image3.image2.image.texture != null) ? s->if4.space : gs_color_space.GS_CS_SRGB; 564 | } 565 | 566 | #endregion Source API methods 567 | 568 | 569 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 YorVeX, https://github.com/YorVeX 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Module.cs: -------------------------------------------------------------------------------- 1 | // SPDX-FileCopyrightText: © 2023 YorVeX, https://github.com/YorVeX 2 | // SPDX-License-Identifier: MIT 3 | 4 | using System.Runtime.InteropServices; 5 | using System.Text; 6 | using ObsInterop; 7 | namespace xObsAsyncImageSource; 8 | 9 | // original image source probably isn't changed to be threaded, see https://github.com/obsproject/obs-studio/issues/5444 10 | 11 | public enum ObsLogLevel : int 12 | { 13 | Error = ObsBase.LOG_ERROR, 14 | Warning = ObsBase.LOG_WARNING, 15 | Info = ObsBase.LOG_INFO, 16 | Debug = ObsBase.LOG_DEBUG 17 | } 18 | 19 | public static class Module 20 | { 21 | 22 | const bool DebugLog = false; // enable for debug logging in OBS log 23 | const string DefaultLocale = "en-US"; 24 | public static string ModuleName = "xObsAsyncImageSource"; 25 | static string _locale = DefaultLocale; 26 | static unsafe obs_module* _obsModule = null; 27 | public static unsafe obs_module* ObsModule { get => _obsModule; } 28 | static unsafe text_lookup* _textLookupModule = null; 29 | static object _logLock = new Object(); 30 | 31 | #region Helper methods 32 | public static unsafe void Log(string text, ObsLogLevel logLevel) 33 | { 34 | lock (_logLock) 35 | { 36 | if (DebugLog && (logLevel == ObsLogLevel.Debug)) 37 | logLevel = ObsLogLevel.Info; 38 | // need to escape %, otherwise they are treated as format items, but since we provide null as arguments list this crashes OBS 39 | fixed (byte* logMessagePtr = Encoding.UTF8.GetBytes("[" + ModuleName + "] " + text.Replace("%", "%%"))) 40 | ObsBase.blog((int)logLevel, (sbyte*)logMessagePtr); 41 | } 42 | } 43 | 44 | public static unsafe byte[] ObsText(string identifier, params object[] args) 45 | { 46 | return Encoding.UTF8.GetBytes(string.Format(ObsTextString(identifier), args)); 47 | } 48 | 49 | public static unsafe byte[] ObsText(string identifier) 50 | { 51 | return Encoding.UTF8.GetBytes(ObsTextString(identifier)); 52 | } 53 | 54 | public static unsafe string ObsTextString(string identifier, params object[] args) 55 | { 56 | return string.Format(ObsTextString(identifier), args); 57 | } 58 | 59 | public static unsafe string ObsTextString(string identifier) 60 | { 61 | fixed (byte* lookupVal = Encoding.UTF8.GetBytes(identifier)) 62 | { 63 | sbyte* lookupResult = null; 64 | ObsTextLookup.text_lookup_getstr(_textLookupModule, (sbyte*)lookupVal, &lookupResult); 65 | var resultString = Marshal.PtrToStringUTF8((IntPtr)lookupResult); 66 | if (string.IsNullOrEmpty(resultString)) 67 | return ""; 68 | else 69 | return resultString; 70 | } 71 | } 72 | 73 | public static unsafe string GetString(sbyte* obsString) 74 | { 75 | string managedString = Marshal.PtrToStringUTF8((IntPtr)obsString)!; 76 | ObsBmem.bfree(obsString); 77 | return managedString; 78 | } 79 | #endregion Helper methods 80 | 81 | #region OBS module API methods 82 | [UnmanagedCallersOnly(EntryPoint = "obs_module_set_pointer", CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 83 | public static unsafe void SetPointer(obs_module* obsModulePointer) 84 | { 85 | ModuleName = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name!; 86 | _obsModule = obsModulePointer; 87 | } 88 | 89 | [UnmanagedCallersOnly(EntryPoint = "obs_module_ver", CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 90 | public static uint GetVersion() 91 | { 92 | var major = (uint)Obs.Version.Major; 93 | var minor = (uint)Obs.Version.Minor; 94 | var patch = (uint)Obs.Version.Build; 95 | var version = (major << 24) | (minor << 16) | patch; 96 | return version; 97 | } 98 | 99 | [UnmanagedCallersOnly(EntryPoint = "obs_module_load", CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 100 | public static unsafe bool ModuleLoad() 101 | { 102 | Log("Loading module...", ObsLogLevel.Debug); 103 | AsyncImageSource.Register(); 104 | var assemblyName = System.Reflection.Assembly.GetExecutingAssembly().GetName(); 105 | Version version = assemblyName.Version!; 106 | Log("Version " + version.Major + "." + version.Minor + " loaded.", ObsLogLevel.Info); 107 | return true; 108 | } 109 | 110 | [UnmanagedCallersOnly(EntryPoint = "obs_module_unload", CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 111 | public static unsafe void ModuleUnload() 112 | { 113 | Log("Unloading module...", ObsLogLevel.Debug); 114 | } 115 | 116 | [UnmanagedCallersOnly(EntryPoint = "obs_module_set_locale", CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 117 | public static unsafe void ModuleSetLocale(char* locale) 118 | { 119 | Log("ModuleSetLocale called", ObsLogLevel.Debug); 120 | var localeString = Marshal.PtrToStringUTF8((IntPtr)locale); 121 | if (!string.IsNullOrEmpty(localeString)) 122 | { 123 | _locale = localeString; 124 | Log("Locale is set to: " + _locale, ObsLogLevel.Debug); 125 | } 126 | if (_textLookupModule != null) 127 | ObsTextLookup.text_lookup_destroy(_textLookupModule); 128 | fixed (byte* defaultLocale = Encoding.UTF8.GetBytes(DefaultLocale), currentLocale = Encoding.UTF8.GetBytes(_locale)) 129 | _textLookupModule = Obs.obs_module_load_locale(_obsModule, (sbyte*)defaultLocale, (sbyte*)currentLocale); 130 | } 131 | 132 | [UnmanagedCallersOnly(EntryPoint = "obs_module_free_locale", CallConvs = new[] { typeof(System.Runtime.CompilerServices.CallConvCdecl) })] 133 | public static unsafe void ModuleFreeLocale() 134 | { 135 | if (_textLookupModule != null) 136 | ObsTextLookup.text_lookup_destroy(_textLookupModule); 137 | _textLookupModule = null; 138 | Log("ModuleFreeLocale called", ObsLogLevel.Debug); 139 | } 140 | 141 | 142 | 143 | #endregion OBS module API methods 144 | 145 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # xObsAsyncImageSource 2 | OBS plugin providing an image source that loads images asynchronously (causing a lot less lag on load). 3 | 4 | ![image](https://user-images.githubusercontent.com/528974/220008779-3075b81d-0883-4038-970c-f84a432cc54e.png) 5 | 6 | ## Prerequisites 7 | - OBS 29+ 64 bit 8 | - Windows 9 | - tested only on Windows 10, but Windows 11 should also work 10 | - Linux 11 | - occasionally tested, but not regularly 12 | - binary build created on Ubuntu 20.04 WSL environment, therefore linked against glibc 2.31 13 | 14 | ## Comparison to original image source 15 | 16 | ### Less lag and dropped frames 17 | The original image source can cause short freezes of OBS (aka lags) when loading images, to be more precise it will often make OBS drop frames and cause the counter 18 | "Frames missed due to rendering lag" to increase, you can view this statistic in the window shown by selecting "View" and "Stats" from the OBS main window. 19 | 20 | The async image source will be a lot less likely to cause this. 21 | 22 | ### Loading behavior 23 | While the async image source is still busy loading an image it simply keeps on showing whatever it was showing previously. 24 | 25 | If it was hidden or didn't have any image file configured (or an invalid/missing file) it will show nothing, if it was showing a different image 26 | then it will keep on showing this image until it finished loading the new image. 27 | 28 | This behavior will ensure a smooth transition from one image to another (as opposed to causing flickering if the old image would always be hidden while loading a new one). 29 | 30 | If another image load is already triggered while the previous image load wasn't finished the previous load will be aborted in favor of the new one. 31 | 32 | If loading fails the async image source will keep on trying to load the image every second. This way if the file was locked during the last load attempt (e.g. happens when it is updated at the exact time the image source tries to read the file) it will be updated a second later (whereas the original image source [would never recover from this until the image file is updated once more](https://github.com/obsproject/obs-studio/issues/3275)). 33 | 34 | ### Usage scenarios 35 | You should prefer this image source over the original one whenever images are not only (re-)loaded once on startup of OBS but also during runtime. This is the case when: 36 | 37 | - you have "Unload image when not showing" activated on one or more images and hide/show these images during a session 38 | - image files shown by an image source change during a session 39 | - you sometimes add new image sources during a session 40 | - you sometimes open the properties of image sources during a session (changing nothing and clicking cancel triggers a reload) 41 | 42 | If you only use images that were loaded at startup and are either visible all the time or have "Unload image when not showing" unchecked if you hide/show 43 | them throughout a session this async source doesn't give you any benefits. Well, almost. Even during initial load with OBS startup the original image 44 | source can cause unnecessary audio buffering increases (the infamous "adding X milliseconds of audio buffering" in your log) while the async image 45 | source is a lot less likely to trigger this. 46 | 47 | ### Technical background 48 | The original image source loads images on the main thread, blocking all rendering in OBS while it is busy loading the image. 49 | 30 FPS mean that OBS has ((1 / 30) * 1000 =) 33,33... ms time to render each frame, with 60 FPS this drops to 16,66... ms and so on. 50 | In my tests loading even relatively small images took anything from 40 to 80 ms, an animated image even 200+ ms. 51 | 52 | This means that while loading an image OBS will almost certainly have to drop frames because it cannot render them on time. Combine this with 53 | the fact that OBS doesn't react well to rendering lag and [you're in trouble](https://github.com/obsproject/obs-studio/issues/6673), 54 | even more so if you use secondary outputs like NDI or Teleport. When reporting OBS problems caused by lag the first advice you will get 55 | is most probably that you should eliminate the source of the lag. This advice of course is correct, but what do you do if it's caused by loading 56 | images that you need to be loaded? 57 | 58 | This async image source uses exactly the same OBS internal loading/decoding/rendering functions for the images (in fact large chunks 59 | of the code are a 1:1 copy of the original image source code), with the one difference that the functions which take the most time during loading an image 60 | are executed asynchronously on a separate thread instead of the main OBS thread. Also working multi-threaded introduces some complexity, i.e. extra code 61 | to eventually synchronize things back to the main thread after loading was finished. 62 | 63 | ## Usage 64 | 65 | ### Installation 66 | Before installing make sure that OBS is not running. 67 | 68 | For portable mode simply extract the .7z file into the root directory of the portable folder structure. For regular OBS installations see the operating system specific instructions below. 69 | 70 |
71 | 🟦 Windows 72 | 73 | For automatic installation just run the provided installer, then restart OBS. 74 | 75 | For manual installation extract the downloaded .7z file (= copy the contained obs-plugins and data folders) into the OBS Studio installation directory. The default location for this is 76 | 77 | `C:\Program Files\obs-studio` 78 | 79 | This needs admin permissions. 80 | 81 |
82 | 83 |
84 | 🐧 Linux 85 | 86 | The folder structure in the downloaded .7z file is prepared so that you can extract the file (= copy the contained files) into your user home and on many systems this will just work already. 87 | 88 | However, depending on the distribution and OBS installation method (manual, distro repo, snap, flatpak...) the location of this folder can vary, so if it doesn't work from the user home you might have to look around a bit. 89 | 90 | Example locations for the plugin .so (and .so.dbg) file are: 91 | 92 | - `~/.config/obs-studio/plugins/` (The structure the .7z is prepared for) 93 | - `/usr/lib/obs-plugins/` 94 | - `/usr/lib/x86_64-linux-gnu/obs-plugins/` 95 | - `/usr/share/obs/obs-plugins/` 96 | - `~/.local/share/flatpak/app/com.obsproject.Studio/x86_64/stable/active/files/lib/obs-plugins/` 97 | - `/var/lib/flatpak/app/com.obsproject.Studio/x86_64/stable/active/files/lib/obs-plugins/` 98 | 99 | Unfortunately the expected location of the locale, which can be found in the data folder, can vary also. 100 | 101 | If you get missing locale errors from the plugin you can try to copy the "locale" folder found inside the data folder to: 102 | 103 | - `/usr/share/obs/obs-plugins//locale` 104 | - `~/.local/share/flatpak/app/com.obsproject.Studio/x86_64/stable/active/files/share/obs/obs-plugins//locale` 105 | - `/var/lib/flatpak/app/com.obsproject.Studio/x86_64/stable/active/files/share/obs/obs-plugins//locale` 106 | 107 | If in doubt, please check where other "en-US.ini" files are located on your system. 108 | 109 |
110 | 111 | The steps to update an older version of the plugin to a newer version are the same, except that during file extraction you need to confirm overwriting existing files in addition. 112 | 113 | ### Settings 114 | 115 | After installation add a source just like you would [add the original image source](https://obsproject.com/wiki/Sources-Guide#image), but instead select "Image (Async)" from the list of available source types. 116 | 117 | ![image](https://user-images.githubusercontent.com/528974/220010613-2cb22305-45d0-4bcb-b613-c8a01306ad10.png) 118 | 119 | Configuration is exactly the same as for the original image source. 120 | 121 | ### Convert all existing image sources 122 | If you want to convert all your existing standard image sources to async image sources at once 123 | - close OBS in case it is running 124 | - make a backup of your scenes .json file 125 | - open your scenes .json file in a text editor and replace all occurrences of "image_source" with "xObsAsyncImageSource" (in both cases including the quotes) 126 | - start OBS and your image sources should have been converted 127 | To verify whether the conversion was actually applied click the plus icon to add a new source, select "Image (Async)" and check the list under "Add Existing", it should list your existing image sources. 128 | 129 | ## FAQ 130 | - **Q**: Will my OBS completely stop dropping frames when loading images with this source? 131 | - **A**: Under ideal conditions yes, but that depends a lot on your system and configuration. If your computer is already maxing out its CPU usage even before the image load and/or you load a really large image you could still get lags/dropped frames, albeit a lot less compared to the original image source. E.g. in my tests when running OBS at 60 FPS and loading an unusually complex and big 5000x5000 .png file the original source would drop ~50 frames while the async image source would drop 5. 132 | 133 | - **Q**: Wow, that's cool, can I also have this for image slide show sources? 134 | - **A**: OBS 30.1.X or higher has a reworked slideshow that also loads images asynchronously. If you don't want to wait, you can get the current beta of it from [here](https://github.com/obsproject/obs-studio/releases). 135 | 136 | - **Q**: Why is the plugin file so big compared to other plugins for the little bit it does, will this cause issues? 137 | - **A**: Unlike other plugins it's not written directly in C++ but in C# using .NET 7 and NativeAOT (for more details read on in the section for developers). This produces some overhead in the actual plugin file, however, the code that matters for functionality of this plugin should be just as efficient and fast as code directly written in C++ so there's no reason to worry about performance on your system. 138 | 139 | - **Q**: Will there be a version for MacOS? 140 | - **A**: NativeAOT [doesn't support cross-compiling](https://github.com/dotnet/runtime/blob/main/src/coreclr/nativeaot/docs/compiling.md#cross-architecture-compilation) and I don't have a Mac, so I currently can't compile it, let alone test it. You can try to compile it yourself, but note that MacOS [is currently only supported by the next preview version of .NET 8](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/#platformarchitecture-restrictions), although people [do already successfully create builds](https://github.com/dotnet/runtime/issues/79253) with it. 141 | 142 | - **Q**: Will there be a 32 bit version of this plugin? 143 | - **A**: No. Feel free to try and compile it for x86 targets yourself, last time I checked it wasn't fully supported in NativeAOT. 144 | 145 | 146 | ## For developers 147 | ### C# 148 | OBS Classic still had a [CLR Host Plugin](https://obsproject.com/forum/resources/clr-host-plugin.21/), but with OBS Studio writing plugins in C# wasn't possible anymore. This has changed as of recently, with the release of .NET 7 and NativeAOT it is possible to produce native code that can be linked with OBS. 149 | 150 | ### Building 151 | Refer to the [building instructions for my example plugin](https://github.com/YorVeX/ObsCSharpExample#building), they will also apply here. 152 | 153 | ## Credits 154 | Many thanks to [kostya9](https://github.com/kostya9) for laying the groundwork of C# OBS Studio plugin creation, without him this plugin (and hopefully many more C# plugins following in the future) wouldn't exist. Read about his ventures into this area in his blog posts [here](https://sharovarskyi.com/blog/posts/dotnet-obs-plugin-with-nativeaot/) and [here](https://sharovarskyi.com/blog/posts/clangsharp-dotnet-interop-bindings/). 155 | -------------------------------------------------------------------------------- /img/xObsAsyncImageSource-Icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YorVeX/xObsAsyncImageSource/b6e714f49d76e776cfd7a6847a5bedde32dacbd9/img/xObsAsyncImageSource-Icon.ico -------------------------------------------------------------------------------- /img/xObsAsyncImageSource-Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YorVeX/xObsAsyncImageSource/b6e714f49d76e776cfd7a6847a5bedde32dacbd9/img/xObsAsyncImageSource-Icon.png -------------------------------------------------------------------------------- /img/xObsAsyncImageSource-SplashScreen.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YorVeX/xObsAsyncImageSource/b6e714f49d76e776cfd7a6847a5bedde32dacbd9/img/xObsAsyncImageSource-SplashScreen.jpg -------------------------------------------------------------------------------- /img/xObsAsyncImageSource.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YorVeX/xObsAsyncImageSource/b6e714f49d76e776cfd7a6847a5bedde32dacbd9/img/xObsAsyncImageSource.jpg -------------------------------------------------------------------------------- /img/xObsAsyncImageSource.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/YorVeX/xObsAsyncImageSource/b6e714f49d76e776cfd7a6847a5bedde32dacbd9/img/xObsAsyncImageSource.png -------------------------------------------------------------------------------- /locale/ar-SA.ini: -------------------------------------------------------------------------------- 1 | ImageInput="الصورة" 2 | File="ملف الصورة" 3 | UnloadWhenNotShowing="إلغاء تحميل الصورة عند عدم عرضها" 4 | LinearAlpha="تطبيق ألفا بشكل خطي" 5 | SlideShow="عرض شرائح الصور" 6 | SlideShow.TransitionSpeed="سرعة الانتقال" 7 | SlideShow.SlideTime="الزمن بين الشرائح" 8 | SlideShow.Files="ملفات الصور" 9 | SlideShow.CustomSize="حجم الإرتباط/نسبة المشهد" 10 | SlideShow.CustomSize.Auto="تلقائي" 11 | SlideShow.Randomize="تشغيل عشوائي" 12 | SlideShow.Loop="تكرار" 13 | SlideShow.Transition="تأثير الإنتقال" 14 | SlideShow.Transition.Cut="قطع" 15 | SlideShow.Transition.Fade="تلاشي" 16 | SlideShow.Transition.Swipe="تمرير" 17 | SlideShow.Transition.Slide="انزلاق" 18 | SlideShow.PlaybackBehavior="السلوك و الظهور" 19 | SlideShow.PlaybackBehavior.StopRestart="إيقاف عندما يكون غير ظاهر, إعادة البدء عند الظهور" 20 | SlideShow.PlaybackBehavior.PauseUnpause="إيقاف مؤقت عندما يكون غير ظاهر, استكمال عند الظهور" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="التشغيل دائماً حتى عندما يكون غير ظاهر" 22 | SlideShow.SlideMode="وضعية التنقل" 23 | SlideShow.SlideMode.Auto="تلقائي" 24 | SlideShow.SlideMode.Manual="يدوي (استخدم المفاتيح الساخنة للتحكم في عرض الشرائح)" 25 | SlideShow.PlayPause="تشغيل/إيقاف مؤقت" 26 | SlideShow.Restart="إعادة التشغيل" 27 | SlideShow.Stop="إيقاف" 28 | SlideShow.NextSlide="الشريحة التالية" 29 | SlideShow.PreviousSlide="الشريحة السابقة" 30 | SlideShow.HideWhenDone="إخفاء عندما يتم الانتهاء من عرض الشرائح" 31 | ColorSource="مصدر لون" 32 | ColorSource.Color="اللون" 33 | ColorSource.Width="العرض" 34 | ColorSource.Height="الإرتفاع" 35 | -------------------------------------------------------------------------------- /locale/az-AZ.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Təsvir" 2 | File="Təsvir faylı" 3 | UnloadWhenNotShowing="Göstərilməyəndə təsviri çıxart" 4 | SlideShow="Təsvir Slayd Şousu" 5 | SlideShow.Files="Təsvir faylları" 6 | SlideShow.CustomSize="Məhdudlaşdırıcı ölçü/Əmsal nisbəti" 7 | SlideShow.CustomSize.Auto="Avtomatik" 8 | SlideShow.Randomize="Təsadüfi göstərmə" 9 | SlideShow.Loop="Dövr" 10 | SlideShow.Transition="Keçid" 11 | SlideShow.Transition.Cut="Kəs" 12 | SlideShow.Transition.Fade="Solma" 13 | SlideShow.PlaybackBehavior="Görünmə Davranışı" 14 | SlideShow.PlaybackBehavior.StopRestart="Görünməyəndə dayandır, görünəndə yenidən başlat" 15 | SlideShow.PlaybackBehavior.PauseUnpause="Görünməyəndə fasilə ver, görünəndə oynat" 16 | SlideShow.PlaybackBehavior.AlwaysPlay="Görünməyəndə belə həmişə oynat" 17 | SlideShow.SlideMode="Slayd rejimi" 18 | SlideShow.SlideMode.Auto="Avtomatik" 19 | SlideShow.SlideMode.Manual="Əllə (slayd şouya nəzarət etmək üçün qısayol düymələrini istifadə et)" 20 | SlideShow.PlayPause="Oynat/Fasilə ver" 21 | SlideShow.Restart="Yenidən başlat" 22 | SlideShow.Stop="Dayandır" 23 | SlideShow.NextSlide="Növbəti slayd" 24 | SlideShow.PreviousSlide="Əvvəlki slayd" 25 | SlideShow.HideWhenDone="Slayd şou hazır olanda gizlət" 26 | ColorSource="Rəng mənbəsi" 27 | ColorSource.Color="Rəng" 28 | ColorSource.Width="Eni" 29 | ColorSource.Height="Hündürlüyü" 30 | -------------------------------------------------------------------------------- /locale/ba-RU.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Һүрәт" 2 | File="Һүрәт файлы" 3 | SlideShow.Files="Һүрәт файлдары" 4 | SlideShow.Transition="Әүрелеү" 5 | SlideShow.Restart="Яңынан ебәрергә" 6 | SlideShow.Stop="Туҡтатырға" 7 | ColorSource.Color="Төҫ" 8 | ColorSource.Width="Киңлек" 9 | ColorSource.Height="Бейеклек" 10 | -------------------------------------------------------------------------------- /locale/bg-BG.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Изображение" 2 | File="Файл с изображение" 3 | SlideShow.TransitionSpeed="Бързина на прехода" 4 | SlideShow.SlideTime="Време между слайдовете" 5 | SlideShow.Files="Файлове с изображения" 6 | SlideShow.CustomSize.Auto="Автоматично" 7 | SlideShow.Randomize="Произволно изпълнение" 8 | SlideShow.Loop="Повтаряне" 9 | SlideShow.Transition="Преход" 10 | SlideShow.Transition.Cut="Изрязване" 11 | SlideShow.Transition.Fade="Затъмняване" 12 | SlideShow.Transition.Swipe="Прелистване" 13 | SlideShow.Transition.Slide="Плъзгане" 14 | SlideShow.PlaybackBehavior.AlwaysPlay="Винаги да се пуска, дори когато не се вижда" 15 | SlideShow.SlideMode.Auto="Автоматично" 16 | SlideShow.PlayPause="Пускане/пауза" 17 | SlideShow.Restart="Рестартиране" 18 | SlideShow.Stop="Спиране" 19 | ColorSource="Източник за цвят" 20 | ColorSource.Color="Цвят" 21 | ColorSource.Width="Широчина" 22 | ColorSource.Height="Височина" 23 | -------------------------------------------------------------------------------- /locale/bn-BD.ini: -------------------------------------------------------------------------------- 1 | ImageInput="ছবি" 2 | File="ফাইল ছবি" 3 | UnloadWhenNotShowing="না দেখানোর সময় চিত্রটি আনলোড করুন" 4 | LinearAlpha="লিনিয়ার স্পেসে আলফা প্রয়োগ" 5 | SlideShow="ছবি স্লাইড শো" 6 | SlideShow.Files="চিত্র ফাইল" 7 | SlideShow.CustomSize="বাউন্ডিংয়ের আকার/অনুপাত" 8 | SlideShow.CustomSize.Auto="স্বয়ংক্রিয়" 9 | SlideShow.Randomize="এলোমেলো প্লেব্যাক" 10 | SlideShow.Loop="চক্রাকার" 11 | SlideShow.Transition="স্থানান্তর" 12 | SlideShow.Transition.Cut="ছেদন" 13 | SlideShow.Transition.Fade="বিবর্ণ" 14 | SlideShow.Transition.Swipe="সোয়াইপ" 15 | SlideShow.Transition.Slide="স্লাইড" 16 | SlideShow.PlaybackBehavior="দৃশ্যমানতা আচরণ" 17 | SlideShow.PlaybackBehavior.StopRestart="দৃশ্যমান না হলে থামুন, দৃশ্যমান হলে পুনরায় চালু করুন" 18 | SlideShow.PlaybackBehavior.PauseUnpause="দৃশ্যমান না হলে বিরতি দিন, দৃশ্যমান হলে চালান" 19 | SlideShow.PlaybackBehavior.AlwaysPlay="সর্বদা দৃশ্যমান না হলেও চালান" 20 | SlideShow.SlideMode="স্লাইডের ধরণ" 21 | SlideShow.SlideMode.Auto="স্বয়ংক্রিয়" 22 | SlideShow.SlideMode.Manual="কৃত্রিম (স্লাইডশো নিয়ন্ত্রণ করতে হটকিগুলি ব্যবহার করুন)" 23 | SlideShow.PlayPause="চালান/বিরাম" 24 | SlideShow.Restart="পুনর্সূচনা" 25 | SlideShow.Stop="থামান" 26 | SlideShow.NextSlide="পরবর্তী স্লাইড" 27 | SlideShow.PreviousSlide="পূর্ববর্তী স্লাইড" 28 | SlideShow.HideWhenDone="স্লাইডশো হয়ে গেলে লুকান" 29 | ColorSource="রঙের উৎস" 30 | ColorSource.Color="রং" 31 | ColorSource.Width="প্রস্থ" 32 | ColorSource.Height="উচ্চতা" 33 | -------------------------------------------------------------------------------- /locale/ca-ES.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Imatge" 2 | File="Fitxer de la imatge" 3 | UnloadWhenNotShowing="Descarrega la imatge de la memòria quan no es mostri" 4 | LinearAlpha="Aplica alfa a l'espai lineal" 5 | SlideShow="Presentació de diapositives" 6 | SlideShow.TransitionSpeed="Velocitat de la transició" 7 | SlideShow.SlideTime="Temps entre diapositives" 8 | SlideShow.Files="Fitxers d'imatge" 9 | SlideShow.CustomSize="Relació d'aspecte" 10 | SlideShow.CustomSize.Auto="Automàtic" 11 | SlideShow.Randomize="Reproducció aleatòria" 12 | SlideShow.Loop="Bucle" 13 | SlideShow.Transition="Transició" 14 | SlideShow.Transition.Cut="Tall" 15 | SlideShow.Transition.Fade="Desaparèixer" 16 | SlideShow.Transition.Swipe="De cop" 17 | SlideShow.Transition.Slide="Diapositiva" 18 | SlideShow.PlaybackBehavior="Comportament de la visibilitat" 19 | SlideShow.PlaybackBehavior.StopRestart="Atura quan no sigui visible, reinicia quan sigui visible" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Pausa quan no sigui visible, reprèn quan sigui visible" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Reprodueix sempre fins i tot quan no sigui visible" 22 | SlideShow.SlideMode="Mode de diapositives" 23 | SlideShow.SlideMode.Auto="Automàtic" 24 | SlideShow.SlideMode.Manual="Manual (ús de tecles per controlar les diapositives)" 25 | SlideShow.PlayPause="Reprodueix/Pausa" 26 | SlideShow.Restart="Reinicia" 27 | SlideShow.Stop="Atura" 28 | SlideShow.NextSlide="Diapositiva següent" 29 | SlideShow.PreviousSlide="Diapositiva anterior" 30 | SlideShow.HideWhenDone="Amaga en finalitzar la presentació" 31 | ColorSource="Origen del color" 32 | ColorSource.Width="Amplada" 33 | ColorSource.Height="Alçada" 34 | -------------------------------------------------------------------------------- /locale/cs-CZ.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Obrázek" 2 | File="Soubor obrázku" 3 | UnloadWhenNotShowing="Nenačítat při skrytém" 4 | LinearAlpha="Použít alfa kanál v lineárním prostoru" 5 | SlideShow="Obrázková prezentace" 6 | SlideShow.TransitionSpeed="Rychlost přechodu" 7 | SlideShow.SlideTime="Čas mezi snímky" 8 | SlideShow.Files="Soubory obrázků" 9 | SlideShow.CustomSize="Poměr stran" 10 | SlideShow.CustomSize.Auto="Automatický" 11 | SlideShow.Randomize="Náhodné přehrávání" 12 | SlideShow.Loop="Opakovat" 13 | SlideShow.Transition="Přechod" 14 | SlideShow.Transition.Cut="Střih" 15 | SlideShow.Transition.Fade="Slábnutí" 16 | SlideShow.Transition.Swipe="Tažení" 17 | SlideShow.Transition.Slide="Sklouznutí" 18 | SlideShow.PlaybackBehavior="Závislost na viditelnosti" 19 | SlideShow.PlaybackBehavior.StopRestart="Zastavit při skrytém, restartovat při obnovení" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Pozastavit při skrytém, pokračovat při obnovení" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Přehrát vždy (i když není vidět)" 22 | SlideShow.SlideMode="Režim prezentace" 23 | SlideShow.SlideMode.Auto="Automatický" 24 | SlideShow.SlideMode.Manual="Manuální (pro ovládání prezentace je nutné použít zkratky)" 25 | SlideShow.PlayPause="Přehrát/Pozastavit" 26 | SlideShow.Restart="Restartovat" 27 | SlideShow.Stop="Zastavit" 28 | SlideShow.NextSlide="Další snímek" 29 | SlideShow.PreviousSlide="Předchozí snímek" 30 | SlideShow.HideWhenDone="Skrýt na konci prezentace" 31 | ColorSource="Zdroj barvy" 32 | ColorSource.Color="Barva" 33 | ColorSource.Width="Šířka" 34 | ColorSource.Height="Výška" 35 | -------------------------------------------------------------------------------- /locale/da-DK.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Billede" 2 | File="Billedfil" 3 | UnloadWhenNotShowing="Fjern billede fra hukommelsen når det ikke vises" 4 | LinearAlpha="Anvend alfa i lineært farveområde" 5 | SlideShow="Billedediasshow" 6 | SlideShow.TransitionSpeed="Overgangshastighed" 7 | SlideShow.SlideTime="Tid mellem dias" 8 | SlideShow.Files="Billedfiler" 9 | SlideShow.CustomSize="Afgrænsningsstørrelse/Formatforhold" 10 | SlideShow.CustomSize.Auto="Automatisk" 11 | SlideShow.Randomize="Tilfældig afspilning" 12 | SlideShow.Loop="Løkke" 13 | SlideShow.Transition="Overgang" 14 | SlideShow.Transition.Cut="Klip" 15 | SlideShow.Transition.Fade="Toning" 16 | SlideShow.Transition.Swipe="Stryg" 17 | SlideShow.Transition.Slide="Glide" 18 | SlideShow.PlaybackBehavior="Synlighedsadfærd" 19 | SlideShow.PlaybackBehavior.StopRestart="Stop når ikke synlig, genstart når synlig" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Sæt på pause når ikke synlig, genoptag når synlig" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Afspil altid, også når usynlig" 22 | SlideShow.SlideMode="Diastilstand" 23 | SlideShow.SlideMode.Auto="Automatisk" 24 | SlideShow.SlideMode.Manual="Manuelt (styr diasshow via genvejstaster)" 25 | SlideShow.PlayPause="Afspil/Pause" 26 | SlideShow.Restart="Genstart" 27 | SlideShow.NextSlide="Næste dias" 28 | SlideShow.PreviousSlide="Foregående dias" 29 | SlideShow.HideWhenDone="Skjul når diasshow er færdigt" 30 | ColorSource="Farvekilde" 31 | ColorSource.Color="Farve" 32 | ColorSource.Width="Bredde" 33 | ColorSource.Height="Højde" 34 | -------------------------------------------------------------------------------- /locale/de-DE.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Bild" 2 | File="Bilddatei" 3 | UnloadWhenNotShowing="Bild entladen, wenn es nicht gezeigt wird" 4 | LinearAlpha="Alpha im linearen Raum anwenden" 5 | SlideShow="Diashow" 6 | SlideShow.TransitionSpeed="Übergangsgeschwindigkeit" 7 | SlideShow.SlideTime="Zeit zwischen Bildern" 8 | SlideShow.Files="Bilddateien" 9 | SlideShow.CustomSize="Rahmengröße/Seitenverhältnis" 10 | SlideShow.CustomSize.Auto="Automatisch" 11 | SlideShow.Randomize="Zufällige Wiedergabe" 12 | SlideShow.Loop="Endlosschleife" 13 | SlideShow.Transition="Übergang" 14 | SlideShow.Transition.Cut="Schnitt" 15 | SlideShow.Transition.Fade="Überblende" 16 | SlideShow.PlaybackBehavior="Sichtbarkeitsverhalten" 17 | SlideShow.PlaybackBehavior.StopRestart="Beenden, wenn nicht sichtbar, neu starten, wenn sichtbar" 18 | SlideShow.PlaybackBehavior.PauseUnpause="Pausieren, wenn nicht sichtbar, fortsetzen, wenn sichtbar" 19 | SlideShow.PlaybackBehavior.AlwaysPlay="Immer abspielen, auch wenn nicht sichtbar" 20 | SlideShow.SlideMode="Diashowmodus" 21 | SlideShow.SlideMode.Auto="Automatisch" 22 | SlideShow.SlideMode.Manual="Manuell (Hotkeys für die Steuerung der Diashow verwenden)" 23 | SlideShow.PlayPause="Abspielen/Pausieren" 24 | SlideShow.Restart="Neu starten" 25 | SlideShow.Stop="Beenden" 26 | SlideShow.NextSlide="Nächstes Bild" 27 | SlideShow.PreviousSlide="Vorheriges Bild" 28 | SlideShow.HideWhenDone="Verbergen, wenn die Diashow vorbei ist" 29 | ColorSource="Farbquelle" 30 | ColorSource.Color="Farbe" 31 | ColorSource.Width="Breite" 32 | ColorSource.Height="Höhe" 33 | -------------------------------------------------------------------------------- /locale/el-GR.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Εικόνα" 2 | File="Αρχείο εικόνας" 3 | UnloadWhenNotShowing="Ξεφόρτωση εικόνας όταν δεν εμφανίζεται" 4 | LinearAlpha="Εφαρμογή άλφα σε γραμμικό χώρο" 5 | SlideShow="Παρουσίαση Εικόνων" 6 | SlideShow.TransitionSpeed="Ταχύτητα Μετάβασης" 7 | SlideShow.SlideTime="Χρόνος Μεταξύ Διαφανειών" 8 | SlideShow.Files="Αρχεία εικόνων" 9 | SlideShow.CustomSize="Μέγεθος Οριοθέτησης/Αναλογία" 10 | SlideShow.CustomSize.Auto="Αυτόματο" 11 | SlideShow.Randomize="Τυχαιοποίηση αναπαραγωγής" 12 | SlideShow.Loop="Επανάληψη" 13 | SlideShow.Transition="Μετάβαση" 14 | SlideShow.Transition.Cut="Αποκοπή" 15 | SlideShow.Transition.Fade="Ξεθώριασμα" 16 | SlideShow.Transition.Swipe="Σύρσιμο" 17 | SlideShow.Transition.Slide="Ολίσθηση" 18 | SlideShow.PlaybackBehavior="Συμπεριφορά Ορατότητας" 19 | SlideShow.PlaybackBehavior.StopRestart="Διακοπή όταν δεν είναι ορατή, επανεκκίνηση όταν είναι ορατή" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Παύση όταν δεν είναι ορατή, συνέχεια όταν είναι ορατή" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Αναπαραγωγή πάντα, ακόμα και αν δεν είναι ορατή" 22 | SlideShow.SlideMode="Λειτουργία παρουσίασης διαφανειών" 23 | SlideShow.SlideMode.Auto="Αυτόματα" 24 | SlideShow.SlideMode.Manual="Χειροκίνητα (χρήση συντομέυσεων για τον έλεγχο slideshow)" 25 | SlideShow.PlayPause="Αναπαραγωγή/Παύση" 26 | SlideShow.Restart="Επανεκκίνηση" 27 | SlideShow.Stop="Διακοπή" 28 | SlideShow.NextSlide="Επόμενη διαφάνεια" 29 | SlideShow.PreviousSlide="Προηγούμενη διαφάνεια" 30 | SlideShow.HideWhenDone="Απόκρυψη όταν η παρουσίαση τελειώσει" 31 | ColorSource="Πηγή χρώματος" 32 | ColorSource.Color="Χρώμα" 33 | ColorSource.Width="Πλάτος" 34 | ColorSource.Height="Ύψος" 35 | -------------------------------------------------------------------------------- /locale/en-GB.ini: -------------------------------------------------------------------------------- 1 | SlideShow.Randomize="Randomise Playback" 2 | SlideShow.PlaybackBehavior="Visibility Behaviour" 3 | ColorSource="Colour Source" 4 | ColorSource.Color="Colour" 5 | -------------------------------------------------------------------------------- /locale/en-US.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Image" 2 | File="Image File" 3 | UnloadWhenNotShowing="Unload image when not showing" 4 | LinearAlpha="Apply alpha in linear space" 5 | 6 | SlideShow="Image Slide Show" 7 | SlideShow.TransitionSpeed="Transition Speed" 8 | SlideShow.SlideTime="Time Between Slides" 9 | SlideShow.Files="Image Files" 10 | SlideShow.CustomSize="Bounding Size/Aspect Ratio" 11 | SlideShow.CustomSize.Auto="Automatic" 12 | SlideShow.Randomize="Randomize Playback" 13 | SlideShow.Loop="Loop" 14 | SlideShow.Transition="Transition" 15 | SlideShow.Transition.Cut="Cut" 16 | SlideShow.Transition.Fade="Fade" 17 | SlideShow.Transition.Swipe="Swipe" 18 | SlideShow.Transition.Slide="Slide" 19 | SlideShow.PlaybackBehavior="Visibility Behavior" 20 | SlideShow.PlaybackBehavior.StopRestart="Stop when not visible, restart when visible" 21 | SlideShow.PlaybackBehavior.PauseUnpause="Pause when not visible, unpause when visible" 22 | SlideShow.PlaybackBehavior.AlwaysPlay="Always play even when not visible" 23 | SlideShow.SlideMode="Slide Mode" 24 | SlideShow.SlideMode.Auto="Automatic" 25 | SlideShow.SlideMode.Manual="Manual (Use hotkeys to control slideshow)" 26 | SlideShow.PlayPause="Play/Pause" 27 | SlideShow.Restart="Restart" 28 | SlideShow.Stop="Stop" 29 | SlideShow.NextSlide="Next Slide" 30 | SlideShow.PreviousSlide="Previous Slide" 31 | SlideShow.HideWhenDone="Hide when slideshow is done" 32 | 33 | ColorSource="Color Source" 34 | ColorSource.Color="Color" 35 | ColorSource.Width="Width" 36 | ColorSource.Height="Height" 37 | -------------------------------------------------------------------------------- /locale/es-ES.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Imagen" 2 | File="Archivo de imagen" 3 | UnloadWhenNotShowing="Descarga la imagen de la memoria cuando no se muestre" 4 | LinearAlpha="Aplicar alfa en espacio lineal" 5 | SlideShow="Galería de imágenes" 6 | SlideShow.TransitionSpeed="Velocidad de transición" 7 | SlideShow.SlideTime="Tiempo entre diapositivas" 8 | SlideShow.Files="Archivo de imagen" 9 | SlideShow.CustomSize="Relación de aspecto" 10 | SlideShow.CustomSize.Auto="Automático" 11 | SlideShow.Randomize="Reproducción aleatoria" 12 | SlideShow.Loop="Bucle" 13 | SlideShow.Transition="Transición" 14 | SlideShow.Transition.Cut="Corte" 15 | SlideShow.Transition.Fade="Desvanecimiento" 16 | SlideShow.Transition.Swipe="Deslizar" 17 | SlideShow.Transition.Slide="Diapositiva" 18 | SlideShow.PlaybackBehavior="Comportamiento de visibilidad" 19 | SlideShow.PlaybackBehavior.StopRestart="Detener cuando no sea visible, reiniciar cuando sea visible" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Pausar cuando no sea visible, reanudar cuando sea visible" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Reproducir siempre incluso cuando no sea visible" 22 | SlideShow.SlideMode="Modo de diapositivas" 23 | SlideShow.SlideMode.Auto="Automático" 24 | SlideShow.SlideMode.Manual="Manual (uso de teclas para controlar las diapositivas)" 25 | SlideShow.PlayPause="Reproducir/Pausar" 26 | SlideShow.Restart="Reiniciar" 27 | SlideShow.Stop="Detener" 28 | SlideShow.NextSlide="Siguiente diapositiva" 29 | SlideShow.PreviousSlide="Diapositiva anterior" 30 | SlideShow.HideWhenDone="Ocultar cuando se acabe la presentación" 31 | ColorSource="Origen de color" 32 | ColorSource.Width="Ancho" 33 | ColorSource.Height="Alto" 34 | -------------------------------------------------------------------------------- /locale/et-EE.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Pilt" 2 | File="Pildifail" 3 | UnloadWhenNotShowing="Laadi maha pilt kui ei ole nähtav" 4 | SlideShow="Piltide slaidiesitus" 5 | SlideShow.TransitionSpeed="Ülemineku kiirus" 6 | SlideShow.SlideTime="Slaidide vaheline aeg" 7 | SlideShow.Files="Pildifailid" 8 | SlideShow.CustomSize.Auto="Automaatne" 9 | SlideShow.Randomize="Juhuslik taasesitus" 10 | SlideShow.Loop="Korda" 11 | SlideShow.Transition="Üleminek" 12 | SlideShow.Transition.Cut="Ilmuv" 13 | SlideShow.Transition.Fade="Hajuv" 14 | SlideShow.Transition.Swipe="Pühkiv" 15 | SlideShow.Transition.Slide="Sisselendav" 16 | SlideShow.PlaybackBehavior="Nähtav käitumine" 17 | SlideShow.PlaybackBehavior.StopRestart="Lõpeta kui nähtamatu, alusta uuesti kui nähtav" 18 | SlideShow.PlaybackBehavior.PauseUnpause="Peata kui nähtamatu, jätka kui nähtav" 19 | SlideShow.PlaybackBehavior.AlwaysPlay="Mängi alati, isegi siis kui pole nähtav" 20 | SlideShow.SlideMode.Auto="Automaatne" 21 | SlideShow.PlayPause="Esita/Peata" 22 | SlideShow.Restart="Taaskäivita" 23 | SlideShow.Stop="Lõpeta" 24 | SlideShow.NextSlide="Järgmine slaid" 25 | SlideShow.PreviousSlide="Eelmine slaid" 26 | ColorSource="Värvi allikas" 27 | ColorSource.Color="Värv" 28 | ColorSource.Width="Laius" 29 | ColorSource.Height="Kõrgus" 30 | -------------------------------------------------------------------------------- /locale/eu-ES.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Irudia" 2 | File="Irudi-fitxategia" 3 | UnloadWhenNotShowing="Ez kargatu irudia erakusten ez denean" 4 | LinearAlpha="Alfa ezarri espazio linealean" 5 | SlideShow="Irudien diaporama" 6 | SlideShow.TransitionSpeed="Transizio abiadura" 7 | SlideShow.SlideTime="Diapositiben arteko denbora" 8 | SlideShow.Files="Irudi fitxategiak" 9 | SlideShow.CustomSize="Markoaren tamaina/Aspektu-erlazioa" 10 | SlideShow.CustomSize.Auto="Automatikoa" 11 | SlideShow.Randomize="Ausazko erreprodukzioa" 12 | SlideShow.Loop="Begizta" 13 | SlideShow.Transition="Trantsizioa" 14 | SlideShow.Transition.Cut="Ebaki" 15 | SlideShow.Transition.Fade="Iraungi" 16 | SlideShow.Transition.Swipe="Korritu" 17 | SlideShow.Transition.Slide="Irristatu" 18 | SlideShow.PlaybackBehavior="Ikuste-jokabidea" 19 | SlideShow.PlaybackBehavior.StopRestart="Ikusten ez bada gelditu, ikusten denean berrabiarazi" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Ikusten ez bada pausatu, ikusten denean jarraitu" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Erreproduzitu beti nahiz eta ez ikusi" 22 | SlideShow.SlideMode="Diapositiba modua" 23 | SlideShow.SlideMode.Auto="Automatikoa" 24 | SlideShow.SlideMode.Manual="Eskuz (erabili teklak kontrolatzeko aurkezpena)" 25 | SlideShow.PlayPause=" Erreproduzitu/Pausarazi" 26 | SlideShow.Restart="Berrabiarazi" 27 | SlideShow.Stop="Gelditu" 28 | SlideShow.NextSlide="Hurrengo diapositiba" 29 | SlideShow.PreviousSlide="Aurreko diapositiba" 30 | SlideShow.HideWhenDone="Ezkutatu aurkezpena bukatzean" 31 | ColorSource="Kolorearen iturburua" 32 | ColorSource.Color="Kolorea" 33 | ColorSource.Width="Zabalera" 34 | ColorSource.Height="Altuera" 35 | -------------------------------------------------------------------------------- /locale/fa-IR.ini: -------------------------------------------------------------------------------- 1 | ImageInput="تصویر" 2 | File="پوشه تصویر" 3 | UnloadWhenNotShowing="لغو بارگیری عکس زمانی که نشان داده نشد" 4 | LinearAlpha="آلفا را در فضای خطی اعمال کنید" 5 | SlideShow="نمایش اسلایدی تصویر" 6 | SlideShow.TransitionSpeed="سرعت انتقال" 7 | SlideShow.SlideTime="زمان بین اسلایدها" 8 | SlideShow.Files="پوشه تصاویر" 9 | SlideShow.CustomSize="نسبت اندازه/نسبت ابعاد" 10 | SlideShow.CustomSize.Auto="خودکار" 11 | SlideShow.Randomize="پخش تصادفی" 12 | SlideShow.Loop="چرخه" 13 | SlideShow.Transition="انتقال" 14 | SlideShow.Transition.Cut="برش" 15 | SlideShow.Transition.Fade="محو شدن" 16 | SlideShow.Transition.Swipe="کشیدن" 17 | SlideShow.Transition.Slide="اسلاید" 18 | SlideShow.PlaybackBehavior="کنش های دیداری" 19 | SlideShow.PlaybackBehavior.StopRestart="توقف زمانی که قابل مشاهده نیست، راه اندازی مجدد زمانی که قابل مشاهده است" 20 | SlideShow.PlaybackBehavior.PauseUnpause="توقف زمانی که قابل مشاهده نیست، راه اندازی مجدد زمانی که قابل مشاهده است" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="همیشه حتی وقتی دیده نمی شود اجرا کنید" 22 | SlideShow.SlideMode="حالت اسلاید" 23 | SlideShow.SlideMode.Auto="خودکار" 24 | SlideShow.SlideMode.Manual="دستی (از کلیدهای میانبر برای کنترل نمایش اسلاید استفاده کنید)" 25 | SlideShow.PlayPause="پخش/توقف" 26 | SlideShow.Restart="راه اندازی مجدد" 27 | SlideShow.Stop="توقف" 28 | SlideShow.NextSlide="اسلاید بعدی" 29 | SlideShow.PreviousSlide="اسلاید قبلی" 30 | SlideShow.HideWhenDone="پنهان کردن هنگامی که نمایش پرده ای انجام می شود" 31 | ColorSource="رنگ منبع" 32 | ColorSource.Color="رنگ" 33 | ColorSource.Width="عرض" 34 | ColorSource.Height="ارتفاع" 35 | -------------------------------------------------------------------------------- /locale/fi-FI.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Kuva" 2 | File="Kuvatiedosto" 3 | UnloadWhenNotShowing="Vapauta kuva muistista, kun se ei ole näkyvissä" 4 | LinearAlpha="Käytä alfa lineaarisessa tilassa" 5 | SlideShow="Diaesitys" 6 | SlideShow.TransitionSpeed="Siirtymän nopeus" 7 | SlideShow.SlideTime="Aika diojen välillä" 8 | SlideShow.Files="Kuvatiedostot" 9 | SlideShow.CustomSize="Rajauskoko/Kuvasuhde" 10 | SlideShow.CustomSize.Auto="Automaattinen" 11 | SlideShow.Randomize="Toista satunnaisesti" 12 | SlideShow.Loop="Toista jatkuvasti" 13 | SlideShow.Transition="Siirtymä" 14 | SlideShow.Transition.Cut="Leikkaa" 15 | SlideShow.Transition.Fade="Häivytä" 16 | SlideShow.Transition.Swipe="Pyyhkäise" 17 | SlideShow.Transition.Slide="Liu'uta" 18 | SlideShow.PlaybackBehavior="Näkyvyyskäyttäytyminen" 19 | SlideShow.PlaybackBehavior.StopRestart="Pysäytä toisto kun lähde ei näy. Käynnistä toisto uudelleen, kun se on taas näkyvissä" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Keskeytä toisto kun lähde ei näy. Jatka toistoa, kun se on taas näkyvissä" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Toista aina, vaikka lähde ei olisi näkyvissä" 22 | SlideShow.SlideMode="Leikkaustila" 23 | SlideShow.SlideMode.Auto="Automaattinen" 24 | SlideShow.SlideMode.Manual="Manuaalinen (Käytä pikanäppäimiä ohjataksesi diashowta)" 25 | SlideShow.PlayPause="Toista/Tauko" 26 | SlideShow.Restart="Aloita alusta" 27 | SlideShow.Stop="Pysäytä" 28 | SlideShow.NextSlide="Seuraava dia" 29 | SlideShow.PreviousSlide="Edellinen dia" 30 | SlideShow.HideWhenDone="Piilota kun diaesitys on valmis" 31 | ColorSource="Värilähde" 32 | ColorSource.Color="Väri" 33 | ColorSource.Width="Leveys" 34 | ColorSource.Height="Korkeus" 35 | -------------------------------------------------------------------------------- /locale/fil-PH.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Larawan" 2 | File="Dokumentong Larawan" 3 | UnloadWhenNotShowing="I-unload ang imahe kapag hindi pinapakita" 4 | LinearAlpha="I-Apply ang Alpha sa Linear Space" 5 | SlideShow="Slide Show ng Larawan" 6 | SlideShow.TransitionSpeed="Bilis ng Transition" 7 | SlideShow.SlideTime="Oras Ng Pagitan sa Mga Slide" 8 | SlideShow.Files="Dokumentong Larawan" 9 | SlideShow.CustomSize="Bounding Size / Aspect Ratio" 10 | SlideShow.CustomSize.Auto="Awtomatiko" 11 | SlideShow.Randomize="I-randomize ang Pagpapatugtog" 12 | SlideShow.Loop="Ulit-ulitin" 13 | SlideShow.Transition="Pagpapalit-eksena" 14 | SlideShow.Transition.Cut="Paputol" 15 | SlideShow.Transition.Fade="Palaho" 16 | SlideShow.Transition.Swipe="Papunas" 17 | SlideShow.Transition.Slide="Padulas" 18 | SlideShow.PlaybackBehavior="Pag-uugali sa Pagkakita" 19 | SlideShow.PlaybackBehavior.StopRestart="Itigil kapag hindi nakikita, i-restart kapag nakikita" 20 | SlideShow.PlaybackBehavior.PauseUnpause="I-pause kapag hindi nakikita, i-unpause kapag nakikita" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Laging i-play kahit na hindi nakikita" 22 | SlideShow.SlideMode.Auto="Awtomatikong" 23 | SlideShow.SlideMode.Manual="Mano-mano (Gamitin ang mga hotkey upang kontrolin ang slideshow)" 24 | SlideShow.PlayPause="Patugtugin/I-pause" 25 | SlideShow.Restart="Ulitin" 26 | SlideShow.Stop="Itigil" 27 | SlideShow.NextSlide="Susunod na Slide" 28 | SlideShow.PreviousSlide="Nakaraang Slide" 29 | SlideShow.HideWhenDone="Itago kapag tapos na ang slideshow" 30 | ColorSource="Kulay na Source" 31 | ColorSource.Color="Kulay" 32 | ColorSource.Width="Lapad" 33 | ColorSource.Height="Taas" 34 | -------------------------------------------------------------------------------- /locale/fr-FR.ini: -------------------------------------------------------------------------------- 1 | File="Fichier image" 2 | UnloadWhenNotShowing="Décharger l'image quand elle n'est pas affichée" 3 | LinearAlpha="Appliquer l'alpha dans l'espace linéaire" 4 | SlideShow="Diaporama" 5 | SlideShow.TransitionSpeed="Vitesse de transition" 6 | SlideShow.SlideTime="Temps entre les couches" 7 | SlideShow.Files="Fichiers image" 8 | SlideShow.CustomSize="Taille du Cadre/Rapport d'aspect" 9 | SlideShow.CustomSize.Auto="Automatique" 10 | SlideShow.Randomize="Lecture aléatoire" 11 | SlideShow.Loop="Boucle" 12 | SlideShow.Transition.Cut="Coupure" 13 | SlideShow.Transition.Fade="Fondu" 14 | SlideShow.Transition.Swipe="Balayage" 15 | SlideShow.Transition.Slide="Glissement" 16 | SlideShow.PlaybackBehavior="Comportement de Visibilité" 17 | SlideShow.PlaybackBehavior.StopRestart="Arrêter si non visible, redémarrer si visible" 18 | SlideShow.PlaybackBehavior.PauseUnpause="Suspendre si non visible, reprendre si visible" 19 | SlideShow.PlaybackBehavior.AlwaysPlay="Toujours jouer même si non visible" 20 | SlideShow.SlideMode="Mode Diapo" 21 | SlideShow.SlideMode.Auto="Automatique" 22 | SlideShow.SlideMode.Manual="Manuel (utiliser les raccourcis clavier pour contrôler le diapo)" 23 | SlideShow.PlayPause="Lecture/Pause" 24 | SlideShow.Restart="Relancer" 25 | SlideShow.Stop="Arrêter" 26 | SlideShow.NextSlide="Diapo suivante" 27 | SlideShow.PreviousSlide="Diapo précédente" 28 | SlideShow.HideWhenDone="Masquer lorsque le diaporama est terminé" 29 | ColorSource="Source de couleur" 30 | ColorSource.Color="Couleur" 31 | ColorSource.Width="Largeur" 32 | ColorSource.Height="Hauteur" 33 | -------------------------------------------------------------------------------- /locale/gd-GB.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Dealbh" 2 | File="Faidhle deilbh" 3 | UnloadWhenNotShowing="Dì-luchdaich an dealbh mur eil e ’ga shealltainn" 4 | LinearAlpha="Cuir alpha an sàs san spàs loidhneach" 5 | SlideShow="Taisbeanadh shleamhnagan dhealbhan" 6 | SlideShow.Files="Faidhlichean deilbh" 7 | SlideShow.CustomSize="Meud an iadhaidh/Co-mheas deilbh" 8 | SlideShow.CustomSize.Auto="Fèin-obrachail" 9 | SlideShow.Randomize="Cluich air thuaiream" 10 | SlideShow.Loop="Lùb" 11 | SlideShow.Transition="Tar-mhùthadh" 12 | SlideShow.Transition.Cut="Geàrr às" 13 | SlideShow.Transition.Fade="Crìon" 14 | SlideShow.Transition.Swipe="Grad-shlaighd" 15 | SlideShow.Transition.Slide="Sleamhnaich" 16 | SlideShow.PlaybackBehavior="Giùlan na faicsinneachd" 17 | SlideShow.PlaybackBehavior.StopRestart="Cuir stad air mura faicear e, tòisich a-rithist nuair a faicear e" 18 | SlideShow.PlaybackBehavior.PauseUnpause="Cuir ’na stad mura faicear e, lean air adhart nuair a faicear e" 19 | SlideShow.PlaybackBehavior.AlwaysPlay="Cluich an-còmhnaidh fiù ’s mura faicear e" 20 | SlideShow.SlideMode="Modh nan sleamhnachan" 21 | SlideShow.SlideMode.Auto="Fèin-obrachail" 22 | SlideShow.SlideMode.Manual="A làimh (Cleachd grad-iuchraichean a stiùireadh an taisbeanaidh-shleamhnagan)" 23 | SlideShow.PlayPause="Cluich/Cuir ’na stad" 24 | SlideShow.Restart="Ath-thòisich" 25 | SlideShow.Stop="Cuir stad air" 26 | SlideShow.NextSlide="An ath-shleamhnag" 27 | SlideShow.PreviousSlide="An t-sleamhnag roimhpe" 28 | SlideShow.HideWhenDone="Cuir am falach nuair a bhios an taisbeanadh-shleamhnagan deiseil" 29 | ColorSource="Tùs dhathan" 30 | ColorSource.Color="Dath" 31 | ColorSource.Width="Leud" 32 | ColorSource.Height="Àirde" 33 | -------------------------------------------------------------------------------- /locale/gl-ES.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Imaxe" 2 | File="Ficheiro de imaxe" 3 | UnloadWhenNotShowing="Descargar a imaxe cando non se amosa" 4 | LinearAlpha="Aplicar alfa no espazo lineal" 5 | SlideShow="Diaporama" 6 | SlideShow.Files="Ficheiros de imaxe" 7 | SlideShow.CustomSize="Límite do tamaño/proporción do aspecto" 8 | SlideShow.CustomSize.Auto="Automático" 9 | SlideShow.Randomize="Reproducir ao chou" 10 | SlideShow.Loop="Bucle" 11 | SlideShow.Transition="Transición" 12 | SlideShow.Transition.Cut="Cortar" 13 | SlideShow.Transition.Fade="Esvaecer" 14 | SlideShow.Transition.Swipe="Esvarar" 15 | SlideShow.Transition.Slide="Diapositiva" 16 | SlideShow.PlaybackBehavior="Comportamento da visibilidade" 17 | SlideShow.PlaybackBehavior.StopRestart="Parar cando non é visíbel, reiniciar cando sexa visíbel" 18 | SlideShow.PlaybackBehavior.PauseUnpause="Pór en pausa cando non é visíbel, reiniciar cando sexa visíbel" 19 | SlideShow.PlaybackBehavior.AlwaysPlay="Reproducir sempre cando non estea visíbel" 20 | SlideShow.SlideMode="Modo de diapositiva" 21 | SlideShow.SlideMode.Auto="Automático" 22 | SlideShow.SlideMode.Manual="Manual (use as teclas rápidas para controlar o disporama)" 23 | SlideShow.PlayPause="Reproducir/Pór en pausa" 24 | SlideShow.Restart="Reiniciar" 25 | SlideShow.Stop="Parar" 26 | SlideShow.NextSlide="Seguinte diapositiva" 27 | SlideShow.PreviousSlide="Diapositiva anterior" 28 | SlideShow.HideWhenDone="Agochar cando se reproduce o diaporama" 29 | ColorSource="Orixe da cor" 30 | ColorSource.Color="Cor" 31 | ColorSource.Width="Largo" 32 | ColorSource.Height="Alto" 33 | -------------------------------------------------------------------------------- /locale/he-IL.ini: -------------------------------------------------------------------------------- 1 | ImageInput="תמונה" 2 | File="קובץ תמונה" 3 | UnloadWhenNotShowing="הסר טעינת תמונה כאשר לא נראה" 4 | LinearAlpha="החל שקיפות במרחב לינארי" 5 | SlideShow="מצגת תמונות" 6 | SlideShow.TransitionSpeed="מהירות מעבר" 7 | SlideShow.SlideTime="זמן בין השקופיות" 8 | SlideShow.Files="קובצי תמונה" 9 | SlideShow.CustomSize="גודל הצמדה/יחס גובה־רוחב" 10 | SlideShow.CustomSize.Auto="אוטומטי" 11 | SlideShow.Randomize="סדר נגינה אקראי" 12 | SlideShow.Loop="לולאה" 13 | SlideShow.Transition="מעבר" 14 | SlideShow.Transition.Cut="חתוך" 15 | SlideShow.Transition.Fade="עמעום" 16 | SlideShow.Transition.Swipe="החלקה" 17 | SlideShow.Transition.Slide="הסט" 18 | SlideShow.PlaybackBehavior="התנהגות ניראות" 19 | SlideShow.PlaybackBehavior.StopRestart="עצור כאשר אינו נראה, התחל מחדש כאשר נראה" 20 | SlideShow.PlaybackBehavior.PauseUnpause="השהה כאשר אינו נראה, בטל השהייה כאשר נראה" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="נגן תמיד גם כאשר לא נראה" 22 | SlideShow.SlideMode="מצב שקופית" 23 | SlideShow.SlideMode.Auto="אוטומטי" 24 | SlideShow.SlideMode.Manual="ידני (שימוש במקשים חמים לשליטה בהצגת השקופיות)" 25 | SlideShow.PlayPause="נגן/השהה" 26 | SlideShow.Restart="אתחל" 27 | SlideShow.Stop="עצור" 28 | SlideShow.NextSlide="השקופית הבאה" 29 | SlideShow.PreviousSlide="השקופית הקודמת" 30 | SlideShow.HideWhenDone="להסתיר בסיום הצגת השקופיות" 31 | ColorSource="מקור צבע" 32 | ColorSource.Color="צבע" 33 | ColorSource.Width="רוחב" 34 | ColorSource.Height="גובה" 35 | -------------------------------------------------------------------------------- /locale/hi-IN.ini: -------------------------------------------------------------------------------- 1 | ImageInput="छवि" 2 | File="इमेज फ़ाइल" 3 | UnloadWhenNotShowing="प्रदर्शित न होने पर इमेज अनलोड करें" 4 | LinearAlpha="लीनियर स्पेस में अल्फा लागू करें" 5 | SlideShow="इमेज स्लाइड दिखाएं" 6 | SlideShow.TransitionSpeed="संक्रांति की गति" 7 | SlideShow.SlideTime="स्लाइडों के बीच अंतराल" 8 | SlideShow.Files="इमेज फ़ाइलें" 9 | SlideShow.CustomSize="परिसीमन आकार/आकार अनुपात" 10 | SlideShow.CustomSize.Auto="स्वचालित" 11 | SlideShow.Randomize="प्लेबैक यादृच्छिक करें" 12 | SlideShow.Loop="लूप" 13 | SlideShow.Transition="संक्रांति" 14 | SlideShow.Transition.Cut="काटें" 15 | SlideShow.Transition.Fade="धुंधला करें" 16 | SlideShow.Transition.Swipe="स्वाइप करें" 17 | SlideShow.Transition.Slide="खिसकाएं" 18 | SlideShow.PlaybackBehavior="प्रदर्शन व्यवहार" 19 | SlideShow.PlaybackBehavior.StopRestart="दिखाई न देने पर रोकें, दिखाई देने पर पुनः प्रारंभ करें" 20 | SlideShow.PlaybackBehavior.PauseUnpause="दिखाई न देने पर ठहरें, दिखाई देने पर पुनः चलाएं" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="दिखाई न देने पर भी हमेशा चलाएं" 22 | SlideShow.SlideMode="स्लाइड मोड" 23 | SlideShow.SlideMode.Auto="स्वचालित" 24 | SlideShow.SlideMode.Manual="हस्तचालित (स्लाइड शो को नियंत्रित करने के लिए सक्रिय कुँजी का उपयोग करें)" 25 | SlideShow.PlayPause="चलाएं/ठहरें" 26 | SlideShow.Restart="पुनः आरंभ करें" 27 | SlideShow.Stop="रोकें" 28 | SlideShow.NextSlide="अगली स्लाइड" 29 | SlideShow.PreviousSlide="पिछली स्लाइड" 30 | SlideShow.HideWhenDone="स्लाइड शो हो जाने पर छुपाएं" 31 | ColorSource="रंग स्रोत" 32 | ColorSource.Color="रंग" 33 | ColorSource.Width="चौड़ाई" 34 | ColorSource.Height="ऊँचाई" 35 | -------------------------------------------------------------------------------- /locale/hr-HR.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Slika" 2 | File="Datoteka slike" 3 | UnloadWhenNotShowing="Ukloni sliku iz memorije kada se ne prikazuje" 4 | LinearAlpha="Primijeni alfa kanal u linearnom prostoru" 5 | SlideShow="Slideshow" 6 | SlideShow.TransitionSpeed="Brzina prijelaza" 7 | SlideShow.SlideTime="Vrijeme između slajdova" 8 | SlideShow.Files="Slike" 9 | SlideShow.CustomSize="Omjer zaslona" 10 | SlideShow.CustomSize.Auto="Automatski" 11 | SlideShow.Randomize="Izmiješaj redoslijed" 12 | SlideShow.Loop="Ponavljaj" 13 | SlideShow.Transition="Prijelaz" 14 | SlideShow.Transition.Cut="Rez" 15 | SlideShow.Transition.Fade="Postupno" 16 | SlideShow.Transition.Swipe="Listanje" 17 | SlideShow.Transition.Slide="Klizanje" 18 | SlideShow.PlaybackBehavior="Ponašanje vidljivosti" 19 | SlideShow.PlaybackBehavior.StopRestart="Zaustavi kada se ne vidi, ponovo pokreni kada se opet vidi" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Pauziraj kada se ne vidi, nastavi kada se opet vidi" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Reproduciraj i dok se ne vidi" 22 | SlideShow.SlideMode="Način upravljanja" 23 | SlideShow.SlideMode.Auto="Automatski" 24 | SlideShow.SlideMode.Manual="Ručno (kontrola tipkovničkim prečacima)" 25 | SlideShow.PlayPause="Pokreni/Pauziraj" 26 | SlideShow.Restart="Ponovno pokreni" 27 | SlideShow.Stop="Zaustavi" 28 | SlideShow.NextSlide="Idući slajd" 29 | SlideShow.PreviousSlide="Prethodni slajd" 30 | SlideShow.HideWhenDone="Sakrij kada slideshow završi" 31 | ColorSource="Čista boja" 32 | ColorSource.Color="Boja" 33 | ColorSource.Width="Širina" 34 | ColorSource.Height="Visina" 35 | -------------------------------------------------------------------------------- /locale/hu-HU.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Kép" 2 | File="Képfájl" 3 | UnloadWhenNotShowing="Kép kitöltése mikor nem jelenik meg" 4 | LinearAlpha="Alfa alkalmazása lineáris térben" 5 | SlideShow="Képvetítő" 6 | SlideShow.TransitionSpeed="Átmenet sebessége" 7 | SlideShow.SlideTime="A diák közötti idő" 8 | SlideShow.Files="Képfájlok" 9 | SlideShow.CustomSize="Befoglaló méret/Képarány" 10 | SlideShow.CustomSize.Auto="Automatikus" 11 | SlideShow.Randomize="Véletlenszerű lejátszás" 12 | SlideShow.Loop="Ismétlés" 13 | SlideShow.Transition="Átmenet" 14 | SlideShow.Transition.Cut="Kivágás" 15 | SlideShow.Transition.Fade="Áttűnés" 16 | SlideShow.Transition.Swipe="Lapozás" 17 | SlideShow.Transition.Slide="Csúsztatás" 18 | SlideShow.PlaybackBehavior="Láthatósági opció" 19 | SlideShow.PlaybackBehavior.StopRestart="Leállítás, ha nem látható, újraindul, ha látható" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Szüneteltet, ha nem látható, folytatás, ha látható" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Mindig lejátsza, akkor is, ha nem látható" 22 | SlideShow.SlideMode="Csúsztatás mód" 23 | SlideShow.SlideMode.Auto="Automatikus" 24 | SlideShow.SlideMode.Manual="Kézi (Billentyűket használjon az irányításhoz)" 25 | SlideShow.PlayPause="Lejátszás/Szünet" 26 | SlideShow.Restart="Újraindítás" 27 | SlideShow.Stop="Leállítás" 28 | SlideShow.NextSlide="Következő dia" 29 | SlideShow.PreviousSlide="Előző dia" 30 | SlideShow.HideWhenDone="Elrejtés a diavetítés végén" 31 | ColorSource="Színforrás" 32 | ColorSource.Color="Szín" 33 | ColorSource.Width="Szélesség" 34 | ColorSource.Height="Magasság" 35 | -------------------------------------------------------------------------------- /locale/hy-AM.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Պատկեր" 2 | File="Պատկերի ֆայլը" 3 | UnloadWhenNotShowing="Վերբեռնել պատկերներ, որոնք չեն ցուցադրվում" 4 | LinearAlpha="Կիրառել ալֆա ալիքը գծային տարածության մեջ" 5 | SlideShow="Սլայդ շոու" 6 | SlideShow.TransitionSpeed="Անցումային արագություն" 7 | SlideShow.SlideTime="Ժամանակը սլայդների միջև" 8 | SlideShow.Files="Պատկերի ֆայլերը" 9 | SlideShow.CustomSize="Չափի սահմանաչափ/տեսակետային հարաբերակցություն" 10 | SlideShow.CustomSize.Auto="Ավտոմատ" 11 | SlideShow.Randomize="Պատահական վերարտադրություն" 12 | SlideShow.Loop="Պտտում" 13 | SlideShow.Transition="Անցում" 14 | SlideShow.Transition.Cut="Կտրել" 15 | SlideShow.Transition.Fade="Թուլացնել" 16 | SlideShow.Transition.Swipe="Շարժվել" 17 | SlideShow.Transition.Slide="Հերթափոխ" 18 | SlideShow.PlaybackBehavior="Տեսանելիության վարքագիծ" 19 | SlideShow.PlaybackBehavior.StopRestart="Դադարեցրել, երբ տեսանելի չէ, վերագործարկել, երբ տեսանելի է" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Դադարեցնել, երբ տեսանելի չէ, դադարեցնել, երբ տեսանելի է" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Միշտ խաղացեք, նույնիսկ երբ տեսանելի չէ" 22 | SlideShow.SlideMode="Շրջել ռեժիմը" 23 | SlideShow.SlideMode.Auto="Ավտոմատ" 24 | SlideShow.SlideMode.Manual="Ձեռնարկ (օգտագործեք թեժ ստեղներ՝ սլայդերի ցուցադրումը կառավարելու համար)" 25 | SlideShow.PlayPause="Նվագարկել/Դադար" 26 | SlideShow.Restart="Վերսկսել" 27 | SlideShow.Stop="Կանգ Առնել" 28 | SlideShow.NextSlide="Հաջորդ սլայդը" 29 | SlideShow.PreviousSlide="Նախորդ սլայդը" 30 | SlideShow.HideWhenDone="Թաքցնել, երբ ավարտվի սլայդ շոուն" 31 | ColorSource="Ֆոնի գույնը" 32 | ColorSource.Color="Գույն" 33 | ColorSource.Width="Լայնություն" 34 | ColorSource.Height="Բարձրություն" 35 | -------------------------------------------------------------------------------- /locale/id-ID.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Gambar" 2 | File="Berkas Gambar" 3 | UnloadWhenNotShowing="Lepas muatkan gambar ketika tidak ditampilkan" 4 | LinearAlpha="Terapkan alfa dalam ruang linear" 5 | SlideShow="Slide Show Gambar" 6 | SlideShow.TransitionSpeed="Kecepatan Transisi" 7 | SlideShow.SlideTime="Waktu Antara Slide" 8 | SlideShow.Files="Berkas Gambar" 9 | SlideShow.CustomSize="Ukuran Pembatas/Rasio Aspek" 10 | SlideShow.CustomSize.Auto="Otomatis" 11 | SlideShow.Randomize="Mengacak Pemutaran" 12 | SlideShow.Loop="Ulangi" 13 | SlideShow.Transition="Transisi" 14 | SlideShow.Transition.Cut="Potong" 15 | SlideShow.Transition.Fade="Pudar" 16 | SlideShow.Transition.Swipe="Usap" 17 | SlideShow.Transition.Slide="Geser" 18 | SlideShow.PlaybackBehavior="Perilaku Visibilitas" 19 | SlideShow.PlaybackBehavior.StopRestart="Berhenti ketika tidak terlihat, ulangi saat terlihat" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Jeda ketika tidak terlihat, lanjutkan saat terlihat" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Putar terus meskipun tidak terlihat" 22 | SlideShow.SlideMode="Mode Slide" 23 | SlideShow.SlideMode.Auto="Otomatis" 24 | SlideShow.SlideMode.Manual="Manual (Gunakan pintasan untuk mengontrol slideshow)" 25 | SlideShow.PlayPause="Putar/Jeda" 26 | SlideShow.Restart="Ulangi" 27 | SlideShow.Stop="Berhenti" 28 | SlideShow.NextSlide="Slide Berikutnya" 29 | SlideShow.PreviousSlide="Slide Sebelumnya" 30 | SlideShow.HideWhenDone="Sembunyikan ketika slideshow sudah selesai" 31 | ColorSource="Sumber Warna" 32 | ColorSource.Color="Warna" 33 | ColorSource.Width="Lebar" 34 | ColorSource.Height="Tinggi" 35 | -------------------------------------------------------------------------------- /locale/it-IT.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Immagine" 2 | File="File immagine" 3 | UnloadWhenNotShowing="Disattiva l'immagine quando non è visibile" 4 | LinearAlpha="Applica alfa nello spazio lineare" 5 | SlideShow="Presentazione di immagini" 6 | SlideShow.TransitionSpeed="Velocità transizione" 7 | SlideShow.SlideTime="Tempo tra diapositive" 8 | SlideShow.Files="File di immagini" 9 | SlideShow.CustomSize="Dimensioni/proporzioni" 10 | SlideShow.CustomSize.Auto="Automatiche" 11 | SlideShow.Randomize="Riproduzione casuale" 12 | SlideShow.Transition="Transizione" 13 | SlideShow.Transition.Cut="Taglio" 14 | SlideShow.Transition.Fade="Dissolvenza" 15 | SlideShow.Transition.Swipe="Scorri" 16 | SlideShow.Transition.Slide="Scivola" 17 | SlideShow.PlaybackBehavior="Comportamento visibilità" 18 | SlideShow.PlaybackBehavior.StopRestart="Interrompi quando non visibile, riavvia quando visibile" 19 | SlideShow.PlaybackBehavior.PauseUnpause="Pausa quando non visibile, riprendi quando visibile" 20 | SlideShow.PlaybackBehavior.AlwaysPlay="Continua sempre anche quando non visibile" 21 | SlideShow.SlideMode="Modalità Slide" 22 | SlideShow.SlideMode.Auto="Automatico" 23 | SlideShow.SlideMode.Manual="Manuale (usa i tasti di scelta rapida per controllare la presentazione)" 24 | SlideShow.PlayPause="Play/Pausa" 25 | SlideShow.Restart="Riavvia" 26 | SlideShow.NextSlide="Prossima Slide" 27 | SlideShow.PreviousSlide="Slide Precedente" 28 | SlideShow.HideWhenDone="Nascondi quando la presentazione è terminata" 29 | ColorSource="Fonte di colore" 30 | ColorSource.Color="Colore" 31 | ColorSource.Width="Larghezza" 32 | ColorSource.Height="Altezza" 33 | -------------------------------------------------------------------------------- /locale/ja-JP.ini: -------------------------------------------------------------------------------- 1 | ImageInput="画像" 2 | File="画像ファイル" 3 | UnloadWhenNotShowing="表示されていないときに画像を読み込まない" 4 | LinearAlpha="アルファ値を線形空間に適用する" 5 | SlideShow="画像スライドショー" 6 | SlideShow.TransitionSpeed="画面切替速度" 7 | SlideShow.SlideTime="スライド時間間隔" 8 | SlideShow.Files="画像ファイル" 9 | SlideShow.CustomSize="バウンディングサイズ/アスペクト比" 10 | SlideShow.CustomSize.Auto="自動" 11 | SlideShow.Randomize="ランダム再生" 12 | SlideShow.Loop="ループ (繰り返し)" 13 | SlideShow.Transition="トランジション" 14 | SlideShow.Transition.Cut="カット" 15 | SlideShow.Transition.Fade="フェード" 16 | SlideShow.Transition.Swipe="スワイプ" 17 | SlideShow.Transition.Slide="スライド" 18 | SlideShow.PlaybackBehavior="表示の動作" 19 | SlideShow.PlaybackBehavior.StopRestart="表示されていないときは停止し、表示時に再開する" 20 | SlideShow.PlaybackBehavior.PauseUnpause="表示されていないときに一時停止、表示時に一時停止を解除する" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="表示されていないときにも常に再生する" 22 | SlideShow.SlideMode="スライドモード" 23 | SlideShow.SlideMode.Auto="自動" 24 | SlideShow.SlideMode.Manual="手動 (ホットキーを使用してスライドショーを制御する)" 25 | SlideShow.PlayPause="再生/一時停止" 26 | SlideShow.Restart="再開" 27 | SlideShow.Stop="停止" 28 | SlideShow.NextSlide="次のスライド" 29 | SlideShow.PreviousSlide="前のスライド" 30 | SlideShow.HideWhenDone="スライドショーが終わったら非表示にする" 31 | ColorSource="色ソース" 32 | ColorSource.Color="色" 33 | ColorSource.Width="幅" 34 | ColorSource.Height="高さ" 35 | -------------------------------------------------------------------------------- /locale/ka-GE.ini: -------------------------------------------------------------------------------- 1 | ImageInput="სურათი" 2 | File="სურათის ფაილი" 3 | UnloadWhenNotShowing="სურათის ამოღება, როცა არ ჩანს" 4 | LinearAlpha="ალფა არხის ასახვა წრფივ სივრცეში" 5 | SlideShow="სლაიდშოუ" 6 | SlideShow.TransitionSpeed="გადასვლის სიჩქარე" 7 | SlideShow.SlideTime="შუალედი სლაიდებს შორის" 8 | SlideShow.Files="სურათების ფაილები" 9 | SlideShow.CustomSize="ჩარჩოს ზომა/გვერდების თანაფარდობა" 10 | SlideShow.CustomSize.Auto="ავტომატური" 11 | SlideShow.Randomize="შემთხვევითი შერჩევა" 12 | SlideShow.Loop="გამეორება" 13 | SlideShow.Transition="გადასვლები" 14 | SlideShow.Transition.Cut="მოჭრა" 15 | SlideShow.Transition.Fade="მილევა" 16 | SlideShow.Transition.Swipe="შენაცვლება" 17 | SlideShow.Transition.Slide="გადაწევა" 18 | SlideShow.PlaybackBehavior="ხილვადობის მიხედვით მოქმედება" 19 | SlideShow.PlaybackBehavior.StopRestart="შეწყდეს, როცა უხილავია, კვლავ გაეშვას, როცა ხილულია" 20 | SlideShow.PlaybackBehavior.PauseUnpause="შეჩერდეს, როცა უხილავია, განაგრძოს, როცა ხილულია" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="ყოველთვის გაეშვას ხილვადობის მიუხედავად" 22 | SlideShow.SlideMode="სლაიდების მართვა" 23 | SlideShow.SlideMode.Auto="ავტომატური" 24 | SlideShow.SlideMode.Manual="ხელით (ღილაკების გამოყენება სლაიდშოუს სამართავად)" 25 | SlideShow.PlayPause="გაშვება/შეჩერება" 26 | SlideShow.Restart="თავიდან გაშვება" 27 | SlideShow.Stop="შეწყვეტა" 28 | SlideShow.NextSlide="მომდევნო სლაიდი" 29 | SlideShow.PreviousSlide="წინა სლაიდი" 30 | SlideShow.HideWhenDone="დამალვა სლაიდშოუს დასრულებისას" 31 | ColorSource="ფონის ფერი" 32 | ColorSource.Color="ფერი" 33 | ColorSource.Width="სიგანე" 34 | ColorSource.Height="სიმაღლე" 35 | -------------------------------------------------------------------------------- /locale/kab-KAB.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Tugna" 2 | File="Afaylu n tugna" 3 | UnloadWhenNotShowing="Sefsex tugna ticki ur tettwabeqqeḍ ara" 4 | SlideShow="Askan n tmaccagin n tugna" 5 | SlideShow.Files="Ifuyla n tugna" 6 | SlideShow.CustomSize="Tiddi n ugrar/Assaɣ n tmeẓri" 7 | SlideShow.CustomSize.Auto="Awurman" 8 | SlideShow.Randomize="Taɣuri tagacurant" 9 | SlideShow.Loop="Tineddict" 10 | SlideShow.Transition="Asaka" 11 | SlideShow.Transition.Cut="Gzem" 12 | SlideShow.Transition.Fade="Tifsit" 13 | SlideShow.Transition.Swipe="Seḥluceg" 14 | SlideShow.Transition.Slide="Tamaccagt" 15 | SlideShow.PlaybackBehavior="Tikli n twalit" 16 | SlideShow.PlaybackBehavior.StopRestart="Ḥbes ticki ur yettban ara, ales asekker ticki yettban" 17 | SlideShow.PlaybackBehavior.PauseUnpause="Bedd ticki ur yettban ara, kemmel ticki yettban" 18 | SlideShow.PlaybackBehavior.AlwaysPlay="Ad itteddu yalas ɣas ma ur yettban ara" 19 | SlideShow.SlideMode="Askar n tmaccagt" 20 | SlideShow.SlideMode.Auto="Awurman" 21 | SlideShow.SlideMode.Manual="Awfusan (Seqdec inegzumen n unasiw akken ad tsenqdeḍ askan n tmaccagin)" 22 | SlideShow.PlayPause="Ɣer/Bedd" 23 | SlideShow.Restart="Ales asekker" 24 | SlideShow.Stop="Seḥbes" 25 | SlideShow.NextSlide="Tamaccagt tuḍfirt" 26 | SlideShow.PreviousSlide="Tamaccagt tuzwirt" 27 | SlideShow.HideWhenDone="Ffer mi ara ifak uskan n tmaccagin" 28 | ColorSource="Aɣbalu n yini" 29 | ColorSource.Color="Ini" 30 | ColorSource.Width="Tehri" 31 | ColorSource.Height="Tattayt" 32 | -------------------------------------------------------------------------------- /locale/kmr-TR.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Wêne" 2 | File="Pelê wêneyê" 3 | UnloadWhenNotShowing="Gava ku nayê xuyangkirin wêneyê bar neke" 4 | LinearAlpha="Di valahiya xêzikî ya alfa de bisepîne" 5 | SlideShow="Nîşandana wêneyan şemitok" 6 | SlideShow.TransitionSpeed="Lezbûna derbasbûnê" 7 | SlideShow.SlideTime="Dem di navbera slaytan de" 8 | SlideShow.Files="Pelên wêneyê" 9 | SlideShow.CustomSize="Mezinahiya çarçoveyê/rêjeya ferehî-bilindî" 10 | SlideShow.CustomSize.Auto="Bixweber" 11 | SlideShow.Randomize="Lêdaneke rasthatî" 12 | SlideShow.Loop="Bêdawî" 13 | SlideShow.Transition="Derbasbûn" 14 | SlideShow.Transition.Cut="Birrîn" 15 | SlideShow.Transition.Fade="Wendabûn" 16 | SlideShow.Transition.Swipe="Kişandin" 17 | SlideShow.Transition.Slide="Şemitandin" 18 | SlideShow.PlaybackBehavior="Tevgera xuyangbûnê" 19 | SlideShow.PlaybackBehavior.StopRestart="Gava ku neyê xuyangkirin rawestîne, gava ku xuya bibe ji nû ve dest pê bike" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Gava ku neyê xuyangkirin rawestîne, gava ku xuyang be jî ranewestîne" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Her dem gava ku neyê xuyangkirin jî lê de" 22 | SlideShow.SlideMode="Moda şemitok" 23 | SlideShow.SlideMode.Auto="Bixweber" 24 | SlideShow.SlideMode.Manual="Manûel (Ji bo kontrolkirina pêşandana slaytê bişkojka kurterê bi kar bîne)" 25 | SlideShow.PlayPause="Lê de/Rawestîne" 26 | SlideShow.Restart="Ji nû ve destpêkirin" 27 | SlideShow.Stop="Bi dawîkirin" 28 | SlideShow.NextSlide="Şemitoka pêş" 29 | SlideShow.PreviousSlide="Şemitoka paş" 30 | SlideShow.HideWhenDone="Gava pêşandana şemitokan diqede veşêre" 31 | ColorSource="Çavkaniya rengê" 32 | ColorSource.Color="Reng" 33 | ColorSource.Width="Pehnî" 34 | ColorSource.Height="Bilindî" 35 | -------------------------------------------------------------------------------- /locale/ko-KR.ini: -------------------------------------------------------------------------------- 1 | ImageInput="이미지" 2 | File="이미지 파일" 3 | UnloadWhenNotShowing="이미지가 표시되지 않을 경우 메모리에 불러오지 않기" 4 | LinearAlpha="선형 공간에 알파 값 적용하기" 5 | SlideShow="이미지 슬라이드 쇼" 6 | SlideShow.TransitionSpeed="전환 속도" 7 | SlideShow.SlideTime="슬라이드 간 시간" 8 | SlideShow.Files="이미지 파일" 9 | SlideShow.CustomSize="경계 크기/종횡 비율" 10 | SlideShow.CustomSize.Auto="자동" 11 | SlideShow.Randomize="무작위 재생" 12 | SlideShow.Loop="루프 반복" 13 | SlideShow.Transition="화면 전환 방식" 14 | SlideShow.Transition.Cut="자르기" 15 | SlideShow.Transition.Fade="서서히 사라지기" 16 | SlideShow.Transition.Swipe="밀어내기" 17 | SlideShow.Transition.Slide="슬라이드" 18 | SlideShow.PlaybackBehavior="표시 동작 설정" 19 | SlideShow.PlaybackBehavior.StopRestart="보이지 않을 때 중단, 보이면 재시작" 20 | SlideShow.PlaybackBehavior.PauseUnpause="보이지 않을 때 일시 정지, 보이면 일시 정지 해제" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="보이지 않아도 항상 재생" 22 | SlideShow.SlideMode="슬라이드 방식" 23 | SlideShow.SlideMode.Auto="자동" 24 | SlideShow.SlideMode.Manual="수동 (단축키로 슬라이드 쇼를 제어)" 25 | SlideShow.PlayPause="재생/일시 정지" 26 | SlideShow.Restart="재시작" 27 | SlideShow.Stop="중단" 28 | SlideShow.NextSlide="다음 슬라이드" 29 | SlideShow.PreviousSlide="이전 슬라이드" 30 | SlideShow.HideWhenDone="슬라이드 쇼가 끝나면 숨기기" 31 | ColorSource="색상 소스" 32 | ColorSource.Color="색상" 33 | ColorSource.Width="너비" 34 | ColorSource.Height="높이" 35 | -------------------------------------------------------------------------------- /locale/lo-LA.ini: -------------------------------------------------------------------------------- 1 | ImageInput="ຮູບພາບ" 2 | SlideShow.Loop="ວົນວຽນບໍ່ສິ້ນສຸດ" 3 | -------------------------------------------------------------------------------- /locale/lt-LT.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Nuotrauka" 2 | File="Nuotraukos failas" 3 | UnloadWhenNotShowing="Atsikratyti nuotrauka, kai ji nėra rodoma" 4 | LinearAlpha="Taikyti alfą linijinėje erdvėje" 5 | SlideShow="Nuotraukų vaizdavimas skaidrėmis" 6 | SlideShow.Files="Nuotraukų failai" 7 | SlideShow.CustomSize="Vaizdo Santykis" 8 | SlideShow.CustomSize.Auto="Automatiškas" 9 | SlideShow.Randomize="Atkurti Atsitiktinai" 10 | SlideShow.Loop="Kartoti" 11 | SlideShow.Transition="Perėjimas" 12 | SlideShow.Transition.Cut="Kirpimas" 13 | SlideShow.Transition.Fade="Išblukimas" 14 | SlideShow.Transition.Swipe="Perbraukimas" 15 | SlideShow.Transition.Slide="Slydimas" 16 | SlideShow.PlaybackBehavior="Matomumo Elgesys" 17 | SlideShow.PlaybackBehavior.StopRestart="Sustabdyti, kai nėra matoma ir perkrauti, kai matoma" 18 | SlideShow.PlaybackBehavior.PauseUnpause="Pristabdyti, kai nėra matoma ir tęsti, kai matoma" 19 | SlideShow.PlaybackBehavior.AlwaysPlay="Visada leisti, net kai skaidrės nematomos" 20 | SlideShow.SlideMode="Skaidrių Režimas" 21 | SlideShow.SlideMode.Auto="Automatinis" 22 | SlideShow.SlideMode.Manual="Rankinis (Naudokite nusistatytus mygtukus, kad kontroliuoti skaidres)" 23 | SlideShow.PlayPause="Paleisti/Sustabdyti" 24 | SlideShow.Restart="Paleisti iš naujo" 25 | SlideShow.Stop="Sustabdyti" 26 | SlideShow.NextSlide="Sekanti Skaidrė" 27 | SlideShow.PreviousSlide="Praėjusi Skaidrė" 28 | SlideShow.HideWhenDone="Paslėpti, kai skaidrės baigtos" 29 | ColorSource="Spalvos Šaltinis" 30 | ColorSource.Color="Spalva" 31 | ColorSource.Width="Plotis" 32 | ColorSource.Height="Aukštis" 33 | -------------------------------------------------------------------------------- /locale/mn-MN.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Зураг" 2 | SlideShow.CustomSize.Auto="Aвтомат" 3 | SlideShow.Randomize="Тоглуулагчыг түүвэрээр ажилууллах" 4 | SlideShow.Loop="Давталт" 5 | SlideShow.Transition="Шилжилт" 6 | SlideShow.Transition.Cut="Шууд" 7 | SlideShow.Transition.Fade="Алга болно" 8 | SlideShow.Transition.Swipe="Хажуунаас" 9 | SlideShow.Transition.Slide="Гулгаж" 10 | SlideShow.PlaybackBehavior="Харагдах байдал" 11 | SlideShow.PlaybackBehavior.StopRestart="Ил харагдахгүй бол зогсоох, харагдах үед дахин эхлүүлнэ" 12 | SlideShow.PlaybackBehavior.PauseUnpause="Ил харагдахгүй бол пауз авах, харагдах үед паузаа болих" 13 | SlideShow.PlaybackBehavior.AlwaysPlay="Ил харагдахгүй бол үргэлжлүүлэн тоглуулах" 14 | SlideShow.SlideMode.Auto="Aвтомат" 15 | SlideShow.PlayPause="Тоглуулах/Түр зогсоох" 16 | SlideShow.Stop="Зогсоох" 17 | ColorSource.Color="Өнгө" 18 | ColorSource.Width="Өргөн" 19 | ColorSource.Height="Өндөр" 20 | -------------------------------------------------------------------------------- /locale/ms-MY.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Imej" 2 | File="Fail Imej" 3 | UnloadWhenNotShowing="Nyah muat imej apabila tidak ditunjukkan" 4 | LinearAlpha="Tera[ alfa dalam ruang linear" 5 | SlideShow="Paparan Slaid Imej" 6 | SlideShow.TransitionSpeed="Kelajuan Peralihan" 7 | SlideShow.SlideTime="Masa Antara Slaid" 8 | SlideShow.Files="Fail Imej" 9 | SlideShow.CustomSize="Saiz Pembatas/Nisbah Bidang" 10 | SlideShow.CustomSize.Auto="Automatik" 11 | SlideShow.Randomize="Rawak Main balik" 12 | SlideShow.Loop="Gelung" 13 | SlideShow.Transition="Peralihan" 14 | SlideShow.Transition.Cut="Potong" 15 | SlideShow.Transition.Fade="Resap" 16 | SlideShow.Transition.Swipe="Sapu" 17 | SlideShow.Transition.Slide="Leret" 18 | SlideShow.PlaybackBehavior="Kelakuan Ketampakan" 19 | SlideShow.PlaybackBehavior.StopRestart="Henti apabila tidak kelihatan, mula semula bila kelihatan" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Jeda apabila tidak kelihatan, nyahjeda bila kelihatan" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Sentiasa main walaupun tidak kelihatan" 22 | SlideShow.SlideMode="Mod Slaid" 23 | SlideShow.SlideMode.Auto="Automatik" 24 | SlideShow.SlideMode.Manual="Manual (Guna kekunci panas untuk kawal paparan slaid)" 25 | SlideShow.PlayPause="Main/Jeda" 26 | SlideShow.Restart="Mula Semula" 27 | SlideShow.Stop="Henti" 28 | SlideShow.NextSlide="Slaid Berikutnya" 29 | SlideShow.PreviousSlide="Slaid Terdahulu" 30 | SlideShow.HideWhenDone="Sembunyi bila paparan slaid selesai" 31 | ColorSource="Sumber Warna" 32 | ColorSource.Color="Warna" 33 | ColorSource.Width="Lebar" 34 | ColorSource.Height="Tinggi" 35 | -------------------------------------------------------------------------------- /locale/nb-NO.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Bilde" 2 | File="Bildefil" 3 | UnloadWhenNotShowing="Avlast bilde når det ikke vises" 4 | LinearAlpha="Bruk lineær gjennomsiktighet (alpha)" 5 | SlideShow="Lysbildeframvisning" 6 | SlideShow.Files="Bildefiler" 7 | SlideShow.CustomSize="Markeringsboks/størrelsesforhold" 8 | SlideShow.CustomSize.Auto="Automatisk" 9 | SlideShow.Randomize="Tilfeldiggjør avspelling" 10 | SlideShow.Loop="Repeter" 11 | SlideShow.Transition="Overgang" 12 | SlideShow.Transition.Cut="Kutt" 13 | SlideShow.Transition.Fade="Forløpning" 14 | SlideShow.Transition.Swipe="Sveip" 15 | SlideShow.Transition.Slide="Skyv" 16 | SlideShow.PlaybackBehavior="Synlighetsvalg" 17 | SlideShow.PlaybackBehavior.StopRestart="Stopp når ikke synlig, spill fra starten når synlig" 18 | SlideShow.PlaybackBehavior.PauseUnpause="Stans når ikke synlig, spill når synlig" 19 | SlideShow.PlaybackBehavior.AlwaysPlay="Alltid spill, selv når ikke synlig" 20 | SlideShow.SlideMode="Lysbildemodus" 21 | SlideShow.SlideMode.Auto="Automatisk" 22 | SlideShow.SlideMode.Manual="Manuell (bruk hurtigtaster for å styre lysbildene)" 23 | SlideShow.PlayPause="Spill av/pause" 24 | SlideShow.Restart="Start på nytt" 25 | SlideShow.Stop="Stopp" 26 | SlideShow.NextSlide="Neste lysbilde" 27 | SlideShow.PreviousSlide="Forrige lysbilde" 28 | SlideShow.HideWhenDone="Skjul når lysbildefremvisning er ferdig" 29 | ColorSource="Fargekilde" 30 | ColorSource.Color="Farge" 31 | ColorSource.Width="Bredde" 32 | ColorSource.Height="Høyde" 33 | -------------------------------------------------------------------------------- /locale/nl-NL.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Afbeelding" 2 | File="Afbeeldingsbestand" 3 | UnloadWhenNotShowing="Niet getoonde afbeeldingen uit het geheugen verwijderen" 4 | LinearAlpha="Alpha toepassen in lineaire ruimte" 5 | SlideShow="Diashow" 6 | SlideShow.TransitionSpeed="Transitie Snelheid" 7 | SlideShow.SlideTime="Tijd tussen dia's" 8 | SlideShow.Files="Afbeeldingsbestanden" 9 | SlideShow.CustomSize="Rand grootte/Beeldverhouding" 10 | SlideShow.CustomSize.Auto="Automatisch" 11 | SlideShow.Randomize="Willekeurige Volgorde" 12 | SlideShow.Loop="Herhalen" 13 | SlideShow.Transition="Overgang" 14 | SlideShow.Transition.Cut="Knippen" 15 | SlideShow.Transition.Fade="Vervagen" 16 | SlideShow.Transition.Swipe="Vegen" 17 | SlideShow.PlaybackBehavior="Zichtbaarheidsgedrag" 18 | SlideShow.PlaybackBehavior.StopRestart="Stop wanneer niet zichtbaar, herstart wanneer wel zichtbaar" 19 | SlideShow.PlaybackBehavior.PauseUnpause="Pauzeer wanneer niet zichtbaar, hervat wanneer wel zichtbaar" 20 | SlideShow.PlaybackBehavior.AlwaysPlay="Altijd spelen, zelfs wanneer niet zichtbaar" 21 | SlideShow.SlideMode="Diamodus" 22 | SlideShow.SlideMode.Auto="Automatisch" 23 | SlideShow.SlideMode.Manual="Handmatig (gebruik sneltoetsen om diashow te bedienen)" 24 | SlideShow.PlayPause="Afspelen/pauzeren" 25 | SlideShow.Restart="Herstarten" 26 | SlideShow.NextSlide="Volgende dia" 27 | SlideShow.PreviousSlide="Vorige dia" 28 | SlideShow.HideWhenDone="Verbergen wanneer diashow afgelopen is" 29 | ColorSource="Kleurbron" 30 | ColorSource.Color="Kleur" 31 | ColorSource.Width="Breedte" 32 | ColorSource.Height="Hoogte" 33 | -------------------------------------------------------------------------------- /locale/nn-NO.ini: -------------------------------------------------------------------------------- 1 | SlideShow.PlayPause="Spel/Pause" 2 | SlideShow.Stop="Stopp" 3 | ColorSource="Fargekjelde" 4 | ColorSource.Color="Farge" 5 | ColorSource.Width="Breidde" 6 | ColorSource.Height="Høgde" 7 | -------------------------------------------------------------------------------- /locale/oc-FR.ini: -------------------------------------------------------------------------------- 1 | ColorSource.Width="Largor" 2 | ColorSource.Height="Nautor" 3 | -------------------------------------------------------------------------------- /locale/pa-IN.ini: -------------------------------------------------------------------------------- 1 | ImageInput="ਤਸਵੀਰ" 2 | -------------------------------------------------------------------------------- /locale/pl-PL.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Obraz" 2 | File="Plik obrazu" 3 | UnloadWhenNotShowing="Usuń obraz z pamięci, gdy nie jest pokazywany" 4 | LinearAlpha="Zastosuj alfa w przestrzeni liniowej" 5 | SlideShow="Pokaz slajdów" 6 | SlideShow.TransitionSpeed="Prędkość przejścia" 7 | SlideShow.SlideTime="Czas między slajdami" 8 | SlideShow.Files="Pliki graficzne" 9 | SlideShow.CustomSize="Ograniczenie rozmiaru/Proporcje" 10 | SlideShow.CustomSize.Auto="Automatycznie" 11 | SlideShow.Randomize="Odtwarzanie losowe" 12 | SlideShow.Loop="Pętla" 13 | SlideShow.Transition="Efekt przejścia" 14 | SlideShow.Transition.Cut="Cięcie" 15 | SlideShow.Transition.Fade="Zanikanie" 16 | SlideShow.Transition.Swipe="Przeciągnięcie" 17 | SlideShow.Transition.Slide="Przesunięcie" 18 | SlideShow.PlaybackBehavior="Zachowanie" 19 | SlideShow.PlaybackBehavior.StopRestart="Zatrzymaj, gdy niewidoczne. Odtwarzaj od początku, gdy widoczne." 20 | SlideShow.PlaybackBehavior.PauseUnpause="Wstrzymaj, gdy niewidoczne. Wznów, gdy widoczne." 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Odtwarzaj cały czas bez względu na widoczność." 22 | SlideShow.SlideMode="Tryb slajdu" 23 | SlideShow.SlideMode.Auto="Automatycznie" 24 | SlideShow.SlideMode.Manual="Ręcznie (użyj skrótów klawiszowych do kontroli slajdów)" 25 | SlideShow.PlayPause="Odtwarzaj/Wstrzymaj" 26 | SlideShow.Restart="Zrestartuj" 27 | SlideShow.Stop="Zatrzymaj" 28 | SlideShow.NextSlide="Następny slajd" 29 | SlideShow.PreviousSlide="Poprzedni slajd" 30 | SlideShow.HideWhenDone="Ukryj po zakończeniu slajdów" 31 | ColorSource="Kolor" 32 | ColorSource.Color="Kolor" 33 | ColorSource.Width="Szerokość" 34 | ColorSource.Height="Wysokość" 35 | -------------------------------------------------------------------------------- /locale/pt-BR.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Imagem" 2 | File="Arquivo de imagem" 3 | UnloadWhenNotShowing="Descarregar imagem quando não estiver em exibição" 4 | LinearAlpha="Aplicar alfa no espaço linear" 5 | SlideShow="Apresentação de imagens" 6 | SlideShow.TransitionSpeed="Velocidade de Transição" 7 | SlideShow.SlideTime="Tempo Entre Slides" 8 | SlideShow.Files="Arquivos de imagem" 9 | SlideShow.CustomSize="Tamanho da tela e proporção" 10 | SlideShow.CustomSize.Auto="Automático" 11 | SlideShow.Randomize="Reprodução aleatória" 12 | SlideShow.Transition="Transição" 13 | SlideShow.Transition.Cut="Corte" 14 | SlideShow.Transition.Fade="Esmaecer" 15 | SlideShow.Transition.Swipe="Arrastar" 16 | SlideShow.Transition.Slide="Deslizar" 17 | SlideShow.PlaybackBehavior="Comportamento de visibilidade" 18 | SlideShow.PlaybackBehavior.StopRestart="Parar quando não visível, reiniciar quando visível" 19 | SlideShow.PlaybackBehavior.PauseUnpause="Pausar quando não visível, resumir quando visível" 20 | SlideShow.PlaybackBehavior.AlwaysPlay="Sempre reproduzir, mesmo quando não visível" 21 | SlideShow.SlideMode="Modo de slide" 22 | SlideShow.SlideMode.Auto="Automático" 23 | SlideShow.SlideMode.Manual="Manual (usar as teclas de atalho para controlar a apresentação)" 24 | SlideShow.PlayPause="Reproduzir/pausar" 25 | SlideShow.Restart="Reiniciar" 26 | SlideShow.Stop="Parar" 27 | SlideShow.NextSlide="Próximo slide" 28 | SlideShow.PreviousSlide="Slide anterior" 29 | SlideShow.HideWhenDone="Esconder quando terminar a apresentação" 30 | ColorSource="Fonte de cor" 31 | ColorSource.Color="Cor" 32 | ColorSource.Width="Largura" 33 | ColorSource.Height="Altura" 34 | -------------------------------------------------------------------------------- /locale/pt-PT.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Imagem" 2 | File="Ficheiro de imagem" 3 | UnloadWhenNotShowing="Descarregar imagem quando invisível" 4 | LinearAlpha="Aplicar alfa no espaço linear" 5 | SlideShow="Imagens em diaporama" 6 | SlideShow.TransitionSpeed="Velocidade da transição" 7 | SlideShow.SlideTime="Tempo entre slides" 8 | SlideShow.Files="Ficheiros de imagem" 9 | SlideShow.CustomSize="Tamanho do ecrã e proporção" 10 | SlideShow.CustomSize.Auto="Automático" 11 | SlideShow.Randomize="Reprodução aleatória" 12 | SlideShow.Loop="Repetir" 13 | SlideShow.Transition="Transição" 14 | SlideShow.Transition.Cut="Cortar" 15 | SlideShow.Transition.Fade="Desvanecer" 16 | SlideShow.Transition.Swipe="Varrer" 17 | SlideShow.Transition.Slide="Deslizar" 18 | SlideShow.PlaybackBehavior="Comportamento de visibilidade" 19 | SlideShow.PlaybackBehavior.StopRestart="Parar quando invisível, reiniciar quando visível" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Pausar quando invisível, retomar quando visível" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Reproduzir sempre, mesmo quando invisível" 22 | SlideShow.SlideMode="Modo de diapositivo" 23 | SlideShow.SlideMode.Auto="Automático" 24 | SlideShow.SlideMode.Manual="Manual (usar atalhos para controlar o diaporama)" 25 | SlideShow.PlayPause="Reproduzir/Pausar" 26 | SlideShow.Restart="Recomeçar" 27 | SlideShow.Stop="Parar" 28 | SlideShow.NextSlide="Diapositivo seguinte" 29 | SlideShow.PreviousSlide="Diapositivo anterior" 30 | SlideShow.HideWhenDone="Ocultar quando o diaporama terminar" 31 | ColorSource="Fonte de cor" 32 | ColorSource.Color="Cor" 33 | ColorSource.Width="Largura" 34 | ColorSource.Height="Altura" 35 | -------------------------------------------------------------------------------- /locale/ro-RO.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Imagine" 2 | File="Fișier imagine" 3 | UnloadWhenNotShowing="Eliberează din memorie imaginea când nu este afișată" 4 | LinearAlpha="Aplică alfa în spațiul liniar" 5 | SlideShow="Diaporamă" 6 | SlideShow.TransitionSpeed="Viteză de tranziție" 7 | SlideShow.SlideTime="Timp între diapozitive" 8 | SlideShow.Files="Fișiere de imagini" 9 | SlideShow.CustomSize="Dimensiunea încadrării/Raport de aspect" 10 | SlideShow.CustomSize.Auto="Automat(ă)" 11 | SlideShow.Randomize="Pune redarea într-o ordine aleatoare" 12 | SlideShow.Loop="Redă în buclă" 13 | SlideShow.Transition="Tranziție" 14 | SlideShow.Transition.Cut="Decupare" 15 | SlideShow.Transition.Fade="Estompare" 16 | SlideShow.Transition.Swipe="Glisare" 17 | SlideShow.Transition.Slide="Culisare" 18 | SlideShow.PlaybackBehavior="Comportamentul vizibilității" 19 | SlideShow.PlaybackBehavior.StopRestart="Oprește când sursa nu este vizibilă, repornește când este vizibilă" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Pune pe pauză când sursa nu e vizibilă, scoate de pe pauză când e vizibilă" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Redă întotdeauna chiar și atunci când sursa nu este vizibilă" 22 | SlideShow.SlideMode="Mod de culisare" 23 | SlideShow.SlideMode.Auto="Automat" 24 | SlideShow.SlideMode.Manual="Manual (Folosește tastele rapide pentru a controla diaporama)" 25 | SlideShow.PlayPause="Redă/Pune pe pauză" 26 | SlideShow.Restart="Repornește" 27 | SlideShow.Stop="Oprește" 28 | SlideShow.NextSlide="Diapozitivul următor" 29 | SlideShow.PreviousSlide="Diapozitivul anterior" 30 | SlideShow.HideWhenDone="Ascunde când diaporama este terminată" 31 | ColorSource="Sursă de culoare" 32 | ColorSource.Color="Culoare" 33 | ColorSource.Width="Lățime" 34 | ColorSource.Height="Înălțime" 35 | -------------------------------------------------------------------------------- /locale/ru-RU.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Изображение" 2 | File="Файл изображения" 3 | UnloadWhenNotShowing="Выгружать изображения, которые не показываются" 4 | LinearAlpha="Применить альфа канал в линейном пространстве" 5 | SlideShow="Слайд-шоу" 6 | SlideShow.TransitionSpeed="Скорость перехода" 7 | SlideShow.SlideTime="Время между слайдами" 8 | SlideShow.Files="Файлы изображений" 9 | SlideShow.CustomSize="Ограничение размера/Соотношение сторон" 10 | SlideShow.CustomSize.Auto="Автоматически" 11 | SlideShow.Randomize="Случайное воспроизведение" 12 | SlideShow.Loop="Повтор" 13 | SlideShow.Transition="Переход" 14 | SlideShow.Transition.Cut="Обрезать" 15 | SlideShow.Transition.Fade="Затухание" 16 | SlideShow.Transition.Swipe="Перемещение" 17 | SlideShow.Transition.Slide="Сдвиг" 18 | SlideShow.PlaybackBehavior="Поведение видимости" 19 | SlideShow.PlaybackBehavior.StopRestart="Всегда воспроизводить, даже если не видимый" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Приостановить если не видимый, возобновить если видимый" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Всегда проигрывать, даже если не видимый" 22 | SlideShow.SlideMode="Режим перелистывания" 23 | SlideShow.SlideMode.Auto="Автоматический" 24 | SlideShow.SlideMode.Manual="Ручной (Используйте горячие клавиши для управления слайд-шоу)" 25 | SlideShow.PlayPause="Воспроизвести/Пауза" 26 | SlideShow.Restart="Перезапустить" 27 | SlideShow.Stop="Остановить" 28 | SlideShow.NextSlide="Следующий слайд" 29 | SlideShow.PreviousSlide="Предыдущий слайд" 30 | SlideShow.HideWhenDone="Скрыть по завершении слайд-шоу" 31 | ColorSource="Фоновый цвет" 32 | ColorSource.Color="Цвет" 33 | ColorSource.Width="Ширина" 34 | ColorSource.Height="Высота" 35 | -------------------------------------------------------------------------------- /locale/si-LK.ini: -------------------------------------------------------------------------------- 1 | ImageInput="රූපය" 2 | File="රූපයේ ගොනුව" 3 | SlideShow.Files="රූප ගොනු" 4 | SlideShow.CustomSize.Auto="ස්වයංක්‍රීය" 5 | SlideShow.Transition.Cut="කපන්න" 6 | SlideShow.SlideMode="චිත්‍රකාච ආකාරය" 7 | SlideShow.SlideMode.Auto="ස්වයංක්‍රීය" 8 | SlideShow.PlayPause="වාදනය/විරාමය" 9 | SlideShow.Restart="නැවත අරඹන්න" 10 | SlideShow.Stop="නවත්වන්න" 11 | SlideShow.NextSlide="ඊළඟ චිත්‍රකාචය" 12 | SlideShow.PreviousSlide="කලින් චිත්‍රකාචය" 13 | ColorSource="වර්ණ මූලාශ්‍රය" 14 | ColorSource.Color="වර්ණය" 15 | ColorSource.Width="පළල" 16 | ColorSource.Height="උස" 17 | -------------------------------------------------------------------------------- /locale/sk-SK.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Obrázok" 2 | File="Súbor s obrázkom" 3 | UnloadWhenNotShowing="Uvoľniť obrázok, ak nie je zobrazený" 4 | LinearAlpha="Použiť alfa kanál v lineárnom priestore" 5 | SlideShow="Prezentácia obrázkov" 6 | SlideShow.TransitionSpeed="Rýchlosť prechodu" 7 | SlideShow.SlideTime="Čas medzi snímkami" 8 | SlideShow.Files="Obrázky" 9 | SlideShow.CustomSize="Veľkosť/pomer strán" 10 | SlideShow.CustomSize.Auto="Automatické" 11 | SlideShow.Randomize="Náhodné prehrávanie" 12 | SlideShow.Loop="Slučka" 13 | SlideShow.Transition="Prechod" 14 | SlideShow.Transition.Cut="Strih" 15 | SlideShow.Transition.Fade="Miznutie" 16 | SlideShow.Transition.Swipe="Potiahnite" 17 | SlideShow.Transition.Slide="Posunutie" 18 | SlideShow.PlaybackBehavior="Fungovanie podľa viditeľnosti" 19 | SlideShow.PlaybackBehavior.StopRestart="Zastaviť, keď nie je viditeľná, reštartovať, keď je viditeľná" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Pozastaviť, keď nie je viditeľná, zrušiť pozastavenie, keď je viditeľná" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Vždy prehrávať, aj keď nie je viditeľná" 22 | SlideShow.SlideMode="Ovládanie prezentácie" 23 | SlideShow.SlideMode.Auto="Automatické" 24 | SlideShow.SlideMode.Manual="Manuálne (použite klávesy na ovládanie prezentácie)" 25 | SlideShow.PlayPause="Prehrať/Pozastaviť" 26 | SlideShow.Restart="Reštartovať" 27 | SlideShow.Stop="Zastaviť" 28 | SlideShow.NextSlide="Ďalšia snímka" 29 | SlideShow.PreviousSlide="Predchádzajúca snímka" 30 | SlideShow.HideWhenDone="Skryť, keď prezentácia skončí" 31 | ColorSource="Farba" 32 | ColorSource.Color="Farba" 33 | ColorSource.Width="Šírka" 34 | ColorSource.Height="Výška" 35 | -------------------------------------------------------------------------------- /locale/sl-SI.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Slika" 2 | File="Slikovna datoteka" 3 | UnloadWhenNotShowing="Razloži sliko, ko ni prikazana" 4 | LinearAlpha="Uporabi alfo v linearnem prostoru" 5 | SlideShow="Slikovna predstavitev" 6 | SlideShow.TransitionSpeed="Hitrost prehoda" 7 | SlideShow.SlideTime="Čas med prosojnicama" 8 | SlideShow.Files="Slikovne datoteke" 9 | SlideShow.CustomSize="Omejitev velikost/Razmerje" 10 | SlideShow.CustomSize.Auto="Samodejno" 11 | SlideShow.Randomize="Naključno predvajanje" 12 | SlideShow.Loop="Ponavljaj" 13 | SlideShow.Transition="Prehod" 14 | SlideShow.Transition.Cut="Izreži" 15 | SlideShow.Transition.Fade="Pojemaj" 16 | SlideShow.Transition.Swipe="Potegni" 17 | SlideShow.Transition.Slide="Podrsaj" 18 | SlideShow.PlaybackBehavior="Vedenje vidnosti" 19 | SlideShow.PlaybackBehavior.StopRestart="Ustavi, ko ni vidno; ponovno zaženi, ko je vidno" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Premor, ko ni vidno; nadaljuj, ko je vidno" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Vedno predvajaj, ko ni vidno" 22 | SlideShow.SlideMode="Način predstavitve" 23 | SlideShow.SlideMode.Auto="Samodejno" 24 | SlideShow.SlideMode.Manual="Ročno (uporabi hitre tipke na nadzor predstavitve)" 25 | SlideShow.PlayPause="Predvajaj/Premor" 26 | SlideShow.Restart="Ponovno zaženi" 27 | SlideShow.Stop="Ustavi" 28 | SlideShow.NextSlide="Naslednja slika" 29 | SlideShow.PreviousSlide="Prejšnja slika" 30 | SlideShow.HideWhenDone="Skrij, ko je predstavitev končana" 31 | ColorSource="Barvni vir" 32 | ColorSource.Color="Barva" 33 | ColorSource.Width="Širina" 34 | ColorSource.Height="Višina" 35 | -------------------------------------------------------------------------------- /locale/sr-CS.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Slika" 2 | File="Datoteka slike" 3 | UnloadWhenNotShowing="Ukloni sliku iz memorije kada se ne prikazuje" 4 | SlideShow="Prikazivanje slajdova" 5 | SlideShow.Files="Datoteke slika" 6 | SlideShow.CustomSize="Veličina/proporcija" 7 | SlideShow.CustomSize.Auto="Automatska" 8 | SlideShow.Randomize="Nasumična reprodukcija" 9 | SlideShow.Loop="Ponavljaj" 10 | SlideShow.Transition="Prelaz" 11 | SlideShow.Transition.Cut="Isecanje" 12 | SlideShow.Transition.Fade="Zatamnjenje" 13 | SlideShow.Transition.Swipe="Prevlačenje" 14 | SlideShow.Transition.Slide="Klizanje" 15 | SlideShow.PlaybackBehavior="Funkcionisanje u zavisnosti od vidljivosti" 16 | SlideShow.PlaybackBehavior.StopRestart="Zaustavi kada nije vidljiv, počni ispočetka kada je vidljiv" 17 | SlideShow.PlaybackBehavior.PauseUnpause="Pauziraj kada nije vidljiv, nastavi kada postane vidljiv" 18 | SlideShow.PlaybackBehavior.AlwaysPlay="Uvek emituj, čak i kada nije vidljiv" 19 | SlideShow.SlideMode="Slajd režim" 20 | SlideShow.SlideMode.Auto="Automatski" 21 | SlideShow.SlideMode.Manual="Ručni (Koristite prečice na tastaturi da kontrolišete prezentaciju)" 22 | SlideShow.PlayPause="Pusti/Pauziraj" 23 | SlideShow.Restart="Počni ispočetka" 24 | SlideShow.Stop="Zaustavi" 25 | SlideShow.NextSlide="Sledeći slajd" 26 | SlideShow.PreviousSlide="Prethodni slajd" 27 | SlideShow.HideWhenDone="Sakrij kada se prezentacija završi" 28 | ColorSource="Izvor boje" 29 | ColorSource.Color="Boja" 30 | ColorSource.Width="Širina" 31 | ColorSource.Height="Visina" 32 | -------------------------------------------------------------------------------- /locale/sr-SP.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Слика" 2 | File="Датотека слике" 3 | UnloadWhenNotShowing="Уклони слику из меморије када се не приказује" 4 | SlideShow="Приказивање слајдова" 5 | SlideShow.Files="Датотеке слика" 6 | SlideShow.CustomSize="Величина/пропорција" 7 | SlideShow.CustomSize.Auto="Аутоматска" 8 | SlideShow.Randomize="Насумична репродукција" 9 | SlideShow.Loop="Понављај" 10 | SlideShow.Transition="Прелаз" 11 | SlideShow.Transition.Cut="Исецање" 12 | SlideShow.Transition.Fade="Затамњење" 13 | SlideShow.Transition.Swipe="Превлачење" 14 | SlideShow.Transition.Slide="Клизање" 15 | SlideShow.PlaybackBehavior="Функционисање у зависности од видљивости" 16 | SlideShow.PlaybackBehavior.StopRestart="Заустави када није видљив, почни испочетка када је видљив" 17 | SlideShow.PlaybackBehavior.PauseUnpause="Паузирај када није видљив, настави када постане видљив" 18 | SlideShow.PlaybackBehavior.AlwaysPlay="Увек емитуј, чак и када није видљив" 19 | SlideShow.SlideMode="Слајд режим" 20 | SlideShow.SlideMode.Auto="Аутоматски" 21 | SlideShow.SlideMode.Manual="Ручни (користите пречице на тастатури да контролишете презентацију)" 22 | SlideShow.PlayPause="Пусти/Паузирај" 23 | SlideShow.Restart="Почни испочетка" 24 | SlideShow.Stop="Заустави" 25 | SlideShow.NextSlide="Следећи слајд" 26 | SlideShow.PreviousSlide="Претходни слајд" 27 | SlideShow.HideWhenDone="Сакриј када се презентација заврши" 28 | ColorSource="Извор боје" 29 | ColorSource.Color="Боја" 30 | ColorSource.Width="Ширина" 31 | ColorSource.Height="Висина" 32 | -------------------------------------------------------------------------------- /locale/sv-SE.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Bild" 2 | File="Bildfil" 3 | UnloadWhenNotShowing="Ta bort bild när den inte visas" 4 | LinearAlpha="Tillämpa alfakanal i linjärt utrymme" 5 | SlideShow="Bildspel" 6 | SlideShow.TransitionSpeed="Övergångshastighet" 7 | SlideShow.SlideTime="Tid mellan bilder" 8 | SlideShow.Files="Bildfiler" 9 | SlideShow.CustomSize="Avgränsningsstorlek/bildformat" 10 | SlideShow.CustomSize.Auto="Automatisk" 11 | SlideShow.Randomize="Slumpa uppspelning" 12 | SlideShow.Loop="Upprepa" 13 | SlideShow.Transition="Övergång" 14 | SlideShow.Transition.Cut="Klipp" 15 | SlideShow.Transition.Fade="Tona" 16 | SlideShow.Transition.Swipe="Svep" 17 | SlideShow.Transition.Slide="Glid" 18 | SlideShow.PlaybackBehavior="Synlighetsbeteende" 19 | SlideShow.PlaybackBehavior.StopRestart="Stoppa när den inte syns, starta om när den syns" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Pausa när den inte syns, återuppta när den syns" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Spela alltid även när den inte syns" 22 | SlideShow.SlideMode="Bildspelsläge" 23 | SlideShow.SlideMode.Auto="Automatisk" 24 | SlideShow.SlideMode.Manual="Manuellt (använd kortkommandon för att styra bildspelet)" 25 | SlideShow.PlayPause="Spela/Pausa" 26 | SlideShow.Restart="Starta om" 27 | SlideShow.Stop="Stoppa" 28 | SlideShow.NextSlide="Nästa bild" 29 | SlideShow.PreviousSlide="Föregående bild" 30 | SlideShow.HideWhenDone="Dölj när bildspelet är färdigt" 31 | ColorSource="Färgkälla" 32 | ColorSource.Color="Färg" 33 | ColorSource.Width="Bredd" 34 | ColorSource.Height="Höjd" 35 | -------------------------------------------------------------------------------- /locale/ta-IN.ini: -------------------------------------------------------------------------------- 1 | ImageInput="புகைப்படம்" 2 | File="புகைப்பட கோப்பு" 3 | SlideShow="புகைப்பட சறுக்குக் காட்சி" 4 | SlideShow.Files="புகைப்பட கோப்புகள்" 5 | SlideShow.CustomSize.Auto="தானியங்கி" 6 | SlideShow.Transition.Cut="வெட்டு" 7 | SlideShow.SlideMode.Auto="தானியங்கு" 8 | SlideShow.PlayPause="இயக்கு/இடைநிறுத்து" 9 | SlideShow.Stop="நிறுத்து" 10 | SlideShow.NextSlide="அடுத்த ஸ்லைடு" 11 | SlideShow.PreviousSlide="முந்தைய ஸ்லைடு" 12 | SlideShow.HideWhenDone="ஸ்லைடு காட்சி முடிந்தப்பின் மறை" 13 | ColorSource.Color="வண்ணம்" 14 | ColorSource.Width="அகலம்" 15 | ColorSource.Height="உயரம்" 16 | -------------------------------------------------------------------------------- /locale/th-TH.ini: -------------------------------------------------------------------------------- 1 | ImageInput="รูปภาพ" 2 | File="ไฟล์รูปภาพ" 3 | SlideShow.NextSlide="สไลด์ถัดไป" 4 | SlideShow.PreviousSlide="สไลด์ก่อนหน้า" 5 | ColorSource.Color="สี" 6 | ColorSource.Width="ความกว้าง" 7 | ColorSource.Height="ความสูง" 8 | -------------------------------------------------------------------------------- /locale/tl-PH.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Imahe" 2 | File="Imahe ng File" 3 | UnloadWhenNotShowing="Mag-ibis ng imahe kapag hindi nagpapakita" 4 | SlideShow="Ipakita ang pag-slide ng Larawan" 5 | SlideShow.Files="Mga Imahe ng File" 6 | SlideShow.CustomSize="Karatig na Sukat/Ayos ng Ratio" 7 | SlideShow.CustomSize.Auto="Awtomatiko" 8 | SlideShow.Randomize="Pagkumpara sa Pag-play pabalik" 9 | SlideShow.Loop="Silo" 10 | SlideShow.Transition="Paglipat" 11 | SlideShow.Transition.Cut="Kunin" 12 | SlideShow.Transition.Fade="Kumupas" 13 | SlideShow.Transition.Swipe="Mag-swipe" 14 | SlideShow.Transition.Slide="Mag-slide" 15 | SlideShow.PlaybackBehavior="Paggiging kita ng Pag-uugali" 16 | SlideShow.PlaybackBehavior.StopRestart="Itigil kapag hindi ito makita, i-restart kapag nakikita na" 17 | SlideShow.PlaybackBehavior.PauseUnpause="I-pause kapag hindi makita, i-unpause kapag kita na" 18 | SlideShow.PlaybackBehavior.AlwaysPlay="Laging paandarin kahit hindi nakikita" 19 | SlideShow.SlideMode="Naka-slide Mode" 20 | SlideShow.SlideMode.Auto="Awtomatiko" 21 | SlideShow.SlideMode.Manual="Mano-mano (gamitin ang mga hotkey para makontrol ang pagpapakita ng slide)" 22 | SlideShow.PlayPause="Paganahin/I-pause" 23 | SlideShow.Restart="I-restart" 24 | SlideShow.Stop="Itigil" 25 | SlideShow.NextSlide="Susunod na Slide" 26 | SlideShow.PreviousSlide="Ang nakaraang Slide" 27 | SlideShow.HideWhenDone="Itago kapag ang pagpapakita ng slide ay tapos na" 28 | ColorSource="Pinagmulan ng kulay" 29 | ColorSource.Color="Kulay" 30 | ColorSource.Width="Lapad" 31 | ColorSource.Height="Taas" 32 | -------------------------------------------------------------------------------- /locale/tr-TR.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Resim" 2 | File="Resim Dosyası" 3 | UnloadWhenNotShowing="Resim gösterilmediğinde bellekten kaldır" 4 | LinearAlpha="Alfa'yı doğrusal alanda uygulayın" 5 | SlideShow="Resim Slayt Gösterisi" 6 | SlideShow.TransitionSpeed="Geçiş Hızı" 7 | SlideShow.SlideTime="Slaytlar Arasındaki Süre" 8 | SlideShow.Files="Resim Dosyaları" 9 | SlideShow.CustomSize="Sınırlayıcı Boyut/En-Boy Oranı" 10 | SlideShow.CustomSize.Auto="Otomatik" 11 | SlideShow.Randomize="Rastgele Gösterim" 12 | SlideShow.Loop="Döngü" 13 | SlideShow.Transition="Geçiş" 14 | SlideShow.Transition.Cut="Kes" 15 | SlideShow.Transition.Fade="Solarak" 16 | SlideShow.Transition.Swipe="Kaydır" 17 | SlideShow.Transition.Slide="Kaydır" 18 | SlideShow.PlaybackBehavior="Görünürlük Davranışı" 19 | SlideShow.PlaybackBehavior.StopRestart="Görünür olmadığında durdur, görünür olduğunda yeniden başlat" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Görünür olmadığında duraklat, görünür olduğunda oynat" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Görünür olmadığında bile her zaman oynat" 22 | SlideShow.SlideMode="Slayt Modu" 23 | SlideShow.SlideMode.Auto="Otomatik" 24 | SlideShow.SlideMode.Manual="Elle (Slayt gösterisini kontrol etmek için kısayol tuşlarını kullanın)" 25 | SlideShow.PlayPause="Oynat/Duraklat" 26 | SlideShow.Restart="Yeniden Başlat" 27 | SlideShow.Stop="Durdur" 28 | SlideShow.NextSlide="Sonraki Slayt" 29 | SlideShow.PreviousSlide="Önceki Slayt" 30 | SlideShow.HideWhenDone="Slayt gösterisi tamamlandığında gizle" 31 | ColorSource="Renk Kaynağı" 32 | ColorSource.Color="Renk" 33 | ColorSource.Width="Genişlik" 34 | ColorSource.Height="Yükseklik" 35 | -------------------------------------------------------------------------------- /locale/uk-UA.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Зображення" 2 | File="Файл зображення" 3 | UnloadWhenNotShowing="Вивантажувати зображення, коли воно не виводиться" 4 | LinearAlpha="Застосувати альфу в лінійному просторі" 5 | SlideShow="Показ слайдів" 6 | SlideShow.TransitionSpeed="Швидкість переходу" 7 | SlideShow.SlideTime="Час між слайдами" 8 | SlideShow.Files="Файли зображень" 9 | SlideShow.CustomSize="Розмір рамки/пропорції" 10 | SlideShow.CustomSize.Auto="Автоматично" 11 | SlideShow.Randomize="Випадкове відтворення" 12 | SlideShow.Loop="Повторювати" 13 | SlideShow.Transition="Перехід" 14 | SlideShow.Transition.Cut="Вирізання" 15 | SlideShow.Transition.Fade="Вицвітання" 16 | SlideShow.Transition.Swipe="Переміщення" 17 | SlideShow.Transition.Slide="Зсув" 18 | SlideShow.PlaybackBehavior="Поведінка видимості" 19 | SlideShow.PlaybackBehavior.StopRestart="Зупинити, коли невидимий. Відтворити спочатку, коли видимий" 20 | SlideShow.PlaybackBehavior.PauseUnpause="Призупинити, коли невидимий. Продовжити відтворення, коли видимий" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="Завжди відтворювати, навіть коли невидимий" 22 | SlideShow.SlideMode="Режим слайдів" 23 | SlideShow.SlideMode.Auto="Автоматичний" 24 | SlideShow.SlideMode.Manual="Ручний (використовувати гарячі клавіші для контролю)" 25 | SlideShow.PlayPause="Відтворення/Пауза" 26 | SlideShow.Restart="Повторити" 27 | SlideShow.Stop="Зупинити" 28 | SlideShow.NextSlide="Наступний слайд" 29 | SlideShow.PreviousSlide="Попередній слайд" 30 | SlideShow.HideWhenDone="Приховати завершення показу слайдів" 31 | ColorSource="Джерело кольору" 32 | ColorSource.Color="Колір" 33 | ColorSource.Width="Ширина" 34 | ColorSource.Height="Висота" 35 | -------------------------------------------------------------------------------- /locale/ur-PK.ini: -------------------------------------------------------------------------------- 1 | ImageInput="فوٹو" 2 | -------------------------------------------------------------------------------- /locale/vi-VN.ini: -------------------------------------------------------------------------------- 1 | ImageInput="Hình ảnh" 2 | File="Tập tin hình ảnh" 3 | UnloadWhenNotShowing="Không hiện hình ảnh khi không hiển thị" 4 | LinearAlpha="Áp dụng alpha trong không gian tuyến tĩnh" 5 | SlideShow="Trình chiếu hình ảnh" 6 | SlideShow.Files="Tập tin hình ảnh" 7 | SlideShow.CustomSize="Kích thước / Tỷ lệ co dãn" 8 | SlideShow.CustomSize.Auto="Tự động" 9 | SlideShow.Randomize="Phát lại ngẫu nhiên" 10 | SlideShow.Loop="Lặp lại" 11 | SlideShow.Transition="Chuyển cảnh" 12 | SlideShow.Transition.Cut="Cắt" 13 | SlideShow.Transition.Fade="Mờ dần" 14 | SlideShow.Transition.Swipe="Vuốt" 15 | SlideShow.Transition.Slide="Trượt" 16 | SlideShow.PlaybackBehavior="Hành vi hiển thị" 17 | SlideShow.PlaybackBehavior.StopRestart="Dừng khi không hiển thị, khởi động lại khi hiển thị" 18 | SlideShow.PlaybackBehavior.PauseUnpause="Tạm dừng khi không hiển thị, bỏ tạm dừng khi hiển thị" 19 | SlideShow.PlaybackBehavior.AlwaysPlay="Luôn luôn phát ngay cả khi không hiển thị" 20 | SlideShow.SlideMode="Chế độ Slide" 21 | SlideShow.SlideMode.Auto="Tự động" 22 | SlideShow.SlideMode.Manual="Bằng tay (Dùng phím nóng để điều khiển trình chiếu)" 23 | SlideShow.PlayPause="Phát/Tạm dừng" 24 | SlideShow.Restart="Khởi động lại" 25 | SlideShow.Stop="Dừng" 26 | SlideShow.NextSlide="Slide kế tiếp" 27 | SlideShow.PreviousSlide="Slide trước" 28 | SlideShow.HideWhenDone="Ẩn khi trình chiếu xong" 29 | ColorSource="Nguồn màu" 30 | ColorSource.Color="Màu" 31 | ColorSource.Width="Chiều rộng" 32 | ColorSource.Height="Chiều cao" 33 | -------------------------------------------------------------------------------- /locale/zh-CN.ini: -------------------------------------------------------------------------------- 1 | ImageInput="图像" 2 | File="图像文件" 3 | UnloadWhenNotShowing="当不显示时卸载图像" 4 | LinearAlpha="在线性空间应用alpha通道" 5 | SlideShow="图像幻灯片放映" 6 | SlideShow.TransitionSpeed="转场速度" 7 | SlideShow.SlideTime="幻灯片间隔时间" 8 | SlideShow.Files="图像文件" 9 | SlideShow.CustomSize="边框大小/宽高比" 10 | SlideShow.CustomSize.Auto="自动" 11 | SlideShow.Randomize="随机播放" 12 | SlideShow.Loop="循环" 13 | SlideShow.Transition="转换特效" 14 | SlideShow.Transition.Cut="剪切" 15 | SlideShow.Transition.Fade="淡出" 16 | SlideShow.Transition.Swipe="滑出" 17 | SlideShow.Transition.Slide="幻灯片" 18 | SlideShow.PlaybackBehavior="可见性的行为" 19 | SlideShow.PlaybackBehavior.StopRestart="不可见时停止, 可见时重新开始" 20 | SlideShow.PlaybackBehavior.PauseUnpause="不可见时暂停, 可见时取消暂停" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="即使在不可见时也保持播放" 22 | SlideShow.SlideMode="幻灯片模式" 23 | SlideShow.SlideMode.Auto="自动" 24 | SlideShow.SlideMode.Manual="手动 (使用快捷键来控制幻灯片)" 25 | SlideShow.PlayPause="播放/暂停" 26 | SlideShow.Restart="重新开始" 27 | SlideShow.Stop="停止" 28 | SlideShow.NextSlide="下一张幻灯片" 29 | SlideShow.PreviousSlide="上一张幻灯片" 30 | SlideShow.HideWhenDone="幻灯片放映完成后隐藏" 31 | ColorSource="色源" 32 | ColorSource.Color="色彩" 33 | ColorSource.Width="宽度" 34 | ColorSource.Height="高度" 35 | -------------------------------------------------------------------------------- /locale/zh-TW.ini: -------------------------------------------------------------------------------- 1 | ImageInput="圖片" 2 | File="圖片檔案" 3 | UnloadWhenNotShowing="未顯示圖片時卸載" 4 | LinearAlpha="在線性空間套用 alpha 通道" 5 | SlideShow="投影片放映" 6 | SlideShow.TransitionSpeed="轉場效果速度" 7 | SlideShow.SlideTime="投影片間隔時間" 8 | SlideShow.Files="圖片檔案" 9 | SlideShow.CustomSize="邊框大小長寬比" 10 | SlideShow.CustomSize.Auto="自動" 11 | SlideShow.Randomize="隨機播放" 12 | SlideShow.Loop="循環播放" 13 | SlideShow.Transition="轉場" 14 | SlideShow.Transition.Cut="直接變更" 15 | SlideShow.Transition.Fade="淡入淡出" 16 | SlideShow.Transition.Swipe="滑出" 17 | SlideShow.Transition.Slide="推出" 18 | SlideShow.PlaybackBehavior="播放行為" 19 | SlideShow.PlaybackBehavior.StopRestart="不可見時停止,可見時重新開始" 20 | SlideShow.PlaybackBehavior.PauseUnpause="不可見時暫停,可見時取消暫停" 21 | SlideShow.PlaybackBehavior.AlwaysPlay="即使不可見一樣播放" 22 | SlideShow.SlideMode="投影片模式" 23 | SlideShow.SlideMode.Auto="自動" 24 | SlideShow.SlideMode.Manual="手動(使用快捷鍵控制幻燈片)" 25 | SlideShow.PlayPause="播放/暫停" 26 | SlideShow.Restart="重新開始" 27 | SlideShow.Stop="停止" 28 | SlideShow.NextSlide="下一張投影片" 29 | SlideShow.PreviousSlide="上一張投影片" 30 | SlideShow.HideWhenDone="完成時隱藏" 31 | ColorSource="色彩來源" 32 | ColorSource.Color="色彩" 33 | ColorSource.Width="寬度" 34 | ColorSource.Height="高度" 35 | -------------------------------------------------------------------------------- /scripts/build-linux-x64.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | dotnet publish .. -c Release -o ../publish/linux-x64 -r linux-x64 /p:NativeLib=Shared /p:SelfContained=true 3 | -------------------------------------------------------------------------------- /scripts/build-win-x64.cmd: -------------------------------------------------------------------------------- 1 | dotnet publish .. -c Release -o ..\publish\win-x64 -r win-x64 /p:DefineConstants=WINDOWS /p:NativeLib=Shared /p:SelfContained=true 2 | pause 3 | -------------------------------------------------------------------------------- /scripts/release-win-x64.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | 3 | for %%I in (..\.) do set "ProjectName=%%~nI" 4 | 5 | mkdir ..\release\win-x64\obs-plugins\64bit 2>nul 6 | mkdir ..\release\win-x64\data\obs-plugins\%ProjectName%\locale 2>nul 7 | del /F /S /Q ..\release\win-x64\obs-plugins\64bit\* 8 | del /F /S /Q ..\release\win-x64\data\obs-plugins\%ProjectName%\locale\* 9 | copy /Y ..\publish\win-x64\* ..\release\win-x64\obs-plugins\64bit\ 10 | copy /Y ..\locale\* ..\release\win-x64\data\obs-plugins\%ProjectName%\locale 11 | -------------------------------------------------------------------------------- /scripts/wsl/build-linux-x64-wsl-setup.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | echo This script will help to initially set up WSL to be able to compile Linux binaries of OBS plugins on Windows. 3 | echo. 4 | echo Before running this you first need to manually install WSL with Ubuntu-20.04 LTS. 5 | echo This script assumes use of Ubuntu-20.04 LTS instead of the latest version so that produced binaries are also 6 | echo compatible with older glibc versions. 7 | echo To install this open a PowerShell console with administrator privileges and execute this: 8 | echo wsl --install Ubuntu-20.04 9 | echo. 10 | echo After installation was finished run `sudo apt update` and `sudo apt upgrade` once so that all packages are up to date. 11 | echo Then exit this script, restart and only continue when the following lines list the WSL environment you want to use for building as default. 12 | echo  13 | wsl -l 14 | echo  15 | echo Press any key when the correct WSL distribution is shown as default and you are ready to continue... 16 | pause >nul 17 | 18 | cls 19 | 20 | echo Please note: For easy accessibility this script will create a "/build-net" folder in the WSL root directory 21 | echo (and not in the user home) that the default WSL user has full access to. 22 | echo. 23 | echo Press any key to proceed... 24 | pause >nul 25 | 26 | cls 27 | 28 | echo Preparing build folder, installing .NET 7 SDK and necessary build depedencies... 29 | REM All done in one line to prevent multiple sudo password prompts: 30 | wsl curl -sSL https://packages.microsoft.com/keys/microsoft.asc ^| sudo apt-key add - ^&^& sudo apt-add-repository https://packages.microsoft.com/ubuntu/20.04/prod ^&^& sudo apt-get install -y dotnet-sdk-7.0 clang zlib1g-dev ^&^& sudo mkdir -p /build-net ^&^& sudo chown -R $USER:$USER /build-net 31 | 32 | if %ERRORLEVEL% == 0 ( 33 | echo All done, other WSL based build scripts can be used now. 34 | ) else ( 35 | echo Something went wrong, the script ran into error %ERRORLEVEL% 36 | ) 37 | 38 | 39 | 40 | pause 41 | -------------------------------------------------------------------------------- /scripts/wsl/build-linux-x64-wsl.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | REM The base build folder containing all .NET projects to build using the WSL environment from within the WSL environment 3 | set BuildFolderFromLinux=/build-net 4 | set BuildFolderFromWindows=\\wsl.localhost\Ubuntu-20.04\build-net 5 | 6 | REM -------------------------------- 7 | 8 | for %%I in (.) do set "ParentFolder=%%~nI" 9 | 10 | if not "%ParentFolder%" == "wsl" ( 11 | echo Error: You need to run this script from the wsl sub-folder you found this in, aborting. 12 | pause >nul 13 | exit 1 14 | ) 15 | 16 | REM Get the name of the project from the parent folders name, assuming that it was Git cloned and has the right name. 17 | for %%I in (..\..\.) do set "ProjectName=%%~nI" 18 | 19 | REM Prepare the build folder for this project 20 | wsl mkdir -p %BuildFolderFromLinux%/%ProjectName% 21 | 22 | REM Make sure the base build folder is empty, purging any previous data 23 | wsl rm -Rf %BuildFolderFromLinux%/%ProjectName%/* 24 | 25 | REM Copy all necessary code files into the WSL build folder. 26 | robocopy.exe ..\..\. %BuildFolderFromWindows%\%ProjectName% *.cs *.csproj 27 | 28 | REM Run the build. 29 | wsl dotnet publish %BuildFolderFromLinux%/%ProjectName% -c Release -o %BuildFolderFromLinux%/%ProjectName%/publish -r linux-x64 /p:NativeLib=Shared /p:SelfContained=true 30 | 31 | REM Copy the relevant build files back. 32 | mkdir ..\..\publish\linux-x64\ 2>nul 33 | copy /Y %BuildFolderFromWindows%\%ProjectName%\publish\* ..\..\publish\linux-x64\ 34 | 35 | REM Create release structure. 36 | mkdir ..\..\release\linux-x64\.config\obs-studio\plugins\%ProjectName%\bin\64bit 2>nul 37 | mkdir ..\..\release\linux-x64\.config\obs-studio\plugins\%ProjectName%\data\locale 2>nul 38 | del /F /S /Q ..\..\release\linux-x64\.config\obs-studio\plugins\%ProjectName%\bin\64bit\* 39 | del /F /S /Q ..\..\release\linux-x64\.config\obs-studio\plugins\%ProjectName%\data\locale\* 40 | copy /Y ..\..\publish\linux-x64\ ..\..\release\linux-x64\.config\obs-studio\plugins\%ProjectName%\bin\64bit\ 41 | copy /Y ..\..\locale\* ..\..\release\linux-x64\.config\obs-studio\plugins\%ProjectName%\data\locale 42 | 43 | REM Final cleanup in WSL 44 | wsl rm -Rf %BuildFolderFromLinux%/%ProjectName%/* 45 | 46 | -------------------------------------------------------------------------------- /scripts/xObsAsyncImageSource-Installer.nsi: -------------------------------------------------------------------------------- 1 | ; if you want to build this, you need to download and install NSIS from https://nsis.sourceforge.io/Download or 2 | ; execute this on a CMD or PowerShell window: winget install NSIS.NSIS 3 | 4 | Unicode True 5 | 6 | !define AUTHOR "YorVeX" 7 | 8 | ; Automatically detect the name of the parent directory to use it as the app name 9 | !tempfile MYINCFILE 10 | !system 'for %I in (..\.) do echo !define APPNAME "%~nxI" > "${MYINCFILE}"' 11 | !include "${MYINCFILE}" 12 | !delfile "${MYINCFILE}" 13 | !define APPDISPLAYNAME "${APPNAME} OBS Plugin" 14 | 15 | ; Automatically detect the version of the library in the publish folder to use it as the app version 16 | !getdllversion "..\publish\win-x64\${APPNAME}.dll" ver 17 | !define VERSION "${ver1}.${ver2}.${ver3}.${ver4}" 18 | !define DISPLAY_VERSION "v${ver1}.${ver2}.${ver3}" 19 | VIProductVersion "${VERSION}" 20 | VIAddVersionKey "ProductName" "${APPNAME}" 21 | VIAddVersionKey "FileVersion" "${VERSION}" 22 | VIAddVersionKey "VIProductVersion" "${VERSION}" 23 | VIAddVersionKey "LegalCopyright" "Copyright (c) 2023 ${AUTHOR}, https://github.com/${AUTHOR}" 24 | VIAddVersionKey "FileDescription" "${APPDISPLAYNAME}" 25 | 26 | ; Main install settings 27 | Name "${APPDISPLAYNAME} ${DISPLAY_VERSION}" 28 | Caption "Async image source plugin for OBS Studio" 29 | Icon "..\img\${APPNAME}-Icon.ico" 30 | UninstallIcon "..\img\${APPNAME}-Icon.ico" 31 | InstallDirRegKey HKLM "Software\${APPNAME}" "" 32 | InstallDir "$PROGRAMFILES64\obs-studio" 33 | OutFile "..\release\win-x64\${APPNAME}-win-x64-installer.exe" 34 | SetCompressor LZMA 35 | 36 | ; Define splash screen 37 | Function .onInit 38 | InitPluginsDir 39 | SetOutPath "$PLUGINSDIR" 40 | 41 | File "/oname=$PLUGINSDIR\Splash.jpg" "..\img\${APPNAME}-SplashScreen.jpg" 42 | ; Need to download and install this plugin for this to work: https://nsis.sourceforge.io/NewAdvSplash_plug-in (the default plugins can only use BMP files) 43 | newadvsplash::show 1500 500 500 0x04025C /NOCANCEL "$PLUGINSDIR\Splash.jpg" 44 | Delete "$PLUGINSDIR\Splash.jpg" 45 | FunctionEnd 46 | 47 | ; Modern interface settings 48 | !include "MUI.nsh" 49 | 50 | !define MUI_ABORTWARNING 51 | !define MUI_ICON "..\img\${APPNAME}-Icon.ico" 52 | !define MUI_UNICON "..\img\${APPNAME}-Icon.ico" 53 | 54 | !insertmacro MUI_PAGE_WELCOME 55 | !insertmacro MUI_PAGE_LICENSE "..\LICENSE" 56 | !insertmacro MUI_PAGE_DIRECTORY 57 | !insertmacro MUI_PAGE_COMPONENTS 58 | !insertmacro MUI_PAGE_INSTFILES 59 | !insertmacro MUI_PAGE_FINISH 60 | 61 | !insertmacro MUI_UNPAGE_CONFIRM 62 | !insertmacro MUI_UNPAGE_INSTFILES 63 | 64 | ; Set languages (first is default language) 65 | !insertmacro MUI_LANGUAGE "English" 66 | !insertmacro MUI_LANGUAGE "French" 67 | !insertmacro MUI_LANGUAGE "German" 68 | !insertmacro MUI_LANGUAGE "Spanish" 69 | !insertmacro MUI_LANGUAGE "Italian" 70 | !insertmacro MUI_LANGUAGE "Dutch" 71 | !insertmacro MUI_LANGUAGE "PortugueseBR" 72 | !insertmacro MUI_RESERVEFILE_LANGDLL 73 | 74 | Var INSTALL_BASE_DIR 75 | Var OBS_INSTALL_DIR 76 | 77 | Section "${APPDISPLAYNAME}" Section1 78 | StrCpy $INSTALL_BASE_DIR "$PROGRAMFILES64\obs-studio" 79 | 80 | ReadRegStr $OBS_INSTALL_DIR HKLM "SOFTWARE\OBS Studio" "" 81 | 82 | !if "$OBS_INSTALL_DIR" != "" 83 | StrCpy $INSTALL_BASE_DIR "$OBS_INSTALL_DIR" 84 | !endif 85 | 86 | StrCpy $InstDir "$INSTALL_BASE_DIR" 87 | 88 | IfFileExists "$INSTDIR\*.*" +3 89 | MessageBox MB_OK|MB_ICONSTOP "OBS directory doesn't exist!" 90 | Abort 91 | 92 | !define UNINSTALLER "$INSTDIR\obs-plugins\uninstall-${APPNAME}-win-x64.exe" 93 | 94 | ; Set Section properties 95 | SetOverwrite on 96 | AllowSkipFiles off 97 | 98 | ; Set Section Files and Shortcuts 99 | SetOutPath "$INSTDIR\obs-plugins\64bit\" 100 | File /r "..\publish\win-x64\*.*" ; DLL and PDB file 101 | 102 | SetOutPath "$INSTDIR\data\obs-plugins\${APPNAME}\locale\" 103 | File /r "..\locale\*.*" ; locale files 104 | 105 | CreateDirectory "$SMPROGRAMS\${APPDISPLAYNAME}" 106 | CreateShortCut "$SMPROGRAMS\${APPDISPLAYNAME}\Uninstall ${APPDISPLAYNAME}.lnk" "${UNINSTALLER}" 107 | 108 | SectionEnd 109 | 110 | Section -FinishSection 111 | 112 | WriteRegStr HKLM "Software\${APPNAME}" "InstallDir" "$INSTDIR" 113 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPDISPLAYNAME}" 114 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "${UNINSTALLER}" 115 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${AUTHOR}" 116 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "HelpLink" "https://github.com/${AUTHOR}/${APPNAME}" 117 | WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${DISPLAY_VERSION}" 118 | WriteUninstaller "${UNINSTALLER}" 119 | 120 | SectionEnd 121 | 122 | ; Modern install component descriptions 123 | !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN 124 | !insertmacro MUI_DESCRIPTION_TEXT ${Section1} "Install the ${APPDISPLAYNAME} to your installed OBS Studio version" 125 | !insertmacro MUI_FUNCTION_DESCRIPTION_END 126 | 127 | UninstallText "This will uninstall the ${APPDISPLAYNAME} from your system" 128 | 129 | ;Uninstall section 130 | Section Uninstall 131 | SectionIn RO 132 | AllowSkipFiles off 133 | 134 | ;Remove from registry... 135 | DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" 136 | DeleteRegKey HKLM "SOFTWARE\${APPNAME}" 137 | 138 | ; Clean up the plugin files 139 | Delete /REBOOTOK "$INSTDIR\64bit\${APPNAME}.dll" 140 | Delete /REBOOTOK "$INSTDIR\64bit\${APPNAME}.pdb" 141 | ; Clean up the data (including locale) files 142 | RMDir /r /REBOOTOK "$INSTDIR\..\data\obs-plugins\${APPNAME}" 143 | 144 | ; Delete self 145 | Delete "$INSTDIR\uninstall-${APPNAME}-win-x64.exe" 146 | 147 | ; Delete Shortcuts 148 | RMDir /r "$SMPROGRAMS\${APPDISPLAYNAME}" 149 | 150 | SectionEnd 151 | -------------------------------------------------------------------------------- /xObsAsyncImageSource.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net7.0 5 | enable 6 | enable 7 | true 8 | true 9 | true 10 | https://github.com/YorVeX 11 | 1.0.0.0 12 | 13 | 14 | 15 | 16 | 17 | 18 | --------------------------------------------------------------------------------