Merge ImageResizer into master (#1469)
* Import Image Resizer for Windows * getting code analysis and stylecop hooked in * upgrading to 4.7.2 * adding copyright * getting stuff to work headers and trailing commas adding braces updated encoder * Revert "getting stuff to work" This reverts commit5310866120
. * update to .net 4.7.2 * access modifier * zero errors * Fixed unit tests not running issue * Fixed ImageResizer.Test stylecop warning * Formatted ShellExtensions project with clang-format * Fixed annotation warnings * Suppressed 6031 and 26812 warnings for specific lines * Shifting ImageResizer projects to PowerToys solution (#1054) * Shifted ImageResizer projects to PowerToys solution: Builds, all tests pass, ImageResizer C# project works independently * Deleted extra files * Deleted nuget config file and fixed code analysis paths * Convert ImageResizer to a PowerToy (#1073) * Updated vcxproj file with common project references and cpp version flags * Added module template code to dllmain and updated headers for successful build * Removed unnecessary include * Added dll to runner and add fixes to show up in PT Settings * Added settings file * Added support for enabling/disabling based on PowerRename codebase * Fixed missing braces * Fixed call_custom_action * Add ImageResizer to msi installer (dev/imageResizer) (#1094) * Updated vcxproj file with common project references and cpp version flags * Added module template code to dllmain and updated headers for successful build * Removed unnecessary include * Added dll to runner and add fixes to show up in PT Settings * Added settings file * Added support for enabling/disabling based on PowerRename codebase * Fixed solution file configurations * Removed Any CPU from ImageResizer csprojs * Renamed registry writing and removed build time registry addition * Added ImageResizer installation details to msi * Fixed comment on conditions to close explorer.exe * Sync dev/imageResizer with master (#1105) * tweaking language * adjusting elevated permission verbiage to match Windows * npm audit fix to update stuff * slight bump for fabric ui * Remove unwanted files (#1037) Add temp build files to gitignore * Ensure previous search and replace texts are evaluated and updated in the UI at startup (#1043) Ensure stored settings get evaluated after initial enumeration There was a bug where the list view was not getting updated with the results of the search and replace on launch when we are using a stored search or replace text from a previous session. * adding fancy zone opacity setting, enhancement #631 (#1008) * adding fancy zone opacity setting, enhancement #631 * applying zone opacity setting to all zones during zone selection * changing opacity setting to percentage * runner: show message box when restarting with different elevation fails (#1061) Also make the message box appear on top of the settings window. * Fix misaligned display of zones in layout priview and grid editor (#1010) Fix misaligned display of zones in layout preview and grid editor * MSIX: Extract MSIX building functionality from msix_reinstall.ps1 to a separate script (#1068) * MSIX: label PowerToys as Preview (#1090) * MSIX: Code sign msixbundle (#1093) * Update to MSIX README.md (#1095) * Update README.md few adjustments * Update README.md * Update README.md * adding in privacy statement, removing About in dialog (#1087) * adding in privacy statement, removing About in dialog * added Preview * Revert "Fix misaligned display of zones in layout priview and grid editor (#1010)" (#1097) This reverts commitd03690cffd
. * Fix reversed order of zones in layout (#1071) * Shifted three functions to common (#1101) Co-authored-by: Clint Rutkas <clint@rutkas.com> Co-authored-by: Enrico Giordani <enricogior@users.noreply.github.com> Co-authored-by: Chris Davis <chrisdavis@outlook.com> Co-authored-by: Yosef Durr <yodurr@microsoft.com> Co-authored-by: Bartosz Sosnowski <bzoz@users.noreply.github.com> Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com> Co-authored-by: yuyoyuppe <yuyoyuppe@users.noreply.github.com> * Revert "Sync dev/imageResizer with master (#1105)" This reverts commitdb7f15541f
. * Added icon to Resize pictures context menu entry (dev/imageResizer) (#1113) * Updated vcxproj file with common project references and cpp version flags * Added module template code to dllmain and updated headers for successful build * Removed unnecessary include * Added dll to runner and add fixes to show up in PT Settings * Added settings file * Added support for enabling/disabling based on PowerRename codebase * Fixed solution file configurations * Removed Any CPU from ImageResizer csprojs * Renamed registry writing and removed build time registry addition * Added ImageResizer installation details to msi * Shifted to MII, TODO: Fix position * Incorporated ImageResizer Icon in context menu entry * Fixed typo * Merged with dev/imageResizer * Renamed Advanced Options to Settings and removed About tab (dev/imageResizer) (#1123) * Removed about tab, renamed advanced opt to settings, changed assembly info * Restored Resource designer file * Reverted changes on AssemblyInfo * MSI: Fix ImageResizer menu item position (dev/imageResizer) (#1114) * Updated vcxproj file with common project references and cpp version flags * Added module template code to dllmain and updated headers for successful build * Removed unnecessary include * Added dll to runner and add fixes to show up in PT Settings * Added settings file * Added support for enabling/disabling based on PowerRename codebase * Fixed solution file configurations * Removed Any CPU from ImageResizer csprojs * Renamed registry writing and removed build time registry addition * Added ImageResizer installation details to msi * Shifted to MII, TODO: Fix position * Incorporated ImageResizer Icon in context menu entry * Changed registry entries to SystemFileAssociations and added index changes in InsertMenuItem * Fixed extra newline * Fixed merge conflict * Refactor ImageResizer code base naming to match PowerRename (#1121) * Created empty README file * Renamed dll project * Removed ShellExtensions references in src * Fixed ImageResizerUI assembly name and added changes to MSI * added the helper functions * localized dllmain powerrename * localized powerRenameExt * localized the settings file * built the proj * Modified resourceIDs for strings in the table * added common as a reference project * Removed get_res_string_wchar and used the get_resource_string() function instead which returns a wstring typecast into wchar* * Added new lines to the end of the file * Removed string resources from the settings.cpp file * rebuilt project PowerRename * moved app name to constructor to init only once * updated formatting of common.cpp * reverting formatting of files * Removed some IDs from resource file. Changed SHIFT to Shift * Localizing C# Project of FancyZones (FancyZonesEditor) (#199) (#1122) * removed hardcoded strings from CanvasEditorWindow.xaml * removed hardcoded strings from GridEditorWindow.xaml * loc * Localized MainWindow * reverting MainWindow.xaml as it is not rendering the window as expected * Changed the resource settings from internal to public * the culture is set based on the culture of the system UI set in the system settings * Removed the french resource files used for testing * Localized canvasWindow and mainwindow * Removed setting the UI culture explicitly as it would be implicitly set to the culture of system UI * Removed redundant header file * Localize the Shortcut guide PowerToy (#199) (#1126) * Localized shortcut_guide.cpp * localized overlay_window.cpp * formatting changes * Localize overlay window * removed the README link from the set of localized resources * Typo: changed upper to lower * Localize C++ Projects of FancyZones (#1130) * localized dllmain.cpp of fancyzones project * localized FancyZones.cpp * format fancyzones.rc file * Moved SuperFancyZones back to being a string instead of having it in the resource file as it is the window class name * reverted changes for window name * Formatted fancyzones rc file * Align zone dimensions from layout preview with those from grid editor (#1115) * MSIX: add a dedicated .rc for UWPUI which joins both UI and DLL .rc's (#1139) * Runner: fix restarting with same elevation (#1133) * MSIX: reinstall script uses bundle instead of .msi to be able to reinstall in all cases * Telemetry: add WebView init failure errors * Settings: initialize COM security to allow communication between elevated Settings and WebView * Common: implement on_scope_exit helper and typed_storage * Changes for #1140 and #569 (#1152) * MSIX build instructions adjustmnet (#1170) * MSIX: hide the "Run at Startup" option if running as packaged * MSIX: update identity name and publisher (#1176) * Runner: fix startup task state setting for MSIX (#1181) * Add ImageResizer to MSIX installer and make the code MSIX-compatible (#1219) * Removed ImageResizer.exe location registry key * Added working resize pictures to MSIX context menu without icon * Fixed missing icon on MSIX build * Added comments * Changed to single context handler entry * Made changes as per PR comments * Localize ImageResizer (#1261) * Removed hardcoded strings * Added resource dlls to MSIX installer * Save ImageResizer settings in JSON format (#1258) * Combined settings files * Added JSON settings functionality in PowerToys format with thread safety * Reverting changes to csproj file * Removed settings.settings and designer file and added target sdk tools to fix warning * Added NewtonSoft Json package * Added 3 tests * Added propertychanged test * Removed unused libraries * Removed additional allocation statements in test * Added comments on test * Added one-time setup code * Added Newtonsoft.Json.dll to MSI and MSIX installer * Fixed copyright header * Fixed folder location in MSIX * Renamed jsonMutex to _jsonMutex * Fixed line endings * Created private setup functions and added Arrange, Act, Assert comments * Created private setup functions and added Arrange, Act, Assert comments * Suppressed copyright warning on AppFixture and enabled treat warnings as errors * Added comments on Reload/AppFixture and added constructor andispose * Added telemetry to ImageResizer Shell Extension code (dev/imageResizer) (#1272) * Added telemetry to C++ ImageResizerExt * Added Register and unregister calls * Changed default enable setting * Set startup location to center of the screen (ImageResizer) (#1452) * Added ImageResizer resources.dlls to the MSI installer (#1448) * Implemented fix for foreground issue for ImageResizer (#1434) * Fixed conflict in installer README.md file * Fixed conflict in bundle.js * Auto-generate AssemblyInfo in ImageResizer (#1467) * Updated assembly info * Added auto-generation of AssemblyInfo.cs * Fixed minor issues * Remove the License file since Notice.md have been added * Fix errors due to resolving merge conflicts Co-authored-by: Brice Lambson <brice@bricelam.net> Co-authored-by: Clint Rutkas <clint@rutkas.com> Co-authored-by: Arjun Balgovind <arbalgov@microsoft.com> Co-authored-by: Enrico Giordani <enricogior@users.noreply.github.com> Co-authored-by: Chris Davis <chrisdavis@outlook.com> Co-authored-by: Yosef Durr <yodurr@microsoft.com> Co-authored-by: Bartosz Sosnowski <bzoz@users.noreply.github.com> Co-authored-by: vldmr11080 <57061786+vldmr11080@users.noreply.github.com> Co-authored-by: yuyoyuppe <yuyoyuppe@users.noreply.github.com> Co-authored-by: Alekhya Kommuru <alkommur@microsoft.com> Co-authored-by: Alekhya <reddykalekhya@gmail.com> Co-authored-by: yuyoyuppe <a.yuyoyuppe@gmail.com> Co-authored-by: Udit Singh <udsing@microsoft.com>
2
.gitignore
vendored
@ -301,6 +301,8 @@ __pycache__/
|
||||
# Cake - Uncomment if you are using it
|
||||
# tools/**
|
||||
# !tools/packages.config
|
||||
ImageResizer/tools/**
|
||||
!ImageResizer/tools/packages.config
|
||||
|
||||
# Tabs Studio
|
||||
*.tss
|
||||
|
@ -123,6 +123,14 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "WindowWalker", "src\modules
|
||||
{74485049-C722-400F-ABE5-86AC52D929B3} = {74485049-C722-400F-ABE5-86AC52D929B3}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "imageresizer", "imageresizer", "{6C7F47CC-2151-44A3-A546-41C70025132C}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImageResizerUI", "src\modules\imageresizer\ui\ImageResizerUI.csproj", "{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImageResizerExt", "src\modules\imageresizer\dll\ImageResizerExt.vcxproj", "{0B43679E-EDFA-4DA0-AD30-F4628B308B1B}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImageResizerUITest", "src\modules\imageresizer\tests\ImageResizerUITest.csproj", "{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8}"
|
||||
EndProject
|
||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "action_runner", "src\action_runner\action_runner.vcxproj", "{D29DDD63-E2CF-4657-9FD5-2AEDE4257E5D}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{17DA04DF-E393-4397-9CF0-84DABE11032E} = {17DA04DF-E393-4397-9CF0-84DABE11032E}
|
||||
@ -222,6 +230,18 @@ Global
|
||||
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Debug|x64.Build.0 = Debug|x64
|
||||
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Release|x64.ActiveCfg = Release|x64
|
||||
{0485F45C-EA7A-4BB5-804B-3E8D14699387}.Release|x64.Build.0 = Release|x64
|
||||
{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}.Debug|x64.Build.0 = Debug|x64
|
||||
{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}.Release|x64.ActiveCfg = Release|x64
|
||||
{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}.Release|x64.Build.0 = Release|x64
|
||||
{0B43679E-EDFA-4DA0-AD30-F4628B308B1B}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0B43679E-EDFA-4DA0-AD30-F4628B308B1B}.Debug|x64.Build.0 = Debug|x64
|
||||
{0B43679E-EDFA-4DA0-AD30-F4628B308B1B}.Release|x64.ActiveCfg = Release|x64
|
||||
{0B43679E-EDFA-4DA0-AD30-F4628B308B1B}.Release|x64.Build.0 = Release|x64
|
||||
{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8}.Debug|x64.Build.0 = Debug|x64
|
||||
{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8}.Release|x64.ActiveCfg = Release|x64
|
||||
{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8}.Release|x64.Build.0 = Release|x64
|
||||
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Debug|x64.Build.0 = Debug|x64
|
||||
{0B593A6C-4143-4337-860E-DB5710FB87DB}.Release|x64.ActiveCfg = Release|x64
|
||||
@ -301,6 +321,10 @@ Global
|
||||
{2151F984-E006-4A9F-92EF-C6DDE3DC8413} = {89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3}
|
||||
{64A80062-4D8B-4229-8A38-DFA1D7497749} = {BEEAB7F2-FFF6-45AB-9CDB-B04CC0734B88}
|
||||
{0485F45C-EA7A-4BB5-804B-3E8D14699387} = {89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3}
|
||||
{6C7F47CC-2151-44A3-A546-41C70025132C} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
|
||||
{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34} = {6C7F47CC-2151-44A3-A546-41C70025132C}
|
||||
{0B43679E-EDFA-4DA0-AD30-F4628B308B1B} = {6C7F47CC-2151-44A3-A546-41C70025132C}
|
||||
{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8} = {6C7F47CC-2151-44A3-A546-41C70025132C}
|
||||
{0B593A6C-4143-4337-860E-DB5710FB87DB} = {1AFB6476-670D-4E80-A464-657E01DFF482}
|
||||
{031AC72E-FA28-4AB7-B690-6F7B9C28AA73} = {1AFB6476-670D-4E80-A464-657E01DFF482}
|
||||
{8DC78AF7-DC3E-4C57-A8FB-7E347DE74A03} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC}
|
||||
|
@ -17,6 +17,13 @@
|
||||
<File DestinationPath="modules\PowerRenameExt.dll" SourcePath="..\..\x64\Release\modules\PowerRenameExt.dll"/>
|
||||
<File DestinationPath="modules\shortcut_guide.dll" SourcePath="..\..\x64\Release\modules\shortcut_guide.dll"/>
|
||||
<File DestinationPath="modules\PowerRenameUWPUI.exe" SourcePath="..\..\x64\Release\PowerRenameUWPUI.exe"/>
|
||||
<File DestinationPath="modules\ImageResizer.exe" SourcePath="..\..\x64\Release\modules\ImageResizer.exe"/>
|
||||
<File DestinationPath="modules\ImageResizerExt.dll" SourcePath="..\..\x64\Release\modules\ImageResizerExt.dll"/>
|
||||
<File DestinationPath="modules\GalaSoft.MvvmLight.dll" SourcePath="..\..\x64\Release\modules\GalaSoft.MvvmLight.dll"/>
|
||||
<File DestinationPath="modules\GalaSoft.MvvmLight.Platform.dll" SourcePath="..\..\x64\Release\modules\GalaSoft.MvvmLight.Platform.dll"/>
|
||||
<File DestinationPath="modules\GalaSoft.MvvmLight.Extras.dll" SourcePath="..\..\x64\Release\modules\GalaSoft.MvvmLight.Extras.dll"/>
|
||||
<File DestinationPath="modules\System.Windows.Interactivity.dll" SourcePath="..\..\x64\Release\modules\System.Windows.Interactivity.dll"/>
|
||||
<File DestinationPath="modules\Newtonsoft.Json.dll" SourcePath="..\..\x64\Release\modules\Newtonsoft.Json.dll"/>
|
||||
<File DestinationPath="modules\System.Text.Json.dll" SourcePath="..\..\x64\Release\modules\System.Text.Json.dll"/>
|
||||
<File DestinationPath="modules\System.Memory.dll" SourcePath="..\..\x64\Release\modules\System.Memory.dll"/>
|
||||
<File DestinationPath="modules\System.Buffers.dll" SourcePath="..\..\x64\Release\modules\System.Buffers.dll"/>
|
||||
@ -41,6 +48,27 @@
|
||||
<File DestinationPath="svgs\*" SourcePath="..\..\x64\Release\svgs\*"/>
|
||||
<File DestinationPath="settings-html\**" SourcePath="..\..\x64\Release\settings-html\**"/>
|
||||
<File DestinationPath="Images\*.png" SourcePath="Images\*.png"/>
|
||||
|
||||
<!-- Resource files for ar,bg,ca,cs,de,es,eu-ES,fr,he,hu,it,nb-NO,nl,pl,pt-BR,ru,sk,tr,zh-Hans -->
|
||||
<File DestinationPath="modules\ar\**" SourcePath="..\..\x64\Release\modules\ar\**"/>
|
||||
<File DestinationPath="modules\bg\**" SourcePath="..\..\x64\Release\modules\bg\**"/>
|
||||
<File DestinationPath="modules\ca\**" SourcePath="..\..\x64\Release\modules\ca\**"/>
|
||||
<File DestinationPath="modules\cs\**" SourcePath="..\..\x64\Release\modules\cs\**"/>
|
||||
<File DestinationPath="modules\de\**" SourcePath="..\..\x64\Release\modules\de\**"/>
|
||||
<File DestinationPath="modules\es\**" SourcePath="..\..\x64\Release\modules\es\**"/>
|
||||
<File DestinationPath="modules\eu-ES\**" SourcePath="..\..\x64\Release\modules\eu-ES\**"/>
|
||||
<File DestinationPath="modules\fr\**" SourcePath="..\..\x64\Release\modules\fr\**"/>
|
||||
<File DestinationPath="modules\he\**" SourcePath="..\..\x64\Release\modules\he\**"/>
|
||||
<File DestinationPath="modules\hu\**" SourcePath="..\..\x64\Release\modules\hu\**"/>
|
||||
<File DestinationPath="modules\it\**" SourcePath="..\..\x64\Release\modules\it\**"/>
|
||||
<File DestinationPath="modules\nb-NO\**" SourcePath="..\..\x64\Release\modules\nb-NO\**"/>
|
||||
<File DestinationPath="modules\nl\**" SourcePath="..\..\x64\Release\modules\nl\**"/>
|
||||
<File DestinationPath="modules\pl\**" SourcePath="..\..\x64\Release\modules\pl\**"/>
|
||||
<File DestinationPath="modules\pt-BR\**" SourcePath="..\..\x64\Release\modules\pt-BR\**"/>
|
||||
<File DestinationPath="modules\ru\**" SourcePath="..\..\x64\Release\modules\ru\**"/>
|
||||
<File DestinationPath="modules\sk\**" SourcePath="..\..\x64\Release\modules\sk\**"/>
|
||||
<File DestinationPath="modules\tr\**" SourcePath="..\..\x64\Release\modules\tr\**"/>
|
||||
<File DestinationPath="modules\zh-Hans\**" SourcePath="..\..\x64\Release\modules\zh-Hans\**"/>
|
||||
</Files>
|
||||
</Package>
|
||||
</PackageFamily>
|
||||
|
@ -39,6 +39,9 @@
|
||||
<com:ExeServer Executable="modules\PowerRenameUWPUI.exe" DisplayName="PowerRenameUWPUI">
|
||||
<com:Class Id="0440049F-D1DC-4E46-B27B-98393D79486B"/>
|
||||
</com:ExeServer>
|
||||
<com:SurrogateServer DisplayName="ImageResizerExt">
|
||||
<com:Class Id="51B4D7E5-7568-4234-B4BB-47FB3C016A69" Path="modules\ImageResizerExt.dll" ThreadingModel="STA"/>
|
||||
</com:SurrogateServer>
|
||||
</com:ComServer>
|
||||
</com:Extension>
|
||||
<desktop4:Extension Category="windows.fileExplorerContextMenus">
|
||||
@ -49,6 +52,9 @@
|
||||
<desktop5:ItemType Type="Directory">
|
||||
<desktop5:Verb Id="DirectoryPowerRename" Clsid="0440049F-D1DC-4E46-B27B-98393D79486B" />
|
||||
</desktop5:ItemType>
|
||||
<desktop4:ItemType Type="*">
|
||||
<desktop4:Verb Id="ImageResizer" Clsid="51B4D7E5-7568-4234-B4BB-47FB3C016A69" />
|
||||
</desktop4:ItemType>
|
||||
</desktop4:FileExplorerContextMenus>
|
||||
</desktop4:Extension>
|
||||
<uap:Extension Category="windows.fileTypeAssociation">
|
||||
|
@ -22,7 +22,7 @@
|
||||
Property="PREVIOUSVERSIONSINSTALLED"
|
||||
IncludeMinimum="yes" IncludeMaximum="no" />
|
||||
</Upgrade>
|
||||
|
||||
|
||||
<MediaTemplate EmbedCab="yes" />
|
||||
|
||||
<Property Id="WINDOWSBUILDNUMBER" Secure="yes">
|
||||
@ -37,6 +37,7 @@
|
||||
<Feature Id="CoreFeature" Title="PowerToys" AllowAdvertise="no" Absent="disallow" TypicalDefault="install"
|
||||
Description="Contains the Shortcut Guide and Fancy Zones features.">
|
||||
<ComponentGroupRef Id="CoreComponents" />
|
||||
<ComponentGroupRef Id="ResourcesComponents" />
|
||||
</Feature>
|
||||
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
|
||||
<UI>
|
||||
@ -66,6 +67,9 @@
|
||||
<Property Id ="EXISTINGPOWERRENAMEEXTPATH">
|
||||
<RegistrySearch Id="ExistingExtPath" Root="HKCR" Key="CLSID\{0440049F-D1DC-4E46-B27B-98393D79486B}\InprocServer32" Type="raw"/>
|
||||
</Property>
|
||||
<Property Id ="EXISTINGIMAGERESIZERPATH">
|
||||
<RegistrySearch Id="ExistingImageResizerPath" Root="HKCU" Key="Software\Classes\CLSID\{51B4D7E5-7568-4234-B4BB-47FB3C016A69}\InprocServer32" Type="raw"/>
|
||||
</Property>
|
||||
|
||||
<InstallExecuteSequence>
|
||||
<Custom Action="SetRegisterPowerToysSchTaskParam" Before="RegisterPowerToysSchTask" />
|
||||
@ -144,7 +148,7 @@
|
||||
BinaryKey="PTCustomActions"
|
||||
DllEntry="TelemetryLogUninstallFailCA"
|
||||
/>
|
||||
|
||||
|
||||
<CustomAction Id="TelemetryLogRepairCancel"
|
||||
Return="ignore"
|
||||
Impersonate="yes"
|
||||
@ -161,9 +165,9 @@
|
||||
|
||||
<!-- Close 'PowerToys.exe' before uninstall-->
|
||||
<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" />
|
||||
<!-- Restart explorer.exe if we detect existing powerrenameext.dll installation -->
|
||||
<!-- Restart explorer.exe if we detect existing PowerRenameExt.dll or ImageResizerExt.dll installation -->
|
||||
<util:CloseApplication Target="explorer.exe" RebootPrompt="no" TerminateProcess="0">
|
||||
EXISTINGPOWERRENAMEEXTPATH
|
||||
EXISTINGPOWERRENAMEEXTPATH OR EXISTINGIMAGERESIZERPATH
|
||||
</util:CloseApplication>
|
||||
<util:CloseApplication CloseMessage="yes" Target="PowerToys.exe" ElevatedCloseMessage="yes" RebootPrompt="no" TerminateProcess="0" />
|
||||
</Product>
|
||||
@ -177,7 +181,25 @@
|
||||
<Directory Id="ProgramFiles64Folder">
|
||||
<Directory Id="INSTALLFOLDER" Name="PowerToys">
|
||||
<Directory Id="SvgsInstallFolder" Name="svgs"/>
|
||||
<Directory Id="ModulesInstallFolder" Name="modules"/>
|
||||
<Directory Id="ModulesInstallFolder" Name="modules">
|
||||
<!-- Resource file directories -->
|
||||
<?foreach Language in ar;bg;ca;cs;de;es;eu-ES;fr;he;hu;it;nb-NO;nl;pl;pt-BR;ru;sk;tr;zh-Hans?>
|
||||
<!--NB: Ids can't contain hyphens-->
|
||||
<?if $(var.Language) = eu-ES?>
|
||||
<?define IdSafeLanguage = eu_ES?>
|
||||
<?elseif $(var.Language) = nb-NO?>
|
||||
<?define IdSafeLanguage = nb_NO?>
|
||||
<?elseif $(var.Language) = pt-BR?>
|
||||
<?define IdSafeLanguage = pt_BR?>
|
||||
<?elseif $(var.Language) = zh-Hans?>
|
||||
<?define IdSafeLanguage = zh_Hans?>
|
||||
<?else?>
|
||||
<?define IdSafeLanguage = $(var.Language)?>
|
||||
<?endif?>
|
||||
<Directory Id="Resources$(var.IdSafeLanguage)Folder" Name="$(var.Language)" />
|
||||
<?undef IdSafeLanguage?>
|
||||
<?endforeach?>
|
||||
</Directory>
|
||||
<Directory Id="SettingsHtmlInstallFolder" Name="settings-html">
|
||||
<Directory Id="SettingsHtmlDistInstallFolder" Name="dist"/>
|
||||
</Directory>
|
||||
@ -274,9 +296,87 @@
|
||||
<RegistryValue Type="string" Key="InprocServer32" Name="ThreadingModel" Value="Apartment" />
|
||||
</RegistryKey>
|
||||
<RegistryKey Root="HKCR" Key="AllFileSystemObjects\ShellEx\ContextMenuHandlers\PowerRenameExt">
|
||||
<RegistryValue Type="string" Value="{0440049F-D1DC-4E46-B27B-98393D79486B}"/>
|
||||
<RegistryValue Type="string" Value="{0440049F-D1DC-4E46-B27B-98393D79486B}"/>
|
||||
</RegistryKey>
|
||||
</Component>
|
||||
<Component Id="Module_ImageResizer" Guid="96E63289-759C-4A73-A56B-EE7429932F72" Win64="yes">
|
||||
<File Source="$(var.BinX64Dir)\modules\ImageResizer.exe">
|
||||
<netfx:NativeImage Id="ImageResizer.exe" Platform="all" Priority="0" />
|
||||
</File>
|
||||
<File Source="$(var.BinX64Dir)\modules\GalaSoft.MvvmLight.dll" />
|
||||
<File Source="$(var.BinX64Dir)\modules\GalaSoft.MvvmLight.Platform.dll" />
|
||||
<File Source="$(var.BinX64Dir)\modules\GalaSoft.MvvmLight.Extras.dll" />
|
||||
<File Source="$(var.BinX64Dir)\modules\System.Windows.Interactivity.dll">
|
||||
<!-- NB: Needed since it's only referenced in XAML. -->
|
||||
<netfx:NativeImage Id="Interactivity" Platform="all" Priority="0"/>
|
||||
</File>
|
||||
<File Source="$(var.BinX64Dir)\modules\Newtonsoft.Json.dll" />
|
||||
<File Source="$(var.BinX64Dir)\modules\ImageResizerExt.dll" KeyPath="yes" />
|
||||
</Component>
|
||||
<Component Id="Module_ImageResizer_Registry" Guid="8B593E2C-2D9B-4EBC-93F7-A2B69707DAC9" Win64="yes">
|
||||
<RegistryKey Root="HKCU" Key="Software\Classes\CLSID\{51B4D7E5-7568-4234-B4BB-47FB3C016A69}\InprocServer32">
|
||||
<RegistryValue Value="[ModulesInstallFolder]ImageResizerExt.dll" Type="string" />
|
||||
<RegistryValue Name="ThreadingModel" Value="Apartment" Type="string" />
|
||||
</RegistryKey>
|
||||
<!-- Registry Key for the drag and drop handler -->
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\Directory\ShellEx\DragDropHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<!-- Registry Keys for the context menu handler for each of the following image formats: bmp, dib, gif, jfif, jpe, jpeg, jpg, jxr, png, rle, tif, tiff, wdp -->
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.bmp\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.dib\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.gif\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.jfif\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.jpe\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.jpeg\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.jpg\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.jxr\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.png\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.rle\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.tif\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.tiff\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
<RegistryValue Root="HKCU"
|
||||
Key="Software\Classes\SystemFileAssociations\.wdp\ShellEx\ContextMenuHandlers\ImageResizer"
|
||||
Value="{51B4D7E5-7568-4234-B4BB-47FB3C016A69}"
|
||||
Type="string" />
|
||||
</Component>
|
||||
<Component Id="Module_PowerPreview" Guid="FF1700D5-1B07-4E07-9A62-4D206645EEA9" Win64="yes">
|
||||
<!-- Component to include PowerPreview Module Source dll's -->
|
||||
<!-- File to include PowerPreview Module native dll -->
|
||||
@ -397,6 +497,8 @@
|
||||
<ComponentRef Id="Module_FancyZones" />
|
||||
<ComponentRef Id="DesktopShortcut" />
|
||||
<ComponentRef Id="Module_PowerRename" />
|
||||
<ComponentRef Id="Module_ImageResizer" />
|
||||
<ComponentRef Id="Module_ImageResizer_Registry" />
|
||||
<ComponentRef Id="Module_PowerPreview" />
|
||||
<ComponentRef Id="Module_PowerPreview_PerUserRegistry" />
|
||||
<ComponentRef Id="settings_exe" />
|
||||
@ -405,4 +507,27 @@
|
||||
<ComponentRef Id="settings_js_bundle" />
|
||||
</ComponentGroup>
|
||||
</Fragment>
|
||||
<Fragment>
|
||||
<ComponentGroup Id="ResourcesComponents">
|
||||
<!-- Components for adding resource files -->
|
||||
<?foreach Language in ar;bg;ca;cs;de;es;eu-ES;fr;he;hu;it;nb-NO;nl;pl;pt-BR;ru;sk;tr;zh-Hans?>
|
||||
<!--NB: Ids can't contain hyphens-->
|
||||
<?if $(var.Language) = eu-ES?>
|
||||
<?define IdSafeLanguage = eu_ES?>
|
||||
<?elseif $(var.Language) = nb-NO?>
|
||||
<?define IdSafeLanguage = nb_NO?>
|
||||
<?elseif $(var.Language) = pt-BR?>
|
||||
<?define IdSafeLanguage = pt_BR?>
|
||||
<?elseif $(var.Language) = zh-Hans?>
|
||||
<?define IdSafeLanguage = zh_Hans?>
|
||||
<?else?>
|
||||
<?define IdSafeLanguage = $(var.Language)?>
|
||||
<?endif?>
|
||||
<Component Id="Resources_$(var.IdSafeLanguage)_Component" Directory="Resources$(var.IdSafeLanguage)Folder">
|
||||
<File Id="Resources_ImageResizer_$(var.IdSafeLanguage)_File" Source="$(var.BinX64Dir)\modules\$(var.Language)\ImageResizer.resources.dll" />
|
||||
</Component>
|
||||
<?undef IdSafeLanguage?>
|
||||
<?endforeach?>
|
||||
</ComponentGroup>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
|
@ -20,7 +20,7 @@ For the first-time installation, you'll need to generate a self-signed certifica
|
||||
**Note:** if you delete the folder, you will have to regenerate the key
|
||||
|
||||
#### Elevate `Developer PowerShell for VS` permissions due to unsigned file
|
||||
`msix_reinstall.ps1` is unsigned, you'll need to elevate your prompt.
|
||||
`reinstall_msix.ps1` is unsigned, you'll need to elevate your prompt.
|
||||
1. Open `Developer PowerShell for VS` as admin
|
||||
2. Run `Set-ExecutionPolicy -executionPolicy Unrestricted`
|
||||
|
||||
@ -31,10 +31,10 @@ In order to install the MSIX package without using the Microsoft Store, sideload
|
||||
1. Make sure you've built the `Release` configuration of `powertoys.sln`
|
||||
2. Open `Developer PowerShell for VS`
|
||||
3. Navigate to your repo's `installer\MSIX`
|
||||
4. Run `.\msix_reinstall.ps1` from the devenv powershell
|
||||
4. Run `.\reinstall_msix.ps1` from the devenv powershell
|
||||
|
||||
### What msix_reinstall.ps1 does
|
||||
`msix_reinstall.ps1` removes the current PowerToys installation, restarts explorer.exe (to update PowerRename shell extension), builds `PowerToys-x64.msix` package, signs it with a PowerToys_TemporaryKey.pfx, and finally installs it.
|
||||
### What reinstall_msix.ps1 does
|
||||
`reinstall_msix.ps1` removes the current PowerToys installation, restarts explorer.exe (to update PowerRename and ImageResizer shell extension), builds `PowerToys-x64.msix` package, signs it with a PowerToys_TemporaryKey.pfx, and finally installs it.
|
||||
|
||||
## Cleanup - Removing all .msi/.msix PowerToys installations
|
||||
```ps
|
||||
|
0
src/modules/imageresizer/README.md
Normal file
47
src/modules/imageresizer/codeAnalysis/GlobalSuppressions.cs
Normal file
@ -0,0 +1,47 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
// This file is used by Code Analysis to maintain SuppressMessage
|
||||
// attributes that are applied to this project.
|
||||
// Project-level suppressions either have no target or are given
|
||||
// a specific target and scoped to a namespace, type, member, etc.
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
[assembly: SuppressMessage("StyleCop.CSharp.SpacingRules", "SA1009:ClosingParenthesisMustBeSpacedCorrectly", Justification = "All current violations are due to Tuple shorthand and so valid.")]
|
||||
|
||||
[assembly: SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1101:PrefixLocalCallsWithThis", Justification = "We follow the C# Core Coding Style which avoids using `this` unless absolutely necessary.")]
|
||||
|
||||
[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1200:UsingDirectivesMustBePlacedWithinNamespace", Justification = "We follow the C# Core Coding Style which puts using statements outside the namespace.")]
|
||||
[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1201:ElementsMustAppearInTheCorrectOrder", Justification = "It is not a priority and have hight impact in code changes.")]
|
||||
[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1202:ElementsMustBeOrderedByAccess", Justification = "It is not a priority and have hight impact in code changes.")]
|
||||
[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1203:ConstantsMustAppearBeforeFields", Justification = "It is not a priority and have hight impact in code changes.")]
|
||||
[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1204:StaticElementsMustAppearBeforeInstanceElements", Justification = "It is not a priority and have hight impact in code changes.")]
|
||||
|
||||
[assembly: SuppressMessage("StyleCop.CSharp.NamingRules", "SA1309:FieldNamesMustNotBeginWithUnderscore", Justification = "We follow the C# Core Coding Style which uses underscores as prefixes rather than using `this.`.")]
|
||||
|
||||
[assembly: SuppressMessage("StyleCop.CSharp.SpecialRules", "SA0001:XmlCommentAnalysisDisabled", Justification = "Not enabled as we don't want or need XML documentation.")]
|
||||
[assembly: SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1629:DocumentationTextMustEndWithAPeriod", Justification = "Not enabled as we don't want or need XML documentation.")]
|
||||
|
||||
[assembly: SuppressMessage("Microsoft.Design", "CA1009:DeclareEventHandlersCorrectly", Scope = "member", Target = "Microsoft.Templates.Core.Locations.TemplatesSynchronization.#SyncStatusChanged", Justification = "Using an Action<object, SyncStatusEventArgs> does not allow the required notation")]
|
||||
|
||||
// Non general supressions
|
||||
[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", Justification = "The WebBrowser is loading source code to be shown to the user. No localization required.", MessageId = "System.Windows.Controls.WebBrowser.NavigateToString(System.String)", Scope = "member", Target = "Microsoft.Templates.UI.Controls.CodeViewer.#UpdateCodeView(System.Func`2<System.String,System.String>,System.String,System.String,System.Boolean)")]
|
||||
[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", Justification = "This is part of the markdown processing", MessageId = "System.Windows.Documents.Run.#ctor(System.String)", Scope = "member", Target = "Microsoft.Templates.UI.Controls.Markdown.#ImageInlineEvaluator(System.Text.RegularExpressions.Match)")]
|
||||
[assembly: SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase", Justification = "We need to have the names of these keys in lowercase to be able to compare with the keys becoming form the template json. ContainsKey does not allow StringComparer especification to IgnoreCase", Scope = "member", Target = "Microsoft.Templates.Core.ITemplateInfoExtensions.#GetQueryableProperties(Microsoft.TemplateEngine.Abstractions.ITemplateInfo)")]
|
||||
[assembly: SuppressMessage("Microsoft.Globalization", "CA1308:NormalizeStringsToUppercase", Justification = "We need to have the names of these keys in lowercase to be able to compare with the keys becoming form the template json. ContainsKey does not allow StringComparer especification to IgnoreCase", Scope = "member", Target = "Microsoft.Templates.Core.Composition.CompositionQuery.#Match(System.Collections.Generic.IEnumerable`1<Microsoft.Templates.Core.Composition.QueryNode>,Microsoft.Templates.Core.Composition.QueryablePropertyDictionary)")]
|
||||
[assembly: SuppressMessage("Usage", "VSTHRD103:Call async methods when in an async method", Justification = "Resource DictionaryWriter does not implement flush async", Scope = "member", Target = "~M:Microsoft.Templates.Core.PostActions.Catalog.Merge.MergeResourceDictionaryPostAction.ExecuteInternalAsync~System.Threading.Tasks.Task")]
|
||||
|
||||
// Threading supressions
|
||||
[assembly: SuppressMessage("Microsoft.VisualStudio.Threading.Analyzers", "VSTHRD100:Avoid async void methods", Justification = "Event handlers needs async void", Scope = "member", Target = "~M:Microsoft.Templates.UI.Controls.Notification.OnClose")]
|
||||
[assembly: SuppressMessage("Microsoft.VisualStudio.Threading.Analyzers", "VSTHRD100:Avoid async void methods", Justification = "Event handlers needs async void", Scope = "member", Target = "~M:Microsoft.Templates.UI.ViewModels.Common.SavedTemplateViewModel.OnDelete")]
|
||||
[assembly: SuppressMessage("Microsoft.VisualStudio.Threading.Analyzers", "VSTHRD100:Avoid async void methods", Justification = "Event handlers needs async void", Scope = "member", Target = "~M:Microsoft.Templates.UI.ViewModels.Common.WizardNavigation.GoBack")]
|
||||
[assembly: SuppressMessage("Microsoft.VisualStudio.Threading.Analyzers", "VSTHRD100:Avoid async void methods", Justification = "Event handlers needs async void", Scope = "member", Target = "~M:Microsoft.Templates.UI.ViewModels.Common.WizardNavigation.GoForward")]
|
||||
[assembly: SuppressMessage("Microsoft.VisualStudio.Threading.Analyzers", "VSTHRD100:Avoid async void methods", Justification = "Event handlers needs async void", Scope = "member", Target = "~M:Microsoft.Templates.UI.ViewModels.Common.SavedTemplateViewModel.OnDelete(Microsoft.Templates.UI.ViewModels.Common.SavedTemplateViewModel)")]
|
||||
|
||||
// Localization suppressions
|
||||
[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "Microsoft.Templates.Core.Locations.JunctionNativeMethods.ThrowLastWin32Error(System.String)", Scope = "member", Target = "Microsoft.Templates.Core.Locations.JunctionNativeMethods.#CreateJunction(System.String,System.String,System.Boolean)", Justification = "Only used for local generation")]
|
||||
[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "Microsoft.Templates.Core.Locations.JunctionNativeMethods.ThrowLastWin32Error(System.String)", Scope = "member", Target = "Microsoft.Templates.Core.Locations.JunctionNativeMethods.#DeleteJunction(System.String)", Justification = "Only used for local generation")]
|
||||
[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "Microsoft.Templates.Core.Locations.JunctionNativeMethods.ThrowLastWin32Error(System.String)", Scope = "member", Target = "Microsoft.Templates.Core.Locations.JunctionNativeMethods.#InternalGetTarget(Microsoft.Win32.SafeHandles.SafeFileHandle)", Justification = "Only used for local generation")]
|
||||
[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "Microsoft.Templates.Core.Locations.JunctionNativeMethods.ThrowLastWin32Error(System.String)", Scope = "member", Target = "Microsoft.Templates.Core.Locations.JunctionNativeMethods.#OpenReparsePoint(System.String,Microsoft.Templates.Core.Locations.JunctionNativeMethods+EFileAccess)", Justification = "Only used for local generation")]
|
||||
[assembly: SuppressMessage("Microsoft.Globalization", "CA1303:Do not pass literals as localized parameters", MessageId = "System.Windows.Documents.InlineCollection.Add(System.String)", Scope = "member", Target = "Microsoft.Templates.UI.Extensions.TextBlockExtensions.#OnSequentialFlowStepChanged(System.Windows.DependencyObject,System.Windows.DependencyPropertyChangedEventArgs)", Justification = "No text here")]
|
407
src/modules/imageresizer/dll/ContextMenuHandler.cpp
Normal file
@ -0,0 +1,407 @@
|
||||
// ContextMenuHandler.cpp : Implementation of CContextMenuHandler
|
||||
|
||||
#include "stdafx.h"
|
||||
#include "ContextMenuHandler.h"
|
||||
#include "HDropIterator.h"
|
||||
#include "Settings.h"
|
||||
#include "common/icon_helpers.h"
|
||||
#include "trace.h"
|
||||
|
||||
extern HINSTANCE g_hInst_imageResizer;
|
||||
|
||||
CContextMenuHandler::CContextMenuHandler()
|
||||
{
|
||||
m_pidlFolder = NULL;
|
||||
m_pdtobj = NULL;
|
||||
app_name = GET_RESOURCE_STRING(IDS_RESIZE_PICTURES);
|
||||
}
|
||||
|
||||
CContextMenuHandler::~CContextMenuHandler()
|
||||
{
|
||||
Uninitialize();
|
||||
}
|
||||
|
||||
void CContextMenuHandler::Uninitialize()
|
||||
{
|
||||
CoTaskMemFree((LPVOID)m_pidlFolder);
|
||||
m_pidlFolder = NULL;
|
||||
|
||||
if (m_pdtobj)
|
||||
{
|
||||
m_pdtobj->Release();
|
||||
m_pdtobj = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
HRESULT CContextMenuHandler::Initialize(_In_opt_ PCIDLIST_ABSOLUTE pidlFolder, _In_opt_ IDataObject* pdtobj, _In_opt_ HKEY hkeyProgID)
|
||||
{
|
||||
Uninitialize();
|
||||
|
||||
if (!CSettings::GetEnabled())
|
||||
{
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
if (pidlFolder)
|
||||
{
|
||||
m_pidlFolder = ILClone(pidlFolder);
|
||||
}
|
||||
|
||||
if (pdtobj)
|
||||
{
|
||||
m_pdtobj = pdtobj;
|
||||
m_pdtobj->AddRef();
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT CContextMenuHandler::QueryContextMenu(_In_ HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags)
|
||||
{
|
||||
if (uFlags & CMF_DEFAULTONLY)
|
||||
{
|
||||
return S_OK;
|
||||
}
|
||||
if (!CSettings::GetEnabled())
|
||||
{
|
||||
return E_FAIL;
|
||||
}
|
||||
// NB: We just check the first item. We could iterate through more if the first one doesn't meet the criteria
|
||||
HDropIterator i(m_pdtobj);
|
||||
i.First();
|
||||
// Suppressing C26812 warning as the issue is in the shtypes.h library
|
||||
#pragma warning(suppress : 26812)
|
||||
PERCEIVED type;
|
||||
PERCEIVEDFLAG flag;
|
||||
LPTSTR pszPath = i.CurrentItem();
|
||||
LPTSTR pszExt = PathFindExtension(pszPath);
|
||||
|
||||
// TODO: Instead, detect whether there's a WIC codec installed that can handle this file
|
||||
AssocGetPerceivedType(pszExt, &type, &flag, NULL);
|
||||
|
||||
free(pszPath);
|
||||
bool dragDropFlag = false;
|
||||
// If selected file is an image...
|
||||
if (type == PERCEIVED_TYPE_IMAGE)
|
||||
{
|
||||
HRESULT hr = E_UNEXPECTED;
|
||||
wchar_t strResizePictures[64] = { 0 };
|
||||
// If handling drag-and-drop...
|
||||
if (m_pidlFolder)
|
||||
{
|
||||
// Suppressing C6031 warning since return value is not required.
|
||||
#pragma warning(suppress : 6031)
|
||||
// Load 'Resize pictures here' string
|
||||
LoadString(g_hInst_imageResizer, IDS_RESIZE_PICTURES_HERE, strResizePictures, ARRAYSIZE(strResizePictures));
|
||||
dragDropFlag = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Suppressing C6031 warning since return value is not required.
|
||||
#pragma warning(suppress : 6031)
|
||||
// Load 'Resize pictures' string
|
||||
LoadString(g_hInst_imageResizer, IDS_RESIZE_PICTURES, strResizePictures, ARRAYSIZE(strResizePictures));
|
||||
}
|
||||
|
||||
MENUITEMINFO mii;
|
||||
mii.cbSize = sizeof(MENUITEMINFO);
|
||||
mii.fMask = MIIM_STRING | MIIM_FTYPE | MIIM_ID | MIIM_STATE;
|
||||
mii.wID = idCmdFirst + ID_RESIZE_PICTURES;
|
||||
mii.fType = MFT_STRING;
|
||||
mii.dwTypeData = (PWSTR)strResizePictures;
|
||||
mii.fState = MFS_ENABLED;
|
||||
HICON hIcon = (HICON)LoadImage(g_hInst_imageResizer, MAKEINTRESOURCE(IDI_RESIZE_PICTURES), IMAGE_ICON, 16, 16, 0);
|
||||
if (hIcon)
|
||||
{
|
||||
mii.fMask |= MIIM_BITMAP;
|
||||
if (m_hbmpIcon == NULL)
|
||||
{
|
||||
m_hbmpIcon = CreateBitmapFromIcon(hIcon);
|
||||
}
|
||||
mii.hbmpItem = m_hbmpIcon;
|
||||
DestroyIcon(hIcon);
|
||||
}
|
||||
|
||||
if (dragDropFlag)
|
||||
{
|
||||
// Insert the menu entry at indexMenu+1 since the first entry should be "Copy here"
|
||||
indexMenu++;
|
||||
}
|
||||
else
|
||||
{
|
||||
// indexMenu gets the first possible menu item index based on the location of the shellex registry key.
|
||||
// If the registry entry is under SystemFileAssociations for the image formats, ShellImagePreview (in Windows by default) will be at indexMenu=0
|
||||
// Shell ImagePreview consists of 4 menu items, a separator, Rotate right, Rotate left, and another separator
|
||||
// Check if the entry at indexMenu is a separator, insert the new menu item at indexMenu+1 if true
|
||||
MENUITEMINFO miiExisting;
|
||||
miiExisting.dwTypeData = NULL;
|
||||
miiExisting.fMask = MIIM_TYPE;
|
||||
miiExisting.cbSize = sizeof(MENUITEMINFO);
|
||||
GetMenuItemInfo(hmenu, indexMenu, TRUE, &miiExisting);
|
||||
if (miiExisting.fType == MFT_SEPARATOR)
|
||||
{
|
||||
indexMenu++;
|
||||
}
|
||||
}
|
||||
|
||||
if (!InsertMenuItem(hmenu, indexMenu, TRUE, &mii))
|
||||
{
|
||||
hr = HRESULT_FROM_WIN32(GetLastError());
|
||||
}
|
||||
else
|
||||
{
|
||||
hr = MAKE_HRESULT(SEVERITY_SUCCESS, FACILITY_NULL, 1);
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT CContextMenuHandler::GetCommandString(UINT_PTR idCmd, UINT uType, _In_ UINT* pReserved, LPSTR pszName, UINT cchMax)
|
||||
{
|
||||
if (idCmd == ID_RESIZE_PICTURES)
|
||||
{
|
||||
if (uType == GCS_VERBW)
|
||||
{
|
||||
wcscpy_s((LPWSTR)pszName, cchMax, RESIZE_PICTURES_VERBW);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return E_INVALIDARG;
|
||||
}
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT CContextMenuHandler::InvokeCommand(_In_ CMINVOKECOMMANDINFO* pici)
|
||||
{
|
||||
BOOL fUnicode = FALSE;
|
||||
Trace::Invoked();
|
||||
HRESULT hr = E_FAIL;
|
||||
if (pici->cbSize == sizeof(CMINVOKECOMMANDINFOEX) && pici->fMask & CMIC_MASK_UNICODE)
|
||||
{
|
||||
fUnicode = TRUE;
|
||||
}
|
||||
|
||||
if (!fUnicode && HIWORD(pici->lpVerb))
|
||||
{
|
||||
}
|
||||
else if (fUnicode && HIWORD(((CMINVOKECOMMANDINFOEX*)pici)->lpVerbW))
|
||||
{
|
||||
if (wcscmp(((CMINVOKECOMMANDINFOEX*)pici)->lpVerbW, RESIZE_PICTURES_VERBW) == 0)
|
||||
{
|
||||
hr = ResizePictures(pici, nullptr);
|
||||
}
|
||||
}
|
||||
else if (LOWORD(pici->lpVerb) == ID_RESIZE_PICTURES)
|
||||
{
|
||||
hr = ResizePictures(pici, nullptr);
|
||||
}
|
||||
Trace::InvokedRet(hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
// This function is used for both MSI and MSIX. If pici is null and psiItemArray is not null then this is called by Invoke(MSIX). If pici is not null and psiItemArray is null then this is called by InvokeCommand(MSI).
|
||||
HRESULT CContextMenuHandler::ResizePictures(CMINVOKECOMMANDINFO* pici, IShellItemArray* psiItemArray)
|
||||
{
|
||||
// Set the application path based on the location of the dll
|
||||
std::wstring path = get_module_folderpath(g_hInst_imageResizer);
|
||||
path = path + L"\\ImageResizer.exe";
|
||||
LPTSTR lpApplicationName = (LPTSTR)path.c_str();
|
||||
// Create an anonymous pipe to stream filenames
|
||||
SECURITY_ATTRIBUTES sa;
|
||||
HANDLE hReadPipe;
|
||||
HANDLE hWritePipe;
|
||||
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
|
||||
sa.lpSecurityDescriptor = NULL;
|
||||
sa.bInheritHandle = TRUE;
|
||||
HRESULT hr = E_FAIL;
|
||||
if (!CreatePipe(&hReadPipe, &hWritePipe, &sa, 0))
|
||||
{
|
||||
Trace::InvokedRet(hr);
|
||||
return hr;
|
||||
}
|
||||
if (!SetHandleInformation(hWritePipe, HANDLE_FLAG_INHERIT, 0))
|
||||
{
|
||||
Trace::InvokedRet(hr);
|
||||
return hr;
|
||||
}
|
||||
CAtlFile writePipe(hWritePipe);
|
||||
|
||||
CString commandLine;
|
||||
commandLine.Format(_T("\"%s\""), lpApplicationName);
|
||||
|
||||
// Set the output directory
|
||||
if (m_pidlFolder)
|
||||
{
|
||||
TCHAR szFolder[MAX_PATH];
|
||||
SHGetPathFromIDList(m_pidlFolder, szFolder);
|
||||
|
||||
commandLine.AppendFormat(_T(" /d \"%s\""), szFolder);
|
||||
}
|
||||
|
||||
int nSize = commandLine.GetLength() + 1;
|
||||
LPTSTR lpszCommandLine = new TCHAR[nSize];
|
||||
_tcscpy_s(lpszCommandLine, nSize, commandLine);
|
||||
|
||||
STARTUPINFO startupInfo;
|
||||
ZeroMemory(&startupInfo, sizeof(STARTUPINFO));
|
||||
startupInfo.cb = sizeof(STARTUPINFO);
|
||||
startupInfo.hStdInput = hReadPipe;
|
||||
startupInfo.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
|
||||
if (pici)
|
||||
{
|
||||
startupInfo.wShowWindow = pici->nShow;
|
||||
}
|
||||
else
|
||||
{
|
||||
startupInfo.wShowWindow = SW_SHOWNORMAL;
|
||||
}
|
||||
|
||||
PROCESS_INFORMATION processInformation;
|
||||
|
||||
// Start the resizer
|
||||
CreateProcess(
|
||||
NULL,
|
||||
lpszCommandLine,
|
||||
NULL,
|
||||
NULL,
|
||||
TRUE,
|
||||
0,
|
||||
NULL,
|
||||
NULL,
|
||||
&startupInfo,
|
||||
&processInformation);
|
||||
delete[] lpszCommandLine;
|
||||
if (!CloseHandle(processInformation.hProcess))
|
||||
{
|
||||
Trace::InvokedRet(hr);
|
||||
return hr;
|
||||
}
|
||||
if (!CloseHandle(processInformation.hThread))
|
||||
{
|
||||
Trace::InvokedRet(hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
// psiItemArray is NULL if called from InvokeCommand. This part is used for the MSI installer. It is not NULL if it is called from Invoke (MSIX).
|
||||
if (!psiItemArray)
|
||||
{
|
||||
// Stream the input files
|
||||
HDropIterator i(m_pdtobj);
|
||||
for (i.First(); !i.IsDone(); i.Next())
|
||||
{
|
||||
CString fileName(i.CurrentItem());
|
||||
fileName.Append(_T("\r\n"));
|
||||
|
||||
writePipe.Write(fileName, fileName.GetLength() * sizeof(TCHAR));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//m_pdtobj will be NULL when invoked from the MSIX build as Initialize is never called (IShellExtInit functions aren't called in case of MSIX).
|
||||
DWORD fileCount = 0;
|
||||
// Gets the list of files currently selected using the IShellItemArray
|
||||
psiItemArray->GetCount(&fileCount);
|
||||
// Iterate over the list of files
|
||||
for (DWORD i = 0; i < fileCount; i++)
|
||||
{
|
||||
IShellItem* shellItem;
|
||||
psiItemArray->GetItemAt(i, &shellItem);
|
||||
LPWSTR itemName;
|
||||
// Retrieves the entire file system path of the file from its shell item
|
||||
shellItem->GetDisplayName(SIGDN_FILESYSPATH, &itemName);
|
||||
CString fileName(itemName);
|
||||
fileName.Append(_T("\r\n"));
|
||||
// Write the file path into the input stream for image resizer
|
||||
writePipe.Write(fileName, fileName.GetLength() * sizeof(TCHAR));
|
||||
}
|
||||
}
|
||||
|
||||
writePipe.Close();
|
||||
hr = S_OK;
|
||||
Trace::InvokedRet(hr);
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT __stdcall CContextMenuHandler::GetTitle(IShellItemArray* /*psiItemArray*/, LPWSTR* ppszName)
|
||||
{
|
||||
return SHStrDup(app_name.c_str(), ppszName);
|
||||
}
|
||||
|
||||
HRESULT __stdcall CContextMenuHandler::GetIcon(IShellItemArray* /*psiItemArray*/, LPWSTR* ppszIcon)
|
||||
{
|
||||
// Since ImageResizer is registered as a COM SurrogateServer the current module filename would be dllhost.exe. To get the icon we need the path of ImageResizerExt.dll, which can be obtained by passing the HINSTANCE of the dll
|
||||
std::wstring iconResourcePath = get_module_filename(g_hInst_imageResizer);
|
||||
iconResourcePath += L",-";
|
||||
iconResourcePath += std::to_wstring(IDI_RESIZE_PICTURES);
|
||||
return SHStrDup(iconResourcePath.c_str(), ppszIcon);
|
||||
}
|
||||
|
||||
HRESULT __stdcall CContextMenuHandler::GetToolTip(IShellItemArray* /*psiItemArray*/, LPWSTR* ppszInfotip)
|
||||
{
|
||||
*ppszInfotip = nullptr;
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT __stdcall CContextMenuHandler::GetCanonicalName(GUID* pguidCommandName)
|
||||
{
|
||||
*pguidCommandName = __uuidof(this);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT __stdcall CContextMenuHandler::GetState(IShellItemArray* psiItemArray, BOOL fOkToBeSlow, EXPCMDSTATE* pCmdState)
|
||||
{
|
||||
if (!CSettings::GetEnabled())
|
||||
{
|
||||
*pCmdState = ECS_HIDDEN;
|
||||
return S_OK;
|
||||
}
|
||||
// Hide if the file is not an image
|
||||
*pCmdState = ECS_HIDDEN;
|
||||
// Suppressing C26812 warning as the issue is in the shtypes.h library
|
||||
#pragma warning(suppress : 26812)
|
||||
PERCEIVED type;
|
||||
PERCEIVEDFLAG flag;
|
||||
IShellItem* shellItem;
|
||||
//Check extension of first item in the list (the item which is right-clicked on)
|
||||
psiItemArray->GetItemAt(0, &shellItem);
|
||||
LPTSTR pszPath;
|
||||
// Retrieves the entire file system path of the file from its shell item
|
||||
shellItem->GetDisplayName(SIGDN_FILESYSPATH, &pszPath);
|
||||
LPTSTR pszExt = PathFindExtension(pszPath);
|
||||
|
||||
// TODO: Instead, detect whether there's a WIC codec installed that can handle this file
|
||||
AssocGetPerceivedType(pszExt, &type, &flag, NULL);
|
||||
|
||||
free(pszPath);
|
||||
// If selected file is an image...
|
||||
if (type == PERCEIVED_TYPE_IMAGE)
|
||||
{
|
||||
*pCmdState = ECS_ENABLED;
|
||||
}
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT __stdcall CContextMenuHandler::GetFlags(EXPCMDFLAGS* pFlags)
|
||||
{
|
||||
*pFlags = ECF_DEFAULT;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
HRESULT __stdcall CContextMenuHandler::EnumSubCommands(IEnumExplorerCommand** ppEnum)
|
||||
{
|
||||
*ppEnum = nullptr;
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
// psiItemArray contains the list of files that have been selected when the context menu entry is invoked
|
||||
HRESULT __stdcall CContextMenuHandler::Invoke(IShellItemArray* psiItemArray, IBindCtx* /*pbc*/)
|
||||
{
|
||||
Trace::Invoked();
|
||||
HRESULT hr = ResizePictures(nullptr, psiItemArray);
|
||||
Trace::InvokedRet(hr);
|
||||
return hr;
|
||||
}
|
57
src/modules/imageresizer/dll/ContextMenuHandler.h
Normal file
@ -0,0 +1,57 @@
|
||||
#pragma once
|
||||
|
||||
#define ID_RESIZE_PICTURES 0
|
||||
#define RESIZE_PICTURES_VERBW L"resize"
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "ImageResizerExt_i.h"
|
||||
|
||||
#if defined(_WIN32_WCE) && !defined(_CE_DCOM) && !defined(_CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA)
|
||||
#error "Single-threaded COM objects are not properly supported on Windows CE platform, such as the Windows Mobile platforms that do not include full DCOM support. Define _CE_ALLOW_SINGLE_THREADED_OBJECTS_IN_MTA to force ATL to support creating single-thread COM object's and allow use of it's single-threaded COM object implementations. The threading model in your rgs file was set to 'Free' as that is the only threading model supported in non DCOM Windows CE platforms."
|
||||
#endif
|
||||
|
||||
using namespace ATL;
|
||||
|
||||
class ATL_NO_VTABLE __declspec(uuid("51B4D7E5-7568-4234-B4BB-47FB3C016A69")) CContextMenuHandler :
|
||||
public CComObjectRootEx<CComSingleThreadModel>,
|
||||
public CComCoClass<CContextMenuHandler, &CLSID_ContextMenuHandler>,
|
||||
public IShellExtInit,
|
||||
public IContextMenu,
|
||||
public IExplorerCommand
|
||||
{
|
||||
BEGIN_COM_MAP(CContextMenuHandler)
|
||||
COM_INTERFACE_ENTRY(IShellExtInit)
|
||||
COM_INTERFACE_ENTRY(IContextMenu)
|
||||
COM_INTERFACE_ENTRY(IExplorerCommand)
|
||||
END_COM_MAP()
|
||||
DECLARE_REGISTRY_RESOURCEID(IDR_CONTEXTMENUHANDLER)
|
||||
DECLARE_NOT_AGGREGATABLE(CContextMenuHandler)
|
||||
|
||||
public:
|
||||
CContextMenuHandler();
|
||||
~CContextMenuHandler();
|
||||
HRESULT STDMETHODCALLTYPE Initialize(_In_opt_ PCIDLIST_ABSOLUTE pidlFolder, _In_opt_ IDataObject* pdtobj, _In_opt_ HKEY hkeyProgID);
|
||||
HRESULT STDMETHODCALLTYPE QueryContextMenu(_In_ HMENU hmenu, UINT indexMenu, UINT idCmdFirst, UINT idCmdLast, UINT uFlags);
|
||||
HRESULT STDMETHODCALLTYPE GetCommandString(UINT_PTR idCmd, UINT uType, _In_ UINT* pReserved, LPSTR pszName, UINT cchMax);
|
||||
HRESULT STDMETHODCALLTYPE InvokeCommand(_In_ CMINVOKECOMMANDINFO* pici);
|
||||
|
||||
// Inherited via IExplorerCommand
|
||||
virtual HRESULT __stdcall GetTitle(IShellItemArray* psiItemArray, LPWSTR* ppszName) override;
|
||||
virtual HRESULT __stdcall GetIcon(IShellItemArray* psiItemArray, LPWSTR* ppszIcon) override;
|
||||
virtual HRESULT __stdcall GetToolTip(IShellItemArray* psiItemArray, LPWSTR* ppszInfotip) override;
|
||||
virtual HRESULT __stdcall GetCanonicalName(GUID* pguidCommandName) override;
|
||||
virtual HRESULT __stdcall GetState(IShellItemArray* psiItemArray, BOOL fOkToBeSlow, EXPCMDSTATE* pCmdState) override;
|
||||
virtual HRESULT __stdcall Invoke(IShellItemArray* psiItemArray, IBindCtx* pbc) override;
|
||||
virtual HRESULT __stdcall GetFlags(EXPCMDFLAGS* pFlags) override;
|
||||
virtual HRESULT __stdcall EnumSubCommands(IEnumExplorerCommand** ppEnum) override;
|
||||
|
||||
private:
|
||||
void Uninitialize();
|
||||
HRESULT ResizePictures(CMINVOKECOMMANDINFO* pici, IShellItemArray* psiItemArray);
|
||||
PCIDLIST_ABSOLUTE m_pidlFolder;
|
||||
IDataObject* m_pdtobj;
|
||||
HBITMAP m_hbmpIcon = nullptr;
|
||||
std::wstring app_name;
|
||||
};
|
||||
|
||||
OBJECT_ENTRY_AUTO(__uuidof(ContextMenuHandler), CContextMenuHandler)
|
3
src/modules/imageresizer/dll/ContextMenuHandler.rgs
Normal file
@ -0,0 +1,3 @@
|
||||
HKCR
|
||||
{
|
||||
}
|
49
src/modules/imageresizer/dll/HDropIterator.cpp
Normal file
@ -0,0 +1,49 @@
|
||||
#include "StdAfx.h"
|
||||
#include "HDropIterator.h"
|
||||
|
||||
HDropIterator::HDropIterator(IDataObject* pdtobj)
|
||||
{
|
||||
_current = 0;
|
||||
|
||||
FORMATETC formatetc = {
|
||||
CF_HDROP,
|
||||
NULL,
|
||||
DVASPECT_CONTENT,
|
||||
-1,
|
||||
TYMED_HGLOBAL
|
||||
};
|
||||
|
||||
pdtobj->GetData(&formatetc, &m_medium);
|
||||
|
||||
_listCount = DragQueryFile((HDROP)m_medium.hGlobal, 0xFFFFFFFF, NULL, 0);
|
||||
}
|
||||
|
||||
HDropIterator::~HDropIterator()
|
||||
{
|
||||
ReleaseStgMedium(&m_medium);
|
||||
}
|
||||
|
||||
void HDropIterator::First()
|
||||
{
|
||||
_current = 0;
|
||||
}
|
||||
|
||||
void HDropIterator::Next()
|
||||
{
|
||||
_current++;
|
||||
}
|
||||
|
||||
bool HDropIterator::IsDone() const
|
||||
{
|
||||
return _current >= _listCount;
|
||||
}
|
||||
|
||||
LPTSTR HDropIterator::CurrentItem() const
|
||||
{
|
||||
UINT cch = DragQueryFile((HDROP)m_medium.hGlobal, _current, NULL, 0) + 1;
|
||||
LPTSTR pszPath = (LPTSTR)malloc(sizeof(TCHAR) * cch);
|
||||
|
||||
DragQueryFile((HDROP)m_medium.hGlobal, _current, pszPath, cch);
|
||||
|
||||
return pszPath;
|
||||
}
|
17
src/modules/imageresizer/dll/HDropIterator.h
Normal file
@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
class HDropIterator
|
||||
{
|
||||
public:
|
||||
HDropIterator(IDataObject *pDataObject);
|
||||
~HDropIterator();
|
||||
void First();
|
||||
void Next();
|
||||
bool IsDone() const;
|
||||
LPTSTR CurrentItem() const;
|
||||
|
||||
private:
|
||||
UINT _listCount;
|
||||
STGMEDIUM m_medium;
|
||||
UINT _current;
|
||||
};
|
54
src/modules/imageresizer/dll/ImageResizerExt.cpp
Normal file
@ -0,0 +1,54 @@
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "ImageResizerExt_i.h"
|
||||
#include "dllmain.h"
|
||||
|
||||
__control_entrypoint(DllExport) STDAPI DllCanUnloadNow()
|
||||
{
|
||||
return _AtlModule.DllCanUnloadNow();
|
||||
}
|
||||
|
||||
_Check_return_ STDAPI DllGetClassObject(_In_ REFCLSID rclsid, _In_ REFIID riid, _Outptr_ LPVOID* ppv)
|
||||
{
|
||||
return _AtlModule.DllGetClassObject(rclsid, riid, ppv);
|
||||
}
|
||||
|
||||
STDAPI DllRegisterServer()
|
||||
{
|
||||
return _AtlModule.DllRegisterServer();
|
||||
}
|
||||
|
||||
STDAPI DllUnregisterServer()
|
||||
{
|
||||
return _AtlModule.DllUnregisterServer();
|
||||
}
|
||||
|
||||
STDAPI DllInstall(BOOL bInstall, _In_opt_ LPCWSTR pszCmdLine)
|
||||
{
|
||||
HRESULT hr = E_FAIL;
|
||||
static const wchar_t szUserSwitch[] = L"user";
|
||||
|
||||
if (pszCmdLine != NULL)
|
||||
{
|
||||
if (_wcsnicmp(pszCmdLine, szUserSwitch, _countof(szUserSwitch)) == 0)
|
||||
{
|
||||
ATL::AtlSetPerUserRegistration(true);
|
||||
}
|
||||
}
|
||||
|
||||
if (bInstall)
|
||||
{
|
||||
hr = DllRegisterServer();
|
||||
|
||||
if (FAILED(hr))
|
||||
{
|
||||
DllUnregisterServer();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
hr = DllUnregisterServer();
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
8
src/modules/imageresizer/dll/ImageResizerExt.def
Normal file
@ -0,0 +1,8 @@
|
||||
LIBRARY
|
||||
|
||||
EXPORTS
|
||||
DllCanUnloadNow PRIVATE
|
||||
DllGetClassObject PRIVATE
|
||||
DllRegisterServer PRIVATE
|
||||
DllUnregisterServer PRIVATE
|
||||
DllInstall PRIVATE
|
15
src/modules/imageresizer/dll/ImageResizerExt.idl
Normal file
@ -0,0 +1,15 @@
|
||||
import "shobjidl.idl";
|
||||
|
||||
[
|
||||
uuid(09082E28-A5CA-47A7-8571-A2236C411E91),
|
||||
version(3.1)
|
||||
]
|
||||
library ImageResizerExtLib
|
||||
{
|
||||
[uuid(51B4D7E5-7568-4234-B4BB-47FB3C016A69)]
|
||||
coclass ContextMenuHandler
|
||||
{
|
||||
[default] interface IShellExtInit;
|
||||
interface IContextMenu;
|
||||
};
|
||||
};
|
561
src/modules/imageresizer/dll/ImageResizerExt.rc
Normal file
@ -0,0 +1,561 @@
|
||||
// Microsoft Visual C++ generated resource script.
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⌀椀渀挀氀甀搀攀 ∀爀攀猀漀甀爀挀攀⸀栀∀ഀ<EFBFBD>
|
||||
⌀椀渀挀氀甀搀攀 ∀⸀⸀⼀⸀⸀⼀⸀⸀⼀挀漀洀洀漀渀⼀瘀攀爀猀椀漀渀⸀栀∀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀搀攀昀椀渀攀 䄀倀匀吀唀䐀䤀伀开刀䔀䄀䐀伀一䰀夀开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䜀攀渀攀爀愀琀攀搀 昀爀漀洀 琀栀攀 吀䔀堀吀䤀一䌀䰀唀䐀䔀 ㈀ 爀攀猀漀甀爀挀攀⸀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⌀椀昀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
|
||||
⌀椀渀挀氀甀搀攀 ∀琀愀爀最攀琀瘀攀爀⸀栀∀ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀ഀ<EFBFBD>
|
||||
⌀椀渀挀氀甀搀攀 ∀眀椀渀爀攀猀⸀栀∀ഀ<EFBFBD>
|
||||
⌀椀渀挀氀甀搀攀 ∀瘀攀爀爀猀爀挀⸀栀∀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⌀甀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开刀䔀䄀䐀伀一䰀夀开匀夀䴀䈀伀䰀匀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䌀栀椀渀攀猀攀 ⠀匀椀洀瀀氀椀昀椀攀搀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䌀䠀匀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䌀䠀䤀一䔀匀䔀Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀촀뺑ﺋ䝖❲ཙ≜ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀뤀摰쵫뺑ﺋ䝖❲ཙ≜ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䌀栀椀渀攀猀攀 ⠀匀椀洀瀀氀椀昀椀攀搀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䌀稀攀挀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䌀匀夀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䌀娀䔀䌀䠀Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀娀洀ᬀ渁椀琀 瘀攀氀椀欀漀猀琀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀娀洀ᬀ渁椀琀 瘀攀氀椀欀漀猀琀 稀搀攀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䌀稀攀挀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䠀甀渀最愀爀椀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䠀唀一⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䠀唀一䜀䄀刀䤀䄀一Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀䬀瀀攀欀 琀洀爀攀琀攀稀猀攀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀䬀瀀攀欀 琀洀爀攀琀攀稀猀攀 椀琀琀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䠀甀渀最愀爀椀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 倀漀氀椀猀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开倀䰀䬀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开倀伀䰀䤀匀䠀Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀娀洀椀攀䐀 爀漀稀洀椀愀爀 漀戀爀愀稀眀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀娀洀椀攀䐀 爀漀稀洀椀愀爀 漀戀爀愀稀眀 琀甀琀愀樀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 倀漀氀椀猀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 刀漀洀愀渀椀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开刀伀䴀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开刀伀䴀䄀一䤀䄀一Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀刀攀搀椀洀攀渀猀椀漀渀愀爀攀 椀洀愀最椀渀椀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀刀攀搀椀洀攀渀猀椀漀渀愀爀攀 椀洀愀最椀渀椀 愀椀挀椀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 刀漀洀愀渀椀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀氀漀瘀愀欀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开匀䬀夀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开匀䰀伀嘀䄀䬀Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀娀洀攀䠀 瘀攀㸀欁漀猀攀 漀戀爀稀欀漀瘀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀娀洀攀䠀 瘀攀㸀欁漀猀攀 漀戀爀稀欀漀瘀 琀甀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 匀氀漀瘀愀欀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䈀甀氀最愀爀椀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䈀䜀刀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䈀唀䰀䜀䄀刀䤀䄀一Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀ἀ䀄㔄㸄䀄〄㜄㰄㔄䀄㠄 㨀〄䀄〄䈄㠄㴄㠄∄ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀ἀ䀄㔄㸄䀄〄㜄㰄㔄䀄㠄 㨀〄䀄〄䈄㠄㴄㠄䈄㔄 䈀䌄㨄∄ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䈀甀氀最愀爀椀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 刀甀猀猀椀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开刀唀匀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开刀唀匀匀䤀䄀一Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀᠀㜄㰄㔄㴄㔄㴄㠄㔄 䀀〄㜄㰄㔄䀄㸄㈄ 㠀㜄㸄䀄〄㘄㔄㴄㠄㤄∄ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀᠀㜄㰄㔄㴄㠄䈄䰄 䀀〄㜄㰄㔄䀄䬄 㜀㐄㔄䄄䰄∄ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 刀甀猀猀椀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䌀愀琀愀氀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䌀䄀吀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䌀䄀吀䄀䰀䄀一Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀刀攀搀椀洀攀渀猀椀漀渀愀 氀攀猀 椀洀愀琀最攀猀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀刀攀搀椀洀攀渀猀椀漀渀愀 氀攀猀 椀洀愀琀最攀猀 愀焀甀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䌀愀琀愀氀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䜀攀爀洀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䐀䔀唀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䜀䔀刀䴀䄀一Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀䈀椀氀搀攀爀 渀攀甀 猀欀愀氀椀攀爀攀渀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀䈀椀氀搀攀爀 栀椀攀爀 渀攀甀 猀欀愀氀椀攀爀攀渀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䜀攀爀洀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀瀀愀渀椀猀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䔀匀一⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开匀倀䄀一䤀匀䠀Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀刀攀搀椀洀攀渀猀椀漀渀愀爀 椀洀最攀渀攀猀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀刀攀搀椀洀攀渀猀椀漀渀愀爀 椀洀最攀渀攀猀 愀焀甀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 匀瀀愀渀椀猀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䘀爀攀渀挀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䘀刀䄀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䘀刀䔀一䌀䠀Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀刀攀搀椀洀攀渀猀椀漀渀渀攀爀 搀攀猀 椀洀愀最攀猀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀刀攀搀椀洀攀渀猀椀漀渀渀攀爀 搀攀猀 椀洀愀最攀猀 椀挀椀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䘀爀攀渀挀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䤀琀愀氀椀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䤀吀䄀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䤀吀䄀䰀䤀䄀一Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀刀椀搀椀洀攀渀猀椀漀渀愀 椀洀洀愀最椀渀椀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀刀椀搀椀洀攀渀猀椀漀渀愀 椀洀洀愀最椀渀椀 焀甀椀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䤀琀愀氀椀愀渀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䐀甀琀挀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开一䰀䐀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䐀唀吀䌀䠀Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀䄀昀戀攀攀氀搀椀渀最猀昀漀爀洀愀愀琀 眀椀樀稀椀最攀渀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀圀椀樀稀椀最 栀攀琀 愀昀戀攀攀氀搀椀渀最猀昀漀爀洀愀愀琀 栀椀攀爀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䐀甀琀挀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䔀渀最氀椀猀栀 ⠀唀渀椀琀攀搀 匀琀愀琀攀猀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䔀一唀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䔀一䜀䰀䤀匀䠀Ⰰ 匀唀䈀䰀䄀一䜀开䔀一䜀䰀䤀匀䠀开唀匀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 吀䔀堀吀䤀一䌀䰀唀䐀䔀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
吀䔀堀吀䤀一䌀䰀唀䐀䔀 ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
∀爀攀猀漀甀爀挀攀⸀栀尀 ∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
㈀ 吀䔀堀吀䤀一䌀䰀唀䐀䔀 ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
∀⌀椀昀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀尀爀尀渀∀ഀ<EFBFBD>
|
||||
∀⌀椀渀挀氀甀搀攀 ∀∀琀愀爀最攀琀瘀攀爀⸀栀∀∀尀爀尀渀∀ഀ<EFBFBD>
|
||||
∀⌀攀渀搀椀昀尀爀尀渀∀ഀ<EFBFBD>
|
||||
∀⌀椀渀挀氀甀搀攀 ∀∀眀椀渀爀攀猀⸀栀∀∀尀爀尀渀∀ഀ<EFBFBD>
|
||||
∀⌀椀渀挀氀甀搀攀 ∀∀瘀攀爀爀猀爀挀⸀栀∀∀尀爀尀渀∀ഀ<EFBFBD>
|
||||
∀尀 ∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
㌀ 吀䔀堀吀䤀一䌀䰀唀䐀䔀 ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
∀ 吀夀倀䔀䰀䤀䈀 ∀∀䤀洀愀最攀刀攀猀椀稀攀爀䔀砀琀⸀琀氀戀∀∀尀爀尀渀∀ഀ<EFBFBD>
|
||||
∀尀 ∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 嘀攀爀猀椀漀渀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
嘀匀开嘀䔀刀匀䤀伀一开䤀一䘀伀 嘀䔀刀匀䤀伀一䤀一䘀伀ഀ<EFBFBD>
|
||||
䘀䤀䰀䔀嘀䔀刀匀䤀伀一 䘀䤀䰀䔀开嘀䔀刀匀䤀伀一ഀ<EFBFBD>
|
||||
倀刀伀䐀唀䌀吀嘀䔀刀匀䤀伀一 倀刀伀䐀唀䌀吀开嘀䔀刀匀䤀伀一ഀ<EFBFBD>
|
||||
䘀䤀䰀䔀䘀䰀䄀䜀匀䴀䄀匀䬀 砀㌀昀䰀ഀ<EFBFBD>
|
||||
⌀椀昀搀攀昀 开䐀䔀䈀唀䜀ഀ<EFBFBD>
|
||||
䘀䤀䰀䔀䘀䰀䄀䜀匀 砀䰀ഀ<EFBFBD>
|
||||
⌀攀氀猀攀ഀ<EFBFBD>
|
||||
䘀䤀䰀䔀䘀䰀䄀䜀匀 砀 䰀ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀ഀ<EFBFBD>
|
||||
䘀䤀䰀䔀伀匀 砀㐀 㐀䰀ഀ<EFBFBD>
|
||||
䘀䤀䰀䔀吀夀倀䔀 砀㈀䰀ഀ<EFBFBD>
|
||||
䘀䤀䰀䔀匀唀䈀吀夀倀䔀 砀 䰀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䈀䰀伀䌀䬀 ∀匀琀爀椀渀最䘀椀氀攀䤀渀昀漀∀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䈀䰀伀䌀䬀 ∀ 㐀 㤀 㐀戀 ∀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
嘀䄀䰀唀䔀 ∀䌀漀洀瀀愀渀礀一愀洀攀∀Ⰰ 䌀伀䴀倀䄀一夀开一䄀䴀䔀ഀ<EFBFBD>
|
||||
嘀䄀䰀唀䔀 ∀䘀椀氀攀䐀攀猀挀爀椀瀀琀椀漀渀∀Ⰰ ∀䤀洀愀最攀刀攀猀椀稀攀爀 倀漀眀攀爀吀漀礀∀ഀ<EFBFBD>
|
||||
嘀䄀䰀唀䔀 ∀䘀椀氀攀嘀攀爀猀椀漀渀∀Ⰰ 䘀䤀䰀䔀开嘀䔀刀匀䤀伀一开匀吀刀䤀一䜀ഀ<EFBFBD>
|
||||
嘀䄀䰀唀䔀 ∀䤀渀琀攀爀渀愀氀一愀洀攀∀Ⰰ ∀䤀洀愀最攀刀攀猀椀稀攀爀䔀砀琀⸀搀氀氀∀ഀ<EFBFBD>
|
||||
嘀䄀䰀唀䔀 ∀䰀攀最愀氀䌀漀瀀礀爀椀最栀琀∀Ⰰ 䌀伀倀夀刀䤀䜀䠀吀开一伀吀䔀ഀ<EFBFBD>
|
||||
嘀䄀䰀唀䔀 ∀伀爀椀最椀渀愀氀䘀椀氀攀渀愀洀攀∀Ⰰ ∀䤀洀愀最攀刀攀猀椀稀攀爀䔀砀琀⸀搀氀氀∀ഀ<EFBFBD>
|
||||
嘀䄀䰀唀䔀 ∀倀爀漀搀甀挀琀一愀洀攀∀Ⰰ ∀䤀洀愀最攀刀攀猀椀稀攀爀䔀砀琀 倀漀眀攀爀吀漀礀∀ഀ<EFBFBD>
|
||||
嘀䄀䰀唀䔀 ∀倀爀漀搀甀挀琀嘀攀爀猀椀漀渀∀Ⰰ 倀刀伀䐀唀䌀吀开嘀䔀刀匀䤀伀一开匀吀刀䤀一䜀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
䈀䰀伀䌀䬀 ∀嘀愀爀䘀椀氀攀䤀渀昀漀∀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
嘀䄀䰀唀䔀 ∀吀爀愀渀猀氀愀琀椀漀渀∀Ⰰ 砀㐀 㤀Ⰰ ㈀ ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 刀䔀䜀䤀匀吀刀夀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
䤀䐀刀开䤀䴀䄀䜀䔀刀䔀匀䤀娀䔀刀䔀堀吀 刀䔀䜀䤀匀吀刀夀 ∀䤀洀愀最攀刀攀猀椀稀攀爀䔀砀琀⸀爀最猀∀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
䤀䐀刀开䌀伀一吀䔀堀吀䴀䔀一唀䠀䄀一䐀䰀䔀刀 刀䔀䜀䤀匀吀刀夀 ∀䌀漀渀琀攀砀琀䴀攀渀甀䠀愀渀搀氀攀爀⸀爀最猀∀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀刀攀猀椀稀攀 瀀椀挀琀甀爀攀猀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀刀攀猀椀稀攀 瀀椀挀琀甀爀攀猀 栀攀爀攀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开䤀䴀䄀䜀䔀刀䔀匀䤀娀䔀刀 䰀∀䤀洀愀最攀刀攀猀椀稀攀爀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开匀䔀吀吀䤀一䜀匀开䐀䔀匀䌀刀䤀倀吀䤀伀一 ∀䰀漀爀攀洀 䤀瀀猀甀洀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䔀渀最氀椀猀栀 ⠀唀渀椀琀攀搀 匀琀愀琀攀猀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 一漀爀眀攀最椀愀渀 䈀漀欀洀氀 ⠀一漀爀眀愀礀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开一伀刀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开一伀刀圀䔀䜀䤀䄀一Ⰰ 匀唀䈀䰀䄀一䜀开一伀刀圀䔀䜀䤀䄀一开䈀伀䬀䴀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀䔀渀搀爀攀 戀椀氀搀攀猀琀爀爀攀氀猀攀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀䔀渀搀爀攀 戀椀氀搀攀猀琀爀爀攀氀猀攀渀 栀攀爀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 一漀爀眀攀最椀愀渀 䈀漀欀洀氀 ⠀一漀爀眀愀礀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 倀漀爀琀甀最甀攀猀攀 ⠀䈀爀愀稀椀氀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开倀吀䈀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开倀伀刀吀唀䜀唀䔀匀䔀Ⰰ 匀唀䈀䰀䄀一䜀开倀伀刀吀唀䜀唀䔀匀䔀开䈀刀䄀娀䤀䰀䤀䄀一ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀刀攀搀椀洀攀渀猀椀漀渀愀爀 椀洀愀最攀渀猀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀刀攀搀椀洀攀渀猀椀漀渀愀爀 椀洀愀最攀渀猀 愀焀甀椀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 倀漀爀琀甀最甀攀猀攀 ⠀䈀爀愀稀椀氀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䈀愀猀焀甀攀 ⠀䈀愀猀焀甀攀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䔀唀儀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䈀䄀匀儀唀䔀Ⰰ 匀唀䈀䰀䄀一䜀开䐀䔀䘀䄀唀䰀吀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀吀愀洀愀椀渀愀稀 愀氀搀愀琀甀∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀吀愀洀愀椀渀愀稀 愀氀搀愀琀甀 栀攀洀攀渀∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䈀愀猀焀甀攀 ⠀䈀愀猀焀甀攀⤀ 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 吀甀爀欀椀猀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开吀刀䬀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开吀唀刀䬀䤀匀䠀Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀刀攀猀椀洀氀攀爀椀 礀攀渀椀搀攀渀 戀漀礀甀琀氀愀渀搀爁∀ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀刀攀猀椀洀氀攀爀椀 戀甀爀愀搀愀 礀攀渀椀搀攀渀 戀漀礀甀琀氀愀渀搀爁∀ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 吀甀爀欀椀猀栀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䠀攀戀爀攀眀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䠀䔀䈀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䠀䔀䈀刀䔀圀Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀퐅 툀픅팅<EFBFBD> 퐀<EFBFBD>픅픅∅ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀퐅 퀀 툀픅팅<EFBFBD> 퐀<EFBFBD>픅픅 <EFBFBD>퀅<EFBFBD>∅ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䠀攀戀爀攀眀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䄀爀愀戀椀挀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀 ℀搀攀昀椀渀攀搀⠀䄀䘀堀开刀䔀匀伀唀刀䌀䔀开䐀䰀䰀⤀ 簀簀 搀攀昀椀渀攀搀⠀䄀䘀堀开吀䄀刀䜀开䄀刀䄀⤀ഀ<EFBFBD>
|
||||
䰀䄀一䜀唀䄀䜀䔀 䰀䄀一䜀开䄀刀䄀䈀䤀䌀Ⰰ 匀唀䈀䰀䄀一䜀开一䔀唀吀刀䄀䰀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 匀琀爀椀渀最 吀愀戀氀攀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
匀吀刀䤀一䜀吀䄀䈀䰀䔀ഀ<EFBFBD>
|
||||
䈀䔀䜀䤀一ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 ∀─㤆✆⼆⤆ ⨀ⴆⰆ䨆䔆 ✀䐆㔆䠆ㄆ∆ഀ<EFBFBD>
|
||||
䤀䐀匀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀开䠀䔀刀䔀 ∀─㤆✆⼆⤆ ⨀ⴆⰆ䨆䔆 ✀䐆㔆䠆ㄆ 䜀䘆✆∆ഀ<EFBFBD>
|
||||
䔀一䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 䄀爀愀戀椀挀 爀攀猀漀甀爀挀攀猀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⌀椀昀渀搀攀昀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䜀攀渀攀爀愀琀攀搀 昀爀漀洀 琀栀攀 吀䔀堀吀䤀一䌀䰀唀䐀䔀 ㌀ 爀攀猀漀甀爀挀攀⸀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
吀夀倀䔀䰀䤀䈀 ∀䤀洀愀最攀刀攀猀椀稀攀爀䔀砀琀⸀琀氀戀∀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
⌀攀渀搀椀昀 ⼀⼀ 渀漀琀 䄀倀匀吀唀䐀䤀伀开䤀一嘀伀䬀䔀䐀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
⼀⼀ 䤀挀漀渀ഀ<EFBFBD>
|
||||
⼀⼀ഀ<EFBFBD>
|
||||
ഀ<EFBFBD>
|
||||
⼀⼀ 䤀挀漀渀 眀椀琀栀 氀漀眀攀猀琀 䤀䐀 瘀愀氀甀攀 瀀氀愀挀攀搀 昀椀爀猀琀 琀漀 攀渀猀甀爀攀 愀瀀瀀氀椀挀愀琀椀漀渀 椀挀漀渀ഀ<EFBFBD>
|
||||
⼀⼀ 爀攀洀愀椀渀猀 挀漀渀猀椀猀琀攀渀琀 漀渀 愀氀氀 猀礀猀琀攀洀猀⸀ഀ<EFBFBD>
|
||||
䤀䐀䤀开刀䔀匀䤀娀䔀开倀䤀䌀吀唀刀䔀匀 䤀䌀伀一 ∀⸀⸀尀甀椀尀刀攀猀漀甀爀挀攀猀尀䤀洀愀最攀刀攀猀椀稀攀爀⸀椀挀漀∀<EFBFBD>
|
3
src/modules/imageresizer/dll/ImageResizerExt.rgs
Normal file
@ -0,0 +1,3 @@
|
||||
HKCR
|
||||
{
|
||||
}
|
311
src/modules/imageresizer/dll/ImageResizerExt.vcxproj
Normal file
@ -0,0 +1,311 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|Win32">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|Win32">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{0B43679E-EDFA-4DA0-AD30-F4628B308B1B}</ProjectGuid>
|
||||
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||
<Keyword>AtlProj</Keyword>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<UseOfAtl>Static</UseOfAtl>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<UseOfAtl>Static</UseOfAtl>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<UseOfAtl>Static</UseOfAtl>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<UseOfAtl>Static</UseOfAtl>
|
||||
<PlatformToolset>v142</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\modules\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\modules\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\modules\</OutDir>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<OutDir>$(SolutionDir)$(Platform)\$(Configuration)\modules\</OutDir>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>..\..\..\common\inc;..\..\..\common\Telemetry;..\..\;..\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<HeaderFileName>ImageResizerExt_i.h</HeaderFileName>
|
||||
<InterfaceIdentifierFileName>ImageResizerExt_i.c</InterfaceIdentifierFileName>
|
||||
<ProxyFileName>ImageResizerExt_p.c</ProxyFileName>
|
||||
<GenerateStublessProxies>true</GenerateStublessProxies>
|
||||
<TypeLibraryName>$(IntDir)ImageResizerExt.tlb</TypeLibraryName>
|
||||
<DllDataFileName />
|
||||
<ValidateAllParameters>true</ValidateAllParameters>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ModuleDefinitionFile>.\ImageResizerExt.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<RegisterOutput>true</RegisterOutput>
|
||||
<PerUserRedirection>true</PerUserRedirection>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>_WINDOWS;_DEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>..\..\..\common\inc;..\..\..\common\Telemetry;..\..\;..\..\..\;..\..\..\..\deps\cpprestsdk\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<HeaderFileName>ImageResizerExt_i.h</HeaderFileName>
|
||||
<InterfaceIdentifierFileName>ImageResizerExt_i.c</InterfaceIdentifierFileName>
|
||||
<ProxyFileName>ImageResizerExt_p.c</ProxyFileName>
|
||||
<GenerateStublessProxies>true</GenerateStublessProxies>
|
||||
<TypeLibraryName>$(IntDir)ImageResizerExt.tlb</TypeLibraryName>
|
||||
<DllDataFileName />
|
||||
<ValidateAllParameters>true</ValidateAllParameters>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ModuleDefinitionFile>.\ImageResizerExt.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<RegisterOutput>true</RegisterOutput>
|
||||
<PerUserRedirection>true</PerUserRedirection>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>..\..\..\common\inc;..\..\..\common\Telemetry;..\..\;..\..\..\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
<TargetEnvironment>Win32</TargetEnvironment>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<HeaderFileName>ImageResizerExt_i.h</HeaderFileName>
|
||||
<InterfaceIdentifierFileName>ImageResizerExt_i.c</InterfaceIdentifierFileName>
|
||||
<ProxyFileName>ImageResizerExt_p.c</ProxyFileName>
|
||||
<GenerateStublessProxies>true</GenerateStublessProxies>
|
||||
<TypeLibraryName>$(IntDir)ImageResizerExt.tlb</TypeLibraryName>
|
||||
<DllDataFileName />
|
||||
<ValidateAllParameters>true</ValidateAllParameters>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ModuleDefinitionFile>.\ImageResizerExt.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<RegisterOutput>true</RegisterOutput>
|
||||
<PerUserRedirection>true</PerUserRedirection>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>Use</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>MaxSpeed</Optimization>
|
||||
<PreprocessorDefinitions>_WINDOWS;NDEBUG;_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
<AdditionalIncludeDirectories>..\..\..\common\inc;..\..\..\common\Telemetry;..\..\;..\..\..\;..\..\..\..\deps\cpprestsdk\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<LanguageStandard>stdcpplatest</LanguageStandard>
|
||||
</ClCompile>
|
||||
<Midl>
|
||||
<MkTypLibCompatible>false</MkTypLibCompatible>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<HeaderFileName>ImageResizerExt_i.h</HeaderFileName>
|
||||
<InterfaceIdentifierFileName>ImageResizerExt_i.c</InterfaceIdentifierFileName>
|
||||
<ProxyFileName>ImageResizerExt_p.c</ProxyFileName>
|
||||
<GenerateStublessProxies>true</GenerateStublessProxies>
|
||||
<TypeLibraryName>$(IntDir)ImageResizerExt.tlb</TypeLibraryName>
|
||||
<DllDataFileName />
|
||||
<ValidateAllParameters>true</ValidateAllParameters>
|
||||
</Midl>
|
||||
<ResourceCompile>
|
||||
<Culture>0x0409</Culture>
|
||||
<AdditionalIncludeDirectories>$(IntDir);%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<ModuleDefinitionFile>.\ImageResizerExt.def</ModuleDefinitionFile>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
<RegisterOutput>true</RegisterOutput>
|
||||
<PerUserRedirection>true</PerUserRedirection>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="ContextMenuHandler.cpp" />
|
||||
<ClCompile Include="HDropIterator.cpp" />
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
</PrecompiledHeader>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ImageResizerExt.cpp" />
|
||||
<ClCompile Include="ImageResizerExt_i.c">
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
</PrecompiledHeader>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
</PrecompiledHeader>
|
||||
<CompileAsManaged Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</CompileAsManaged>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Settings.cpp" />
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
||||
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
|
||||
</ClCompile>
|
||||
<ClCompile Include="trace.cpp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="ContextMenuHandler.h" />
|
||||
<ClInclude Include="HDropIterator.h" />
|
||||
<ClInclude Include="dllmain.h" />
|
||||
<ClInclude Include="Settings.h" />
|
||||
<ClInclude Include="Resource.h" />
|
||||
<ClInclude Include="ImageResizerExt_i.h" />
|
||||
<ClInclude Include="stdafx.h" />
|
||||
<ClInclude Include="targetver.h" />
|
||||
<ClInclude Include="trace.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="ImageResizerExt.rc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ContextMenuHandler.rgs" />
|
||||
<None Include="ImageResizerExt.def" />
|
||||
<None Include="ImageResizerExt.rgs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Midl Include="ImageResizerExt.idl" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\..\common\common.vcxproj">
|
||||
<Project>{74485049-c722-400f-abe5-86ac52d929b3}</Project>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="..\ui\Resources\ImageResizer.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
102
src/modules/imageresizer/dll/ImageResizerExt.vcxproj.filters
Normal file
@ -0,0 +1,102 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="Source Files">
|
||||
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Header Files">
|
||||
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||
<Extensions>h;hh;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files">
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Generated Files">
|
||||
<UniqueIdentifier>{87bc9b81-f7fa-45d9-87cc-c99e55473868}</UniqueIdentifier>
|
||||
<SourceControlFiles>False</SourceControlFiles>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="stdafx.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ImageResizerExt.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="dllmain.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ImageResizerExt_i.c">
|
||||
<Filter>Generated Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="ContextMenuHandler.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="HDropIterator.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="Settings.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="trace.cpp">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClInclude Include="trace.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="stdafx.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="targetver.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Resource.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="dllmain.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ImageResizerExt_i.h">
|
||||
<Filter>Generated Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="ContextMenuHandler.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="HDropIterator.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="Settings.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="ImageResizerExt.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="ImageResizerExt.rgs">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
<None Include="ImageResizerExt.def">
|
||||
<Filter>Source Files</Filter>
|
||||
</None>
|
||||
<None Include="ContextMenuHandler.rgs">
|
||||
<Filter>Resource Files</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Midl Include="ImageResizerExt.idl">
|
||||
<Filter>Source Files</Filter>
|
||||
</Midl>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Image Include="..\ui\Resources\ImageResizer.ico">
|
||||
<Filter>Resource Files</Filter>
|
||||
</Image>
|
||||
</ItemGroup>
|
||||
</Project>
|
66
src/modules/imageresizer/dll/Settings.cpp
Normal file
@ -0,0 +1,66 @@
|
||||
#include "stdafx.h"
|
||||
#include <commctrl.h>
|
||||
#include "Settings.h"
|
||||
|
||||
const wchar_t c_rootRegPath[] = L"Software\\Microsoft\\ImageResizer";
|
||||
const wchar_t c_enabled[] = L"Enabled";
|
||||
const bool c_enabledDefault = true;
|
||||
|
||||
bool CSettings::GetEnabled()
|
||||
{
|
||||
return GetRegBoolValue(c_enabled, c_enabledDefault);
|
||||
}
|
||||
|
||||
bool CSettings::SetEnabled(_In_ bool enabled)
|
||||
{
|
||||
return SetRegBoolValue(c_enabled, enabled);
|
||||
}
|
||||
|
||||
bool CSettings::SetRegBoolValue(_In_ PCWSTR valueName, _In_ bool value)
|
||||
{
|
||||
DWORD dwValue = value ? 1 : 0;
|
||||
return SetRegDWORDValue(valueName, dwValue);
|
||||
}
|
||||
|
||||
bool CSettings::GetRegBoolValue(_In_ PCWSTR valueName, _In_ bool defaultValue)
|
||||
{
|
||||
DWORD value = GetRegDWORDValue(valueName, (defaultValue == 0) ? false : true);
|
||||
return (value == 0) ? false : true;
|
||||
}
|
||||
|
||||
bool CSettings::SetRegDWORDValue(_In_ PCWSTR valueName, _In_ DWORD value)
|
||||
{
|
||||
return (SUCCEEDED(HRESULT_FROM_WIN32(SHSetValue(HKEY_CURRENT_USER, c_rootRegPath, valueName, REG_DWORD, &value, sizeof(value)))));
|
||||
}
|
||||
|
||||
DWORD CSettings::GetRegDWORDValue(_In_ PCWSTR valueName, _In_ DWORD defaultValue)
|
||||
{
|
||||
DWORD retVal = defaultValue;
|
||||
DWORD type = REG_DWORD;
|
||||
DWORD dwEnabled = 0;
|
||||
DWORD cb = sizeof(dwEnabled);
|
||||
if (SHGetValue(HKEY_CURRENT_USER, c_rootRegPath, valueName, &type, &dwEnabled, &cb) == ERROR_SUCCESS)
|
||||
{
|
||||
retVal = dwEnabled;
|
||||
}
|
||||
|
||||
return retVal;
|
||||
}
|
||||
|
||||
bool CSettings::SetRegStringValue(_In_ PCWSTR valueName, _In_ PCWSTR value)
|
||||
{
|
||||
ULONG cb = (DWORD)((wcslen(value) + 1) * sizeof(*value));
|
||||
return (SUCCEEDED(HRESULT_FROM_WIN32(SHSetValue(HKEY_CURRENT_USER, c_rootRegPath, valueName, REG_SZ, (const BYTE*)value, cb))));
|
||||
}
|
||||
|
||||
bool CSettings::GetRegStringValue(_In_ PCWSTR valueName, __out_ecount(cchBuf) PWSTR value, DWORD cchBuf)
|
||||
{
|
||||
if (cchBuf > 0)
|
||||
{
|
||||
value[0] = L'\0';
|
||||
}
|
||||
|
||||
DWORD type = REG_SZ;
|
||||
ULONG cb = cchBuf * sizeof(*value);
|
||||
return (SUCCEEDED(HRESULT_FROM_WIN32(SHGetValue(HKEY_CURRENT_USER, c_rootRegPath, valueName, &type, value, &cb) == ERROR_SUCCESS)));
|
||||
}
|
16
src/modules/imageresizer/dll/Settings.h
Normal file
@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
class CSettings
|
||||
{
|
||||
public:
|
||||
static bool GetEnabled();
|
||||
static bool SetEnabled(_In_ bool enabled);
|
||||
|
||||
private:
|
||||
static bool GetRegBoolValue(_In_ PCWSTR valueName, _In_ bool defaultValue);
|
||||
static bool SetRegBoolValue(_In_ PCWSTR valueName, _In_ bool value);
|
||||
static bool SetRegDWORDValue(_In_ PCWSTR valueName, _In_ DWORD value);
|
||||
static DWORD GetRegDWORDValue(_In_ PCWSTR valueName, _In_ DWORD defaultValue);
|
||||
static bool SetRegStringValue(_In_ PCWSTR valueName, _In_ PCWSTR value);
|
||||
static bool GetRegStringValue(_In_ PCWSTR valueName, __out_ecount(cchBuf) PWSTR value, DWORD cchBuf);
|
||||
};
|
117
src/modules/imageresizer/dll/dllmain.cpp
Normal file
@ -0,0 +1,117 @@
|
||||
#include "stdafx.h"
|
||||
#include "resource.h"
|
||||
#include "ImageResizerExt_i.h"
|
||||
#include "dllmain.h"
|
||||
#include <interface/powertoy_module_interface.h>
|
||||
#include <common/settings_objects.h>
|
||||
#include "Settings.h"
|
||||
#include "trace.h"
|
||||
#include <common/common.h>
|
||||
|
||||
CImageResizerExtModule _AtlModule;
|
||||
HINSTANCE g_hInst_imageResizer = 0;
|
||||
|
||||
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
|
||||
{
|
||||
switch (dwReason)
|
||||
{
|
||||
case DLL_PROCESS_ATTACH:
|
||||
g_hInst_imageResizer = hInstance;
|
||||
Trace::RegisterProvider();
|
||||
break;
|
||||
case DLL_PROCESS_DETACH:
|
||||
Trace::UnregisterProvider();
|
||||
break;
|
||||
}
|
||||
return _AtlModule.DllMain(dwReason, lpReserved);
|
||||
}
|
||||
|
||||
class ImageResizerModule : public PowertoyModuleIface
|
||||
{
|
||||
private:
|
||||
// Enabled by default
|
||||
bool m_enabled = true;
|
||||
std::wstring app_name;
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
ImageResizerModule()
|
||||
{
|
||||
app_name = GET_RESOURCE_STRING(IDS_IMAGERESIZER);
|
||||
};
|
||||
|
||||
// Destroy the powertoy and free memory
|
||||
virtual void destroy() override
|
||||
{
|
||||
delete this;
|
||||
}
|
||||
|
||||
// Return the display name of the powertoy, this will be cached by the runner
|
||||
virtual const wchar_t* get_name() override
|
||||
{
|
||||
return app_name.c_str();
|
||||
}
|
||||
|
||||
// Return array of the names of all events that this powertoy listens for, with
|
||||
// nullptr as the last element of the array. Nullptr can also be retured for empty
|
||||
// list.
|
||||
virtual const wchar_t** get_events() override
|
||||
{
|
||||
static const wchar_t* events[] = { nullptr };
|
||||
return events;
|
||||
}
|
||||
|
||||
// Return JSON with the configuration options.
|
||||
virtual bool get_config(wchar_t* buffer, int* buffer_size) override
|
||||
{
|
||||
HINSTANCE hinstance = reinterpret_cast<HINSTANCE>(&__ImageBase);
|
||||
|
||||
// Create a Settings object.
|
||||
PowerToysSettings::Settings settings(hinstance, get_name());
|
||||
settings.set_description(GET_RESOURCE_STRING(IDS_SETTINGS_DESCRIPTION));
|
||||
return settings.serialize_to_buffer(buffer, buffer_size);
|
||||
}
|
||||
|
||||
// Signal from the Settings editor to call a custom action.
|
||||
// This can be used to spawn more complex editors.
|
||||
virtual void call_custom_action(const wchar_t* action) override {}
|
||||
|
||||
// Called by the runner to pass the updated settings values as a serialized JSON.
|
||||
virtual void set_config(const wchar_t* config) override {}
|
||||
|
||||
// Enable the powertoy
|
||||
virtual void enable()
|
||||
{
|
||||
m_enabled = true;
|
||||
CSettings::SetEnabled(m_enabled);
|
||||
Trace::EnableImageResizer(m_enabled);
|
||||
}
|
||||
|
||||
// Disable the powertoy
|
||||
virtual void disable()
|
||||
{
|
||||
m_enabled = false;
|
||||
CSettings::SetEnabled(m_enabled);
|
||||
Trace::EnableImageResizer(m_enabled);
|
||||
}
|
||||
|
||||
// Returns if the powertoys is enabled
|
||||
virtual bool is_enabled() override
|
||||
{
|
||||
return m_enabled;
|
||||
}
|
||||
|
||||
// Handle incoming event, data is event-specific
|
||||
virtual intptr_t signal_event(const wchar_t* name, intptr_t data) override
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual void register_system_menu_helper(PowertoySystemMenuIface* helper) override {}
|
||||
virtual void signal_system_menu_action(const wchar_t* name) override {}
|
||||
};
|
||||
|
||||
extern "C" __declspec(dllexport) PowertoyModuleIface* __cdecl powertoy_create()
|
||||
{
|
||||
return new ImageResizerModule();
|
||||
}
|
8
src/modules/imageresizer/dll/dllmain.h
Normal file
@ -0,0 +1,8 @@
|
||||
class CImageResizerExtModule : public ATL::CAtlDllModuleT<CImageResizerExtModule>
|
||||
{
|
||||
public:
|
||||
DECLARE_LIBID(LIBID_ImageResizerExtLib)
|
||||
DECLARE_REGISTRY_APPID_RESOURCEID(IDR_IMAGERESIZEREXT, "{0C866E7B-65CB-4E7D-B1DD-D014F000E8D8}")
|
||||
};
|
||||
|
||||
extern class CImageResizerExtModule _AtlModule;
|
22
src/modules/imageresizer/dll/resource.h
Normal file
@ -0,0 +1,22 @@
|
||||
//{{NO_DEPENDENCIES}}
|
||||
// Microsoft Visual C++ generated include file.
|
||||
// Used by ImageResizerExt.rc
|
||||
//
|
||||
#define IDS_RESIZE_PICTURES 100
|
||||
#define IDS_RESIZE_PICTURES_HERE 101
|
||||
#define IDR_IMAGERESIZEREXT 102
|
||||
#define IDR_CONTEXTMENUHANDLER 104
|
||||
#define IDI_RESIZE_PICTURES 105
|
||||
#define IDS_IMAGERESIZER 106
|
||||
#define IDS_SETTINGS_DESCRIPTION 107
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 201
|
||||
#define _APS_NEXT_COMMAND_VALUE 32768
|
||||
#define _APS_NEXT_CONTROL_VALUE 201
|
||||
#define _APS_NEXT_SYMED_VALUE 103
|
||||
#endif
|
||||
#endif
|
2
src/modules/imageresizer/dll/stdafx.cpp
Normal file
@ -0,0 +1,2 @@
|
||||
#include "stdafx.h"
|
||||
#pragma comment(lib, "windowsapp")
|
23
src/modules/imageresizer/dll/stdafx.h
Normal file
@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
|
||||
#ifndef STRICT
|
||||
#define STRICT
|
||||
#endif
|
||||
|
||||
#define _ATL_APARTMENT_THREADED
|
||||
#define _ATL_NO_AUTOMATIC_NAMESPACE
|
||||
#define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS
|
||||
#define ATL_NO_ASSERT_ON_DESTROY_NONEXISTENT_WINDOW
|
||||
|
||||
#include "targetver.h"
|
||||
#include "resource.h"
|
||||
|
||||
#include <winrt/base.h>
|
||||
#include <atlbase.h>
|
||||
#include <atlcom.h>
|
||||
#include <atlfile.h>
|
||||
#include <atlstr.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include <ShlObj.h>
|
||||
#include <ProjectTelemetry.h>
|
4
src/modules/imageresizer/dll/targetver.h
Normal file
@ -0,0 +1,4 @@
|
||||
#pragma once
|
||||
|
||||
#include <winsdkver.h>
|
||||
#include <SDKDDKVer.h>
|
49
src/modules/imageresizer/dll/trace.cpp
Normal file
@ -0,0 +1,49 @@
|
||||
#include "stdafx.h"
|
||||
#include "trace.h"
|
||||
|
||||
TRACELOGGING_DEFINE_PROVIDER(
|
||||
g_hProvider,
|
||||
"Microsoft.PowerToys",
|
||||
// {38e8889b-9731-53f5-e901-e8a7c1753074}
|
||||
(0x38e8889b, 0x9731, 0x53f5, 0xe9, 0x01, 0xe8, 0xa7, 0xc1, 0x75, 0x30, 0x74),
|
||||
TraceLoggingOptionProjectTelemetry());
|
||||
|
||||
void Trace::RegisterProvider() noexcept
|
||||
{
|
||||
TraceLoggingRegister(g_hProvider);
|
||||
}
|
||||
|
||||
void Trace::UnregisterProvider() noexcept
|
||||
{
|
||||
TraceLoggingUnregister(g_hProvider);
|
||||
}
|
||||
|
||||
void Trace::EnableImageResizer(_In_ bool enabled) noexcept
|
||||
{
|
||||
TraceLoggingWrite(
|
||||
g_hProvider,
|
||||
"ImageResizer_EnableImageResizer",
|
||||
ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
|
||||
TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE),
|
||||
TraceLoggingBoolean(enabled, "Enabled"));
|
||||
}
|
||||
|
||||
|
||||
void Trace::Invoked() noexcept
|
||||
{
|
||||
TraceLoggingWrite(
|
||||
g_hProvider,
|
||||
"ImageResizer_Invoked",
|
||||
ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
|
||||
TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE));
|
||||
}
|
||||
|
||||
void Trace::InvokedRet(_In_ HRESULT hr) noexcept
|
||||
{
|
||||
TraceLoggingWrite(
|
||||
g_hProvider,
|
||||
"ImageResizer_InvokedRet",
|
||||
ProjectTelemetryPrivacyDataTag(ProjectTelemetryTag_ProductAndServicePerformance),
|
||||
TraceLoggingHResult(hr),
|
||||
TraceLoggingKeyword(PROJECT_KEYWORD_MEASURE));
|
||||
}
|
11
src/modules/imageresizer/dll/trace.h
Normal file
@ -0,0 +1,11 @@
|
||||
#pragma once
|
||||
|
||||
class Trace
|
||||
{
|
||||
public:
|
||||
static void RegisterProvider() noexcept;
|
||||
static void UnregisterProvider() noexcept;
|
||||
static void EnableImageResizer(_In_ bool enabled) noexcept;
|
||||
static void Invoked() noexcept;
|
||||
static void InvokedRet(_In_ HRESULT hr) noexcept;
|
||||
};
|
6
src/modules/imageresizer/tests/App.config
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
|
||||
</startup>
|
||||
</configuration>
|
115
src/modules/imageresizer/tests/ImageResizerUITest.csproj
Normal file
@ -0,0 +1,115 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x64</Platform>
|
||||
<ProjectGuid>{E0CC7526-D85E-43AC-844F-D5DF0D2F5AB8}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>ImageResizer</RootNamespace>
|
||||
<AssemblyName>ImageResizer.Test</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>$(SolutionDir)$(Platform)\$(Configuration)</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<CodeAnalysisRuleSet>..\..\..\codeAnalysis\Rules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>$(SolutionDir)$(Platform)\$(Configuration)</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<CodeAnalysisRuleSet>..\..\..\codeAnalysis\Rules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="WindowsBase" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ui\ImageResizerUI.csproj">
|
||||
<Project>{2be46397-4dfa-414c-9bd4-41e4bbf8cb34}</Project>
|
||||
<Name>ImageResizerUI</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AdditionalFiles Include="..\..\..\codeAnalysis\StyleCop.json">
|
||||
<Link>StyleCop.json</Link>
|
||||
</AdditionalFiles>
|
||||
<None Include="App.config">
|
||||
<SubType>Designer</SubType>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="..\codeAnalysis\GlobalSuppressions.cs">
|
||||
<Link>GlobalSuppressions.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="Models\CustomSizeTests.cs" />
|
||||
<Compile Include="Models\ResizeSizeTests.cs" />
|
||||
<Compile Include="Models\ResizeBatchTests.cs" />
|
||||
<Compile Include="Models\ResizeOperationTests.cs" />
|
||||
<Compile Include="Properties\AppFixture.cs" />
|
||||
<Compile Include="Properties\SettingsTests.cs" />
|
||||
<Compile Include="Test\AssertEx.cs" />
|
||||
<Compile Include="Test\BitmapSourceExtensions.cs" />
|
||||
<Compile Include="Test\TestDirectory.cs" />
|
||||
<Compile Include="Views\TimeRemainingConverterTests.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Test.gif">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Test.ico">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Test.jpg">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Test.png">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="TestPortrait.png">
|
||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Moq">
|
||||
<Version>4.13.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="StyleCop.Analyzers">
|
||||
<Version>1.1.118</Version>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.ValueTuple">
|
||||
<Version>4.5.0</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="xunit">
|
||||
<Version>2.4.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="xunit.runner.visualstudio">
|
||||
<Version>2.4.1</Version>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
22
src/modules/imageresizer/tests/Models/CustomSizeTests.cs
Normal file
@ -0,0 +1,22 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using ImageResizer.Properties;
|
||||
using Xunit;
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
public class CustomSizeTests
|
||||
{
|
||||
[Fact]
|
||||
public void Name_works()
|
||||
{
|
||||
var size = new CustomSize();
|
||||
|
||||
size.Name = "Ignored";
|
||||
|
||||
Assert.Equal(Resources.Input_Custom, size.Name);
|
||||
}
|
||||
}
|
||||
}
|
108
src/modules/imageresizer/tests/Models/ResizeBatchTests.cs
Normal file
@ -0,0 +1,108 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using Moq;
|
||||
using Moq.Protected;
|
||||
using Xunit;
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
public class ResizeBatchTests
|
||||
{
|
||||
private static readonly string EOL = Environment.NewLine;
|
||||
|
||||
[Fact]
|
||||
public void FromCommandLine_works()
|
||||
{
|
||||
var standardInput =
|
||||
"Image1.jpg" + EOL +
|
||||
"Image2.jpg";
|
||||
var args = new[]
|
||||
{
|
||||
"/d", "OutputDir",
|
||||
"Image3.jpg",
|
||||
};
|
||||
|
||||
var result = ResizeBatch.FromCommandLine(
|
||||
new StringReader(standardInput),
|
||||
args);
|
||||
|
||||
Assert.Equal(new List<string> { "Image1.jpg", "Image2.jpg", "Image3.jpg" }, result.Files);
|
||||
|
||||
Assert.Equal("OutputDir", result.DestinationDirectory);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Process_executes_in_parallel()
|
||||
{
|
||||
var batch = CreateBatch(_ => Thread.Sleep(50));
|
||||
batch.Files.AddRange(
|
||||
Enumerable.Range(0, Environment.ProcessorCount)
|
||||
.Select(i => "Image" + i + ".jpg"));
|
||||
|
||||
var stopwatch = Stopwatch.StartNew();
|
||||
batch.Process(CancellationToken.None, (_, __) => { });
|
||||
stopwatch.Stop();
|
||||
|
||||
Assert.InRange(stopwatch.ElapsedMilliseconds, 50, 99);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Process_aggregates_errors()
|
||||
{
|
||||
var batch = CreateBatch(file => throw new Exception("Error: " + file));
|
||||
batch.Files.Add("Image1.jpg");
|
||||
batch.Files.Add("Image2.jpg");
|
||||
|
||||
var errors = batch.Process(CancellationToken.None, (_, __) => { }).ToList();
|
||||
|
||||
Assert.Equal(2, errors.Count);
|
||||
|
||||
var errorFiles = new List<string>();
|
||||
|
||||
foreach (var error in errors)
|
||||
{
|
||||
errorFiles.Add(error.File);
|
||||
Assert.Equal("Error: " + error.File, error.Error);
|
||||
}
|
||||
|
||||
foreach (var file in batch.Files)
|
||||
{
|
||||
Assert.Contains(file, errorFiles);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Process_reports_progress()
|
||||
{
|
||||
var batch = CreateBatch(_ => { });
|
||||
batch.Files.Add("Image1.jpg");
|
||||
batch.Files.Add("Image2.jpg");
|
||||
var calls = new ConcurrentBag<(int i, double count)>();
|
||||
|
||||
batch.Process(
|
||||
CancellationToken.None,
|
||||
(i, count) => calls.Add((i, count)));
|
||||
|
||||
Assert.Equal(2, calls.Count);
|
||||
Assert.Contains(calls, c => c.i == 1 && c.count == 2);
|
||||
Assert.Contains(calls, c => c.i == 2 && c.count == 2);
|
||||
}
|
||||
|
||||
private static ResizeBatch CreateBatch(Action<string> executeAction)
|
||||
{
|
||||
var mock = new Mock<ResizeBatch> { CallBase = true };
|
||||
mock.Protected().Setup("Execute", ItExpr.IsAny<string>()).Callback(executeAction);
|
||||
|
||||
return mock.Object;
|
||||
}
|
||||
}
|
||||
}
|
453
src/modules/imageresizer/tests/Models/ResizeOperationTests.cs
Normal file
@ -0,0 +1,453 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.IO;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using ImageResizer.Properties;
|
||||
using ImageResizer.Test;
|
||||
using Xunit;
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
public class ResizeOperationTests : IDisposable
|
||||
{
|
||||
private readonly TestDirectory _directory = new TestDirectory();
|
||||
|
||||
[Fact]
|
||||
public void Execute_copies_frame_metadata()
|
||||
{
|
||||
var operation = new ResizeOperation("Test.jpg", _directory, Settings());
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image => Assert.Equal("Test", ((BitmapMetadata)image.Frames[0].Metadata).Comment));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Execute_keeps_date_modified()
|
||||
{
|
||||
var operation = new ResizeOperation("Test.png", _directory, Settings(s => s.KeepDateModified = true));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
Assert.Equal(File.GetLastWriteTimeUtc("Test.png"), File.GetLastWriteTimeUtc(_directory.File()));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Execute_keeps_date_modified_when_replacing_originals()
|
||||
{
|
||||
var path = Path.Combine(_directory, "Test.png");
|
||||
File.Copy("Test.png", path);
|
||||
|
||||
var originalDateModified = File.GetLastWriteTimeUtc(path);
|
||||
|
||||
var operation = new ResizeOperation(
|
||||
path,
|
||||
null,
|
||||
Settings(
|
||||
s =>
|
||||
{
|
||||
s.KeepDateModified = true;
|
||||
s.Replace = true;
|
||||
}));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
Assert.Equal(originalDateModified, File.GetLastWriteTimeUtc(_directory.File()));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Execute_replaces_originals()
|
||||
{
|
||||
var path = Path.Combine(_directory, "Test.png");
|
||||
File.Copy("Test.png", path);
|
||||
|
||||
var operation = new ResizeOperation(path, null, Settings(s => s.Replace = true));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(_directory.File(), image => Assert.Equal(96, image.Frames[0].PixelWidth));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Execute_transforms_each_frame()
|
||||
{
|
||||
var operation = new ResizeOperation("Test.gif", _directory, Settings());
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image =>
|
||||
{
|
||||
Assert.Equal(2, image.Frames.Count);
|
||||
AssertEx.All(image.Frames, frame => Assert.Equal(96, frame.PixelWidth));
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Execute_uses_fallback_encoder()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.ico",
|
||||
_directory,
|
||||
Settings(s => s.FallbackEncoder = new PngBitmapEncoder().CodecInfo.ContainerFormat));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
Assert.Contains("Test (Test).png", _directory.FileNames);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_ignores_orientation_when_landscape_to_portrait()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(
|
||||
x =>
|
||||
{
|
||||
x.IgnoreOrientation = true;
|
||||
x.SelectedSize.Width = 96;
|
||||
x.SelectedSize.Height = 192;
|
||||
}));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image =>
|
||||
{
|
||||
Assert.Equal(192, image.Frames[0].PixelWidth);
|
||||
Assert.Equal(96, image.Frames[0].PixelHeight);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_ignores_orientation_when_portrait_to_landscape()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"TestPortrait.png",
|
||||
_directory,
|
||||
Settings(
|
||||
x =>
|
||||
{
|
||||
x.IgnoreOrientation = true;
|
||||
x.SelectedSize.Width = 192;
|
||||
x.SelectedSize.Height = 96;
|
||||
}));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image =>
|
||||
{
|
||||
Assert.Equal(96, image.Frames[0].PixelWidth);
|
||||
Assert.Equal(192, image.Frames[0].PixelHeight);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_ignores_ignore_orientation_when_auto()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(
|
||||
x =>
|
||||
{
|
||||
x.IgnoreOrientation = true;
|
||||
x.SelectedSize.Width = 96;
|
||||
x.SelectedSize.Height = 0;
|
||||
}));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image =>
|
||||
{
|
||||
Assert.Equal(96, image.Frames[0].PixelWidth);
|
||||
Assert.Equal(48, image.Frames[0].PixelHeight);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_ignores_ignore_orientation_when_percent()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(
|
||||
x =>
|
||||
{
|
||||
x.IgnoreOrientation = true;
|
||||
x.SelectedSize.Width = 50;
|
||||
x.SelectedSize.Height = 200;
|
||||
x.SelectedSize.Unit = ResizeUnit.Percent;
|
||||
x.SelectedSize.Fit = ResizeFit.Stretch;
|
||||
}));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image =>
|
||||
{
|
||||
Assert.Equal(96, image.Frames[0].PixelWidth);
|
||||
Assert.Equal(192, image.Frames[0].PixelHeight);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_honors_shrink_only()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(
|
||||
x =>
|
||||
{
|
||||
x.ShrinkOnly = true;
|
||||
x.SelectedSize.Width = 288;
|
||||
x.SelectedSize.Height = 288;
|
||||
}));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image =>
|
||||
{
|
||||
Assert.Equal(192, image.Frames[0].PixelWidth);
|
||||
Assert.Equal(96, image.Frames[0].PixelHeight);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_ignores_shrink_only_when_percent()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(
|
||||
x =>
|
||||
{
|
||||
x.ShrinkOnly = true;
|
||||
x.SelectedSize.Width = 133.3;
|
||||
x.SelectedSize.Unit = ResizeUnit.Percent;
|
||||
}));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image =>
|
||||
{
|
||||
Assert.Equal(256, image.Frames[0].PixelWidth);
|
||||
Assert.Equal(128, image.Frames[0].PixelHeight);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_honors_shrink_only_when_auto_height()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(
|
||||
x =>
|
||||
{
|
||||
x.ShrinkOnly = true;
|
||||
x.SelectedSize.Width = 288;
|
||||
x.SelectedSize.Height = 0;
|
||||
}));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image => Assert.Equal(192, image.Frames[0].PixelWidth));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_honors_shrink_only_when_auto_width()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(
|
||||
x =>
|
||||
{
|
||||
x.ShrinkOnly = true;
|
||||
x.SelectedSize.Width = 0;
|
||||
x.SelectedSize.Height = 288;
|
||||
}));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image => Assert.Equal(96, image.Frames[0].PixelHeight));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_honors_unit()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(
|
||||
x =>
|
||||
{
|
||||
x.SelectedSize.Width = 1;
|
||||
x.SelectedSize.Height = 1;
|
||||
x.SelectedSize.Unit = ResizeUnit.Inch;
|
||||
}));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(_directory.File(), image => Assert.Equal(image.Frames[0].DpiX, image.Frames[0].PixelWidth, 0));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_honors_fit_when_Fit()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(x => x.SelectedSize.Fit = ResizeFit.Fit));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image =>
|
||||
{
|
||||
Assert.Equal(96, image.Frames[0].PixelWidth);
|
||||
Assert.Equal(48, image.Frames[0].PixelHeight);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_honors_fit_when_Fill()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(x => x.SelectedSize.Fit = ResizeFit.Fill));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image =>
|
||||
{
|
||||
Assert.Equal(Colors.White, image.Frames[0].GetFirstPixel());
|
||||
Assert.Equal(96, image.Frames[0].PixelWidth);
|
||||
Assert.Equal(96, image.Frames[0].PixelHeight);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Transform_honors_fit_when_Stretch()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(x => x.SelectedSize.Fit = ResizeFit.Stretch));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
AssertEx.Image(
|
||||
_directory.File(),
|
||||
image =>
|
||||
{
|
||||
Assert.Equal(Colors.Black, image.Frames[0].GetFirstPixel());
|
||||
Assert.Equal(96, image.Frames[0].PixelWidth);
|
||||
Assert.Equal(96, image.Frames[0].PixelHeight);
|
||||
});
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetDestinationPath_uniquifies_output_filename()
|
||||
{
|
||||
File.WriteAllBytes(Path.Combine(_directory, "Test (Test).png"), new byte[0]);
|
||||
|
||||
var operation = new ResizeOperation("Test.png", _directory, Settings());
|
||||
|
||||
operation.Execute();
|
||||
|
||||
Assert.Contains("Test (Test) (1).png", _directory.FileNames);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetDestinationPath_uniquifies_output_filename_again()
|
||||
{
|
||||
File.WriteAllBytes(Path.Combine(_directory, "Test (Test).png"), new byte[0]);
|
||||
File.WriteAllBytes(Path.Combine(_directory, "Test (Test) (1).png"), new byte[0]);
|
||||
|
||||
var operation = new ResizeOperation("Test.png", _directory, Settings());
|
||||
|
||||
operation.Execute();
|
||||
|
||||
Assert.Contains("Test (Test) (2).png", _directory.FileNames);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetDestinationPath_uses_fileName_format()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(s => s.FileName = "%1_%2_%3_%4_%5_%6"));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
Assert.Contains("Test_Test_96_96_96_48.png", _directory.FileNames);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Execute_handles_directories_in_fileName_format()
|
||||
{
|
||||
var operation = new ResizeOperation(
|
||||
"Test.png",
|
||||
_directory,
|
||||
Settings(s => s.FileName = @"Directory\%1 (%2)"));
|
||||
|
||||
operation.Execute();
|
||||
|
||||
Assert.True(File.Exists(_directory + @"\Directory\Test (Test).png"));
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
=> _directory.Dispose();
|
||||
|
||||
private Settings Settings(Action<Settings> action = null)
|
||||
{
|
||||
var settings = new Settings
|
||||
{
|
||||
Sizes = new ObservableCollection<ResizeSize>
|
||||
{
|
||||
new ResizeSize
|
||||
{
|
||||
Name = "Test",
|
||||
Width = 96,
|
||||
Height = 96,
|
||||
},
|
||||
},
|
||||
SelectedSizeIndex = 0,
|
||||
};
|
||||
action?.Invoke(settings);
|
||||
|
||||
return settings;
|
||||
}
|
||||
}
|
||||
}
|
272
src/modules/imageresizer/tests/Models/ResizeSizeTests.cs
Normal file
@ -0,0 +1,272 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using ImageResizer.Properties;
|
||||
using ImageResizer.Test;
|
||||
using Xunit;
|
||||
using Xunit.Extensions;
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
public class ResizeSizeTests
|
||||
{
|
||||
[Fact]
|
||||
public void Name_works()
|
||||
{
|
||||
var size = new ResizeSize();
|
||||
|
||||
var e = AssertEx.Raises<PropertyChangedEventArgs>(
|
||||
h => size.PropertyChanged += h,
|
||||
h => size.PropertyChanged -= h,
|
||||
() => size.Name = "Test");
|
||||
|
||||
Assert.Equal("Test", size.Name);
|
||||
Assert.Equal(nameof(ResizeSize.Name), e.Arguments.PropertyName);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Name_replaces_tokens()
|
||||
{
|
||||
var args = new List<(string, string)>
|
||||
{
|
||||
("$small$", Resources.Small),
|
||||
("$medium$", Resources.Medium),
|
||||
("$large$", Resources.Large),
|
||||
("$phone$", Resources.Phone),
|
||||
};
|
||||
foreach (var (name, expected) in args)
|
||||
{
|
||||
var size = new ResizeSize();
|
||||
|
||||
size.Name = name;
|
||||
|
||||
Assert.Equal(expected, size.Name);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Fit_works()
|
||||
{
|
||||
var size = new ResizeSize();
|
||||
|
||||
var e = AssertEx.Raises<PropertyChangedEventArgs>(
|
||||
h => size.PropertyChanged += h,
|
||||
h => size.PropertyChanged -= h,
|
||||
() => size.Fit = ResizeFit.Stretch);
|
||||
|
||||
Assert.Equal(ResizeFit.Stretch, size.Fit);
|
||||
Assert.Equal(nameof(ResizeSize.Fit), e.Arguments.PropertyName);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Width_works()
|
||||
{
|
||||
var size = new ResizeSize();
|
||||
|
||||
var e = AssertEx.Raises<PropertyChangedEventArgs>(
|
||||
h => size.PropertyChanged += h,
|
||||
h => size.PropertyChanged -= h,
|
||||
() => size.Width = 42);
|
||||
|
||||
Assert.Equal(42, size.Width);
|
||||
Assert.Equal(nameof(ResizeSize.Width), e.Arguments.PropertyName);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Height_works()
|
||||
{
|
||||
var size = new ResizeSize();
|
||||
|
||||
var e = AssertEx.Raises<PropertyChangedEventArgs>(
|
||||
h => size.PropertyChanged += h,
|
||||
h => size.PropertyChanged -= h,
|
||||
() => size.Height = 42);
|
||||
|
||||
Assert.Equal(42, size.Height);
|
||||
Assert.Equal(nameof(ResizeSize.Height), e.Arguments.PropertyName);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasAuto_returns_true_when_Width_unset()
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Width = 0,
|
||||
Height = 42,
|
||||
};
|
||||
|
||||
Assert.True(size.HasAuto);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasAuto_returns_true_when_Height_unset()
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Width = 42,
|
||||
Height = 0,
|
||||
};
|
||||
|
||||
Assert.True(size.HasAuto);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void HasAuto_returns_false_when_Width_and_Height_set()
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Width = 42,
|
||||
Height = 42,
|
||||
};
|
||||
|
||||
Assert.False(size.HasAuto);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Unit_works()
|
||||
{
|
||||
var size = new ResizeSize();
|
||||
|
||||
var e = AssertEx.Raises<PropertyChangedEventArgs>(
|
||||
h => size.PropertyChanged += h,
|
||||
h => size.PropertyChanged -= h,
|
||||
() => size.Unit = ResizeUnit.Inch);
|
||||
|
||||
Assert.Equal(ResizeUnit.Inch, size.Unit);
|
||||
Assert.Equal(nameof(ResizeSize.Unit), e.Arguments.PropertyName);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetPixelWidth_works()
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Width = 1,
|
||||
Unit = ResizeUnit.Inch,
|
||||
};
|
||||
|
||||
var result = size.GetPixelWidth(100, 96);
|
||||
|
||||
Assert.Equal(96, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void GetPixelHeight_works()
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Height = 1,
|
||||
Unit = ResizeUnit.Inch,
|
||||
};
|
||||
|
||||
var result = size.GetPixelHeight(100, 96);
|
||||
|
||||
Assert.Equal(96, result);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(ResizeFit.Fit)]
|
||||
[InlineData(ResizeFit.Fill)]
|
||||
public void GetPixelHeight_uses_Width_when_scale_by_percent(ResizeFit fit)
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Fit = fit,
|
||||
Width = 100,
|
||||
Height = 50,
|
||||
Unit = ResizeUnit.Percent,
|
||||
};
|
||||
|
||||
var result = size.GetPixelHeight(100, 96);
|
||||
|
||||
Assert.Equal(100, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ConvertToPixels_works_when_auto_and_fit()
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Width = 0,
|
||||
Fit = ResizeFit.Fit,
|
||||
};
|
||||
|
||||
var result = size.GetPixelWidth(100, 96);
|
||||
|
||||
Assert.Equal(double.PositiveInfinity, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ConvertToPixels_works_when_auto_and_not_fit()
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Width = 0,
|
||||
Fit = ResizeFit.Fill,
|
||||
};
|
||||
|
||||
var result = size.GetPixelWidth(100, 96);
|
||||
|
||||
Assert.Equal(100, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ConvertToPixels_works_when_inches()
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Width = 0.5,
|
||||
Unit = ResizeUnit.Inch,
|
||||
};
|
||||
|
||||
var result = size.GetPixelWidth(100, 96);
|
||||
|
||||
Assert.Equal(48, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ConvertToPixels_works_when_centimeters()
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Width = 1,
|
||||
Unit = ResizeUnit.Centimeter,
|
||||
};
|
||||
|
||||
var result = size.GetPixelWidth(100, 96);
|
||||
|
||||
Assert.Equal(38, result, 0);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ConvertToPixels_works_when_percent()
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Width = 50,
|
||||
Unit = ResizeUnit.Percent,
|
||||
};
|
||||
|
||||
var result = size.GetPixelWidth(200, 96);
|
||||
|
||||
Assert.Equal(100, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ConvertToPixels_works_when_pixels()
|
||||
{
|
||||
var size = new ResizeSize
|
||||
{
|
||||
Width = 50,
|
||||
Unit = ResizeUnit.Pixel,
|
||||
};
|
||||
|
||||
var result = size.GetPixelWidth(100, 96);
|
||||
|
||||
Assert.Equal(50, result);
|
||||
}
|
||||
}
|
||||
}
|
26
src/modules/imageresizer/tests/Properties/AppFixture.cs
Normal file
@ -0,0 +1,26 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
|
||||
[module: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1636:FileHeaderCopyrightTextMustMatch", Justification = "File created under PowerToys.")]
|
||||
|
||||
namespace ImageResizer.Properties
|
||||
{
|
||||
public class AppFixture : IDisposable
|
||||
{
|
||||
public AppFixture()
|
||||
{
|
||||
// new App() needs to be created since Settings.Reload() uses App.Current to update properties on the UI thread. App() can be created only once otherwise it results in System.InvalidOperationException : Cannot create more than one System.Windows.Application instance in the same AppDomain.
|
||||
imageResizerApp = new App();
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
imageResizerApp = null;
|
||||
}
|
||||
|
||||
private App imageResizerApp;
|
||||
}
|
||||
}
|
280
src/modules/imageresizer/tests/Properties/SettingsTests.cs
Normal file
@ -0,0 +1,280 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Collections.Specialized;
|
||||
using System.ComponentModel;
|
||||
using ImageResizer.Models;
|
||||
using ImageResizer.Test;
|
||||
using Xunit;
|
||||
using Xunit.Abstractions;
|
||||
using Xunit.Extensions;
|
||||
|
||||
namespace ImageResizer.Properties
|
||||
{
|
||||
public class SettingsTests : IClassFixture<AppFixture>, IDisposable
|
||||
{
|
||||
public SettingsTests()
|
||||
{
|
||||
// Change settings.json path to a temp file
|
||||
Settings.SettingsPath = ".\\test_settings.json";
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
if (System.IO.File.Exists(Settings.SettingsPath))
|
||||
{
|
||||
System.IO.File.Delete(Settings.SettingsPath);
|
||||
}
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AllSizes_propagates_Sizes_collection_events()
|
||||
{
|
||||
var settings = new Settings
|
||||
{
|
||||
Sizes = new ObservableCollection<ResizeSize>(),
|
||||
CustomSize = new CustomSize(),
|
||||
};
|
||||
var ncc = (INotifyCollectionChanged)settings.AllSizes;
|
||||
|
||||
var result = AssertEx.Raises<NotifyCollectionChangedEventArgs>(
|
||||
h => ncc.CollectionChanged += h,
|
||||
h => ncc.CollectionChanged -= h,
|
||||
() => settings.Sizes.Add(new ResizeSize()));
|
||||
|
||||
Assert.Equal(NotifyCollectionChangedAction.Add, result.Arguments.Action);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AllSizes_propagates_Sizes_property_events()
|
||||
{
|
||||
var settings = new Settings
|
||||
{
|
||||
Sizes = new ObservableCollection<ResizeSize>(),
|
||||
CustomSize = new CustomSize(),
|
||||
};
|
||||
|
||||
Assert.PropertyChanged(
|
||||
(INotifyPropertyChanged)settings.AllSizes,
|
||||
"Item[]",
|
||||
() => settings.Sizes.Add(new ResizeSize()));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AllSizes_contains_Sizes()
|
||||
{
|
||||
var settings = new Settings
|
||||
{
|
||||
Sizes = new ObservableCollection<ResizeSize> { new ResizeSize() },
|
||||
CustomSize = new CustomSize(),
|
||||
};
|
||||
|
||||
Assert.Contains(settings.Sizes[0], settings.AllSizes);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AllSizes_contains_CustomSize()
|
||||
{
|
||||
var settings = new Settings
|
||||
{
|
||||
Sizes = new ObservableCollection<ResizeSize>(),
|
||||
CustomSize = new CustomSize(),
|
||||
};
|
||||
|
||||
Assert.Contains(settings.CustomSize, settings.AllSizes);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void AllSizes_handles_property_events_for_CustomSize()
|
||||
{
|
||||
var originalCustomSize = new CustomSize();
|
||||
var settings = new Settings
|
||||
{
|
||||
Sizes = new ObservableCollection<ResizeSize>(),
|
||||
CustomSize = originalCustomSize,
|
||||
};
|
||||
var ncc = (INotifyCollectionChanged)settings.AllSizes;
|
||||
|
||||
var result = AssertEx.Raises<NotifyCollectionChangedEventArgs>(
|
||||
h => ncc.CollectionChanged += h,
|
||||
h => ncc.CollectionChanged -= h,
|
||||
() => settings.CustomSize = new CustomSize());
|
||||
|
||||
Assert.Equal(NotifyCollectionChangedAction.Replace, result.Arguments.Action);
|
||||
Assert.Equal(1, result.Arguments.NewItems.Count);
|
||||
Assert.Equal(settings.CustomSize, result.Arguments.NewItems[0]);
|
||||
Assert.Equal(0, result.Arguments.NewStartingIndex);
|
||||
Assert.Equal(1, result.Arguments.OldItems.Count);
|
||||
Assert.Equal(originalCustomSize, result.Arguments.OldItems[0]);
|
||||
Assert.Equal(0, result.Arguments.OldStartingIndex);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void FileNameFormat_works()
|
||||
{
|
||||
var settings = new Settings { FileName = "{T}%1e%2s%3t%4%5%6%7" };
|
||||
|
||||
var result = settings.FileNameFormat;
|
||||
|
||||
Assert.Equal("{{T}}{0}e{1}s{2}t{3}{4}{5}%7", result);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(0)]
|
||||
[InlineData(1)]
|
||||
[InlineData(2)]
|
||||
public void SelectedSize_returns_CustomSize_when_out_of_range(int index)
|
||||
{
|
||||
var settings = new Settings
|
||||
{
|
||||
SelectedSizeIndex = index,
|
||||
Sizes = new ObservableCollection<ResizeSize>(),
|
||||
CustomSize = new CustomSize(),
|
||||
};
|
||||
|
||||
var result = settings.SelectedSize;
|
||||
|
||||
Assert.Same(settings.CustomSize, result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void SelectedSize_returns_Size_when_in_range()
|
||||
{
|
||||
var settings = new Settings
|
||||
{
|
||||
SelectedSizeIndex = 0,
|
||||
Sizes = new ObservableCollection<ResizeSize>
|
||||
{
|
||||
new ResizeSize(),
|
||||
},
|
||||
};
|
||||
|
||||
var result = settings.SelectedSize;
|
||||
|
||||
Assert.Same(settings.Sizes[0], result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void IDataErrorInfo_Error_returns_empty()
|
||||
{
|
||||
var settings = new Settings();
|
||||
|
||||
var result = ((IDataErrorInfo)settings).Error;
|
||||
|
||||
Assert.Empty(result);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(0)]
|
||||
[InlineData(101)]
|
||||
public void IDataErrorInfo_Item_JpegQualityLevel_returns_error_when_out_of_range(int value)
|
||||
{
|
||||
var settings = new Settings { JpegQualityLevel = value };
|
||||
|
||||
var result = ((IDataErrorInfo)settings)["JpegQualityLevel"];
|
||||
|
||||
Assert.Equal(
|
||||
string.Format(Resources.ValueMustBeBetween, 1, 100),
|
||||
result);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(1)]
|
||||
[InlineData(100)]
|
||||
public void IDataErrorInfo_Item_JpegQualityLevel_returns_empty_when_in_range(int value)
|
||||
{
|
||||
var settings = new Settings { JpegQualityLevel = value };
|
||||
|
||||
var result = ((IDataErrorInfo)settings)["JpegQualityLevel"];
|
||||
|
||||
Assert.Empty(result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void IDataErrorInfo_Item_returns_empty_when_not_JpegQualityLevel()
|
||||
{
|
||||
var settings = new Settings();
|
||||
|
||||
var result = ((IDataErrorInfo)settings)["Unknown"];
|
||||
|
||||
Assert.Empty(result);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Reload_createsFile_when_FileNotFound()
|
||||
{
|
||||
// Arrange
|
||||
var settings = new Settings();
|
||||
|
||||
// Assert
|
||||
Assert.False(System.IO.File.Exists(Settings.SettingsPath));
|
||||
|
||||
// Act
|
||||
settings.Reload();
|
||||
|
||||
// Assert
|
||||
Assert.True(System.IO.File.Exists(Settings.SettingsPath));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Save_creates_file()
|
||||
{
|
||||
// Arrange
|
||||
var settings = new Settings();
|
||||
|
||||
// Assert
|
||||
Assert.False(System.IO.File.Exists(Settings.SettingsPath));
|
||||
|
||||
// Act
|
||||
settings.Save();
|
||||
|
||||
// Assert
|
||||
Assert.True(System.IO.File.Exists(Settings.SettingsPath));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Save_json_is_readable_by_Reload()
|
||||
{
|
||||
// Arrange
|
||||
var settings = new Settings();
|
||||
|
||||
// Assert
|
||||
Assert.False(System.IO.File.Exists(Settings.SettingsPath));
|
||||
|
||||
// Act
|
||||
settings.Save();
|
||||
settings.Reload(); // If the JSON file created by Save() is not readable this function will throw an error
|
||||
|
||||
// Assert
|
||||
Assert.True(System.IO.File.Exists(Settings.SettingsPath));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Reload_raises_PropertyChanged_()
|
||||
{
|
||||
// Arrange
|
||||
var settings = new Settings();
|
||||
settings.Save(); // To create the settings file
|
||||
|
||||
// Act
|
||||
var action = new System.Action(settings.Reload);
|
||||
|
||||
// Assert
|
||||
Assert.PropertyChanged(settings, "ShrinkOnly", action);
|
||||
Assert.PropertyChanged(settings, "Replace", action);
|
||||
Assert.PropertyChanged(settings, "IgnoreOrientation", action);
|
||||
Assert.PropertyChanged(settings, "JpegQualityLevel", action);
|
||||
Assert.PropertyChanged(settings, "PngInterlaceOption", action);
|
||||
Assert.PropertyChanged(settings, "TiffCompressOption", action);
|
||||
Assert.PropertyChanged(settings, "FileName", action);
|
||||
Assert.PropertyChanged(settings, "Sizes", action);
|
||||
Assert.PropertyChanged(settings, "KeepDateModified", action);
|
||||
Assert.PropertyChanged(settings, "FallbackEncoder", action);
|
||||
Assert.PropertyChanged(settings, "CustomSize", action);
|
||||
Assert.PropertyChanged(settings, "SelectedSizeIndex", action);
|
||||
}
|
||||
}
|
||||
}
|
BIN
src/modules/imageresizer/tests/Test.gif
Normal file
After Width: | Height: | Size: 1.7 KiB |
BIN
src/modules/imageresizer/tests/Test.ico
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
src/modules/imageresizer/tests/Test.jpg
Normal file
After Width: | Height: | Size: 7.6 KiB |
BIN
src/modules/imageresizer/tests/Test.png
Normal file
After Width: | Height: | Size: 781 B |
87
src/modules/imageresizer/tests/Test/AssertEx.cs
Normal file
@ -0,0 +1,87 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.Specialized;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Windows.Media.Imaging;
|
||||
using Xunit;
|
||||
|
||||
namespace ImageResizer.Test
|
||||
{
|
||||
internal static class AssertEx
|
||||
{
|
||||
public static void All<T>(IEnumerable<T> collection, Action<T> action)
|
||||
{
|
||||
foreach (var item in collection)
|
||||
{
|
||||
action(item);
|
||||
}
|
||||
}
|
||||
|
||||
public static void Image(string path, Action<BitmapDecoder> action)
|
||||
{
|
||||
using (var stream = File.OpenRead(path))
|
||||
{
|
||||
var image = BitmapDecoder.Create(
|
||||
stream,
|
||||
BitmapCreateOptions.PreservePixelFormat,
|
||||
BitmapCacheOption.None);
|
||||
|
||||
action(image);
|
||||
}
|
||||
}
|
||||
|
||||
public static RaisedEvent<NotifyCollectionChangedEventArgs> Raises<T>(
|
||||
Action<NotifyCollectionChangedEventHandler> attach,
|
||||
Action<NotifyCollectionChangedEventHandler> detach,
|
||||
Action testCode)
|
||||
where T : NotifyCollectionChangedEventArgs
|
||||
{
|
||||
RaisedEvent<NotifyCollectionChangedEventArgs> raisedEvent = null;
|
||||
NotifyCollectionChangedEventHandler handler = (sender, e)
|
||||
=> raisedEvent = new RaisedEvent<NotifyCollectionChangedEventArgs>(sender, e);
|
||||
attach(handler);
|
||||
testCode();
|
||||
detach(handler);
|
||||
|
||||
Assert.NotNull(raisedEvent);
|
||||
|
||||
return raisedEvent;
|
||||
}
|
||||
|
||||
public static RaisedEvent<PropertyChangedEventArgs> Raises<T>(
|
||||
Action<PropertyChangedEventHandler> attach,
|
||||
Action<PropertyChangedEventHandler> detach,
|
||||
Action testCode)
|
||||
where T : PropertyChangedEventArgs
|
||||
{
|
||||
RaisedEvent<PropertyChangedEventArgs> raisedEvent = null;
|
||||
PropertyChangedEventHandler handler = (sender, e)
|
||||
=> raisedEvent = new RaisedEvent<PropertyChangedEventArgs>(sender, e);
|
||||
attach(handler);
|
||||
testCode();
|
||||
detach(handler);
|
||||
|
||||
Assert.NotNull(raisedEvent);
|
||||
|
||||
return raisedEvent;
|
||||
}
|
||||
|
||||
public class RaisedEvent<TArgs>
|
||||
{
|
||||
public RaisedEvent(object sender, TArgs args)
|
||||
{
|
||||
Sender = sender;
|
||||
Arguments = args;
|
||||
}
|
||||
|
||||
public object Sender { get; }
|
||||
|
||||
public TArgs Arguments { get; }
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
|
||||
namespace ImageResizer.Test
|
||||
{
|
||||
internal static class BitmapSourceExtensions
|
||||
{
|
||||
public static Color GetFirstPixel(this BitmapSource source)
|
||||
{
|
||||
var pixel = new byte[4];
|
||||
new FormatConvertedBitmap(
|
||||
new CroppedBitmap(source, new Int32Rect(0, 0, 1, 1)),
|
||||
PixelFormats.Bgra32,
|
||||
destinationPalette: null,
|
||||
alphaThreshold: 0)
|
||||
.CopyPixels(pixel, 4, 0);
|
||||
|
||||
return Color.FromArgb(pixel[3], pixel[2], pixel[1], pixel[0]);
|
||||
}
|
||||
}
|
||||
}
|
57
src/modules/imageresizer/tests/Test/TestDirectory.cs
Normal file
@ -0,0 +1,57 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using Xunit;
|
||||
using IOPath = System.IO.Path;
|
||||
|
||||
namespace ImageResizer
|
||||
{
|
||||
public class TestDirectory : IDisposable
|
||||
{
|
||||
private readonly string _path;
|
||||
|
||||
public TestDirectory()
|
||||
{
|
||||
_path = IOPath.Combine(
|
||||
AppDomain.CurrentDomain.BaseDirectory,
|
||||
IOPath.GetRandomFileName());
|
||||
Directory.CreateDirectory(_path);
|
||||
}
|
||||
|
||||
private IEnumerable<string> Files
|
||||
=> Directory.EnumerateFiles(_path);
|
||||
|
||||
public IEnumerable<string> FileNames
|
||||
=> Files.Select(IOPath.GetFileName);
|
||||
|
||||
public string File()
|
||||
=> Assert.Single(Files);
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
var stopwatch = Stopwatch.StartNew();
|
||||
while (stopwatch.ElapsedMilliseconds < 30000)
|
||||
{
|
||||
try
|
||||
{
|
||||
Directory.Delete(_path, recursive: true);
|
||||
break;
|
||||
}
|
||||
catch
|
||||
{
|
||||
Thread.Sleep(150);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static implicit operator string(TestDirectory directory)
|
||||
=> directory._path;
|
||||
}
|
||||
}
|
BIN
src/modules/imageresizer/tests/TestPortrait.png
Normal file
After Width: | Height: | Size: 656 B |
@ -0,0 +1,46 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using ImageResizer.Properties;
|
||||
using Xunit;
|
||||
using Xunit.Extensions;
|
||||
|
||||
namespace ImageResizer.Views
|
||||
{
|
||||
public class TimeRemainingConverterTests
|
||||
{
|
||||
[Theory]
|
||||
[InlineData("HourMinute", 1, 1, 0)]
|
||||
[InlineData("HourMinutes", 1, 2, 0)]
|
||||
[InlineData("HoursMinute", 2, 1, 0)]
|
||||
[InlineData("HoursMinutes", 2, 2, 0)]
|
||||
[InlineData("MinuteSecond", 0, 1, 1)]
|
||||
[InlineData("MinuteSeconds", 0, 1, 2)]
|
||||
[InlineData("MinutesSecond", 0, 2, 1)]
|
||||
[InlineData("MinutesSeconds", 0, 2, 2)]
|
||||
[InlineData("Second", 0, 0, 1)]
|
||||
[InlineData("Seconds", 0, 0, 2)]
|
||||
public void Convert_works(string resource, int hours, int minutes, int seconds)
|
||||
{
|
||||
var timeRemaining = new TimeSpan(hours, minutes, seconds);
|
||||
var converter = new TimeRemainingConverter();
|
||||
|
||||
var result = converter.Convert(
|
||||
timeRemaining,
|
||||
targetType: null,
|
||||
parameter: null,
|
||||
CultureInfo.InvariantCulture);
|
||||
|
||||
Assert.Equal(
|
||||
string.Format(
|
||||
Resources.ResourceManager.GetString("Progress_TimeRemaining_" + resource),
|
||||
hours,
|
||||
minutes,
|
||||
seconds),
|
||||
result);
|
||||
}
|
||||
}
|
||||
}
|
6
src/modules/imageresizer/ui/App.config
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/>
|
||||
</startup>
|
||||
</configuration>
|
32
src/modules/imageresizer/ui/App.xaml
Normal file
@ -0,0 +1,32 @@
|
||||
<Application x:Class="ImageResizer.App"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:m="clr-namespace:ImageResizer.Models"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
xmlns:v="clr-namespace:ImageResizer.Views">
|
||||
|
||||
<Application.Resources>
|
||||
<ObjectDataProvider x:Key="ResizeFitValues"
|
||||
MethodName="GetValues"
|
||||
ObjectType="sys:Enum">
|
||||
<ObjectDataProvider.MethodParameters>
|
||||
<x:Type Type="{x:Type m:ResizeFit}"/>
|
||||
</ObjectDataProvider.MethodParameters>
|
||||
</ObjectDataProvider>
|
||||
<ObjectDataProvider x:Key="ResizeUnitValues"
|
||||
MethodName="GetValues"
|
||||
ObjectType="sys:Enum">
|
||||
<ObjectDataProvider.MethodParameters>
|
||||
<x:Type Type="{x:Type m:ResizeUnit}"/>
|
||||
</ObjectDataProvider.MethodParameters>
|
||||
</ObjectDataProvider>
|
||||
<v:EnumValueConverter x:Key="EnumValueConverter"/>
|
||||
<v:AutoDoubleConverter x:Key="AutoDoubleConverter"/>
|
||||
<v:BoolValueConverter x:Key="BoolValueConverter"/>
|
||||
<Style x:Key="MainInstructionTextBlockStyle" TargetType="TextBlock">
|
||||
<Setter Property="FontSize" Value="12pt"/>
|
||||
<Setter Property="Foreground" Value="#039"/>
|
||||
</Style>
|
||||
</Application.Resources>
|
||||
|
||||
</Application>
|
45
src/modules/imageresizer/ui/App.xaml.cs
Normal file
@ -0,0 +1,45 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Text;
|
||||
using System.Windows;
|
||||
using GalaSoft.MvvmLight.Threading;
|
||||
using ImageResizer.Models;
|
||||
using ImageResizer.Properties;
|
||||
using ImageResizer.Utilities;
|
||||
using ImageResizer.ViewModels;
|
||||
using ImageResizer.Views;
|
||||
|
||||
namespace ImageResizer
|
||||
{
|
||||
public partial class App : Application
|
||||
{
|
||||
static App()
|
||||
{
|
||||
Console.InputEncoding = Encoding.Unicode;
|
||||
DispatcherHelper.Initialize();
|
||||
}
|
||||
|
||||
protected override void OnStartup(StartupEventArgs e)
|
||||
{
|
||||
var batch = ResizeBatch.FromCommandLine(Console.In, e.Args);
|
||||
|
||||
// TODO: Add command-line parameters that can be used in lieu of the input page (issue #14)
|
||||
var mainWindow = new MainWindow(new MainViewModel(batch, Settings.Default));
|
||||
mainWindow.Show();
|
||||
|
||||
// Temporary workaround for issue #1273
|
||||
BecomeForegroundWindow(new System.Windows.Interop.WindowInteropHelper(mainWindow).Handle);
|
||||
}
|
||||
|
||||
private void BecomeForegroundWindow(IntPtr hWnd)
|
||||
{
|
||||
Win32Helpers.INPUT input = new Win32Helpers.INPUT { type = Win32Helpers.INPUTTYPE.INPUT_MOUSE, data = { } };
|
||||
Win32Helpers.INPUT[] inputs = new Win32Helpers.INPUT[] { input };
|
||||
Win32Helpers.SendInput(1, inputs, Win32Helpers.INPUT.Size);
|
||||
Win32Helpers.SetForegroundWindow(hWnd);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
namespace System.Windows.Media.Imaging
|
||||
{
|
||||
internal static class BitmapEncoderExtensions
|
||||
{
|
||||
public static bool CanEncode(this BitmapEncoder encoder)
|
||||
{
|
||||
try
|
||||
{
|
||||
var temp = encoder.CodecInfo;
|
||||
}
|
||||
catch (NotSupportedException)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
namespace System.Collections.Generic
|
||||
{
|
||||
internal static class ICollectionExtensions
|
||||
{
|
||||
public static void AddRange<T>(this ICollection<T> collection, IEnumerable<T> items)
|
||||
{
|
||||
foreach (var item in items)
|
||||
{
|
||||
collection.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
12
src/modules/imageresizer/ui/Extensions/TimeSpanExtensions.cs
Normal file
@ -0,0 +1,12 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
namespace System
|
||||
{
|
||||
internal static class TimeSpanExtensions
|
||||
{
|
||||
public static TimeSpan Multiply(this TimeSpan timeSpan, double scalar)
|
||||
=> new TimeSpan((long)(timeSpan.Ticks * scalar));
|
||||
}
|
||||
}
|
237
src/modules/imageresizer/ui/ImageResizerUI.csproj
Normal file
@ -0,0 +1,237 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<Import Project="..\..\..\..\installer\Version.props" />
|
||||
<!-- We don't have GenerateAssemblyInfo task until we use .net core, so we generate it with WriteLinesToFile -->
|
||||
<PropertyGroup>
|
||||
<AssemblyTitle>ImageResizer</AssemblyTitle>
|
||||
<AssemblyCompany>Microsoft Corp.</AssemblyCompany>
|
||||
<AssemblyCopyright>Copyright (C) 2019 Microsoft Corp.</AssemblyCopyright>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<AssemblyVersionFiles Include="Generated Files\AssemblyInfo.cs"/>
|
||||
</ItemGroup>
|
||||
<Target Name="GenerateAssemblyInfo" BeforeTargets="PrepareForBuild">
|
||||
<ItemGroup>
|
||||
<HeaderLines Include="// Copyright (c) Microsoft Corporation" />
|
||||
<HeaderLines Include="// The Microsoft Corporation licenses this file to you under the MIT license." />
|
||||
<HeaderLines Include="// See the LICENSE file in the project root for more information." />
|
||||
|
||||
<HeaderLines Include="#pragma warning disable SA1516" />
|
||||
<HeaderLines Include="using System.Reflection%3b" />
|
||||
<HeaderLines Include="using System.Resources%3b" />
|
||||
<HeaderLines Include="using System.Runtime.InteropServices%3b" />
|
||||
<HeaderLines Include="using System.Windows%3b" />
|
||||
<HeaderLines Include="[assembly: AssemblyTitle("$(AssemblyTitle)")]" />
|
||||
<HeaderLines Include="[assembly: AssemblyDescription("")]" />
|
||||
<HeaderLines Include="[assembly: AssemblyConfiguration("")]" />
|
||||
<HeaderLines Include="[assembly: AssemblyCompany("$(AssemblyCompany)")]" />
|
||||
<HeaderLines Include="[assembly: AssemblyCopyright("$(AssemblyCopyright)")]" />
|
||||
<HeaderLines Include="[assembly: AssemblyProduct("$(AssemblyTitle)")]" />
|
||||
<HeaderLines Include="[assembly: AssemblyTrademark("")]" />
|
||||
<HeaderLines Include="[assembly: AssemblyCulture("")]" />
|
||||
<HeaderLines Include="[assembly: ComVisible(false)]" />
|
||||
<HeaderLines Include="[assembly: NeutralResourcesLanguage("en-US")]" />
|
||||
<HeaderLines Include="[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]" />
|
||||
<HeaderLines Include="[assembly: AssemblyVersion("$(Version).0")]" />
|
||||
<HeaderLines Include="[assembly: AssemblyFileVersion("$(Version).0")]" />
|
||||
</ItemGroup>
|
||||
|
||||
<WriteLinesToFile
|
||||
File="Generated Files\AssemblyInfo.cs"
|
||||
Lines="@(HeaderLines)"
|
||||
Overwrite="true"
|
||||
Encoding="Unicode"
|
||||
WriteOnlyWhenDifferent="true" />
|
||||
</Target>
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x64</Platform>
|
||||
<ProjectGuid>{2BE46397-4DFA-414C-9BD4-41E4BBF8CB34}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<RootNamespace>ImageResizer</RootNamespace>
|
||||
<AssemblyName>ImageResizer</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<TargetFrameworkProfile>
|
||||
</TargetFrameworkProfile>
|
||||
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>$(SolutionDir)$(Platform)\$(Configuration)\modules\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<CodeAnalysisRuleSet>..\..\..\codeAnalysis\Rules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
|
||||
<PlatformTarget>x64</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>$(SolutionDir)$(Platform)\$(Configuration)\modules\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<Prefer32Bit>false</Prefer32Bit>
|
||||
<CodeAnalysisRuleSet>..\..\..\codeAnalysis\Rules.ruleset</CodeAnalysisRuleSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>Resources\ImageResizer.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.VisualBasic" />
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Xaml" />
|
||||
<Reference Include="WindowsBase" />
|
||||
<Reference Include="PresentationCore" />
|
||||
<Reference Include="PresentationFramework" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ApplicationDefinition Include="App.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</ApplicationDefinition>
|
||||
<Compile Include="..\codeAnalysis\GlobalSuppressions.cs">
|
||||
<Link>GlobalSuppressions.cs</Link>
|
||||
</Compile>
|
||||
<Compile Include="Extensions\BitmapEncoderExtensions.cs" />
|
||||
<Compile Include="Extensions\ICollectionExtensions.cs" />
|
||||
<Compile Include="Extensions\TimeSpanExtensions.cs" />
|
||||
<Compile Include="Models\ResizeError.cs" />
|
||||
<Compile Include="Properties\Settings.cs" />
|
||||
<Compile Include="Models\CustomSize.cs" />
|
||||
<Compile Include="Properties\InternalsVisibleTo.cs" />
|
||||
<Compile Include="Models\ResizeBatch.cs" />
|
||||
<Compile Include="Models\ResizeFit.cs" />
|
||||
<Compile Include="Models\ResizeOperation.cs" />
|
||||
<Compile Include="Models\ResizeSize.cs" />
|
||||
<Compile Include="Models\ResizeUnit.cs" />
|
||||
<Compile Include="Utilities\MathHelpers.cs" />
|
||||
<Compile Include="Utilities\Win32Helpers.cs" />
|
||||
<Compile Include="ViewModels\AdvancedViewModel.cs" />
|
||||
<Compile Include="ViewModels\InputViewModel.cs" />
|
||||
<Compile Include="ViewModels\ITabViewModel.cs" />
|
||||
<Compile Include="Views\AutoDoubleValidationRule.cs" />
|
||||
<Compile Include="Views\BoolValueConverter.cs" />
|
||||
<Compile Include="Views\ContainerFormatConverter.cs" />
|
||||
<Compile Include="Views\AutoDoubleConverter.cs" />
|
||||
<Compile Include="Views\IMainView.cs" />
|
||||
<Compile Include="ViewModels\MainViewModel.cs" />
|
||||
<Compile Include="ViewModels\ProgressViewModel.cs" />
|
||||
<Compile Include="ViewModels\ResultsViewModel.cs" />
|
||||
<Compile Include="Views\AdvancedWindow.xaml.cs">
|
||||
<DependentUpon>AdvancedWindow.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\TiffCompressOptionConverter.cs" />
|
||||
<Compile Include="Views\EnumValueConverter.cs" />
|
||||
<Compile Include="Views\ProgressPage.xaml.cs">
|
||||
<DependentUpon>ProgressPage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\ResizeUnitConverter.cs" />
|
||||
<Compile Include="Views\ResultsPage.xaml.cs">
|
||||
<DependentUpon>ResultsPage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\TimeRemainingConverter.cs" />
|
||||
<Page Include="Views\AdvancedWindow.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\InputPage.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\MainWindow.xaml">
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
<SubType>Designer</SubType>
|
||||
</Page>
|
||||
<Compile Include="App.xaml.cs">
|
||||
<DependentUpon>App.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Views\InputPage.xaml.cs">
|
||||
<DependentUpon>InputPage.xaml</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Views\MainWindow.xaml.cs">
|
||||
<DependentUpon>MainWindow.xaml</DependentUpon>
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Page Include="Views\ProgressPage.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
<Page Include="Views\ResultsPage.xaml">
|
||||
<SubType>Designer</SubType>
|
||||
<Generator>MSBuild:Compile</Generator>
|
||||
</Page>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Generated Files\AssemblyInfo.cs">
|
||||
<SubType>Code</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<EmbeddedResource Include="Properties\Resources.ar.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.bg.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.ca.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.cs.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.de.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.es.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.eu-ES.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.fr.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.he.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.hu.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.it.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.nb-NO.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.nl.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.pl.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.pt-BR.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>PublicResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.ru.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.sk.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.tr.resx" />
|
||||
<EmbeddedResource Include="Properties\Resources.zh-Hans.resx" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<AdditionalFiles Include="..\..\..\codeAnalysis\StyleCop.json" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="Resources\ImageResizer.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Resource Include="Resources\ImageResizer.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MvvmLightLibs">
|
||||
<Version>5.4.1.1</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Newtonsoft.Json">
|
||||
<Version>12.0.3</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="StyleCop.Analyzers">
|
||||
<Version>1.1.118</Version>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<TargetFrameworkSDKToolsDirectory Condition=" '$(Platform)' == 'x64'">$(TargetFrameworkSDKToolsDirectory)$(Platform)\</TargetFrameworkSDKToolsDirectory>
|
||||
</PropertyGroup>
|
||||
</Project>
|
31
src/modules/imageresizer/ui/Models/CustomSize.cs
Normal file
@ -0,0 +1,31 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using ImageResizer.Properties;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
public class CustomSize : ResizeSize
|
||||
{
|
||||
[JsonIgnore]
|
||||
public override string Name
|
||||
{
|
||||
get => Resources.Input_Custom;
|
||||
set { /* no-op */ }
|
||||
}
|
||||
|
||||
public CustomSize(ResizeFit fit, double width, double height, ResizeUnit unit)
|
||||
{
|
||||
Fit = fit;
|
||||
Width = width;
|
||||
Height = height;
|
||||
Unit = unit;
|
||||
}
|
||||
|
||||
public CustomSize()
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
85
src/modules/imageresizer/ui/Models/ResizeBatch.cs
Normal file
@ -0,0 +1,85 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using ImageResizer.Properties;
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
public class ResizeBatch
|
||||
{
|
||||
public string DestinationDirectory { get; set; }
|
||||
|
||||
public ICollection<string> Files { get; } = new List<string>();
|
||||
|
||||
public static ResizeBatch FromCommandLine(TextReader standardInput, string[] args)
|
||||
{
|
||||
var batch = new ResizeBatch();
|
||||
|
||||
// NB: We read these from stdin since there are limits on the number of args you can have
|
||||
string file;
|
||||
while ((file = standardInput.ReadLine()) != null)
|
||||
{
|
||||
batch.Files.Add(file);
|
||||
}
|
||||
|
||||
for (var i = 0; i < args.Length; i++)
|
||||
{
|
||||
if (args[i] == "/d")
|
||||
{
|
||||
batch.DestinationDirectory = args[++i];
|
||||
continue;
|
||||
}
|
||||
|
||||
batch.Files.Add(args[i]);
|
||||
}
|
||||
|
||||
return batch;
|
||||
}
|
||||
|
||||
public IEnumerable<ResizeError> Process(
|
||||
CancellationToken cancellationToken,
|
||||
Action<int, double> reportProgress)
|
||||
{
|
||||
double total = Files.Count;
|
||||
var completed = 0;
|
||||
var errors = new ConcurrentBag<ResizeError>();
|
||||
|
||||
// TODO: If we ever switch to Windows.Graphics.Imaging, we can get a lot more throughput by using the async
|
||||
// APIs and a custom SynchronizationContext
|
||||
Parallel.ForEach(
|
||||
Files,
|
||||
new ParallelOptions
|
||||
{
|
||||
CancellationToken = cancellationToken,
|
||||
MaxDegreeOfParallelism = Environment.ProcessorCount,
|
||||
},
|
||||
(file, state, i) =>
|
||||
{
|
||||
try
|
||||
{
|
||||
Execute(file);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
errors.Add(new ResizeError { File = Path.GetFileName(file), Error = ex.Message });
|
||||
}
|
||||
|
||||
Interlocked.Increment(ref completed);
|
||||
|
||||
reportProgress(completed, total);
|
||||
});
|
||||
|
||||
return errors;
|
||||
}
|
||||
|
||||
protected virtual void Execute(string file)
|
||||
=> new ResizeOperation(file, DestinationDirectory, Settings.Default).Execute();
|
||||
}
|
||||
}
|
13
src/modules/imageresizer/ui/Models/ResizeError.cs
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
public class ResizeError
|
||||
{
|
||||
public string File { get; set; }
|
||||
|
||||
public string Error { get; set; }
|
||||
}
|
||||
}
|
13
src/modules/imageresizer/ui/Models/ResizeFit.cs
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
public enum ResizeFit
|
||||
{
|
||||
Fill,
|
||||
Fit,
|
||||
Stretch,
|
||||
}
|
||||
}
|
211
src/modules/imageresizer/ui/Models/ResizeOperation.cs
Normal file
@ -0,0 +1,211 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
using System.Windows.Media;
|
||||
using System.Windows.Media.Imaging;
|
||||
using ImageResizer.Properties;
|
||||
using ImageResizer.Utilities;
|
||||
using Microsoft.VisualBasic.FileIO;
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
internal class ResizeOperation
|
||||
{
|
||||
private readonly string _file;
|
||||
private readonly string _destinationDirectory;
|
||||
private readonly Settings _settings;
|
||||
|
||||
public ResizeOperation(string file, string destinationDirectory, Settings settings)
|
||||
{
|
||||
_file = file;
|
||||
_destinationDirectory = destinationDirectory;
|
||||
_settings = settings;
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
string path;
|
||||
using (var inputStream = File.OpenRead(_file))
|
||||
{
|
||||
var decoder = BitmapDecoder.Create(
|
||||
inputStream,
|
||||
BitmapCreateOptions.PreservePixelFormat,
|
||||
BitmapCacheOption.None);
|
||||
|
||||
var encoder = BitmapEncoder.Create(decoder.CodecInfo.ContainerFormat);
|
||||
if (!encoder.CanEncode())
|
||||
{
|
||||
encoder = BitmapEncoder.Create(_settings.FallbackEncoder);
|
||||
}
|
||||
|
||||
ConfigureEncoder(encoder);
|
||||
|
||||
if (decoder.Metadata != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
encoder.Metadata = decoder.Metadata;
|
||||
}
|
||||
catch (InvalidOperationException)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
if (decoder.Palette != null)
|
||||
{
|
||||
encoder.Palette = decoder.Palette;
|
||||
}
|
||||
|
||||
foreach (var originalFrame in decoder.Frames)
|
||||
{
|
||||
encoder.Frames.Add(
|
||||
BitmapFrame.Create(
|
||||
Transform(originalFrame),
|
||||
thumbnail: null,
|
||||
(BitmapMetadata)originalFrame.Metadata, // TODO: Add an option to strip any metadata that doesn't affect rendering (issue #3)
|
||||
colorContexts: null));
|
||||
}
|
||||
|
||||
path = GetDestinationPath(encoder);
|
||||
Directory.CreateDirectory(Path.GetDirectoryName(path));
|
||||
using (var outputStream = File.Open(path, FileMode.CreateNew, FileAccess.Write))
|
||||
{
|
||||
encoder.Save(outputStream);
|
||||
}
|
||||
}
|
||||
|
||||
if (_settings.KeepDateModified)
|
||||
{
|
||||
File.SetLastWriteTimeUtc(path, File.GetLastWriteTimeUtc(_file));
|
||||
}
|
||||
|
||||
if (_settings.Replace)
|
||||
{
|
||||
var backup = GetBackupPath();
|
||||
File.Replace(path, _file, backup, ignoreMetadataErrors: true);
|
||||
FileSystem.DeleteFile(backup, UIOption.OnlyErrorDialogs, RecycleOption.SendToRecycleBin);
|
||||
}
|
||||
}
|
||||
|
||||
private void ConfigureEncoder(BitmapEncoder encoder)
|
||||
{
|
||||
switch (encoder)
|
||||
{
|
||||
case JpegBitmapEncoder jpegEncoder:
|
||||
jpegEncoder.QualityLevel = MathHelpers.Clamp(_settings.JpegQualityLevel, 1, 100);
|
||||
break;
|
||||
|
||||
case PngBitmapEncoder pngBitmapEncoder:
|
||||
pngBitmapEncoder.Interlace = _settings.PngInterlaceOption;
|
||||
break;
|
||||
|
||||
case TiffBitmapEncoder tiffEncoder:
|
||||
tiffEncoder.Compression = _settings.TiffCompressOption;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private BitmapSource Transform(BitmapSource source)
|
||||
{
|
||||
var originalWidth = source.PixelWidth;
|
||||
var originalHeight = source.PixelHeight;
|
||||
var width = _settings.SelectedSize.GetPixelWidth(originalWidth, source.DpiX);
|
||||
var height = _settings.SelectedSize.GetPixelHeight(originalHeight, source.DpiY);
|
||||
|
||||
if (_settings.IgnoreOrientation
|
||||
&& !_settings.SelectedSize.HasAuto
|
||||
&& _settings.SelectedSize.Unit != ResizeUnit.Percent
|
||||
&& originalWidth < originalHeight != (width < height))
|
||||
{
|
||||
var temp = width;
|
||||
width = height;
|
||||
height = temp;
|
||||
}
|
||||
|
||||
var scaleX = width / originalWidth;
|
||||
var scaleY = height / originalHeight;
|
||||
|
||||
if (_settings.SelectedSize.Fit == ResizeFit.Fit)
|
||||
{
|
||||
scaleX = Math.Min(scaleX, scaleY);
|
||||
scaleY = scaleX;
|
||||
}
|
||||
else if (_settings.SelectedSize.Fit == ResizeFit.Fill)
|
||||
{
|
||||
scaleX = Math.Max(scaleX, scaleY);
|
||||
scaleY = scaleX;
|
||||
}
|
||||
|
||||
if (_settings.ShrinkOnly
|
||||
&& _settings.SelectedSize.Unit != ResizeUnit.Percent
|
||||
&& (scaleX >= 1 || scaleY >= 1))
|
||||
{
|
||||
return source;
|
||||
}
|
||||
|
||||
var scaledBitmap = new TransformedBitmap(source, new ScaleTransform(scaleX, scaleY));
|
||||
if (_settings.SelectedSize.Fit == ResizeFit.Fill
|
||||
&& (scaledBitmap.PixelWidth > width
|
||||
|| scaledBitmap.PixelHeight > height))
|
||||
{
|
||||
var x = (int)(((originalWidth * scaleX) - width) / 2);
|
||||
var y = (int)(((originalHeight * scaleY) - height) / 2);
|
||||
|
||||
return new CroppedBitmap(scaledBitmap, new Int32Rect(x, y, (int)width, (int)height));
|
||||
}
|
||||
|
||||
return scaledBitmap;
|
||||
}
|
||||
|
||||
private string GetDestinationPath(BitmapEncoder encoder)
|
||||
{
|
||||
var directory = _destinationDirectory ?? Path.GetDirectoryName(_file);
|
||||
var originalFileName = Path.GetFileNameWithoutExtension(_file);
|
||||
|
||||
var supportedExtensions = encoder.CodecInfo.FileExtensions.Split(',');
|
||||
var extension = Path.GetExtension(_file);
|
||||
if (!supportedExtensions.Contains(extension, StringComparer.OrdinalIgnoreCase))
|
||||
{
|
||||
extension = supportedExtensions.FirstOrDefault();
|
||||
}
|
||||
|
||||
var fileName = string.Format(
|
||||
_settings.FileNameFormat,
|
||||
originalFileName,
|
||||
_settings.SelectedSize.Name,
|
||||
_settings.SelectedSize.Width,
|
||||
_settings.SelectedSize.Height,
|
||||
encoder.Frames[0].PixelWidth,
|
||||
encoder.Frames[0].PixelHeight);
|
||||
var path = Path.Combine(directory, fileName + extension);
|
||||
var uniquifier = 1;
|
||||
while (File.Exists(path))
|
||||
{
|
||||
path = Path.Combine(directory, fileName + " (" + uniquifier++ + ")" + extension);
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
|
||||
private string GetBackupPath()
|
||||
{
|
||||
var directory = Path.GetDirectoryName(_file);
|
||||
var fileName = Path.GetFileNameWithoutExtension(_file);
|
||||
var extension = Path.GetExtension(_file);
|
||||
|
||||
var path = Path.Combine(directory, fileName + ".bak" + extension);
|
||||
var uniquifier = 1;
|
||||
while (File.Exists(path))
|
||||
{
|
||||
path = Path.Combine(directory, fileName + " (" + uniquifier++ + ")" + ".bak" + extension);
|
||||
}
|
||||
|
||||
return path;
|
||||
}
|
||||
}
|
||||
}
|
154
src/modules/imageresizer/ui/Models/ResizeSize.cs
Normal file
@ -0,0 +1,154 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using GalaSoft.MvvmLight;
|
||||
using ImageResizer.Properties;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
[JsonObject(MemberSerialization.OptIn)]
|
||||
public class ResizeSize : ObservableObject
|
||||
{
|
||||
private static readonly IDictionary<string, string> _tokens;
|
||||
|
||||
private string _name;
|
||||
private ResizeFit _fit = ResizeFit.Fit;
|
||||
private double _width;
|
||||
private double _height;
|
||||
private bool _showHeight = true;
|
||||
private ResizeUnit _unit = ResizeUnit.Pixel;
|
||||
|
||||
static ResizeSize()
|
||||
=> _tokens = new Dictionary<string, string>
|
||||
{
|
||||
["$small$"] = Resources.Small,
|
||||
["$medium$"] = Resources.Medium,
|
||||
["$large$"] = Resources.Large,
|
||||
["$phone$"] = Resources.Phone,
|
||||
};
|
||||
|
||||
public ResizeSize(string name, ResizeFit fit, double width, double height, ResizeUnit unit)
|
||||
{
|
||||
Name = name;
|
||||
Fit = fit;
|
||||
Width = width;
|
||||
Height = height;
|
||||
Unit = unit;
|
||||
}
|
||||
|
||||
public ResizeSize()
|
||||
{
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "name")]
|
||||
public virtual string Name
|
||||
{
|
||||
get => _name;
|
||||
set => Set(nameof(Name), ref _name, ReplaceTokens(value));
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "fit")]
|
||||
public ResizeFit Fit
|
||||
{
|
||||
get => _fit;
|
||||
set
|
||||
{
|
||||
if (Set(nameof(Fit), ref _fit, value))
|
||||
{
|
||||
UpdateShowHeight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "width")]
|
||||
public double Width
|
||||
{
|
||||
get => _width;
|
||||
set => Set(nameof(Width), ref _width, value);
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "height")]
|
||||
public double Height
|
||||
{
|
||||
get => _height;
|
||||
set => Set(nameof(Height), ref _height, value);
|
||||
}
|
||||
|
||||
public bool ShowHeight
|
||||
=> _showHeight;
|
||||
|
||||
public bool HasAuto
|
||||
=> Width == 0 || Height == 0;
|
||||
|
||||
[JsonProperty(PropertyName = "unit")]
|
||||
public ResizeUnit Unit
|
||||
{
|
||||
get => _unit;
|
||||
set
|
||||
{
|
||||
if (Set(nameof(Unit), ref _unit, value))
|
||||
{
|
||||
UpdateShowHeight();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public double GetPixelWidth(int originalWidth, double dpi)
|
||||
=> ConvertToPixels(Width, Unit, originalWidth, dpi);
|
||||
|
||||
public double GetPixelHeight(int originalHeight, double dpi)
|
||||
=> ConvertToPixels(
|
||||
Fit != ResizeFit.Stretch && Unit == ResizeUnit.Percent
|
||||
? Width
|
||||
: Height,
|
||||
Unit,
|
||||
originalHeight,
|
||||
dpi);
|
||||
|
||||
private static string ReplaceTokens(string text)
|
||||
=> (text != null && _tokens.TryGetValue(text, out var result))
|
||||
? result
|
||||
: text;
|
||||
|
||||
private void UpdateShowHeight()
|
||||
=> Set(
|
||||
nameof(ShowHeight),
|
||||
ref _showHeight,
|
||||
Fit == ResizeFit.Stretch || Unit != ResizeUnit.Percent);
|
||||
|
||||
private double ConvertToPixels(double value, ResizeUnit unit, int originalValue, double dpi)
|
||||
{
|
||||
if (value == 0)
|
||||
{
|
||||
if (Fit == ResizeFit.Fit)
|
||||
{
|
||||
return double.PositiveInfinity;
|
||||
}
|
||||
|
||||
Debug.Assert(Fit == ResizeFit.Fill || Fit == ResizeFit.Stretch, "Unexpected ResizeFit value: " + Fit);
|
||||
|
||||
return originalValue;
|
||||
}
|
||||
|
||||
switch (unit)
|
||||
{
|
||||
case ResizeUnit.Inch:
|
||||
return value * dpi;
|
||||
|
||||
case ResizeUnit.Centimeter:
|
||||
return value * dpi / 2.54;
|
||||
|
||||
case ResizeUnit.Percent:
|
||||
return value / 100 * originalValue;
|
||||
|
||||
default:
|
||||
Debug.Assert(unit == ResizeUnit.Pixel, "Unexpected unit value: " + unit);
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
14
src/modules/imageresizer/ui/Models/ResizeUnit.cs
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
namespace ImageResizer.Models
|
||||
{
|
||||
public enum ResizeUnit
|
||||
{
|
||||
Centimeter,
|
||||
Inch,
|
||||
Percent,
|
||||
Pixel,
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Runtime.CompilerServices;
|
||||
|
||||
[assembly: InternalsVisibleTo("ImageResizer.Test")]
|
738
src/modules/imageresizer/ui/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,738 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace ImageResizer.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
public class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ImageResizer.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
public static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About.
|
||||
/// </summary>
|
||||
public static string Advanced_About {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_About", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Create a new size.
|
||||
/// </summary>
|
||||
public static string Advanced_CreateSize {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_CreateSize", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Delete.
|
||||
/// </summary>
|
||||
public static string Advanced_DeleteSize {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_DeleteSize", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Encoding.
|
||||
/// </summary>
|
||||
public static string Advanced_Encoding {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_Encoding", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _Fallback encoder:.
|
||||
/// </summary>
|
||||
public static string Advanced_FallbackEncoder {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FallbackEncoder", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to File.
|
||||
/// </summary>
|
||||
public static string Advanced_File {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_File", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _Filename:.
|
||||
/// </summary>
|
||||
public static string Advanced_FileName {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileName", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Original filename.
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken1 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken1", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Size name.
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken2 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken2", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Selected width.
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken3 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken3", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Selected height.
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken4 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken4", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Actual width (pixels).
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken5 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken5", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Actual height (pixels).
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameToken6 {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameToken6", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to The following parameters can be used..
|
||||
/// </summary>
|
||||
public static string Advanced_FileNameTokens {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_FileNameTokens", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _JPEG quality level:.
|
||||
/// </summary>
|
||||
public static string Advanced_JpegQualityLevel {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_JpegQualityLevel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _Use original date modified.
|
||||
/// </summary>
|
||||
public static string Advanced_KeepDateModified {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_KeepDateModified", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _PNG interlacing:.
|
||||
/// </summary>
|
||||
public static string Advanced_PngInterlaceOption {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_PngInterlaceOption", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Sizes.
|
||||
/// </summary>
|
||||
public static string Advanced_Sizes {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_Sizes", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _TIFF compression:.
|
||||
/// </summary>
|
||||
public static string Advanced_TiffCompressOption {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_TiffCompressOption", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Advanced Options.
|
||||
/// </summary>
|
||||
public static string Advanced_Title {
|
||||
get {
|
||||
return ResourceManager.GetString("Advanced_Title", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to All Files.
|
||||
/// </summary>
|
||||
public static string AllFilesFilter {
|
||||
get {
|
||||
return ResourceManager.GetString("AllFilesFilter", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Cancel.
|
||||
/// </summary>
|
||||
public static string Cancel {
|
||||
get {
|
||||
return ResourceManager.GetString("Cancel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to © 2019 Brice Lambson. All rights reserved..
|
||||
/// </summary>
|
||||
public static string Copyright {
|
||||
get {
|
||||
return ResourceManager.GetString("Copyright", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Image Resizer for Windows.
|
||||
/// </summary>
|
||||
public static string ImageResizer {
|
||||
get {
|
||||
return ResourceManager.GetString("ImageResizer", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to (auto).
|
||||
/// </summary>
|
||||
public static string Input_Auto {
|
||||
get {
|
||||
return ResourceManager.GetString("Input_Auto", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _Select a size..
|
||||
/// </summary>
|
||||
public static string Input_Content {
|
||||
get {
|
||||
return ResourceManager.GetString("Input_Content", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Custom.
|
||||
/// </summary>
|
||||
public static string Input_Custom {
|
||||
get {
|
||||
return ResourceManager.GetString("Input_Custom", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Ign_ore the orientation of pictures.
|
||||
/// </summary>
|
||||
public static string Input_IgnoreOrientation {
|
||||
get {
|
||||
return ResourceManager.GetString("Input_IgnoreOrientation", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Resize your pictures.
|
||||
/// </summary>
|
||||
public static string Input_MainInstruction {
|
||||
get {
|
||||
return ResourceManager.GetString("Input_MainInstruction", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to R_esize the original pictures (don't create copies).
|
||||
/// </summary>
|
||||
public static string Input_Replace {
|
||||
get {
|
||||
return ResourceManager.GetString("Input_Replace", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _Resize.
|
||||
/// </summary>
|
||||
public static string Input_Resize {
|
||||
get {
|
||||
return ResourceManager.GetString("Input_Resize", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Advanced options....
|
||||
/// </summary>
|
||||
public static string Input_ShowAdvanced {
|
||||
get {
|
||||
return ResourceManager.GetString("Input_ShowAdvanced", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _Make pictures smaller but not larger.
|
||||
/// </summary>
|
||||
public static string Input_ShrinkOnly {
|
||||
get {
|
||||
return ResourceManager.GetString("Input_ShrinkOnly", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Large.
|
||||
/// </summary>
|
||||
public static string Large {
|
||||
get {
|
||||
return ResourceManager.GetString("Large", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Medium.
|
||||
/// </summary>
|
||||
public static string Medium {
|
||||
get {
|
||||
return ResourceManager.GetString("Medium", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to OK.
|
||||
/// </summary>
|
||||
public static string OK {
|
||||
get {
|
||||
return ResourceManager.GetString("OK", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Phone.
|
||||
/// </summary>
|
||||
public static string Phone {
|
||||
get {
|
||||
return ResourceManager.GetString("Phone", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to All Picture Files.
|
||||
/// </summary>
|
||||
public static string PictureFilter {
|
||||
get {
|
||||
return ResourceManager.GetString("PictureFilter", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to (Default).
|
||||
/// </summary>
|
||||
public static string PngInterlaceOption_Default {
|
||||
get {
|
||||
return ResourceManager.GetString("PngInterlaceOption_Default", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Off.
|
||||
/// </summary>
|
||||
public static string PngInterlaceOption_Off {
|
||||
get {
|
||||
return ResourceManager.GetString("PngInterlaceOption_Off", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to On.
|
||||
/// </summary>
|
||||
public static string PngInterlaceOption_On {
|
||||
get {
|
||||
return ResourceManager.GetString("PngInterlaceOption_On", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Resizing your pictures....
|
||||
/// </summary>
|
||||
public static string Progress_MainInstruction {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_MainInstruction", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to _Stop.
|
||||
/// </summary>
|
||||
public static string Progress_Stop {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_Stop", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About {0} hour, {1} minute remaining..
|
||||
/// </summary>
|
||||
public static string Progress_TimeRemaining_HourMinute {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_TimeRemaining_HourMinute", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About {0} hour, {1} minutes remaining..
|
||||
/// </summary>
|
||||
public static string Progress_TimeRemaining_HourMinutes {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_TimeRemaining_HourMinutes", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About {0} hours, {1} minute remaining..
|
||||
/// </summary>
|
||||
public static string Progress_TimeRemaining_HoursMinute {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_TimeRemaining_HoursMinute", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About {0} hours, {1} minutes remaining..
|
||||
/// </summary>
|
||||
public static string Progress_TimeRemaining_HoursMinutes {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_TimeRemaining_HoursMinutes", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About {1} minute, {2} second remaining..
|
||||
/// </summary>
|
||||
public static string Progress_TimeRemaining_MinuteSecond {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_TimeRemaining_MinuteSecond", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About {1} minute, {2} seconds remaining..
|
||||
/// </summary>
|
||||
public static string Progress_TimeRemaining_MinuteSeconds {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_TimeRemaining_MinuteSeconds", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About {1} minutes, {2} second remaining..
|
||||
/// </summary>
|
||||
public static string Progress_TimeRemaining_MinutesSecond {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_TimeRemaining_MinutesSecond", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About {1} minutes, {2} seconds remaining..
|
||||
/// </summary>
|
||||
public static string Progress_TimeRemaining_MinutesSeconds {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_TimeRemaining_MinutesSeconds", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About {2} second remaining..
|
||||
/// </summary>
|
||||
public static string Progress_TimeRemaining_Second {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_TimeRemaining_Second", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to About {2} seconds remaining..
|
||||
/// </summary>
|
||||
public static string Progress_TimeRemaining_Seconds {
|
||||
get {
|
||||
return ResourceManager.GetString("Progress_TimeRemaining_Seconds", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Fill.
|
||||
/// </summary>
|
||||
public static string ResizeFit_Fill {
|
||||
get {
|
||||
return ResourceManager.GetString("ResizeFit_Fill", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to fills.
|
||||
/// </summary>
|
||||
public static string ResizeFit_Fill_ThirdPersonSingular {
|
||||
get {
|
||||
return ResourceManager.GetString("ResizeFit_Fill_ThirdPersonSingular", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Fit.
|
||||
/// </summary>
|
||||
public static string ResizeFit_Fit {
|
||||
get {
|
||||
return ResourceManager.GetString("ResizeFit_Fit", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to fits within.
|
||||
/// </summary>
|
||||
public static string ResizeFit_Fit_ThirdPersonSingular {
|
||||
get {
|
||||
return ResourceManager.GetString("ResizeFit_Fit_ThirdPersonSingular", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Stretch.
|
||||
/// </summary>
|
||||
public static string ResizeFit_Stretch {
|
||||
get {
|
||||
return ResourceManager.GetString("ResizeFit_Stretch", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to stretches to.
|
||||
/// </summary>
|
||||
public static string ResizeFit_Stretch_ThirdPersonSingular {
|
||||
get {
|
||||
return ResourceManager.GetString("ResizeFit_Stretch_ThirdPersonSingular", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Centimeters.
|
||||
/// </summary>
|
||||
public static string ResizeUnit_Centimeter {
|
||||
get {
|
||||
return ResourceManager.GetString("ResizeUnit_Centimeter", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Inches.
|
||||
/// </summary>
|
||||
public static string ResizeUnit_Inch {
|
||||
get {
|
||||
return ResourceManager.GetString("ResizeUnit_Inch", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Percent.
|
||||
/// </summary>
|
||||
public static string ResizeUnit_Percent {
|
||||
get {
|
||||
return ResourceManager.GetString("ResizeUnit_Percent", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Pixels.
|
||||
/// </summary>
|
||||
public static string ResizeUnit_Pixel {
|
||||
get {
|
||||
return ResourceManager.GetString("ResizeUnit_Pixel", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Close.
|
||||
/// </summary>
|
||||
public static string Results_Close {
|
||||
get {
|
||||
return ResourceManager.GetString("Results_Close", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Can't resize the following pictures.
|
||||
/// </summary>
|
||||
public static string Results_MainInstruction {
|
||||
get {
|
||||
return ResourceManager.GetString("Results_MainInstruction", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Small.
|
||||
/// </summary>
|
||||
public static string Small {
|
||||
get {
|
||||
return ResourceManager.GetString("Small", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to CCITT3.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Ccitt3 {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Ccitt3", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to CCITT4.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Ccitt4 {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Ccitt4", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to (Default).
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Default {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Default", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to LZW.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Lzw {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Lzw", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to None.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_None {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_None", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to RLE.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Rle {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Rle", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Zip.
|
||||
/// </summary>
|
||||
public static string TiffCompressOption_Zip {
|
||||
get {
|
||||
return ResourceManager.GetString("TiffCompressOption_Zip", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Value must be between '{0}' and '{1}'..
|
||||
/// </summary>
|
||||
public static string ValueMustBeBetween {
|
||||
get {
|
||||
return ResourceManager.GetString("ValueMustBeBetween", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized string similar to Version.
|
||||
/// </summary>
|
||||
public static string Version {
|
||||
get {
|
||||
return ResourceManager.GetString("Version", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
345
src/modules/imageresizer/ui/Properties/Resources.ar.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>حول</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>إنشاء حجم جديد</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>حذف</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>الترميز</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>_Fallback encoder:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>ملف</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>الإسم</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>اسم الملف الأصلي</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>اسم هذا الحجم</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>العرض المحدد</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>الارتفاع المحدد</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>العرض الأصلي (بكسل)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>الارتفاع الأصلي (بكسل)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>البارمترات التالية يمكن استخدامها.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>مدى جودة صورة JPEG:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>استخدام تاريخ التعديل الأصلي</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>تداخل PNG:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>الأحجام</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>مستوى ضغط TIFF</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>إعدادات متقدمة</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>كل الملفات</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>إلغاء</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© كل الحقوق محفوظة ل Brice Lambson 2019</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>المقياس - ويندوز</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(تلقائي)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>حدد المقاس</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>تخصيص</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>تجاهل اتجاه الصور</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>تغيير مقاس صورك</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>تغيير الصورة الأصلية (لا تنشئ نسخاً)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>إعادة تحجيم</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>خيارات متقدمة</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>غير مقاس الصورة بحيث يتم تصغيرها لا تكبيرها</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>كبير</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>متوسط</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>موافق</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>الجوال</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>كل ملفات الصور</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(افتراضي)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Off</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>On</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>جاري إعادة تحجيم صورك</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>أيقاف</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>باقي حوالي {0} ساعة و {1} دقيقة.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>باقي حوالي {0} ساعة و {1} دقائق.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>باقي حوالي {0} ساعات و {1} دقيقة.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>باقي حوالي {0} ساعات و {1} دقائق.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>باقي حوالي {1} دقيقة و {2} ثانية.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>باقي حوالي {1} دقيقة و {2} ثواني.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>باقي حوالي {1} دقائق و {2} ثواني.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>باقي حوالي {1} دقائق و {2} ثواني.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>باقي حوالي {2} ثانية.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>باقي حوالي {2} ثواني.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>تعبئة</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>تعبئة</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>ملائمة</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>ملائمة داخل</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>تمديد</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>تمديد إلى</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>سم</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>إنش</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>بالمئة</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>بكسل</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>إغلاق</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>لا يمكن إعادة تحجيم كل من الصور التالية</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>صغير</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(إفتراضي)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>لا شيئ</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>ZIP</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>يجب أن تكون القيمة بين "{0}" و "{1}".</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>الإصدار</value>
|
||||
</data>
|
||||
</root>
|
348
src/modules/imageresizer/ui/Properties/Resources.bg.resx
Normal file
@ -0,0 +1,348 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>Относно</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Създай нов размер</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Изтрий</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Енкодинг</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>_Fallback encoder:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Фаил</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>_Име на файл:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Оригинлно име на файл</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Размер</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Избрана ширина</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Избрана височина</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Реална ширина (пиксели)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Реална височина (пиксели)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Следните параметри могат да бъдат избрани.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>_Ниво на качество JPEG:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>
|
||||
_Използвай оригиналната дата на промяна</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>_PNG interlacing:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Размери</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>
|
||||
_TIFF компресиране:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Допълнителни настройки</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Всички файлове</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Отказ</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. All rights reserved.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Преоразмерител на картини за Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(авто)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>Избери размер</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>По избор</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Пренебрегване на ориентацията</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Преоразмери картините</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Преоразмери оригиналните картини (не създава копия)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>Преоразмеряване</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Допълнителни настройки</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Направи картините малки но не по-големи</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Голям</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Среден</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Телефон</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Всички картинни файлове</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(По подразбиране)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Изкл.</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Вкл.</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Преоразмеряване на Вашите картини...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>_Стоп</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>
|
||||
Остават около {0} час, {1} минута.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Остават около {0} час, {1} минути.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Остават около {0} часа, {1} минута.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Остават около {0} часа, {1} минути.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Остават около {1} минута, {2} секунда.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Остават около {1} минута, {2} секунди.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Остават около {1} минути, {2} секунда.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Остават около {1} минути, {2} секунди.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Остават около {2} секунда.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Остават около {2} секунди.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Запълни</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>Запълване</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Побиране</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>Побиране в</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Разпъване</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>разпъване до</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Сантиметри</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Инчове</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Проценти</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Пиксели</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Затваряне</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Следните картини не могат да се преоразмерят</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Малък</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(По подразбиране)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>нищо</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Стойността трябва да бъде между '{0}' и '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Версия</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.ca.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>Quant a</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Crea una mida nova</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Esborra</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Codificació</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>_Codificador de fons:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Fitxer</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>_Nom del fitxer:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Nom de fitxer original</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Nom de la mida</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Amplada seleccionada</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Alçada seleccionada</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Amplada actual (píxels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Alçada actual (píxels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Podeu utilitzar els paràmetres següents.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>Nivell de qualitat _JPEG:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>_Utilitza la data original modificada</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>_PNG: entrellaçat:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Mides</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>Compressió _TIFF:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Opcions avançades</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Tots els fitxers</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Cancel·la</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Tots els drets reservats.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer per a Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(Auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>_Seleccioneu una mida.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Personalitzat</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Ign_oreu l'orientació de les imatges</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Canvia la mida de les imatges</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Canvia la _mida dels originals (sense copiar-los)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>_Canvia la mida</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Opcions avançades ...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>_Imatges més petites però no més grans</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Gran</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Mitjà</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>D'acord</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Telèfon</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Tots els fitxers d'imatges</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Per defecte)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Apaga</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Engega</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Canviant la mida de les imatges ...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>_Atura</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Manca al voltant de {0} hora, {1} minuts.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Manca al voltant de {0} hora, {1} minuts.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Manca al voltant de {0} hora, {1} minuts.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Manca al voltant de {0} hora, {1} minuts.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Manca al voltant de {1} minuts, {2} segons.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Manca al voltant de {1} minuts, {2} segons.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Manca al voltant de {1} minuts, {2} segons.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Manca al voltant de {1} minuts, {2} segons.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Manca al voltant de {2} segons.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Manca al voltant de {2} segons.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Omple</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>farcits</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Encaixa</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>encaixa dins</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Ajusta</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>ajusta a</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Centímetres</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Polzades</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Per cent</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Píxels</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Tanca</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>No es pot canviar la mida de les imatges següents</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Petit</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Per defecte)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Cap</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>El valor ha de ser entre '{0}' i '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Versió</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.cs.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>O programu</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Vytvořit novou velikost</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Smazat</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Kódování</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>Záložní encoder:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Soubor</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>Název souboru:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Původní název souboru</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Název velikosti</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Vyberte šířku</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Vyberte výšku</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Aktuální šířka (v pixelech)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Aktuální výška (v pixelech)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Použity mohou být následující parametry.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>Kvalita JPEG:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>Použít původní datum změny</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>Prokládání PNG:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Velikosti</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>TIFF komprese:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Rozšířená nastavení</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Všechny soubory</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Zrušit</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Všechna práva vyhrazena</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer pro Windows </value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(automaticky)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>Vyberte soubor</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Vlastní</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Ignorovat _orientaci obrázků</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Změnit velikost obrázků</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Změnit velikost původních obrázků (nevytvářet kopie)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>Změnit velikost</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Rozšířená nastavení...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Obráz_ky pouze zmenšovat</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Velké</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Střední</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Mobilní</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Všechny soubory obrázků</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Výchozí)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Vyp.</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Zap.</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Probíhá změna velikosti obrázků...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>Zastavit</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Zbývá přibližně {0} hodin, {1} minut.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Zbývá přibližně {0} hodin, {1} minut.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Zbývá přibližně {0} hodin, {1} minut.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Zbývá přibližně {0} hodin, {1} minut.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Zbývá přibližně {1} minut, {2} vteřin.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Zbývá přibližně {1} minut, {2} vteřin.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Zbývá přibližně {1} minut, {2} vteřin.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Zbývá přibližně {1} minut, {2} vteřin.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Zbývá přibližně {2} vteřin.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Zbývá přibližně {2} vteřin.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Vyplnit</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>vyplňuje</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Napasovat</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>pasuje do</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Roztažení</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>roztáhnout na</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>centimetrů</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>palců</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>procent</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>pixelů</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Zavřít</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Velikost následujících obrázků nelze změnit</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Malé</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Výchozí)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Nic</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Hodnota musí být mezi {0} a {1}.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Verze</value>
|
||||
</data>
|
||||
</root>
|
346
src/modules/imageresizer/ui/Properties/Resources.de.resx
Normal file
@ -0,0 +1,346 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>Über</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Neue Größe erstellen</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Entfernen</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Komprimierung</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>Ausweich-Komprimierung:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Datei</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>Dateiname:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Ursprungsdateiname</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Größen-Name</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Ausgewählte Breite</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Ausgewählte Höhe</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Ursprüngliche Breite (Pixel)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Ursprüngliche Höhe (Pixel)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Die folgenden Parameter können verwendet werden.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>JPEG-Qualitätsstufe:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>Ursprüngliches Änderungsdatum verwenden</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>PNG Interlacing</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Größen</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>TIFF Komprimierung:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Erweiterte Optionen</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Alle Dateien</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Abbrechen</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Alle Rechte vorbehalten.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer für Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>Wähle eine Größe</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Benutzerdefiniert</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Ignoriere die _Ausrichtung von Bildern</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Skaliere deine Bilder</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Skaliere die Originalbilder (erstellt keine Kopien)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>Größe ände_rn</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Erweiterte Optionen...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Mache Bilder kleiner aber nicht größer</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Groß</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Mittel</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Handy</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Alle Bilddateien</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Standard)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Aus</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>An</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Bilder werden skaliert...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>Stop</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Etwa {0} Stunde, {1} Minute verbleibend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Etwa {0} Stunde, {1} Minuten verbleibend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Etwa {0} Stunden, {1} Minute verbleibend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Etwa {0} Stunden, {1} Minuten verbleibend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Etwa {1} Minute, {2} Sekunde verbleibend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Etwa {1} Minute, {2} Sekunden verbleibend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Etwa {1} Minuten, {2} Sekunde verbleibend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Etwa {1} Minuten, {2} Sekunden verbleibend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Etwa {2} Sekunde verbleibend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Etwa {2} Sekunden verbleibend.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Füllen</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>füllt</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>passend</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>passt in</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>strecken</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>strecken bis</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Zentimeter</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Inch</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Prozent</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Pixel</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Schließen</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Kann die Größe des folgenden Bildes nicht ändern</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Klein</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Standard)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Keiner</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Wert muss zwischen '{0}' und '{1}' liegen.
|
||||
</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Version</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.es.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>Acerca de...</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Crear nuevo tamaño</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Eliminar</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Codificación</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>Codificador de _respaldo</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Fichero</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>_Nombre de fichero</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Nombre de fichero original</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Nombre de tamaño</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Ancho seleccionado</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Altura deseada</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Anchura real (pixeles)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Altura actual (píxeles)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Los siguientes parámetros están disponibles.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>Calidad _JPEG:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>_Usar fecha original modificada</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>Entrelazado _PNG:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Tamaños</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>Compresión _TIFF:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Opciones avanzadas</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Todos los ficheros</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Cancelar</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Todos los derechos reservados.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer para Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>_Escoge un tamaño.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Personalizado</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Ign_orar la orientación</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Redimensionar las imagenes</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>R_edimensionar las imágenes originales (sin copia)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>_Redimensionar</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Opciones avanzadas...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Solo _encoger, no agrandar</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Grande</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Mediano</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>Aceptar</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Teléfono</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Todas las imágenes</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Por defecto)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Desactivado</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Activado</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Redimensionando imágenes...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>_Parar</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Falta {0} hora, {1} minuto</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Falta {0} hora, {1} minutos</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Faltan {0} horas, {1} minuto</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Faltan {0} horas, {1} minutos</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Falta {1} minuto, {2} segundo</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Falta {1} minuto, {2} segundos</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Faltan {1} minutos, {2} segundo</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Faltan {1} minutos, {2} segundos</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Falta {2} segundo</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Faltan {2} segundos</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Llenar</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>llena</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Ajustar</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>se ajusta</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Estirar</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>Estira a</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Centímetros</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Pulgadas</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Porcentaje</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Píxeles</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Cerrar</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>No se pueden redimensionar las imágenes</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Pequeño</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Por defecto)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Ninguno</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>El valor debe estar entre '{0}' y '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Versión</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.eu-ES.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>Honi buruz</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Tamaina berria sortu</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Ezabatu</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Kodifikazioa</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>_Badaezpadako kodifikazioa</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Fitxategia</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>_Fitxategi izena</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Jatorrizko fitxategi izena</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Tamaina izena</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Aukeratutako zabalera</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Hautatutako altuera</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Benetako zabalera (pixelak)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Benetako altuera (pixelak)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Parametro hauek erabilgarri.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>_JPEG kalitate maila:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>Erabili jatorrizko data _aldatuta</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>_PNG interlacing:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Taminak</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>_TIFF konpresioa:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Aukera Aurreratuak</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Fitxategi Guztiak</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Ezeztatu</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Eskubide guztiak babestuak.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer Windowserako</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>_Aukeratu tamaina.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Neurrirakoa</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Orientazioari ez-ikusi egin</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Tamainaz aldatu</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Jatorrizko irudiei tamaina aldatu (kopiarik gabe)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>_Tamaina aldatu</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Aukera aurreratuak...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>_Txikitu irudiak, inoiz ez handitu</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Handia</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Ertaina</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>Ados</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Telefonoa</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Irudi guztiak</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Lehenetsia)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Ezgaituta</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Gaituta</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Tamainaz aldatzen...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>_Gelditu</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Ordu {0}, minutu {1} faltan</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Ordu {0}, {1} minutu faltan</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>{0} ordu, minutu {1} faltan</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>{0} ordu, {1} minutu faltan.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Minutu {1}, segundu {2} faltan.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Minutu {1}, {2} segundu faltan.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>{1} minutu, segundu {2} faltan.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>{1} minutu, {2} segundu faltan.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Segundu {2} faltan.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>{2} segundu faltan.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Bete</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>betetzen du</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Egokitu</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>egokitzen da</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Luzatu</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>luzatzen da</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Zentimetroak</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Hazbete</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Ehunekoa</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Pixelak</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Itxi</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Irudiak ezin dira tamainaz aldatu</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Txikia</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Lehenetsia)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Bat erez</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Balioa '{0}' eta '{1}' artean behar du</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Bertsioa</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.fr.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>À propos</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Créer une nouvelle taille</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Effacer</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Encodage</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>Encodeur</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Fichier</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>Nom de fichier</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Nom de fichier d'origine</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Nom de la taille</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Largeur sélectionnée</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Hauteur sélectionnée</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Largeur réelle (pixels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Hauteur réelle (pixels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Les paramètres suivants peuvent être utilisés.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>JPEG : Qualité</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>Conserver la date de dernière modification d'origine.</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>PNG : Entrelacement</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Tailles</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>TIFF : Compression</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Paramètres avancés</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Tous les Fichiers</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Annuler</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Tous droits réservés.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer pour Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>Sélectionner une taille</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Personnalisé</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Ignorer l'orientation de l'image</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Redimensionnez vos images</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Redimensionner les originaux (ne crée pas de copies)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>Redimensionner</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Paramètres avancés</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Le cas échéant, ne pas agrandir les images.</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Grand</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Moyen</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Téléphone</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Toutes les images</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Par défaut)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Off</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>On</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Redimensionnement en cours...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>Stop</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Il reste environ {0} heure, {1} minute.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Il reste environ {0} heure, {1} minutes.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Il reste environ {0} heures, {1} minute.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Il reste environ {0} heures, {1} minutes.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Il reste environ {1} minute, {2} seconde.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Il reste environ {1} minute, {2} secondes.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Il reste environ {1} minutes, {2} seconde.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Il reste environ {1} minutes, {2} secondes.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Il reste environ {2} seconde.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Il reste environ {2} secondes.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Imposer</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>impose</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Adapter</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>ratio respecté dans</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Etirer</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>étirer jusqu'à</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Centimètres</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Pouces</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Pourcent</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Pixels</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Fermer</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Redimensionnement des images impossible</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Petit</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Par défaut)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Aucun</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>La valeur doit être entre '{0}' et '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Version</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.he.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>אודות</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>צור גודל חדש</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>מחק</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>קידוד</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>מקודד נסיגה:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>קובץ</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>שם קובץ:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>שם קובץ מקורי:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>שם גודל</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>רוחב נבחר</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>גובה נבחר</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>רוחב אפקטיבי (פיקסלים)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>גובה אפקטיבי (פיקסלים)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>הפרמטרים הבאים יכולים להיות בשימוש.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>רמת איכות JPEG</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>השתמש בתאריך השינוי המקורי</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>תשזורת PNG:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>גדלים</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>דחיסת TIFF:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>מתקדם</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>כל הקבצים</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>בטל</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 ברייס למבסון. כל הזכויות שמורות.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>משנה גודל תמונות לווינדוס</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(אוטומטי)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>בחר גודל.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>מותאם אישית</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>התעלם מהאוריאנטציה של התמונות</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>שנה את גודל התמונות שלך</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>שנה את גודל התמונות המקוריות (אל תיצור העתקים)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>שנה גודל</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>מתקדם</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>הקטן את התמונות, אך אל תגדיל אותן</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>גדול</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>בינוני</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>אישור</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>טלפון</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>כל קבצי התמונות</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(ברירת מחדל)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>כבוי</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>מופעל</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>שנה את גודל התמונות...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>עצור</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>נותרה עוד כ{0} שעה ו{1} דקה.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>נותרה עוד כ{0} שעה ו{1} דקות.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>נותרה עוד כ{0} שעות ו{1} דקה.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>נותרה עוד כ{0} שעות ו{1} דקות.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>נותרה עוד כ{1} דקה ו{2} שניה.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>נותרה עוד כ{1} דקה ו{2} שניות.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>נותרה עוד כ{1} דקות ו{2} שניה.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>נותרה עוד כ{1} דקות ו{2} שניות.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>נותרה עוד כ{2} שניה.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>נותרה עוד כ{2} שניות.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>התאם</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>מתאים</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>התאם</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>מתאים בתוך</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>מתח</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>מתח ל</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>סנטימטרים</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>אינצ'ים</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>אחוז</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>פיקסלים</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>סגור</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>לא ניתן לשנות את גודל התמונות הבאות</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>קטן</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(ברירת מחדל)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>כלום</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>הערך חייב להיות בין '{0}' ו-'{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>גרסא</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.hu.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>Névjegy</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Új méret készítése</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Törlés</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Kódolás</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>Tartalék kódolás:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Fájl</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>Fájlnév:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Eredeti fájlnév</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Méret név</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Kiválasztott szélesség</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Kiválasztott magasság</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Jelenlegi szélesség (pixelben)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Jelenlegi magasság (pixelben)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>A következő paraméterek használhatók.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>JPEG minőség szint:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>Eredeti módosítási dátum megtartása.</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>PNG váltósorosság:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Méretek</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>TIFF tömörítés:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Haladó beállítások</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Minden fájl</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Mégse</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Minden jog fenntartva.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Képméretező Windowsra</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>Válassz méretet.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Egyedi</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Képek tájolásának figyelmen kívül hagyása</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Képek átméretezése</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Eredeti képek átméretezése (nem készül másolat)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>Átméretezés</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Haladó beállítások...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Képek kicsinyítése, de nem nagyítása</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Nagy</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Közepes</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>Rendben</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Telefon</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Minden kép fájl</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Alapértelmezett)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Ki</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Be</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Képek átméretezése...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>Állj</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Körülbelül {0} óra {1} perc van hátra.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Körülbelül {0} óra {1} perc van hátra.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Körülbelül {0} óra {1} perc van hátra.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Körülbelül {0} óra {1} perc van hátra.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Körülbelül {1} perc {2} másodperc van hátra.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Körülbelül {1} perc {2} másodperc van hátra.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Körülbelül {1} perc {2} másodperc van hátra.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Körülbelül {1} perc {2} másodperc van hátra.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Körülbelül {2} másodperc van hátra.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Körülbelül {2} másodperc van hátra.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Kitöltés</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>kitöltés</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Illesztés</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>illesztés</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Nyújtás</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>nyújtás</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Centiméterre</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Hüvelykre</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Százalékra</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Pixelre</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Bezár</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>A következő képeket nem sikerült átméretezni</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Kicsi</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Alapértelmezett)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Nincs</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Az értéknek '{0}' és '{1}' között kell lennie.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Verzió</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.it.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>Informazioni su...</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Crea una nuova dimensione</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Elimina</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Codifica</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>_Codificatore Fallback:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>File</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>_Nome file:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Nome file originale</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Nome dimensione</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Larghezza selezionata</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Altezza selezionata</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Larghezza attuale (pixel)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Altezza attuale (pixel)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Possono essere usati i seguenti parametri.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>_Qualità JPEG:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>_Usa la data originale modificata</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>_Interlacciamento PNG:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Dimensioni</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>_Compressione TIFF:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Opzioni avanzate</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Tutti i file</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Annulla</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Tutti i diritti riservati.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer per Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>_Scegli una dimensione.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>A scelta</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Ignora l'orientamento delle immagini</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Ridimensiona le tue immagini</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Ridimensiona le immagini originali (non creare copie)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>Ridimensiona</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Opzioni avanzate...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>_Crea immagini più piccole ma non più grandi</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Grande</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Media</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Telefono</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Tutti i file immagine</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Predefinito)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Off</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>On</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Sto ridimensionando le immagini...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>Stop</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Circa {0} ora, {1} minuto rimanenti.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Circa {0} ora, {1} minuti rimanenti.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Circa {0} ore, {1} minuto rimanenti.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Circa {0} ore, {1} minuti rimanenti.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Circa {1} minuto, {2} secondo rimanenti.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Circa {1} minuto, {2} secondi rimanenti.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Circa {1} minuti, {2} secondo rimanenti.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Circa {1} minuti, {2} secondi rimanenti.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Circa {2} secondo rimanente.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Circa {2} secondi rimanenti.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Riempi</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>riempie</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Adatta</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>entro</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Deforma</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>deforma</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Centimetri</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Pollici</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Percento</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Pixel</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Chiudi</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Impossibile ridimensionare le seguenti immagini</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Piccola</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Predefinito)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Nessuno</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Il valore deve essere compreso tra '{0}' e '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Versione</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.nb-NO.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>Om</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Lag ny størrelse</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Slett</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Koding</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>_Fallback encoder:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Fil</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>_Filnavn:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Originalt filnavn</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Navn på størrelse</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Valgte bredde</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Valgte høyde</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Faktisk bredde (piksler)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Faktisk høyde (piksler)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Følgende parametre kan brukes.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>_JPEG kvalitetsnivå</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>_Bruk original endringsdato</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>_PNG interlasering:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Størrelser</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>_TIFF komprimering</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Avanserte alternativer</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Alle filer</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Avbryt</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Alle rettigheter er reservert</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer for Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>_Velg en størrelse.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Tilpasset</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Ign_orer bildes retning</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Endre bildestørrelse</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Endr_e originalbildet (ikke lag kopi)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>_Endre størrelse</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Avanserte alternativer...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>_Lag bildene mindre, men ikke større</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Stor</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Medium</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Telefon</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Alle bildefiler</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Standard)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Av</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>På</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Endrer størrelse på bildene...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>_Stopp</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Omtrent {0} time, {1} minutt gjenstår.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Omtrent {0} time, {1} minutter gjenstår.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Omtrent {0} timer, {1} minutt gjenstår.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Omtrent {0} timer, {1} minutter gjenstår.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Omtrent {0} minutt, {1} sekund gjenstår.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Omtrent {0} minutt, {1} sekunder gjenstår.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Omtrent {0} minutter, {1} sekund gjenstår.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Omtrent {0} minutter, {1} sekunder gjenstår.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Omtrent {2} sekund gjenstår.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Omtrent {2} sekunder gjenstår.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Fyll</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>fyller</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Passer</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>passer innenfor</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Stekk</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>strekkes til</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Centimeter</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Tommer</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Prosent</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Piksler</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Lukk</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Kan ikke endre størrelse på følgende bilder</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Liten</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCIT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCIT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Standard)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Ingen</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Verdi må være mellom '{0}' og '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Versjon</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.nl.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>Over</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Nieuw afbeeldingsformaat invoeren</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Wissen</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Compressie</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>_Dodge compressie:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Bestand</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>_Bestandsnaam:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Originele bestandsnaam</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Naam van het formaat</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Geselecteerde breedte</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Geselecteerde hoogte</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Werkelijke breedte (pixels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Werkelijke hoogte (pixels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>De volgende parameters kunnen worden gebruikt:</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>_JPEG kwaliteitsniveau:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>_Gebruik de originele wijzigingsdatum</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>_PNG interliniëring:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Formaten</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>_TIFF compressie:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Geavanceerde instellingen</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Alle bestanden</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Annuleren</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Alle rechten voorbehouden.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Fotovergroter/verkleiner voor Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>_Selecteer een afmeting.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Aangepast</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Negeer de _oriëntering van de afbeelding</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Afbeeldingsformaat wijzigen</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Wijzig de originele _afbeeldingen (maak geen kopieën)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>_Verkleinen/vergroten</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Geavanceerde instellingen</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Verklein afbeeldingen, vergroot niet</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Groot</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Middel</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Miniatuur</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Alle afbeeldingsbestanden</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Standaard)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Uit</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Aan</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Verklein/vergroot foto's...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>_Stop</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Ongeveer {0} uur en {1} minuut resterend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Ongeveer {0} uur en {1} minuten resterend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Ongeveer {0} uren en {1} minuut resterend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Ongeveer {0} uren en {1} minuten resterend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Ongeveer {1} minuut en {2} seconde resterend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Ongeveer {1} minuut en {2} seconden resterend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Ongeveer {1} minuten en {2} seconde resterend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Ongeveer {1} minuten en {2} seconden resterend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Ongeveer {2} seconde resterend.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Ongeveer {2} seconden resterend.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Uitvullen</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>vult uit</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Passend</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>past binnen</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Uitrekken</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>rekt uit naar</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Centimeters</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Duimen</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Procent</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Pixels</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Sluiten</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>De volgende afbeeldingen kunnen niet worden gewijzigd</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Klein</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Standaard)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Geen</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Waarde moet liggen tussen '{0}' en '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Versie</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.pl.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>O programie</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Utwórz nowy rozmiar</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Usuń</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Kodowanie</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>Usterka kodera:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Plik</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>Nazwa pliku:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Oryginalna nazwa pliku</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Nazwa rozmiaru</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Wybierz szerokość</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Wybierz wysokość</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Obecna szerokość (w pikselach)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Obecna wysokość (w pikselach)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Następujące parametry mogą zostać użyte.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>Stopień jakości JPG</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>Użyj oryginalnej daty modyfikacji</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>Przeplot PNG:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Rozmiary</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>Kompresja TIFF:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Ustawienia zaawansowane</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Wszystkie pliki</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Anuluj</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Wszystkie prawa zastrzeżone.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer dla Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>Wybierz rozmiar</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Niestandardowy</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Ignoruj orientację</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Zmień rozmiar obrazów</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Zmień rozmiar obrazów (nie twórz kopii)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>Zmień rozmiar</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Ustawienia zaawansowane...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Tylko zmniejsz rozmiar, nie powiększaj</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Duży</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Średni</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Telefon</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Wszystkie obrazy</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Domyślne)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Wył.</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Wł.</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Zmieniam rozmiar zdjęć...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>Zatrzymaj</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Pozostało godzin {0}, minut {1}</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Pozostało godzin {0}, minut {1}</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Pozostało godzin {0}, minut {1}</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Pozostało godzin {0}, minut {1}</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Pozostało minut {1}, sekund {2}</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Pozostało minut {1}, sekund {2}</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Pozostało minut {1}, sekund {2}</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Pozostało minut {1}, sekund {2}</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Pozostało sekund {2}</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Pozostało sekund {2}</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Wypełnij</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>wypełnia</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Dopasuj</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>Dopasuj do</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Rozciągnij</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>Rozciągnij do</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Centymetrów</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Cali</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Procent</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Pikseli</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Zamknij</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Nie można zmienić rozmiaru zdjęć</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Mały</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Domyślna)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Brak</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Wartość musi być pomiędzy '{0}' i '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Wersja</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.pt-BR.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>Sobre</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Criar novo tamanho</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Apagar</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Codificação</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>_Fallback encoder:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Arquivo</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>Nome do arquivo:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Nome original</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Nome do tamanho</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Largura selecionada</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Altura selecionada</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Largura atual (pixels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Altura atual (pixels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>O seguintes parâmetros podem ser utilizados.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>_JPEG nível de qualidade:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>_Utilizar data de modificação original</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>Entrelaçamento _PNG:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Tamanhos</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>Compressão _TIFF:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Opções Avançadas</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Todos os arquivos</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Cancelar</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Todos os direitos reservados.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Redimensionar Imagens para Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>_Selecione um tamanho.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Personalizado</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Ign_orar a orientação das imagens</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Redimensione suas imagens</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>R_edimensionar imagens originais (não criar cópias)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>_Redimensionar</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Opções Avançadas...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Reduzir i_magens mas não aumentar</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Grande</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Médio</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Telefone</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Todos os arquivos de Imagens</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Padrão)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Desligado</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Ligado</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Redimensionar suas imagens...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>Parar</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Aproximadamente {0} hora, {1} minuto restante.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Aproximadamente {0} hora, {1} minutos restantes.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Aproximadamente {0} horas, {1} minuto restante.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Aproximadamente {0} horas, {1} minutos restantes.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Aproximadamente {1} minuto, {2} segundo restante.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Aproximadamente {1} minuto, {2} segundos restantes.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Aproximadamente {1} minutos, {2} segundo restante.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Aproximadamente {1} minutos, {2} segundos restantes.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Aproximadamente {2} segundo restante.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Aproximadamente {2} segundos restantes.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Preencher</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>preenche</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Encaixar</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>encaixar dentro</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Esticar</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>esticar para</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Centímetros</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Polegadas</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Percentual</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Pixels</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Fechar</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Não posso redimensionar as seguintes imagens</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Pequeno</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Padrão)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Nenhum</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Valor deve ser entre '{0}' e '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Versão</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>About</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Create a new size</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Delete</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Encoding</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>_Fallback encoder:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>File</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>_Filename:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Original filename</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Size name</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Selected width</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Selected height</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Actual width (pixels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Actual height (pixels)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>The following parameters can be used.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>_JPEG quality level:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>_Use original date modified</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>_PNG interlacing:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Sizes</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>_TIFF compression:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>All Files</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Cancel</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. All rights reserved.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer for Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>_Select a size.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Custom</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Ign_ore the orientation of pictures</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Resize your pictures</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>R_esize the original pictures (don't create copies)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>_Resize</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Settings</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>_Make pictures smaller but not larger</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Large</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Medium</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Phone</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>All Picture Files</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Default)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Off</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>On</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Resizing your pictures...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>_Stop</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>About {0} hour, {1} minute remaining.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>About {0} hour, {1} minutes remaining.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>About {0} hours, {1} minute remaining.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>About {0} hours, {1} minutes remaining.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>About {1} minute, {2} second remaining.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>About {1} minute, {2} seconds remaining.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>About {1} minutes, {2} second remaining.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>About {1} minutes, {2} seconds remaining.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>About {2} second remaining.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>About {2} seconds remaining.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Fill</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>fills</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Fit</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>fits within</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Stretch</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>stretches to</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Centimeters</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Inches</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Percent</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Pixels</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Close</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Can't resize the following pictures</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Small</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Default)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>None</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Value must be between '{0}' and '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Version</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.ru.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>О программе</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Создать новый размер</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Удалить</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Кодирование</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>Резервный кодировщик:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Файл</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>Имя файла:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Исходное имя файла:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Имя размера</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Выбранная ширина</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Выбранная высота</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Текущая ширина (пикселей)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Текущая высота (пикселей)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Могут использоваться следующие параметры.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>Качество JPEG:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>Использовать исходную дату изменения</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>Интерлейсинг PNG:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Размеры</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>Сжатие TIFF:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Расширенные настройки</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Все файлы</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>отменить</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Все права защищены.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer для Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(авто)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>_Выберите размер.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>изготовленный на заказ</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>игнорировать ориентацию фото</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Изменить размер ваших фотографий</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Изменять оригинальные фотографии (не создавать копии)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>Изменить</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Расширенные настройки...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Делайте картинки меньше, но не больше</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>большой</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Средняя</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>Хорошо</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Телефон</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Все файлы изображений</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>По умолчанию</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Отключено</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Включено</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Изменение размеров изображений...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>Остановить</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Осталось около {0} часов, {1} минут.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Осталось около {0} часов, {1} минут.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Осталось около {0} часов, {1} минут.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Осталось около {0} часов, {1} минут.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Осталось около {1} минут, {2} секунд.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Осталось около {1} минут, {2} секунд.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Осталось около {1} минут, {2} секунд.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Осталось около {1} минут, {2} секунд.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Осталось около {2} секунд.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Осталось около {2} секунд.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>заполнить</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>заливка</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Поместиться</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>вписывается в</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Растянуть</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>растянуто до</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>сантиметров</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>дюймов</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Процентов</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Пиксели</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Закрыть</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Не удается изменить размер следующих изображений</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Маленький</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>По умолчанию</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Нет</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Значение должно быть от '{0}' до '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Версия</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.sk.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>O programe</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Vytvor novú veľkosť</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Vymaž</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Enkódovanie</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>Záložný encoder</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Súbor</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>Meno súboru:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Pôvodné meno súboru</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Názov veľkosti </value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Vybraná šírka</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Vybraná výška</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Skutočná šírka (pixely)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Skutočná výška (pixely)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Nasledujúce parametre sa môžu použiť</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>JPEG úroveň kvality</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>Použi pôvodný dátum úpravy</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>PNG interlacing</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Veľkosti</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>TIFF kompresia:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Pokročilé Nastavenia</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Všetky súbory</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>Zrušiť</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Všetky práva vyhradené.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Image Resizer for Windows</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(auto)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>Vyber veľkosť</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Vlastné</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Ignoruj otočenie obrázkov</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Zmeň veľkosť obrázkov</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Zmeň veľkosť originálov (nevytvoria sa kópie)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>Zmeň Veľkosť</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Pokročílé nastavenia...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Zmenši obrázky, nikdy nezväčšuj</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Veľké</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Stredné</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>OK</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Telefón</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Všetky obrázky</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Štandardné)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Vypnuté</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Zapnuté</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Zmeň veľkosť obrázkov...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>_Stop</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Ostáva približne {0} hod, {1} min</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Ostáva približne {0} hod, {1} min</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Ostáva približne {0} hod, {1} min</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Ostáva približne {0} hod, {1} min</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Ostáva približne {1} min, {2} sec</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Ostáva približne {1} min, {2} sec</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Ostáva približne {1} min, {2} sec</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Ostáva približne {1} min, {2} sec</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Ostáva približne {2} sec</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Ostáva približne {2} sec</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Vyplň</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>Vyplňuje</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Prispôsob</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>Prispôsob do</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Roztiahnuť</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>Roztiahnuť na</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Centimetrov</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>Palcov</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Percent</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Pixely</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Zatvor</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Nemôžem spracovať nasledujúce obrázky</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Malé</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Štandardné)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Žiadne</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Hodnota musí byť medzi '{0}' a '{1}'.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Verzia</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.tr.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>Hakkında</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>Yeni bir boyut oluştur</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>Sil</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>Kodlama</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>Temel kodlayıcı:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>Dosya</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>Dosya adı:</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>Orijinal dosya adı</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>Boyut adı</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>Seçili genişlik</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>Seçili yükseklik</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>Gerçek genişlik (piksel)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>Gerçek yükseklik (piksel)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>Aşağıdaki parametreler kullanılabilir.</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>JPEG kalite düzeyi:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>Orijinal değiştirme tarihini kullan</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>PNG titreşimi:</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>Boyutlar</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>TIFF sıkıştırması:</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>Gelişmiş Seçenekler</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>Tüm Dosyalar</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>İptal</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. Tüm hakları saklıdır.</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>Windows için Image Resizer</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(otomatik)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>Bir boyut seçin.</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>Özel</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>Resimlerin yönünü dikkate alma</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>Resimlerinizi yeniden boyutlandırın</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>Orijinal resimleri yeniden boyutlandır (kopya oluşturmaz)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>Boyutlandır</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>Gelişmiş seçenekler...</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>Resimleri sadece küçültün, büyütmeyin</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>Büyük</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>Orta</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>Tamam</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>Telefon</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>Tüm Resim Dosyaları</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(Varsayılan)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>Kapalı</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>Açık</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>Resimleriniz yeniden boyutlandırılıyor...</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>Durdur</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>Yaklaşık {0} saat, {1} dakika kaldı.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>Yaklaşık {0} saat, {1} dakika kaldı.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>Yaklaşık {0} saat, {1} dakika kaldı.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>Yaklaşık {0} saat, {1} dakika kaldı.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>Yaklaşık {1} dakika, {2} saniye kaldı.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>Yaklaşık {1} dakika, {2} saniye kaldı.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>Yaklaşık {1} dakika, {2} saniye kaldı.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>Yaklaşık {1} dakika, {2} saniye kaldı.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>Yaklaşık {2} saniye kaldı.</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>Yaklaşık {2} saniye kaldı.</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>Doldur</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>doldurulacak değer</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>Sığdır</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>sığdırılacak değer</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>Uzat</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>uzatılacak değer</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>Santimetre</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>İnç</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>Yüzde</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>Piksel</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>Kapat</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>Aşağıdaki resimler yeniden boyutlandırılamıyor</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>Küçük</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(Varsayılan)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>Yok</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>Değer '{0}' ile '{1}' arasında olmalıdır.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>Sürüm</value>
|
||||
</data>
|
||||
</root>
|
345
src/modules/imageresizer/ui/Properties/Resources.zh-Hans.resx
Normal file
@ -0,0 +1,345 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<data name="Advanced_About" xml:space="preserve">
|
||||
<value>关于</value>
|
||||
</data>
|
||||
<data name="Advanced_CreateSize" xml:space="preserve">
|
||||
<value>新增尺寸</value>
|
||||
</data>
|
||||
<data name="Advanced_DeleteSize" xml:space="preserve">
|
||||
<value>删除</value>
|
||||
</data>
|
||||
<data name="Advanced_Encoding" xml:space="preserve">
|
||||
<value>编码中</value>
|
||||
</data>
|
||||
<data name="Advanced_FallbackEncoder" xml:space="preserve">
|
||||
<value>退回编码器:</value>
|
||||
</data>
|
||||
<data name="Advanced_File" xml:space="preserve">
|
||||
<value>文件</value>
|
||||
</data>
|
||||
<data name="Advanced_FileName" xml:space="preserve">
|
||||
<value>文件名</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken1" xml:space="preserve">
|
||||
<value>原文件名</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken2" xml:space="preserve">
|
||||
<value>尺寸名</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken3" xml:space="preserve">
|
||||
<value>选定的宽度</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken4" xml:space="preserve">
|
||||
<value>选定的高度</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken5" xml:space="preserve">
|
||||
<value>实际宽度(像素)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameToken6" xml:space="preserve">
|
||||
<value>实际高度(像素)</value>
|
||||
</data>
|
||||
<data name="Advanced_FileNameTokens" xml:space="preserve">
|
||||
<value>以下参数可供使用。</value>
|
||||
</data>
|
||||
<data name="Advanced_JpegQualityLevel" xml:space="preserve">
|
||||
<value>JPEG 图片质量等级:</value>
|
||||
</data>
|
||||
<data name="Advanced_KeepDateModified" xml:space="preserve">
|
||||
<value>使用原来的文件修改日期</value>
|
||||
</data>
|
||||
<data name="Advanced_PngInterlaceOption" xml:space="preserve">
|
||||
<value>PNG 格式隔行扫描</value>
|
||||
</data>
|
||||
<data name="Advanced_Sizes" xml:space="preserve">
|
||||
<value>尺寸</value>
|
||||
</data>
|
||||
<data name="Advanced_TiffCompressOption" xml:space="preserve">
|
||||
<value>TIFF 压缩</value>
|
||||
</data>
|
||||
<data name="Advanced_Title" xml:space="preserve">
|
||||
<value>高级选项</value>
|
||||
</data>
|
||||
<data name="AllFilesFilter" xml:space="preserve">
|
||||
<value>所有文件</value>
|
||||
</data>
|
||||
<data name="Cancel" xml:space="preserve">
|
||||
<value>取消</value>
|
||||
</data>
|
||||
<data name="Copyright" xml:space="preserve">
|
||||
<value>© 2019 Brice Lambson. 保留所有权利。</value>
|
||||
</data>
|
||||
<data name="ImageResizer" xml:space="preserve">
|
||||
<value>重设图片大小(Windows 系统)</value>
|
||||
</data>
|
||||
<data name="Input_Auto" xml:space="preserve">
|
||||
<value>(自动)</value>
|
||||
</data>
|
||||
<data name="Input_Content" xml:space="preserve">
|
||||
<value>选择尺寸</value>
|
||||
</data>
|
||||
<data name="Input_Custom" xml:space="preserve">
|
||||
<value>定制</value>
|
||||
</data>
|
||||
<data name="Input_IgnoreOrientation" xml:space="preserve">
|
||||
<value>忽略图片方向</value>
|
||||
</data>
|
||||
<data name="Input_MainInstruction" xml:space="preserve">
|
||||
<value>重设图片大小</value>
|
||||
</data>
|
||||
<data name="Input_Replace" xml:space="preserve">
|
||||
<value>缩放原图(不要创建备份)</value>
|
||||
</data>
|
||||
<data name="Input_Resize" xml:space="preserve">
|
||||
<value>重设大小</value>
|
||||
</data>
|
||||
<data name="Input_ShowAdvanced" xml:space="preserve">
|
||||
<value>高级选项</value>
|
||||
</data>
|
||||
<data name="Input_ShrinkOnly" xml:space="preserve">
|
||||
<value>把图片缩小而不是放大</value>
|
||||
</data>
|
||||
<data name="Large" xml:space="preserve">
|
||||
<value>大尺寸</value>
|
||||
</data>
|
||||
<data name="Medium" xml:space="preserve">
|
||||
<value>中尺寸</value>
|
||||
</data>
|
||||
<data name="OK" xml:space="preserve">
|
||||
<value>确定</value>
|
||||
</data>
|
||||
<data name="Phone" xml:space="preserve">
|
||||
<value>手机</value>
|
||||
</data>
|
||||
<data name="PictureFilter" xml:space="preserve">
|
||||
<value>所有图片文件</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Default" xml:space="preserve">
|
||||
<value>(默认)</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_Off" xml:space="preserve">
|
||||
<value>关闭</value>
|
||||
</data>
|
||||
<data name="PngInterlaceOption_On" xml:space="preserve">
|
||||
<value>打开</value>
|
||||
</data>
|
||||
<data name="Progress_MainInstruction" xml:space="preserve">
|
||||
<value>正在重设图片大小……</value>
|
||||
</data>
|
||||
<data name="Progress_Stop" xml:space="preserve">
|
||||
<value>停止</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinute" xml:space="preserve">
|
||||
<value>大约剩余 {0} 小时,{1} 分钟。</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HourMinutes" xml:space="preserve">
|
||||
<value>大约剩余 {0} 小时,{1} 分钟。</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinute" xml:space="preserve">
|
||||
<value>大约剩余 {0} 小时,{1} 分钟。</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_HoursMinutes" xml:space="preserve">
|
||||
<value>大约剩余 {0} 小时,{1} 分钟。</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSecond" xml:space="preserve">
|
||||
<value>大约剩余 {0} 分钟,{1} 秒。</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinuteSeconds" xml:space="preserve">
|
||||
<value>大约剩余 {0} 分钟,{1} 秒。</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSecond" xml:space="preserve">
|
||||
<value>大约剩余 {0} 分钟,{1} 秒。</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_MinutesSeconds" xml:space="preserve">
|
||||
<value>大约剩余 {0} 分钟,{1} 秒。</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Second" xml:space="preserve">
|
||||
<value>大约剩余 {0} 秒。</value>
|
||||
</data>
|
||||
<data name="Progress_TimeRemaining_Seconds" xml:space="preserve">
|
||||
<value>大约剩余 {0} 秒。</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill" xml:space="preserve">
|
||||
<value>填充到</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fill_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>填充</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit" xml:space="preserve">
|
||||
<value>适配到</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Fit_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>适配于</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch" xml:space="preserve">
|
||||
<value>拉伸</value>
|
||||
</data>
|
||||
<data name="ResizeFit_Stretch_ThirdPersonSingular" xml:space="preserve">
|
||||
<value>拉伸到</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Centimeter" xml:space="preserve">
|
||||
<value>厘米</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Inch" xml:space="preserve">
|
||||
<value>英尺</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Percent" xml:space="preserve">
|
||||
<value>百分比</value>
|
||||
</data>
|
||||
<data name="ResizeUnit_Pixel" xml:space="preserve">
|
||||
<value>像素</value>
|
||||
</data>
|
||||
<data name="Results_Close" xml:space="preserve">
|
||||
<value>关闭</value>
|
||||
</data>
|
||||
<data name="Results_MainInstruction" xml:space="preserve">
|
||||
<value>无法重设以下图片大小:</value>
|
||||
</data>
|
||||
<data name="Small" xml:space="preserve">
|
||||
<value>小尺寸</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt3" xml:space="preserve">
|
||||
<value>CCITT3</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Ccitt4" xml:space="preserve">
|
||||
<value>CCITT4</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Default" xml:space="preserve">
|
||||
<value>(默认)</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Lzw" xml:space="preserve">
|
||||
<value>LZW</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_None" xml:space="preserve">
|
||||
<value>无</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Rle" xml:space="preserve">
|
||||
<value>RLE</value>
|
||||
</data>
|
||||
<data name="TiffCompressOption_Zip" xml:space="preserve">
|
||||
<value>Zip</value>
|
||||
</data>
|
||||
<data name="ValueMustBeBetween" xml:space="preserve">
|
||||
<value>数值必须介于 '{0}' 和 '{1}' 之间.</value>
|
||||
</data>
|
||||
<data name="Version" xml:space="preserve">
|
||||
<value>版本</value>
|
||||
</data>
|
||||
</root>
|
435
src/modules/imageresizer/ui/Properties/Settings.cs
Normal file
@ -0,0 +1,435 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Collections.ObjectModel;
|
||||
using System.Collections.Specialized;
|
||||
using System.ComponentModel;
|
||||
using System.IO;
|
||||
using System.Threading;
|
||||
using System.Windows.Media.Imaging;
|
||||
using ImageResizer.Models;
|
||||
using Newtonsoft.Json;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using Newtonsoft.Json.Serialization;
|
||||
|
||||
namespace ImageResizer.Properties
|
||||
{
|
||||
[JsonObject(MemberSerialization.OptIn)]
|
||||
public partial class Settings : IDataErrorInfo, INotifyPropertyChanged
|
||||
{
|
||||
// Used to synchronize access to the settings.json file
|
||||
private static Mutex _jsonMutex = new Mutex();
|
||||
private static string _settingsPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData), "Microsoft", "PowerToys", "ImageResizer", "settings.json");
|
||||
private string _fileNameFormat;
|
||||
private bool _shrinkOnly;
|
||||
private int _selectedSizeIndex;
|
||||
private bool _replace;
|
||||
private bool _ignoreOrientation;
|
||||
private int _jpegQualityLevel;
|
||||
private PngInterlaceOption _pngInterlaceOption;
|
||||
private TiffCompressOption _tiffCompressOption;
|
||||
private string _fileName;
|
||||
private ObservableCollection<ImageResizer.Models.ResizeSize> _sizes;
|
||||
private bool _keepDateModified;
|
||||
private System.Guid _fallbackEncoder;
|
||||
private CustomSize _customSize;
|
||||
|
||||
public Settings()
|
||||
{
|
||||
SelectedSizeIndex = 0;
|
||||
ShrinkOnly = false;
|
||||
Replace = false;
|
||||
IgnoreOrientation = true;
|
||||
JpegQualityLevel = 90;
|
||||
PngInterlaceOption = System.Windows.Media.Imaging.PngInterlaceOption.Default;
|
||||
TiffCompressOption = System.Windows.Media.Imaging.TiffCompressOption.Default;
|
||||
FileName = "%1 (%2)";
|
||||
Sizes = new ObservableCollection<ResizeSize>
|
||||
{
|
||||
new ResizeSize("$small$", ResizeFit.Fit, 854, 480, ResizeUnit.Pixel),
|
||||
new ResizeSize("$medium$", ResizeFit.Fit, 1366, 768, ResizeUnit.Pixel),
|
||||
new ResizeSize("$large$", ResizeFit.Fit, 1920, 1080, ResizeUnit.Pixel),
|
||||
new ResizeSize("$phone$", ResizeFit.Fit, 320, 568, ResizeUnit.Pixel),
|
||||
};
|
||||
KeepDateModified = false;
|
||||
FallbackEncoder = new System.Guid("19e4a5aa-5662-4fc5-a0c0-1758028e1057");
|
||||
CustomSize = new CustomSize(ResizeFit.Fit, 1024, 640, ResizeUnit.Pixel);
|
||||
AllSizes = new AllSizesCollection(this);
|
||||
}
|
||||
|
||||
public IEnumerable<ResizeSize> AllSizes { get; set; }
|
||||
|
||||
public string FileNameFormat
|
||||
=> _fileNameFormat
|
||||
?? (_fileNameFormat = FileName
|
||||
.Replace("{", "{{")
|
||||
.Replace("}", "}}")
|
||||
.Replace("%1", "{0}")
|
||||
.Replace("%2", "{1}")
|
||||
.Replace("%3", "{2}")
|
||||
.Replace("%4", "{3}")
|
||||
.Replace("%5", "{4}")
|
||||
.Replace("%6", "{5}"));
|
||||
|
||||
public ResizeSize SelectedSize
|
||||
{
|
||||
get => SelectedSizeIndex >= 0 && SelectedSizeIndex < Sizes.Count
|
||||
? Sizes[SelectedSizeIndex]
|
||||
: CustomSize;
|
||||
set
|
||||
{
|
||||
var index = Sizes.IndexOf(value);
|
||||
if (index == -1)
|
||||
{
|
||||
index = Sizes.Count;
|
||||
}
|
||||
|
||||
SelectedSizeIndex = index;
|
||||
}
|
||||
}
|
||||
|
||||
string IDataErrorInfo.Error
|
||||
=> string.Empty;
|
||||
|
||||
string IDataErrorInfo.this[string columnName]
|
||||
{
|
||||
get
|
||||
{
|
||||
if (columnName != nameof(JpegQualityLevel))
|
||||
{
|
||||
return string.Empty;
|
||||
}
|
||||
|
||||
if (JpegQualityLevel < 1 || JpegQualityLevel > 100)
|
||||
{
|
||||
return string.Format(Resources.ValueMustBeBetween, 1, 100);
|
||||
}
|
||||
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
private class AllSizesCollection : IEnumerable<ResizeSize>, INotifyCollectionChanged, INotifyPropertyChanged
|
||||
{
|
||||
private ObservableCollection<ResizeSize> _sizes;
|
||||
private CustomSize _customSize;
|
||||
|
||||
public AllSizesCollection(Settings settings)
|
||||
{
|
||||
_sizes = settings.Sizes;
|
||||
_customSize = settings.CustomSize;
|
||||
|
||||
_sizes.CollectionChanged += HandleCollectionChanged;
|
||||
((INotifyPropertyChanged)_sizes).PropertyChanged += HandlePropertyChanged;
|
||||
|
||||
settings.PropertyChanged += (sender, e) =>
|
||||
{
|
||||
if (e.PropertyName == nameof(Models.CustomSize))
|
||||
{
|
||||
var oldCustomSize = _customSize;
|
||||
_customSize = settings.CustomSize;
|
||||
|
||||
OnCollectionChanged(
|
||||
new NotifyCollectionChangedEventArgs(
|
||||
NotifyCollectionChangedAction.Replace,
|
||||
_customSize,
|
||||
oldCustomSize,
|
||||
_sizes.Count));
|
||||
}
|
||||
else if (e.PropertyName == nameof(Sizes))
|
||||
{
|
||||
var oldSizes = _sizes;
|
||||
|
||||
oldSizes.CollectionChanged -= HandleCollectionChanged;
|
||||
((INotifyPropertyChanged)oldSizes).PropertyChanged -= HandlePropertyChanged;
|
||||
|
||||
_sizes = settings.Sizes;
|
||||
|
||||
OnCollectionChanged(new NotifyCollectionChangedEventArgs(NotifyCollectionChangedAction.Reset));
|
||||
|
||||
_sizes.CollectionChanged += HandleCollectionChanged;
|
||||
((INotifyPropertyChanged)_sizes).PropertyChanged += HandlePropertyChanged;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
public event NotifyCollectionChangedEventHandler CollectionChanged;
|
||||
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
public int Count
|
||||
=> _sizes.Count + 1;
|
||||
|
||||
public ResizeSize this[int index]
|
||||
=> index == _sizes.Count
|
||||
? _customSize
|
||||
: _sizes[index];
|
||||
|
||||
public IEnumerator<ResizeSize> GetEnumerator()
|
||||
=> new AllSizesEnumerator(this);
|
||||
|
||||
private void HandleCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
|
||||
=> OnCollectionChanged(e);
|
||||
|
||||
private void HandlePropertyChanged(object sender, PropertyChangedEventArgs e)
|
||||
=> PropertyChanged?.Invoke(this, e);
|
||||
|
||||
private void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
|
||||
=> CollectionChanged?.Invoke(this, e);
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
=> GetEnumerator();
|
||||
|
||||
private class AllSizesEnumerator : IEnumerator<ResizeSize>
|
||||
{
|
||||
private readonly AllSizesCollection _list;
|
||||
|
||||
private int _index = -1;
|
||||
|
||||
public AllSizesEnumerator(AllSizesCollection list)
|
||||
=> _list = list;
|
||||
|
||||
public ResizeSize Current
|
||||
=> _list[_index];
|
||||
|
||||
object IEnumerator.Current
|
||||
=> Current;
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
public bool MoveNext()
|
||||
=> ++_index < _list.Count;
|
||||
|
||||
public void Reset()
|
||||
=> _index = -1;
|
||||
}
|
||||
}
|
||||
|
||||
private static Settings defaultInstance = new Settings();
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
defaultInstance.Reload();
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_selectedSizeIndex")]
|
||||
public int SelectedSizeIndex
|
||||
{
|
||||
get => _selectedSizeIndex;
|
||||
set
|
||||
{
|
||||
_selectedSizeIndex = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_shrinkOnly")]
|
||||
public bool ShrinkOnly
|
||||
{
|
||||
get => _shrinkOnly;
|
||||
set
|
||||
{
|
||||
_shrinkOnly = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_replace")]
|
||||
public bool Replace
|
||||
{
|
||||
get => _replace;
|
||||
set
|
||||
{
|
||||
_replace = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_ignoreOrientation")]
|
||||
public bool IgnoreOrientation
|
||||
{
|
||||
get => _ignoreOrientation;
|
||||
set
|
||||
{
|
||||
_ignoreOrientation = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_jpegQualityLevel")]
|
||||
public int JpegQualityLevel
|
||||
{
|
||||
get => _jpegQualityLevel;
|
||||
set
|
||||
{
|
||||
_jpegQualityLevel = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_pngInterlaceOption")]
|
||||
public PngInterlaceOption PngInterlaceOption
|
||||
{
|
||||
get => _pngInterlaceOption;
|
||||
set
|
||||
{
|
||||
_pngInterlaceOption = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_tiffCompressOption")]
|
||||
public TiffCompressOption TiffCompressOption
|
||||
{
|
||||
get => _tiffCompressOption;
|
||||
set
|
||||
{
|
||||
_tiffCompressOption = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_fileName")]
|
||||
public string FileName
|
||||
{
|
||||
get => _fileName;
|
||||
set
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(value))
|
||||
{
|
||||
throw new System.ArgumentNullException();
|
||||
}
|
||||
|
||||
_fileName = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_sizes")]
|
||||
public ObservableCollection<ResizeSize> Sizes
|
||||
{
|
||||
get => _sizes;
|
||||
set
|
||||
{
|
||||
_sizes = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_keepDateModified")]
|
||||
public bool KeepDateModified
|
||||
{
|
||||
get => _keepDateModified;
|
||||
set
|
||||
{
|
||||
_keepDateModified = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_fallbackEncoder")]
|
||||
public System.Guid FallbackEncoder
|
||||
{
|
||||
get => _fallbackEncoder;
|
||||
set
|
||||
{
|
||||
_fallbackEncoder = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
[JsonProperty(PropertyName = "imageresizer_customSize")]
|
||||
public CustomSize CustomSize
|
||||
{
|
||||
get => _customSize;
|
||||
set
|
||||
{
|
||||
_customSize = value;
|
||||
NotifyPropertyChanged();
|
||||
}
|
||||
}
|
||||
|
||||
public static string SettingsPath { get => _settingsPath; set => _settingsPath = value; }
|
||||
|
||||
public event PropertyChangedEventHandler PropertyChanged;
|
||||
|
||||
private void NotifyPropertyChanged([System.Runtime.CompilerServices.CallerMemberName] string propertyName = "")
|
||||
{
|
||||
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
_jsonMutex.WaitOne();
|
||||
string jsonData = "{\"version\":\"1.0\",\"name\":\"ImageResizer\",\"properties\":";
|
||||
string tempJsonData = JsonConvert.SerializeObject(this);
|
||||
JObject tempSettings = JObject.Parse(tempJsonData);
|
||||
|
||||
// Replace the <Value> of the property with { "value": <Value> } to be consistent with PowerToys
|
||||
foreach (var property in tempSettings)
|
||||
{
|
||||
tempSettings[property.Key] = new JObject { { "value", property.Value } };
|
||||
}
|
||||
|
||||
jsonData += tempSettings.ToString(Formatting.None);
|
||||
jsonData += "}";
|
||||
|
||||
// Create directory if it doesn't exist
|
||||
FileInfo file = new FileInfo(SettingsPath);
|
||||
file.Directory.Create();
|
||||
|
||||
// write string to file
|
||||
File.WriteAllText(SettingsPath, jsonData);
|
||||
_jsonMutex.ReleaseMutex();
|
||||
}
|
||||
|
||||
public void Reload()
|
||||
{
|
||||
_jsonMutex.WaitOne();
|
||||
if (!File.Exists(SettingsPath))
|
||||
{
|
||||
_jsonMutex.ReleaseMutex();
|
||||
Save();
|
||||
return;
|
||||
}
|
||||
|
||||
string jsonData = File.ReadAllText(SettingsPath);
|
||||
JObject imageResizerSettings = JObject.Parse(jsonData);
|
||||
|
||||
// Replace the { "value": <Value> } with <Value> to match the Settings object format
|
||||
foreach (var property in (JObject)imageResizerSettings["properties"])
|
||||
{
|
||||
imageResizerSettings["properties"][property.Key] = property.Value["value"];
|
||||
}
|
||||
|
||||
Settings jsonSettings = JsonConvert.DeserializeObject<Settings>(imageResizerSettings["properties"].ToString(), new JsonSerializerSettings() { ObjectCreationHandling = ObjectCreationHandling.Replace });
|
||||
|
||||
// Needs to be called on the App UI thread as the properties are bound to the UI.
|
||||
App.Current.Dispatcher.Invoke(() =>
|
||||
{
|
||||
ShrinkOnly = jsonSettings.ShrinkOnly;
|
||||
Replace = jsonSettings.Replace;
|
||||
IgnoreOrientation = jsonSettings.IgnoreOrientation;
|
||||
JpegQualityLevel = jsonSettings.JpegQualityLevel;
|
||||
PngInterlaceOption = jsonSettings.PngInterlaceOption;
|
||||
TiffCompressOption = jsonSettings.TiffCompressOption;
|
||||
FileName = jsonSettings.FileName;
|
||||
Sizes = jsonSettings.Sizes;
|
||||
KeepDateModified = jsonSettings.KeepDateModified;
|
||||
FallbackEncoder = jsonSettings.FallbackEncoder;
|
||||
CustomSize = jsonSettings.CustomSize;
|
||||
SelectedSizeIndex = jsonSettings.SelectedSizeIndex;
|
||||
});
|
||||
_jsonMutex.ReleaseMutex();
|
||||
}
|
||||
}
|
||||
}
|
BIN
src/modules/imageresizer/ui/Resources/ImageResizer.ico
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
src/modules/imageresizer/ui/Resources/ImageResizer.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
14
src/modules/imageresizer/ui/Utilities/MathHelpers.cs
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
|
||||
namespace ImageResizer.Utilities
|
||||
{
|
||||
internal static class MathHelpers
|
||||
{
|
||||
public static int Clamp(int value, int min, int max)
|
||||
=> Math.Min(Math.Max(value, min), max);
|
||||
}
|
||||
}
|
81
src/modules/imageresizer/ui/Utilities/Win32Helpers.cs
Normal file
@ -0,0 +1,81 @@
|
||||
// Copyright (c) Microsoft Corporation
|
||||
// The Microsoft Corporation licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information.
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[module: System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1636:FileHeaderCopyrightTextMustMatch", Justification = "File created under PowerToys.")]
|
||||
|
||||
namespace ImageResizer.Utilities
|
||||
{
|
||||
// Win32 functions required for temporary workaround for issue #1273
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("StyleCop.CSharp.NamingRules", "SA1307:Accessible fields should begin with upper-case letter", Justification = "Naming used in Win32 dll")]
|
||||
internal class Win32Helpers
|
||||
{
|
||||
[DllImport("user32.dll")]
|
||||
internal static extern bool SetForegroundWindow(IntPtr hWnd);
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
internal static extern uint SendInput(uint nInputs, INPUT[] pInputs, int cbSize);
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
public struct INPUT
|
||||
{
|
||||
internal INPUTTYPE type;
|
||||
internal InputUnion data;
|
||||
|
||||
internal static int Size
|
||||
{
|
||||
get { return Marshal.SizeOf(typeof(INPUT)); }
|
||||
}
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
internal struct InputUnion
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
internal MOUSEINPUT mi;
|
||||
[FieldOffset(0)]
|
||||
internal KEYBDINPUT ki;
|
||||
[FieldOffset(0)]
|
||||
internal HARDWAREINPUT hi;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct MOUSEINPUT
|
||||
{
|
||||
internal int dx;
|
||||
internal int dy;
|
||||
internal int mouseData;
|
||||
internal uint dwFlags;
|
||||
internal uint time;
|
||||
internal UIntPtr dwExtraInfo;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct KEYBDINPUT
|
||||
{
|
||||
internal short wVk;
|
||||
internal short wScan;
|
||||
internal uint dwFlags;
|
||||
internal int time;
|
||||
internal UIntPtr dwExtraInfo;
|
||||
}
|
||||
|
||||
[StructLayout(LayoutKind.Sequential)]
|
||||
internal struct HARDWAREINPUT
|
||||
{
|
||||
internal int uMsg;
|
||||
internal short wParamL;
|
||||
internal short wParamH;
|
||||
}
|
||||
|
||||
internal enum INPUTTYPE : uint
|
||||
{
|
||||
INPUT_MOUSE = 0,
|
||||
INPUT_KEYBOARD = 1,
|
||||
INPUT_HARDWARE = 2,
|
||||
}
|
||||
}
|
||||
}
|
91
src/modules/imageresizer/ui/ViewModels/AdvancedViewModel.cs
Normal file
@ -0,0 +1,91 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media.Imaging;
|
||||
using GalaSoft.MvvmLight;
|
||||
using GalaSoft.MvvmLight.Command;
|
||||
using ImageResizer.Models;
|
||||
using ImageResizer.Properties;
|
||||
|
||||
namespace ImageResizer.ViewModels
|
||||
{
|
||||
public class AdvancedViewModel : ViewModelBase
|
||||
{
|
||||
private static readonly IDictionary<Guid, string> _encoderMap;
|
||||
|
||||
static AdvancedViewModel()
|
||||
{
|
||||
var bmpCodec = new BmpBitmapEncoder().CodecInfo;
|
||||
var gifCodec = new GifBitmapEncoder().CodecInfo;
|
||||
var jpegCodec = new JpegBitmapEncoder().CodecInfo;
|
||||
var pngCodec = new PngBitmapEncoder().CodecInfo;
|
||||
var tiffCodec = new TiffBitmapEncoder().CodecInfo;
|
||||
var wmpCodec = new WmpBitmapEncoder().CodecInfo;
|
||||
|
||||
_encoderMap = new Dictionary<Guid, string>
|
||||
{
|
||||
[bmpCodec.ContainerFormat] = bmpCodec.FriendlyName,
|
||||
[gifCodec.ContainerFormat] = gifCodec.FriendlyName,
|
||||
[jpegCodec.ContainerFormat] = jpegCodec.FriendlyName,
|
||||
[pngCodec.ContainerFormat] = pngCodec.FriendlyName,
|
||||
[tiffCodec.ContainerFormat] = tiffCodec.FriendlyName,
|
||||
[wmpCodec.ContainerFormat] = wmpCodec.FriendlyName,
|
||||
};
|
||||
}
|
||||
|
||||
public AdvancedViewModel(Settings settings)
|
||||
{
|
||||
RemoveSizeCommand = new RelayCommand<ResizeSize>(RemoveSize);
|
||||
AddSizeCommand = new RelayCommand(AddSize);
|
||||
Settings = settings;
|
||||
}
|
||||
|
||||
public static IDictionary<Guid, string> EncoderMap
|
||||
=> _encoderMap;
|
||||
|
||||
public Settings Settings { get; }
|
||||
|
||||
public string Version
|
||||
=> typeof(AdvancedViewModel).Assembly.GetCustomAttribute<AssemblyInformationalVersionAttribute>()
|
||||
?.InformationalVersion;
|
||||
|
||||
public IEnumerable<Guid> Encoders
|
||||
=> _encoderMap.Keys;
|
||||
|
||||
public ICommand RemoveSizeCommand { get; }
|
||||
|
||||
public ICommand AddSizeCommand { get; }
|
||||
|
||||
public void RemoveSize(ResizeSize size)
|
||||
=> Settings.Sizes.Remove(size);
|
||||
|
||||
public void AddSize()
|
||||
=> Settings.Sizes.Add(new ResizeSize());
|
||||
|
||||
public void Close(bool accepted)
|
||||
{
|
||||
if (accepted)
|
||||
{
|
||||
Settings.Save();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
var selectedSizeIndex = Settings.SelectedSizeIndex;
|
||||
var shrinkOnly = Settings.ShrinkOnly;
|
||||
var replace = Settings.Replace;
|
||||
var ignoreOrientation = Settings.IgnoreOrientation;
|
||||
|
||||
Settings.Reload();
|
||||
Settings.SelectedSizeIndex = selectedSizeIndex;
|
||||
Settings.ShrinkOnly = shrinkOnly;
|
||||
Settings.Replace = replace;
|
||||
Settings.IgnoreOrientation = ignoreOrientation;
|
||||
}
|
||||
}
|
||||
}
|
11
src/modules/imageresizer/ui/ViewModels/ITabViewModel.cs
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
namespace ImageResizer.ViewModels
|
||||
{
|
||||
public interface ITabViewModel
|
||||
{
|
||||
string Header { get; }
|
||||
}
|
||||
}
|
58
src/modules/imageresizer/ui/ViewModels/InputViewModel.cs
Normal file
@ -0,0 +1,58 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Windows.Input;
|
||||
using GalaSoft.MvvmLight;
|
||||
using GalaSoft.MvvmLight.Command;
|
||||
using ImageResizer.Models;
|
||||
using ImageResizer.Properties;
|
||||
using ImageResizer.Views;
|
||||
|
||||
namespace ImageResizer.ViewModels
|
||||
{
|
||||
public class InputViewModel : ViewModelBase
|
||||
{
|
||||
private readonly ResizeBatch _batch;
|
||||
private readonly MainViewModel _mainViewModel;
|
||||
private readonly IMainView _mainView;
|
||||
|
||||
public InputViewModel(
|
||||
Settings settings,
|
||||
MainViewModel mainViewModel,
|
||||
IMainView mainView,
|
||||
ResizeBatch batch)
|
||||
{
|
||||
_batch = batch;
|
||||
_mainViewModel = mainViewModel;
|
||||
_mainView = mainView;
|
||||
|
||||
Settings = settings;
|
||||
settings.CustomSize.PropertyChanged += (sender, e) => settings.SelectedSize = (CustomSize)sender;
|
||||
|
||||
ResizeCommand = new RelayCommand(Resize);
|
||||
CancelCommand = new RelayCommand(Cancel);
|
||||
ShowAdvancedCommand = new RelayCommand(ShowAdvanced);
|
||||
}
|
||||
|
||||
public Settings Settings { get; }
|
||||
|
||||
public ICommand ResizeCommand { get; }
|
||||
|
||||
public ICommand CancelCommand { get; }
|
||||
|
||||
public ICommand ShowAdvancedCommand { get; }
|
||||
|
||||
public void Resize()
|
||||
{
|
||||
Settings.Save();
|
||||
_mainViewModel.CurrentPage = new ProgressViewModel(_batch, _mainViewModel, _mainView);
|
||||
}
|
||||
|
||||
public void Cancel()
|
||||
=> _mainView.Close();
|
||||
|
||||
public void ShowAdvanced()
|
||||
=> _mainView.ShowAdvanced(new AdvancedViewModel(Settings));
|
||||
}
|
||||
}
|
54
src/modules/imageresizer/ui/ViewModels/MainViewModel.cs
Normal file
@ -0,0 +1,54 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Input;
|
||||
using GalaSoft.MvvmLight;
|
||||
using GalaSoft.MvvmLight.Command;
|
||||
using ImageResizer.Models;
|
||||
using ImageResizer.Properties;
|
||||
using ImageResizer.Views;
|
||||
|
||||
namespace ImageResizer.ViewModels
|
||||
{
|
||||
public class MainViewModel : ViewModelBase
|
||||
{
|
||||
private readonly Settings _settings;
|
||||
private readonly ResizeBatch _batch;
|
||||
|
||||
private object _currentPage;
|
||||
private double _progress;
|
||||
|
||||
public MainViewModel(ResizeBatch batch, Settings settings)
|
||||
{
|
||||
_batch = batch;
|
||||
_settings = settings;
|
||||
LoadCommand = new RelayCommand<IMainView>(Load);
|
||||
}
|
||||
|
||||
public ICommand LoadCommand { get; }
|
||||
|
||||
public object CurrentPage
|
||||
{
|
||||
get => _currentPage;
|
||||
set => Set(nameof(CurrentPage), ref _currentPage, value);
|
||||
}
|
||||
|
||||
public double Progress
|
||||
{
|
||||
get => _progress;
|
||||
set => Set(nameof(Progress), ref _progress, value);
|
||||
}
|
||||
|
||||
public void Load(IMainView view)
|
||||
{
|
||||
if (_batch.Files.Count == 0)
|
||||
{
|
||||
_batch.Files.AddRange(view.OpenPictureFiles());
|
||||
}
|
||||
|
||||
CurrentPage = new InputViewModel(_settings, this, view, _batch);
|
||||
}
|
||||
}
|
||||
}
|
92
src/modules/imageresizer/ui/ViewModels/ProgressViewModel.cs
Normal file
@ -0,0 +1,92 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Input;
|
||||
using GalaSoft.MvvmLight;
|
||||
using GalaSoft.MvvmLight.Command;
|
||||
using ImageResizer.Models;
|
||||
using ImageResizer.Views;
|
||||
|
||||
namespace ImageResizer.ViewModels
|
||||
{
|
||||
public class ProgressViewModel : ViewModelBase
|
||||
{
|
||||
private readonly MainViewModel _mainViewModel;
|
||||
private readonly ResizeBatch _batch;
|
||||
private readonly IMainView _mainView;
|
||||
private readonly Stopwatch _stopwatch = new Stopwatch();
|
||||
private readonly CancellationTokenSource _cancellationTokenSource = new CancellationTokenSource();
|
||||
|
||||
private double _progress;
|
||||
private TimeSpan _timeRemaining;
|
||||
|
||||
public ProgressViewModel(
|
||||
ResizeBatch batch,
|
||||
MainViewModel mainViewModel,
|
||||
IMainView mainView)
|
||||
{
|
||||
_batch = batch;
|
||||
_mainViewModel = mainViewModel;
|
||||
_mainView = mainView;
|
||||
|
||||
StartCommand = new RelayCommand(Start);
|
||||
StopCommand = new RelayCommand(Stop);
|
||||
}
|
||||
|
||||
public double Progress
|
||||
{
|
||||
get => _progress;
|
||||
set => Set(nameof(Progress), ref _progress, value);
|
||||
}
|
||||
|
||||
public TimeSpan TimeRemaining
|
||||
{
|
||||
get => _timeRemaining;
|
||||
set => Set(nameof(TimeRemaining), ref _timeRemaining, value);
|
||||
}
|
||||
|
||||
public ICommand StartCommand { get; }
|
||||
|
||||
public ICommand StopCommand { get; }
|
||||
|
||||
public void Start()
|
||||
=> Task.Factory.StartNew(
|
||||
() =>
|
||||
{
|
||||
_stopwatch.Restart();
|
||||
var errors = _batch.Process(
|
||||
_cancellationTokenSource.Token,
|
||||
(completed, total) =>
|
||||
{
|
||||
var progress = completed / total;
|
||||
Progress = progress;
|
||||
_mainViewModel.Progress = progress;
|
||||
|
||||
TimeRemaining = _stopwatch.Elapsed.Multiply((total - completed) / completed);
|
||||
});
|
||||
|
||||
if (errors.Any())
|
||||
{
|
||||
_mainViewModel.Progress = 0;
|
||||
_mainViewModel.CurrentPage = new ResultsViewModel(_mainView, errors);
|
||||
}
|
||||
else
|
||||
{
|
||||
_mainView.Close();
|
||||
}
|
||||
},
|
||||
_cancellationTokenSource.Token);
|
||||
|
||||
public void Stop()
|
||||
{
|
||||
_cancellationTokenSource.Cancel();
|
||||
_mainView.Close();
|
||||
}
|
||||
}
|
||||
}
|
31
src/modules/imageresizer/ui/ViewModels/ResultsViewModel.cs
Normal file
@ -0,0 +1,31 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Input;
|
||||
using GalaSoft.MvvmLight;
|
||||
using GalaSoft.MvvmLight.Command;
|
||||
using ImageResizer.Models;
|
||||
using ImageResizer.Views;
|
||||
|
||||
namespace ImageResizer.ViewModels
|
||||
{
|
||||
public class ResultsViewModel : ViewModelBase
|
||||
{
|
||||
private readonly IMainView _mainView;
|
||||
|
||||
public ResultsViewModel(IMainView mainView, IEnumerable<ResizeError> errors)
|
||||
{
|
||||
_mainView = mainView;
|
||||
Errors = errors;
|
||||
CloseCommand = new RelayCommand(Close);
|
||||
}
|
||||
|
||||
public IEnumerable<ResizeError> Errors { get; }
|
||||
|
||||
public ICommand CloseCommand { get; }
|
||||
|
||||
public void Close() => _mainView.Close();
|
||||
}
|
||||
}
|
272
src/modules/imageresizer/ui/Views/AdvancedWindow.xaml
Normal file
@ -0,0 +1,272 @@
|
||||
<Window x:Class="ImageResizer.Views.AdvancedWindow"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:local="clr-namespace:ImageResizer.Views"
|
||||
xmlns:m="clr-namespace:ImageResizer.Models"
|
||||
xmlns:p="clr-namespace:ImageResizer.Properties"
|
||||
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
||||
MinWidth="390"
|
||||
MinHeight="340"
|
||||
Background="{DynamicResource {x:Static SystemColors.ControlBrushKey}}"
|
||||
Name="_this"
|
||||
ResizeMode="NoResize"
|
||||
SizeToContent="WidthAndHeight"
|
||||
Title="{x:Static p:Resources.Advanced_Title}"
|
||||
WindowStyle="ToolWindow"
|
||||
WindowStartupLocation="CenterScreen">
|
||||
|
||||
<Window.Resources>
|
||||
<ObjectDataProvider x:Key="PngInterlaceOptionValues"
|
||||
MethodName="GetValues"
|
||||
ObjectType="{x:Type sys:Enum}">
|
||||
<ObjectDataProvider.MethodParameters>
|
||||
<x:Type TypeName="PngInterlaceOption"/>
|
||||
</ObjectDataProvider.MethodParameters>
|
||||
</ObjectDataProvider>
|
||||
<ObjectDataProvider x:Key="TiffCompressOptionValues"
|
||||
MethodName="GetValues"
|
||||
ObjectType="{x:Type sys:Enum}">
|
||||
<ObjectDataProvider.MethodParameters>
|
||||
<x:Type TypeName="TiffCompressOption"/>
|
||||
</ObjectDataProvider.MethodParameters>
|
||||
</ObjectDataProvider>
|
||||
<local:ContainerFormatConverter x:Key="ContainerFormatConverter"/>
|
||||
</Window.Resources>
|
||||
|
||||
<Grid Margin="11">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition Height="Auto"/>
|
||||
</Grid.RowDefinitions>
|
||||
<TabControl>
|
||||
<TabItem Header="{x:Static p:Resources.Advanced_Sizes}">
|
||||
<StackPanel Margin="11">
|
||||
<!-- TODO: Allow these to be drag-and-drop reordered (issue #15) -->
|
||||
<ItemsControl Grid.IsSharedSizeScope="True" ItemsSource="{Binding Settings.Sizes}">
|
||||
<ItemsControl.ItemTemplate>
|
||||
<DataTemplate DataType="m:ResizeSize">
|
||||
<Grid Margin="0,0,0,7">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition SharedSizeGroup="0"/>
|
||||
<ColumnDefinition SharedSizeGroup="1"/>
|
||||
<ColumnDefinition SharedSizeGroup="2"/>
|
||||
<ColumnDefinition SharedSizeGroup="3"/>
|
||||
<ColumnDefinition SharedSizeGroup="4"/>
|
||||
<ColumnDefinition SharedSizeGroup="5"/>
|
||||
<ColumnDefinition SharedSizeGroup="6"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<TextBox Width="66" Text="{Binding Name}"/>
|
||||
<ComboBox Grid.Column="1"
|
||||
Height="23"
|
||||
Margin="5,0,0,0"
|
||||
ItemsSource="{Binding Source={StaticResource ResizeFitValues}}"
|
||||
SelectedItem="{Binding Fit}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate DataType="{x:Type m:ResizeFit}">
|
||||
<ContentPresenter Content="{Binding Converter={StaticResource EnumValueConverter}}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<TextBox Grid.Column="2"
|
||||
Width="43"
|
||||
Height="23"
|
||||
Margin="7,0,0,0">
|
||||
<TextBox.Text>
|
||||
<Binding Converter="{StaticResource AutoDoubleConverter}"
|
||||
Path="Width"
|
||||
UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:AutoDoubleValidationRule/>
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
<TextBlock Grid.Column="3"
|
||||
Margin="5,0,0,0"
|
||||
VerticalAlignment="Center"
|
||||
Visibility="{Binding ShowHeight,Converter={StaticResource BoolValueConverter}}">
|
||||
×
|
||||
</TextBlock>
|
||||
<TextBox Grid.Column="4"
|
||||
Width="43"
|
||||
Height="23"
|
||||
Margin="5,0,0,0"
|
||||
Visibility="{Binding ShowHeight,Converter={StaticResource BoolValueConverter}}">
|
||||
<TextBox.Text>
|
||||
<Binding Converter="{StaticResource AutoDoubleConverter}"
|
||||
Path="Height"
|
||||
UpdateSourceTrigger="PropertyChanged">
|
||||
<Binding.ValidationRules>
|
||||
<local:AutoDoubleValidationRule/>
|
||||
</Binding.ValidationRules>
|
||||
</Binding>
|
||||
</TextBox.Text>
|
||||
</TextBox>
|
||||
<ComboBox Grid.Column="5"
|
||||
Height="23"
|
||||
Margin="7,0,0,0"
|
||||
ItemsSource="{Binding Source={StaticResource ResizeUnitValues}}"
|
||||
SelectedItem="{Binding Unit}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate DataType="{x:Type m:ResizeUnit}">
|
||||
<ContentPresenter Content="{Binding Converter={StaticResource EnumValueConverter}}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<TextBlock Grid.Column="6" Margin="5,0,0,0">
|
||||
<Hyperlink Command="{Binding DataContext.RemoveSizeCommand,ElementName=_this}" CommandParameter="{Binding}">
|
||||
<Run Text="{x:Static p:Resources.Advanced_DeleteSize}"/>
|
||||
</Hyperlink>
|
||||
</TextBlock>
|
||||
</Grid>
|
||||
</DataTemplate>
|
||||
</ItemsControl.ItemTemplate>
|
||||
</ItemsControl>
|
||||
<TextBlock>
|
||||
<Hyperlink Command="{Binding AddSizeCommand}">
|
||||
<Run Text="{x:Static p:Resources.Advanced_CreateSize}"/>
|
||||
</Hyperlink>
|
||||
</TextBlock>
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
<TabItem Header="{x:Static p:Resources.Advanced_Encoding}">
|
||||
<Grid Margin="11" VerticalAlignment="Top">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Label Content="{x:Static p:Resources.Advanced_FallbackEncoder}"
|
||||
Padding="0,5,5,0"
|
||||
Target="{Binding ElementName=_fallbackEncoderComboBox}"/>
|
||||
<ComboBox Grid.Column="1"
|
||||
Height="23"
|
||||
HorizontalAlignment="Left"
|
||||
ItemsSource="{Binding Encoders}"
|
||||
Name="_fallbackEncoderComboBox"
|
||||
SelectedItem="{Binding Settings.FallbackEncoder}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate DataType="{x:Type sys:Guid}">
|
||||
<ContentPresenter Content="{Binding Converter={StaticResource ContainerFormatConverter}}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<Label Grid.Row="1"
|
||||
Margin="0,7,0,0"
|
||||
Content="{x:Static p:Resources.Advanced_JpegQualityLevel}"
|
||||
Padding="0,5,5,0"
|
||||
Target="{Binding ElementName=_jpegQualityLevelTextBox}"/>
|
||||
<TextBox Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Width="34"
|
||||
Height="23"
|
||||
Margin="0,7,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
Name="_jpegQualityLevelTextBox"
|
||||
Text="{Binding Settings.JpegQualityLevel,ValidatesOnExceptions=True,ValidatesOnDataErrors=True}"/>
|
||||
<Label Grid.Row="2"
|
||||
Margin="0,7,0,0"
|
||||
Content="{x:Static p:Resources.Advanced_PngInterlaceOption}"
|
||||
Padding="0,5,5,0"
|
||||
Target="{Binding ElementName=_pngInterlaceComboBox}"/>
|
||||
<ComboBox Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Height="23"
|
||||
Margin="0,7,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
ItemsSource="{Binding Source={StaticResource PngInterlaceOptionValues}}"
|
||||
Name="_pngInterlaceComboBox"
|
||||
SelectedItem="{Binding Settings.PngInterlaceOption}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate DataType="{x:Type PngInterlaceOption}">
|
||||
<ContentPresenter Content="{Binding Converter={StaticResource EnumValueConverter}}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
<Label Grid.Row="3"
|
||||
Margin="0,7,0,0"
|
||||
Content="{x:Static p:Resources.Advanced_TiffCompressOption}"
|
||||
Padding="0,5,5,0"
|
||||
Target="{Binding ElementName=_tiffCompressComboBox}"/>
|
||||
<ComboBox Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
Height="23"
|
||||
Margin="0,7,0,0"
|
||||
HorizontalAlignment="Left"
|
||||
ItemsSource="{Binding Source={StaticResource TiffCompressOptionValues}}"
|
||||
Name="_tiffCompressComboBox"
|
||||
SelectedItem="{Binding Settings.TiffCompressOption}">
|
||||
<ComboBox.ItemTemplate>
|
||||
<DataTemplate DataType="{x:Type TiffCompressOption}">
|
||||
<ContentPresenter Content="{Binding Converter={StaticResource EnumValueConverter}}"/>
|
||||
</DataTemplate>
|
||||
</ComboBox.ItemTemplate>
|
||||
</ComboBox>
|
||||
</Grid>
|
||||
</TabItem>
|
||||
<TabItem Header="{x:Static p:Resources.Advanced_File}">
|
||||
<StackPanel Margin="11,9">
|
||||
<TextBlock Text="{x:Static p:Resources.Advanced_FileNameTokens}"/>
|
||||
<TextBlock Margin="9,5,0,0">
|
||||
<Run Text="%1 -"/>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken1}"/>
|
||||
<LineBreak/>
|
||||
<Run>%2 -</Run>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken2}"/>
|
||||
<LineBreak/>
|
||||
<Run>%3 -</Run>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken3}"/>
|
||||
<LineBreak/>
|
||||
<Run>%4 -</Run>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken4}"/>
|
||||
<LineBreak/>
|
||||
<Run>%5 -</Run>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken5}"/>
|
||||
<LineBreak/>
|
||||
<Run>%6 -</Run>
|
||||
<Run Text="{x:Static p:Resources.Advanced_FileNameToken6}"/>
|
||||
</TextBlock>
|
||||
<Grid Margin="0,7,0,0">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<Label HorizontalAlignment="Left"
|
||||
Content="{x:Static p:Resources.Advanced_FileName}"
|
||||
Padding="0,5,5,0"
|
||||
Target="{Binding ElementName=_fileNameTextBox}"/>
|
||||
<TextBox Grid.Column="1"
|
||||
Height="23"
|
||||
Name="_fileNameTextBox"
|
||||
Text="{Binding Settings.FileName}"/>
|
||||
</Grid>
|
||||
<Separator Margin="0,11,0,0"/>
|
||||
<CheckBox Margin="0,11,0,0"
|
||||
Content="{x:Static p:Resources.Advanced_KeepDateModified}"
|
||||
IsChecked="{Binding Settings.KeepDateModified}"/>
|
||||
</StackPanel>
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
<StackPanel Grid.Row="1"
|
||||
Margin="0,11,0,0"
|
||||
HorizontalAlignment="Right"
|
||||
Orientation="Horizontal">
|
||||
<Button Height="23"
|
||||
MinWidth="75"
|
||||
Click="HandleAcceptClick"
|
||||
Content="{x:Static p:Resources.OK}"
|
||||
IsDefault="True"/>
|
||||
<Button Height="23"
|
||||
MinWidth="75"
|
||||
Margin="7,0,0,0"
|
||||
Content="{x:Static p:Resources.Cancel}"
|
||||
IsCancel="True"/>
|
||||
</StackPanel>
|
||||
</Grid>
|
||||
|
||||
</Window>
|
29
src/modules/imageresizer/ui/Views/AdvancedWindow.xaml.cs
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Diagnostics;
|
||||
using System.Windows;
|
||||
using System.Windows.Navigation;
|
||||
using ImageResizer.ViewModels;
|
||||
|
||||
namespace ImageResizer.Views
|
||||
{
|
||||
public partial class AdvancedWindow : Window
|
||||
{
|
||||
public AdvancedWindow(AdvancedViewModel viewModel)
|
||||
{
|
||||
DataContext = viewModel;
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void HandleAcceptClick(object sender, RoutedEventArgs e)
|
||||
=> DialogResult = true;
|
||||
|
||||
private void HandleRequestNavigate(object sender, RequestNavigateEventArgs e)
|
||||
{
|
||||
Process.Start(e.Uri.ToString());
|
||||
e.Handled = true;
|
||||
}
|
||||
}
|
||||
}
|
35
src/modules/imageresizer/ui/Views/AutoDoubleConverter.cs
Normal file
@ -0,0 +1,35 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows.Data;
|
||||
using ImageResizer.Properties;
|
||||
|
||||
namespace ImageResizer.Views
|
||||
{
|
||||
[ValueConversion(typeof(double), typeof(string))]
|
||||
internal class AutoDoubleConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
var d = (double)value;
|
||||
|
||||
return d != 0
|
||||
? d.ToString(culture)
|
||||
: (string)parameter == "Auto"
|
||||
? Resources.Input_Auto
|
||||
: string.Empty;
|
||||
}
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
{
|
||||
var text = (string)value;
|
||||
|
||||
return !string.IsNullOrEmpty(text)
|
||||
? double.Parse(text, culture)
|
||||
: 0;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System.Globalization;
|
||||
using System.Windows.Controls;
|
||||
|
||||
namespace ImageResizer.Views
|
||||
{
|
||||
internal class AutoDoubleValidationRule : ValidationRule
|
||||
{
|
||||
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
|
||||
{
|
||||
var text = (string)value;
|
||||
|
||||
return new ValidationResult(
|
||||
string.IsNullOrEmpty(text)
|
||||
|| double.TryParse(text, NumberStyles.AllowThousands | NumberStyles.Float, cultureInfo, out var _),
|
||||
null);
|
||||
}
|
||||
}
|
||||
}
|
21
src/modules/imageresizer/ui/Views/BoolValueConverter.cs
Normal file
@ -0,0 +1,21 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows;
|
||||
using System.Windows.Data;
|
||||
|
||||
namespace ImageResizer.Views
|
||||
{
|
||||
[ValueConversion(typeof(Enum), typeof(string))]
|
||||
internal class BoolValueConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
=> (bool)value ? Visibility.Visible : Visibility.Collapsed;
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
=> throw new NotImplementedException();
|
||||
}
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
// Copyright (c) Brice Lambson
|
||||
// The Brice Lambson licenses this file to you under the MIT license.
|
||||
// See the LICENSE file in the project root for more information. Code forked from Brice Lambson's https://github.com/bricelam/ImageResizer/
|
||||
|
||||
using System;
|
||||
using System.Globalization;
|
||||
using System.Windows.Data;
|
||||
using ImageResizer.ViewModels;
|
||||
|
||||
namespace ImageResizer.Views
|
||||
{
|
||||
[ValueConversion(typeof(Guid), typeof(string))]
|
||||
public class ContainerFormatConverter : IValueConverter
|
||||
{
|
||||
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
=> AdvancedViewModel.EncoderMap.TryGetValue((Guid)value, out var result)
|
||||
? result
|
||||
: value.ToString();
|
||||
|
||||
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
|
||||
=> throw new NotImplementedException();
|
||||
}
|
||||
}
|