mirror of
https://github.com/reactos/reactos
synced 2025-10-06 08:22:58 +02:00
Compare commits
222 Commits
rostests/t
...
netstat_so
Author | SHA1 | Date | |
---|---|---|---|
|
f362ced23c | ||
|
a1f7b3f2dd | ||
|
818908d9d3 | ||
|
5df6963754 | ||
|
06ca384f78 | ||
|
af18a970a9 | ||
|
fa4c72b79e | ||
|
8ef47d2e5e | ||
|
3e23cdf9ee | ||
|
17e9dcc922 | ||
|
7fafeb6390 | ||
|
bfb973e0b3 | ||
|
cce12eb9ed | ||
|
7342163b0d | ||
|
93445131e3 | ||
|
180bc8155e | ||
|
de85acff69 | ||
|
e8cb1677ee | ||
|
5ee97b9537 | ||
|
99c4ffb0ae | ||
|
87950be329 | ||
|
b807a95731 | ||
|
5d8aedf0e3 | ||
|
821d9422fe | ||
|
f502d34b04 | ||
|
497009da82 | ||
|
b41615376b | ||
|
0f62d80f2d | ||
|
4c7ef7b1a2 | ||
|
e369caef4e | ||
|
489655a414 | ||
|
eb30050e1b | ||
|
a5360f542f | ||
|
5ae65ab7a7 | ||
|
6a6b383abd | ||
|
00715ccf8b | ||
|
c7e4c3a8e9 | ||
|
8e01dee251 | ||
|
bc85db7d8c | ||
|
ed80df29e0 | ||
|
12e1919e5e | ||
|
38560761ce | ||
|
5e4c6ae983 | ||
|
8fe890e963 | ||
|
16882dcfa4 | ||
|
fb1162431d | ||
|
d764b4232a | ||
|
f3a07f2a78 | ||
|
ad2d88f275 | ||
|
3801acb914 | ||
|
4328b858e5 | ||
|
edd332c952 | ||
|
40864bc15c | ||
|
40233a3644 | ||
|
8cfc4a3376 | ||
|
6cac5b8c9e | ||
|
bbf64c0cc4 | ||
|
e1eb9e3620 | ||
|
209439a5ae | ||
|
44a312478d | ||
|
7f55dd36ea | ||
|
5cb2b73988 | ||
|
122eaeb6ad | ||
|
61c77d1f87 | ||
|
f135d23f4c | ||
|
22233e66ce | ||
|
79de1846ac | ||
|
bfc87de1d8 | ||
|
6ebadb4d39 | ||
|
d09433a2da | ||
|
bfdb012f1f | ||
|
f5200e6c25 | ||
|
1abfdde2d4 | ||
|
8c695b9437 | ||
|
bd761568f5 | ||
|
0d0bd954a8 | ||
|
d737153ac9 | ||
|
3121aee56e | ||
|
de6313d89e | ||
|
7eca194709 | ||
|
6409f97bc4 | ||
|
bd5209d9f4 | ||
|
9ba1849a97 | ||
|
50d78f04e3 | ||
|
cb98e91b55 | ||
|
5bb0a2c484 | ||
|
60f4c3839c | ||
|
00dafff740 | ||
|
ec09fffbfc | ||
|
b6c4222f25 | ||
|
8f1f1c7a5a | ||
|
c63489f1e8 | ||
|
a38b133dd1 | ||
|
b0b40ce520 | ||
|
d04e049284 | ||
|
ec53d42278 | ||
|
3fa6d74a01 | ||
|
e7ccb36b9b | ||
|
e034377b51 | ||
|
3fa613b9da | ||
|
d6a78d580b | ||
|
d03fc32e7d | ||
|
f203ad5cf4 | ||
|
157491e297 | ||
|
3bc71f9086 | ||
|
0fbd5eda85 | ||
|
b12069d670 | ||
|
7e1510eb9c | ||
|
0c16bcd4e8 | ||
|
af47866f76 | ||
|
095510bdac | ||
|
38e4b859e2 | ||
|
cdb130420e | ||
|
b9b2608bfb | ||
|
bc19bbe408 | ||
|
19d8862851 | ||
|
64ef3ced9c | ||
|
b5335fb90b | ||
|
7bb0561c2d | ||
|
fdba69be7c | ||
|
2661b2db61 | ||
|
96d3883686 | ||
|
9afcbea24e | ||
|
f6bd638b4d | ||
|
17bdf55474 | ||
|
7aadc1e1fe | ||
|
0972f71d9a | ||
|
89ecf32e0b | ||
|
d614d62b09 | ||
|
21f0095cc4 | ||
|
8ba330ead2 | ||
|
9f56e67bc2 | ||
|
aaa0cb6724 | ||
|
e8c7e30030 | ||
|
b7071f67a8 | ||
|
2f856f6f0d | ||
|
c706222f3f | ||
|
f4735ccc9b | ||
|
434798e312 | ||
|
9927163455 | ||
|
3bdc062fb9 | ||
|
d5707eefe2 | ||
|
2da0506f2a | ||
|
6e77747b30 | ||
|
0b4c8bdd1c | ||
|
7b53126375 | ||
|
da7dcec6a0 | ||
|
3fc702b588 | ||
|
36aea8e56e | ||
|
9a6c85f68a | ||
|
7989e3f26c | ||
|
dc14a9f6e0 | ||
|
2441e86963 | ||
|
ec93c2340d | ||
|
99fb812be4 | ||
|
ad61c574f4 | ||
|
5675604d28 | ||
|
61012eb544 | ||
|
bfd42c67a1 | ||
|
113656563a | ||
|
4f41000714 | ||
|
84b4a80beb | ||
|
318b2e786d | ||
|
3b4422b41b | ||
|
0334498068 | ||
|
78c8df8393 | ||
|
6d9b7f77ad | ||
|
2b623c1d04 | ||
|
70f897e4c9 | ||
|
8d8e81ee7a | ||
|
5ef3f347ad | ||
|
2e836fb339 | ||
|
fa4c3bd560 | ||
|
1a88607387 | ||
|
0087ea6597 | ||
|
cb245ff711 | ||
|
62b6859a67 | ||
|
9ff9580fb0 | ||
|
3da25b73c2 | ||
|
83762575e1 | ||
|
d3164a0f55 | ||
|
0f9be53985 | ||
|
7d5e159131 | ||
|
114bc2b96e | ||
|
29a706fc5a | ||
|
fa388640ca | ||
|
0887c1c040 | ||
|
ed22908780 | ||
|
4782c314d4 | ||
|
c3db5e9c8e | ||
|
59e74584ac | ||
|
8e2fe925f2 | ||
|
f483e42f89 | ||
|
d8bfe2a261 | ||
|
56a450147c | ||
|
8061a6f6f4 | ||
|
0b695a6f70 | ||
|
2674e26cbb | ||
|
509359b3ec | ||
|
2e305b251b | ||
|
8d242c6229 | ||
|
789a296c43 | ||
|
6db0d24fb6 | ||
|
13b1eadebb | ||
|
51279c3e44 | ||
|
a389f8aa0c | ||
|
d708c7947b | ||
|
b29b2682bf | ||
|
36cdd34814 | ||
|
bddd8b058c | ||
|
aeffa57ec7 | ||
|
2626c724e9 | ||
|
024daea0af | ||
|
13e6cbcafa | ||
|
e54b32b434 | ||
|
8f9ef68ea7 | ||
|
b29e82d0e0 | ||
|
acbb73a89d | ||
|
ff1fa4f38a | ||
|
d6fecc52d1 | ||
|
85ca8afb60 | ||
|
2eb67000a5 |
51
.github/workflows/build.yml
vendored
51
.github/workflows/build.yml
vendored
@@ -272,28 +272,29 @@ jobs:
|
||||
name: reactos-syms-clang-cl-${{matrix.arch}}-${{matrix.config}}-${{github.sha}}
|
||||
path: build/msvc_pdb
|
||||
|
||||
build-msbuild-i386:
|
||||
name: MSBuild (i386)
|
||||
runs-on: windows-2019
|
||||
steps:
|
||||
- name: Install Flex and Bison
|
||||
run: |
|
||||
curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z
|
||||
7z x flexbison.7z -O${{github.workspace}}\bin
|
||||
echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||
echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
- name: Add CL to PATH
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
with:
|
||||
arch: amd64_x86
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
path: src
|
||||
- name: Configure
|
||||
run: |
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=i386 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{github.workspace}}\src
|
||||
- name: Build
|
||||
run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd
|
||||
# Disable MSBuild for the moment being until a proper fix is provided -- see CORE-18911
|
||||
# build-msbuild-i386:
|
||||
# name: MSBuild (i386)
|
||||
# runs-on: windows-2019
|
||||
# steps:
|
||||
# - name: Install Flex and Bison
|
||||
# run: |
|
||||
# curl -O https://svn.reactos.org/storage/vperevertkin/flexbison.7z
|
||||
# 7z x flexbison.7z -O${{github.workspace}}\bin
|
||||
# echo "${{github.workspace}}\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
|
||||
# echo "BISON_PKGDATADIR=${{github.workspace}}\bin\share\bison" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
# echo "M4=${{github.workspace}}\bin\m4.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
# - name: Add CL to PATH
|
||||
# uses: ilammy/msvc-dev-cmd@v1
|
||||
# with:
|
||||
# arch: amd64_x86
|
||||
# - uses: actions/checkout@v2
|
||||
# with:
|
||||
# path: src
|
||||
# - name: Configure
|
||||
# run: |
|
||||
# mkdir build
|
||||
# cd build
|
||||
# cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=toolchain-msvc.cmake -DARCH:STRING=i386 -DENABLE_ROSTESTS=1 -DENABLE_ROSAPPS=1 ${{github.workspace}}\src
|
||||
# - name: Build
|
||||
# run: cmake --build ${{github.workspace}}\build --target bootcd --target livecd
|
||||
|
1
.github/workflows/stale.yml
vendored
1
.github/workflows/stale.yml
vendored
@@ -26,6 +26,7 @@ jobs:
|
||||
days-before-close: 14
|
||||
days-before-issue-close: -1
|
||||
exempt-all-assignees: true
|
||||
exempt-draft-pr: true
|
||||
stale-pr-message: 'This PR is stale because it received no updates in the last 4 months. Without removing the stale label, or commenting on this ticket it will be closed in 2 weeks.'
|
||||
stale-issue-label: 'no-issue-activity'
|
||||
stale-pr-label: 'no-pr-activity'
|
||||
|
@@ -15,7 +15,7 @@ BEGIN
|
||||
WS_CHILD | WS_VISIBLE | WS_TABSTOP, 74, 186, 114, 13
|
||||
DEFPUSHBUTTON "選択", IDC_SELECT, 194, 186, 44, 13
|
||||
PUSHBUTTON "コピー", IDC_COPY, 242, 186, 44, 13, WS_DISABLED
|
||||
CONTROL "Advanced view", IDC_CHECK_ADVANCED, "Button", BS_AUTOCHECKBOX |
|
||||
CONTROL "詳細表示", IDC_CHECK_ADVANCED, "Button", BS_AUTOCHECKBOX |
|
||||
WS_TABSTOP, 8, 208, 95, 10
|
||||
END
|
||||
|
||||
@@ -23,13 +23,13 @@ IDD_ADVANCED DIALOGEX 0, 0, 292, 64
|
||||
STYLE DS_SHELLFONT | WS_CHILD
|
||||
FONT 9, "MS UI Gothic"
|
||||
BEGIN
|
||||
LTEXT "Charset:", IDC_STATIC, 8, 8, 48, 8
|
||||
LTEXT "文字セット:", IDC_STATIC, 8, 8, 48, 8
|
||||
COMBOBOX IDC_COMBO_CHARSET, 72, 4, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Group by:", IDC_STATIC, 8, 28, 50, 8
|
||||
LTEXT "分類:", IDC_STATIC, 8, 28, 50, 8
|
||||
COMBOBOX IDC_COMBO_GROUPBY, 72, 24, 116, 80, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP
|
||||
PUSHBUTTON "Search", IDC_BUTTON_SEARCH, 200, 44, 50, 14
|
||||
PUSHBUTTON "検索", IDC_BUTTON_SEARCH, 200, 44, 50, 14
|
||||
EDITTEXT IDC_EDIT_SEARCH, 72, 44, 116, 14, ES_AUTOHSCROLL
|
||||
LTEXT "Search for:", IDC_STATIC, 8, 48, 42, 8
|
||||
LTEXT "検索文字列:", IDC_STATIC, 8, 48, 42, 8
|
||||
LTEXT "Unicode:", IDC_STATIC, 200, 8, 30, 8
|
||||
EDITTEXT IDC_EDIT_UNICODE, 236, 4, 28, 12, ES_AUTOHSCROLL
|
||||
END
|
||||
@@ -48,9 +48,9 @@ END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
|
||||
IDS_LICENSE "本プログラムはフリーソフトウェアです。フリーソフトウェア財団が発行した GNU 一般公衆利用許諾契約書のバージョン2、またはそれ以降のバージョン(任意選択)の条件の下で再配布、または改変することができます。\r\n\r\n本プログラムは、有用であることを期待して配布されていますが、商品性や特定目的への適合性についての暗黙の保証もなく、いかなる保証もありません。詳細は GNU 一般公衆利用許諾契約書をご覧ください。\r\n\r\nあなたはこのプログラムとともに GNU 一般公衆利用許諾書のコピーを受け取っているはずです。そうでない場合は、フリーソフトウェア財団(Free Software Foundation, Inc, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA)までご連絡ください。"
|
||||
IDS_ABOUT "バージョン情報(&B)..."
|
||||
IDS_TITLE "Character Map"
|
||||
IDS_TITLE "文字コード表"
|
||||
IDS_UNICODE "Unicode"
|
||||
IDS_ALL "All"
|
||||
IDS_ALL "すべて"
|
||||
END
|
||||
|
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* FILE: base/applications/charmap/lang/ro-RO.rc
|
||||
* ReactOS Project (https://reactos.org)
|
||||
* TRANSLATOR: Ștefan Fulea (stefan dot fulea at mail dot com)
|
||||
* TRANSLATORS: Copyright 2011-2018 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
@@ -58,5 +59,5 @@ BEGIN
|
||||
IDS_ABOUT "&Despre…"
|
||||
IDS_TITLE "Hartă de caractere"
|
||||
IDS_UNICODE "Unicode"
|
||||
IDS_ALL "All"
|
||||
IDS_ALL "Toate"
|
||||
END
|
||||
|
@@ -9,9 +9,9 @@ CAPTION "Programa de diagnóstico de ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "Ay&uda", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "Ay&uda", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Siguiente página", IDC_BUTTON_NEXT, 107, 260, 80, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Guardar toda la información...", IDC_BUTTON_SAVE_INFO, 201, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Guardar toda la información...", IDC_BUTTON_SAVE_INFO, 201, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "Sa&lir", IDC_BUTTON_EXIT, 323, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -9,9 +9,9 @@ CAPTION "ReactX 분석 도구"
|
||||
FONT 9, "굴림"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "도움말(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "도움말(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "다음 장(&N)", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "모든 정보 저장(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "모든 정보 저장(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "종료(&E)", IDC_BUTTON_EXIT, 425, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -7,9 +7,9 @@ CAPTION "Diagnostisch hulpprogramma voor ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Help", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Help", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Volgende Pagina", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Alle gegevens opslaan...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Alle gegevens opslaan...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Afsluiten", IDC_BUTTON_EXIT, 425, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -7,9 +7,9 @@ CAPTION "ReactX-diagnose program"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Hjelp", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Hjelp", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Neste side", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Lagre alt informasjon...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Lagre alt informasjon...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Avslutt", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -16,9 +16,9 @@ CAPTION "Narzędzie diagnostyki ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Pomoc", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Pomoc", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Następna", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Zapisz wszystkie informacje...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Zapisz wszystkie informacje...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Wyjście", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -9,9 +9,9 @@ CAPTION "Programa de Diagnóstico ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Ajuda", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Ajuda", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Próxima página", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "Sal&var Informações...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "Sal&var Informações...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "Sai&r", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -13,9 +13,9 @@ CAPTION "Diagnostic ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Manual…", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Manual…", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Următorul compartiment", IDC_BUTTON_NEXT, 187, 260, 120, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Păstrare informații…", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Păstrare informații…", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "Î&nchide", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -12,9 +12,9 @@ CAPTION "ReactX - diagnostický program"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Pomocník", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Pomocník", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "Ďalšia stra&na", IDC_BUTTON_NEXT, 250, 261, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Uložiť všetky informácie...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Uložiť všetky informácie...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Skončiť", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -11,9 +11,9 @@ CAPTION "ReactX-Programi i diaknostikimit"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Ndihmë", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Ndihmë", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Faqja tjetër", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Ruaj të gjithë informacionet...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Ruaj të gjithë informacionet...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Dil", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -14,9 +14,9 @@ CAPTION "ReactX-diagnos program"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Hjälp", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Hjälp", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Nästa sida", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Spara all information...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Spara all information...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Avsluta", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -10,9 +10,9 @@ CAPTION "ReactX Tanı Aracı"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Yardım", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Yardım", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "S&onraki Sayfa", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Tüm Bilgileri Sakla...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Tüm Bilgileri Sakla...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Çıkış", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -15,9 +15,9 @@ CAPTION "Засіб діагностики ReactX"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "&Довідка", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Довідка", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "&Наступна сторінка", IDC_BUTTON_NEXT, 203, 260, 94, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Зберегти всю інформацію...", IDC_BUTTON_SAVE_INFO, 301, 260, 120, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "&Зберегти всю інформацію...", IDC_BUTTON_SAVE_INFO, 301, 260, 120, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "&Вихід", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -16,9 +16,9 @@ CAPTION "ReactX 诊断工具"
|
||||
FONT 9, "宋体"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "帮助(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "帮助(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "下一页(&N)", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "保存所有信息(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "保存所有信息(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "退出(&E)", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -15,9 +15,9 @@ CAPTION "ReactX 診斷程式"
|
||||
FONT 9, "新細明體"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "説明(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "説明(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "下一頁(&N)", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "儲存所有資訊(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "儲存所有資訊(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "結束(&E)", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -15,9 +15,9 @@ CAPTION "ReactX 診斷程式"
|
||||
FONT 9, "新細明體"
|
||||
BEGIN
|
||||
CONTROL "Tab1", IDC_TAB_CONTROL, "SysTabControl32", WS_TABSTOP, 2, 2, 474, 250
|
||||
PUSHBUTTON "說明(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "說明(&H)", IDC_BUTTON_HELP, 2, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
DEFPUSHBUTTON "下一頁(&N)", IDC_BUTTON_NEXT, 257, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "儲存所有資訊(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
PUSHBUTTON "儲存所有資訊(&S)...", IDC_BUTTON_SAVE_INFO, 311, 260, 110, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_DISABLED
|
||||
PUSHBUTTON "結束(&E)", IDC_BUTTON_EXIT, 425, 260, 50, 14, WS_CHILD | WS_VISIBLE | WS_TABSTOP
|
||||
END
|
||||
|
||||
|
@@ -1,23 +1,8 @@
|
||||
/*
|
||||
* fontview display class
|
||||
*
|
||||
* display.c
|
||||
*
|
||||
* Copyright (C) 2007 Timo Kreuzer <timo <dot> kreuzer <at> reactos <dot> org>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Display class
|
||||
* COPYRIGHT: Copyright 2007 Timo Kreuzer <timo.kreuzer@reactos.org>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
@@ -37,488 +22,488 @@ LRESULT CALLBACK DisplayProc(HWND, UINT, WPARAM, LPARAM);
|
||||
/* Internal data storage type */
|
||||
typedef struct
|
||||
{
|
||||
int nPageHeight;
|
||||
WCHAR szTypeFaceName[LF_FULLFACESIZE];
|
||||
WCHAR szFormat[MAX_FORMAT];
|
||||
WCHAR szString[MAX_STRING];
|
||||
int nPageHeight;
|
||||
WCHAR szTypeFaceName[LF_FULLFACESIZE];
|
||||
WCHAR szFormat[MAX_FORMAT];
|
||||
WCHAR szString[MAX_STRING];
|
||||
|
||||
HFONT hCaptionFont;
|
||||
HFONT hCharSetFont;
|
||||
HFONT hSizeFont;
|
||||
HFONT hFonts[MAX_SIZES];
|
||||
int nSizes[MAX_SIZES];
|
||||
int nHeights[MAX_SIZES];
|
||||
HFONT hCaptionFont;
|
||||
HFONT hCharSetFont;
|
||||
HFONT hSizeFont;
|
||||
HFONT hFonts[MAX_SIZES];
|
||||
int nSizes[MAX_SIZES];
|
||||
int nHeights[MAX_SIZES];
|
||||
} DISPLAYDATA;
|
||||
|
||||
/* This is the only public function, it registers the class */
|
||||
BOOL
|
||||
Display_InitClass(HINSTANCE hInstance)
|
||||
{
|
||||
WNDCLASSEXW wincl;
|
||||
WNDCLASSEXW wincl;
|
||||
|
||||
/* Set the fontdisplay window class structure */
|
||||
wincl.cbSize = sizeof(WNDCLASSEX);
|
||||
wincl.style = CS_DBLCLKS;
|
||||
wincl.lpfnWndProc = DisplayProc;
|
||||
wincl.cbClsExtra = 0;
|
||||
wincl.cbWndExtra = 0;
|
||||
wincl.hInstance = hInstance;
|
||||
wincl.hIcon = NULL;
|
||||
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
|
||||
wincl.hbrBackground = GetStockObject(WHITE_BRUSH);
|
||||
wincl.lpszMenuName = NULL;
|
||||
wincl.lpszClassName = g_szFontDisplayClassName;
|
||||
wincl.hIconSm = NULL;
|
||||
/* Set the fontdisplay window class structure */
|
||||
wincl.cbSize = sizeof(WNDCLASSEX);
|
||||
wincl.style = CS_DBLCLKS;
|
||||
wincl.lpfnWndProc = DisplayProc;
|
||||
wincl.cbClsExtra = 0;
|
||||
wincl.cbWndExtra = 0;
|
||||
wincl.hInstance = hInstance;
|
||||
wincl.hIcon = NULL;
|
||||
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
|
||||
wincl.hbrBackground = GetStockObject(WHITE_BRUSH);
|
||||
wincl.lpszMenuName = NULL;
|
||||
wincl.lpszClassName = g_szFontDisplayClassName;
|
||||
wincl.hIconSm = NULL;
|
||||
|
||||
/* Register the window class, and if it fails return FALSE */
|
||||
if (!RegisterClassExW (&wincl))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
/* Register the window class, and if it fails return FALSE */
|
||||
if (!RegisterClassExW (&wincl))
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static int
|
||||
Display_DrawText(HDC hDC, DISPLAYDATA* pData, int nYPos)
|
||||
{
|
||||
HFONT hOldFont;
|
||||
TEXTMETRIC tm;
|
||||
int i, y;
|
||||
WCHAR szSize[5];
|
||||
WCHAR szCaption[LF_FULLFACESIZE + 20];
|
||||
HFONT hOldFont;
|
||||
TEXTMETRIC tm;
|
||||
int i, y;
|
||||
WCHAR szSize[5];
|
||||
WCHAR szCaption[LF_FULLFACESIZE + 20];
|
||||
|
||||
/* This is the location on the DC where we draw */
|
||||
y = -nYPos;
|
||||
/* This is the location on the DC where we draw */
|
||||
y = -nYPos;
|
||||
|
||||
hOldFont = SelectObject(hDC, pData->hCaptionFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
hOldFont = SelectObject(hDC, pData->hCaptionFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
|
||||
swprintf(szCaption, L"%s%s", pData->szTypeFaceName, pData->szFormat);
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + SPACING1;
|
||||
swprintf(szCaption, L"%s%s", pData->szTypeFaceName, pData->szFormat);
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + SPACING1;
|
||||
|
||||
/* Draw a separation Line */
|
||||
SelectObject(hDC, GetStockObject(BLACK_PEN));
|
||||
MoveToEx(hDC, 0, y, NULL);
|
||||
LineTo(hDC, 10000, y);
|
||||
y += SPACING2;
|
||||
/* Draw a separation Line */
|
||||
SelectObject(hDC, GetStockObject(BLACK_PEN));
|
||||
MoveToEx(hDC, 0, y, NULL);
|
||||
LineTo(hDC, 10000, y);
|
||||
y += SPACING2;
|
||||
|
||||
/* TODO: Output font info */
|
||||
/* TODO: Output font info */
|
||||
|
||||
/* Output Character set */
|
||||
SelectObject(hDC, pData->hCharSetFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
swprintf(szCaption, L"abcdefghijklmnopqrstuvwxyz");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
/* Output Character set */
|
||||
SelectObject(hDC, pData->hCharSetFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
swprintf(szCaption, L"abcdefghijklmnopqrstuvwxyz");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
|
||||
swprintf(szCaption, L"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
swprintf(szCaption, L"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
|
||||
swprintf(szCaption, L"0123456789.:,;(\"~!@#$%%^&*')");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
swprintf(szCaption, L"0123456789.:,;(\"~!@#$%%^&*')");
|
||||
TextOutW(hDC, 0, y, szCaption, (INT)wcslen(szCaption));
|
||||
y += tm.tmHeight + 1;
|
||||
|
||||
/* Draw a separation Line */
|
||||
SelectObject(hDC, GetStockObject(BLACK_PEN));
|
||||
MoveToEx(hDC, 0, y, NULL);
|
||||
LineTo(hDC, 10000, y);
|
||||
y += SPACING2;
|
||||
/* Draw a separation Line */
|
||||
SelectObject(hDC, GetStockObject(BLACK_PEN));
|
||||
MoveToEx(hDC, 0, y, NULL);
|
||||
LineTo(hDC, 10000, y);
|
||||
y += SPACING2;
|
||||
|
||||
/* Output the strings for different sizes */
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
SelectObject(hDC, pData->hFonts[i]);
|
||||
TextOutW(hDC, 20, y, pData->szString, (INT)wcslen(pData->szString));
|
||||
GetTextMetrics(hDC, &tm);
|
||||
y += tm.tmHeight + 1;
|
||||
SelectObject(hDC, pData->hSizeFont);
|
||||
swprintf(szSize, L"%d", pData->nSizes[i]);
|
||||
TextOutW(hDC, 0, y - 13 - tm.tmDescent, szSize, (INT)wcslen(szSize));
|
||||
}
|
||||
SelectObject(hDC, hOldFont);
|
||||
/* Output the strings for different sizes */
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
SelectObject(hDC, pData->hFonts[i]);
|
||||
TextOutW(hDC, 20, y, pData->szString, (INT)wcslen(pData->szString));
|
||||
GetTextMetrics(hDC, &tm);
|
||||
y += tm.tmHeight + 1;
|
||||
SelectObject(hDC, pData->hSizeFont);
|
||||
swprintf(szSize, L"%d", pData->nSizes[i]);
|
||||
TextOutW(hDC, 0, y - 13 - tm.tmDescent, szSize, (INT)wcslen(szSize));
|
||||
}
|
||||
SelectObject(hDC, hOldFont);
|
||||
|
||||
return y;
|
||||
return y;
|
||||
}
|
||||
|
||||
static int
|
||||
CALLBACK
|
||||
EnumFontFamProcW(
|
||||
const LOGFONTW *lpelfe,
|
||||
const TEXTMETRICW *lptm,
|
||||
DWORD FontType,
|
||||
LPARAM lParam)
|
||||
const LOGFONTW *lpelfe,
|
||||
const TEXTMETRICW *lptm,
|
||||
DWORD FontType,
|
||||
LPARAM lParam)
|
||||
{
|
||||
PNEWTEXTMETRICW pntmw = (PNEWTEXTMETRICW)lptm;
|
||||
PBOOL pfOpenType = (PBOOL)lParam;
|
||||
PNEWTEXTMETRICW pntmw = (PNEWTEXTMETRICW)lptm;
|
||||
PBOOL pfOpenType = (PBOOL)lParam;
|
||||
|
||||
if (FontType & TRUETYPE_FONTTYPE)
|
||||
{
|
||||
if (pntmw->ntmFlags & (NTM_TT_OPENTYPE | NTM_PS_OPENTYPE))
|
||||
{
|
||||
*pfOpenType = TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
if (FontType & TRUETYPE_FONTTYPE)
|
||||
{
|
||||
if (pntmw->ntmFlags & (NTM_TT_OPENTYPE | NTM_PS_OPENTYPE))
|
||||
{
|
||||
*pfOpenType = TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_SetTypeFace(HWND hwnd, PLOGFONTW pLogFont)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
TEXTMETRIC tm;
|
||||
HDC hDC;
|
||||
RECT rect;
|
||||
SCROLLINFO si;
|
||||
int i;
|
||||
LOGFONTW logfont;
|
||||
BOOL fOpenType;
|
||||
BYTE Buffer[512];
|
||||
LPOUTLINETEXTMETRICW pOTM = (LPOUTLINETEXTMETRICW)Buffer;
|
||||
LPWSTR pch;
|
||||
DISPLAYDATA* pData;
|
||||
TEXTMETRIC tm;
|
||||
HDC hDC;
|
||||
RECT rect;
|
||||
SCROLLINFO si;
|
||||
int i;
|
||||
LOGFONTW logfont;
|
||||
BOOL fOpenType;
|
||||
BYTE Buffer[512];
|
||||
LPOUTLINETEXTMETRICW pOTM = (LPOUTLINETEXTMETRICW)Buffer;
|
||||
LPWSTR pch;
|
||||
|
||||
/* Set the new type face name */
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
lstrcpynW(pData->szTypeFaceName, pLogFont->lfFaceName,
|
||||
ARRAYSIZE(pData->szTypeFaceName));
|
||||
/* Set the new type face name */
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
lstrcpynW(pData->szTypeFaceName, pLogFont->lfFaceName,
|
||||
ARRAYSIZE(pData->szTypeFaceName));
|
||||
|
||||
/* Create the new fonts */
|
||||
hDC = GetDC(hwnd);
|
||||
DeleteObject(pData->hCharSetFont);
|
||||
/* Create the new fonts */
|
||||
hDC = GetDC(hwnd);
|
||||
DeleteObject(pData->hCharSetFont);
|
||||
|
||||
logfont = *pLogFont;
|
||||
logfont.lfHeight = -MulDiv(16, GetDeviceCaps(GetDC(NULL), LOGPIXELSY), 72);
|
||||
pData->hCharSetFont = CreateFontIndirectW(&logfont);
|
||||
logfont = *pLogFont;
|
||||
logfont.lfHeight = -MulDiv(16, GetDeviceCaps(GetDC(NULL), LOGPIXELSY), 72);
|
||||
pData->hCharSetFont = CreateFontIndirectW(&logfont);
|
||||
|
||||
/* Get font format */
|
||||
SelectObject(hDC, pData->hCharSetFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
if (tm.tmPitchAndFamily & TMPF_TRUETYPE)
|
||||
{
|
||||
if (GetOutlineTextMetricsW(hDC, sizeof(Buffer), pOTM))
|
||||
{
|
||||
LPBYTE pb = Buffer;
|
||||
pb += (WORD)(DWORD_PTR)pOTM->otmpStyleName;
|
||||
pch = (LPWSTR)pb;
|
||||
if (*pch)
|
||||
{
|
||||
lstrcatW(pData->szTypeFaceName, L" ");
|
||||
lstrcatW(pData->szTypeFaceName, pch);
|
||||
}
|
||||
}
|
||||
/* Get font format */
|
||||
SelectObject(hDC, pData->hCharSetFont);
|
||||
GetTextMetrics(hDC, &tm);
|
||||
if (tm.tmPitchAndFamily & TMPF_TRUETYPE)
|
||||
{
|
||||
if (GetOutlineTextMetricsW(hDC, sizeof(Buffer), pOTM))
|
||||
{
|
||||
LPBYTE pb = Buffer;
|
||||
pb += (WORD)(DWORD_PTR)pOTM->otmpStyleName;
|
||||
pch = (LPWSTR)pb;
|
||||
if (*pch)
|
||||
{
|
||||
lstrcatW(pData->szTypeFaceName, L" ");
|
||||
lstrcatW(pData->szTypeFaceName, pch);
|
||||
}
|
||||
}
|
||||
|
||||
fOpenType = FALSE;
|
||||
EnumFontFamiliesExW(hDC, &logfont,
|
||||
EnumFontFamProcW, (LPARAM)&fOpenType, 0);
|
||||
fOpenType = FALSE;
|
||||
EnumFontFamiliesExW(hDC, &logfont,
|
||||
EnumFontFamProcW, (LPARAM)&fOpenType, 0);
|
||||
|
||||
if (fOpenType)
|
||||
swprintf(pData->szFormat, L" (OpenType)");
|
||||
else
|
||||
swprintf(pData->szFormat, L" (TrueType)");
|
||||
}
|
||||
else if (tm.tmPitchAndFamily & TMPF_VECTOR)
|
||||
{
|
||||
swprintf(pData->szFormat, L" (Vector)");
|
||||
}
|
||||
else
|
||||
{
|
||||
swprintf(pData->szFormat, L" (Raster)");
|
||||
}
|
||||
if (fOpenType)
|
||||
swprintf(pData->szFormat, L" (OpenType)");
|
||||
else
|
||||
swprintf(pData->szFormat, L" (TrueType)");
|
||||
}
|
||||
else if (tm.tmPitchAndFamily & TMPF_VECTOR)
|
||||
{
|
||||
swprintf(pData->szFormat, L" (Vector)");
|
||||
}
|
||||
else
|
||||
{
|
||||
swprintf(pData->szFormat, L" (Raster)");
|
||||
}
|
||||
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
DeleteObject(pData->hFonts[i]);
|
||||
logfont.lfHeight = -MulDiv(pData->nSizes[i], GetDeviceCaps(hDC, LOGPIXELSY), 72);
|
||||
pData->hFonts[i] = CreateFontIndirectW(&logfont);
|
||||
}
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
DeleteObject(pData->hFonts[i]);
|
||||
logfont.lfHeight = -MulDiv(pData->nSizes[i], GetDeviceCaps(hDC, LOGPIXELSY), 72);
|
||||
pData->hFonts[i] = CreateFontIndirectW(&logfont);
|
||||
}
|
||||
|
||||
/* Calculate new page dimensions */
|
||||
pData->nPageHeight = Display_DrawText(hDC, pData, 0);
|
||||
ReleaseDC(hwnd, hDC);
|
||||
/* Calculate new page dimensions */
|
||||
pData->nPageHeight = Display_DrawText(hDC, pData, 0);
|
||||
ReleaseDC(hwnd, hDC);
|
||||
|
||||
/* Set the vertical scrolling range and page size */
|
||||
GetClientRect(hwnd, &rect);
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS;
|
||||
si.nMin = 0;
|
||||
si.nMax = pData->nPageHeight;
|
||||
si.nPage = rect.bottom;
|
||||
si.nPos = 0;
|
||||
si.nTrackPos = 0;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
/* Set the vertical scrolling range and page size */
|
||||
GetClientRect(hwnd, &rect);
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS;
|
||||
si.nMin = 0;
|
||||
si.nMax = pData->nPageHeight;
|
||||
si.nPage = rect.bottom;
|
||||
si.nPos = 0;
|
||||
si.nTrackPos = 0;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_SetString(HWND hwnd, LPCWSTR pszString)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
DISPLAYDATA* pData;
|
||||
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
lstrcpynW(pData->szString, pszString, ARRAYSIZE(pData->szString));
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
lstrcpynW(pData->szString, pszString, ARRAYSIZE(pData->szString));
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnCreate(HWND hwnd)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
const int nSizes[MAX_SIZES] = {8, 12, 18, 24, 36, 48, 60, 72};
|
||||
int i;
|
||||
LOGFONTW LogFont = {50, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
|
||||
ANSI_CHARSET, OUT_DEFAULT_PRECIS,
|
||||
CLIP_DEFAULT_PRECIS, PROOF_QUALITY,
|
||||
DEFAULT_PITCH , L"MS Shell Dlg"};
|
||||
DISPLAYDATA* pData;
|
||||
const int nSizes[MAX_SIZES] = {8, 12, 18, 24, 36, 48, 60, 72};
|
||||
int i;
|
||||
LOGFONTW LogFont = {50, 0, 0, 0, FW_NORMAL, FALSE, FALSE, FALSE,
|
||||
ANSI_CHARSET, OUT_DEFAULT_PRECIS,
|
||||
CLIP_DEFAULT_PRECIS, PROOF_QUALITY,
|
||||
DEFAULT_PITCH , L"MS Shell Dlg"};
|
||||
|
||||
/* Create data structure */
|
||||
pData = malloc(sizeof(DISPLAYDATA));
|
||||
ZeroMemory(pData, sizeof(DISPLAYDATA));
|
||||
/* Create data structure */
|
||||
pData = malloc(sizeof(DISPLAYDATA));
|
||||
ZeroMemory(pData, sizeof(DISPLAYDATA));
|
||||
|
||||
/* Set the window's GWLP_USERDATA to our data structure */
|
||||
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)pData);
|
||||
/* Set the window's GWLP_USERDATA to our data structure */
|
||||
SetWindowLongPtr(hwnd, GWLP_USERDATA, (LONG_PTR)pData);
|
||||
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
pData->nSizes[i] = nSizes[i];
|
||||
}
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
pData->nSizes[i] = nSizes[i];
|
||||
}
|
||||
|
||||
pData->hCaptionFont = CreateFontIndirectW(&LogFont);
|
||||
LogFont.lfHeight = 12;
|
||||
pData->hSizeFont = CreateFontIndirectW(&LogFont);
|
||||
pData->hCaptionFont = CreateFontIndirectW(&LogFont);
|
||||
LogFont.lfHeight = 12;
|
||||
pData->hSizeFont = CreateFontIndirectW(&LogFont);
|
||||
|
||||
Display_SetString(hwnd,
|
||||
L"Jackdaws love my big sphinx of quartz. 1234567890");
|
||||
Display_SetString(hwnd,
|
||||
L"Jackdaws love my big sphinx of quartz. 1234567890");
|
||||
|
||||
Display_SetTypeFace(hwnd, &LogFont);
|
||||
Display_SetTypeFace(hwnd, &LogFont);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnPaint(HWND hwnd)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
PAINTSTRUCT ps;
|
||||
SCROLLINFO si;
|
||||
DISPLAYDATA* pData;
|
||||
PAINTSTRUCT ps;
|
||||
SCROLLINFO si;
|
||||
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
|
||||
/* Get the Scroll position */
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
/* Get the Scroll position */
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
|
||||
BeginPaint(hwnd, &ps);
|
||||
BeginPaint(hwnd, &ps);
|
||||
|
||||
/* Erase background */
|
||||
FillRect(ps.hdc, &ps.rcPaint, GetStockObject(WHITE_BRUSH));
|
||||
/* Erase background */
|
||||
FillRect(ps.hdc, &ps.rcPaint, GetStockObject(WHITE_BRUSH));
|
||||
|
||||
/* Draw the text */
|
||||
Display_DrawText(ps.hdc, pData, si.nPos);
|
||||
/* Draw the text */
|
||||
Display_DrawText(ps.hdc, pData, si.nPos);
|
||||
|
||||
EndPaint(hwnd, &ps);
|
||||
EndPaint(hwnd, &ps);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnSize(HWND hwnd)
|
||||
{
|
||||
RECT rect;
|
||||
SCROLLINFO si;
|
||||
int nOldPos;
|
||||
RECT rect;
|
||||
SCROLLINFO si;
|
||||
int nOldPos;
|
||||
|
||||
GetClientRect(hwnd, &rect);
|
||||
GetClientRect(hwnd, &rect);
|
||||
|
||||
/* Get the old scroll pos */
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
nOldPos = si.nPos;
|
||||
/* Get the old scroll pos */
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
nOldPos = si.nPos;
|
||||
|
||||
/* Set the new page size */
|
||||
si.fMask = SIF_PAGE;
|
||||
si.nPage = rect.bottom;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
/* Set the new page size */
|
||||
si.fMask = SIF_PAGE;
|
||||
si.nPage = rect.bottom;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
|
||||
/* Get the new scroll pos */
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
/* Get the new scroll pos */
|
||||
si.fMask = SIF_POS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
|
||||
/* If they don't match ... */
|
||||
if (nOldPos != si.nPos)
|
||||
{
|
||||
/* ... scroll the window */
|
||||
ScrollWindowEx(hwnd, 0, nOldPos - si.nPos, NULL, NULL, NULL, NULL, SW_INVALIDATE);
|
||||
UpdateWindow(hwnd);
|
||||
}
|
||||
/* If they don't match ... */
|
||||
if (nOldPos != si.nPos)
|
||||
{
|
||||
/* ... scroll the window */
|
||||
ScrollWindowEx(hwnd, 0, nOldPos - si.nPos, NULL, NULL, NULL, NULL, SW_INVALIDATE);
|
||||
UpdateWindow(hwnd);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnVScroll(HWND hwnd, WPARAM wParam)
|
||||
{
|
||||
SCROLLINFO si;
|
||||
int nPos;
|
||||
SCROLLINFO si;
|
||||
int nPos;
|
||||
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS | SIF_RANGE | SIF_TRACKPOS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
si.cbSize = sizeof(si);
|
||||
si.fMask = SIF_POS | SIF_RANGE | SIF_TRACKPOS;
|
||||
GetScrollInfo(hwnd, SB_VERT, &si);
|
||||
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case SB_PAGEUP:
|
||||
nPos = si.nPos - 50;
|
||||
break;
|
||||
case SB_PAGEDOWN:
|
||||
nPos = si.nPos + 50;
|
||||
break;
|
||||
case SB_LINEUP:
|
||||
nPos = si.nPos - 10;
|
||||
break;
|
||||
case SB_LINEDOWN:
|
||||
nPos = si.nPos + 10;
|
||||
break;
|
||||
case SB_THUMBTRACK:
|
||||
case SB_THUMBPOSITION:
|
||||
nPos = si.nTrackPos;
|
||||
break;
|
||||
default:
|
||||
nPos = si.nPos;
|
||||
}
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case SB_PAGEUP:
|
||||
nPos = si.nPos - 50;
|
||||
break;
|
||||
case SB_PAGEDOWN:
|
||||
nPos = si.nPos + 50;
|
||||
break;
|
||||
case SB_LINEUP:
|
||||
nPos = si.nPos - 10;
|
||||
break;
|
||||
case SB_LINEDOWN:
|
||||
nPos = si.nPos + 10;
|
||||
break;
|
||||
case SB_THUMBTRACK:
|
||||
case SB_THUMBPOSITION:
|
||||
nPos = si.nTrackPos;
|
||||
break;
|
||||
default:
|
||||
nPos = si.nPos;
|
||||
}
|
||||
|
||||
nPos = max(nPos, si.nMin);
|
||||
nPos = min(nPos, si.nMax);
|
||||
if (nPos != si.nPos)
|
||||
{
|
||||
ScrollWindowEx(hwnd, 0, si.nPos - nPos, NULL, NULL, NULL, NULL, SW_INVALIDATE);
|
||||
si.cbSize = sizeof(si);
|
||||
si.nPos = nPos;
|
||||
si.fMask = SIF_POS;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
UpdateWindow(hwnd);
|
||||
}
|
||||
nPos = max(nPos, si.nMin);
|
||||
nPos = min(nPos, si.nMax);
|
||||
if (nPos != si.nPos)
|
||||
{
|
||||
ScrollWindowEx(hwnd, 0, si.nPos - nPos, NULL, NULL, NULL, NULL, SW_INVALIDATE);
|
||||
si.cbSize = sizeof(si);
|
||||
si.nPos = nPos;
|
||||
si.fMask = SIF_POS;
|
||||
SetScrollInfo(hwnd, SB_VERT, &si, TRUE);
|
||||
UpdateWindow(hwnd);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
Display_OnDestroy(HWND hwnd)
|
||||
{
|
||||
DISPLAYDATA* pData;
|
||||
int i;
|
||||
DISPLAYDATA* pData;
|
||||
int i;
|
||||
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
|
||||
/* Delete the fonts */
|
||||
DeleteObject(pData->hCaptionFont);
|
||||
DeleteObject(pData->hCharSetFont);
|
||||
DeleteObject(pData->hSizeFont);
|
||||
/* Delete the fonts */
|
||||
DeleteObject(pData->hCaptionFont);
|
||||
DeleteObject(pData->hCharSetFont);
|
||||
DeleteObject(pData->hSizeFont);
|
||||
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
DeleteObject(pData->hFonts[i]);
|
||||
}
|
||||
for (i = 0; i < MAX_SIZES; i++)
|
||||
{
|
||||
DeleteObject(pData->hFonts[i]);
|
||||
}
|
||||
|
||||
/* Free the data structure */
|
||||
free(pData);
|
||||
/* Free the data structure */
|
||||
free(pData);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT
|
||||
Display_OnPrint(HWND hwnd)
|
||||
{
|
||||
PRINTDLG pfont;
|
||||
TEXTMETRIC tm;
|
||||
int copies, yPos;
|
||||
PRINTDLG pfont;
|
||||
TEXTMETRIC tm;
|
||||
int copies, yPos;
|
||||
|
||||
/* Clears the memory before using it */
|
||||
ZeroMemory(&pfont, sizeof(pfont));
|
||||
/* Clears the memory before using it */
|
||||
ZeroMemory(&pfont, sizeof(pfont));
|
||||
|
||||
pfont.lStructSize = sizeof(pfont);
|
||||
pfont.hwndOwner = hwnd;
|
||||
pfont.hDevMode = NULL;
|
||||
pfont.hDevNames = NULL;
|
||||
pfont.Flags = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC;
|
||||
pfont.nCopies = 1;
|
||||
pfont.nFromPage = 0xFFFF;
|
||||
pfont.nToPage = 0xFFFF;
|
||||
pfont.nMinPage = 1;
|
||||
pfont.nMaxPage = 0xFFFF;
|
||||
pfont.lStructSize = sizeof(pfont);
|
||||
pfont.hwndOwner = hwnd;
|
||||
pfont.hDevMode = NULL;
|
||||
pfont.hDevNames = NULL;
|
||||
pfont.Flags = PD_USEDEVMODECOPIESANDCOLLATE | PD_RETURNDC;
|
||||
pfont.nCopies = 1;
|
||||
pfont.nFromPage = 0xFFFF;
|
||||
pfont.nToPage = 0xFFFF;
|
||||
pfont.nMinPage = 1;
|
||||
pfont.nMaxPage = 0xFFFF;
|
||||
|
||||
/* Opens up the print dialog box */
|
||||
if (PrintDlg(&pfont))
|
||||
{
|
||||
DOCINFO docinfo;
|
||||
/* Opens up the print dialog box */
|
||||
if (PrintDlg(&pfont))
|
||||
{
|
||||
DOCINFO docinfo;
|
||||
#if 0
|
||||
DISPLAYDATA* pData;
|
||||
DISPLAYDATA* pData;
|
||||
|
||||
pData = malloc(sizeof(DISPLAYDATA));
|
||||
ZeroMemory(pData, sizeof(DISPLAYDATA));
|
||||
pData = malloc(sizeof(DISPLAYDATA));
|
||||
ZeroMemory(pData, sizeof(DISPLAYDATA));
|
||||
|
||||
/* Sets up the font layout */
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
/* Sets up the font layout */
|
||||
pData = (DISPLAYDATA*)GetWindowLongPtr(hwnd, GWLP_USERDATA);
|
||||
#endif
|
||||
docinfo.cbSize = sizeof(DOCINFO);
|
||||
docinfo.lpszDocName = L"Printing Font";
|
||||
docinfo.lpszOutput = NULL;
|
||||
docinfo.lpszDatatype = NULL;
|
||||
docinfo.fwType = 0;
|
||||
docinfo.cbSize = sizeof(DOCINFO);
|
||||
docinfo.lpszDocName = L"Printing Font";
|
||||
docinfo.lpszOutput = NULL;
|
||||
docinfo.lpszDatatype = NULL;
|
||||
docinfo.fwType = 0;
|
||||
|
||||
/* We start printing */
|
||||
StartDoc(pfont.hDC, &docinfo);
|
||||
/* We start printing */
|
||||
StartDoc(pfont.hDC, &docinfo);
|
||||
|
||||
/* Grabs the text metrics for the printer */
|
||||
GetTextMetrics(pfont.hDC, &tm);
|
||||
/* Grabs the text metrics for the printer */
|
||||
GetTextMetrics(pfont.hDC, &tm);
|
||||
|
||||
/* Start out with 0 for the y position for the page */
|
||||
yPos = 0;
|
||||
/* Start out with 0 for the y position for the page */
|
||||
yPos = 0;
|
||||
|
||||
/* Starts out with the current page */
|
||||
StartPage(pfont.hDC);
|
||||
/* Starts out with the current page */
|
||||
StartPage(pfont.hDC);
|
||||
|
||||
/* Used when printing for more than one copy */
|
||||
for (copies = 0; copies < pfont.nCopies; copies++)
|
||||
{
|
||||
/* Test output */
|
||||
TextOutW(pfont.hDC, 10, yPos, L"Testing...1...2...3", 19);
|
||||
/* Used when printing for more than one copy */
|
||||
for (copies = 0; copies < pfont.nCopies; copies++)
|
||||
{
|
||||
/* Test output */
|
||||
TextOutW(pfont.hDC, 10, yPos, L"Testing...1...2...3", 19);
|
||||
|
||||
/* TODO: Determine if using Display_DrawText() will work for both rendering out to the
|
||||
window and to the printer output */
|
||||
/* TODO: Determine if using Display_DrawText() will work for both rendering out to the
|
||||
window and to the printer output */
|
||||
#if 0
|
||||
Display_DrawText(pfont.hDC, pData, yPos);
|
||||
Display_DrawText(pfont.hDC, pData, yPos);
|
||||
#endif
|
||||
|
||||
/* Ends the current page */
|
||||
EndPage(pfont.hDC);
|
||||
/* Ends the current page */
|
||||
EndPage(pfont.hDC);
|
||||
|
||||
/* If we are making more than one copy, start a new page */
|
||||
if (copies != pfont.nCopies)
|
||||
{
|
||||
yPos = 0;
|
||||
StartPage(pfont.hDC);
|
||||
}
|
||||
}
|
||||
/* If we are making more than one copy, start a new page */
|
||||
if (copies != pfont.nCopies)
|
||||
{
|
||||
yPos = 0;
|
||||
StartPage(pfont.hDC);
|
||||
}
|
||||
}
|
||||
|
||||
/* The printing is now over */
|
||||
EndDoc(pfont.hDC);
|
||||
/* The printing is now over */
|
||||
EndDoc(pfont.hDC);
|
||||
|
||||
DeleteDC(pfont.hDC);
|
||||
DeleteDC(pfont.hDC);
|
||||
#if 0
|
||||
/* Frees the memory since we no longer need it for now */
|
||||
free(pData);
|
||||
/* Frees the memory since we no longer need it for now */
|
||||
free(pData);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT
|
||||
@@ -542,36 +527,35 @@ Display_GetFullName(HWND hwnd, INT length, PWSTR ptr)
|
||||
LRESULT CALLBACK
|
||||
DisplayProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (message)
|
||||
{
|
||||
case WM_CREATE:
|
||||
return Display_OnCreate(hwnd);
|
||||
switch (message)
|
||||
{
|
||||
case WM_CREATE:
|
||||
return Display_OnCreate(hwnd);
|
||||
|
||||
case WM_PAINT:
|
||||
return Display_OnPaint(hwnd);
|
||||
case WM_PAINT:
|
||||
return Display_OnPaint(hwnd);
|
||||
|
||||
case WM_SIZE:
|
||||
return Display_OnSize(hwnd);
|
||||
case WM_SIZE:
|
||||
return Display_OnSize(hwnd);
|
||||
|
||||
case WM_VSCROLL:
|
||||
return Display_OnVScroll(hwnd, wParam);
|
||||
case WM_VSCROLL:
|
||||
return Display_OnVScroll(hwnd, wParam);
|
||||
|
||||
case FVM_SETTYPEFACE:
|
||||
return Display_SetTypeFace(hwnd, (PLOGFONTW)lParam);
|
||||
case FVM_SETTYPEFACE:
|
||||
return Display_SetTypeFace(hwnd, (PLOGFONTW)lParam);
|
||||
|
||||
case FVM_SETSTRING:
|
||||
return Display_SetString(hwnd, (WCHAR *)lParam);
|
||||
case FVM_SETSTRING:
|
||||
return Display_SetString(hwnd, (WCHAR *)lParam);
|
||||
|
||||
case FVM_GETFULLNAME:
|
||||
return Display_GetFullName(hwnd, (INT)wParam, (PWSTR)lParam);
|
||||
case FVM_GETFULLNAME:
|
||||
return Display_GetFullName(hwnd, (INT)wParam, (PWSTR)lParam);
|
||||
|
||||
case WM_DESTROY:
|
||||
return Display_OnDestroy(hwnd);
|
||||
case WM_DESTROY:
|
||||
return Display_OnDestroy(hwnd);
|
||||
|
||||
default:
|
||||
return DefWindowProcW(hwnd, message, wParam, lParam);
|
||||
}
|
||||
default:
|
||||
return DefWindowProcW(hwnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@@ -1,24 +1,9 @@
|
||||
/*
|
||||
* fontview
|
||||
*
|
||||
* fontview.c
|
||||
*
|
||||
* Copyright (C) 2007 Timo Kreuzer <timo <dot> kreuzer <at> reactos <dot> org>
|
||||
* Copyright (C) 2016-2017 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License along
|
||||
* with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Main source file
|
||||
* COPYRIGHT: Copyright 2007 Timo Kreuzer <timo.kreuzer@reactos.org>
|
||||
* Copyright 2016-2017 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
@@ -47,50 +32,76 @@ BOOL WINAPI GetFontResourceInfoW(LPCWSTR lpFileName, DWORD *pdwBufSize, void* lp
|
||||
|
||||
DWORD
|
||||
FormatString(
|
||||
DWORD dwFlags,
|
||||
HINSTANCE hInstance,
|
||||
DWORD dwStringId,
|
||||
DWORD dwLanguageId,
|
||||
LPWSTR lpBuffer,
|
||||
DWORD nSize,
|
||||
va_list* Arguments
|
||||
DWORD dwFlags,
|
||||
HINSTANCE hInstance,
|
||||
DWORD dwStringId,
|
||||
DWORD dwLanguageId,
|
||||
LPWSTR lpBuffer,
|
||||
DWORD nSize,
|
||||
va_list* Arguments
|
||||
)
|
||||
{
|
||||
DWORD dwRet;
|
||||
int len;
|
||||
WCHAR Buffer[1000];
|
||||
DWORD dwRet;
|
||||
int len;
|
||||
WCHAR Buffer[1000];
|
||||
|
||||
len = LoadStringW(hInstance, dwStringId, (LPWSTR)Buffer, 1000);
|
||||
len = LoadStringW(hInstance, dwStringId, (LPWSTR)Buffer, 1000);
|
||||
|
||||
if (len)
|
||||
{
|
||||
dwFlags |= FORMAT_MESSAGE_FROM_STRING;
|
||||
dwFlags &= ~(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_FROM_SYSTEM);
|
||||
dwRet = FormatMessageW(dwFlags, Buffer, 0, dwLanguageId, lpBuffer, nSize, Arguments);
|
||||
return dwRet;
|
||||
}
|
||||
return 0;
|
||||
if (len)
|
||||
{
|
||||
dwFlags |= FORMAT_MESSAGE_FROM_STRING;
|
||||
dwFlags &= ~(FORMAT_MESSAGE_FROM_HMODULE | FORMAT_MESSAGE_FROM_SYSTEM);
|
||||
dwRet = FormatMessageW(dwFlags, Buffer, 0, dwLanguageId, lpBuffer, nSize, Arguments);
|
||||
return dwRet;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
ErrorMsgBox(HWND hParent, DWORD dwMessageId, ...)
|
||||
FormatMsgBox(
|
||||
_In_ HWND hParent,
|
||||
_In_ DWORD dwMessageId,
|
||||
_In_ DWORD dwCaptionId,
|
||||
_In_ UINT uType,
|
||||
_In_ va_list args)
|
||||
{
|
||||
HLOCAL hMemCaption = NULL;
|
||||
HLOCAL hMemText = NULL;
|
||||
va_list args;
|
||||
HLOCAL hMemCaption = NULL;
|
||||
HLOCAL hMemText = NULL;
|
||||
|
||||
va_start(args, dwMessageId);
|
||||
FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||
NULL, dwMessageId, 0, (LPWSTR)&hMemText, 0, &args);
|
||||
va_end(args);
|
||||
FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||
NULL, dwMessageId, 0, (LPWSTR)&hMemText, 0, &args);
|
||||
FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||
NULL, dwCaptionId, 0, (LPWSTR)&hMemCaption, 0, NULL);
|
||||
|
||||
FormatString(FORMAT_MESSAGE_ALLOCATE_BUFFER,
|
||||
NULL, IDS_ERROR, 0, (LPWSTR)&hMemCaption, 0, NULL);
|
||||
MessageBoxW(hParent, hMemText, hMemCaption, uType);
|
||||
LocalFree(hMemCaption);
|
||||
LocalFree(hMemText);
|
||||
}
|
||||
|
||||
MessageBoxW(hParent, hMemText, hMemCaption, MB_ICONERROR);
|
||||
static void
|
||||
ErrorMsgBox(
|
||||
HWND hParent,
|
||||
DWORD dwMessageId,
|
||||
...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
LocalFree(hMemCaption);
|
||||
LocalFree(hMemText);
|
||||
va_start(args, dwMessageId);
|
||||
FormatMsgBox(hParent, dwMessageId, IDS_ERROR, MB_ICONERROR, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
static void
|
||||
SuccessMsgBox(
|
||||
HWND hParent,
|
||||
DWORD dwMessageId,
|
||||
...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, dwMessageId);
|
||||
FormatMsgBox(hParent, dwMessageId, IDS_SUCCESS, MB_ICONINFORMATION, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
int WINAPI
|
||||
@@ -99,14 +110,14 @@ wWinMain(HINSTANCE hThisInstance,
|
||||
LPWSTR lpCmdLine,
|
||||
int nCmdShow)
|
||||
{
|
||||
int argc;
|
||||
INT i;
|
||||
WCHAR** argv;
|
||||
DWORD dwSize;
|
||||
HWND hMainWnd;
|
||||
MSG msg;
|
||||
WNDCLASSEXW wincl;
|
||||
LPCWSTR fileName;
|
||||
int argc;
|
||||
INT i;
|
||||
WCHAR** argv;
|
||||
DWORD dwSize;
|
||||
HWND hMainWnd;
|
||||
MSG msg;
|
||||
WNDCLASSEXW wincl;
|
||||
LPCWSTR fileName;
|
||||
|
||||
switch (GetUserDefaultUILanguage())
|
||||
{
|
||||
@@ -118,48 +129,48 @@ wWinMain(HINSTANCE hThisInstance,
|
||||
break;
|
||||
}
|
||||
|
||||
g_hInstance = hThisInstance;
|
||||
g_hInstance = hThisInstance;
|
||||
|
||||
/* Get unicode command line */
|
||||
argv = CommandLineToArgvW(GetCommandLineW(), &argc);
|
||||
if (argc < 2)
|
||||
{
|
||||
/* Get unicode command line */
|
||||
argv = CommandLineToArgvW(GetCommandLineW(), &argc);
|
||||
if (argc < 2)
|
||||
{
|
||||
#if 0
|
||||
WCHAR szFileName[MAX_PATH] = L"";
|
||||
OPENFILENAMEW fontOpen;
|
||||
WCHAR szFileName[MAX_PATH] = L"";
|
||||
OPENFILENAMEW fontOpen;
|
||||
WCHAR filter[MAX_PATH*2] = {0}, dialogTitle[MAX_PATH];
|
||||
|
||||
LoadStringW(NULL, IDS_OPEN, dialogTitle, ARRAYSIZE(dialogTitle));
|
||||
LoadStringW(NULL, IDS_FILTER_LIST, filter, ARRAYSIZE(filter) - 1);
|
||||
LoadStringW(NULL, IDS_OPEN, dialogTitle, ARRAYSIZE(dialogTitle));
|
||||
LoadStringW(NULL, IDS_FILTER_LIST, filter, ARRAYSIZE(filter) - 1);
|
||||
|
||||
/* Clears out any values of fontOpen before we use it */
|
||||
ZeroMemory(&fontOpen, sizeof(fontOpen));
|
||||
/* Clears out any values of fontOpen before we use it */
|
||||
ZeroMemory(&fontOpen, sizeof(fontOpen));
|
||||
|
||||
/* Sets up the open dialog box */
|
||||
fontOpen.lStructSize = sizeof(fontOpen);
|
||||
fontOpen.hwndOwner = NULL;
|
||||
fontOpen.lpstrFilter = filter;
|
||||
fontOpen.lpstrFile = szFileName;
|
||||
fontOpen.lpstrTitle = dialogTitle;
|
||||
fontOpen.nMaxFile = MAX_PATH;
|
||||
fontOpen.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
|
||||
fontOpen.lpstrDefExt = L"ttf";
|
||||
/* Sets up the open dialog box */
|
||||
fontOpen.lStructSize = sizeof(fontOpen);
|
||||
fontOpen.hwndOwner = NULL;
|
||||
fontOpen.lpstrFilter = filter;
|
||||
fontOpen.lpstrFile = szFileName;
|
||||
fontOpen.lpstrTitle = dialogTitle;
|
||||
fontOpen.nMaxFile = MAX_PATH;
|
||||
fontOpen.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_HIDEREADONLY;
|
||||
fontOpen.lpstrDefExt = L"ttf";
|
||||
|
||||
/* Opens up the Open File dialog box in order to chose a font file. */
|
||||
if(GetOpenFileNameW(&fontOpen))
|
||||
{
|
||||
fileName = fontOpen.lpstrFile;
|
||||
g_fileName = fileName;
|
||||
} else {
|
||||
/* If the user decides to close out of the open dialog effectively
|
||||
exiting the program altogether */
|
||||
return 0;
|
||||
}
|
||||
/* Opens up the Open File dialog box in order to chose a font file. */
|
||||
if(GetOpenFileNameW(&fontOpen))
|
||||
{
|
||||
fileName = fontOpen.lpstrFile;
|
||||
g_fileName = fileName;
|
||||
} else {
|
||||
/* If the user decides to close out of the open dialog effectively
|
||||
exiting the program altogether */
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Try to add the font resource from command line */
|
||||
}
|
||||
else
|
||||
{
|
||||
/* Try to add the font resource from command line */
|
||||
for (i = 1; i < argc; ++i)
|
||||
{
|
||||
// Treat the last argument as filename
|
||||
@@ -189,269 +200,269 @@ wWinMain(HINSTANCE hThisInstance,
|
||||
fileName = argv[i];
|
||||
}
|
||||
}
|
||||
g_fileName = fileName;
|
||||
}
|
||||
g_fileName = fileName;
|
||||
}
|
||||
|
||||
if (!AddFontResourceW(g_fileName))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, g_fileName);
|
||||
return -1;
|
||||
}
|
||||
if (!AddFontResourceW(g_fileName))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, g_fileName);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Get the font name */
|
||||
dwSize = sizeof(g_LogFonts);
|
||||
ZeroMemory(g_LogFonts, sizeof(g_LogFonts));
|
||||
if (!GetFontResourceInfoW(fileName, &dwSize, g_LogFonts, 2))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
|
||||
return -1;
|
||||
}
|
||||
g_NumFonts = 0;
|
||||
for (i = 0; i < ARRAYSIZE(g_LogFonts); ++i)
|
||||
{
|
||||
if (g_LogFonts[i].lfFaceName[0] == 0)
|
||||
break;
|
||||
/* Get the font name */
|
||||
dwSize = sizeof(g_LogFonts);
|
||||
ZeroMemory(g_LogFonts, sizeof(g_LogFonts));
|
||||
if (!GetFontResourceInfoW(fileName, &dwSize, g_LogFonts, 2))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
|
||||
return -1;
|
||||
}
|
||||
g_NumFonts = 0;
|
||||
for (i = 0; i < ARRAYSIZE(g_LogFonts); ++i)
|
||||
{
|
||||
if (g_LogFonts[i].lfFaceName[0] == 0)
|
||||
break;
|
||||
|
||||
++g_NumFonts;
|
||||
}
|
||||
if (g_NumFonts == 0)
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
|
||||
return -1;
|
||||
}
|
||||
++g_NumFonts;
|
||||
}
|
||||
if (g_NumFonts == 0)
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOFONT, fileName);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* get font title */
|
||||
dwSize = sizeof(g_FontTitle);
|
||||
ZeroMemory(g_FontTitle, sizeof(g_FontTitle));
|
||||
GetFontResourceInfoW(fileName, &dwSize, g_FontTitle, 1);
|
||||
/* get font title */
|
||||
dwSize = sizeof(g_FontTitle);
|
||||
ZeroMemory(g_FontTitle, sizeof(g_FontTitle));
|
||||
GetFontResourceInfoW(fileName, &dwSize, g_FontTitle, 1);
|
||||
|
||||
if (!Display_InitClass(hThisInstance))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOCLASS);
|
||||
return -1;
|
||||
}
|
||||
if (!Display_InitClass(hThisInstance))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOCLASS);
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* The main window class */
|
||||
wincl.cbSize = sizeof (WNDCLASSEXW);
|
||||
wincl.style = CS_DBLCLKS;
|
||||
wincl.lpfnWndProc = MainWndProc;
|
||||
wincl.cbClsExtra = 0;
|
||||
wincl.cbWndExtra = 0;
|
||||
wincl.hInstance = hThisInstance;
|
||||
wincl.hIcon = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT));
|
||||
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
|
||||
wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
|
||||
wincl.lpszMenuName = NULL;
|
||||
wincl.lpszClassName = g_szFontViewClassName;
|
||||
wincl.hIconSm = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT));
|
||||
/* The main window class */
|
||||
wincl.cbSize = sizeof (WNDCLASSEXW);
|
||||
wincl.style = CS_DBLCLKS;
|
||||
wincl.lpfnWndProc = MainWndProc;
|
||||
wincl.cbClsExtra = 0;
|
||||
wincl.cbWndExtra = 0;
|
||||
wincl.hInstance = hThisInstance;
|
||||
wincl.hIcon = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT));
|
||||
wincl.hCursor = LoadCursor (NULL, IDC_ARROW);
|
||||
wincl.hbrBackground = (HBRUSH)COLOR_BACKGROUND;
|
||||
wincl.lpszMenuName = NULL;
|
||||
wincl.lpszClassName = g_szFontViewClassName;
|
||||
wincl.hIconSm = LoadIcon (GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_TT));
|
||||
|
||||
/* Register the window class, and if it fails quit the program */
|
||||
if (!RegisterClassExW (&wincl))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOCLASS);
|
||||
return 0;
|
||||
}
|
||||
/* Register the window class, and if it fails quit the program */
|
||||
if (!RegisterClassExW (&wincl))
|
||||
{
|
||||
ErrorMsgBox(0, IDS_ERROR_NOCLASS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* The class is registered, let's create the main window */
|
||||
hMainWnd = CreateWindowExW(
|
||||
0, /* Extended possibilities for variation */
|
||||
g_szFontViewClassName, /* Classname */
|
||||
g_FontTitle, /* Title Text */
|
||||
WS_OVERLAPPEDWINDOW, /* default window */
|
||||
CW_USEDEFAULT, /* Windows decides the position */
|
||||
CW_USEDEFAULT, /* where the window ends up on the screen */
|
||||
544, /* The programs width */
|
||||
375, /* and height in pixels */
|
||||
HWND_DESKTOP, /* The window is a child-window to desktop */
|
||||
NULL, /* No menu */
|
||||
hThisInstance, /* Program Instance handler */
|
||||
NULL /* No Window Creation data */
|
||||
);
|
||||
ShowWindow(hMainWnd, nCmdShow);
|
||||
/* The class is registered, let's create the main window */
|
||||
hMainWnd = CreateWindowExW(
|
||||
0, /* Extended possibilities for variation */
|
||||
g_szFontViewClassName, /* Classname */
|
||||
g_FontTitle, /* Title Text */
|
||||
WS_OVERLAPPEDWINDOW, /* default window */
|
||||
CW_USEDEFAULT, /* Windows decides the position */
|
||||
CW_USEDEFAULT, /* where the window ends up on the screen */
|
||||
544, /* The programs width */
|
||||
375, /* and height in pixels */
|
||||
HWND_DESKTOP, /* The window is a child-window to desktop */
|
||||
NULL, /* No menu */
|
||||
hThisInstance, /* Program Instance handler */
|
||||
NULL /* No Window Creation data */
|
||||
);
|
||||
ShowWindow(hMainWnd, nCmdShow);
|
||||
|
||||
/* Main message loop */
|
||||
while (GetMessage (&msg, NULL, 0, 0))
|
||||
{
|
||||
if (IsDialogMessage(hMainWnd, &msg))
|
||||
continue;
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
/* Main message loop */
|
||||
while (GetMessage (&msg, NULL, 0, 0))
|
||||
{
|
||||
if (IsDialogMessage(hMainWnd, &msg))
|
||||
continue;
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
|
||||
RemoveFontResourceW(argv[1]);
|
||||
RemoveFontResourceW(argv[1]);
|
||||
|
||||
return (int)msg.wParam;
|
||||
return (int)msg.wParam;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnCreate(HWND hwnd)
|
||||
{
|
||||
WCHAR szQuit[MAX_BUTTONNAME];
|
||||
WCHAR szPrint[MAX_BUTTONNAME];
|
||||
WCHAR szString[MAX_STRING];
|
||||
WCHAR szPrevious[MAX_STRING];
|
||||
WCHAR szNext[MAX_STRING];
|
||||
HWND hDisplay, hButtonInstall, hButtonPrint, hButtonPrev, hButtonNext;
|
||||
WCHAR szQuit[MAX_BUTTONNAME];
|
||||
WCHAR szPrint[MAX_BUTTONNAME];
|
||||
WCHAR szString[MAX_STRING];
|
||||
WCHAR szPrevious[MAX_STRING];
|
||||
WCHAR szNext[MAX_STRING];
|
||||
HWND hDisplay, hButtonInstall, hButtonPrint, hButtonPrev, hButtonNext;
|
||||
|
||||
/* create the display window */
|
||||
hDisplay = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
g_szFontDisplayClassName, /* Classname */
|
||||
L"", /* Title text */
|
||||
WS_CHILD | WS_VSCROLL, /* Window style */
|
||||
0, /* X-pos */
|
||||
HEADER_SIZE, /* Y-Pos */
|
||||
550, /* Width */
|
||||
370-HEADER_SIZE, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_DISPLAY, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
/* create the display window */
|
||||
hDisplay = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
g_szFontDisplayClassName, /* Classname */
|
||||
L"", /* Title text */
|
||||
WS_CHILD | WS_VSCROLL, /* Window style */
|
||||
0, /* X-pos */
|
||||
HEADER_SIZE, /* Y-Pos */
|
||||
550, /* Width */
|
||||
370-HEADER_SIZE, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_DISPLAY, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
|
||||
LoadStringW(g_hInstance, IDS_STRING, szString, MAX_STRING);
|
||||
SendMessage(hDisplay, FVM_SETSTRING, 0, (LPARAM)szString);
|
||||
LoadStringW(g_hInstance, IDS_STRING, szString, MAX_STRING);
|
||||
SendMessage(hDisplay, FVM_SETSTRING, 0, (LPARAM)szString);
|
||||
|
||||
/* Create the install button */
|
||||
LoadStringW(g_hInstance, IDS_INSTALL, szQuit, MAX_BUTTONNAME);
|
||||
hButtonInstall = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szQuit, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
BUTTON_POS_X, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_INSTALL, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonInstall, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
/* Create the install button */
|
||||
LoadStringW(g_hInstance, IDS_INSTALL, szQuit, MAX_BUTTONNAME);
|
||||
hButtonInstall = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szQuit, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
BUTTON_POS_X, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_INSTALL, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonInstall, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
EnableWindow(hButtonInstall, !g_DisableInstall);
|
||||
|
||||
/* Create the print button */
|
||||
LoadStringW(g_hInstance, IDS_PRINT, szPrint, MAX_BUTTONNAME);
|
||||
hButtonPrint = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szPrint, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_PRINT, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonPrint, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
/* Create the print button */
|
||||
LoadStringW(g_hInstance, IDS_PRINT, szPrint, MAX_BUTTONNAME);
|
||||
hButtonPrint = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szPrint, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_PRINT, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonPrint, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
|
||||
/* Create the previous button */
|
||||
LoadStringW(g_hInstance, IDS_PREVIOUS, szPrevious, MAX_BUTTONNAME);
|
||||
hButtonPrev = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szPrevious, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_PREV, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonPrev, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
/* Create the previous button */
|
||||
LoadStringW(g_hInstance, IDS_PREVIOUS, szPrevious, MAX_BUTTONNAME);
|
||||
hButtonPrev = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szPrevious, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_PREV, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonPrev, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
|
||||
/* Create the next button */
|
||||
LoadStringW(g_hInstance, IDS_NEXT, szNext, MAX_BUTTONNAME);
|
||||
hButtonNext = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szNext, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_NEXT, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonNext, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
/* Create the next button */
|
||||
LoadStringW(g_hInstance, IDS_NEXT, szNext, MAX_BUTTONNAME);
|
||||
hButtonNext = CreateWindowExW(
|
||||
0, /* Extended style */
|
||||
L"button", /* Classname */
|
||||
szNext, /* Title text */
|
||||
WS_CHILD | WS_VISIBLE, /* Window style */
|
||||
450, /* X-pos */
|
||||
BUTTON_POS_Y, /* Y-Pos */
|
||||
BUTTON_WIDTH, /* Width */
|
||||
BUTTON_HEIGHT, /* Height */
|
||||
hwnd, /* Parent */
|
||||
(HMENU)IDC_NEXT, /* Identifier */
|
||||
g_hInstance, /* Program Instance handler */
|
||||
NULL /* Window Creation data */
|
||||
);
|
||||
SendMessage(hButtonNext, WM_SETFONT, (WPARAM)GetStockObject(DEFAULT_GUI_FONT), (LPARAM)TRUE);
|
||||
|
||||
EnableWindow(hButtonPrev, FALSE);
|
||||
if (g_NumFonts <= 1)
|
||||
EnableWindow(hButtonNext, FALSE);
|
||||
EnableWindow(hButtonPrev, FALSE);
|
||||
if (g_NumFonts <= 1)
|
||||
EnableWindow(hButtonNext, FALSE);
|
||||
|
||||
/* Init the display window with the font name */
|
||||
g_FontIndex = 0;
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
ShowWindow(hDisplay, SW_SHOWNORMAL);
|
||||
/* Init the display window with the font name */
|
||||
g_FontIndex = 0;
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
ShowWindow(hDisplay, SW_SHOWNORMAL);
|
||||
|
||||
if (g_FontPrint)
|
||||
PostMessage(hwnd, WM_COMMAND, IDC_PRINT, 0);
|
||||
if (g_FontPrint)
|
||||
PostMessage(hwnd, WM_COMMAND, IDC_PRINT, 0);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnSize(HWND hwnd)
|
||||
{
|
||||
RECT rc;
|
||||
HWND hInstall, hPrint, hPrev, hNext, hDisplay;
|
||||
HDWP hDWP;
|
||||
RECT rc;
|
||||
HWND hInstall, hPrint, hPrev, hNext, hDisplay;
|
||||
HDWP hDWP;
|
||||
|
||||
GetClientRect(hwnd, &rc);
|
||||
GetClientRect(hwnd, &rc);
|
||||
|
||||
hDWP = BeginDeferWindowPos(5);
|
||||
hDWP = BeginDeferWindowPos(5);
|
||||
|
||||
hInstall = GetDlgItem(hwnd, IDC_INSTALL);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hInstall, NULL, BUTTON_POS_X, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
hInstall = GetDlgItem(hwnd, IDC_INSTALL);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hInstall, NULL, BUTTON_POS_X, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hPrint = GetDlgItem(hwnd, IDC_PRINT);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hPrint, NULL, BUTTON_POS_X + BUTTON_WIDTH + BUTTON_PADDING, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
hPrint = GetDlgItem(hwnd, IDC_PRINT);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hPrint, NULL, BUTTON_POS_X + BUTTON_WIDTH + BUTTON_PADDING, BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hPrev = GetDlgItem(hwnd, IDC_PREV);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hPrev, NULL, rc.right - (BUTTON_WIDTH * 2 + BUTTON_PADDING + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
hPrev = GetDlgItem(hwnd, IDC_PREV);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hPrev, NULL, rc.right - (BUTTON_WIDTH * 2 + BUTTON_PADDING + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hNext = GetDlgItem(hwnd, IDC_NEXT);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hNext, NULL, rc.right - (BUTTON_WIDTH + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
hNext = GetDlgItem(hwnd, IDC_NEXT);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hNext, NULL, rc.right - (BUTTON_WIDTH + BUTTON_POS_X), BUTTON_POS_Y, BUTTON_WIDTH, BUTTON_HEIGHT, SWP_NOZORDER);
|
||||
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hDisplay, NULL, 0, HEADER_SIZE, rc.right, rc.bottom - HEADER_SIZE, SWP_NOZORDER);
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
if (hDWP)
|
||||
hDWP = DeferWindowPos(hDWP, hDisplay, NULL, 0, HEADER_SIZE, rc.right, rc.bottom - HEADER_SIZE, SWP_NOZORDER);
|
||||
|
||||
EndDeferWindowPos(hDWP);
|
||||
EndDeferWindowPos(hDWP);
|
||||
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
InvalidateRect(hwnd, NULL, TRUE);
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnPaint(HWND hwnd)
|
||||
{
|
||||
HDC hDC;
|
||||
PAINTSTRUCT ps;
|
||||
RECT rc;
|
||||
HDC hDC;
|
||||
PAINTSTRUCT ps;
|
||||
RECT rc;
|
||||
|
||||
hDC = BeginPaint(hwnd, &ps);
|
||||
GetClientRect(hwnd, &rc);
|
||||
rc.top = HEADER_SIZE - 2;
|
||||
rc.bottom = HEADER_SIZE;
|
||||
FillRect(hDC, &rc, GetStockObject(GRAY_BRUSH));
|
||||
EndPaint(hwnd, &ps);
|
||||
return 0;
|
||||
hDC = BeginPaint(hwnd, &ps);
|
||||
GetClientRect(hwnd, &rc);
|
||||
rc.top = HEADER_SIZE - 2;
|
||||
rc.bottom = HEADER_SIZE;
|
||||
FillRect(hDC, &rc, GetStockObject(GRAY_BRUSH));
|
||||
EndPaint(hwnd, &ps);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
@@ -466,7 +477,6 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
HKEY hKey;
|
||||
|
||||
SendDlgItemMessage(hwnd, IDC_DISPLAY, FVM_GETFULLNAME, 64, (LPARAM)szFullName);
|
||||
// MessageBoxW(hwnd, szFullName, L"Debug", MB_OK);
|
||||
|
||||
/* First, we have to find out if the font still exists */
|
||||
if (GetFileAttributes(g_fileName) == INVALID_FILE_ATTRIBUTES)
|
||||
@@ -483,21 +493,17 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
wcscat(szDestPath, L"\\Fonts\\");
|
||||
wcscat(szDestPath, pszFileName);
|
||||
|
||||
/* Debug Message */
|
||||
// MessageBoxW(hwnd, szDestPath, L"szDestPath", MB_OK);
|
||||
// MessageBoxW(hwnd, pszFileName, L"pszFileExt", MB_OK);
|
||||
|
||||
/* Check if the file already exists */
|
||||
if (GetFileAttributesW(szDestPath) != INVALID_FILE_ATTRIBUTES)
|
||||
{
|
||||
MessageBoxW(hwnd, L"This font is already installed!", L"Already Installed", MB_OK);
|
||||
ErrorMsgBox(hwnd, IDS_ERROR_ISINSTALLED);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Copy the font file */
|
||||
if (!CopyFileW(g_fileName, szDestPath, TRUE))
|
||||
{
|
||||
MessageBoxW(hwnd,L"Failed to copy the font file!", L"File Error", MB_OK);
|
||||
ErrorMsgBox(hwnd, IDS_ERROR_FONTCPY);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -509,7 +515,7 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
&hKey);
|
||||
if (res != ERROR_SUCCESS)
|
||||
{
|
||||
MessageBoxW(hwnd, L"Failed top open the fonts key!", L"Debug1", MB_OK);
|
||||
ErrorMsgBox(hwnd, IDS_ERROR_OPENKEY);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@@ -519,10 +525,10 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
0,
|
||||
REG_SZ,
|
||||
(LPBYTE)pszFileName,
|
||||
(wcslen(pszFileName) + 1) * sizeof(WCHAR));
|
||||
(DWORD)(wcslen(pszFileName) + 1) * sizeof(WCHAR));
|
||||
if (res != ERROR_SUCCESS)
|
||||
{
|
||||
MessageBoxW(hwnd, L"Failed to register the new font!", L"Debug2", MB_OK);
|
||||
ErrorMsgBox(hwnd, IDS_ERROR_REGISTER);
|
||||
RegCloseKey(hKey);
|
||||
return -1;
|
||||
}
|
||||
@@ -534,7 +540,7 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
SendMessageW(HWND_BROADCAST, WM_FONTCHANGE, 0, 0);
|
||||
|
||||
/* if all of this goes correctly, message the user about success */
|
||||
MessageBoxW(hwnd, L"Font Installation Completed.", L"Success", MB_OK);
|
||||
SuccessMsgBox(hwnd, IDS_COMPLETED);
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -542,37 +548,37 @@ MainWnd_OnInstall(HWND hwnd)
|
||||
static LRESULT
|
||||
MainWnd_OnPrev(HWND hwnd)
|
||||
{
|
||||
HWND hDisplay;
|
||||
if (g_FontIndex > 0)
|
||||
{
|
||||
--g_FontIndex;
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), TRUE);
|
||||
if (g_FontIndex == 0)
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_PREV), FALSE);
|
||||
HWND hDisplay;
|
||||
if (g_FontIndex > 0)
|
||||
{
|
||||
--g_FontIndex;
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), TRUE);
|
||||
if (g_FontIndex == 0)
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_PREV), FALSE);
|
||||
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
InvalidateRect(hDisplay, NULL, TRUE);
|
||||
}
|
||||
return 0;
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
InvalidateRect(hDisplay, NULL, TRUE);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static LRESULT
|
||||
MainWnd_OnNext(HWND hwnd)
|
||||
{
|
||||
HWND hDisplay;
|
||||
if (g_FontIndex + 1 < g_NumFonts)
|
||||
{
|
||||
++g_FontIndex;
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_PREV), TRUE);
|
||||
if (g_FontIndex == g_NumFonts - 1)
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), FALSE);
|
||||
HWND hDisplay;
|
||||
if (g_FontIndex + 1 < g_NumFonts)
|
||||
{
|
||||
++g_FontIndex;
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_PREV), TRUE);
|
||||
if (g_FontIndex == g_NumFonts - 1)
|
||||
EnableWindow(GetDlgItem(hwnd, IDC_NEXT), FALSE);
|
||||
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
InvalidateRect(hDisplay, NULL, TRUE);
|
||||
}
|
||||
return 0;
|
||||
hDisplay = GetDlgItem(hwnd, IDC_DISPLAY);
|
||||
SendMessage(hDisplay, FVM_SETTYPEFACE, 0, (LPARAM)&g_LogFonts[g_FontIndex]);
|
||||
InvalidateRect(hDisplay, NULL, TRUE);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CALLBACK
|
||||
@@ -580,41 +586,39 @@ MainWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (message)
|
||||
{
|
||||
case WM_CREATE:
|
||||
return MainWnd_OnCreate(hwnd);
|
||||
case WM_CREATE:
|
||||
return MainWnd_OnCreate(hwnd);
|
||||
|
||||
case WM_PAINT:
|
||||
return MainWnd_OnPaint(hwnd);
|
||||
case WM_PAINT:
|
||||
return MainWnd_OnPaint(hwnd);
|
||||
|
||||
case WM_SIZE:
|
||||
return MainWnd_OnSize(hwnd);
|
||||
case WM_SIZE:
|
||||
return MainWnd_OnSize(hwnd);
|
||||
|
||||
case WM_COMMAND:
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_INSTALL:
|
||||
return MainWnd_OnInstall(hwnd);
|
||||
case WM_COMMAND:
|
||||
switch(LOWORD(wParam))
|
||||
{
|
||||
case IDC_INSTALL:
|
||||
return MainWnd_OnInstall(hwnd);
|
||||
|
||||
case IDC_PRINT:
|
||||
return Display_OnPrint(hwnd);
|
||||
case IDC_PRINT:
|
||||
return Display_OnPrint(hwnd);
|
||||
|
||||
case IDC_PREV:
|
||||
return MainWnd_OnPrev(hwnd);
|
||||
case IDC_PREV:
|
||||
return MainWnd_OnPrev(hwnd);
|
||||
|
||||
case IDC_NEXT:
|
||||
return MainWnd_OnNext(hwnd);
|
||||
}
|
||||
break;
|
||||
case IDC_NEXT:
|
||||
return MainWnd_OnNext(hwnd);
|
||||
}
|
||||
break;
|
||||
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
|
||||
break;
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage (0); /* send a WM_QUIT to the message queue */
|
||||
break;
|
||||
|
||||
default: /* for messages that we don't deal with */
|
||||
return DefWindowProcW(hwnd, message, wParam, lParam);
|
||||
}
|
||||
default: /* for messages that we don't deal with */
|
||||
return DefWindowProcW(hwnd, message, wParam, lParam);
|
||||
}
|
||||
|
||||
return 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* EOF */
|
||||
|
@@ -48,6 +48,9 @@ END
|
||||
#ifdef LANGUAGE_IT_IT
|
||||
#include "lang/it-IT.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_JA_JP
|
||||
#include "lang/ja-JP.rc"
|
||||
#endif
|
||||
#ifdef LANGUAGE_LT_LT
|
||||
#include "lang/lt-LT.rc"
|
||||
#endif
|
||||
|
@@ -1,3 +1,10 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Bulgarian resource file
|
||||
* TRANSLATOR: Copyright 2008 S. Stanev (CCTAHEB) <sstpr@narod.ru>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
@@ -10,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Няма достатъчно място за завършване на действието."
|
||||
IDS_ERROR_NOFONT "%1 не е редовен шрифтов файл."
|
||||
IDS_ERROR_NOCLASS "Неуспешно изпълнение на класа на прозореца."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,3 +1,10 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Czech resource file
|
||||
* TRANSLATOR: Copyright 2014-2017 Kamil Hornicek <kamil.hornicek@reactos.org>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
@@ -10,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "K dokončení operace není dostatek paměti."
|
||||
IDS_ERROR_NOFONT "Soubor %1 není platným souborem písma."
|
||||
IDS_ERROR_NOCLASS "Inicializace okna aplikace selhala."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Podporované soubory písem (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Písmo Font (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Písmo TrueType (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,3 +1,12 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: German resource file
|
||||
* TRANSLATORS: Copyright 2007 Timo Kreuzer <timo.kreuzer@reactos.org>
|
||||
* Copyright 2010 Sven Knurr (tux.) <forenkrams@tuxproject.de>
|
||||
* Copyright 2023 Hilmar Preuße <hille42@web.de>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
@@ -10,13 +19,19 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Es steht nicht genügend Speicher zur Verfügung."
|
||||
IDS_ERROR_NOFONT "Die angegebene Datei %1 ist keine gültige Schriftartendatei."
|
||||
IDS_ERROR_NOCLASS "Fehler beim Initialisieren der Fensterklasse."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
IDS_ERROR_ISINSTALLED "Die Schriftart ist schon installiert!"
|
||||
IDS_ERROR_FONTCPY "Kopieren der Schriftartdatei fehlgeschlagen!"
|
||||
IDS_ERROR_OPENKEY "Öffnen des Schriftart Keys fehlgeschlagen!"
|
||||
IDS_ERROR_REGISTER "Registrierung der neuen Schriftart fehlgeschlagen!"
|
||||
IDS_SUCCESS "Erfolg"
|
||||
IDS_COMPLETED "Installation der Schriftarten vollständig."
|
||||
IDS_FILTER_LIST "Alle unterstützten Schriftarten (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
TrueType Font Collection (*.ttc)\0*.ttc\0\
|
||||
OpenType Font (*.otf)\0*.otf\0\
|
||||
OpenType Font Collection (*.otc)\0*.otc\0\
|
||||
All Files (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< P&revious"
|
||||
IDS_NEXT "&Next >"
|
||||
TrueType Schriftart (*.ttf)\0*.ttf\0\
|
||||
TrueType Schriftart Sammlung (*.ttc)\0*.ttc\0\
|
||||
OpenType Schriftart (*.otf)\0*.otf\0\
|
||||
OpenType Schriftart Sammlung (*.otc)\0*.otc\0\
|
||||
Alle Dateien (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< V&orheriges"
|
||||
IDS_NEXT "&Nächstes >"
|
||||
END
|
||||
|
@@ -1,3 +1,10 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: English (United States) resource file
|
||||
* TRANSLATOR: Copyright 2007 Timo Kreuzer <timo.kreuzer@reactos.org>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
|
||||
STRINGTABLE
|
||||
@@ -10,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "There is not enough memory to complete the operation."
|
||||
IDS_ERROR_NOFONT "The file %1 is not a valid font file."
|
||||
IDS_ERROR_NOCLASS "Could not initialize window class."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,4 +1,10 @@
|
||||
/* Spanish language file by Javier Remacha <2007-09-21> and Ismael Ferreras Morezuelas <2014-11-07> */
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Spanish resource file
|
||||
* TRANSLATORS: Copyright 2007 Javier Remacha <remialdo@gmail.com>
|
||||
* Copyright 2014 Ismael Ferreras Morezuelas <swyterzone+ros@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||
|
||||
@@ -12,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "No hay memoria suficiente para completar la operación."
|
||||
IDS_ERROR_NOFONT "El archivo %1 no es un archivo de fuente válido."
|
||||
IDS_ERROR_NOCLASS "No es posible iniciar la clase de ventana."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Todas las tipografías (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Tipografía de mapa de bits (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Tipografía TrueType (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,3 +1,11 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: French resource file
|
||||
* TRANSLATORS: Copyright 2007 Pierre Schweitzer <pierre@reactos.org>
|
||||
* Copyright 2012-2017 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_FRENCH, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
@@ -10,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Mémoire insuffisante pour terminer l'opération."
|
||||
IDS_ERROR_NOFONT "Le fichier %1 n'est pas un fichier de polices valide."
|
||||
IDS_ERROR_NOCLASS "Impossible d'initialiser la classe de fenêtre."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Toutes polices supportées (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Fichier de polices (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Fichier de polices TrueType (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,4 +1,9 @@
|
||||
/* Translated by Baruch Rutman */
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Hebrew (Israel) resource file
|
||||
* TRANSLATOR: Copyright 2013-2018 Baruch Rutman <peterooch@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
|
||||
|
||||
@@ -12,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "אין מספיק זיכרון כדי להשלים את הפעולה."
|
||||
IDS_ERROR_NOFONT "הקובץ %1 אינו קובץ גופנים חוקי."
|
||||
IDS_ERROR_NOCLASS "Could not initialize window class."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,3 +1,10 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Indonesian resource file
|
||||
* TRANSLATOR: Copyright 2019 Mas Ahmad Muhammad <m.charly81@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
@@ -10,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Memori tidak cukup untuk menyelesaikan operasi."
|
||||
IDS_ERROR_NOFONT "Berkas %1 bukan berkas fon yang valid."
|
||||
IDS_ERROR_NOCLASS "Tidak bisa memulai window class."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Semua fon yang didukung (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Berkas Fon (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Fon (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,3 +1,10 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Italian resource file
|
||||
* TRANSLATOR: Copyright 2013 Ivan Di Francesco (oswetto) <ivan.difrancesco@yahoo.it>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ITALIAN, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
@@ -10,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Memoria insufficiente per completare l'operazione."
|
||||
IDS_ERROR_NOFONT "Il file% 1 non è un file di origine valido."
|
||||
IDS_ERROR_NOCLASS "Impossibile avviare la classe."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Tutti i font supportati (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Font TrueType (*.ttf)\0*.ttf\0\
|
||||
|
35
base/applications/fontview/lang/ja-JP.rc
Normal file
35
base/applications/fontview/lang/ja-JP.rc
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Japanese resource file
|
||||
* TRANSLATORS: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "インストール(&I)"
|
||||
IDS_PRINT "印刷(&P)"
|
||||
IDS_STRING "ReactOS は万人に開かれたコンピュータのシステムです。1234567890"
|
||||
IDS_OPEN "フォントを開く..."
|
||||
IDS_ERROR "エラー"
|
||||
IDS_ERROR_NOMEM "処理の完了に充分なメモリーがありません。"
|
||||
IDS_ERROR_NOFONT "ファイル %1 は有効なフォントファイルではありません。"
|
||||
IDS_ERROR_NOCLASS "ウィンドウ クラスを初期化できません。"
|
||||
IDS_ERROR_ISINSTALLED "このフォントはインストール済みです!"
|
||||
IDS_ERROR_FONTCPY "フォントファイルのコピーに失敗しました!"
|
||||
IDS_ERROR_OPENKEY "フォントキーを開くのに失敗しました!"
|
||||
IDS_ERROR_REGISTER "新しいフォントの登録に失敗しました!"
|
||||
IDS_SUCCESS "成功"
|
||||
IDS_COMPLETED "フォントのインストールが完了しました。"
|
||||
IDS_FILTER_LIST "すべてのサポート済みフォント (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
フォントファイル (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType フォント (*.ttf)\0*.ttf\0\
|
||||
TrueType フォント コレクション (*.ttc)\0*.ttc\0\
|
||||
OpenType フォント (*.otf)\0*.otf\0\
|
||||
OpenType フォント コレクション (*.otc)\0*.otc\0\
|
||||
すべてのファイル (*.*)\0*.*\0"
|
||||
IDS_PREVIOUS "< 戻る(&R)"
|
||||
IDS_NEXT "次へ(&N) >"
|
||||
END
|
@@ -1,4 +1,9 @@
|
||||
/* Translation by Vytis "CMan" Girdžijauskas (cman@cman.us) */
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Lithuanian resource file
|
||||
* TRANSLATOR: Copyright 2008 Vytis Girdžijauskas (CMan) <cman@cman.us>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_LITHUANIAN, SUBLANG_DEFAULT
|
||||
|
||||
@@ -12,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Užduočiai užbaigti, nepakanka atminties."
|
||||
IDS_ERROR_NOFONT "%1 nėra teisinga šrifto byla."
|
||||
IDS_ERROR_NOCLASS "Nepavyko inicijuoti lango klasės."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,4 +1,9 @@
|
||||
/* Malay translation by Henry Tang Ih 2016 (henrytang2@hotmail.com) */
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Malay resource file
|
||||
* TRANSLATOR: Copyright 2015 Henry Tang Ih <henrytang2@hotmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_MALAY, SUBLANG_DEFAULT
|
||||
|
||||
@@ -12,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Terdapat tidak cukup ingatan untuk melengkapkan operasi ini."
|
||||
IDS_ERROR_NOFONT "Fail %1 bukanlah fail fon yang sah."
|
||||
IDS_ERROR_NOCLASS "Tidak dapat mengawalkan kelas tetingkap."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Semuanya disokong fon (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,3 +1,10 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Norwegian resource file
|
||||
* TRANSLATOR: Copyright 2008 Lars Martin Hambro (LMH1) <lars_martin4@hotmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
|
||||
|
||||
STRINGTABLE
|
||||
@@ -10,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Det er ikke nok minne for å fullføre oppgaven."
|
||||
IDS_ERROR_NOFONT "Filen %1 er ikke et gyldig skriftfil."
|
||||
IDS_ERROR_NOCLASS "Kunne ikke initialise vindu klassen."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,23 +1,30 @@
|
||||
/*
|
||||
* Translated by Caemyr - Olaf Siejka (Feb, 2008; Jul, 2012)
|
||||
* Use ReactOS forum PM or IRC to contact me
|
||||
* https://reactos.org
|
||||
* IRC: irc.freenode.net #reactos-pl;
|
||||
* UTF-8 conversion by Caemyr (May, 2011)
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Polish resource file
|
||||
* TRANSLATORS: Copyright 2008-2012 Olaf Siejka <caemyr@gmail.com>
|
||||
* Copyright 2017-2018 Adam Słaboń <asaillen456esx@gmail.com>
|
||||
* Copyright 2023 Piotr Hetnarowicz <piotrhwz@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "&Instaluj"
|
||||
IDS_PRINT "&Drukuj"
|
||||
IDS_INSTALL "Za&instaluj"
|
||||
IDS_PRINT "Dr&ukuj"
|
||||
IDS_STRING "Zażółć gęślą Jaźń żółwiątkiem. 1234567890. !@#$%^&*()_+=-/?"
|
||||
IDS_OPEN "Otwórz czcionkę..."
|
||||
IDS_ERROR "Błąd"
|
||||
IDS_ERROR_NOMEM "Brakuje pamięci do ukończenia tej operacji."
|
||||
IDS_ERROR_NOMEM "Za mało pamięci do ukończenia tej operacji."
|
||||
IDS_ERROR_NOFONT "Plik %1 nie jest poprawnym plikiem czcionki."
|
||||
IDS_ERROR_NOCLASS "Nie udało się zainicjować klasy window."
|
||||
IDS_ERROR_ISINSTALLED "Ta czcionka jest już zainstalowana!"
|
||||
IDS_ERROR_FONTCPY "Nie można skopiować pliku czcionki!"
|
||||
IDS_ERROR_OPENKEY "Nie można otworzyć klucza rejestru czcionek!"
|
||||
IDS_ERROR_REGISTER "Nie można zarejestrować nowej czcionki!"
|
||||
IDS_SUCCESS "Sukces"
|
||||
IDS_COMPLETED "Instalacja czcionki zakończona."
|
||||
IDS_FILTER_LIST "Wszystkie obsługiwane czcionki (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Plik czcionki (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Czcionka TrueType (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,4 +1,9 @@
|
||||
/* Translation and UTF-8 Conversion by mkbu95 <mkbu95@gmail.com> (August, 2011) */
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Portuguese (Brazilian) resource file
|
||||
* TRANSLATOR: Copyright 2011 Matheus Macabu <mkbu95@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL
|
||||
|
||||
@@ -12,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Não há memória suficiente para completar a operação."
|
||||
IDS_ERROR_NOFONT "O arquivo %1 não é um arquivo de fonte válida."
|
||||
IDS_ERROR_NOCLASS "Não foi possível inicializar a janela."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,4 +1,11 @@
|
||||
/* Translator: Ștefan Fulea (stefan dot fulea at mail dot com) */
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2009 Petru Dimitriu <petrimetri@gmail.com>
|
||||
* Copyright 2011-2018 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
@@ -6,12 +13,18 @@ STRINGTABLE
|
||||
BEGIN
|
||||
IDS_INSTALL "Inst&alează"
|
||||
IDS_PRINT "I&mprimă"
|
||||
IDS_STRING "Turubinele eoliene generează câțiva MJ (câțiva kW•h) în exces, acoperind și necesarul familiei. QY 1234567890"
|
||||
IDS_STRING "Turbinele eoliene generează câțiva MJ (câțiva kW•h) în exces, acoperind și necesarul familiei. QY 1234567890"
|
||||
IDS_OPEN "Deschidere font…"
|
||||
IDS_ERROR "Eroare"
|
||||
IDS_ERROR_NOMEM "Nu e destulă memorie pentru a încheia operația."
|
||||
IDS_ERROR_NOFONT "Fișierul «%1» este un fișier font deteriorat."
|
||||
IDS_ERROR_NOCLASS "Clasa de ferestre nu a putut fi inițializată."
|
||||
IDS_ERROR_ISINSTALLED "Acest font este deja instalat!"
|
||||
IDS_ERROR_FONTCPY "Nu a putut fi copiat acest fișier de font!"
|
||||
IDS_ERROR_OPENKEY "Nu a putut fi deschisă această cheie de regiștrii a fonturilor!"
|
||||
IDS_ERROR_REGISTER "Nu a putut fi înregistrat noul font!"
|
||||
IDS_SUCCESS "Succes"
|
||||
IDS_COMPLETED "Instalarea fontului completă."
|
||||
IDS_FILTER_LIST "Toate fonturile recunoscute (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Fișiere de tip Font (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
Fonturi de tip TrueType (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,4 +1,10 @@
|
||||
/* Russian language resource file (Dmitry Chapyshev, 2007-06-21) */
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Russian resource file
|
||||
* TRANSLATORS: Copyright 2007 Dmitry Chapyshev <dmitry@reactos.org>
|
||||
* Copyright 2014-2015 Kudratov Olimjon <olim98@bk.ru>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||
|
||||
@@ -12,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Недостаточно памяти для выполнения операции."
|
||||
IDS_ERROR_NOFONT "%1 не является корректным файлом шрифта."
|
||||
IDS_ERROR_NOCLASS "Невозможно инициализировать класс окна."
|
||||
IDS_ERROR_ISINSTALLED "Этот шрифт уже установлен!"
|
||||
IDS_ERROR_FONTCPY "Не удалось скопировать файл шрифта!"
|
||||
IDS_ERROR_OPENKEY "Не удалось открыть ключ реестра для шрифтов!"
|
||||
IDS_ERROR_REGISTER "Не удалось зарегистрировать новый шрифт!"
|
||||
IDS_SUCCESS "Успех"
|
||||
IDS_COMPLETED "Установка шрифта завершена."
|
||||
IDS_FILTER_LIST "Все поддерживаемые шрифты (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Файлы шрифтов (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType шрифты (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,6 +1,8 @@
|
||||
/* TRANSLATOR: Mário Kačmár /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||
* DATE OF TR: 31-07-2007
|
||||
* UPDATED : 21-07-2012
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Slovak resource file
|
||||
* TRANSLATOR: Copyright 2007-2012 Mário Kačmár <kario@szm.sk>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
|
||||
@@ -15,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Na vykonanie tejto operácie nie je dostatok voľnej pamäte."
|
||||
IDS_ERROR_NOFONT "Požadovaný súbor %1 nie je platným súborom písiem."
|
||||
IDS_ERROR_NOCLASS "Nepodarilo sa inicializovať triedu window."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,6 +1,9 @@
|
||||
/* TRANSLATOR : Ardit Dani (Ard1t) (ardit.dani@gmail.com)
|
||||
* DATE OF TR: 29-11-2013
|
||||
*/
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Albanian resource file
|
||||
* TRANSLATOR: Copyright 2013 Ardit Dani <ardit.dani@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
@@ -14,6 +17,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Nuk ka memorie të mjaftueshme për të përfunduar operacionin."
|
||||
IDS_ERROR_NOFONT "Dokumenti %1 nuk është një font i vlefshem."
|
||||
IDS_ERROR_NOCLASS "Nuk mund të fillojë dritaren e klases."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,8 +1,9 @@
|
||||
/*
|
||||
* PROJECT: ReactOS FontView
|
||||
* FILE: base/applications/fontview/lang/sv-SE.rc
|
||||
* PURPOSE: Swedish resource file
|
||||
* TRANSLATOR: Jaix Bly
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Swedish resource file
|
||||
* TRANSLATORS: Copyright 2011 Jan Blomqvist Kinander (Jaix Bly) <jaixbly@spray.se>
|
||||
* Copyright 2017 Markus Gothe <nietzsche@lysator.liu.se>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
|
||||
@@ -17,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Det er inte nog minne för att slutföre operationen."
|
||||
IDS_ERROR_NOFONT "Filen %1 är inte en giltig typsnittsfil."
|
||||
IDS_ERROR_NOCLASS "Kunde inte initialisera Windows klassen."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -18,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Bu işlemi bitirmek için yeterli bellek yok."
|
||||
IDS_ERROR_NOFONT "%1 dosyası, geçerli bir yazı tipi dosyası değil."
|
||||
IDS_ERROR_NOCLASS "Pencere sınıfı başlatılamadı."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "Tüm Desteklenen Yazı Tipleri (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Yazı Tipi Dosyası (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Yazı Tipi (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: base/applications/fontview/lang/uk-UA.rc
|
||||
* PURPOSE: Ukraianian Language File for fontview
|
||||
* TRANSLATOR: Artem Reznikov
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Ukrainian resource file
|
||||
* TRANSLATORS: Copyright 2007 Artem Reznikov <temarez@yandex.ru>
|
||||
* Copyright 2011 Igor Paliychuk <mansonigor@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
@@ -18,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "Недостатньо пам'яті для завершення операції."
|
||||
IDS_ERROR_NOFONT "Файл %1 не є коректним файлом шрифту."
|
||||
IDS_ERROR_NOCLASS "Неможливо ініціалізувати віконний клас."
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "All Supported Fonts (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
Font File (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType Font (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,11 +1,10 @@
|
||||
/*
|
||||
* PROJECT: ReactOS FontView
|
||||
* LICENSE: GPL - See COPYING in the top level directory
|
||||
* FILE: base/applications/fontview/lang/zh-CN.rc
|
||||
* PURPOSE: Chinese (Simplified) Language File for FontView
|
||||
* TRANSLATOR: Elton Chung aka MfldElton <elton328@gmail.com>
|
||||
* Li Keqing <auroracloud4096@gmail.com>
|
||||
* Luke Luo <njlyf2011@hotmail.com>
|
||||
* PROJECT: ReactOS Font Viewer
|
||||
* LICENSE: GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later)
|
||||
* PURPOSE: Chinese (Simplified) resource file
|
||||
* TRANSLATORS: Copyright 2009 Elton Chung aka MfldElton <elton328@gmail.com>
|
||||
* Copyright 2017 Li Keqing <auroracloud4096@gmail.com>
|
||||
* Copyright 2018-2022 Luke Luo <njlyf2011@hotmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
|
||||
@@ -20,6 +19,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "没有足够的内存来完成操作。"
|
||||
IDS_ERROR_NOFONT "%1不是一个有效的字体文件。"
|
||||
IDS_ERROR_NOCLASS "无法初始化窗口。"
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "所有支持的字体 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
字体文件 (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType 字体 (*.ttf)\0*.ttf\0\
|
||||
|
@@ -18,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "沒有足夠的記憶體來完成操作。"
|
||||
IDS_ERROR_NOFONT "%1 不是一個有效的字型檔案。"
|
||||
IDS_ERROR_NOCLASS "無法初始化視窗。"
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "所有支援的字型 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
字型檔案 (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType 字型 (*.ttf)\0*.ttf\0\
|
||||
|
@@ -18,6 +18,12 @@ BEGIN
|
||||
IDS_ERROR_NOMEM "沒有足夠的記憶體來完成操作。"
|
||||
IDS_ERROR_NOFONT "%1 不是一個有效的字型檔案。"
|
||||
IDS_ERROR_NOCLASS "無法初始化視窗。"
|
||||
IDS_ERROR_ISINSTALLED "This font is already installed!"
|
||||
IDS_ERROR_FONTCPY "Failed to copy the font file!"
|
||||
IDS_ERROR_OPENKEY "Failed to open the fonts registry key!"
|
||||
IDS_ERROR_REGISTER "Failed to register the new font!"
|
||||
IDS_SUCCESS "Success"
|
||||
IDS_COMPLETED "Font installation completed."
|
||||
IDS_FILTER_LIST "所有支援的字型 (*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc)\0*.fon;*.fnt;*.ttf;*.ttc;*.otf;*.otc\0\
|
||||
字型檔案 (*.fon;*.fnt)\0*.fon;*.fnt\0\
|
||||
TrueType 字型 (*.ttf)\0*.ttf\0\
|
||||
|
@@ -1,10 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#define IDS_ERROR 100
|
||||
#define IDS_ERROR_NOMEM 101
|
||||
#define IDS_ERROR_NOFONT 102
|
||||
#define IDS_ERROR_NOCLASS 103
|
||||
#define IDS_FILTER_LIST 104
|
||||
#define IDS_ERROR 100
|
||||
#define IDS_ERROR_NOMEM 101
|
||||
#define IDS_ERROR_NOFONT 102
|
||||
#define IDS_ERROR_NOCLASS 103
|
||||
#define IDS_ERROR_ISINSTALLED 104
|
||||
#define IDS_ERROR_FONTCPY 105
|
||||
#define IDS_ERROR_OPENKEY 106
|
||||
#define IDS_ERROR_REGISTER 107
|
||||
#define IDS_SUCCESS 108
|
||||
#define IDS_COMPLETED 109
|
||||
#define IDS_FILTER_LIST 110
|
||||
|
||||
#define IDS_INSTALL 500
|
||||
#define IDS_PRINT 501
|
||||
|
@@ -1,7 +1,8 @@
|
||||
/*
|
||||
* FILE: base/applications/mmc/lang/ro-RO.rc
|
||||
* ReactOS Project (https://reactos.org)
|
||||
* TRANSLATOR: Ștefan Fulea (stefan dot fulea at mail dot com)
|
||||
* FILE: base/applications/mmc/lang/ro-RO.rc
|
||||
* ReactOS Project (https://reactos.org)
|
||||
* TRANSLATORS: Copyright 2011-2018 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
* Copyright 2023 Andrei Miloiu <miloiuandrei@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL
|
||||
@@ -32,9 +33,9 @@ BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "I&eșire\tAlt+F4", IDM_FILE_EXIT
|
||||
END
|
||||
POPUP "&Windows"
|
||||
POPUP "&Ferestre"
|
||||
BEGIN
|
||||
MENUITEM "List", IDM_WINDOWS_LIST
|
||||
MENUITEM "Listă", IDM_WINDOWS_LIST
|
||||
END
|
||||
POPUP "Aj&utor"
|
||||
BEGIN
|
||||
|
@@ -34,11 +34,17 @@ GetTextFromListView(PMAIN_WND_INFO Info,
|
||||
|
||||
static BOOL
|
||||
SaveServicesToFile(PMAIN_WND_INFO Info,
|
||||
LPCWSTR pszFileName)
|
||||
LPCWSTR pszFileName,
|
||||
DWORD nFormat)
|
||||
{
|
||||
HANDLE hFile;
|
||||
BOOL bSuccess = FALSE;
|
||||
|
||||
if (!nFormat || nFormat > 2)
|
||||
{
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
hFile = CreateFileW(pszFileName,
|
||||
GENERIC_WRITE,
|
||||
0,
|
||||
@@ -51,7 +57,7 @@ SaveServicesToFile(PMAIN_WND_INFO Info,
|
||||
{
|
||||
WCHAR LVText[500];
|
||||
WCHAR newl[2] = {L'\r', L'\n'};
|
||||
WCHAR tab = L'\t';
|
||||
WCHAR seps[2] = {L'\t', L','};
|
||||
DWORD dwTextLength, dwWritten;
|
||||
INT NumListedServ = 0;
|
||||
INT i, k;
|
||||
@@ -60,7 +66,7 @@ SaveServicesToFile(PMAIN_WND_INFO Info,
|
||||
|
||||
for (i=0; i < NumListedServ; i++)
|
||||
{
|
||||
for (k=0; k<5; k++)
|
||||
for (k=0; k < LVMAX; k++)
|
||||
{
|
||||
dwTextLength = GetTextFromListView(Info,
|
||||
LVText,
|
||||
@@ -73,9 +79,13 @@ SaveServicesToFile(PMAIN_WND_INFO Info,
|
||||
sizeof(WCHAR) * dwTextLength,
|
||||
&dwWritten,
|
||||
NULL);
|
||||
}
|
||||
|
||||
if (k < LVMAX - 1)
|
||||
{
|
||||
/* Do not add separator after the last table cell */
|
||||
WriteFile(hFile,
|
||||
&tab,
|
||||
&seps[nFormat-1],
|
||||
sizeof(WCHAR),
|
||||
&dwWritten,
|
||||
NULL);
|
||||
@@ -113,7 +123,7 @@ VOID ExportFile(PMAIN_WND_INFO Info)
|
||||
|
||||
if(GetSaveFileName(&ofn))
|
||||
{
|
||||
if (SaveServicesToFile(Info, szFileName))
|
||||
if (SaveServicesToFile(Info, szFileName, ofn.nFilterIndex))
|
||||
return;
|
||||
}
|
||||
|
||||
|
@@ -31,6 +31,7 @@
|
||||
#define LVSTATUS 2
|
||||
#define LVSTARTUP 3
|
||||
#define LVLOGONAS 4
|
||||
#define LVMAX 5
|
||||
|
||||
#define IMAGE_UNKNOWN 0
|
||||
#define IMAGE_SERVICE 1
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Loading/Saving an image file with getting/setting resolution
|
||||
* COPYRIGHT: Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
@@ -94,7 +94,7 @@ public:
|
||||
|
||||
// if the file type is null, get the file type from extension
|
||||
const GUID *FileType = &guidFileType;
|
||||
if (IsGuidEqual(guidFileType, GUID_NULL))
|
||||
if (::IsEqualGUID(guidFileType, GUID_NULL))
|
||||
{
|
||||
LPCWSTR pszExt = GetFileExtension(pszNameW);
|
||||
FileType = FileTypeFromExtension(pszExt);
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/canvas.cpp
|
||||
* PURPOSE: Providing the canvas window class
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Providing the canvas window class
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
@@ -15,10 +14,19 @@ CCanvasWindow canvasWindow;
|
||||
CCanvasWindow::CCanvasWindow()
|
||||
: m_drawing(FALSE)
|
||||
, m_hitSelection(HIT_NONE)
|
||||
, m_whereHit(HIT_NONE)
|
||||
, m_hitCanvasSizeBox(HIT_NONE)
|
||||
, m_ptOrig { -1, -1 }
|
||||
{
|
||||
::SetRectEmpty(&m_rcNew);
|
||||
m_ahbmCached[0] = m_ahbmCached[1] = NULL;
|
||||
::SetRectEmpty(&m_rcResizing);
|
||||
}
|
||||
|
||||
CCanvasWindow::~CCanvasWindow()
|
||||
{
|
||||
if (m_ahbmCached[0])
|
||||
::DeleteObject(m_ahbmCached[0]);
|
||||
if (m_ahbmCached[1])
|
||||
::DeleteObject(m_ahbmCached[1]);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::drawZoomFrame(INT mouseX, INT mouseY)
|
||||
@@ -85,8 +93,10 @@ VOID CCanvasWindow::GetImageRect(RECT& rc)
|
||||
::SetRect(&rc, 0, 0, imageModel.GetWidth(), imageModel.GetHeight());
|
||||
}
|
||||
|
||||
CANVAS_HITTEST CCanvasWindow::CanvasHitTest(POINT pt)
|
||||
HITTEST CCanvasWindow::CanvasHitTest(POINT pt)
|
||||
{
|
||||
if (selectionModel.m_bShow || ::IsWindowVisible(textEditWindow))
|
||||
return HIT_INNER;
|
||||
RECT rcBase = GetBaseRect();
|
||||
return getSizeBoxHitTest(pt, &rcBase);
|
||||
}
|
||||
@@ -94,78 +104,80 @@ CANVAS_HITTEST CCanvasWindow::CanvasHitTest(POINT pt)
|
||||
VOID CCanvasWindow::DoDraw(HDC hDC, RECT& rcClient, RECT& rcPaint)
|
||||
{
|
||||
// We use a memory bitmap to reduce flickering
|
||||
HDC hdcMem = ::CreateCompatibleDC(hDC);
|
||||
HBITMAP hbm = ::CreateCompatibleBitmap(hDC, rcClient.right, rcClient.bottom);
|
||||
HGDIOBJ hbmOld = ::SelectObject(hdcMem, hbm);
|
||||
HDC hdcMem0 = ::CreateCompatibleDC(hDC);
|
||||
m_ahbmCached[0] = CachedBufferDIB(m_ahbmCached[0], rcClient.right, rcClient.bottom);
|
||||
HGDIOBJ hbm0Old = ::SelectObject(hdcMem0, m_ahbmCached[0]);
|
||||
|
||||
// Fill the background
|
||||
::FillRect(hdcMem, &rcPaint, (HBRUSH)(COLOR_APPWORKSPACE + 1));
|
||||
// Fill the background on hdcMem0
|
||||
::FillRect(hdcMem0, &rcPaint, (HBRUSH)(COLOR_APPWORKSPACE + 1));
|
||||
|
||||
// Draw the sizeboxes if necessary
|
||||
RECT rcBase = GetBaseRect();
|
||||
if (!selectionModel.m_bShow)
|
||||
drawSizeBoxes(hdcMem, &rcBase, FALSE, &rcPaint);
|
||||
if (!selectionModel.m_bShow && !::IsWindowVisible(textEditWindow))
|
||||
drawSizeBoxes(hdcMem0, &rcBase, FALSE, &rcPaint);
|
||||
|
||||
// Draw the image
|
||||
// Calculate image size
|
||||
CRect rcImage;
|
||||
GetImageRect(rcImage);
|
||||
ImageToCanvas(rcImage);
|
||||
SIZE sizeImage = { imageModel.GetWidth(), imageModel.GetHeight() };
|
||||
StretchBlt(hdcMem, rcImage.left, rcImage.top, rcImage.Width(), rcImage.Height(),
|
||||
imageModel.GetDC(), 0, 0, sizeImage.cx, sizeImage.cy, SRCCOPY);
|
||||
|
||||
// Draw the grid
|
||||
if (showGrid && toolsModel.GetZoom() >= 4000)
|
||||
// hdcMem1 <-- imageModel
|
||||
HDC hdcMem1 = ::CreateCompatibleDC(hDC);
|
||||
m_ahbmCached[1] = CachedBufferDIB(m_ahbmCached[1], sizeImage.cx, sizeImage.cy);
|
||||
HGDIOBJ hbm1Old = ::SelectObject(hdcMem1, m_ahbmCached[1]);
|
||||
BitBlt(hdcMem1, 0, 0, sizeImage.cx, sizeImage.cy, imageModel.GetDC(), 0, 0, SRCCOPY);
|
||||
|
||||
// Draw overlay #1 on hdcMem1
|
||||
toolsModel.OnDrawOverlayOnImage(hdcMem1);
|
||||
|
||||
// Transfer the bits with stretch (hdcMem0 <-- hdcMem1)
|
||||
ImageToCanvas(rcImage);
|
||||
::StretchBlt(hdcMem0, rcImage.left, rcImage.top, rcImage.Width(), rcImage.Height(),
|
||||
hdcMem1, 0, 0, sizeImage.cx, sizeImage.cy, SRCCOPY);
|
||||
|
||||
// Clean up hdcMem1
|
||||
::SelectObject(hdcMem1, hbm1Old);
|
||||
::DeleteDC(hdcMem1);
|
||||
|
||||
// Draw the grid on hdcMem0
|
||||
if (g_showGrid && toolsModel.GetZoom() >= 4000)
|
||||
{
|
||||
HPEN oldPen = (HPEN) SelectObject(hdcMem, CreatePen(PS_SOLID, 1, RGB(160, 160, 160)));
|
||||
HPEN oldPen = (HPEN) ::SelectObject(hdcMem0, ::CreatePen(PS_SOLID, 1, RGB(160, 160, 160)));
|
||||
for (INT counter = 0; counter < sizeImage.cy; counter++)
|
||||
{
|
||||
POINT pt0 = { 0, counter }, pt1 = { sizeImage.cx, counter };
|
||||
ImageToCanvas(pt0);
|
||||
ImageToCanvas(pt1);
|
||||
::MoveToEx(hdcMem, pt0.x, pt0.y, NULL);
|
||||
::LineTo(hdcMem, pt1.x, pt1.y);
|
||||
::MoveToEx(hdcMem0, pt0.x, pt0.y, NULL);
|
||||
::LineTo(hdcMem0, pt1.x, pt1.y);
|
||||
}
|
||||
for (INT counter = 0; counter < sizeImage.cx; counter++)
|
||||
{
|
||||
POINT pt0 = { counter, 0 }, pt1 = { counter, sizeImage.cy };
|
||||
ImageToCanvas(pt0);
|
||||
ImageToCanvas(pt1);
|
||||
::MoveToEx(hdcMem, pt0.x, pt0.y, NULL);
|
||||
::LineTo(hdcMem, pt1.x, pt1.y);
|
||||
::MoveToEx(hdcMem0, pt0.x, pt0.y, NULL);
|
||||
::LineTo(hdcMem0, pt1.x, pt1.y);
|
||||
}
|
||||
::DeleteObject(::SelectObject(hdcMem, oldPen));
|
||||
::DeleteObject(::SelectObject(hdcMem0, oldPen));
|
||||
}
|
||||
|
||||
// Draw selection
|
||||
if (selectionModel.m_bShow)
|
||||
{
|
||||
RECT rcSelection = selectionModel.m_rc;
|
||||
ImageToCanvas(rcSelection);
|
||||
// Draw overlay #2 on hdcMem0
|
||||
toolsModel.OnDrawOverlayOnCanvas(hdcMem0);
|
||||
|
||||
::InflateRect(&rcSelection, GRIP_SIZE, GRIP_SIZE);
|
||||
drawSizeBoxes(hdcMem, &rcSelection, TRUE, &rcPaint);
|
||||
::InflateRect(&rcSelection, -GRIP_SIZE, -GRIP_SIZE);
|
||||
// Draw new frame on hdcMem0 if any
|
||||
if (m_hitCanvasSizeBox != HIT_NONE && !::IsRectEmpty(&m_rcResizing))
|
||||
DrawXorRect(hdcMem0, &m_rcResizing);
|
||||
|
||||
INT iSaveDC = ::SaveDC(hdcMem);
|
||||
::IntersectClipRect(hdcMem, rcImage.left, rcImage.top, rcImage.right, rcImage.bottom);
|
||||
selectionModel.DrawSelection(hdcMem, &rcSelection, paletteModel.GetBgColor(),
|
||||
toolsModel.IsBackgroundTransparent());
|
||||
::RestoreDC(hdcMem, iSaveDC);
|
||||
}
|
||||
|
||||
// Draw new frame if any
|
||||
if (m_whereHit != HIT_NONE && !::IsRectEmpty(&m_rcNew))
|
||||
DrawXorRect(hdcMem, &m_rcNew);
|
||||
|
||||
// Transfer the bits
|
||||
// Transfer the bits (hDC <-- hdcMem0)
|
||||
::BitBlt(hDC,
|
||||
rcPaint.left, rcPaint.top,
|
||||
rcPaint.right - rcPaint.left, rcPaint.bottom - rcPaint.top,
|
||||
hdcMem, rcPaint.left, rcPaint.top, SRCCOPY);
|
||||
hdcMem0, rcPaint.left, rcPaint.top, SRCCOPY);
|
||||
|
||||
::DeleteObject(::SelectObject(hdcMem, hbmOld));
|
||||
::DeleteDC(hdcMem);
|
||||
// Clean up hdcMem0
|
||||
::SelectObject(hdcMem0, hbm0Old);
|
||||
::DeleteDC(hdcMem0);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::Update(HWND hwndFrom)
|
||||
@@ -253,18 +265,23 @@ LRESULT CCanvasWindow::OnLRButtonDown(BOOL bLeftButton, UINT nMsg, WPARAM wParam
|
||||
{
|
||||
POINT pt = { GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam) };
|
||||
|
||||
CANVAS_HITTEST hitSelection = SelectionHitTest(pt);
|
||||
HITTEST hitSelection = SelectionHitTest(pt);
|
||||
if (hitSelection != HIT_NONE)
|
||||
{
|
||||
if (bLeftButton)
|
||||
{
|
||||
UnZoomed(pt);
|
||||
CanvasToImage(pt);
|
||||
StartSelectionDrag(hitSelection, pt);
|
||||
}
|
||||
else
|
||||
{
|
||||
canvasWindow.ClientToScreen(&pt);
|
||||
mainWindow.TrackPopupMenu(pt, 0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
CANVAS_HITTEST hit = CanvasHitTest(pt);
|
||||
HITTEST hit = CanvasHitTest(pt);
|
||||
if (hit == HIT_NONE || hit == HIT_BORDER)
|
||||
{
|
||||
switch (toolsModel.GetActiveTool())
|
||||
@@ -303,7 +320,7 @@ LRESULT CCanvasWindow::OnLRButtonDown(BOOL bLeftButton, UINT nMsg, WPARAM wParam
|
||||
|
||||
if (bLeftButton)
|
||||
{
|
||||
m_whereHit = hit;
|
||||
m_hitCanvasSizeBox = hit;
|
||||
UnZoomed(pt);
|
||||
m_ptOrig = pt;
|
||||
SetCapture();
|
||||
@@ -376,15 +393,15 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
{
|
||||
CString strCoord;
|
||||
strCoord.Format(_T("%ld, %ld"), pt.x, pt.y);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) (LPCTSTR) strCoord);
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 1, (LPARAM) (LPCTSTR) strCoord);
|
||||
}
|
||||
}
|
||||
|
||||
if (m_drawing)
|
||||
{
|
||||
// values displayed in statusbar
|
||||
LONG xRel = pt.x - start.x;
|
||||
LONG yRel = pt.y - start.y;
|
||||
LONG xRel = pt.x - g_ptStart.x;
|
||||
LONG yRel = pt.y - g_ptStart.y;
|
||||
|
||||
switch (toolsModel.GetActiveTool())
|
||||
{
|
||||
@@ -393,13 +410,13 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
case TOOL_RECTSEL:
|
||||
case TOOL_TEXT:
|
||||
if (xRel < 0)
|
||||
xRel = (pt.x < 0) ? -start.x : xRel;
|
||||
xRel = (pt.x < 0) ? -g_ptStart.x : xRel;
|
||||
else if (pt.x > imageModel.GetWidth())
|
||||
xRel = imageModel.GetWidth() - start.x;
|
||||
xRel = imageModel.GetWidth() - g_ptStart.x;
|
||||
if (yRel < 0)
|
||||
yRel = (pt.y < 0) ? -start.y : yRel;
|
||||
yRel = (pt.y < 0) ? -g_ptStart.y : yRel;
|
||||
else if (pt.y > imageModel.GetHeight())
|
||||
yRel = imageModel.GetHeight() - start.y;
|
||||
yRel = imageModel.GetHeight() - g_ptStart.y;
|
||||
break;
|
||||
|
||||
// while drawing, update cursor coordinates only for tools 3, 7, 8, 9, 14
|
||||
@@ -411,7 +428,7 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
{
|
||||
CString strCoord;
|
||||
strCoord.Format(_T("%ld, %ld"), pt.x, pt.y);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) (LPCTSTR) strCoord);
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 1, (LPARAM) (LPCTSTR) strCoord);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
@@ -431,13 +448,13 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
{
|
||||
toolsModel.OnMouseMove(TRUE, pt.x, pt.y);
|
||||
Invalidate(FALSE);
|
||||
if ((toolsModel.GetActiveTool() >= TOOL_TEXT) || (toolsModel.GetActiveTool() == TOOL_RECTSEL) || (toolsModel.GetActiveTool() == TOOL_FREESEL))
|
||||
if ((toolsModel.GetActiveTool() >= TOOL_TEXT) || toolsModel.IsSelection())
|
||||
{
|
||||
CString strSize;
|
||||
if ((toolsModel.GetActiveTool() >= TOOL_LINE) && (GetAsyncKeyState(VK_SHIFT) < 0))
|
||||
yRel = xRel;
|
||||
strSize.Format(_T("%ld x %ld"), xRel, yRel);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -451,20 +468,20 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
if ((toolsModel.GetActiveTool() >= TOOL_LINE) && (GetAsyncKeyState(VK_SHIFT) < 0))
|
||||
yRel = xRel;
|
||||
strSize.Format(_T("%ld x %ld"), xRel, yRel);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (m_whereHit == HIT_NONE || ::GetCapture() != m_hWnd)
|
||||
if (m_hitCanvasSizeBox == HIT_NONE || ::GetCapture() != m_hWnd)
|
||||
return 0;
|
||||
|
||||
// Dragging now... Calculate the new size
|
||||
INT cxImage = imageModel.GetWidth(), cyImage = imageModel.GetHeight();
|
||||
INT cxDelta = pt.x - m_ptOrig.x;
|
||||
INT cyDelta = pt.y - m_ptOrig.y;
|
||||
switch (m_whereHit)
|
||||
switch (m_hitCanvasSizeBox)
|
||||
{
|
||||
case HIT_UPPER_LEFT:
|
||||
cxImage -= cxDelta;
|
||||
@@ -507,31 +524,32 @@ LRESULT CCanvasWindow::OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
// Display new size
|
||||
CString strSize;
|
||||
strSize.Format(_T("%d x %d"), cxImage, cyImage);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 2, (LPARAM) (LPCTSTR) strSize);
|
||||
|
||||
CRect rc = { 0, 0, cxImage, cyImage };
|
||||
switch (m_whereHit)
|
||||
// Dragging now... Fix the position...
|
||||
CRect rcResizing = { 0, 0, cxImage, cyImage };
|
||||
switch (m_hitCanvasSizeBox)
|
||||
{
|
||||
case HIT_UPPER_LEFT:
|
||||
::OffsetRect(&rc, cxDelta, cyDelta);
|
||||
::OffsetRect(&rcResizing, cxDelta, cyDelta);
|
||||
break;
|
||||
case HIT_UPPER_CENTER:
|
||||
::OffsetRect(&rc, 0, cyDelta);
|
||||
::OffsetRect(&rcResizing, 0, cyDelta);
|
||||
break;
|
||||
case HIT_UPPER_RIGHT:
|
||||
::OffsetRect(&rc, 0, cyDelta);
|
||||
::OffsetRect(&rcResizing, 0, cyDelta);
|
||||
break;
|
||||
case HIT_MIDDLE_LEFT:
|
||||
::OffsetRect(&rc, cxDelta, 0);
|
||||
::OffsetRect(&rcResizing, cxDelta, 0);
|
||||
break;
|
||||
case HIT_LOWER_LEFT:
|
||||
::OffsetRect(&rc, cxDelta, 0);
|
||||
::OffsetRect(&rcResizing, cxDelta, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
ImageToCanvas(rc);
|
||||
m_rcNew = rc;
|
||||
ImageToCanvas(rcResizing);
|
||||
m_rcResizing = rcResizing;
|
||||
Invalidate(TRUE);
|
||||
|
||||
return 0;
|
||||
@@ -549,7 +567,7 @@ LRESULT CCanvasWindow::OnLRButtonUp(BOOL bLeftButton, UINT nMsg, WPARAM wParam,
|
||||
m_drawing = FALSE;
|
||||
toolsModel.OnButtonUp(bLeftButton, pt.x, pt.y);
|
||||
Invalidate(FALSE);
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) "");
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 2, (LPARAM)_T(""));
|
||||
return 0;
|
||||
}
|
||||
else if (m_hitSelection != HIT_NONE && bLeftButton)
|
||||
@@ -558,14 +576,14 @@ LRESULT CCanvasWindow::OnLRButtonUp(BOOL bLeftButton, UINT nMsg, WPARAM wParam,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (m_whereHit == HIT_NONE || !bLeftButton)
|
||||
if (m_hitCanvasSizeBox == HIT_NONE || !bLeftButton)
|
||||
return 0;
|
||||
|
||||
// Resize the image
|
||||
INT cxImage = imageModel.GetWidth(), cyImage = imageModel.GetHeight();
|
||||
INT cxDelta = pt.x - m_ptOrig.x;
|
||||
INT cyDelta = pt.y - m_ptOrig.y;
|
||||
switch (m_whereHit)
|
||||
switch (m_hitCanvasSizeBox)
|
||||
{
|
||||
case HIT_UPPER_LEFT:
|
||||
imageModel.Crop(cxImage - cxDelta, cyImage - cyDelta, cxDelta, cyDelta);
|
||||
@@ -594,11 +612,11 @@ LRESULT CCanvasWindow::OnLRButtonUp(BOOL bLeftButton, UINT nMsg, WPARAM wParam,
|
||||
default:
|
||||
break;
|
||||
}
|
||||
::SetRectEmpty(&m_rcNew);
|
||||
::SetRectEmpty(&m_rcResizing);
|
||||
|
||||
imageSaved = FALSE;
|
||||
g_imageSaved = FALSE;
|
||||
|
||||
m_whereHit = HIT_NONE;
|
||||
m_hitCanvasSizeBox = HIT_NONE;
|
||||
toolsModel.resetTool(); // resets the point-buffer of the polygon and bezier functions
|
||||
Update(NULL);
|
||||
Invalidate(TRUE);
|
||||
@@ -621,7 +639,16 @@ LRESULT CCanvasWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
::GetCursorPos(&pt);
|
||||
ScreenToClient(&pt);
|
||||
|
||||
CANVAS_HITTEST hitSelection = SelectionHitTest(pt);
|
||||
CRect rcClient;
|
||||
GetClientRect(&rcClient);
|
||||
|
||||
if (!::PtInRect(&rcClient, pt))
|
||||
{
|
||||
bHandled = FALSE;
|
||||
return 0;
|
||||
}
|
||||
|
||||
HITTEST hitSelection = SelectionHitTest(pt);
|
||||
if (hitSelection != HIT_NONE)
|
||||
{
|
||||
if (!setCursorOnSizeBox(hitSelection))
|
||||
@@ -632,24 +659,25 @@ LRESULT CCanvasWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
CRect rcImage;
|
||||
GetImageRect(rcImage);
|
||||
ImageToCanvas(rcImage);
|
||||
|
||||
if (::PtInRect(&rcImage, pt))
|
||||
{
|
||||
switch (toolsModel.GetActiveTool())
|
||||
{
|
||||
case TOOL_FILL:
|
||||
::SetCursor(::LoadIcon(hProgInstance, MAKEINTRESOURCE(IDC_FILL)));
|
||||
::SetCursor(::LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDC_FILL)));
|
||||
break;
|
||||
case TOOL_COLOR:
|
||||
::SetCursor(::LoadIcon(hProgInstance, MAKEINTRESOURCE(IDC_COLOR)));
|
||||
::SetCursor(::LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDC_COLOR)));
|
||||
break;
|
||||
case TOOL_ZOOM:
|
||||
::SetCursor(::LoadIcon(hProgInstance, MAKEINTRESOURCE(IDC_ZOOM)));
|
||||
::SetCursor(::LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDC_ZOOM)));
|
||||
break;
|
||||
case TOOL_PEN:
|
||||
::SetCursor(::LoadIcon(hProgInstance, MAKEINTRESOURCE(IDC_PEN)));
|
||||
::SetCursor(::LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDC_PEN)));
|
||||
break;
|
||||
case TOOL_AIRBRUSH:
|
||||
::SetCursor(::LoadIcon(hProgInstance, MAKEINTRESOURCE(IDC_AIRBRUSH)));
|
||||
::SetCursor(::LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDC_AIRBRUSH)));
|
||||
break;
|
||||
default:
|
||||
::SetCursor(::LoadCursor(NULL, IDC_CROSS));
|
||||
@@ -658,7 +686,7 @@ LRESULT CCanvasWindow::OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
}
|
||||
|
||||
if (selectionModel.m_bShow || !setCursorOnSizeBox(CanvasHitTest(pt)))
|
||||
::SetCursor(::LoadCursor(NULL, IDC_ARROW));
|
||||
bHandled = FALSE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
@@ -669,8 +697,8 @@ LRESULT CCanvasWindow::OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
|
||||
{
|
||||
// Cancel dragging
|
||||
::ReleaseCapture();
|
||||
m_whereHit = HIT_NONE;
|
||||
::SetRectEmpty(&m_rcNew);
|
||||
m_hitCanvasSizeBox = HIT_NONE;
|
||||
::SetRectEmpty(&m_rcResizing);
|
||||
Invalidate(TRUE);
|
||||
}
|
||||
|
||||
@@ -680,8 +708,8 @@ LRESULT CCanvasWindow::OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
|
||||
LRESULT CCanvasWindow::OnCancelMode(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
// Cancel dragging
|
||||
m_whereHit = HIT_NONE;
|
||||
::SetRectEmpty(&m_rcNew);
|
||||
m_hitCanvasSizeBox = HIT_NONE;
|
||||
::SetRectEmpty(&m_rcResizing);
|
||||
Invalidate(TRUE);
|
||||
return 0;
|
||||
}
|
||||
@@ -693,7 +721,7 @@ LRESULT CCanvasWindow::OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOO
|
||||
|
||||
LRESULT CCanvasWindow::OnCaptureChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM)_T(""));
|
||||
::SendMessage(g_hStatusBar, SB_SETTEXT, 2, (LPARAM)_T(""));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -731,7 +759,7 @@ VOID CCanvasWindow::finishDrawing()
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
CANVAS_HITTEST CCanvasWindow::SelectionHitTest(POINT ptZoomed)
|
||||
HITTEST CCanvasWindow::SelectionHitTest(POINT ptImage)
|
||||
{
|
||||
if (!selectionModel.m_bShow)
|
||||
return HIT_NONE;
|
||||
@@ -741,28 +769,51 @@ CANVAS_HITTEST CCanvasWindow::SelectionHitTest(POINT ptZoomed)
|
||||
::OffsetRect(&rcSelection, GRIP_SIZE - GetScrollPos(SB_HORZ), GRIP_SIZE - GetScrollPos(SB_VERT));
|
||||
::InflateRect(&rcSelection, GRIP_SIZE, GRIP_SIZE);
|
||||
|
||||
return getSizeBoxHitTest(ptZoomed, &rcSelection);
|
||||
return getSizeBoxHitTest(ptImage, &rcSelection);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::StartSelectionDrag(CANVAS_HITTEST hit, POINT ptUnZoomed)
|
||||
VOID CCanvasWindow::StartSelectionDrag(HITTEST hit, POINT ptImage)
|
||||
{
|
||||
m_hitSelection = hit;
|
||||
selectionModel.m_ptHit = ptUnZoomed;
|
||||
selectionModel.m_ptHit = ptImage;
|
||||
selectionModel.TakeOff();
|
||||
|
||||
SetCapture();
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::SelectionDragging(POINT ptUnZoomed)
|
||||
VOID CCanvasWindow::SelectionDragging(POINT ptImage)
|
||||
{
|
||||
selectionModel.Dragging(m_hitSelection, ptUnZoomed);
|
||||
selectionModel.Dragging(m_hitSelection, ptImage);
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::EndSelectionDrag(POINT ptUnZoomed)
|
||||
VOID CCanvasWindow::EndSelectionDrag(POINT ptImage)
|
||||
{
|
||||
selectionModel.Dragging(m_hitSelection, ptUnZoomed);
|
||||
selectionModel.Dragging(m_hitSelection, ptImage);
|
||||
m_hitSelection = HIT_NONE;
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
VOID CCanvasWindow::MoveSelection(INT xDelta, INT yDelta)
|
||||
{
|
||||
if (!selectionModel.m_bShow)
|
||||
return;
|
||||
|
||||
selectionModel.TakeOff();
|
||||
::OffsetRect(&selectionModel.m_rc, xDelta, yDelta);
|
||||
Invalidate(FALSE);
|
||||
}
|
||||
|
||||
LRESULT CCanvasWindow::OnCtlColorEdit(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
SetTextColor((HDC)wParam, paletteModel.GetFgColor());
|
||||
SetBkMode((HDC)wParam, TRANSPARENT);
|
||||
return (LRESULT)GetStockObject(NULL_BRUSH);
|
||||
}
|
||||
|
||||
LRESULT CCanvasWindow::OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
imageModel.NotifyImageChanged();
|
||||
return 0;
|
||||
}
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/canvas.h
|
||||
* PURPOSE: Providing the canvas window class
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Providing the canvas window class
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
@@ -11,7 +10,8 @@
|
||||
class CCanvasWindow : public CWindowImpl<CCanvasWindow>
|
||||
{
|
||||
public:
|
||||
DECLARE_WND_CLASS_EX(_T("ReactOSPaintCanvas"), CS_DBLCLKS, COLOR_APPWORKSPACE)
|
||||
DECLARE_WND_CLASS_EX(_T("ReactOSPaintCanvas"), CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW,
|
||||
COLOR_APPWORKSPACE)
|
||||
|
||||
BEGIN_MSG_MAP(CCanvasWindow)
|
||||
MESSAGE_HANDLER(WM_SIZE, OnSize)
|
||||
@@ -31,9 +31,12 @@ public:
|
||||
MESSAGE_HANDLER(WM_MOUSEWHEEL, OnMouseWheel)
|
||||
MESSAGE_HANDLER(WM_CANCELMODE, OnCancelMode)
|
||||
MESSAGE_HANDLER(WM_CAPTURECHANGED, OnCaptureChanged)
|
||||
MESSAGE_HANDLER(WM_CTLCOLOREDIT, OnCtlColorEdit)
|
||||
MESSAGE_HANDLER(WM_PALETTEMODELCOLORCHANGED, OnPaletteModelColorChanged)
|
||||
END_MSG_MAP()
|
||||
|
||||
CCanvasWindow();
|
||||
virtual ~CCanvasWindow();
|
||||
|
||||
BOOL m_drawing;
|
||||
|
||||
@@ -46,23 +49,25 @@ public:
|
||||
VOID CanvasToImage(POINT& pt, BOOL bZoomed = FALSE);
|
||||
VOID CanvasToImage(RECT& rc, BOOL bZoomed = FALSE);
|
||||
VOID GetImageRect(RECT& rc);
|
||||
VOID MoveSelection(INT xDelta, INT yDelta);
|
||||
|
||||
protected:
|
||||
CANVAS_HITTEST m_hitSelection;
|
||||
CANVAS_HITTEST m_whereHit;
|
||||
HITTEST m_hitSelection;
|
||||
HITTEST m_hitCanvasSizeBox;
|
||||
POINT m_ptOrig; // The origin of drag start
|
||||
CRect m_rcNew;
|
||||
HBITMAP m_ahbmCached[2]; // The cached buffer bitmaps
|
||||
CRect m_rcResizing; // Resizing rectagle
|
||||
|
||||
CANVAS_HITTEST CanvasHitTest(POINT pt);
|
||||
HITTEST CanvasHitTest(POINT pt);
|
||||
RECT GetBaseRect();
|
||||
VOID DoDraw(HDC hDC, RECT& rcClient, RECT& rcPaint);
|
||||
VOID OnHVScroll(WPARAM wParam, INT fnBar);
|
||||
VOID drawZoomFrame(INT mouseX, INT mouseY);
|
||||
|
||||
CANVAS_HITTEST SelectionHitTest(POINT ptZoomed);
|
||||
VOID StartSelectionDrag(CANVAS_HITTEST hit, POINT ptUnZoomed);
|
||||
VOID SelectionDragging(POINT ptUnZoomed);
|
||||
VOID EndSelectionDrag(POINT ptUnZoomed);
|
||||
HITTEST SelectionHitTest(POINT ptImage);
|
||||
VOID StartSelectionDrag(HITTEST hit, POINT ptImage);
|
||||
VOID SelectionDragging(POINT ptImage);
|
||||
VOID EndSelectionDrag(POINT ptImage);
|
||||
|
||||
LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnHScroll(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
@@ -81,6 +86,8 @@ protected:
|
||||
LRESULT OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnCancelMode(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnCaptureChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnCtlColorEdit(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
|
||||
LRESULT OnLRButtonDown(BOOL bLeftButton, UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnLRButtonDblClk(BOOL bLeftButton, UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
|
@@ -1,11 +1,10 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/common.h
|
||||
* PURPOSE: Commonly used functions and definitions
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* Stanislav Motylkov
|
||||
* Katayama Hirofumi MZ
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Commonly used functions and definitions
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
* Copyright 2018 Stanislav Motylkov <x86corez@gmail.com>
|
||||
* Copyright 2021-2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
@@ -20,16 +19,6 @@
|
||||
#define WM_TOOLSMODELSETTINGSCHANGED (WM_APP + 1)
|
||||
#define WM_TOOLSMODELZOOMCHANGED (WM_APP + 2)
|
||||
#define WM_PALETTEMODELCOLORCHANGED (WM_APP + 3)
|
||||
#define WM_PALETTEMODELPALETTECHANGED (WM_APP + 4)
|
||||
#define WM_IMAGEMODELDIMENSIONSCHANGED (WM_APP + 5)
|
||||
#define WM_IMAGEMODELIMAGECHANGED (WM_APP + 6)
|
||||
#define WM_SELECTIONMODELREFRESHNEEDED (WM_APP + 7)
|
||||
|
||||
/* width of the rectangle defined by a RECT structure */
|
||||
#define RECT_WIDTH(a) ((a).right - (a).left)
|
||||
|
||||
/* height of the rectangle defined by a RECT structure */
|
||||
#define RECT_HEIGHT(a) ((a).bottom - (a).top)
|
||||
|
||||
/* this simplifies checking and unchecking menu items */
|
||||
#define CHECKED_IF(a) ((a) ? (MF_CHECKED | MF_BYCOMMAND) : (MF_UNCHECKED | MF_BYCOMMAND))
|
||||
@@ -37,7 +26,7 @@
|
||||
/* this simplifies enabling or graying menu items */
|
||||
#define ENABLED_IF(a) ((a) ? (MF_ENABLED | MF_BYCOMMAND) : (MF_GRAYED | MF_BYCOMMAND))
|
||||
|
||||
enum CANVAS_HITTEST // hit
|
||||
enum HITTEST // hit
|
||||
{
|
||||
HIT_NONE = 0, // Nothing hit or outside
|
||||
HIT_UPPER_LEFT,
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/dialogs.cpp
|
||||
* PURPOSE: Window procedures of the dialog windows plus launching functions
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Window procedures of the dialog windows plus launching functions
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
/* INCLUDES *********************************************************/
|
||||
@@ -23,6 +22,22 @@ CFontsDialog fontsDialog;
|
||||
|
||||
/* FUNCTIONS ********************************************************/
|
||||
|
||||
void ShowError(INT stringID, ...)
|
||||
{
|
||||
va_list va;
|
||||
va_start(va, stringID);
|
||||
|
||||
CStringW strFormat, strText;
|
||||
strFormat.LoadString(stringID);
|
||||
strText.FormatV(strFormat, va);
|
||||
|
||||
CStringW strProgramName;
|
||||
strProgramName.LoadString(IDS_PROGRAMNAME);
|
||||
|
||||
mainWindow.MessageBox(strText, strProgramName, MB_ICONERROR);
|
||||
va_end(va);
|
||||
}
|
||||
|
||||
LRESULT CMirrorRotateDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
CheckDlgButton(IDD_MIRRORROTATERB1, BST_CHECKED);
|
||||
@@ -73,8 +88,6 @@ LRESULT CMirrorRotateDialog::OnRadioButton12(WORD wNotifyCode, WORD wID, HWND hW
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
LRESULT CAttributesDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
newWidth = imageModel.GetWidth();
|
||||
@@ -85,21 +98,29 @@ LRESULT CAttributesDialog::OnInitDialog(UINT nMsg, WPARAM wParam, LPARAM lParam,
|
||||
SetDlgItemInt(IDD_ATTRIBUTESEDIT1, newWidth, FALSE);
|
||||
SetDlgItemInt(IDD_ATTRIBUTESEDIT2, newHeight, FALSE);
|
||||
|
||||
if (isAFile)
|
||||
if (g_isAFile)
|
||||
{
|
||||
TCHAR date[100];
|
||||
TCHAR temp[100];
|
||||
GetDateFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, date, _countof(date));
|
||||
GetTimeFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, temp, _countof(temp));
|
||||
GetDateFormat(LOCALE_USER_DEFAULT, 0, &g_fileTime, NULL, date, _countof(date));
|
||||
GetTimeFormat(LOCALE_USER_DEFAULT, 0, &g_fileTime, NULL, temp, _countof(temp));
|
||||
_tcscat(date, _T(" "));
|
||||
_tcscat(date, temp);
|
||||
CString strSize;
|
||||
strSize.Format(IDS_FILESIZE, fileSize);
|
||||
strSize.Format(IDS_FILESIZE, g_fileSize);
|
||||
SetDlgItemText(IDD_ATTRIBUTESTEXT6, date);
|
||||
SetDlgItemText(IDD_ATTRIBUTESTEXT7, strSize);
|
||||
}
|
||||
|
||||
CString strUnit;
|
||||
GetDlgItemText(IDD_ATTRIBUTESTEXT8, strUnit);
|
||||
|
||||
CString strRes;
|
||||
strRes.Format(IDS_PRINTRES, (INT)PpmFromDpi(g_xDpi), (INT)PpmFromDpi(g_yDpi));
|
||||
if (strUnit == L"dpi")
|
||||
strRes.Format(IDS_PRINTRES, ROUND(g_xDpi), ROUND(g_yDpi));
|
||||
else
|
||||
strRes.Format(IDS_PRINTRES, ROUND(PpcmFromDpi(g_xDpi)), ROUND(PpcmFromDpi(g_yDpi)));
|
||||
|
||||
SetDlgItemText(IDD_ATTRIBUTESTEXT8, strRes);
|
||||
return 0;
|
||||
}
|
||||
@@ -146,9 +167,9 @@ LRESULT CAttributesDialog::OnRadioButton1(WORD wNotifyCode, WORD wID, HWND hWndC
|
||||
LRESULT CAttributesDialog::OnRadioButton2(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled)
|
||||
{
|
||||
CString strNum;
|
||||
strNum.Format(_T("%.3lf"), newWidth * 100 / PpmFromDpi(g_xDpi));
|
||||
strNum.Format(_T("%.3lf"), newWidth / PpcmFromDpi(g_xDpi));
|
||||
SetDlgItemText(IDD_ATTRIBUTESEDIT1, strNum);
|
||||
strNum.Format(_T("%.3lf"), newHeight * 100 / PpmFromDpi(g_yDpi));
|
||||
strNum.Format(_T("%.3lf"), newHeight / PpcmFromDpi(g_yDpi));
|
||||
SetDlgItemText(IDD_ATTRIBUTESEDIT2, strNum);
|
||||
return 0;
|
||||
}
|
||||
@@ -173,7 +194,7 @@ LRESULT CAttributesDialog::OnEdit1(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOO
|
||||
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB2))
|
||||
{
|
||||
GetDlgItemText(IDD_ATTRIBUTESEDIT1, tempS, _countof(tempS));
|
||||
newWidth = max(1, (int) (_tcstod(tempS, NULL) * PpmFromDpi(g_xDpi) / 100));
|
||||
newWidth = max(1, (int) (_tcstod(tempS, NULL) * PpcmFromDpi(g_xDpi)));
|
||||
}
|
||||
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB3))
|
||||
{
|
||||
@@ -198,7 +219,7 @@ LRESULT CAttributesDialog::OnEdit2(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOO
|
||||
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB2))
|
||||
{
|
||||
GetDlgItemText(IDD_ATTRIBUTESEDIT2, tempS, _countof(tempS));
|
||||
newHeight = max(1, (int) (_tcstod(tempS, NULL) * PpmFromDpi(g_yDpi) / 100));
|
||||
newHeight = max(1, (int) (_tcstod(tempS, NULL) * PpcmFromDpi(g_yDpi)));
|
||||
}
|
||||
else if (IsDlgButtonChecked(IDD_ATTRIBUTESRB3))
|
||||
{
|
||||
@@ -234,9 +255,9 @@ LRESULT CStretchSkewDialog::OnOk(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL&
|
||||
CString strrcAngle;
|
||||
BOOL tr1, tr2, tr3, tr4;
|
||||
|
||||
strrcIntNumbers.LoadString(hProgInstance, IDS_INTNUMBERS);
|
||||
strrcPercentage.LoadString(hProgInstance, IDS_PERCENTAGE);
|
||||
strrcAngle.LoadString(hProgInstance, IDS_ANGLE);
|
||||
strrcIntNumbers.LoadString(g_hinstExe, IDS_INTNUMBERS);
|
||||
strrcPercentage.LoadString(g_hinstExe, IDS_PERCENTAGE);
|
||||
strrcAngle.LoadString(g_hinstExe, IDS_ANGLE);
|
||||
|
||||
percentage.x = GetDlgItemInt(IDD_STRETCHSKEWEDITHSTRETCH, &tr1, FALSE);
|
||||
percentage.y = GetDlgItemInt(IDD_STRETCHSKEWEDITVSTRETCH, &tr2, FALSE);
|
||||
@@ -341,11 +362,11 @@ void CFontsDialog::InitToolbar()
|
||||
SendMessage(hwndToolbar, TB_SETBUTTONWIDTH, 0, MAKELPARAM(20, 20));
|
||||
|
||||
TBADDBITMAP AddBitmap;
|
||||
AddBitmap.hInst = hProgInstance;
|
||||
AddBitmap.hInst = g_hinstExe;
|
||||
AddBitmap.nID = IDB_FONTSTOOLBAR;
|
||||
SendMessage(hwndToolbar, TB_ADDBITMAP, 4, (LPARAM)&AddBitmap);
|
||||
|
||||
HIMAGELIST himl = ImageList_LoadImage(hProgInstance, MAKEINTRESOURCE(IDB_FONTSTOOLBAR),
|
||||
HIMAGELIST himl = ImageList_LoadImage(g_hinstExe, MAKEINTRESOURCE(IDB_FONTSTOOLBAR),
|
||||
16, 8, RGB(255, 0, 255), IMAGE_BITMAP,
|
||||
LR_CREATEDIBSECTION);
|
||||
SendMessage(hwndToolbar, TB_SETIMAGELIST, 0, (LPARAM)himl);
|
||||
@@ -505,7 +526,7 @@ LRESULT CFontsDialog::OnNotify(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bH
|
||||
if (pnmhdr->code == TTN_NEEDTEXT)
|
||||
{
|
||||
LPTOOLTIPTEXT pToolTip = reinterpret_cast<LPTOOLTIPTEXT>(lParam);
|
||||
pToolTip->hinst = hProgInstance;
|
||||
pToolTip->hinst = g_hinstExe;
|
||||
switch (pnmhdr->idFrom)
|
||||
{
|
||||
case IDM_BOLD: pToolTip->lpszText = MAKEINTRESOURCE(IDS_BOLD); break;
|
||||
|
@@ -1,13 +1,14 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/dialogs.h
|
||||
* PURPOSE: Window procedures of the dialog windows plus launching functions
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Window procedures of the dialog windows plus launching functions
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
void ShowError(INT stringID, ...);
|
||||
|
||||
class CMirrorRotateDialog : public CDialogImpl<CMirrorRotateDialog>
|
||||
{
|
||||
public:
|
||||
|
@@ -1,25 +1,25 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/dib.cpp
|
||||
* PURPOSE: Some DIB related functions
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Some DIB related functions
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
#include <math.h>
|
||||
|
||||
INT fileSize = 0;
|
||||
INT g_fileSize = 0;
|
||||
float g_xDpi = 96;
|
||||
float g_yDpi = 96;
|
||||
SYSTEMTIME fileTime;
|
||||
SYSTEMTIME g_fileTime;
|
||||
|
||||
/* FUNCTIONS ********************************************************/
|
||||
|
||||
// Convert DPI (dots per inch) into PPM (pixels per meter)
|
||||
float PpmFromDpi(float dpi)
|
||||
// Convert DPI (dots per inch) into PPCM (pixels per centimeter)
|
||||
float PpcmFromDpi(float dpi)
|
||||
{
|
||||
return dpi / 0.0254; // 1 DPI is 0.0254 meter.
|
||||
// 1 DPI is 0.0254 meter. 1 centimeter is 1/100 meter.
|
||||
return dpi / (0.0254f * 100.0f);
|
||||
}
|
||||
|
||||
HBITMAP
|
||||
@@ -32,10 +32,29 @@ CreateDIBWithProperties(int width, int height)
|
||||
bmi.bmiHeader.biHeight = height;
|
||||
bmi.bmiHeader.biPlanes = 1;
|
||||
bmi.bmiHeader.biBitCount = 24;
|
||||
bmi.bmiHeader.biCompression = BI_RGB;
|
||||
return CreateDIBSection(NULL, &bmi, DIB_RGB_COLORS, NULL, NULL, 0);
|
||||
}
|
||||
|
||||
HBITMAP
|
||||
CreateMonoBitmap(int width, int height, BOOL bWhite)
|
||||
{
|
||||
HBITMAP hbm = CreateBitmap(width, height, 1, 1, NULL);
|
||||
if (hbm == NULL)
|
||||
return NULL;
|
||||
|
||||
if (bWhite)
|
||||
{
|
||||
HDC hdc = CreateCompatibleDC(NULL);
|
||||
HGDIOBJ hbmOld = SelectObject(hdc, hbm);
|
||||
RECT rc = { 0, 0, width, height };
|
||||
FillRect(hdc, &rc, (HBRUSH)GetStockObject(WHITE_BRUSH));
|
||||
SelectObject(hdc, hbmOld);
|
||||
DeleteDC(hdc);
|
||||
}
|
||||
|
||||
return hbm;
|
||||
}
|
||||
|
||||
HBITMAP
|
||||
CreateColorDIB(int width, int height, COLORREF rgb)
|
||||
{
|
||||
@@ -59,6 +78,54 @@ CreateColorDIB(int width, int height, COLORREF rgb)
|
||||
return ret;
|
||||
}
|
||||
|
||||
HBITMAP CopyMonoImage(HBITMAP hbm, INT cx, INT cy)
|
||||
{
|
||||
BITMAP bm;
|
||||
if (!GetObject(hbm, sizeof(bm), &bm))
|
||||
return NULL;
|
||||
|
||||
if (cx == 0 || cy == 0)
|
||||
{
|
||||
cx = bm.bmWidth;
|
||||
cy = bm.bmHeight;
|
||||
}
|
||||
|
||||
HBITMAP hbmNew = CreateBitmap(cx, cy, 1, 1, NULL);
|
||||
if (!hbmNew)
|
||||
return NULL;
|
||||
|
||||
HDC hdc1 = CreateCompatibleDC(NULL);
|
||||
HDC hdc2 = CreateCompatibleDC(NULL);
|
||||
HGDIOBJ hbm1Old = SelectObject(hdc1, hbm);
|
||||
HGDIOBJ hbm2Old = SelectObject(hdc2, hbmNew);
|
||||
StretchBlt(hdc2, 0, 0, cx, cy, hdc1, 0, 0, bm.bmWidth, bm.bmHeight, SRCCOPY);
|
||||
SelectObject(hdc1, hbm1Old);
|
||||
SelectObject(hdc2, hbm2Old);
|
||||
DeleteDC(hdc1);
|
||||
DeleteDC(hdc2);
|
||||
return hbmNew;
|
||||
}
|
||||
|
||||
HBITMAP CachedBufferDIB(HBITMAP hbm, int minimalWidth, int minimalHeight)
|
||||
{
|
||||
if (minimalWidth <= 0)
|
||||
minimalWidth = 1;
|
||||
if (minimalHeight <= 0)
|
||||
minimalHeight = 1;
|
||||
|
||||
BITMAP bm;
|
||||
if (!GetObject(hbm, sizeof(bm), &bm))
|
||||
hbm = NULL;
|
||||
|
||||
if (hbm && minimalWidth <= bm.bmWidth && minimalHeight <= bm.bmHeight)
|
||||
return hbm;
|
||||
|
||||
if (hbm)
|
||||
DeleteObject(hbm);
|
||||
|
||||
return CreateDIBWithProperties((minimalWidth * 3) / 2, (minimalHeight * 3) / 2);
|
||||
}
|
||||
|
||||
int
|
||||
GetDIBWidth(HBITMAP hBitmap)
|
||||
{
|
||||
@@ -75,148 +142,146 @@ GetDIBHeight(HBITMAP hBitmap)
|
||||
return bm.bmHeight;
|
||||
}
|
||||
|
||||
BOOL SaveDIBToFile(HBITMAP hBitmap, LPTSTR FileName, HDC hDC)
|
||||
BOOL SaveDIBToFile(HBITMAP hBitmap, LPCWSTR FileName, BOOL fIsMainFile)
|
||||
{
|
||||
CImageDx img;
|
||||
img.Attach(hBitmap);
|
||||
img.SaveDx(FileName, GUID_NULL, g_xDpi, g_yDpi); // TODO: error handling
|
||||
HRESULT hr = img.SaveDx(FileName, GUID_NULL, g_xDpi, g_yDpi);
|
||||
img.Detach();
|
||||
|
||||
WIN32_FIND_DATA find;
|
||||
HANDLE hFind = FindFirstFile(FileName, &find);
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
if (FAILED(hr))
|
||||
{
|
||||
ShowFileLoadError(FileName);
|
||||
ShowError(IDS_SAVEERROR, FileName);
|
||||
return FALSE;
|
||||
}
|
||||
FindClose(hFind);
|
||||
|
||||
// update time and size
|
||||
FILETIME ft;
|
||||
FileTimeToLocalFileTime(&find.ftLastWriteTime, &ft);
|
||||
FileTimeToSystemTime(&ft, &fileTime);
|
||||
fileSize = find.nFileSizeLow;
|
||||
if (!fIsMainFile)
|
||||
return TRUE;
|
||||
|
||||
// TODO: update hRes and vRes
|
||||
WIN32_FIND_DATAW find;
|
||||
HANDLE hFind = ::FindFirstFileW(FileName, &find);
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
{
|
||||
ShowError(IDS_SAVEERROR, FileName);
|
||||
return FALSE;
|
||||
}
|
||||
::FindClose(hFind);
|
||||
|
||||
registrySettings.SetMostRecentFile(FileName);
|
||||
|
||||
isAFile = TRUE;
|
||||
imageSaved = TRUE;
|
||||
SetFileInfo(FileName, &find, TRUE);
|
||||
g_imageSaved = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void ShowFileLoadError(LPCTSTR name)
|
||||
void SetFileInfo(LPCWSTR name, LPWIN32_FIND_DATAW pFound, BOOL isAFile)
|
||||
{
|
||||
CString strText;
|
||||
strText.Format(IDS_LOADERRORTEXT, (LPCTSTR) name);
|
||||
CString strProgramName;
|
||||
strProgramName.LoadString(IDS_PROGRAMNAME);
|
||||
mainWindow.MessageBox(strText, strProgramName, MB_OK | MB_ICONEXCLAMATION);
|
||||
}
|
||||
|
||||
HBITMAP SetBitmapAndInfo(HBITMAP hBitmap, LPCTSTR name, DWORD dwFileSize, BOOL isFile)
|
||||
{
|
||||
if (hBitmap == NULL)
|
||||
// update file time and size
|
||||
if (pFound)
|
||||
{
|
||||
COLORREF white = RGB(255, 255, 255);
|
||||
hBitmap = CreateColorDIB(registrySettings.BMPWidth,
|
||||
registrySettings.BMPHeight, white);
|
||||
if (hBitmap == NULL)
|
||||
return FALSE;
|
||||
FILETIME ft;
|
||||
::FileTimeToLocalFileTime(&pFound->ftLastWriteTime, &ft);
|
||||
::FileTimeToSystemTime(&ft, &g_fileTime);
|
||||
|
||||
HDC hScreenDC = GetDC(NULL);
|
||||
g_xDpi = GetDeviceCaps(hScreenDC, LOGPIXELSX);
|
||||
g_yDpi = GetDeviceCaps(hScreenDC, LOGPIXELSY);
|
||||
ReleaseDC(NULL, hScreenDC);
|
||||
|
||||
ZeroMemory(&fileTime, sizeof(fileTime));
|
||||
g_fileSize = pFound->nFileSizeLow;
|
||||
}
|
||||
else
|
||||
{
|
||||
ZeroMemory(&g_fileTime, sizeof(g_fileTime));
|
||||
g_fileSize = 0;
|
||||
}
|
||||
|
||||
// update image
|
||||
imageModel.Insert(hBitmap);
|
||||
imageModel.ClearHistory();
|
||||
|
||||
// update fileSize
|
||||
fileSize = dwFileSize;
|
||||
|
||||
// update filepathname
|
||||
// update g_szFileName
|
||||
if (name && name[0])
|
||||
GetFullPathName(name, _countof(filepathname), filepathname, NULL);
|
||||
{
|
||||
CStringW strName = name;
|
||||
::GetFullPathNameW(strName, _countof(g_szFileName), g_szFileName, NULL);
|
||||
// The following code won't work correctly when (name == g_szFileName):
|
||||
// ::GetFullPathNameW(name, _countof(g_szFileName), g_szFileName, NULL);
|
||||
}
|
||||
else
|
||||
LoadString(hProgInstance, IDS_DEFAULTFILENAME, filepathname, _countof(filepathname));
|
||||
{
|
||||
::LoadStringW(g_hinstExe, IDS_DEFAULTFILENAME, g_szFileName, _countof(g_szFileName));
|
||||
}
|
||||
|
||||
// set title
|
||||
CString strTitle;
|
||||
strTitle.Format(IDS_WINDOWTITLE, PathFindFileName(filepathname));
|
||||
strTitle.Format(IDS_WINDOWTITLE, PathFindFileName(g_szFileName));
|
||||
mainWindow.SetWindowText(strTitle);
|
||||
|
||||
// update file info and recent
|
||||
isAFile = isFile;
|
||||
if (isAFile)
|
||||
registrySettings.SetMostRecentFile(filepathname);
|
||||
g_isAFile = isAFile;
|
||||
if (g_isAFile)
|
||||
registrySettings.SetMostRecentFile(g_szFileName);
|
||||
|
||||
imageSaved = TRUE;
|
||||
g_imageSaved = TRUE;
|
||||
}
|
||||
|
||||
HBITMAP InitializeImage(LPCWSTR name, LPWIN32_FIND_DATAW pFound, BOOL isFile)
|
||||
{
|
||||
COLORREF white = RGB(255, 255, 255);
|
||||
HBITMAP hBitmap = CreateColorDIB(registrySettings.BMPWidth, registrySettings.BMPHeight, white);
|
||||
if (hBitmap == NULL)
|
||||
return NULL;
|
||||
|
||||
HDC hScreenDC = ::GetDC(NULL);
|
||||
g_xDpi = ::GetDeviceCaps(hScreenDC, LOGPIXELSX);
|
||||
g_yDpi = ::GetDeviceCaps(hScreenDC, LOGPIXELSY);
|
||||
::ReleaseDC(NULL, hScreenDC);
|
||||
|
||||
return SetBitmapAndInfo(hBitmap, name, pFound, isFile);
|
||||
}
|
||||
|
||||
HBITMAP SetBitmapAndInfo(HBITMAP hBitmap, LPCWSTR name, LPWIN32_FIND_DATAW pFound, BOOL isFile)
|
||||
{
|
||||
// update image
|
||||
imageModel.PushImageForUndo(hBitmap);
|
||||
imageModel.ClearHistory();
|
||||
|
||||
SetFileInfo(name, pFound, isFile);
|
||||
g_imageSaved = TRUE;
|
||||
return hBitmap;
|
||||
}
|
||||
|
||||
HBITMAP DoLoadImageFile(HWND hwnd, LPCTSTR name, BOOL fIsMainFile)
|
||||
HBITMAP DoLoadImageFile(HWND hwnd, LPCWSTR name, BOOL fIsMainFile)
|
||||
{
|
||||
// find the file
|
||||
WIN32_FIND_DATA find;
|
||||
HANDLE hFind = FindFirstFile(name, &find);
|
||||
if (hFind == INVALID_HANDLE_VALUE)
|
||||
HANDLE hFind = ::FindFirstFileW(name, &find);
|
||||
if (hFind == INVALID_HANDLE_VALUE) // does not exist
|
||||
{
|
||||
// does not exist
|
||||
CStringW strText;
|
||||
strText.Format(IDS_LOADERRORTEXT, name);
|
||||
MessageBoxW(hwnd, strText, NULL, MB_ICONERROR);
|
||||
ShowError(IDS_LOADERRORTEXT, name);
|
||||
return NULL;
|
||||
}
|
||||
DWORD dwFileSize = find.nFileSizeLow; // get file size
|
||||
FindClose(hFind);
|
||||
::FindClose(hFind);
|
||||
|
||||
// is file empty?
|
||||
if (dwFileSize == 0)
|
||||
if (find.nFileSizeLow == 0 && find.nFileSizeHigh == 0)
|
||||
{
|
||||
if (fIsMainFile)
|
||||
{
|
||||
FILETIME ft;
|
||||
FileTimeToLocalFileTime(&find.ftLastWriteTime, &ft);
|
||||
FileTimeToSystemTime(&ft, &fileTime);
|
||||
return SetBitmapAndInfo(NULL, name, dwFileSize, TRUE);
|
||||
}
|
||||
return InitializeImage(name, &find, TRUE);
|
||||
}
|
||||
|
||||
// load the image
|
||||
CImageDx img;
|
||||
img.LoadDx(name, &g_xDpi, &g_yDpi);
|
||||
float xDpi, yDpi;
|
||||
HRESULT hr = img.LoadDx(name, &xDpi, &yDpi);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
ShowError(IDS_LOADERRORTEXT, name);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
HBITMAP hBitmap = img.Detach();
|
||||
if (!fIsMainFile)
|
||||
return hBitmap;
|
||||
|
||||
g_xDpi = xDpi;
|
||||
g_yDpi = yDpi;
|
||||
if (g_xDpi <= 0)
|
||||
g_xDpi = 96;
|
||||
if (g_yDpi <= 0)
|
||||
g_yDpi = 96;
|
||||
|
||||
HBITMAP hBitmap = img.Detach();
|
||||
|
||||
if (hBitmap == NULL)
|
||||
{
|
||||
// cannot open
|
||||
CStringW strText;
|
||||
strText.Format(IDS_LOADERRORTEXT, name);
|
||||
MessageBoxW(hwnd, strText, NULL, MB_ICONERROR);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (fIsMainFile)
|
||||
{
|
||||
FILETIME ft;
|
||||
FileTimeToLocalFileTime(&find.ftLastWriteTime, &ft);
|
||||
FileTimeToSystemTime(&ft, &fileTime);
|
||||
SetBitmapAndInfo(hBitmap, name, dwFileSize, TRUE);
|
||||
}
|
||||
|
||||
SetBitmapAndInfo(hBitmap, name, &find, TRUE);
|
||||
return hBitmap;
|
||||
}
|
||||
|
||||
@@ -263,7 +328,7 @@ HBITMAP Rotate90DegreeBlt(HDC hDC1, INT cx, INT cy, BOOL bRight, BOOL bMono)
|
||||
#define M_PI 3.14159265
|
||||
#endif
|
||||
|
||||
HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical)
|
||||
HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical, BOOL bMono)
|
||||
{
|
||||
if (nDegree == 0)
|
||||
return CopyDIBImage(hbm);
|
||||
@@ -281,7 +346,11 @@ HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical)
|
||||
if (dx == 0 && dy == 0)
|
||||
return CopyDIBImage(hbm);
|
||||
|
||||
HBITMAP hbmNew = CreateColorDIB(cx + dx, cy + dy, RGB(255, 255, 255));
|
||||
HBITMAP hbmNew;
|
||||
if (bMono)
|
||||
hbmNew = CreateMonoBitmap(cx + dx, cy + dy, FALSE);
|
||||
else
|
||||
hbmNew = CreateColorDIB(cx + dx, cy + dy, RGB(255, 255, 255));
|
||||
if (!hbmNew)
|
||||
return NULL;
|
||||
|
||||
@@ -309,7 +378,140 @@ HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical)
|
||||
BitBlt(hDC2, delta, y, cx, 1, hDC1, 0, y, SRCCOPY);
|
||||
}
|
||||
}
|
||||
|
||||
SelectObject(hDC2, hbm2Old);
|
||||
DeleteDC(hDC2);
|
||||
return hbmNew;
|
||||
}
|
||||
|
||||
struct BITMAPINFODX : BITMAPINFO
|
||||
{
|
||||
RGBQUAD bmiColorsAdditional[256 - 1];
|
||||
};
|
||||
|
||||
HGLOBAL BitmapToClipboardDIB(HBITMAP hBitmap)
|
||||
{
|
||||
BITMAP bm;
|
||||
if (!GetObject(hBitmap, sizeof(BITMAP), &bm))
|
||||
return NULL;
|
||||
|
||||
BITMAPINFODX bmi;
|
||||
ZeroMemory(&bmi, sizeof(bmi));
|
||||
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
|
||||
bmi.bmiHeader.biWidth = bm.bmWidth;
|
||||
bmi.bmiHeader.biHeight = bm.bmHeight;
|
||||
bmi.bmiHeader.biPlanes = 1;
|
||||
bmi.bmiHeader.biBitCount = bm.bmBitsPixel;
|
||||
bmi.bmiHeader.biCompression = BI_RGB;
|
||||
bmi.bmiHeader.biSizeImage = bm.bmWidthBytes * bm.bmHeight;
|
||||
|
||||
INT cColors;
|
||||
if (bm.bmBitsPixel < 16)
|
||||
cColors = 1 << bm.bmBitsPixel;
|
||||
else
|
||||
cColors = 0;
|
||||
|
||||
HDC hDC = CreateCompatibleDC(NULL);
|
||||
|
||||
if (cColors)
|
||||
{
|
||||
HGDIOBJ hbmOld = SelectObject(hDC, hBitmap);
|
||||
cColors = GetDIBColorTable(hDC, 0, cColors, bmi.bmiColors);
|
||||
SelectObject(hDC, hbmOld);
|
||||
}
|
||||
|
||||
DWORD cbColors = cColors * sizeof(RGBQUAD);
|
||||
DWORD dwSize = sizeof(BITMAPINFOHEADER) + cbColors + bmi.bmiHeader.biSizeImage;
|
||||
HGLOBAL hGlobal = GlobalAlloc(GHND | GMEM_SHARE, dwSize);
|
||||
if (hGlobal)
|
||||
{
|
||||
LPBYTE pb = (LPBYTE)GlobalLock(hGlobal);
|
||||
if (pb)
|
||||
{
|
||||
CopyMemory(pb, &bmi, sizeof(BITMAPINFOHEADER));
|
||||
pb += sizeof(BITMAPINFOHEADER);
|
||||
|
||||
CopyMemory(pb, bmi.bmiColors, cbColors);
|
||||
pb += cbColors;
|
||||
|
||||
GetDIBits(hDC, hBitmap, 0, bm.bmHeight, pb, &bmi, DIB_RGB_COLORS);
|
||||
|
||||
GlobalUnlock(hGlobal);
|
||||
}
|
||||
else
|
||||
{
|
||||
GlobalFree(hGlobal);
|
||||
hGlobal = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
DeleteDC(hDC);
|
||||
|
||||
return hGlobal;
|
||||
}
|
||||
|
||||
HBITMAP BitmapFromClipboardDIB(HGLOBAL hGlobal)
|
||||
{
|
||||
LPBYTE pb = (LPBYTE)GlobalLock(hGlobal);
|
||||
if (!pb)
|
||||
return NULL;
|
||||
|
||||
LPBITMAPINFO pbmi = (LPBITMAPINFO)pb;
|
||||
pb += pbmi->bmiHeader.biSize;
|
||||
|
||||
INT cColors = 0, cbColors = 0;
|
||||
if (pbmi->bmiHeader.biSize == sizeof(BITMAPCOREHEADER))
|
||||
{
|
||||
LPBITMAPCOREINFO pbmci = (LPBITMAPCOREINFO)pbmi;
|
||||
WORD BitCount = pbmci->bmciHeader.bcBitCount;
|
||||
if (BitCount < 16)
|
||||
{
|
||||
cColors = (1 << BitCount);
|
||||
cbColors = cColors * sizeof(RGBTRIPLE);
|
||||
pb += cbColors;
|
||||
}
|
||||
}
|
||||
else if (pbmi->bmiHeader.biSize >= sizeof(BITMAPINFOHEADER))
|
||||
{
|
||||
WORD BitCount = pbmi->bmiHeader.biBitCount;
|
||||
if (BitCount < 16)
|
||||
{
|
||||
cColors = (1 << BitCount);
|
||||
cbColors = cColors * sizeof(RGBQUAD);
|
||||
pb += cbColors;
|
||||
}
|
||||
}
|
||||
|
||||
HDC hDC = CreateCompatibleDC(NULL);
|
||||
HBITMAP hBitmap = CreateDIBSection(hDC, pbmi, DIB_RGB_COLORS, NULL, NULL, 0);
|
||||
if (hBitmap)
|
||||
{
|
||||
SetDIBits(hDC, hBitmap, 0, labs(pbmi->bmiHeader.biHeight), pb, pbmi, DIB_RGB_COLORS);
|
||||
}
|
||||
DeleteDC(hDC);
|
||||
|
||||
GlobalUnlock(hGlobal);
|
||||
|
||||
return hBitmap;
|
||||
}
|
||||
|
||||
HBITMAP BitmapFromHEMF(HENHMETAFILE hEMF)
|
||||
{
|
||||
ENHMETAHEADER header;
|
||||
if (!GetEnhMetaFileHeader(hEMF, sizeof(header), &header))
|
||||
return NULL;
|
||||
|
||||
CRect rc = *(LPRECT)&header.rclBounds;
|
||||
INT cx = rc.Width(), cy = rc.Height();
|
||||
HBITMAP hbm = CreateColorDIB(cx, cy, RGB(255, 255, 255));
|
||||
if (!hbm)
|
||||
return NULL;
|
||||
|
||||
HDC hDC = CreateCompatibleDC(NULL);
|
||||
HGDIOBJ hbmOld = SelectObject(hDC, hbm);
|
||||
PlayEnhMetaFile(hDC, hEMF, &rc);
|
||||
SelectObject(hDC, hbmOld);
|
||||
DeleteDC(hDC);
|
||||
|
||||
return hbm;
|
||||
}
|
||||
|
@@ -1,15 +1,18 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/dib.h
|
||||
* PURPOSE: Some DIB related functions
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Some DIB related functions
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
HBITMAP CreateDIBWithProperties(int width, int height);
|
||||
HBITMAP CreateMonoBitmap(int width, int height, BOOL bWhite);
|
||||
HBITMAP CreateColorDIB(int width, int height, COLORREF rgb);
|
||||
HBITMAP CachedBufferDIB(HBITMAP hbm, int minimalWidth, int minimalHeight);
|
||||
|
||||
HBITMAP CopyMonoImage(HBITMAP hbm, INT cx = 0, INT cy = 0);
|
||||
|
||||
static inline HBITMAP CopyDIBImage(HBITMAP hbm, INT cx = 0, INT cy = 0)
|
||||
{
|
||||
@@ -17,19 +20,25 @@ static inline HBITMAP CopyDIBImage(HBITMAP hbm, INT cx = 0, INT cy = 0)
|
||||
}
|
||||
|
||||
int GetDIBWidth(HBITMAP hbm);
|
||||
|
||||
int GetDIBHeight(HBITMAP hbm);
|
||||
|
||||
BOOL SaveDIBToFile(HBITMAP hBitmap, LPTSTR FileName, HDC hDC);
|
||||
BOOL SaveDIBToFile(HBITMAP hBitmap, LPCWSTR FileName, BOOL fIsMainFile);
|
||||
|
||||
HBITMAP DoLoadImageFile(HWND hwnd, LPCTSTR name, BOOL fIsMainFile);
|
||||
HBITMAP DoLoadImageFile(HWND hwnd, LPCWSTR name, BOOL fIsMainFile);
|
||||
|
||||
void ShowFileLoadError(LPCTSTR name);
|
||||
void SetFileInfo(LPCWSTR name, LPWIN32_FIND_DATAW pFound, BOOL isAFile);
|
||||
|
||||
HBITMAP SetBitmapAndInfo(HBITMAP hBitmap, LPCTSTR name, DWORD dwFileSize, BOOL isFile);
|
||||
HBITMAP InitializeImage(LPCWSTR name, LPWIN32_FIND_DATAW pFound, BOOL isFile);
|
||||
HBITMAP SetBitmapAndInfo(HBITMAP hBitmap, LPCWSTR name, LPWIN32_FIND_DATAW pFound, BOOL isFile);
|
||||
|
||||
HBITMAP Rotate90DegreeBlt(HDC hDC1, INT cx, INT cy, BOOL bRight, BOOL bMono);
|
||||
|
||||
HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical);
|
||||
HBITMAP SkewDIB(HDC hDC1, HBITMAP hbm, INT nDegree, BOOL bVertical, BOOL bMono = FALSE);
|
||||
|
||||
float PpmFromDpi(float dpi);
|
||||
float PpcmFromDpi(float dpi);
|
||||
|
||||
#define ROUND(x) (INT)((x) + 0.5)
|
||||
|
||||
HGLOBAL BitmapToClipboardDIB(HBITMAP hBitmap);
|
||||
HBITMAP BitmapFromClipboardDIB(HGLOBAL hGlobal);
|
||||
HBITMAP BitmapFromHEMF(HENHMETAFILE hEMF);
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/drawing.cpp
|
||||
* PURPOSE: The drawing functions used by the tools
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: The drawing functions used by the tools
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
/* INCLUDES *********************************************************/
|
||||
@@ -116,46 +115,52 @@ Fill(HDC hdc, LONG x, LONG y, COLORREF color)
|
||||
void
|
||||
Erase(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG radius)
|
||||
{
|
||||
LONG a, b;
|
||||
HPEN oldPen;
|
||||
HBRUSH oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(color));
|
||||
LONG b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
|
||||
HBRUSH hbr = ::CreateSolidBrush(color);
|
||||
|
||||
b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
|
||||
oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, color));
|
||||
for(a = 0; a <= b; a++)
|
||||
Rectangle(hdc,
|
||||
(x1 * (b - a) + x2 * a) / b - radius,
|
||||
(y1 * (b - a) + y2 * a) / b - radius,
|
||||
(x1 * (b - a) + x2 * a) / b + radius,
|
||||
(y1 * (b - a) + y2 * a) / b + radius);
|
||||
DeleteObject(SelectObject(hdc, oldBrush));
|
||||
DeleteObject(SelectObject(hdc, oldPen));
|
||||
for (LONG a = 0; a <= b; a++)
|
||||
{
|
||||
LONG cx = (x1 * (b - a) + x2 * a) / b;
|
||||
LONG cy = (y1 * (b - a) + y2 * a) / b;
|
||||
RECT rc = { cx - radius, cy - radius, cx + radius, cy + radius };
|
||||
::FillRect(hdc, &rc, hbr);
|
||||
}
|
||||
|
||||
::DeleteObject(hbr);
|
||||
}
|
||||
|
||||
void
|
||||
Replace(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LONG radius)
|
||||
{
|
||||
LONG a, b, x, y;
|
||||
b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
|
||||
LONG b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
|
||||
|
||||
for(a = 0; a <= b; a++)
|
||||
for(y = (y1 * (b - a) + y2 * a) / b - radius + 1;
|
||||
y < (y1 * (b - a) + y2 * a) / b + radius + 1; y++)
|
||||
for(x = (x1 * (b - a) + x2 * a) / b - radius + 1;
|
||||
x < (x1 * (b - a) + x2 * a) / b + radius + 1; x++)
|
||||
if (GetPixel(hdc, x, y) == fg)
|
||||
SetPixel(hdc, x, y, bg);
|
||||
for (LONG a = 0; a <= b; a++)
|
||||
{
|
||||
LONG cx = (x1 * (b - a) + x2 * a) / b;
|
||||
LONG cy = (y1 * (b - a) + y2 * a) / b;
|
||||
RECT rc = { cx - radius, cy - radius, cx + radius, cy + radius };
|
||||
for (LONG y = rc.top; y < rc.bottom; ++y)
|
||||
{
|
||||
for (LONG x = rc.left; x < rc.right; ++x)
|
||||
{
|
||||
if (::GetPixel(hdc, x, y) == fg)
|
||||
::SetPixelV(hdc, x, y, bg);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Airbrush(HDC hdc, LONG x, LONG y, COLORREF color, LONG r)
|
||||
{
|
||||
LONG a, b;
|
||||
|
||||
for(b = -r; b <= r; b++)
|
||||
for(a = -r; a <= r; a++)
|
||||
if ((a * a + b * b <= r * r) && (rand() % 4 == 0))
|
||||
SetPixel(hdc, x + a, y + b, color);
|
||||
for (LONG dy = -r; dy <= r; dy++)
|
||||
{
|
||||
for (LONG dx = -r; dx <= r; dx++)
|
||||
{
|
||||
if ((dx * dx + dy * dy <= r * r) && (rand() % r == 0))
|
||||
::SetPixelV(hdc, x + dx, y + dy, color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@@ -183,7 +188,7 @@ Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style)
|
||||
case 2:
|
||||
MoveToEx(hdc, x1, y1, NULL);
|
||||
LineTo(hdc, x2, y2);
|
||||
SetPixel(hdc, x2, y2, color);
|
||||
::SetPixelV(hdc, x2, y2, color);
|
||||
break;
|
||||
case 3:
|
||||
for(a = 0; a <= b; a++)
|
||||
@@ -366,9 +371,9 @@ ColorKeyedMaskBlt(HDC hdcDest, int nXDest, int nYDest, int nWidth, int nHeight,
|
||||
|
||||
void DrawXorRect(HDC hdc, const RECT *prc)
|
||||
{
|
||||
HGDIOBJ oldPen = ::SelectObject(hdc, ::CreatePen(PS_SOLID, 0, RGB(255, 255, 255)));
|
||||
HGDIOBJ oldPen = ::SelectObject(hdc, ::CreatePen(PS_SOLID, 0, RGB(0, 0, 0)));
|
||||
HGDIOBJ oldBrush = ::SelectObject(hdc, ::GetStockObject(NULL_BRUSH));
|
||||
INT oldRop2 = SetROP2(hdc, R2_XORPEN);
|
||||
INT oldRop2 = SetROP2(hdc, R2_NOTXORPEN);
|
||||
::Rectangle(hdc, prc->left, prc->top, prc->right, prc->bottom);
|
||||
::SetROP2(hdc, oldRop2);
|
||||
::SelectObject(hdc, oldBrush);
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/drawing.h
|
||||
* PURPOSE: The drawing functions used by the tools
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: The drawing functions used by the tools
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/fullscreen.cpp
|
||||
* PURPOSE: Window for fullscreen view
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Window for fullscreen view
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
@@ -23,8 +22,8 @@ HWND CFullscreenWindow::DoCreate()
|
||||
|
||||
LRESULT CFullscreenWindow::OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
SendMessage(WM_SETICON, ICON_BIG, (LPARAM) LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)));
|
||||
SendMessage(WM_SETICON, ICON_SMALL, (LPARAM) LoadIcon(hProgInstance, MAKEINTRESOURCE(IDI_APPICON)));
|
||||
SendMessage(WM_SETICON, ICON_BIG, (LPARAM) LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDI_APPICON)));
|
||||
SendMessage(WM_SETICON, ICON_SMALL, (LPARAM) LoadIcon(g_hinstExe, MAKEINTRESOURCE(IDI_APPICON)));
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -50,12 +49,6 @@ LRESULT CFullscreenWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CFullscreenWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
Invalidate(TRUE);
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CFullscreenWindow::OnGetText(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
// return caption of the main window, instead
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/fullscreen.h
|
||||
* PURPOSE: Window for fullscreen view
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Window for fullscreen view
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
@@ -11,7 +10,8 @@
|
||||
class CFullscreenWindow : public CWindowImpl<CFullscreenWindow>
|
||||
{
|
||||
public:
|
||||
DECLARE_WND_CLASS_EX(_T("FullscreenWindow"), CS_DBLCLKS, COLOR_BACKGROUND)
|
||||
DECLARE_WND_CLASS_EX(_T("FullscreenWindow"), CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW,
|
||||
COLOR_BACKGROUND)
|
||||
|
||||
BEGIN_MSG_MAP(CFullscreenWindow)
|
||||
MESSAGE_HANDLER(WM_CREATE, OnCreate)
|
||||
@@ -19,7 +19,6 @@ public:
|
||||
MESSAGE_HANDLER(WM_KEYDOWN, OnCloseOrKeyDownOrLButtonDown)
|
||||
MESSAGE_HANDLER(WM_LBUTTONDOWN, OnCloseOrKeyDownOrLButtonDown)
|
||||
MESSAGE_HANDLER(WM_PAINT, OnPaint)
|
||||
MESSAGE_HANDLER(WM_SIZE, OnSize)
|
||||
MESSAGE_HANDLER(WM_GETTEXT, OnGetText)
|
||||
END_MSG_MAP()
|
||||
|
||||
@@ -29,6 +28,5 @@ private:
|
||||
LRESULT OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnCloseOrKeyDownOrLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnGetText(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
};
|
||||
|
@@ -1,27 +1,24 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/globalvar.h
|
||||
* PURPOSE: Declaring global variables for later initialization
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Declaring global variables for later initialization
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* VARIABLES declared in main.cpp ***********************************/
|
||||
|
||||
extern BOOL askBeforeEnlarging;
|
||||
extern BOOL g_askBeforeEnlarging;
|
||||
|
||||
extern POINT start;
|
||||
extern POINT last;
|
||||
extern POINT g_ptStart, g_ptEnd;
|
||||
|
||||
extern HINSTANCE hProgInstance;
|
||||
extern HINSTANCE g_hinstExe;
|
||||
|
||||
extern TCHAR filepathname[MAX_LONG_PATH];
|
||||
extern BOOL isAFile;
|
||||
extern BOOL imageSaved;
|
||||
|
||||
extern BOOL showGrid;
|
||||
extern TCHAR g_szFileName[MAX_LONG_PATH];
|
||||
extern BOOL g_isAFile;
|
||||
extern BOOL g_imageSaved;
|
||||
extern BOOL g_showGrid;
|
||||
|
||||
extern CMainWindow mainWindow;
|
||||
|
||||
@@ -40,11 +37,11 @@ extern ToolsModel toolsModel;
|
||||
extern SelectionModel selectionModel;
|
||||
extern PaletteModel paletteModel;
|
||||
|
||||
extern HWND hStatusBar;
|
||||
extern HWND g_hStatusBar;
|
||||
extern float g_xDpi;
|
||||
extern float g_yDpi;
|
||||
extern INT fileSize;
|
||||
extern SYSTEMTIME fileTime;
|
||||
extern INT g_fileSize;
|
||||
extern SYSTEMTIME g_fileTime;
|
||||
|
||||
extern CFullscreenWindow fullscreenWindow;
|
||||
extern CMiniatureWindow miniature;
|
||||
|
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/history.cpp
|
||||
* PURPOSE: Undo and redo functionality
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Undo and redo functionality
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
* Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
@@ -12,178 +12,159 @@ ImageModel imageModel;
|
||||
|
||||
/* FUNCTIONS ********************************************************/
|
||||
|
||||
void ImageModel::NotifyDimensionsChanged()
|
||||
{
|
||||
if (canvasWindow.IsWindow())
|
||||
canvasWindow.SendMessage(WM_IMAGEMODELDIMENSIONSCHANGED);
|
||||
}
|
||||
|
||||
void ImageModel::NotifyImageChanged()
|
||||
{
|
||||
if (canvasWindow.IsWindow())
|
||||
canvasWindow.SendMessage(WM_IMAGEMODELIMAGECHANGED);
|
||||
canvasWindow.Invalidate(FALSE);
|
||||
if (miniature.IsWindow())
|
||||
miniature.Invalidate(FALSE);
|
||||
}
|
||||
|
||||
ImageModel::ImageModel()
|
||||
: m_hDrawingDC(::CreateCompatibleDC(NULL))
|
||||
, m_currInd(0)
|
||||
, m_undoSteps(0)
|
||||
, m_redoSteps(0)
|
||||
{
|
||||
currInd = 0;
|
||||
undoSteps = 0;
|
||||
redoSteps = 0;
|
||||
imageSaved = TRUE;
|
||||
ZeroMemory(m_hBms, sizeof(m_hBms));
|
||||
|
||||
// prepare a minimal usable bitmap
|
||||
int imgXRes = 1;
|
||||
int imgYRes = 1;
|
||||
m_hBms[0] = CreateColorDIB(1, 1, RGB(255, 255, 255));
|
||||
m_hbmOld = ::SelectObject(m_hDrawingDC, m_hBms[0]);
|
||||
|
||||
hDrawingDC = CreateCompatibleDC(NULL);
|
||||
SelectObject(hDrawingDC, CreatePen(PS_SOLID, 0, paletteModel.GetFgColor()));
|
||||
SelectObject(hDrawingDC, CreateSolidBrush(paletteModel.GetBgColor()));
|
||||
|
||||
hBms[0] = CreateDIBWithProperties(imgXRes, imgYRes);
|
||||
SelectObject(hDrawingDC, hBms[0]);
|
||||
Rectangle(hDrawingDC, 0 - 1, 0 - 1, imgXRes + 1, imgYRes + 1);
|
||||
g_imageSaved = TRUE;
|
||||
}
|
||||
|
||||
void ImageModel::CopyPrevious()
|
||||
ImageModel::~ImageModel()
|
||||
{
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, currInd);
|
||||
DeleteObject(hBms[(currInd + 1) % HISTORYSIZE]);
|
||||
hBms[(currInd + 1) % HISTORYSIZE] = CopyDIBImage(hBms[currInd]);
|
||||
currInd = (currInd + 1) % HISTORYSIZE;
|
||||
if (undoSteps < HISTORYSIZE - 1)
|
||||
undoSteps++;
|
||||
redoSteps = 0;
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
imageSaved = FALSE;
|
||||
::DeleteDC(m_hDrawingDC);
|
||||
|
||||
for (size_t i = 0; i < HISTORYSIZE; ++i)
|
||||
{
|
||||
if (m_hBms[i])
|
||||
::DeleteObject(m_hBms[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void ImageModel::Undo(BOOL bClearRedo)
|
||||
{
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, undoSteps);
|
||||
if (undoSteps > 0)
|
||||
{
|
||||
int oldWidth = GetWidth();
|
||||
int oldHeight = GetHeight();
|
||||
selectionModel.m_bShow = FALSE;
|
||||
currInd = (currInd + HISTORYSIZE - 1) % HISTORYSIZE;
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
undoSteps--;
|
||||
if (bClearRedo)
|
||||
redoSteps = 0;
|
||||
else if (redoSteps < HISTORYSIZE - 1)
|
||||
redoSteps++;
|
||||
if (GetWidth() != oldWidth || GetHeight() != oldHeight)
|
||||
NotifyDimensionsChanged();
|
||||
NotifyImageChanged();
|
||||
}
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, m_undoSteps);
|
||||
if (!CanUndo())
|
||||
return;
|
||||
|
||||
selectionModel.HideSelection();
|
||||
|
||||
// Select previous item
|
||||
m_currInd = (m_currInd + HISTORYSIZE - 1) % HISTORYSIZE;
|
||||
::SelectObject(m_hDrawingDC, m_hBms[m_currInd]);
|
||||
|
||||
m_undoSteps--;
|
||||
if (bClearRedo)
|
||||
m_redoSteps = 0;
|
||||
else if (m_redoSteps < HISTORYSIZE - 1)
|
||||
m_redoSteps++;
|
||||
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::Redo()
|
||||
{
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, redoSteps);
|
||||
if (redoSteps > 0)
|
||||
{
|
||||
int oldWidth = GetWidth();
|
||||
int oldHeight = GetHeight();
|
||||
selectionModel.m_bShow = FALSE;
|
||||
currInd = (currInd + 1) % HISTORYSIZE;
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
redoSteps--;
|
||||
if (undoSteps < HISTORYSIZE - 1)
|
||||
undoSteps++;
|
||||
if (GetWidth() != oldWidth || GetHeight() != oldHeight)
|
||||
NotifyDimensionsChanged();
|
||||
NotifyImageChanged();
|
||||
}
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, m_redoSteps);
|
||||
if (!CanRedo())
|
||||
return;
|
||||
|
||||
selectionModel.HideSelection();
|
||||
|
||||
// Select next item
|
||||
m_currInd = (m_currInd + 1) % HISTORYSIZE;
|
||||
::SelectObject(m_hDrawingDC, m_hBms[m_currInd]);
|
||||
|
||||
m_redoSteps--;
|
||||
if (m_undoSteps < HISTORYSIZE - 1)
|
||||
m_undoSteps++;
|
||||
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::ResetToPrevious()
|
||||
{
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, currInd);
|
||||
DeleteObject(hBms[currInd]);
|
||||
hBms[currInd] = CopyDIBImage(hBms[(currInd + HISTORYSIZE - 1) % HISTORYSIZE]);
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, m_currInd);
|
||||
|
||||
// Revert current item with previous item
|
||||
::DeleteObject(m_hBms[m_currInd]);
|
||||
m_hBms[m_currInd] = CopyDIBImage(m_hBms[(m_currInd + HISTORYSIZE - 1) % HISTORYSIZE]);
|
||||
::SelectObject(m_hDrawingDC, m_hBms[m_currInd]);
|
||||
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::ClearHistory()
|
||||
{
|
||||
undoSteps = 0;
|
||||
redoSteps = 0;
|
||||
m_undoSteps = 0;
|
||||
m_redoSteps = 0;
|
||||
}
|
||||
|
||||
void ImageModel::Insert(HBITMAP hbm)
|
||||
void ImageModel::PushImageForUndo(HBITMAP hbm)
|
||||
{
|
||||
int oldWidth = GetWidth();
|
||||
int oldHeight = GetHeight();
|
||||
DeleteObject(hBms[(currInd + 1) % HISTORYSIZE]);
|
||||
hBms[(currInd + 1) % HISTORYSIZE] = hbm;
|
||||
currInd = (currInd + 1) % HISTORYSIZE;
|
||||
if (undoSteps < HISTORYSIZE - 1)
|
||||
undoSteps++;
|
||||
redoSteps = 0;
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
if (GetWidth() != oldWidth || GetHeight() != oldHeight)
|
||||
NotifyDimensionsChanged();
|
||||
ATLTRACE("%s: %d\n", __FUNCTION__, m_currInd);
|
||||
|
||||
// Go to the next item with an HBITMAP or current item
|
||||
::DeleteObject(m_hBms[(m_currInd + 1) % HISTORYSIZE]);
|
||||
m_hBms[(m_currInd + 1) % HISTORYSIZE] = (hbm ? hbm : CopyDIBImage(m_hBms[m_currInd]));
|
||||
m_currInd = (m_currInd + 1) % HISTORYSIZE;
|
||||
::SelectObject(m_hDrawingDC, m_hBms[m_currInd]);
|
||||
|
||||
if (m_undoSteps < HISTORYSIZE - 1)
|
||||
m_undoSteps++;
|
||||
m_redoSteps = 0;
|
||||
|
||||
g_imageSaved = FALSE;
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::Crop(int nWidth, int nHeight, int nOffsetX, int nOffsetY)
|
||||
{
|
||||
HDC hdc;
|
||||
HPEN oldPen;
|
||||
HBRUSH oldBrush;
|
||||
int oldWidth = GetWidth();
|
||||
int oldHeight = GetHeight();
|
||||
|
||||
// We cannot create bitmaps of size zero
|
||||
if (nWidth <= 0)
|
||||
nWidth = 1;
|
||||
if (nHeight <= 0)
|
||||
nHeight = 1;
|
||||
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
DeleteObject(hBms[(currInd + 1) % HISTORYSIZE]);
|
||||
hBms[(currInd + 1) % HISTORYSIZE] = CreateDIBWithProperties(nWidth, nHeight);
|
||||
currInd = (currInd + 1) % HISTORYSIZE;
|
||||
if (undoSteps < HISTORYSIZE - 1)
|
||||
undoSteps++;
|
||||
redoSteps = 0;
|
||||
// Create an HBITMAP
|
||||
HBITMAP hbmCropped = CreateDIBWithProperties(nWidth, nHeight);
|
||||
if (!hbmCropped)
|
||||
return;
|
||||
|
||||
hdc = CreateCompatibleDC(hDrawingDC);
|
||||
SelectObject(hdc, hBms[currInd]);
|
||||
// Select the HBITMAP by memory DC
|
||||
HDC hdcMem = ::CreateCompatibleDC(m_hDrawingDC);
|
||||
HGDIOBJ hbmOld = ::SelectObject(hdcMem, hbmCropped);
|
||||
|
||||
oldPen = (HPEN) SelectObject(hdc, CreatePen(PS_SOLID, 1, paletteModel.GetBgColor()));
|
||||
oldBrush = (HBRUSH) SelectObject(hdc, CreateSolidBrush(paletteModel.GetBgColor()));
|
||||
Rectangle(hdc, 0, 0, nWidth, nHeight);
|
||||
BitBlt(hdc, -nOffsetX, -nOffsetY, GetWidth(), GetHeight(), hDrawingDC, 0, 0, SRCCOPY);
|
||||
DeleteObject(SelectObject(hdc, oldBrush));
|
||||
DeleteObject(SelectObject(hdc, oldPen));
|
||||
DeleteDC(hdc);
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
// Fill background of the HBITMAP
|
||||
RECT rcBack = { 0, 0, nWidth, nHeight };
|
||||
HBRUSH hbrBack = ::CreateSolidBrush(paletteModel.GetBgColor());
|
||||
::FillRect(hdcMem, &rcBack, hbrBack);
|
||||
::DeleteObject(hbrBack);
|
||||
|
||||
// Copy the old content
|
||||
::BitBlt(hdcMem, -nOffsetX, -nOffsetY, GetWidth(), GetHeight(), m_hDrawingDC, 0, 0, SRCCOPY);
|
||||
|
||||
// Clean up
|
||||
::SelectObject(hdcMem, hbmOld);
|
||||
::DeleteDC(hdcMem);
|
||||
|
||||
// Push it
|
||||
PushImageForUndo(hbmCropped);
|
||||
|
||||
if (GetWidth() != oldWidth || GetHeight() != oldHeight)
|
||||
NotifyDimensionsChanged();
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::SaveImage(LPTSTR lpFileName)
|
||||
void ImageModel::SaveImage(LPCTSTR lpFileName)
|
||||
{
|
||||
SaveDIBToFile(hBms[currInd], lpFileName, hDrawingDC);
|
||||
SaveDIBToFile(m_hBms[m_currInd], lpFileName, TRUE);
|
||||
}
|
||||
|
||||
BOOL ImageModel::IsImageSaved() const
|
||||
{
|
||||
return imageSaved;
|
||||
}
|
||||
|
||||
BOOL ImageModel::HasUndoSteps() const
|
||||
{
|
||||
return undoSteps > 0;
|
||||
}
|
||||
|
||||
BOOL ImageModel::HasRedoSteps() const
|
||||
{
|
||||
return redoSteps > 0;
|
||||
return g_imageSaved;
|
||||
}
|
||||
|
||||
void ImageModel::StretchSkew(int nStretchPercentX, int nStretchPercentY, int nSkewDegX, int nSkewDegY)
|
||||
@@ -194,65 +175,57 @@ void ImageModel::StretchSkew(int nStretchPercentX, int nStretchPercentY, int nSk
|
||||
INT newHeight = oldHeight * nStretchPercentY / 100;
|
||||
if (oldWidth != newWidth || oldHeight != newHeight)
|
||||
{
|
||||
HBITMAP hbm0 = CopyDIBImage(hBms[currInd], newWidth, newHeight);
|
||||
Insert(hbm0);
|
||||
HBITMAP hbm0 = CopyDIBImage(m_hBms[m_currInd], newWidth, newHeight);
|
||||
PushImageForUndo(hbm0);
|
||||
}
|
||||
if (nSkewDegX)
|
||||
{
|
||||
HBITMAP hbm1 = SkewDIB(hDrawingDC, hBms[currInd], nSkewDegX, FALSE);
|
||||
Insert(hbm1);
|
||||
HBITMAP hbm1 = SkewDIB(m_hDrawingDC, m_hBms[m_currInd], nSkewDegX, FALSE);
|
||||
PushImageForUndo(hbm1);
|
||||
}
|
||||
if (nSkewDegY)
|
||||
{
|
||||
HBITMAP hbm2 = SkewDIB(hDrawingDC, hBms[currInd], nSkewDegY, TRUE);
|
||||
Insert(hbm2);
|
||||
HBITMAP hbm2 = SkewDIB(m_hDrawingDC, m_hBms[m_currInd], nSkewDegY, TRUE);
|
||||
PushImageForUndo(hbm2);
|
||||
}
|
||||
if (GetWidth() != oldWidth || GetHeight() != oldHeight)
|
||||
NotifyDimensionsChanged();
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
int ImageModel::GetWidth() const
|
||||
{
|
||||
return GetDIBWidth(hBms[currInd]);
|
||||
return GetDIBWidth(m_hBms[m_currInd]);
|
||||
}
|
||||
|
||||
int ImageModel::GetHeight() const
|
||||
{
|
||||
return GetDIBHeight(hBms[currInd]);
|
||||
return GetDIBHeight(m_hBms[m_currInd]);
|
||||
}
|
||||
|
||||
void ImageModel::InvertColors()
|
||||
{
|
||||
RECT rect = {0, 0, GetWidth(), GetHeight()};
|
||||
CopyPrevious();
|
||||
InvertRect(hDrawingDC, &rect);
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::Clear(COLORREF color)
|
||||
{
|
||||
Rectangle(hDrawingDC, 0 - 1, 0 - 1, GetWidth() + 1, GetHeight() + 1);
|
||||
PushImageForUndo();
|
||||
InvertRect(m_hDrawingDC, &rect);
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
HDC ImageModel::GetDC()
|
||||
{
|
||||
return hDrawingDC;
|
||||
return m_hDrawingDC;
|
||||
}
|
||||
|
||||
void ImageModel::FlipHorizontally()
|
||||
{
|
||||
CopyPrevious();
|
||||
StretchBlt(hDrawingDC, GetWidth() - 1, 0, -GetWidth(), GetHeight(), GetDC(), 0, 0,
|
||||
PushImageForUndo();
|
||||
StretchBlt(m_hDrawingDC, GetWidth() - 1, 0, -GetWidth(), GetHeight(), GetDC(), 0, 0,
|
||||
GetWidth(), GetHeight(), SRCCOPY);
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::FlipVertically()
|
||||
{
|
||||
CopyPrevious();
|
||||
StretchBlt(hDrawingDC, 0, GetHeight() - 1, GetWidth(), -GetHeight(), GetDC(), 0, 0,
|
||||
PushImageForUndo();
|
||||
StretchBlt(m_hDrawingDC, 0, GetHeight() - 1, GetWidth(), -GetHeight(), GetDC(), 0, 0,
|
||||
GetWidth(), GetHeight(), SRCCOPY);
|
||||
NotifyImageChanged();
|
||||
}
|
||||
@@ -261,41 +234,36 @@ void ImageModel::RotateNTimes90Degrees(int iN)
|
||||
{
|
||||
switch (iN)
|
||||
{
|
||||
case 1:
|
||||
case 3:
|
||||
DeleteObject(hBms[(currInd + 1) % HISTORYSIZE]);
|
||||
hBms[(currInd + 1) % HISTORYSIZE] = Rotate90DegreeBlt(hDrawingDC, GetWidth(), GetHeight(), iN == 1, FALSE);
|
||||
currInd = (currInd + 1) % HISTORYSIZE;
|
||||
if (undoSteps < HISTORYSIZE - 1)
|
||||
undoSteps++;
|
||||
redoSteps = 0;
|
||||
SelectObject(hDrawingDC, hBms[currInd]);
|
||||
imageSaved = FALSE;
|
||||
NotifyDimensionsChanged();
|
||||
break;
|
||||
case 2:
|
||||
CopyPrevious();
|
||||
StretchBlt(hDrawingDC, GetWidth() - 1, GetHeight() - 1, -GetWidth(), -GetHeight(), GetDC(),
|
||||
0, 0, GetWidth(), GetHeight(), SRCCOPY);
|
||||
break;
|
||||
case 1:
|
||||
case 3:
|
||||
{
|
||||
HBITMAP hbm = Rotate90DegreeBlt(m_hDrawingDC, GetWidth(), GetHeight(), iN == 1, FALSE);
|
||||
if (hbm)
|
||||
PushImageForUndo(hbm);
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
PushImageForUndo();
|
||||
StretchBlt(m_hDrawingDC, GetWidth() - 1, GetHeight() - 1, -GetWidth(), -GetHeight(),
|
||||
m_hDrawingDC, 0, 0, GetWidth(), GetHeight(), SRCCOPY);
|
||||
break;
|
||||
}
|
||||
}
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::DeleteSelection()
|
||||
{
|
||||
if (!selectionModel.m_bShow)
|
||||
return;
|
||||
|
||||
selectionModel.TakeOff();
|
||||
selectionModel.m_bShow = FALSE;
|
||||
selectionModel.ClearColor();
|
||||
selectionModel.ClearMask();
|
||||
NotifyImageChanged();
|
||||
}
|
||||
|
||||
void ImageModel::Bound(POINT& pt)
|
||||
void ImageModel::Clamp(POINT& pt) const
|
||||
{
|
||||
pt.x = max(0, min(pt.x, GetWidth()));
|
||||
pt.y = max(0, min(pt.y, GetHeight()));
|
||||
}
|
||||
|
||||
HBITMAP ImageModel::CopyBitmap()
|
||||
{
|
||||
// NOTE: An app cannot select a bitmap into more than one device context at a time.
|
||||
::SelectObject(m_hDrawingDC, m_hbmOld); // De-select
|
||||
HBITMAP ret = CopyDIBImage(m_hBms[m_currInd]);
|
||||
m_hbmOld = ::SelectObject(m_hDrawingDC, m_hBms[m_currInd]); // Re-select
|
||||
return ret;
|
||||
}
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/history.h
|
||||
* PURPOSE: Undo and redo functionality
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Undo and redo functionality
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
@@ -13,38 +12,37 @@
|
||||
|
||||
class ImageModel
|
||||
{
|
||||
private:
|
||||
void NotifyDimensionsChanged();
|
||||
void NotifyImageChanged();
|
||||
HDC hDrawingDC;
|
||||
public:
|
||||
HBITMAP hBms[HISTORYSIZE];
|
||||
private:
|
||||
int currInd;
|
||||
int undoSteps;
|
||||
int redoSteps;
|
||||
public:
|
||||
ImageModel();
|
||||
void CopyPrevious(void);
|
||||
virtual ~ImageModel();
|
||||
|
||||
HDC GetDC();
|
||||
BOOL CanUndo() const { return m_undoSteps > 0; }
|
||||
BOOL CanRedo() const { return m_redoSteps > 0; }
|
||||
void PushImageForUndo(HBITMAP hbm = NULL);
|
||||
void ResetToPrevious(void);
|
||||
void Undo(BOOL bClearRedo = FALSE);
|
||||
void Redo(void);
|
||||
void ResetToPrevious(void);
|
||||
void ClearHistory(void);
|
||||
void Insert(HBITMAP hbm);
|
||||
void Crop(int nWidth, int nHeight, int nOffsetX = 0, int nOffsetY = 0);
|
||||
void SaveImage(LPTSTR lpFileName);
|
||||
void SaveImage(LPCTSTR lpFileName);
|
||||
BOOL IsImageSaved() const;
|
||||
BOOL HasUndoSteps() const;
|
||||
BOOL HasRedoSteps() const;
|
||||
void StretchSkew(int nStretchPercentX, int nStretchPercentY, int nSkewDegX = 0, int nSkewDegY = 0);
|
||||
int GetWidth() const;
|
||||
int GetHeight() const;
|
||||
HBITMAP CopyBitmap();
|
||||
void InvertColors();
|
||||
void Clear(COLORREF color = 0x00ffffff);
|
||||
HDC GetDC();
|
||||
void FlipHorizontally();
|
||||
void FlipVertically();
|
||||
void RotateNTimes90Degrees(int iN);
|
||||
void DeleteSelection();
|
||||
void Bound(POINT& pt);
|
||||
void Clamp(POINT& pt) const;
|
||||
void NotifyImageChanged();
|
||||
|
||||
protected:
|
||||
HDC m_hDrawingDC; // The device context for this class
|
||||
int m_currInd; // The current index in m_hBms
|
||||
int m_undoSteps; // The undo-able count
|
||||
int m_redoSteps; // The redo-able count
|
||||
HBITMAP m_hBms[HISTORYSIZE]; // A rotation buffer of HBITMAPs
|
||||
HGDIOBJ m_hbmOld;
|
||||
};
|
||||
|
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* Превод на Български/ Bulgarian translation
|
||||
* https://reactos.org/wiki/Bulgarian_translation
|
||||
* LOCATION: base/applications/mspaint/lang
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Bulgarian resource file
|
||||
* TRANSLATORS: Copyright 2009-2012 S. Stanev (CCTAHEB) <sstpr@narod.ru>
|
||||
* Copyright 2022 Nikolay Dimitrov <delphipro@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT
|
||||
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -139,31 +158,31 @@ BEGIN
|
||||
PUSHBUTTON "Отказ", IDCANCEL, 125, 24, 48, 14
|
||||
END
|
||||
|
||||
IDD_ATTRIBUTES DIALOGEX 100, 100, 225, 120
|
||||
IDD_ATTRIBUTES DIALOGEX 100, 100, 243, 120
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Принадлежности"
|
||||
BEGIN
|
||||
LTEXT "&Ширина:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Височина:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Ширина:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Височина:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Дата на файла:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Файлов размер:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Разделителна:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Неналично", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Неналично", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Неналично", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "Дата на файла:", IDD_ATTRIBUTESTEXT3, 10, 5, 64, 10
|
||||
LTEXT "Файлов размер:", IDD_ATTRIBUTESTEXT4, 10, 15, 64, 10
|
||||
LTEXT "Разделителна:", IDD_ATTRIBUTESTEXT5, 10, 25, 64, 10
|
||||
LTEXT "Неналично", IDD_ATTRIBUTESTEXT6, 77, 5, 90, 10
|
||||
LTEXT "Неналично", IDD_ATTRIBUTESTEXT7, 77, 15, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 77, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Единици", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Инчове", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Сантиметри", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "Пиксели", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Инчове", IDD_ATTRIBUTESRB1, 12, 69, 40, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Санти&метри", IDD_ATTRIBUTESRB2, 55, 69, 54, 10
|
||||
AUTORADIOBUTTON "&Пиксели", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Цветове", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Черно-бяло", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Цветове", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
DEFPUSHBUTTON "Добре", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Отказ", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "По подразбиране", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
AUTORADIOBUTTON "&Черно-бяло", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Цв&етове", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "Добре", IDOK, 170, 8, 66, 14
|
||||
PUSHBUTTON "Отказ", IDCANCEL, 170, 24, 66, 14
|
||||
PUSHBUTTON "По по&дразбиране", IDD_ATTRIBUTESSTANDARD, 170, 40, 66, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Всички файлове"
|
||||
IDS_ALLPICTUREFILES "Снимки"
|
||||
IDS_FILESIZE "%d разряда"
|
||||
IDS_PRINTRES "%d x %d точки на метър"
|
||||
IDS_INTNUMBERS "Моля въведете само числа!"
|
||||
IDS_PERCENTAGE "Процента може да бъде между 1 и 500."
|
||||
IDS_ANGLE "Ъгълът трябва да бъде между -89 и 89."
|
||||
@@ -242,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "Наклонен"
|
||||
IDS_UNDERLINE "Подчертан"
|
||||
IDS_VERTICAL "Вертикален"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/cs-CZ.rc
|
||||
* PURPOSE: Czech Language resource file
|
||||
* TRANSLATOR: Radek Liska aka Black_Fox (radekliska at gmail dot com)
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Czech resource file
|
||||
* TRANSLATORS: Copyright 2009-2010 Radek Liška aka Black_Fox <radekliska@gmail.com>
|
||||
* Copyright 2011 Kamil Hornicek <kamil.hornicek@reactos.org>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_CZECH, SUBLANG_DEFAULT
|
||||
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +163,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributy"
|
||||
BEGIN
|
||||
LTEXT "Šíř&ka:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Výška:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Šířka:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Výška:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Datum změny:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Velikost souboru:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Rozlišení:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Nedostupné", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Nedostupné", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Nedostupné", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "Datum změny:", IDD_ATTRIBUTESTEXT3, 10, 5, 64, 10
|
||||
LTEXT "Velikost souboru:", IDD_ATTRIBUTESTEXT4, 10, 15, 64, 10
|
||||
LTEXT "Rozlišení:", IDD_ATTRIBUTESTEXT5, 10, 25, 64, 10
|
||||
LTEXT "Nedostupné", IDD_ATTRIBUTESTEXT6, 77, 5, 90, 10
|
||||
LTEXT "Nedostupné", IDD_ATTRIBUTESTEXT7, 77, 15, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 77, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Jednotka", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Palce", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Centimetry", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "Pixely", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
AUTORADIOBUTTON "P&alce", IDD_ATTRIBUTESRB1, 12, 69, 40, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Centi&metry", IDD_ATTRIBUTESRB2, 55, 69, 54, 10
|
||||
AUTORADIOBUTTON "&Pixely", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Barvy", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Černobílé", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Barvy", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "Č&ernobílé", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Barvy", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Storno", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Výchozí", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "Výc&hozí", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Všechny soubory"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bajtů"
|
||||
IDS_PRINTRES "%d x %d pixelů na metr"
|
||||
IDS_INTNUMBERS "Zadávejte pouze celá čísla!"
|
||||
IDS_PERCENTAGE "Měřítko musí být mezi 1 a 500."
|
||||
IDS_ANGLE "Úhel musí být -89 a 89."
|
||||
@@ -242,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/de-DE.rc
|
||||
* PURPOSE: German Language resource file (reference language file)
|
||||
* TRANSLATOR: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: German resource file
|
||||
* TRANSLATOR: Copyright 2009 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
|
||||
@@ -100,6 +99,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +162,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attribute"
|
||||
BEGIN
|
||||
LTEXT "&Breite:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Höhe:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Breite:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Höhe:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Dateidatum:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Dateigröße:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Auflösung:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Maßeinheit", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Zoll", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "Pixel", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Zoll", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Pixel", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Farben", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Schwarzweiß", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Farben", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "&Schwarzweiß", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Farben", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Abbrechen", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Standard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "Stan&dard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +250,6 @@ BEGIN
|
||||
IDS_ALLFILES "Alle Dateien"
|
||||
IDS_ALLPICTUREFILES "Alle Bilddateien"
|
||||
IDS_FILESIZE "%d Bytes"
|
||||
IDS_PRINTRES "%d x %d Pixel pro Meter"
|
||||
IDS_INTNUMBERS "Bitte geben Sie nur ganze Zahlen ein!"
|
||||
IDS_PERCENTAGE "Der Prozentsatz muss zwischen 1 und 500 liegen."
|
||||
IDS_ANGLE "Der Winkel muss zwischen -89 und 89 liegen."
|
||||
@@ -242,4 +259,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/en-GB.rc
|
||||
* PURPOSE: British English Language resource file
|
||||
* TRANSLATOR: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: English (United Kingdom) resource file
|
||||
* TRANSLATOR: Copyright 2009 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK
|
||||
@@ -100,6 +99,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +162,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attributes"
|
||||
BEGIN
|
||||
LTEXT "&Width:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Height:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Width:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "&Height:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "File &date:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "File &size:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Resolution:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "File date:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "File size:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Resolution:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "dpi", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Units", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Inches", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Pixels", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Colours", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "&Black and white", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Co&lours", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "Co&lours", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Standard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "&Standard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +250,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +259,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d dots per inch"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/en-US.rc
|
||||
* PURPOSE: US-English Language resource file
|
||||
* TRANSLATORS: first times touched from en-GB.rc file by Mario Kacmar
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: English (United States) resource file
|
||||
* TRANSLATORS: Copyright 2009 Benedikt Freisen <b.freisen@gmx.net>
|
||||
* Copyright 2009 Mário Kačmár aka Kario <kario@szm.sk>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +163,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attributes"
|
||||
BEGIN
|
||||
LTEXT "&Width:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Height:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Width:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "&Height:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "File &date:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "File &size:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Resolution:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "File date:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "File size:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Resolution:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Not available", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "dpi", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Units", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Inches", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Pixels", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Colors", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "&Black and white", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Co&lors", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "Co&lors", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Cancel", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Default", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "&Default", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d dots per inch"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,11 +1,11 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/es-ES.rc
|
||||
* PURPOSE: Spanish Language resource file
|
||||
* TRANSLATORS: Gabriel Ilardi
|
||||
* Ismael Ferreras Morezuelas
|
||||
* Catalin Gabriel Draghita
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Spanish (Spain) resource file
|
||||
* TRANSLATORS: Copyright 2009 Gabriel Ilardi <gabrielilardi@hotmail.it>
|
||||
* Copyright 2009 Javier Remacha <remialdo@gmail.com>
|
||||
* Copyright 2014-2016 Ismael Ferreras Morezuelas <swyterzone+ros@gmail.com>
|
||||
* Copyright 2020 Catalin Gabriel Draghita <catalingabriel.reactos@outlook.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||
@@ -102,6 +102,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -146,26 +165,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributos"
|
||||
BEGIN
|
||||
LTEXT "&Anchura:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Al&tura:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Anchura:", IDD_ATTRIBUTESTEXT1, 10, 42, 30, 10
|
||||
LTEXT "Altura:", IDD_ATTRIBUTESTEXT2, 101, 42, 23, 10
|
||||
LTEXT "Fecha modificación:", IDD_ATTRIBUTESTEXT3, 3, 5, 67, 10, SS_RIGHT
|
||||
LTEXT "Espacio en disco:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10, SS_RIGHT
|
||||
LTEXT "Resolución:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10, SS_RIGHT
|
||||
LTEXT "No disponible", IDD_ATTRIBUTESTEXT6, 73, 5, 80, 10
|
||||
LTEXT "No disponible", IDD_ATTRIBUTESTEXT7, 73, 15, 80, 10
|
||||
LTEXT "No disponible", IDD_ATTRIBUTESTEXT8, 73, 25, 80, 10
|
||||
GROUPBOX "Unidades ", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Pulgadas", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Centímetros", IDD_ATTRIBUTESRB2, 60, 69, 51, 10
|
||||
AUTORADIOBUTTON "Píxeles", IDD_ATTRIBUTESRB3, 120, 69, 42, 10
|
||||
GROUPBOX "Colores ", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Blanco y negro", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "En color", IDD_ATTRIBUTESRB5, 92, 100, 40, 10
|
||||
LTEXT "Fecha modificación:", IDD_ATTRIBUTESTEXT3, 10, 5, 64, 10
|
||||
LTEXT "Espacio en disco:", IDD_ATTRIBUTESTEXT4, 10, 15, 64, 10
|
||||
LTEXT "Resolución:", IDD_ATTRIBUTESTEXT5, 10, 25, 64, 10
|
||||
LTEXT "No disponible", IDD_ATTRIBUTESTEXT6, 77, 5, 90, 10
|
||||
LTEXT "No disponible", IDD_ATTRIBUTESTEXT7, 77, 15, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 77, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unidades", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "P&ulgadas", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Centí&metros", IDD_ATTRIBUTESRB2, 60, 69, 51, 10
|
||||
AUTORADIOBUTTON "&Píxeles", IDD_ATTRIBUTESRB3, 120, 69, 42, 10
|
||||
GROUPBOX "Colores", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "&Blanco y negro", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "En &color", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "Aceptar", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Predefinido", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "Pre&definido", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -234,7 +253,6 @@ BEGIN
|
||||
IDS_ALLFILES "Todos los archivos"
|
||||
IDS_ALLPICTUREFILES "Todos los archivos de imagen"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d píxeles/m"
|
||||
IDS_INTNUMBERS "Sólo se admiten números sin decimales."
|
||||
IDS_PERCENTAGE "El porcentaje debe de estar entre 1 y 500."
|
||||
IDS_ANGLE "El ángulo debe de estar entre -89 y 89."
|
||||
@@ -244,4 +262,7 @@ BEGIN
|
||||
IDS_ITALIC "Cursiva"
|
||||
IDS_UNDERLINE "Subrayado"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: GPL-2.0+ (https://spdx.org/licenses/GPL-2.0+)
|
||||
* FILE: base/applications/mspaint/lang/et-EE.rc
|
||||
* PURPOSE: Estonian Language resource file
|
||||
* TRANSLATOR: Joann Mõndresku (joannmondresku at gmail dot com)
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Estonian resource file
|
||||
* TRANSLATOR: Copyright 2018 Joann Mõndresku <joannmondresku@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ESTONIAN, SUBLANG_DEFAULT
|
||||
@@ -100,6 +99,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +162,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atribuudid"
|
||||
BEGIN
|
||||
LTEXT "&Laius:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Pikkus:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Laius:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "&Pikkus:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Faili &kuupäev:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Faili &suurus:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Resolutsioon:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Faili kuupäev:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Faili suurus:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Resolutsioon:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Pole saadaval", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Pole saadaval", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Pole saadaval", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Ühikud", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Tollid", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "Piksl&id", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Värvid", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "&Mustvalge", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Värvid", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "&Värvid", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Tühista", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Vaikimisi", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "V&aikimisi", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +250,6 @@ BEGIN
|
||||
IDS_ALLFILES "Kõik failid"
|
||||
IDS_ALLPICTUREFILES "Kõik Pildifailid"
|
||||
IDS_FILESIZE "%d baiti"
|
||||
IDS_PRINTRES "%d x %d pikslit meetri kohta"
|
||||
IDS_INTNUMBERS "Palun sisesta ainult terviklike numbreid!"
|
||||
IDS_PERCENTAGE "Protsent peab 1 ja 500 vahemikus olema."
|
||||
IDS_ANGLE "Nurk peab -89 ja 89 vahemikus olema."
|
||||
@@ -242,4 +259,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,3 +1,11 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Spanish (Basque) resource file
|
||||
* TRANSLATORS: Copyright 2009 Javier Remacha <remialdo@gmail.com>
|
||||
* Copyright 2020 Julen Urizar Compains <julenuri@hotmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_BASQUE, SUBLANG_DEFAULT
|
||||
|
||||
//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-eu-ES.bmp"
|
||||
@@ -92,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -136,26 +163,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributuak"
|
||||
BEGIN
|
||||
LTEXT "&Zabalera:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Altuera:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Zabalera:", IDD_ATTRIBUTESTEXT1, 10, 42, 30, 10
|
||||
LTEXT "Altuera:", IDD_ATTRIBUTESTEXT2, 82, 42, 23, 10
|
||||
LTEXT "Azken gordetze-data:", IDD_ATTRIBUTESTEXT3, 10, 5, 80, 10
|
||||
LTEXT "Diskoko tamaina:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Bereizmena:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Ez dago erabilgarri", IDD_ATTRIBUTESTEXT6, 80, 5, 70, 10
|
||||
LTEXT "Ez dago erabilgarri", IDD_ATTRIBUTESTEXT7, 80, 15, 70, 10
|
||||
LTEXT "Ez dago erabilgarri", IDD_ATTRIBUTESTEXT8, 80, 25, 70, 10
|
||||
GROUPBOX "Unitateak ", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Hazbetea", IDD_ATTRIBUTESRB1, 12, 69, 42, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 60, 69, 30, 10
|
||||
AUTORADIOBUTTON "Pixela", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Koloreak ", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Zuri-beltzean", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Koloretean", IDD_ATTRIBUTESRB5, 92, 100, 50, 10
|
||||
LTEXT "Azken gordetze-data:", IDD_ATTRIBUTESTEXT3, 10, 5, 70, 10
|
||||
LTEXT "Diskoko tamaina:", IDD_ATTRIBUTESTEXT4, 10, 15, 70, 10
|
||||
LTEXT "Bereizmena:", IDD_ATTRIBUTESTEXT5, 10, 25, 70, 10
|
||||
LTEXT "Ez dago erabilgarri", IDD_ATTRIBUTESTEXT6, 82, 5, 86, 10
|
||||
LTEXT "Ez dago erabilgarri", IDD_ATTRIBUTESTEXT7, 82, 15, 86, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 82, 25, 86, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unitateak", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Hazbetea", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 60, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Pixela", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Koloreak", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "&Zuri-beltzean", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Koloretean", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "Ados", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Utzi", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Lehenetsia", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "&Lehenetsia", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -224,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Fitxategi gustiak"
|
||||
IDS_ALLPICTUREFILES "Argazki fitxategi guztiak"
|
||||
IDS_FILESIZE "%d byte-k"
|
||||
IDS_PRINTRES "%d x %d pixel-ak metro"
|
||||
IDS_INTNUMBERS "Mezedez sartu zembaki oso bakarrik!"
|
||||
IDS_PERCENTAGE "Ehuneko 1 eta 500 tartean izan behar da."
|
||||
IDS_ANGLE "Angelu -89 eta 89 tartean izan behar da."
|
||||
@@ -234,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,3 +1,11 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: French resource file
|
||||
* TRANSLATORS: Copyright 2010-2014 Pierre Schweitzer <pierre@reactos.org>
|
||||
* Copyright 2020 Hermès Bélusca-Maïto <hermes.belusca-maito@reactos.org>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_FRENCH, SUBLANG_FRENCH
|
||||
|
||||
//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-fr-FR.bmp"
|
||||
@@ -92,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -136,26 +163,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attributs"
|
||||
BEGIN
|
||||
LTEXT "&Largeur :", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Hauteur :", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Largeur :", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Hauteur :", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Dernier enregistrement du fichier :", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Taille sur le disque :", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Résolution :", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Non disponible", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Non disponible", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Non disponible", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "Date de modification :", IDD_ATTRIBUTESTEXT3, 10, 5, 70, 10
|
||||
LTEXT "Taille sur le disque :", IDD_ATTRIBUTESTEXT4, 10, 15, 70, 10
|
||||
LTEXT "Résolution :", IDD_ATTRIBUTESTEXT5, 10, 25, 70, 10
|
||||
LTEXT "Non disponible", IDD_ATTRIBUTESTEXT6, 82, 5, 86, 10
|
||||
LTEXT "Non disponible", IDD_ATTRIBUTESTEXT7, 82, 15, 86, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 82, 25, 86, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unités", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Pouces", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "Pixels", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
AUTORADIOBUTTON "P&ouces", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "C&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Pixels", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Couleurs", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Noir et blanc", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Couleurs", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "&Noir et blanc", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Couleurs", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Annuler", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Par défaut", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "Par &défaut", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -224,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Tous les fichiers"
|
||||
IDS_ALLPICTUREFILES "Toutes les images"
|
||||
IDS_FILESIZE "%d octets"
|
||||
IDS_PRINTRES "%d x %d pixels par mètre"
|
||||
IDS_INTNUMBERS "Veuillez entrer des nombres entiers uniquement !"
|
||||
IDS_PERCENTAGE "Le pourcentage doit être entre 1 et 500."
|
||||
IDS_ANGLE "L'angle doit être entre -89 et 89."
|
||||
@@ -234,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,3 +1,10 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Hebrew resource file
|
||||
* TRANSLATOR: Copyright 2013-2018 Baruch Rutman <peterooch@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_HEBREW, SUBLANG_DEFAULT
|
||||
|
||||
//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-he-IL.bmp"
|
||||
@@ -92,6 +99,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -138,23 +164,23 @@ EXSTYLE WS_EX_LAYOUTRTL
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "תכונות"
|
||||
BEGIN
|
||||
LTEXT "רוחב:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "גובה:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "רוחב:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "גובה:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "תאריך קובץ:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "גודל קובץ:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "גודל תמונה:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "לא זמין", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "לא זמין", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "לא זמין", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "יחידות מדידה", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "אינצ'ים", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "סנטימטרים", IDD_ATTRIBUTESRB2, 55, 69, 51, 10
|
||||
AUTORADIOBUTTON "פיקסלים", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "צבעים", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "שחור ולבן", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "צבעוני", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "צבעוני", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "אישור", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "ביטול", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "ברירת מחדל", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
@@ -227,7 +253,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d בתים"
|
||||
IDS_PRINTRES, "%d x %d פיקסלים למטר"
|
||||
IDS_INTNUMBERS, "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE, "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE, "The angle must be between -89 and 89."
|
||||
@@ -237,4 +262,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,3 +1,11 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Hungarian resource file
|
||||
* TRANSLATORS: Copyright 2009 Gábor Balogh (xxxx00) <xxxx_0000@freemail.hu>
|
||||
* Copyright 2020 Tibor Lajos Füzi <tibor.fuzi@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT
|
||||
|
||||
//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-hu-HU.bmp"
|
||||
@@ -92,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -131,31 +158,31 @@ BEGIN
|
||||
PUSHBUTTON "Mégse", IDCANCEL, 125, 24, 48, 14
|
||||
END
|
||||
|
||||
IDD_ATTRIBUTES DIALOGEX 100, 100, 245, 120
|
||||
IDD_ATTRIBUTES DIALOGEX 100, 100, 243, 120
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attribútumok"
|
||||
BEGIN
|
||||
LTEXT "&Szélesség:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Magasság:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Szélesség:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Magasság:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Fájl dátuma:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Fájlméret:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Felbontás:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Nem elérhető", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Nem elérhető", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Nem elérhető", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Egység", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Hüvelyk", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "Pixel", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Hüvelyk", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Pixel", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Színek", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Fekete-fehér", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Színes", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 68, 14
|
||||
PUSHBUTTON "Mégse", IDCANCEL, 170, 24, 68, 14
|
||||
PUSHBUTTON "Alapértelmezett", IDD_ATTRIBUTESSTANDARD, 170, 40, 68, 14
|
||||
AUTORADIOBUTTON "&Fekete-fehér", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "S&zínes", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 66, 14
|
||||
PUSHBUTTON "Mégse", IDCANCEL, 170, 24, 66, 14
|
||||
PUSHBUTTON "&Alapértelmezett", IDD_ATTRIBUTESSTANDARD, 170, 40, 66, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -224,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Minden fájl"
|
||||
IDS_ALLPICTUREFILES "Minden képfájl"
|
||||
IDS_FILESIZE "%d bájt"
|
||||
IDS_PRINTRES "%d x %d pixel per méter"
|
||||
IDS_INTNUMBERS "Kérem csak egész számokat írjon be!"
|
||||
IDS_PERCENTAGE "A százaléknak 1 és 500 között kell lennie."
|
||||
IDS_ANGLE "A szögnek -89 és 89 között kell lennie."
|
||||
@@ -234,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/id-ID.rc
|
||||
* PURPOSE: Indonesian Language resource file
|
||||
* TRANSLATORS: Mas Ahmad Muhammad
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Indonesian resource file
|
||||
* TRANSLATOR: Copyright 2019 Mas Ahmad Muhammad <m.charly81@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_INDONESIAN, SUBLANG_DEFAULT
|
||||
@@ -100,6 +99,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +162,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atribut"
|
||||
BEGIN
|
||||
LTEXT "&Lebar:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Tinggi:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Lebar:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "&Tinggi:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "T&anggal berkas:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "&Ukuran berkas:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Resolusi:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Tidak tersedia", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Tidak tersedia", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Tidak tersedia", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "Tanggal berkas:", IDD_ATTRIBUTESTEXT3, 10, 5, 64, 10
|
||||
LTEXT "Ukuran berkas:", IDD_ATTRIBUTESTEXT4, 10, 15, 64, 10
|
||||
LTEXT "Resolusi:", IDD_ATTRIBUTESTEXT5, 10, 25, 64, 10
|
||||
LTEXT "Tidak tersedia", IDD_ATTRIBUTESTEXT6, 77, 5, 90, 10
|
||||
LTEXT "Tidak tersedia", IDD_ATTRIBUTESTEXT7, 77, 15, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 77, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Satuan", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Inci", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Piksel", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Warna", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "&Hitam Putih", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Berwarna", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "&Berwarna", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Batal", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Asli", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "&Asli", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +250,6 @@ BEGIN
|
||||
IDS_ALLFILES "Semua Berkas"
|
||||
IDS_ALLPICTUREFILES "Semua Berkas Gambar"
|
||||
IDS_FILESIZE "%d byte"
|
||||
IDS_PRINTRES "%d x %d piksel per meter"
|
||||
IDS_INTNUMBERS "Mohon hanya masukkan angka!"
|
||||
IDS_PERCENTAGE "Persentasi harus antara 1 and 500."
|
||||
IDS_ANGLE "Sudut hanya tersedia antara -89 and 89."
|
||||
@@ -242,4 +259,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/it-IT.rc
|
||||
* PURPOSE: Italian Language resource file
|
||||
* TRANSLATOR: Gabriel Ilardi
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Italian resource file
|
||||
* TRANSLATORS: Copyright 2009 Gabriel Ilardi <gabrielilardi@hotmail.it>
|
||||
* Copyright 2009-2010 Paolo Devoti <devotip@tiscali.it>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL
|
||||
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +163,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attributi"
|
||||
BEGIN
|
||||
LTEXT "&Larghezza:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Altezza:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Larghezza:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Altezza:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Ultimo salvataggio:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Dimensioni su disco:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Risoluzione:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Non disponibile", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Non disponibile", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Non disponibile", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "Ultimo salvataggio:", IDD_ATTRIBUTESTEXT3, 10, 5, 64, 10
|
||||
LTEXT "Dimensioni su disco:", IDD_ATTRIBUTESTEXT4, 10, 15, 64, 10
|
||||
LTEXT "Risoluzione:", IDD_ATTRIBUTESTEXT5, 10, 25, 64, 10
|
||||
LTEXT "Non disponibile", IDD_ATTRIBUTESTEXT6, 77, 5, 90, 10
|
||||
LTEXT "Non disponibile", IDD_ATTRIBUTESTEXT7, 77, 15, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 77, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unità di misura", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Pollici", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "Pixel", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
AUTORADIOBUTTON "P&ollici", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "C&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Pixel", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Colori", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Bianco e nero", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Colori", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "&Bianco e nero", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Colori", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Annulla", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Predefiniti", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "Pre&definiti", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per metro"
|
||||
IDS_INTNUMBERS "Si prega di inserire solo numeri interi!"
|
||||
IDS_PERCENTAGE "La percentuale deve essere compresa tra 1 e 500."
|
||||
IDS_ANGLE "L'angolo deve essere compreso tra -89 e 89."
|
||||
@@ -242,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,10 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/ja-JP.rc
|
||||
* PURPOSE: Japanese Language resource file
|
||||
* TRANSLATORS: pcds90net, Tomoya Kitagawa, Katayama Hirofumi MZ
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Japanese resource file
|
||||
* TRANSLATORS: Copyright 2009 pcds90net <ds200xnet-ros@yahoo.co.jp>
|
||||
* Copyright 2009-2010 Tomoya Kitagawa <jptomoya@yahoo.co.jp>
|
||||
* Copyright 2020-2022 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT
|
||||
@@ -78,7 +79,7 @@ BEGIN
|
||||
POPUP "画像(&I)"
|
||||
BEGIN
|
||||
MENUITEM "回転と反転(&M)\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "伸縮/傾斜(&S)\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "伸縮と傾斜(&S)\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "切り取り(&C)", IDM_IMAGECROP
|
||||
MENUITEM "色の反転(&I)\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
MENUITEM "画像の属性(&A)\tCtrl+E", IDM_IMAGEATTRIBUTES
|
||||
@@ -100,6 +101,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "切り取り(&T)\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "コピー(&C)\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "貼り付け(&P)\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "選択範囲の削除(&L)\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "すべて選択(&A)\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "ファイルへコピー(&O)...", IDM_EDITCOPYTO
|
||||
MENUITEM "ファイルから貼り付け(&F)...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "回転と反転(&M)\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "伸縮と傾斜(&S)\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "色の反転(&I)\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +164,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 9, "MS UI Gothic"
|
||||
CAPTION "画像の属性"
|
||||
BEGIN
|
||||
LTEXT "幅(&W):", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "高さ(&H):", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "幅(&W):", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "高さ(&H):", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "ファイルの日付(&D):", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "ファイルのサイズ(&S):", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "解像度(&R):", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "ファイルの日付:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "ファイルのサイズ:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "解像度:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "利用不可", IDD_ATTRIBUTESTEXT6, 75, 5, 90, 10
|
||||
LTEXT "利用不可", IDD_ATTRIBUTESTEXT7, 75, 15, 90, 10
|
||||
LTEXT "利用不可", IDD_ATTRIBUTESTEXT8, 75, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 75, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "単位", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "インチ(&I)", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "ピクセル(&P)", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "色", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "白黒(&B)", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "カラー(&L)", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "カラー(&L)", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "キャンセル", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "デフォルト", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "デフォルト(&D)", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +252,6 @@ BEGIN
|
||||
IDS_ALLFILES "すべてのファイル"
|
||||
IDS_ALLPICTUREFILES "すべての画像ファイル"
|
||||
IDS_FILESIZE "%d バイト"
|
||||
IDS_PRINTRES "%d x %d ピクセル/メートル"
|
||||
IDS_INTNUMBERS "整数だけを入力して下さい!"
|
||||
IDS_PERCENTAGE "百分率は 1 から 500 の間でなければなりません。"
|
||||
IDS_ANGLE "角度は -89 から 89 の間でなければなりません。"
|
||||
@@ -242,4 +261,7 @@ BEGIN
|
||||
IDS_ITALIC "斜体"
|
||||
IDS_UNDERLINE "下線"
|
||||
IDS_VERTICAL "縦書き"
|
||||
IDS_PRINTRES "%d x %d ピクセル/cm"
|
||||
IDS_CANTPASTE "クリップボードからの貼り付けに失敗しました。データ形式が間違っているか、未対応です。"
|
||||
IDS_SAVEERROR "次のファイルとして画像を保存するのに失敗しました:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/nl-NL.rc
|
||||
* PURPOSE: Dutch Language resource file
|
||||
* TRANSLATOR: Wouter De Vlieger
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Dutch resource file
|
||||
* TRANSLATOR: Copyright 2009 Wouter De Vlieger (reFly) <wouterdevlieger@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL
|
||||
@@ -100,6 +99,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +162,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Kenmerken"
|
||||
BEGIN
|
||||
LTEXT "&Breedte:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Hoogte:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Breedte:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Hoogte:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Datum laatst gewijzigd:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Bestandsgrootte:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Resolutie:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Niet beschikbaar", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Niet beschikbaar", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Niet beschikbaar", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "Datum van wijziging:", IDD_ATTRIBUTESTEXT3, 10, 5, 70, 10
|
||||
LTEXT "Bestandsgrootte:", IDD_ATTRIBUTESTEXT4, 10, 15, 70, 10
|
||||
LTEXT "Resolutie:", IDD_ATTRIBUTESTEXT5, 10, 25, 70, 10
|
||||
LTEXT "Niet beschikbaar", IDD_ATTRIBUTESTEXT6, 82, 5, 86, 10
|
||||
LTEXT "Niet beschikbaar", IDD_ATTRIBUTESTEXT7, 82, 15, 86, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 82, 25, 86, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Eenheden", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Inch", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "Pixels", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Inch", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Pixels", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Kleuren", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Zwart-wit", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Kleuren", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "&Zwart-wit", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Kleuren", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Annuleren", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Standaard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "&Standaard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +250,6 @@ BEGIN
|
||||
IDS_ALLFILES "Alle bestanden"
|
||||
IDS_ALLPICTUREFILES "Alle beeldbestanden"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +259,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: unknown (LGPL assumed)
|
||||
* FILE: base/applications/mspaint/lang/no-NO.rc
|
||||
* PURPOSE: NO-Norwegian Language resource file
|
||||
* TRANSLATORS: first times touched from no-NO.rc file by Lars Martin Hambro
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Norwegian resource file
|
||||
* TRANSLATOR: Copyright 2009 Lars Martin Hambro (LMH1) <lars_martin4@hotmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_NORWEGIAN, SUBLANG_NEUTRAL
|
||||
@@ -100,6 +99,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +162,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attributter"
|
||||
BEGIN
|
||||
LTEXT "&Bredde:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Høyde:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Bredde:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Høyde:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Fildato:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Filstørrelse:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Oppløsning:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Ikke tilgjengelig", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Ikke tilgjengelig", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Ikke tilgjengelig", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Enheter", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "Tommer", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Centimeter", IDD_ATTRIBUTESRB2, 52, 69, 55, 10
|
||||
AUTORADIOBUTTON "Piksler", IDD_ATTRIBUTESRB3, 106, 69, 35, 10
|
||||
AUTORADIOBUTTON "&Tommer", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Centi&meter", IDD_ATTRIBUTESRB2, 52, 69, 55, 10
|
||||
AUTORADIOBUTTON "&Piksler", IDD_ATTRIBUTESRB3, 106, 69, 35, 10
|
||||
GROUPBOX "Farger", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Svart og hvit", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Farger", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "S&vart og hvit", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Farger", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Avbryt", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Standard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "&Standard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +250,6 @@ BEGIN
|
||||
IDS_ALLFILES "Alle filer"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +259,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,10 +1,11 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/pl-PL.rc
|
||||
* PURPOSE: Polish Language resource file
|
||||
* TRANSLATOR: Caemyr - Olaf Siejka (May, 2009), Use ReactOS forum PM or IRC to contact me
|
||||
* UTF-8 conversion by Caemyr (May, 2011)
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Polish resource file
|
||||
* TRANSLATORS: Copyright 2009 Olaf Siejka <caemyr@gmail.com>
|
||||
* Copyright 2015 Adam Stachowicz <saibamenppl@gmail.com>
|
||||
* Copyright 2017 Adam Słaboń <asaillen456esx@gmail.com>
|
||||
* Copyright 2023 Piotr Hetnarowicz <piotrhwz@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_POLISH, SUBLANG_DEFAULT
|
||||
@@ -101,6 +102,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "&Wytnij\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Kopiuj\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "Wkl&ej\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "Wyczyść z&aznaczenie\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "&Zaznacz wszystko\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Kopiuj &do...", IDM_EDITCOPYTO
|
||||
MENUITEM "Wk&lej z...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Przerzuć/Obróć...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "Roz&ciągnij/Pochyl...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Odwróć kolory\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -145,23 +165,23 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atrybuty"
|
||||
BEGIN
|
||||
LTEXT "&Szerokość:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Wysokość:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Szerokość:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "&Wysokość:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Data:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Rozmiar:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Rozdzielczość:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Brak danych", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Brak danych", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Brak danych", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Jednostki", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Cale", IDD_ATTRIBUTESRB1, 12, 69, 35, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Centy&metry", IDD_ATTRIBUTESRB2, 52, 69, 55, 10
|
||||
AUTORADIOBUTTON "&Piksele", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Kolory", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Czarno-&biały", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "K&olory", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "K&olory", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Anuluj", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "&Domyślne", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
@@ -195,7 +215,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_FONTS DIALOG 0, 0, 225, 25
|
||||
CAPTION "Fonts"
|
||||
CAPTION "Czcionki"
|
||||
STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
|
||||
EXSTYLE WS_EX_TOOLWINDOW
|
||||
FONT 8, "MS Shell Dlg"
|
||||
@@ -211,7 +231,7 @@ BEGIN
|
||||
IDS_WINDOWTITLE "%s - Paint"
|
||||
IDS_INFOTITLE "Paint dla ReactOS"
|
||||
IDS_INFOTEXT "Dostępny na licencji GNU Lesser General Public License (LGPL, www.gnu.org)"
|
||||
IDS_SAVEPROMPTTEXT "Czy chcesz zapisać zmiany do %s?"
|
||||
IDS_SAVEPROMPTTEXT "Czy chcesz zapisać zmiany do pliku %s?"
|
||||
IDS_DEFAULTFILENAME "bez tytułu"
|
||||
IDS_MINIATURETITLE "Miniatura"
|
||||
IDS_TOOLTIP1 "Zaznaczenie dowolne"
|
||||
@@ -231,16 +251,18 @@ BEGIN
|
||||
IDS_TOOLTIP15 "Elipsa"
|
||||
IDS_TOOLTIP16 "Zaokrąglony prostokąt"
|
||||
IDS_ALLFILES "Wszystkie pliki"
|
||||
IDS_ALLPICTUREFILES "Wszystkie pliki graficzne"
|
||||
IDS_ALLPICTUREFILES "Wszystkie pliki obrazów"
|
||||
IDS_FILESIZE "%d bajtów"
|
||||
IDS_PRINTRES "%d x %d pikseli na metr"
|
||||
IDS_INTNUMBERS "Wprowadź liczbę całkowitą."
|
||||
IDS_PERCENTAGE "Wprowadź liczbę całkowitą z zakresu od 1 do 500."
|
||||
IDS_ANGLE "Wprowadź liczbę całkowitą z zakresu od -89 do 89."
|
||||
IDS_LOADERRORTEXT "Plik %s nie może być załadowany."
|
||||
IDS_ENLARGEPROMPTTEXT "Obraz w schowku jest większy niż bitmapa.\nChciałbyś powiększyć bitmapę?"
|
||||
IDS_BOLD "Bold"
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_ENLARGEPROMPTTEXT "Obraz w schowku jest większy niż bitmapa.\nCzy chcesz powiększyć bitmapę?"
|
||||
IDS_BOLD "Pogrubienie"
|
||||
IDS_ITALIC "Kursywa"
|
||||
IDS_UNDERLINE "Podkreślenie"
|
||||
IDS_VERTICAL "Pionowe"
|
||||
IDS_PRINTRES "%d x %d piksel/cm"
|
||||
IDS_CANTPASTE "Nie można wkleić ze schowka. Format danych jest nieprawidłowy lub nieobsługiwany."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/pt-BR.rc
|
||||
* PURPOSE: Portuguese Brazilian Language resource file
|
||||
* TRANSLATOR: Wagner Leandro Bueno Angelo
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Portuguese (Brazilian) resource file
|
||||
* TRANSLATORS: Copyright 2009 Wagner Leandro Bueno Angelo <wagner.snake@gmail.com>
|
||||
* Copyright 2011 Matheus Macabu <mkbu95@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN
|
||||
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,23 +163,23 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributos"
|
||||
BEGIN
|
||||
LTEXT "&Largura:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Altura:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Largura:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Altura:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Data do arquivo:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Tamanho do arquivo:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Resolução:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "Data do arquivo:", IDD_ATTRIBUTESTEXT3, 10, 5, 70, 10
|
||||
LTEXT "Tamanho do arquivo:", IDD_ATTRIBUTESTEXT4, 10, 15, 70, 10
|
||||
LTEXT "Resolução:", IDD_ATTRIBUTESTEXT5, 10, 25, 70, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT6, 82, 5, 86, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT7, 82, 15, 86, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 82, 25, 86, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unidades", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "P&olegadas", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "Pi&xels", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Cores", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Preto e &branco", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Co&res", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "Co&res", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "&Padrão", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Todos os arquivos"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/pt-PT.rc
|
||||
* PURPOSE: Portuguese Language resource file
|
||||
* TRANSLATOR: Manuel D V Silva
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Portuguese (Portugal) resource file
|
||||
* TRANSLATORS: Copyright 2009 Manuel D V Silva (mds) <manueldulcidio@gmail.com>
|
||||
* Copyright 2023 Jose Carlos Jesus <zecarlos1957@hotmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE
|
||||
@@ -19,19 +19,19 @@ BEGIN
|
||||
MENUITEM "&Guardar\tCtrl+G", IDM_FILESAVE
|
||||
MENUITEM "Guardar &como...", IDM_FILESAVEAS
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "From Scanner or Camera...", IDM_FILEFROMSCANNERORCAMERA
|
||||
MENUITEM "Scaner ou Câmera...", IDM_FILEFROMSCANNERORCAMERA
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Page View", IDM_FILEPAGEVIEW
|
||||
MENUITEM "Page Setup...", IDM_FILEPAGESETUP
|
||||
MENUITEM "Print...\tCtrl+P", IDM_FILEPRINT
|
||||
MENUITEM "Pré-visualizar", IDM_FILEPAGEVIEW
|
||||
MENUITEM "Configurar página...", IDM_FILEPAGESETUP
|
||||
MENUITEM "Imprimir...\tCtrl+P", IDM_FILEPRINT
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Send...", IDM_FILESEND
|
||||
MENUITEM "Enviar para...", IDM_FILESEND
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Definir como fundo (Mosaico)", IDM_FILEASWALLPAPERPLANE
|
||||
MENUITEM "Definir como fundo (Centrado)", IDM_FILEASWALLPAPERCENTERED
|
||||
MENUITEM "Definir como fundo (Esticado)", IDM_FILEASWALLPAPERSTRETCHED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Most recently used file", IDM_FILEMOSTRECENTLYUSEDFILE, GRAYED
|
||||
MENUITEM "Recente", IDM_FILEMOSTRECENTLYUSEDFILE, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Sai&r\tAlt+F4", IDM_FILEEXIT
|
||||
END
|
||||
@@ -43,9 +43,9 @@ BEGIN
|
||||
MENUITEM "Cor&tar\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "&Copiar\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "Co&lar\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "Limpar &seleção\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "&Inverter seleção", IDM_EDITINVERTSELECTION
|
||||
MENUITEM "Selecionar &tudo\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM "Limpar &selecção\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "&Inverter selecção", IDM_EDITINVERTSELECTION
|
||||
MENUITEM "Seleccionar &tudo\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opiar para...", IDM_EDITCOPYTO
|
||||
MENUITEM "Colar &de...", IDM_EDITPASTEFROM
|
||||
@@ -59,7 +59,7 @@ BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
POPUP "&Zoom"
|
||||
BEGIN
|
||||
POPUP "User defined"
|
||||
POPUP "Personalizado"
|
||||
BEGIN
|
||||
MENUITEM "12,5%", IDM_VIEWZOOM125
|
||||
MENUITEM "25%", IDM_VIEWZOOM25
|
||||
@@ -70,8 +70,8 @@ BEGIN
|
||||
MENUITEM "800%", IDM_VIEWZOOM800
|
||||
END
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Show grid\tCtrl+M", IDM_VIEWSHOWGRID
|
||||
MENUITEM "Show miniature", IDM_VIEWSHOWMINIATURE
|
||||
MENUITEM "Mostrar grelha\tCtrl+M", IDM_VIEWSHOWGRID
|
||||
MENUITEM "Mostrar miniatura", IDM_VIEWSHOWMINIATURE
|
||||
END
|
||||
MENUITEM "&Ver mapa de bits\tCtrl+B", IDM_VIEWFULLSCREEN
|
||||
END
|
||||
@@ -89,8 +89,8 @@ BEGIN
|
||||
BEGIN
|
||||
MENUITEM "&Editar cores...", IDM_COLORSEDITPALETTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
|
||||
MENUITEM "Old palette", IDM_COLORSOLDPALETTE
|
||||
MENUITEM "Palete moderna", IDM_COLORSMODERNPALETTE
|
||||
MENUITEM "Palete antiga", IDM_COLORSOLDPALETTE
|
||||
END
|
||||
POPUP "&Ajuda"
|
||||
BEGIN
|
||||
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^O", IDM_FILENEW
|
||||
@@ -144,23 +163,23 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributos"
|
||||
BEGIN
|
||||
LTEXT "&Largura:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Altura:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Largura:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Altura:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Data do arquivo:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Tamanho do arquivo:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Data do ficheiro:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Tamanho no disco:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Resolução:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT6, 80, 5, 90, 10
|
||||
LTEXT "não disponível", IDD_ATTRIBUTESTEXT7, 80, 15, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 80, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unidades", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "P&olegadas", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "Pi&xels", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Cores", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Preto e &branco", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Co&res", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "Co&res", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "&Predefinição", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
@@ -169,9 +188,9 @@ END
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Stretch and skew image"
|
||||
CAPTION "Esticar e inclinar imagem"
|
||||
BEGIN
|
||||
GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
|
||||
GROUPBOX "Esticar", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
|
||||
ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
|
||||
LTEXT "Horizontal:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
|
||||
EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
|
||||
@@ -180,21 +199,21 @@ BEGIN
|
||||
LTEXT "Vertical:", IDD_STRETCHSKEWTEXTVSTRETCH, 45, 49, 40, 10
|
||||
EDITTEXT IDD_STRETCHSKEWEDITVSTRETCH, 90, 48, 32, 12
|
||||
LTEXT "%", IDD_STRETCHSKEWTEXTVPERCENT, 125, 49, 15, 10
|
||||
GROUPBOX "Skew", IDD_STRETCHSKEWGROUPSKEW, 6, 76, 158, 66
|
||||
GROUPBOX "Inclinar", IDD_STRETCHSKEWGROUPSKEW, 6, 76, 158, 66
|
||||
ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
|
||||
LTEXT "Horizontal:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
|
||||
EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
|
||||
LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
|
||||
LTEXT "graus", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
|
||||
ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
|
||||
LTEXT "Vertical:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
|
||||
EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
|
||||
LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
|
||||
LTEXT "graus", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14
|
||||
END
|
||||
|
||||
IDD_FONTS DIALOG 0, 0, 225, 25
|
||||
CAPTION "Fonts"
|
||||
CAPTION "Tipos de letra"
|
||||
STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
|
||||
EXSTYLE WS_EX_TOOLWINDOW
|
||||
FONT 8, "MS Shell Dlg"
|
||||
@@ -212,9 +231,9 @@ BEGIN
|
||||
IDS_INFOTEXT "Disponível sob a licença GNU Lesser General Public License (LGPL, visite www.gnu.org)"
|
||||
IDS_SAVEPROMPTTEXT "Pretende guardar as alterações a %s?"
|
||||
IDS_DEFAULTFILENAME "Imagem"
|
||||
IDS_MINIATURETITLE "Miniature"
|
||||
IDS_TOOLTIP1 "Selecionar forma livre"
|
||||
IDS_TOOLTIP2 "Selecionar"
|
||||
IDS_MINIATURETITLE "Miniatura"
|
||||
IDS_TOOLTIP1 "Seleccionar forma livre"
|
||||
IDS_TOOLTIP2 "Seleccionar"
|
||||
IDS_TOOLTIP3 "Borracha/Apagar cor"
|
||||
IDS_TOOLTIP4 "Preencher com cor"
|
||||
IDS_TOOLTIP5 "Escolher cor"
|
||||
@@ -223,23 +242,25 @@ BEGIN
|
||||
IDS_TOOLTIP8 "Pincel"
|
||||
IDS_TOOLTIP9 "Aerógrafo"
|
||||
IDS_TOOLTIP10 "Texto"
|
||||
IDS_TOOLTIP11 "Linnha"
|
||||
IDS_TOOLTIP11 "Linha"
|
||||
IDS_TOOLTIP12 "Curva"
|
||||
IDS_TOOLTIP13 "Retângulo"
|
||||
IDS_TOOLTIP14 "Polígono"
|
||||
IDS_TOOLTIP15 "Elipse"
|
||||
IDS_TOOLTIP16 "Retângulo arredondado"
|
||||
IDS_ALLFILES "Todos os arquivos"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_ALLFILES "Todos os ficheiros"
|
||||
IDS_ALLPICTUREFILES "Todos os ficheiros de imagem"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
IDS_LOADERRORTEXT "The file %s could not be loaded."
|
||||
IDS_ENLARGEPROMPTTEXT "The image in the clipboard is larger than the bitmap.\nWould you like the bitmap enlarged?"
|
||||
IDS_BOLD "Bold"
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_INTNUMBERS "Por favor, introduza apenas números inteiros!"
|
||||
IDS_PERCENTAGE "A percentagem deve estar entre 1 e 500."
|
||||
IDS_ANGLE "O ângulo deve estar entre -89 e 89."
|
||||
IDS_LOADERRORTEXT "O ficheiro %s não pôde ser carregado."
|
||||
IDS_ENLARGEPROMPTTEXT "A imagem na área de transferência é maior que o bitmap.\nDeseja ampliar o bitmap?"
|
||||
IDS_BOLD "Negrito"
|
||||
IDS_ITALIC "Itálico"
|
||||
IDS_UNDERLINE "Sublinhado"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Romanian resource file
|
||||
* TRANSLATORS: Copyright 2009 Petru Dimitriu <petrimetri@gmail.com>
|
||||
* Copyright 2011-2018 Ștefan Fulea <stefan.fulea@mail.com>
|
||||
@@ -101,6 +101,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -145,25 +164,25 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atribute"
|
||||
BEGIN
|
||||
LTEXT "&Lățime:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "Î&nălțime:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Lățime:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Înălțime:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Dată fișier:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Dimensiune:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Rezoluție:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Indisponibil", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Indisponibil", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Indisponibil", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Unități", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "țoli", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "pixeli", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
AUTORADIOBUTTON "ț&oli", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&pixeli", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Culori", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Alb-negru", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Culoare", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
DEFPUSHBUTTON "Con&firmă", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "A&nulează", IDCANCEL, 170, 24, 48, 14
|
||||
AUTORADIOBUTTON "&Alb-negru", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "C&uloare", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "Confirmă", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Anulează", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Impli&cite", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
@@ -233,14 +252,16 @@ BEGIN
|
||||
IDS_ALLFILES "Orice fișier"
|
||||
IDS_ALLPICTUREFILES "Toate fișierele imagine"
|
||||
IDS_FILESIZE "%d octeți"
|
||||
IDS_PRINTRES "%d x %d pixeli pe metru"
|
||||
IDS_INTNUMBERS "Introduceți doar numere întregi!"
|
||||
IDS_PERCENTAGE "Procentajul trebuie să fie între 1 și 500."
|
||||
IDS_ANGLE "Unghiul trebuie să fie între -89 și 89."
|
||||
IDS_LOADERRORTEXT "Fișierul %s nu poate fi încărcat."
|
||||
IDS_ENLARGEPROMPTTEXT "Imaginea din memorie este mai mare decât suprafața curent disponibilă în aplicație.\nDoriți să redimensionați suprafața de desen disponibilă?"
|
||||
IDS_BOLD "Bold"
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_BOLD "Îngroșat"
|
||||
IDS_ITALIC "Cursiv"
|
||||
IDS_UNDERLINE "Subliniat"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixeli/cm"
|
||||
IDS_CANTPASTE "Nu a putut fi lipit din clipboard. Formatul de date este fie incorect, fie nesuportat."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,3 +1,14 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Russian resource file
|
||||
* TRANSLATORS: Copyright 2009 Dmitry Chapyshev <dmitry@reactos.org>
|
||||
* Copyright 2013 Yaroslav Denisov (jperm) <jaroslaff111@mail.ru>
|
||||
* Copyright 2013 Alexey Gorgurov <leha-bot@ya.ru>
|
||||
* Copyright 2016 Alexey Shaltsin (BinaryTree) <lexa2011_98@mail.ru>
|
||||
* Copyright 2016 Sergey Stopkin <stopkin.sergey@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT
|
||||
|
||||
//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-ru-RU.bmp"
|
||||
@@ -70,7 +81,7 @@ BEGIN
|
||||
POPUP "&Рисунок"
|
||||
BEGIN
|
||||
MENUITEM "&Отразить/повернуть...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "Растянуть/Наклонить...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Растянуть/наклонить...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "Обре&зать", IDM_IMAGECROP
|
||||
MENUITEM "О&братить цвета\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
MENUITEM "&Атрибуты...\tCtrl+E", IDM_IMAGEATTRIBUTES
|
||||
@@ -81,8 +92,8 @@ BEGIN
|
||||
BEGIN
|
||||
MENUITEM "&Изменить палитру...", IDM_COLORSEDITPALETTE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Модернизированный вид", IDM_COLORSMODERNPALETTE
|
||||
MENUITEM "Старый вид", IDM_COLORSOLDPALETTE
|
||||
MENUITEM "Современная", IDM_COLORSMODERNPALETTE
|
||||
MENUITEM "Старая", IDM_COLORSOLDPALETTE
|
||||
END
|
||||
POPUP "&Справка"
|
||||
BEGIN
|
||||
@@ -92,6 +103,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "&Вырезать\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "&Копировать\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "Вст&авить\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "О&чистить выделение\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Выделить в&се\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Копироват&ь в файл...", IDM_EDITCOPYTO
|
||||
MENUITEM "Вставить из &файла...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Отразить/повернуть...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Растянуть/наклонить...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "О&братить цвета\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -131,31 +161,31 @@ BEGIN
|
||||
PUSHBUTTON "Отмена", IDCANCEL, 125, 24, 48, 14
|
||||
END
|
||||
|
||||
IDD_ATTRIBUTES DIALOGEX 100, 100, 225, 120
|
||||
IDD_ATTRIBUTES DIALOGEX 100, 100, 234, 120
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Атрибуты"
|
||||
BEGIN
|
||||
LTEXT "&Ширина:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Высота:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Ширина:", IDD_ATTRIBUTESTEXT1, 10, 42, 30, 10
|
||||
LTEXT "Высота:", IDD_ATTRIBUTESTEXT2, 80, 42, 30, 10
|
||||
LTEXT "Дата сохранения:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Размер на диске:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Разрешение:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "недоступно", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "недоступно", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "недоступно", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "Дата сохранения:", IDD_ATTRIBUTESTEXT3, 10, 5, 64, 10
|
||||
LTEXT "Размер на диске:", IDD_ATTRIBUTESTEXT4, 10, 15, 64, 10
|
||||
LTEXT "Разрешение:", IDD_ATTRIBUTESTEXT5, 10, 25, 64, 10
|
||||
LTEXT "недоступно", IDD_ATTRIBUTESTEXT6, 77, 5, 90, 10
|
||||
LTEXT "недоступно", IDD_ATTRIBUTESTEXT7, 77, 15, 90, 10
|
||||
LTEXT "точек/см", IDD_ATTRIBUTESTEXT8, 77, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Единицы измерения", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "д&юймы", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "с&м", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "т&очки", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Палитра", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "&чёрно-белая", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "цв&етная", IDD_ATTRIBUTESRB5, 92, 100, 45, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 150, 8, 57, 14
|
||||
PUSHBUTTON "Отмена", IDCANCEL, 150, 24, 57, 14
|
||||
PUSHBUTTON "По умо&лчанию", IDD_ATTRIBUTESSTANDARD, 150, 40, 57, 14
|
||||
AUTORADIOBUTTON "цв&етная", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 57, 14
|
||||
PUSHBUTTON "Отмена", IDCANCEL, 170, 24, 57, 14
|
||||
PUSHBUTTON "По умо&лчанию", IDD_ATTRIBUTESSTANDARD, 170, 40, 57, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -186,7 +216,7 @@ BEGIN
|
||||
END
|
||||
|
||||
IDD_FONTS DIALOG 0, 0, 225, 25
|
||||
CAPTION "Fonts"
|
||||
CAPTION "Шрифты"
|
||||
STYLE DS_CENTER | DS_MODALFRAME | WS_POPUPWINDOW | WS_CAPTION
|
||||
EXSTYLE WS_EX_TOOLWINDOW
|
||||
FONT 8, "MS Shell Dlg"
|
||||
@@ -224,14 +254,16 @@ BEGIN
|
||||
IDS_ALLFILES "Все файлы"
|
||||
IDS_ALLPICTUREFILES "Все файлы изображений"
|
||||
IDS_FILESIZE "%d байт"
|
||||
IDS_PRINTRES "%d x %d пикселей на метр"
|
||||
IDS_INTNUMBERS, "Необходимо вводить только целые числа!"
|
||||
IDS_PERCENTAGE, "Процент должен быть в интервале от 1 до 500."
|
||||
IDS_ANGLE, "Угол должен быть в интервале от -89 до 89."
|
||||
IDS_LOADERRORTEXT, "Невозможно загрузить файл %s."
|
||||
IDS_ENLARGEPROMPTTEXT "Изображения в буфере обмена больше растрового изображения.\nХотите увеличить точечный рисунок?"
|
||||
IDS_BOLD "Bold"
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_ENLARGEPROMPTTEXT "Изображение в буфере обмена больше точечного рисунка.\nХотите увеличить точечный рисунок?"
|
||||
IDS_BOLD "Жирный"
|
||||
IDS_ITALIC "Курсив"
|
||||
IDS_UNDERLINE "Подчёркнутый"
|
||||
IDS_VERTICAL "Вертикальный"
|
||||
IDS_PRINTRES "%d x %d точек/см"
|
||||
IDS_CANTPASTE "Не удалось вставить из буфера обмена. Формат данных либо некорректный, либо не поддерживается."
|
||||
IDS_SAVEERROR "Не удалось сохранить точечный рисунок в файл:\n\n%s"
|
||||
END
|
||||
|
@@ -1,10 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/sk-SK.rc
|
||||
* PURPOSE: Slovak Language resource file
|
||||
* TRANSLATORS: Mário Kačmár /Mario Kacmar/ aka Kario (kario@szm.sk)
|
||||
* LastChanged: 21-10-2009
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Slovak resource file
|
||||
* TRANSLATOR: Copyright 2009 Mário Kačmár aka Kario <kario@szm.sk>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SLOVAK, SUBLANG_DEFAULT
|
||||
@@ -101,6 +99,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -145,23 +162,23 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atribúty"
|
||||
BEGIN
|
||||
LTEXT "Ší&rka:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Výška:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Šírka:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Výška:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Dátum zmeny:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10 //File date
|
||||
LTEXT "Veľkosť súboru:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10 //File size
|
||||
LTEXT "Rozlíšenie:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Nie je k dispozícii", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Nie je k dispozícii", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Nie je k dispozícii", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "Dátum zmeny:", IDD_ATTRIBUTESTEXT3, 10, 5, 64, 10
|
||||
LTEXT "Veľkosť súboru:", IDD_ATTRIBUTESTEXT4, 10, 15, 64, 10
|
||||
LTEXT "Rozlíšenie:", IDD_ATTRIBUTESTEXT5, 10, 25, 64, 10
|
||||
LTEXT "Nie je k dispozícii", IDD_ATTRIBUTESTEXT6, 77, 5, 90, 10
|
||||
LTEXT "Nie je k dispozícii", IDD_ATTRIBUTESTEXT7, 77, 15, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 77, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Jednotky", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "palce", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "pixely", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
AUTORADIOBUTTON "p&alce", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&pixely", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Farby", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Čierno&bielo", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Farebne", IDD_ATTRIBUTESRB5, 92, 100, 45, 10
|
||||
AUTORADIOBUTTON "&Farebne", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Zrušiť", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "&Predvolené", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
@@ -233,7 +250,6 @@ BEGIN
|
||||
IDS_ALLFILES "Všetky súbory"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bajtov"
|
||||
IDS_PRINTRES "%d x %d pixelov na meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -243,4 +259,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/sq-AL.rc
|
||||
* PURPOSE: AL-Albanian Language resource file
|
||||
* TRANSLATORS: Ardit Dani
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Albanian resource file
|
||||
* TRANSLATOR: Copyright 2013 Ardit Dani (ard1t) <ardit.dani@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
|
||||
@@ -100,6 +99,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +162,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Atributet"
|
||||
BEGIN
|
||||
LTEXT "&Gjerësi:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Lartësi:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Gjerësi:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Lartësi:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "File &data:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "File &mase:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Resolucioni:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "File data:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "File mase:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Resolucioni:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Jo në dispozicion", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Jo në dispozicion", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Jo në dispozicion", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Njësitë", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Inq", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Pixels", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Ngjyrat", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "&Bardh e Zi", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Ngjyrat", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "&Ngjyrat", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Anulo", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Parazgjedhur", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "&Parazgjedhur", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +250,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixels per meter"
|
||||
IDS_INTNUMBERS "Ju lutem shkruani numra integrale vetëm!"
|
||||
IDS_PERCENTAGE "Përqindja duhet të jetë në mes 1 dhe 500."
|
||||
IDS_ANGLE "Këndi duhet të jetë në mes -89 dhe 89."
|
||||
@@ -242,4 +259,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,3 +1,11 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Swedish resource file
|
||||
* TRANSLATORS: Copyright 2011 Michael Wu (Witch) <im.allergic.2.mailing.lists@gmail.com>
|
||||
* Copyright 2017 Markus Gothe <nietzsche@lysator.liu.se>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_SWEDISH, SUBLANG_NEUTRAL
|
||||
|
||||
//IDB_FONTSTOOLBAR BITMAP "icons/fontstoolbar-sv-SE.bmp"
|
||||
@@ -92,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -136,26 +163,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Attribut"
|
||||
BEGIN
|
||||
LTEXT "&Bredd:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Höjd:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Bredd:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Höjd:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Fildatum:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Filstorlek:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Upplösning:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Ej tillgänglig", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Ej tillgänglig", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Ej tillgänglig", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Enheter", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "tum", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "Pixlar", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
AUTORADIOBUTTON "&tum", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Pixlar", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Färger", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "Svart och vitt", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Färger", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "&Svart och vitt", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Färger", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Avbryt", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Standard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "Stan&dard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80
|
||||
@@ -224,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "All Files"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d bytes"
|
||||
IDS_PRINTRES "%d x %d pixlar per meter"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -234,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,9 @@
|
||||
/*
|
||||
* PROJECT: ReactOS Paint
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/tr-TR.rc
|
||||
* PURPOSE: Turkish Resource file for ReactOS Paint
|
||||
* TRANSLATOR: 2013-2014, 2016, 2019 Erdem Ersoy (eersoy93) (erdemersoy [at] erdemersoy [dot] net)
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Turkish resource file
|
||||
* TRANSLATORS: Copyright 2013-2016, 2019 Erdem Ersoy (eersoy93) <erdemersoy@erdemersoy.net>
|
||||
* Copyright 2021-2022 Süleyman Poyraz <zaryob.dev@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT
|
||||
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +163,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Öznitelikler"
|
||||
BEGIN
|
||||
LTEXT "&En:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Boy:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&En:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "&Boy:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Dosya Tarihi:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Dosya Boyutu:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Çözünürlük:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Yok", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Yok", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Yok", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Birim", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&İnç", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&cm", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Piksel", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Renk", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "&Siyah ve Beyaz", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&Renkli", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "&Renkli", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "Tamam", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "İptal", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Varsayılan", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "&Varsayılan", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "Tüm Dosyalar"
|
||||
IDS_ALLPICTUREFILES "Tüm Resim Dosyaları"
|
||||
IDS_FILESIZE "%d bayt"
|
||||
IDS_PRINTRES "Metre başına %d x %d piksel"
|
||||
IDS_INTNUMBERS "Lütfen yalnızca tamsayı giriniz!"
|
||||
IDS_PERCENTAGE "Yüzde 1 ile 500 arasında olmalıdır."
|
||||
IDS_ANGLE "Açı -89 ile 89 arasında olmalıdır."
|
||||
@@ -242,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "İtalik"
|
||||
IDS_UNDERLINE "Altı Çizgili"
|
||||
IDS_VERTICAL "Düşey"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,10 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/uk-UA.rc
|
||||
* PURPOSE: Ukraianian Language File for Paint
|
||||
* TRANSLATORS: Artem Reznikov, Sakara Yevhen, igor Paliychuk
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Ukrainian resource file
|
||||
* TRANSLATORS: Copyright 2009 Artem Reznikov <temarez@yandex.ru>
|
||||
* Copyright 2009 Sakara Yevhen <eresid@gmail.com>
|
||||
* Copyright 2010-2011 Igor Paliychuk <mansonigor@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT
|
||||
@@ -100,6 +101,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +164,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Атрибути"
|
||||
BEGIN
|
||||
LTEXT "&Ширина:", IDD_ATTRIBUTESTEXT1, 10, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Висота:", IDD_ATTRIBUTESTEXT2, 90, 42, 35, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "Ширина:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "Висота:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Дата файлу:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Розмір файлу:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "Розширення:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Недоступно", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Недоступно", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Недоступно", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Одиниці вимірювання", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "дюйми", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "см", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "пікселі", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
AUTORADIOBUTTON "д&юйми", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "с&м", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&пікселі", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Кольори", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "чорно-білий", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "кольори", IDD_ATTRIBUTESRB5, 92, 100, 39, 10
|
||||
AUTORADIOBUTTON "&чорно-білий", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "&кольори", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Скасувати", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Стандартно", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "&Стандартно", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80
|
||||
@@ -232,7 +252,6 @@ BEGIN
|
||||
IDS_ALLFILES "Усі файли"
|
||||
IDS_ALLPICTUREFILES "All Picture Files"
|
||||
IDS_FILESIZE "%d байт"
|
||||
IDS_PRINTRES "%d x %d пікс. на метр"
|
||||
IDS_INTNUMBERS "Please enter integral numbers only!"
|
||||
IDS_PERCENTAGE "The percentage must be between 1 and 500."
|
||||
IDS_ANGLE "The angle must be between -89 and 89."
|
||||
@@ -242,4 +261,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/lang/vi-VN.rc
|
||||
* PURPOSE: VN-Vietnamese Language resource file
|
||||
* TRANSLATORS: first times touched from en-US.rc file by Dummynosrev (Nguyễn Thanh Sơn)
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Vietnamese (Vietnam) resource file
|
||||
* TRANSLATOR: Copyright 2018 Nguyễn Thanh Sơn <dummynosrev@gmail.com>
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_VIETNAMESE, SUBLANG_VIETNAMESE_VIETNAM
|
||||
@@ -100,6 +99,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +162,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 8, "MS Shell Dlg"
|
||||
CAPTION "Thuộc tính"
|
||||
BEGIN
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "&Chiều rộng:", IDD_ATTRIBUTESTEXT1, 10, 42, 38, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 50, 40, 35, 12
|
||||
LTEXT "C&hiều cao:", IDD_ATTRIBUTESTEXT2, 90, 42, 38, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "&Chiều rộng:", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "&Chiều cao:", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "Ngày tạo &tập tin:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "Kích thước &tập tin :", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "&Độ phân giải:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "Không có sẵn", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "Không có sẵn", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "Không có sẵn", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "Ngày tạo tập tin:", IDD_ATTRIBUTESTEXT3, 10, 5, 64, 10
|
||||
LTEXT "Kích thước tập tin:", IDD_ATTRIBUTESTEXT4, 10, 15, 64, 10
|
||||
LTEXT "Độ phân giải:", IDD_ATTRIBUTESTEXT5, 10, 25, 64, 10
|
||||
LTEXT "Không có sẵn", IDD_ATTRIBUTESTEXT6, 77, 5, 90, 10
|
||||
LTEXT "Không có sẵn", IDD_ATTRIBUTESTEXT7, 77, 15, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 77, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "Đơn vị", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "&Inch (1 inch = 2,54 cm)", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "&Inch (= 2,54 cm)", IDD_ATTRIBUTESRB1, 12, 69, 66, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "c&m", IDD_ATTRIBUTESRB2, 82, 69, 25, 10
|
||||
AUTORADIOBUTTON "&Điểm ảnh", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "Màu sắc", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "&Đen trắng", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "Màu &sắc", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "Màu &sắc", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "Đồng ý", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "Hủy", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "Mặc định", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "Mặc đị&nh", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
|
||||
@@ -232,7 +250,6 @@ BEGIN
|
||||
IDS_ALLFILES "Tất cả tập tin"
|
||||
IDS_ALLPICTUREFILES "Tất cả tập tin hình ảnh"
|
||||
IDS_FILESIZE "%d byte"
|
||||
IDS_PRINTRES "%d x %d điểm ảnh trong một mét"
|
||||
IDS_INTNUMBERS "Xin vui lòng chỉ nhập số tự nhiên khác không (0)!"
|
||||
IDS_PERCENTAGE "Giá trị phần trăm phải ở giữa 1 và 500."
|
||||
IDS_ANGLE "Giá trị của góc phải ở giữa -89 và 89."
|
||||
@@ -242,4 +259,7 @@ BEGIN
|
||||
IDS_ITALIC "Italic"
|
||||
IDS_UNDERLINE "Underline"
|
||||
IDS_VERTICAL "Vertical"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Chinese (Simplified) resource file
|
||||
* TRANSLATORS: Copyright 2011 Song Fuchang (0xfc) <sfc_0@yahoo.com.cn>
|
||||
* Copyright 2014-2015 Henry Tang Ih <henrytang2@hotmail.com>
|
||||
@@ -102,6 +102,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -146,26 +165,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 9, "宋体"
|
||||
CAPTION "属性"
|
||||
BEGIN
|
||||
LTEXT "宽度(&W):", IDD_ATTRIBUTESTEXT1, 10, 42, 37, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "高度(&H):", IDD_ATTRIBUTESTEXT2, 90, 42, 37, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "宽度(&W):", IDD_ATTRIBUTESTEXT1, 10, 40, 35, 10
|
||||
LTEXT "高度(&H):", IDD_ATTRIBUTESTEXT2, 90, 40, 35, 10
|
||||
LTEXT "文件日期(&D):", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "文件大小(&S):", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "分辨率(&R):", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "文件日期:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "文件大小:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "分辨率:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "单位", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "英寸(&I)", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "厘米(&M)", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "像素(&P)", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "颜色", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "黑白(&B)", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "彩色(&L)", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "彩色(&L)", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "确定", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "取消", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "默认值", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "默认值(&D)", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80
|
||||
@@ -234,7 +253,6 @@ BEGIN
|
||||
IDS_ALLFILES "所有文件"
|
||||
IDS_ALLPICTUREFILES "所有图片文件"
|
||||
IDS_FILESIZE "%d 字节"
|
||||
IDS_PRINTRES "%d x %d 像素每米"
|
||||
IDS_INTNUMBERS "请只输入整数!"
|
||||
IDS_PERCENTAGE "百分比必须在 1 至 500 之间。"
|
||||
IDS_ANGLE "角度必须在 -89 与 89 之间。"
|
||||
@@ -244,4 +262,7 @@ BEGIN
|
||||
IDS_ITALIC "斜体"
|
||||
IDS_UNDERLINE "下划线"
|
||||
IDS_VERTICAL "垂直"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Chinese (Hong Kong) resource file
|
||||
* TRANSLATORS: Copyright 2021 Chan Chilung <eason066@gmail.com>
|
||||
* REFERENCES: Chinese (Traditional) resource file
|
||||
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +163,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 9, "新細明體"
|
||||
CAPTION "內容"
|
||||
BEGIN
|
||||
LTEXT "寬度(&W):", IDD_ATTRIBUTESTEXT1, 10, 42, 37, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "高度(&H):", IDD_ATTRIBUTESTEXT2, 90, 42, 37, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "寬度(&W):", IDD_ATTRIBUTESTEXT1, 10, 40, 30, 10
|
||||
LTEXT "高度(&H):", IDD_ATTRIBUTESTEXT2, 90, 40, 30, 10
|
||||
LTEXT "檔案日期(&D):", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "檔案大小(&S):", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "解析度(&R):", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "檔案日期:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "檔案大小:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "解析度:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "單位", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "英寸(&I)", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "厘米(&M)", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "像素(&P)", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "顏色", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "黑白(&B)", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "彩色(&L)", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "彩色(&L)", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "確定", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "取消", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "預設值", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "預設值(&D)", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "所有檔案"
|
||||
IDS_ALLPICTUREFILES "所有圖像檔案"
|
||||
IDS_FILESIZE "%d 位元組"
|
||||
IDS_PRINTRES "%d x %d 像素每米"
|
||||
IDS_INTNUMBERS "請輸入整數!"
|
||||
IDS_PERCENTAGE "所佔百分比必須介乎 1 至 500 之間。"
|
||||
IDS_ANGLE "角度必須介乎 -89 至 89 之間。"
|
||||
@@ -242,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "斜體"
|
||||
IDS_UNDERLINE "底線"
|
||||
IDS_VERTICAL "垂直"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,6 +1,6 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later)
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Chinese (Traditional) resource file
|
||||
* TRANSLATORS: Copyright 2011 Elton Chung <elton328@gmail.com>
|
||||
* Copyright 2021 Chan Chilung <eason066@gmail.com>
|
||||
@@ -100,6 +100,25 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
ID_POPUPMENU MENU
|
||||
BEGIN
|
||||
POPUP "Popup #0"
|
||||
BEGIN
|
||||
MENUITEM "C&ut\tCtrl+X", IDM_EDITCUT
|
||||
MENUITEM "Copy\tCtrl+C", IDM_EDITCOPY
|
||||
MENUITEM "&Paste\tCtrl+V", IDM_EDITPASTE
|
||||
MENUITEM "De&lete selection\tDel", IDM_EDITDELETESELECTION
|
||||
MENUITEM "Select &All\tCtrl+A", IDM_EDITSELECTALL
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "C&opy to...", IDM_EDITCOPYTO
|
||||
MENUITEM "Paste &from...", IDM_EDITPASTEFROM
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Rotate/&Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
|
||||
MENUITEM "&Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
|
||||
MENUITEM "&Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
|
||||
END
|
||||
END
|
||||
|
||||
ID_ACCELERATORS ACCELERATORS
|
||||
BEGIN
|
||||
"^N", IDM_FILENEW
|
||||
@@ -144,26 +163,26 @@ STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
FONT 9, "新細明體"
|
||||
CAPTION "內容"
|
||||
BEGIN
|
||||
LTEXT "寬度(&W):", IDD_ATTRIBUTESTEXT1, 10, 42, 37, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT1, 48, 40, 35, 12
|
||||
LTEXT "高度(&H):", IDD_ATTRIBUTESTEXT2, 90, 42, 37, 10
|
||||
EDITTEXT IDD_ATTRIBUTESEDIT2, 128, 40, 35, 12
|
||||
LTEXT "寬度(&W):", IDD_ATTRIBUTESTEXT1, 10, 40, 30, 10
|
||||
LTEXT "高度(&H):", IDD_ATTRIBUTESTEXT2, 90, 40, 30, 10
|
||||
LTEXT "檔案日期(&D):", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "檔案大小(&S):", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "解析度(&R):", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "檔案日期:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10
|
||||
LTEXT "檔案大小:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10
|
||||
LTEXT "解析度:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10
|
||||
LTEXT "不可用", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10
|
||||
LTEXT "ppcm", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 /* This unit must match IDS_PRINTRES */
|
||||
GROUPBOX "單位", IDD_ATTRIBUTESGROUP1, 6, 57, 158, 27
|
||||
AUTORADIOBUTTON "英寸(&I)", IDD_ATTRIBUTESRB1, 12, 69, 45, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "厘米(&M)", IDD_ATTRIBUTESRB2, 62, 69, 45, 10
|
||||
AUTORADIOBUTTON "畫素(&P)", IDD_ATTRIBUTESRB3, 112, 69, 45, 10
|
||||
GROUPBOX "顏色", IDD_ATTRIBUTESGROUP2, 6, 88, 158, 27
|
||||
AUTORADIOBUTTON "黑白(&B)", IDD_ATTRIBUTESRB4, 12, 100, 70, 10, WS_GROUP
|
||||
AUTORADIOBUTTON "彩色(&L)", IDD_ATTRIBUTESRB5, 92, 100, 35, 10
|
||||
AUTORADIOBUTTON "彩色(&L)", IDD_ATTRIBUTESRB5, 92, 100, 42, 10
|
||||
DEFPUSHBUTTON "確定", IDOK, 170, 8, 48, 14
|
||||
PUSHBUTTON "取消", IDCANCEL, 170, 24, 48, 14
|
||||
PUSHBUTTON "預設值", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
PUSHBUTTON "預設值(&D)", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
|
||||
END
|
||||
|
||||
IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80
|
||||
@@ -232,7 +251,6 @@ BEGIN
|
||||
IDS_ALLFILES "所有檔案"
|
||||
IDS_ALLPICTUREFILES "所有圖像檔案"
|
||||
IDS_FILESIZE "%d 位元組"
|
||||
IDS_PRINTRES "%d x %d 畫素每米"
|
||||
IDS_INTNUMBERS "請輸入整數!"
|
||||
IDS_PERCENTAGE "所佔百分比必須介於 1 和 500 之間。"
|
||||
IDS_ANGLE "角度必須介於 -89 和 89 之間。"
|
||||
@@ -242,4 +260,7 @@ BEGIN
|
||||
IDS_ITALIC "斜體"
|
||||
IDS_UNDERLINE "底線"
|
||||
IDS_VERTICAL "垂直"
|
||||
IDS_PRINTRES "%d x %d pixel/cm"
|
||||
IDS_CANTPASTE "Failed to paste from the clipboard. The data format is either incorrect or not supported."
|
||||
IDS_SAVEERROR "Failed to save the bitmap to file:\n\n%s"
|
||||
END
|
||||
|
@@ -1,22 +1,19 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/main.cpp
|
||||
* PURPOSE: Initializing everything
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Initializing everything
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
|
||||
POINT start;
|
||||
POINT last;
|
||||
|
||||
BOOL askBeforeEnlarging = FALSE; // TODO: initialize from registry
|
||||
HINSTANCE hProgInstance = NULL;
|
||||
TCHAR filepathname[MAX_LONG_PATH] = { 0 };
|
||||
BOOL isAFile = FALSE;
|
||||
BOOL imageSaved = FALSE;
|
||||
BOOL showGrid = FALSE;
|
||||
POINT g_ptStart, g_ptEnd;
|
||||
BOOL g_askBeforeEnlarging = FALSE; // TODO: initialize from registry
|
||||
HINSTANCE g_hinstExe = NULL;
|
||||
TCHAR g_szFileName[MAX_LONG_PATH] = { 0 };
|
||||
BOOL g_isAFile = FALSE;
|
||||
BOOL g_imageSaved = FALSE;
|
||||
BOOL g_showGrid = FALSE;
|
||||
|
||||
CMainWindow mainWindow;
|
||||
|
||||
@@ -81,7 +78,7 @@ BOOL CMainWindow::GetOpenFileName(IN OUT LPTSTR pszFile, INT cchMaxFile)
|
||||
{
|
||||
// The "All Files" item text
|
||||
CString strAllPictureFiles;
|
||||
strAllPictureFiles.LoadString(hProgInstance, IDS_ALLPICTUREFILES);
|
||||
strAllPictureFiles.LoadString(g_hinstExe, IDS_ALLPICTUREFILES);
|
||||
|
||||
// Get the import filter
|
||||
CSimpleArray<GUID> aguidFileTypesI;
|
||||
@@ -92,7 +89,7 @@ BOOL CMainWindow::GetOpenFileName(IN OUT LPTSTR pszFile, INT cchMaxFile)
|
||||
ZeroMemory(&ofn, sizeof(ofn));
|
||||
ofn.lStructSize = sizeof(ofn);
|
||||
ofn.hwndOwner = m_hWnd;
|
||||
ofn.hInstance = hProgInstance;
|
||||
ofn.hInstance = g_hinstExe;
|
||||
ofn.lpstrFilter = strFilter;
|
||||
ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY;
|
||||
ofn.lpstrDefExt = L"png";
|
||||
@@ -119,19 +116,24 @@ BOOL CMainWindow::GetSaveFileName(IN OUT LPTSTR pszFile, INT cchMaxFile)
|
||||
ZeroMemory(&sfn, sizeof(sfn));
|
||||
sfn.lStructSize = sizeof(sfn);
|
||||
sfn.hwndOwner = m_hWnd;
|
||||
sfn.hInstance = hProgInstance;
|
||||
sfn.hInstance = g_hinstExe;
|
||||
sfn.lpstrFilter = strFilter;
|
||||
sfn.Flags = OFN_EXPLORER | OFN_OVERWRITEPROMPT | OFN_ENABLEHOOK;
|
||||
sfn.lpfnHook = OFNHookProc;
|
||||
sfn.lpstrDefExt = L"png";
|
||||
|
||||
// Choose PNG
|
||||
for (INT i = 0; i < aguidFileTypesE.GetSize(); ++i)
|
||||
LPWSTR pchDotExt = PathFindExtensionW(pszFile);
|
||||
if (*pchDotExt == UNICODE_NULL)
|
||||
{
|
||||
if (aguidFileTypesE[i] == Gdiplus::ImageFormatPNG)
|
||||
// Choose PNG
|
||||
wcscat(pszFile, L".png");
|
||||
for (INT i = 0; i < aguidFileTypesE.GetSize(); ++i)
|
||||
{
|
||||
sfn.nFilterIndex = i + 1;
|
||||
break;
|
||||
if (aguidFileTypesE[i] == Gdiplus::ImageFormatPNG)
|
||||
{
|
||||
sfn.nFilterIndex = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -159,6 +161,7 @@ BOOL CMainWindow::ChooseColor(IN OUT COLORREF *prgbColor)
|
||||
choosecolor.lpCustColors = custColors;
|
||||
}
|
||||
|
||||
choosecolor.Flags = CC_RGBINIT;
|
||||
choosecolor.rgbResult = *prgbColor;
|
||||
if (!::ChooseColor(&choosecolor))
|
||||
return FALSE;
|
||||
@@ -169,10 +172,10 @@ BOOL CMainWindow::ChooseColor(IN OUT COLORREF *prgbColor)
|
||||
|
||||
HWND CMainWindow::DoCreate()
|
||||
{
|
||||
::LoadString(hProgInstance, IDS_DEFAULTFILENAME, filepathname, _countof(filepathname));
|
||||
::LoadString(g_hinstExe, IDS_DEFAULTFILENAME, g_szFileName, _countof(g_szFileName));
|
||||
|
||||
CString strTitle;
|
||||
strTitle.Format(IDS_WINDOWTITLE, PathFindFileName(filepathname));
|
||||
strTitle.Format(IDS_WINDOWTITLE, PathFindFileName(g_szFileName));
|
||||
|
||||
RECT& rc = registrySettings.WindowPlacement.rcNormalPosition;
|
||||
return Create(HWND_DESKTOP, rc, strTitle, WS_OVERLAPPEDWINDOW, WS_EX_ACCEPTFILES);
|
||||
@@ -187,7 +190,7 @@ _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, INT nC
|
||||
_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
|
||||
#endif
|
||||
|
||||
hProgInstance = hInstance;
|
||||
g_hinstExe = hInstance;
|
||||
|
||||
// Initialize common controls library
|
||||
INITCOMMONCONTROLSEX iccx;
|
||||
@@ -206,10 +209,8 @@ _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, INT nC
|
||||
}
|
||||
|
||||
// Initialize imageModel
|
||||
imageModel.Crop(registrySettings.BMPWidth, registrySettings.BMPHeight);
|
||||
if (__argc >= 2)
|
||||
DoLoadImageFile(mainWindow, __targv[1], TRUE);
|
||||
imageModel.ClearHistory();
|
||||
if (__argc < 2 || !DoLoadImageFile(mainWindow, __targv[1], TRUE))
|
||||
InitializeImage(NULL, NULL, FALSE);
|
||||
|
||||
// Make the window visible on the screen
|
||||
mainWindow.ShowWindow(registrySettings.WindowPlacement.showCmd);
|
||||
|
@@ -1,10 +1,10 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/miniature.cpp
|
||||
* PURPOSE: Window procedure of the main window and all children apart from
|
||||
* hPalWin, hToolSettings and hSelection
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Window procedure of the main window and all children apart from
|
||||
* hPalWin, hToolSettings and hSelection
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
* Copyright 2023 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com>
|
||||
*/
|
||||
|
||||
#include "precomp.h"
|
||||
@@ -13,6 +13,17 @@ CMiniatureWindow miniature;
|
||||
|
||||
/* FUNCTIONS ********************************************************/
|
||||
|
||||
CMiniatureWindow::CMiniatureWindow()
|
||||
: m_hbmCached(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
CMiniatureWindow::~CMiniatureWindow()
|
||||
{
|
||||
if (m_hbmCached)
|
||||
::DeleteObject(m_hbmCached);
|
||||
}
|
||||
|
||||
HWND CMiniatureWindow::DoCreate(HWND hwndParent)
|
||||
{
|
||||
if (m_hWnd)
|
||||
@@ -26,12 +37,36 @@ HWND CMiniatureWindow::DoCreate(HWND hwndParent)
|
||||
};
|
||||
|
||||
TCHAR strTitle[100];
|
||||
::LoadString(hProgInstance, IDS_MINIATURETITLE, strTitle, _countof(strTitle));
|
||||
::LoadString(g_hinstExe, IDS_MINIATURETITLE, strTitle, _countof(strTitle));
|
||||
|
||||
DWORD style = WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME;
|
||||
return Create(hwndParent, rc, strTitle, style, WS_EX_PALETTEWINDOW);
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
if (IsWindowVisible() && !IsIconic() && !IsZoomed())
|
||||
{
|
||||
CRect rc;
|
||||
GetWindowRect(&rc);
|
||||
registrySettings.ThumbXPos = rc.left;
|
||||
registrySettings.ThumbYPos = rc.top;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
if (IsWindowVisible() && !IsIconic() && !IsZoomed())
|
||||
{
|
||||
CRect rc;
|
||||
GetWindowRect(&rc);
|
||||
registrySettings.ThumbWidth = rc.Width();
|
||||
registrySettings.ThumbHeight = rc.Height();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
ShowWindow(SW_HIDE);
|
||||
@@ -39,16 +74,55 @@ LRESULT CMiniatureWindow::OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL&
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnEraseBkgnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
return TRUE; /* Avoid flickering */
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
RECT rc;
|
||||
GetClientRect(&rc);
|
||||
|
||||
// Start painting
|
||||
PAINTSTRUCT ps;
|
||||
HDC hDC = BeginPaint(&ps);
|
||||
StretchBlt(hDC, 0, 0, rc.right, rc.bottom,
|
||||
imageModel.GetDC(), 0, 0, imageModel.GetWidth(), imageModel.GetHeight(),
|
||||
SRCCOPY);
|
||||
if (!hDC)
|
||||
return 0;
|
||||
|
||||
// Use a memory bitmap to reduce flickering
|
||||
HDC hdcMem = ::CreateCompatibleDC(hDC);
|
||||
m_hbmCached = CachedBufferDIB(m_hbmCached, rc.right, rc.bottom);
|
||||
HGDIOBJ hbmOld = ::SelectObject(hdcMem, m_hbmCached);
|
||||
|
||||
// FIXME: Consider aspect ratio
|
||||
|
||||
// Fill the background
|
||||
::FillRect(hdcMem, &rc, (HBRUSH)(COLOR_BTNFACE + 1));
|
||||
|
||||
// Draw the image (hdcMem <-- imageModel)
|
||||
int cxImage = imageModel.GetWidth();
|
||||
int cyImage = imageModel.GetHeight();
|
||||
::StretchBlt(hdcMem, 0, 0, rc.right, rc.bottom,
|
||||
imageModel.GetDC(), 0, 0, cxImage, cyImage,
|
||||
SRCCOPY);
|
||||
|
||||
// Move the image (hDC <-- hdcMem)
|
||||
::BitBlt(hDC, 0, 0, rc.right, rc.bottom, hdcMem, 0, 0, SRCCOPY);
|
||||
|
||||
// Clean up
|
||||
::SelectObject(hdcMem, hbmOld);
|
||||
::DeleteDC(hdcMem);
|
||||
|
||||
EndPaint(&ps);
|
||||
return 0;
|
||||
}
|
||||
|
||||
LRESULT CMiniatureWindow::OnGetMinMaxInfo(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled)
|
||||
{
|
||||
// Avoid too small
|
||||
LPMINMAXINFO pInfo = (LPMINMAXINFO)lParam;
|
||||
pInfo->ptMinTrackSize.x = 100;
|
||||
pInfo->ptMinTrackSize.y = 75;
|
||||
return 0;
|
||||
}
|
||||
|
@@ -1,10 +1,9 @@
|
||||
/*
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL
|
||||
* FILE: base/applications/mspaint/miniature.h
|
||||
* PURPOSE: Window procedure of the main window and all children apart from
|
||||
* hPalWin, hToolSettings and hSelection
|
||||
* PROGRAMMERS: Benedikt Freisen
|
||||
* PROJECT: PAINT for ReactOS
|
||||
* LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
|
||||
* PURPOSE: Window procedure of the main window and all children apart from
|
||||
* hPalWin, hToolSettings and hSelection
|
||||
* COPYRIGHT: Copyright 2015 Benedikt Freisen <b.freisen@gmx.net>
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
@@ -12,17 +11,31 @@
|
||||
class CMiniatureWindow : public CWindowImpl<CMiniatureWindow>
|
||||
{
|
||||
public:
|
||||
DECLARE_WND_CLASS_EX(_T("MiniatureWindow"), CS_DBLCLKS, COLOR_BTNFACE)
|
||||
DECLARE_WND_CLASS_EX(_T("MiniatureWindow"), CS_DBLCLKS | CS_HREDRAW | CS_VREDRAW,
|
||||
COLOR_BTNFACE)
|
||||
|
||||
BEGIN_MSG_MAP(CMiniatureWindow)
|
||||
MESSAGE_HANDLER(WM_MOVE, OnMove)
|
||||
MESSAGE_HANDLER(WM_SIZE, OnSize)
|
||||
MESSAGE_HANDLER(WM_CLOSE, OnClose)
|
||||
MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
|
||||
MESSAGE_HANDLER(WM_PAINT, OnPaint)
|
||||
MESSAGE_HANDLER(WM_GETMINMAXINFO, OnGetMinMaxInfo)
|
||||
END_MSG_MAP()
|
||||
|
||||
CMiniatureWindow();
|
||||
virtual ~CMiniatureWindow();
|
||||
|
||||
HWND DoCreate(HWND hwndParent);
|
||||
|
||||
private:
|
||||
protected:
|
||||
HBITMAP m_hbmCached; // Cached buffer bitmap
|
||||
|
||||
LRESULT OnMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnClose(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnEraseBkgnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
LRESULT OnGetMinMaxInfo(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user