[PAINT]
authorBenedikt Freisen <b.freisen@gmx.net>
Sun, 1 Sep 2013 20:13:15 +0000 (20:13 +0000)
committerBenedikt Freisen <b.freisen@gmx.net>
Sun, 1 Sep 2013 20:13:15 +0000 (20:13 +0000)
* Stretch/Skew dialog fully implemented (skewing not yet functional), please check translations
* pre Windows Vista MSPaint palette selectable via menu entry
* Attributes dialog supports setting width and height in inches and cm also
* drawing functions improved
* some variables grouped into structs
* Changed SendMessage(... WM_PAINT ...) into InvalidateRect(...), this is the way it should be and it fixes half of the repainting bugs

svn path=/trunk/; revision=59954

40 files changed:
reactos/base/applications/mspaint/definitions.h
reactos/base/applications/mspaint/dialogs.c
reactos/base/applications/mspaint/drawing.c
reactos/base/applications/mspaint/drawing.h
reactos/base/applications/mspaint/globalvar.h
reactos/base/applications/mspaint/icons.rc
reactos/base/applications/mspaint/icons/horzskew.ico [new file with mode: 0644]
reactos/base/applications/mspaint/icons/vertskew.ico [new file with mode: 0644]
reactos/base/applications/mspaint/lang/bg-BG.rc
reactos/base/applications/mspaint/lang/cs-CZ.rc
reactos/base/applications/mspaint/lang/de-DE.rc
reactos/base/applications/mspaint/lang/en-GB.rc
reactos/base/applications/mspaint/lang/en-US.rc
reactos/base/applications/mspaint/lang/es-ES.rc
reactos/base/applications/mspaint/lang/eu-ES.rc
reactos/base/applications/mspaint/lang/fr-FR.rc
reactos/base/applications/mspaint/lang/he-IL.rc
reactos/base/applications/mspaint/lang/hu-HU.rc
reactos/base/applications/mspaint/lang/it-IT.rc
reactos/base/applications/mspaint/lang/ja-JP.rc
reactos/base/applications/mspaint/lang/nl-NL.rc
reactos/base/applications/mspaint/lang/no-NO.rc
reactos/base/applications/mspaint/lang/pl-PL.rc
reactos/base/applications/mspaint/lang/pt-BR.rc
reactos/base/applications/mspaint/lang/pt-PT.rc
reactos/base/applications/mspaint/lang/ro-RO.rc
reactos/base/applications/mspaint/lang/ru-RU.rc
reactos/base/applications/mspaint/lang/sk-SK.rc
reactos/base/applications/mspaint/lang/sv-SE.rc
reactos/base/applications/mspaint/lang/tr-TR.rc
reactos/base/applications/mspaint/lang/uk-UA.rc
reactos/base/applications/mspaint/lang/zh-CN.rc
reactos/base/applications/mspaint/lang/zh-TW.rc
reactos/base/applications/mspaint/main.c
reactos/base/applications/mspaint/mouse.c
reactos/base/applications/mspaint/palette.c
reactos/base/applications/mspaint/selection.c
reactos/base/applications/mspaint/sizebox.c
reactos/base/applications/mspaint/toolsettings.c
reactos/base/applications/mspaint/winproc.c

index 71ec94b..200ca9e 100644 (file)
@@ -29,6 +29,8 @@
 
 #define IDI_HORZSTRETCH 535
 #define IDI_VERTSTRETCH 536
+#define IDI_HORZSKEW    537
+#define IDI_VERTSKEW    538
 
 #define ID_MENU 501
 
@@ -68,7 +70,7 @@
 #define IDM_VIEWSHOWMINIATURE   243
 
 #define IDM_IMAGEROTATEMIRROR   250
-#define IDM_IMAGECHANGESIZE     251
+#define IDM_IMAGESTRETCHSKEW    251
 #define IDM_IMAGECROP           252
 #define IDM_IMAGEINVERTCOLORS   253
 #define IDM_IMAGEATTRIBUTES     254
@@ -76,6 +78,8 @@
 #define IDM_IMAGEDRAWOPAQUE     256
 
 #define IDM_COLORSEDITPALETTE   260
+#define IDM_COLORSMODERNPALETTE 261
+#define IDM_COLORSOLDPALETTE    262
 
 #define IDM_HELPHELPTOPICS  270
 #define IDM_HELPINFO        271
 #define IDD_ATTRIBUTESRB4       729
 #define IDD_ATTRIBUTESRB5       730
 
-#define IDD_CHANGESIZE      740
-#define IDD_CHANGESIZEGROUP 741
-#define IDD_CHANGESIZEICON1 742
-#define IDD_CHANGESIZETEXT1 743
-#define IDD_CHANGESIZEEDIT1 744
-#define IDD_CHANGESIZETEXT2 745
-#define IDD_CHANGESIZEICON2 746
-#define IDD_CHANGESIZETEXT3 747
-#define IDD_CHANGESIZEEDIT2 748
-#define IDD_CHANGESIZETEXT4 749
+#define IDD_STRETCHSKEW             740
+#define IDD_STRETCHSKEWGROUPSTRETCH 741
+#define IDD_STRETCHSKEWICONHSTRETCH 742
+#define IDD_STRETCHSKEWTEXTHSTRETCH 743
+#define IDD_STRETCHSKEWEDITHSTRETCH 744
+#define IDD_STRETCHSKEWTEXTHPERCENT 745
+#define IDD_STRETCHSKEWICONVSTRETCH 746
+#define IDD_STRETCHSKEWTEXTVSTRETCH 747
+#define IDD_STRETCHSKEWEDITVSTRETCH 748
+#define IDD_STRETCHSKEWTEXTVPERCENT 749
+#define IDD_STRETCHSKEWGROUPSKEW    750
+#define IDD_STRETCHSKEWICONHSKEW    751
+#define IDD_STRETCHSKEWTEXTHSKEW    752
+#define IDD_STRETCHSKEWEDITHSKEW    753
+#define IDD_STRETCHSKEWTEXTHDEG     754
+#define IDD_STRETCHSKEWICONVSKEW    755
+#define IDD_STRETCHSKEWTEXTVSKEW    756
+#define IDD_STRETCHSKEWEDITVSKEW    757
+#define IDD_STRETCHSKEWTEXTVDEG     758
 
 #define IDS_PROGRAMNAME 900
 #define IDS_WINDOWTITLE 901
 #define IDS_SAVEFILTER  927
 #define IDS_FILESIZE    928
 #define IDS_PRINTRES    929
+
+#define IDS_INTNUMBERS  930
+#define IDS_PERCENTAGE  931
+#define IDS_ANGLE       932
index 0e843c5..3bc227b 100644 (file)
@@ -77,10 +77,13 @@ ATTDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
             TCHAR strrc[100];
             TCHAR res[100];
 
+            widthSetInDlg = imgXRes;
+            heightSetInDlg = imgYRes;
+
             CheckDlgButton(hwnd, IDD_ATTRIBUTESRB3, BST_CHECKED);
             CheckDlgButton(hwnd, IDD_ATTRIBUTESRB5, BST_CHECKED);
-            SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT1, imgXRes, FALSE);
-            SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT2, imgYRes, FALSE);
+            SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT1, widthSetInDlg, FALSE);
+            SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT2, heightSetInDlg, FALSE);
 
             if (isAFile)
             {
@@ -108,19 +111,84 @@ ATTDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
             switch (LOWORD(wParam))
             {
                 case IDOK:
-                    EndDialog(hwnd,
-                              GetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT1, NULL,
-                                            FALSE) | (GetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT2, NULL,
-                                                                    FALSE) << 16));
+                    EndDialog(hwnd, 1);
                     break;
                 case IDCANCEL:
                     EndDialog(hwnd, 0);
                     break;
                 case IDD_ATTRIBUTESSTANDARD:
+                    widthSetInDlg = imgXRes;
+                    heightSetInDlg = imgYRes;
                     CheckDlgButton(hwnd, IDD_ATTRIBUTESRB3, BST_CHECKED);
                     CheckDlgButton(hwnd, IDD_ATTRIBUTESRB5, BST_CHECKED);
-                    SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT1, imgXRes, FALSE);
-                    SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT2, imgYRes, FALSE);
+                    SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT1, widthSetInDlg, FALSE);
+                    SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT2, heightSetInDlg, FALSE);
+                    break;
+                case IDD_ATTRIBUTESRB1:
+                {
+                    TCHAR number[100];
+                    _stprintf(number, _T("%.3lf"), widthSetInDlg / (0.0254 * fileHPPM));
+                    SetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT1, number);
+                    _stprintf(number, _T("%.3lf"), heightSetInDlg / (0.0254 * fileVPPM));
+                    SetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT2, number);
+                    break;
+                }
+                case IDD_ATTRIBUTESRB2:
+                {
+                    TCHAR number[100];
+                    _stprintf(number, _T("%.3lf"), widthSetInDlg * 100.0 / fileHPPM);
+                    SetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT1, number);
+                    _stprintf(number, _T("%.3lf"), heightSetInDlg * 100.0 / fileVPPM);
+                    SetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT2, number);
+                    break;
+                }
+                case IDD_ATTRIBUTESRB3:
+                    SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT1, widthSetInDlg, FALSE);
+                    SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT2, heightSetInDlg, FALSE);
+                    break;
+                case IDD_ATTRIBUTESEDIT1:
+                    if (Edit_GetModify((HWND)lParam))
+                    {
+                        TCHAR tempS[100];
+                        if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB1))
+                        {
+                            GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS));
+                            widthSetInDlg = max(1, (int) (_tcstod(tempS, NULL) * fileHPPM * 0.0254));
+                        }
+                        else if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB2))
+                        {
+                            GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS));
+                            widthSetInDlg = max(1, (int) (_tcstod(tempS, NULL) * fileHPPM / 100));
+                        }
+                        else if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB3))
+                        {
+                            GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT1, tempS, SIZEOF(tempS));
+                            widthSetInDlg = max(1, _tstoi(tempS));
+                        }
+                        Edit_SetModify((HWND)lParam, FALSE);
+                    }
+                    break;
+                case IDD_ATTRIBUTESEDIT2:
+                    if (Edit_GetModify((HWND)lParam))
+                    {
+                        TCHAR tempS[100];
+                        if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB1))
+                        {
+                            GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS));
+                            heightSetInDlg = max(1, (int) (_tcstod(tempS, NULL) * fileVPPM * 0.0254));
+                        }
+                        else if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB2))
+                        {
+                            GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS));
+                            heightSetInDlg = max(1, (int) (_tcstod(tempS, NULL) * fileVPPM / 100));
+                        }
+                        else if (IsDlgButtonChecked(hwnd, IDD_ATTRIBUTESRB3))
+                        {
+                            GetDlgItemText(hwnd, IDD_ATTRIBUTESEDIT2, tempS, SIZEOF(tempS));
+                            heightSetInDlg = max(1, _tstoi(tempS));
+                        }
+                        Edit_SetModify((HWND)lParam, FALSE);
+                    }
                     break;
             }
             break;
@@ -142,8 +210,10 @@ CHSIZEDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
     switch (message)
     {
         case WM_INITDIALOG:
-            SetDlgItemInt(hwnd, IDD_CHANGESIZEEDIT1, 100, FALSE);
-            SetDlgItemInt(hwnd, IDD_CHANGESIZEEDIT2, 100, FALSE);
+            SetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITHSTRETCH, 100, FALSE);
+            SetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITVSTRETCH, 100, FALSE);
+            SetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITHSKEW, 0, FALSE);
+            SetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITVSKEW, 0, FALSE);
             return TRUE;
         case WM_CLOSE:
             EndDialog(hwnd, 0);
@@ -152,11 +222,34 @@ CHSIZEDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
             switch (LOWORD(wParam))
             {
                 case IDOK:
-                    EndDialog(hwnd,
-                              GetDlgItemInt(hwnd, IDD_CHANGESIZEEDIT1, NULL,
-                                            FALSE) | (GetDlgItemInt(hwnd, IDD_CHANGESIZEEDIT2, NULL,
-                                                                    FALSE) << 16));
+                {
+                    TCHAR strrcIntNumbers[100];
+                    TCHAR strrcPercentage[100];
+                    TCHAR strrcAngle[100];
+                    BOOL tr1, tr2, tr3, tr4;
+
+                    LoadString(hProgInstance, IDS_INTNUMBERS, strrcIntNumbers, sizeof(strrcIntNumbers));
+                    LoadString(hProgInstance, IDS_PERCENTAGE, strrcPercentage, sizeof(strrcPercentage));
+                    LoadString(hProgInstance, IDS_ANGLE, strrcAngle, sizeof(strrcAngle));
+
+                    stretchSkew.percentage.x = GetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITHSTRETCH, &tr1, FALSE);
+                    stretchSkew.percentage.y = GetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITVSTRETCH, &tr2, FALSE);
+                    stretchSkew.angle.x = GetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITHSKEW, &tr3, TRUE);
+                    stretchSkew.angle.y = GetDlgItemInt(hwnd, IDD_STRETCHSKEWEDITVSKEW, &tr4, TRUE);
+
+                    if (!(tr1 && tr2 && tr3 && tr4))
+                        MessageBox(hwnd, strrcIntNumbers, NULL, MB_ICONEXCLAMATION);
+                    else if (stretchSkew.percentage.x < 1 || stretchSkew.percentage.x > 500
+                        || stretchSkew.percentage.y < 1 || stretchSkew.percentage.y > 500)
+                        MessageBox(hwnd, strrcPercentage, NULL, MB_ICONEXCLAMATION);
+                    else if (stretchSkew.angle.x < -89 || stretchSkew.angle.x > 89
+                        || stretchSkew.angle.y < -89 || stretchSkew.angle.y > 89)
+                        MessageBox(hwnd, strrcAngle, NULL, MB_ICONEXCLAMATION);
+                    else
+                        EndDialog(hwnd, 1);
+
                     break;
+                }
                 case IDCANCEL:
                     EndDialog(hwnd, 0);
                     break;
@@ -171,5 +264,5 @@ CHSIZEDlgWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 int
 changeSizeDlg()
 {
-    return DialogBox(hProgInstance, MAKEINTRESOURCE(IDD_CHANGESIZE), hMainWnd, (DLGPROC) CHSIZEDlgWinProc);
+    return DialogBox(hProgInstance, MAKEINTRESOURCE(IDD_STRETCHSKEW), hMainWnd, (DLGPROC) CHSIZEDlgWinProc);
 }
index 7a957ba..3c92454 100644 (file)
@@ -109,14 +109,15 @@ 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)
 {
-    short a;
+    LONG a, b;
+    b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
     HPEN oldPen;
     HBRUSH oldBrush = SelectObject(hdc, CreateSolidBrush(color));
     oldPen = SelectObject(hdc, CreatePen(PS_SOLID, 1, color));
-    for(a = 0; a <= 100; a++)
-        Rectangle(hdc, (x1 * (100 - a) + x2 * a) / 100 - radius + 1,
-                  (y1 * (100 - a) + y2 * a) / 100 - radius + 1, (x1 * (100 - a) + x2 * a) / 100 + radius + 1,
-                  (y1 * (100 - a) + y2 * a) / 100 + radius + 1);
+    for(a = 0; a <= b; a++)
+        Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - radius + 1,
+                  (y1 * (b - a) + y2 * a) / b - radius + 1, (x1 * (b - a) + x2 * a) / b + radius + 1,
+                  (y1 * (b - a) + y2 * a) / b + radius + 1);
     DeleteObject(SelectObject(hdc, oldBrush));
     DeleteObject(SelectObject(hdc, oldPen));
 }
@@ -124,13 +125,14 @@ Erase(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG radius)
 void
 Replace(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF bg, LONG radius)
 {
-    LONG a, x, y;
+    LONG a, b, x, y;
+    b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
     
-    for(a = 0; a <= 100; a++)
-        for(y = (y1 * (100 - a) + y2 * a) / 100 - radius + 1;
-            y < (y1 * (100 - a) + y2 * a) / 100 + radius + 1; y++)
-            for(x = (x1 * (100 - a) + x2 * a) / 100 - radius + 1;
-                x < (x1 * (100 - a) + x2 * a) / 100 + radius + 1; x++)
+    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);
 }
@@ -147,22 +149,23 @@ Airbrush(HDC hdc, LONG x, LONG y, COLORREF color, LONG r)
 }
 
 void
-Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, COLORREF style)
+Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style)
 {
     HPEN oldPen = SelectObject(hdc, CreatePen(PS_SOLID, 1, color));
     HBRUSH oldBrush = SelectObject(hdc, CreateSolidBrush(color));
-    short a;
+    LONG a, b;
+    b = max(1, max(abs(x2 - x1), abs(y2 - y1)));
     switch (style)
     {
         case 0:
-            for(a = 0; a <= 100; a++)
-                Ellipse(hdc, (x1 * (100 - a) + x2 * a) / 100 - 3, (y1 * (100 - a) + y2 * a) / 100 - 3,
-                        (x1 * (100 - a) + x2 * a) / 100 + 4, (y1 * (100 - a) + y2 * a) / 100 + 4);
+            for(a = 0; a <= b; a++)
+                Ellipse(hdc, (x1 * (b - a) + x2 * a) / b - 3, (y1 * (b - a) + y2 * a) / b - 3,
+                        (x1 * (b - a) + x2 * a) / b + 4, (y1 * (b - a) + y2 * a) / b + 4);
             break;
         case 1:
-            for(a = 0; a <= 100; a++)
-                Ellipse(hdc, (x1 * (100 - a) + x2 * a) / 100 - 1, (y1 * (100 - a) + y2 * a) / 100 - 1,
-                        (x1 * (100 - a) + x2 * a) / 100 + 3, (y1 * (100 - a) + y2 * a) / 100 + 3);
+            for(a = 0; a <= b; a++)
+                Ellipse(hdc, (x1 * (b - a) + x2 * a) / b - 1, (y1 * (b - a) + y2 * a) / b - 1,
+                        (x1 * (b - a) + x2 * a) / b + 3, (y1 * (b - a) + y2 * a) / b + 3);
             break;
         case 2:
             MoveToEx(hdc, x1, y1, NULL);
@@ -170,62 +173,44 @@ Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, COLORREF styl
             SetPixel(hdc, x2, y2, color);
             break;
         case 3:
-            for(a = 0; a <= 100; a++)
-                Rectangle(hdc, (x1 * (100 - a) + x2 * a) / 100 - 3, (y1 * (100 - a) + y2 * a) / 100 - 3,
-                          (x1 * (100 - a) + x2 * a) / 100 + 5, (y1 * (100 - a) + y2 * a) / 100 + 5);
+            for(a = 0; a <= b; a++)
+                Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 3, (y1 * (b - a) + y2 * a) / b - 3,
+                          (x1 * (b - a) + x2 * a) / b + 5, (y1 * (b - a) + y2 * a) / b + 5);
             break;
         case 4:
-            for(a = 0; a <= 100; a++)
-                Rectangle(hdc, (x1 * (100 - a) + x2 * a) / 100 - 2, (y1 * (100 - a) + y2 * a) / 100 - 2,
-                          (x1 * (100 - a) + x2 * a) / 100 + 3, (y1 * (100 - a) + y2 * a) / 100 + 3);
+            for(a = 0; a <= b; a++)
+                Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 2, (y1 * (b - a) + y2 * a) / b - 2,
+                          (x1 * (b - a) + x2 * a) / b + 3, (y1 * (b - a) + y2 * a) / b + 3);
             break;
         case 5:
-            for(a = 0; a <= 100; a++)
-                Rectangle(hdc, (x1 * (100 - a) + x2 * a) / 100 - 1, (y1 * (100 - a) + y2 * a) / 100 - 1,
-                          (x1 * (100 - a) + x2 * a) / 100 + 1, (y1 * (100 - a) + y2 * a) / 100 + 1);
+            for(a = 0; a <= b; a++)
+                Rectangle(hdc, (x1 * (b - a) + x2 * a) / b - 1, (y1 * (b - a) + y2 * a) / b - 1,
+                          (x1 * (b - a) + x2 * a) / b + 1, (y1 * (b - a) + y2 * a) / b + 1);
             break;
         case 6:
-            for(a = 0; a <= 100; a++)
-            {
-                MoveToEx(hdc, (x1 * (100 - a) + x2 * a) / 100 - 3, (y1 * (100 - a) + y2 * a) / 100 + 5, NULL);
-                LineTo(hdc, (x1 * (100 - a) + x2 * a) / 100 + 5, (y1 * (100 - a) + y2 * a) / 100 - 3);
-            }
-            break;
         case 7:
-            for(a = 0; a <= 100; a++)
-            {
-                MoveToEx(hdc, (x1 * (100 - a) + x2 * a) / 100 - 2, (y1 * (100 - a) + y2 * a) / 100 + 3, NULL);
-                LineTo(hdc, (x1 * (100 - a) + x2 * a) / 100 + 3, (y1 * (100 - a) + y2 * a) / 100 - 2);
-            }
-            break;
         case 8:
-            for(a = 0; a <= 100; a++)
-            {
-                MoveToEx(hdc, (x1 * (100 - a) + x2 * a) / 100 - 1, (y1 * (100 - a) + y2 * a) / 100 + 1, NULL);
-                LineTo(hdc, (x1 * (100 - a) + x2 * a) / 100 + 1, (y1 * (100 - a) + y2 * a) / 100 - 1);
-            }
-            break;
         case 9:
-            for(a = 0; a <= 100; a++)
-            {
-                MoveToEx(hdc, (x1 * (100 - a) + x2 * a) / 100 - 3, (y1 * (100 - a) + y2 * a) / 100 - 3, NULL);
-                LineTo(hdc, (x1 * (100 - a) + x2 * a) / 100 + 5, (y1 * (100 - a) + y2 * a) / 100 + 5);
-            }
-            break;
         case 10:
-            for(a = 0; a <= 100; a++)
-            {
-                MoveToEx(hdc, (x1 * (100 - a) + x2 * a) / 100 - 2, (y1 * (100 - a) + y2 * a) / 100 - 2, NULL);
-                LineTo(hdc, (x1 * (100 - a) + x2 * a) / 100 + 3, (y1 * (100 - a) + y2 * a) / 100 + 3);
-            }
-            break;
         case 11:
-            for(a = 0; a <= 100; a++)
-            {
-                MoveToEx(hdc, (x1 * (100 - a) + x2 * a) / 100 - 1, (y1 * (100 - a) + y2 * a) / 100 - 1, NULL);
-                LineTo(hdc, (x1 * (100 - a) + x2 * a) / 100 + 1, (y1 * (100 - a) + y2 * a) / 100 + 1);
-            }
+        {
+            POINT offsTop[] = {{.x = 4, .y = -3}, {.x = 2, .y = -2}, {.x = 0, .y = 0},
+                               {.x = -3, .y = -3}, {.x = -2, .y = -2}, {.x = -1, .y = 0}};
+            POINT offsBtm[] = {{.x = -3, .y = 4}, {.x = -2, .y = 2}, {.x = -1, .y = 1},
+                               {.x = 4, .y = 4}, {.x = 2, .y = 2}, {.x = 0, .y = 1}};
+            LONG idx = style - 6;
+            POINT pts[4];
+            pts[0].x = x1 + offsTop[idx].x;
+            pts[0].y = y1 + offsTop[idx].y;
+            pts[1].x = x1 + offsBtm[idx].x;
+            pts[1].y = y1 + offsBtm[idx].y;
+            pts[2].x = x2 + offsBtm[idx].x;
+            pts[2].y = y2 + offsBtm[idx].y;
+            pts[3].x = x2 + offsTop[idx].x;
+            pts[3].y = y2 + offsTop[idx].y;
+            Polygon(hdc, pts, 4);
             break;
+        }
     }
     DeleteObject(SelectObject(hdc, oldBrush));
     DeleteObject(SelectObject(hdc, oldPen));
index 2c39ee9..6368ff9 100644 (file)
@@ -26,7 +26,7 @@ void Replace(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF fg, COLORREF
 
 void Airbrush(HDC hdc, LONG x, LONG y, COLORREF color, LONG r);
 
-void Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, COLORREF style);
+void Brush(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2, COLORREF color, LONG style);
 
 void RectSel(HDC hdc, LONG x1, LONG y1, LONG x2, LONG y2);
 
index 1c0c49b..63e68fe 100644 (file)
 //#include <windows.h>
 //#include "definitions.h"
 
+/* TYPES ************************************************************/
+
+typedef struct tagSTRETCHSKEW {
+    POINT percentage;
+    POINT angle;
+} STRETCHSKEW;
+
 /* VARIABLES declared in main.c *************************************/
 
 extern HDC hDrawingDC;
@@ -20,16 +27,19 @@ extern BITMAPINFO bitmapinfo;
 extern int imgXRes;
 extern int imgYRes;
 
+extern int widthSetInDlg;
+extern int heightSetInDlg;
+
+extern STRETCHSKEW stretchSkew;
+
 extern HBITMAP hBms[HISTORYSIZE];
 extern int currInd;
 extern int undoSteps;
 extern int redoSteps;
 extern BOOL imageSaved;
 
-extern LONG startX;
-extern LONG startY;
-extern LONG lastX;
-extern LONG lastY;
+extern POINT start;
+extern POINT last;
 extern int lineWidth;
 extern int shapeStyle;
 extern int brushStyle;
@@ -46,6 +56,9 @@ extern HBITMAP hSelBm;
 extern HBITMAP hSelMask;
 
 extern int palColors[28];
+extern int modernPalColors[28];
+extern int oldPalColors[28];
+extern int selectedPalette;
 
 extern int fgColor;
 extern int bgColor;
index 6a42717..cea0278 100644 (file)
@@ -13,3 +13,5 @@ IDC_AIRBRUSH    ICON "icons/airbrush_cur.ico"
 
 IDI_HORZSTRETCH ICON "icons/horzstretch.ico"
 IDI_VERTSTRETCH ICON "icons/vertstretch.ico"
+IDI_HORZSKEW    ICON "icons/horzskew.ico"
+IDI_VERTSKEW    ICON "icons/vertskew.ico"
diff --git a/reactos/base/applications/mspaint/icons/horzskew.ico b/reactos/base/applications/mspaint/icons/horzskew.ico
new file mode 100644 (file)
index 0000000..81dbe7c
Binary files /dev/null and b/reactos/base/applications/mspaint/icons/horzskew.ico differ
diff --git a/reactos/base/applications/mspaint/icons/vertskew.ico b/reactos/base/applications/mspaint/icons/vertskew.ico
new file mode 100644 (file)
index 0000000..e72012f
Binary files /dev/null and b/reactos/base/applications/mspaint/icons/vertskew.ico differ
index b7e9c79..02e27a9 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "Из&ображение"
     BEGIN
         MENUITEM "Завъртане/Огледало\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Преоразмеряване\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Изрязване", IDM_IMAGECROP
         MENUITEM "Обръщане на цветовете\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Принадлежности\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Цветове"
     BEGIN
         MENUITEM "Промяна на палитрите...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Подразбирано", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Промяна на размера"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Промяна на размера", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Водоравно:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Отвесно:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Водоравно:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Отвесно:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Водоравно:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Отвесно:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "Добре", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Отказ", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 разрядни файлове bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index ecdd184..11ef885 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Obrázek"
     BEGIN
         MENUITEM "Překlopit nebo otočit...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Změnit velikost...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Oříznout", IDM_IMAGECROP
         MENUITEM "Inverovat barvy\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Atributy...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Barvy"
     BEGIN
         MENUITEM "Upravit paletu...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&Nápověda"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Výchozí", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Změnit velikost"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Změnit velikost", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Vodorovně:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Svisle:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Vodorovně:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Svisle:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Vodorovně:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Svisle:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Storno", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24bitová bitmapa (*.bmp;*.dib)\1*.bmp;*.dib\1"
     IDS_FILESIZE, "%d bajtů"
     IDS_PRINTRES, "%d x %d pixelů na metr"
+    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."
 END
index 31a4334..139eae0 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "B&ild"
     BEGIN
         MENUITEM "Drehen/Spiegeln...\tStrg+D", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Größe ändern...\tStrg+K", IDM_IMAGECHANGESIZE
+        MENUITEM "Strecken/Zerren...\tStrg+K", IDM_IMAGESTRETCHSKEW
         MENUITEM "Zuschneiden", IDM_IMAGECROP
         MENUITEM "Farben umkehren\tStrg+U", IDM_IMAGEINVERTCOLORS
         MENUITEM "Attribute...\tStrg+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Farben"
     BEGIN
         MENUITEM "Palette bearbeiten...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Moderne Palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Alte Palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^R", IDM_VIEWSHOWGRID
     "^G", IDM_VIEWFULLSCREEN
     "^D", IDM_IMAGEROTATEMIRROR
-    "^K", IDM_IMAGECHANGESIZE
+    "^K", IDM_IMAGESTRETCHSKEW
     "^U", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Standard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Größe ändern"
+CAPTION "Bild strecken und zerren"
 BEGIN
-    GROUPBOX "Größe ändern", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Horizontal:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Vertikal:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Strecken", 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
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Vertikal:", IDD_STRETCHSKEWTEXTVSTRETCH, 45, 49, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSTRETCH, 90, 48, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTVPERCENT, 125, 49, 15, 10
+    GROUPBOX "Zerren", 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 "Grad", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Vertikal:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "Grad", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Abbrechen", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24-Bit-Bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index 56eb7a5..e4ba6f0 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Image"
     BEGIN
         MENUITEM "Rotate/Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Resize...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Crop", IDM_IMAGECROP
         MENUITEM "Invert colours\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Attributes...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Colours"
     BEGIN
         MENUITEM "Edit palette...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Standard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Change size"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Change size", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Horizontally:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Vertically:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Horizontally:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Vertically:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Horizontally:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Vertically:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Cancel", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 bit bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index 3fb6dfe..239ca59 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Image"
     BEGIN
         MENUITEM "Rotate/Mirror...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Resize...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Crop", IDM_IMAGECROP
         MENUITEM "Invert colors\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Attributes...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Colors"
     BEGIN
         MENUITEM "Edit palette...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Default", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Change size"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Change size", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Horizontally:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Vertically:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Horizontally:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Vertically:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Horizontally:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Vertically:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Cancel", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 bit bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index a1ca360..1a0fa94 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Imagen"
     BEGIN
         MENUITEM "Rotar/Invertir...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Cambiar dimensiones...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Recortar", IDM_IMAGECROP
         MENUITEM "Invertir colores\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Atributos...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Colores"
     BEGIN
         MENUITEM "Editar paleta...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "Ay&uda"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Predefinido", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Redimensionar"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Redimensionar ", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Horizontal:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Vertical:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", 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
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    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
+    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
+    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
     DEFPUSHBUTTON "Aceptar", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "Mapa de bits de 24 bits (*.bmp;*.dib)\1*.bmp;*.dib\1"
     IDS_FILESIZE, "%d bytes"
     IDS_PRINTRES, "%d x %d pixels por metro"
+    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."
 END
index 946e59b..7fe841a 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "I&rudia"
     BEGIN
         MENUITEM "Irauli/biratu...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Tiratu...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Recortar", IDM_IMAGECROP
         MENUITEM "Alderantzikatu koloreak\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Atributuak...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Koloreak"
     BEGIN
         MENUITEM "Editatu koloreak...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&Laguntza"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Lehenetsia", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Tiratu"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Tiratu ", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Horizontalki:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Bertikalki:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Horizontalki:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Bertikalki:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Horizontalki:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Bertikalki:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "Ados", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Utzi", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 Biteko bit-mapa (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index 2571e6b..b0a39f6 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Image"
     BEGIN
         MENUITEM "Retourner/Faire pivoter...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Redimensionner...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Rogner", IDM_IMAGECROP
         MENUITEM "Inverser les couleurs\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Attributs...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Couleurs"
     BEGIN
         MENUITEM "Modifier les couleurs...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Par défaut", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Redimensionner"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Redimensionnement", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Horizontal :", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Vertical :", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", 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
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    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
+    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
+    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
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Annuler", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "Bitmap 24 bit (*.bmp;*.dib)\1*.bmp;*.dib\1"
     IDS_FILESIZE, "%d octets"
     IDS_PRINTRES, "%d x %d pixels par mètre"
+    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."
 END
index 2d47beb..0ec2819 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "ת&מונה"
     BEGIN
         MENUITEM "סובב/הפוך...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "שנה גודל...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "חתוך", IDM_IMAGECROP
         MENUITEM "הפוך צבעים\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "תכונות...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&צבעים"
     BEGIN
         MENUITEM "עריכת ערכה...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "ברירת מחדל", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "שינוי גודל"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "שנה גודל", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "אופקי", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "מאוזן", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "אופקי:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "מאוזן:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "אופקי:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "מאוזן:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "אישור", IDOK, 170, 8, 48, 14
     PUSHBUTTON "ביטול", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "קבצי מפת סיביות של 24 סיביות (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index c8327ff..4558665 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Kép"
     BEGIN
         MENUITEM "Forgatás/Tükrözés...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Átméretezés...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Vágás", IDM_IMAGECROP
         MENUITEM "Színek megfordítása\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Attribútumok...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "Szín&ek"
     BEGIN
         MENUITEM "Paletta szerkesztése...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Alapértelmezett", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Átméretezés"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Átméretezés", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Vízszintesen:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Függõlegesen:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Vízszintesen:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Függõlegesen:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Vízszintesen:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Függõlegesen:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Mégsem", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 bites bitkép (*.bmp;*.dib)\1*.bmp;*.dib\1"
     IDS_FILESIZE, "%d bájt"
     IDS_PRINTRES, "%d x %d pixel per méter"
+    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."
 END
index 38eb6e6..ac132b1 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Immagine"
     BEGIN
         MENUITEM "Capovolgi/ruota...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Ridimensiona...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Ritaglia", IDM_IMAGECROP
         MENUITEM "Inverti colori\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Attributi...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Colori"
     BEGIN
         MENUITEM "Modifica colori...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Predefiniti", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Ridimensiona"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Ridimensiona", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Orizzontalmente:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Verticalmente:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Orizzontalmente:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Verticalmente:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Orizzontalmente:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Verticalmente:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Annulla", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 bit bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1"
     IDS_FILESIZE, "%d bytes"
     IDS_PRINTRES, "%d x %d pixels per metro"
+    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."
 END
index 4da051d..35b7f85 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "画像(&I)"
     BEGIN
         MENUITEM "回転と反転\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "サイズの変更\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "切り取り", IDM_IMAGECROP
         MENUITEM "色の反転\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "画像の属性\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "色(&C)"
     BEGIN
         MENUITEM "パレットの編集", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "デフォルト", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 9, "MS UI Gothic"
-CAPTION "サイズの変更"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "サイズの変更", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "水平方向:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "垂直方向:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "水平方向:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "垂直方向:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "水平方向:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "垂直方向:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "キャンセル", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 ビット ビットマップ (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index 48a6b7f..eda8e2f 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Afbeelding"
     BEGIN
         MENUITEM "Spiegelen/draaien...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Formaat wijzigen...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Bijsnijden", IDM_IMAGECROP
         MENUITEM "Negatief\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Kenmerken...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Kleuren"
     BEGIN
         MENUITEM "Kleurenpalet bewerken...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Standaard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Formaat wijzigen"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Formaat wijzigen", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Horizontaal:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Verticaal:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Horizontaal:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Verticaal:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Horizontaal:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Verticaal:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Annuleren", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 bit bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index 07784c4..e43a125 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Bilde"
     BEGIN
         MENUITEM "Roter/speile...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Endre størrelse...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Beskjær", IDM_IMAGECROP
         MENUITEM "Invertere farger\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Attributter...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Farger"
     BEGIN
         MENUITEM "Rediger farger...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&Hjelp?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Standard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Endre størrelse"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Endre størrelse", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Horisontalt:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Vertikalt:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Horisontalt:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Vertikalt:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Horisontalt:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Vertikalt:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Avbryt", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 bit bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index b8a431b..02fc5cc 100644 (file)
@@ -70,7 +70,7 @@ BEGIN
     POPUP "&Obraz"
     BEGIN
         MENUITEM "Obrót/Odbicie...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Zmiana rozmiaru...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Kadrowanie", IDM_IMAGECROP
         MENUITEM "Odwrócenie kolorów\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Atrybuty...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -81,6 +81,9 @@ BEGIN
     POPUP "&Kolory"
     BEGIN
         MENUITEM "Edytuj kolory...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -108,7 +111,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -157,20 +160,29 @@ BEGIN
     PUSHBUTTON "Domyślne", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Zmiana rozmiaru"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Zmień rozmiar", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "W poziomie:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "W pionie:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "W poziomie:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "W pionie:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "W poziomie:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "W pionie:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Anuluj", IDCANCEL, 170, 24, 48, 14
 END
@@ -204,4 +216,7 @@ BEGIN
     IDS_SAVEFILTER, "Bitmapa 24 bit (*.bmp;*.dib)\1*.bmp;*.dib\1"
     IDS_FILESIZE, "%d bajtów"
     IDS_PRINTRES, "%d x %d pikseli na metr"
+    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."
 END
index 661699c..f7a5920 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Imagem"
     BEGIN
         MENUITEM "Inverter/&girar...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "&Alongar/inclinar...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "&Alongar/inclinar...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Cortar", IDM_IMAGECROP
         MENUITEM "&Inverter cores\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "A&tributos...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Cores"
     BEGIN
         MENUITEM "&Editar cores...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "&Padrão", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Alterar tamanho"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Alterar tamanho", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Horizontal:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Vertical:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", 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
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    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
+    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
+    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
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "Bitmaps de 24 bits (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index d2a90e4..0948ec8 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Imagem"
     BEGIN
         MENUITEM "I&nverter/rodar...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Redimensionar/&Torcer...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Redimensionar/&Torcer...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "&Recortar", IDM_IMAGECROP
         MENUITEM "Inverter &cores\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "&Atributos...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Cores"
     BEGIN
         MENUITEM "&Editar cores...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&Ajuda"
@@ -107,7 +110,7 @@ BEGIN
     "^M", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "&Predefinição", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Alterar tamanho"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Alterar tamanho", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Horizontal:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Vertical:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", 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
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    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
+    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
+    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
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Cancelar", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "Mapa de bits de 24 bits (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index 91a1b58..b848b6e 100644 (file)
@@ -70,7 +70,7 @@ BEGIN
     POPUP "&Imagine"
     BEGIN
         MENUITEM "&Rotire/Oglindire…\tCtrl+R",     IDM_IMAGEROTATEMIRROR
-        MENUITEM "Re&dimensionare…\tCtrl+W",       IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W",        IDM_IMAGESTRETCHSKEW
         MENUITEM "&Trunchiază",                    IDM_IMAGECROP
         MENUITEM "In&versează culorile\tCtrl+I",   IDM_IMAGEINVERTCOLORS
         MENUITEM "&Atribute…\tCtrl+E",             IDM_IMAGEATTRIBUTES
@@ -81,6 +81,9 @@ BEGIN
     POPUP "&Culori"
     BEGIN
         MENUITEM "&Editare paletă…",               IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette",                 IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette",                    IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -108,7 +111,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -157,22 +160,31 @@ BEGIN
     PUSHBUTTON       "I&mplicite",   IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Redimensionare imagine"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX       "Redimensionare", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON                             IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT          "Orizontală:",    IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT                         IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT          "%",              IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON                             IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT          "Verticală:",     IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT                         IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT          "%",              IDD_CHANGESIZETEXT4, 125, 49, 15, 10
-    DEFPUSHBUTTON  "Con&firmă",      IDOK, 170, 8, 48, 14
-    PUSHBUTTON     "A&nulează",      IDCANCEL, 170, 24, 48, 14
+    GROUPBOX         "Stretch",      IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH,            IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT            "Orizontală:",  IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT                         IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT            "%",            IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH,            IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    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
+    ICON IDI_HORZSKEW,               IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT            "Orizontală:",  IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT                         IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT            "degrees",      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
+    DEFPUSHBUTTON    "Con&firmă",    IDOK, 170, 8, 48, 14
+    PUSHBUTTON       "A&nulează",    IDCANCEL, 170, 24, 48, 14
 END
 
 STRINGTABLE
@@ -204,4 +216,7 @@ BEGIN
     IDS_SAVEFILTER,       "Bitmap pe 24 biți (*.bmp;*.dib)\1*.bmp;*.dib\1"
     IDS_FILESIZE,         "%d octeți"
     IDS_PRINTRES,         "%d x %d pixeli pe metru"
+    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."
 END
index 226e105..4b2f338 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Рисунок"
     BEGIN
         MENUITEM "&Отразить/повернуть...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "&Изменить размер...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Обре&зать", IDM_IMAGECROP
         MENUITEM "О&братить цвета\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "&Атрибуты...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "П&алитра"
     BEGIN
         MENUITEM "&Изменить палитру...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&?"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "По умо&лчанию", IDD_ATTRIBUTESSTANDARD, 150, 40, 57, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Изменение размеров"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Размер", IDD_CHANGESIZEGROUP, 6, 6, 145, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "По горизонтали:", IDD_CHANGESIZETEXT1, 39, 24, 62, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 102, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 137, 24, 12, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "По вертикали:", IDD_CHANGESIZETEXT3, 39, 49, 62, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 102, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 137, 49, 12, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "По горизонтали:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "По вертикали:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "По горизонтали:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "По вертикали:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Отмена", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24-разрядный рисунок (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index 835bd95..65eb1af 100644 (file)
@@ -70,7 +70,7 @@ BEGIN
     POPUP "&Obrázok"
     BEGIN
         MENUITEM "Prevrátiť alebo otočiť...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Zmeniť veľkosť...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Orezať", IDM_IMAGECROP
         MENUITEM "Invertovať farby\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Atribúty...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -81,6 +81,9 @@ BEGIN
     POPUP "&Farby"
     BEGIN
         MENUITEM "Upraviť paletu...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&Pomocník"
@@ -108,7 +111,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -157,20 +160,29 @@ BEGIN
     PUSHBUTTON "&Predvolené", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 150
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Zmena veľkosti"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Zmeniť veľkosť", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "&Vodorovne:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "&Zvislo:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "&Vodorovne:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "&Zvislo:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "&Vodorovne:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "&Zvislo:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Zrušiť", IDCANCEL, 170, 24, 48, 14
 END
@@ -204,4 +216,7 @@ BEGIN
     IDS_SAVEFILTER, "24-bitová mapa (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index 742b196..06f3e72 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Bild"
     BEGIN
         MENUITEM "Rotera/Spegelvänd...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Ändra storlek...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Beskära", IDM_IMAGECROP
         MENUITEM "Invertera färger\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Attribut...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Färger"
     BEGIN
         MENUITEM "Redigera palett...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&Hjälp"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Standard", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Ändra storlek"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Ändra storlek", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Horisontellt:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Vertikalt:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Horisontellt:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Vertikalt:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Horisontellt:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Vertikalt:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Avbryt", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 bit bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index 1fa5bc2..d1fc96b 100644 (file)
@@ -70,7 +70,7 @@ BEGIN
     POPUP "G&örüntü"
     BEGIN
         MENUITEM "&Döndür ya da Evir...\tCtrl+R",  IDM_IMAGEROTATEMIRROR
-        MENUITEM "&Boyutlandır...\tCtrl+W",        IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W",        IDM_IMAGESTRETCHSKEW
         MENUITEM "&Kırp",                          IDM_IMAGECROP
         MENUITEM "&Renkleri Evir\tCtrl+I",         IDM_IMAGEINVERTCOLORS
         MENUITEM "&Öz Nitelikler...\tCtrl+E",      IDM_IMAGEATTRIBUTES
@@ -81,6 +81,9 @@ BEGIN
     POPUP "&Renkler"
     BEGIN
         MENUITEM "&Renkliği Düzenle...",           IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette",                 IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette",                    IDM_COLORSOLDPALETTE
     END
 
     POPUP "&Yardım"
@@ -108,7 +111,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -157,20 +160,29 @@ BEGIN
     PUSHBUTTON "Ön Tanımlı", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Yeniden Boyutlandır"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Yeniden Boyutlandır", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Yatay:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Dikey:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Yatay:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Dikey:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Yatay:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Dikey:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "Tamam", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Vazgeç", IDCANCEL, 170, 24, 48, 14
 END
@@ -204,4 +216,7 @@ BEGIN
     IDS_SAVEFILTER, "24 İkillik Bit Eşlem Görüntüsü (*.bmp;*.dib)\1*.bmp;*.dib\1"
     IDS_FILESIZE, "%d sekizlik"
     IDS_PRINTRES, "Her metrekarede %d x %d nokta"
+    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."
 END
index 2582b05..627fa93 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "&Зображення"
     BEGIN
         MENUITEM "Відобразити/повернути...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "Змінити розмір...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "Обітнути", IDM_IMAGECROP
         MENUITEM "Обернути кольори\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "Атрибути...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "&Кольори"
     BEGIN
         MENUITEM "Змінити палітру...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "&Довідка"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "Стандартно", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "Зміна розміру"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "Зміна розміру", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "Горизонталь:", IDD_CHANGESIZETEXT1, 45, 24, 45, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 92, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 127, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "Вертикаль:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 92, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 127, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "Горизонталь:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "Вертикаль:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "Горизонталь:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "Вертикаль:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "OK", IDOK, 170, 8, 48, 14
     PUSHBUTTON "Скасувати", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24-розрядний рисунок (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index cee430d..bd086f3 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "图像(&I)"
     BEGIN
         MENUITEM "旋转/镜像...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "改变大小...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/Skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "剪裁", IDM_IMAGECROP
         MENUITEM "颜色反转\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "属性...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "颜色(&C)"
     BEGIN
         MENUITEM "编辑调色板...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "帮助(&?)"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "缺省", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "改变大小"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "改变大小", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "水平:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "垂直:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "水平:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "垂直:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "水平:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "垂直:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "确定", IDOK, 170, 8, 48, 14
     PUSHBUTTON "取消", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 位位图文件 (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index fec0cd3..f3f78dd 100644 (file)
@@ -69,7 +69,7 @@ BEGIN
     POPUP "圖像(&I)"
     BEGIN
         MENUITEM "旋轉/翻轉...\tCtrl+R", IDM_IMAGEROTATEMIRROR
-        MENUITEM "改變大小...\tCtrl+W", IDM_IMAGECHANGESIZE
+        MENUITEM "Stretch/skew...\tCtrl+W", IDM_IMAGESTRETCHSKEW
         MENUITEM "剪裁", IDM_IMAGECROP
         MENUITEM "顏色反轉\tCtrl+I", IDM_IMAGEINVERTCOLORS
         MENUITEM "內容...\tCtrl+E", IDM_IMAGEATTRIBUTES
@@ -80,6 +80,9 @@ BEGIN
     POPUP "顏色(&C)"
     BEGIN
         MENUITEM "編輯色彩...", IDM_COLORSEDITPALETTE
+        MENUITEM SEPARATOR
+        MENUITEM "Modern palette", IDM_COLORSMODERNPALETTE
+        MENUITEM "Old palette", IDM_COLORSOLDPALETTE
     END
 
     POPUP "說明(&?)"
@@ -107,7 +110,7 @@ BEGIN
     "^G", IDM_VIEWSHOWGRID
     "^F", IDM_VIEWFULLSCREEN
     "^R", IDM_IMAGEROTATEMIRROR
-    "^W", IDM_IMAGECHANGESIZE
+    "^W", IDM_IMAGESTRETCHSKEW
     "^I", IDM_IMAGEINVERTCOLORS
     "^E", IDM_IMAGEATTRIBUTES
     "N", IDM_IMAGEDELETEIMAGE, CONTROL, SHIFT, VIRTKEY
@@ -156,20 +159,29 @@ BEGIN
     PUSHBUTTON "預設值", IDD_ATTRIBUTESSTANDARD, 170, 40, 48, 14
 END
 
-IDD_CHANGESIZE DIALOGEX 100, 100, 225, 80
+IDD_STRETCHSKEW DIALOGEX 100, 100, 225, 80
 STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
 FONT 8, "MS Shell Dlg"
-CAPTION "改變大小"
+CAPTION "Stretch and skew image"
 BEGIN
-    GROUPBOX "改變大小", IDD_CHANGESIZEGROUP, 6, 6, 158, 66
-    ICON IDI_HORZSTRETCH, IDD_CHANGESIZEICON1, 12, 18, 32, 32
-    LTEXT "水平:", IDD_CHANGESIZETEXT1, 45, 24, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT1, 90, 23, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT2, 125, 24, 15, 10
-    ICON IDI_VERTSTRETCH, IDD_CHANGESIZEICON2, 12, 43, 32, 32
-    LTEXT "垂直:", IDD_CHANGESIZETEXT3, 45, 49, 40, 10
-    EDITTEXT IDD_CHANGESIZEEDIT2, 90, 48, 32, 12
-    LTEXT "%", IDD_CHANGESIZETEXT4, 125, 49, 15, 10
+    GROUPBOX "Stretch", IDD_STRETCHSKEWGROUPSTRETCH, 6, 6, 158, 66
+    ICON IDI_HORZSTRETCH, IDD_STRETCHSKEWICONHSTRETCH, 12, 18, 32, 32
+    LTEXT "水平:", IDD_STRETCHSKEWTEXTHSTRETCH, 45, 24, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSTRETCH, 90, 23, 32, 12
+    LTEXT "%", IDD_STRETCHSKEWTEXTHPERCENT, 125, 24, 15, 10
+    ICON IDI_VERTSTRETCH, IDD_STRETCHSKEWICONVSTRETCH, 12, 43, 32, 32
+    LTEXT "垂直:", 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
+    ICON IDI_HORZSKEW, IDD_STRETCHSKEWICONHSKEW, 12, 88, 32, 32
+    LTEXT "水平:", IDD_STRETCHSKEWTEXTHSKEW, 45, 94, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITHSKEW, 90, 93, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTHDEG, 125, 94, 30, 10
+    ICON IDI_VERTSKEW, IDD_STRETCHSKEWICONVSKEW, 12, 113, 32, 32
+    LTEXT "垂直:", IDD_STRETCHSKEWTEXTVSKEW, 45, 119, 40, 10
+    EDITTEXT IDD_STRETCHSKEWEDITVSKEW, 90, 118, 32, 12
+    LTEXT "degrees", IDD_STRETCHSKEWTEXTVDEG, 125, 119, 30, 10
     DEFPUSHBUTTON "確定", IDOK, 170, 8, 48, 14
     PUSHBUTTON "取消", IDCANCEL, 170, 24, 48, 14
 END
@@ -203,4 +215,7 @@ BEGIN
     IDS_SAVEFILTER, "24 位元點陣圖 (*.bmp;*.dib)\1*.bmp;*.dib\1"
     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."
 END
index cf15d32..ccd991d 100644 (file)
@@ -19,16 +19,19 @@ BITMAPINFO bitmapinfo;
 int imgXRes = 400;
 int imgYRes = 300;
 
+int widthSetInDlg;
+int heightSetInDlg;
+
+STRETCHSKEW stretchSkew;
+
 HBITMAP hBms[HISTORYSIZE];
 int currInd = 0;
 int undoSteps = 0;
 int redoSteps = 0;
 BOOL imageSaved = TRUE;
 
-LONG startX;
-LONG startY;
-LONG lastX;
-LONG lastY;
+POINT start;
+POINT last;
 int lineWidth = 1;
 int shapeStyle = 0;
 int brushStyle = 0;
@@ -44,13 +47,26 @@ HWND hImageArea;
 HBITMAP hSelBm;
 HBITMAP hSelMask;
 
-/* initial palette colors; may be changed by the user during execution */
-int palColors[28] = { 0x000000, 0x464646, 0x787878, 0x300099, 0x241ced, 0x0078ff, 0x0ec2ff,
+/* array holding palette colors; may be changed by the user during execution */
+int palColors[28];
+
+/* modern palette */
+int modernPalColors[28] = { 0x000000, 0x464646, 0x787878, 0x300099, 0x241ced, 0x0078ff, 0x0ec2ff,
     0x00f2ff, 0x1de6a8, 0x4cb122, 0xefb700, 0xf36d4d, 0x99362f, 0x98316f,
     0xffffff, 0xdcdcdc, 0xb4b4b4, 0x3c5a9c, 0xb1a3ff, 0x7aaae5, 0x9ce4f5,
     0xbdf9ff, 0xbcf9d3, 0x61bb9d, 0xead999, 0xd19a70, 0x8e6d54, 0xd5a5b5
 };
 
+/* older palette containing VGA colors */
+int oldPalColors[28] = { 0x000000, 0x808080, 0x000080, 0x008080, 0x008000, 0x808000, 0x800000,
+    0x800080, 0x408080, 0x404000, 0xff8000, 0x804000, 0xff0040, 0x004080,
+    0xffffff, 0xc0c0c0, 0x0000ff, 0x00ffff, 0x00ff00, 0xffff00, 0xff0000,
+    0xff00ff, 0x80ffff, 0x80ff00, 0xffff80, 0xff8080, 0x8000ff, 0x4080ff
+};
+
+/* palette currently in use (1: modern, 2: old) */
+int selectedPalette;
+
 /* foreground and background colors with initial value */
 int fgColor = 0x00000000;
 int bgColor = 0x00ffffff;
@@ -139,6 +155,10 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument
         0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff, 0xffffff
     };
 
+    /* init palette */
+    selectedPalette = 1;
+    CopyMemory(palColors, modernPalColors, sizeof(palColors));
+
     hProgInstance = hThisInstance;
 
     /* Necessary */
@@ -277,13 +297,13 @@ _tWinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPTSTR lpszArgument
 
 
     /* 
-     * FIXME: Unintentionally there is a line above the tool bar. 
+     * FIXME: Unintentionally there is a line above the tool bar (hidden by y-offset)
      * To prevent cropping of the buttons height has been increased from 200 to 205
      */
     hToolbar =
         CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
                        WS_CHILD | WS_VISIBLE | CCS_NOPARENTALIGN | CCS_VERT | CCS_NORESIZE | TBSTYLE_TOOLTIPS,
-                       1, 1, 50, 205, hToolBoxContainer, NULL, hThisInstance, NULL);
+                       1, -2, 50, 205, hToolBoxContainer, NULL, hThisInstance, NULL);
     hImageList = ImageList_Create(16, 16, ILC_COLOR24 | ILC_MASK, 16, 0);
     SendMessage(hToolbar, TB_SETIMAGELIST, 0, (LPARAM) hImageList);
     tempBm = LoadImage(hThisInstance, MAKEINTRESOURCE(IDB_TOOLBARICONS), IMAGE_BITMAP, 256, 16, 0);
index 84909fb..70d2dba 100644 (file)
@@ -18,8 +18,7 @@ placeSelWin()
     MoveWindow(hSelection, rectSel_dest[0] * zoom / 1000, rectSel_dest[1] * zoom / 1000,
                rectSel_dest[2] * zoom / 1000 + 6, rectSel_dest[3] * zoom / 1000 + 6, TRUE);
     BringWindowToTop(hSelection);
-    SendMessage(hImageArea, WM_PAINT, 0, 0);
-    //SendMessage(hSelection, WM_PAINT, 0, 0);
+    InvalidateRect(hImageArea, NULL, FALSE);
 }
 
 void
@@ -58,10 +57,10 @@ int ptSP = 0;
 void
 startPaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
 {
-    startX = x;
-    startY = y;
-    lastX = x;
-    lastY = y;
+    start.x = x;
+    start.y = y;
+    last.x = x;
+    last.y = y;
     switch (activeTool)
     {
         case TOOL_FREESEL:
@@ -146,26 +145,25 @@ whilePaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
             break;
         case TOOL_RECTSEL:
         {
-            int tempX;
-            int tempY;
+            POINT temp;
             resetToU1();
-            tempX = max(0, min(x, imgXRes));
-            tempY = max(0, min(y, imgYRes));
-            rectSel_dest[0] = rectSel_src[0] = min(startX, tempX);
-            rectSel_dest[1] = rectSel_src[1] = min(startY, tempY);
-            rectSel_dest[2] = rectSel_src[2] = max(startX, tempX) - min(startX, tempX);
-            rectSel_dest[3] = rectSel_src[3] = max(startY, tempY) - min(startY, tempY);
-            RectSel(hdc, startX, startY, tempX, tempY);
+            temp.x = max(0, min(x, imgXRes));
+            temp.y = max(0, min(y, imgYRes));
+            rectSel_dest[0] = rectSel_src[0] = min(start.x, temp.x);
+            rectSel_dest[1] = rectSel_src[1] = min(start.y, temp.y);
+            rectSel_dest[2] = rectSel_src[2] = max(start.x, temp.x) - min(start.x, temp.x);
+            rectSel_dest[3] = rectSel_src[3] = max(start.y, temp.y) - min(start.y, temp.y);
+            RectSel(hdc, start.x, start.y, temp.x, temp.y);
             break;
         }
         case TOOL_RUBBER:
-            Erase(hdc, lastX, lastY, x, y, bg, rubberRadius);
+            Erase(hdc, last.x, last.y, x, y, bg, rubberRadius);
             break;
         case TOOL_PEN:
-            Line(hdc, lastX, lastY, x, y, fg, 1);
+            Line(hdc, last.x, last.y, x, y, fg, 1);
             break;
         case TOOL_BRUSH:
-            Brush(hdc, lastX, lastY, x, y, fg, brushStyle);
+            Brush(hdc, last.x, last.y, x, y, fg, brushStyle);
             break;
         case TOOL_AIRBRUSH:
             Airbrush(hdc, x, y, fg, airBrushWidth);
@@ -173,8 +171,8 @@ whilePaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
         case TOOL_LINE:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                roundTo8Directions(startX, startY, &x, &y);
-            Line(hdc, startX, startY, x, y, fg, lineWidth);
+                roundTo8Directions(start.x, start.y, &x, &y);
+            Line(hdc, start.x, start.y, x, y, fg, lineWidth);
             break;
         case TOOL_BEZIER:
             resetToU1();
@@ -197,8 +195,8 @@ whilePaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
         case TOOL_RECT:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            Rect(hdc, startX, startY, x, y, fg, bg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            Rect(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle);
             break;
         case TOOL_SHAPE:
             resetToU1();
@@ -213,19 +211,19 @@ whilePaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
         case TOOL_ELLIPSE:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            Ellp(hdc, startX, startY, x, y, fg, bg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            Ellp(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle);
             break;
         case TOOL_RRECT:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            RRect(hdc, startX, startY, x, y, fg, bg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            RRect(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle);
             break;
     }
 
-    lastX = x;
-    lastY = y;
+    last.x = x;
+    last.y = y;
 }
 
 void
@@ -318,17 +316,17 @@ endPaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
             }
             break;
         case TOOL_RUBBER:
-            Erase(hdc, lastX, lastY, x, y, bg, rubberRadius);
+            Erase(hdc, last.x, last.y, x, y, bg, rubberRadius);
             break;
         case TOOL_PEN:
-            Line(hdc, lastX, lastY, x, y, fg, 1);
+            Line(hdc, last.x, last.y, x, y, fg, 1);
             SetPixel(hdc, x, y, fg);
             break;
         case TOOL_LINE:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                roundTo8Directions(startX, startY, &x, &y);
-            Line(hdc, startX, startY, x, y, fg, lineWidth);
+                roundTo8Directions(start.x, start.y, &x, &y);
+            Line(hdc, start.x, start.y, x, y, fg, lineWidth);
             break;
         case TOOL_BEZIER:
             pointSP++;
@@ -338,8 +336,8 @@ endPaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
         case TOOL_RECT:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            Rect(hdc, startX, startY, x, y, fg, bg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            Rect(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle);
             break;
         case TOOL_SHAPE:
             resetToU1();
@@ -368,14 +366,14 @@ endPaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
         case TOOL_ELLIPSE:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            Ellp(hdc, startX, startY, x, y, fg, bg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            Ellp(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle);
             break;
         case TOOL_RRECT:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            RRect(hdc, startX, startY, x, y, fg, bg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            RRect(hdc, start.x, start.y, x, y, fg, bg, lineWidth, shapeStyle);
             break;
     }
 }
@@ -383,10 +381,10 @@ endPaintingL(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
 void
 startPaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
 {
-    startX = x;
-    startY = y;
-    lastX = x;
-    lastY = y;
+    start.x = x;
+    start.y = y;
+    last.x = x;
+    last.y = y;
     switch (activeTool)
     {
         case TOOL_FREESEL:
@@ -446,13 +444,13 @@ whilePaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
     switch (activeTool)
     {
         case TOOL_RUBBER:
-            Replace(hdc, lastX, lastY, x, y, fg, bg, rubberRadius);
+            Replace(hdc, last.x, last.y, x, y, fg, bg, rubberRadius);
             break;
         case TOOL_PEN:
-            Line(hdc, lastX, lastY, x, y, bg, 1);
+            Line(hdc, last.x, last.y, x, y, bg, 1);
             break;
         case TOOL_BRUSH:
-            Brush(hdc, lastX, lastY, x, y, bg, brushStyle);
+            Brush(hdc, last.x, last.y, x, y, bg, brushStyle);
             break;
         case TOOL_AIRBRUSH:
             Airbrush(hdc, x, y, bg, airBrushWidth);
@@ -460,8 +458,8 @@ whilePaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
         case TOOL_LINE:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                roundTo8Directions(startX, startY, &x, &y);
-            Line(hdc, startX, startY, x, y, bg, lineWidth);
+                roundTo8Directions(start.x, start.y, &x, &y);
+            Line(hdc, start.x, start.y, x, y, bg, lineWidth);
             break;
         case TOOL_BEZIER:
             resetToU1();
@@ -484,8 +482,8 @@ whilePaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
         case TOOL_RECT:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            Rect(hdc, startX, startY, x, y, bg, fg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            Rect(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle);
             break;
         case TOOL_SHAPE:
             resetToU1();
@@ -500,19 +498,19 @@ whilePaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
         case TOOL_ELLIPSE:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            Ellp(hdc, startX, startY, x, y, bg, fg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            Ellp(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle);
             break;
         case TOOL_RRECT:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            RRect(hdc, startX, startY, x, y, bg, fg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            RRect(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle);
             break;
     }
 
-    lastX = x;
-    lastY = y;
+    last.x = x;
+    last.y = y;
 }
 
 void
@@ -521,17 +519,17 @@ endPaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
     switch (activeTool)
     {
         case TOOL_RUBBER:
-            Replace(hdc, lastX, lastY, x, y, fg, bg, rubberRadius);
+            Replace(hdc, last.x, last.y, x, y, fg, bg, rubberRadius);
             break;
         case TOOL_PEN:
-            Line(hdc, lastX, lastY, x, y, bg, 1);
+            Line(hdc, last.x, last.y, x, y, bg, 1);
             SetPixel(hdc, x, y, bg);
             break;
         case TOOL_LINE:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                roundTo8Directions(startX, startY, &x, &y);
-            Line(hdc, startX, startY, x, y, bg, lineWidth);
+                roundTo8Directions(start.x, start.y, &x, &y);
+            Line(hdc, start.x, start.y, x, y, bg, lineWidth);
             break;
         case TOOL_BEZIER:
             pointSP++;
@@ -541,8 +539,8 @@ endPaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
         case TOOL_RECT:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            Rect(hdc, startX, startY, x, y, bg, fg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            Rect(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle);
             break;
         case TOOL_SHAPE:
             resetToU1();
@@ -571,14 +569,14 @@ endPaintingR(HDC hdc, LONG x, LONG y, COLORREF fg, COLORREF bg)
         case TOOL_ELLIPSE:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            Ellp(hdc, startX, startY, x, y, bg, fg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            Ellp(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle);
             break;
         case TOOL_RRECT:
             resetToU1();
             if (GetAsyncKeyState(VK_SHIFT) < 0)
-                regularize(startX, startY, &x, &y);
-            RRect(hdc, startX, startY, x, y, bg, fg, lineWidth, shapeStyle);
+                regularize(start.x, start.y, &x, &y);
+            RRect(hdc, start.x, start.y, x, y, bg, fg, lineWidth, shapeStyle);
             break;
     }
 }
index 2626971..0a9c38e 100644 (file)
@@ -63,37 +63,37 @@ PalWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
             break;
         }
         case WM_LBUTTONDOWN:
-            if (LOWORD(lParam) >= 31)
+            if (GET_X_LPARAM(lParam) >= 31)
             {
-                fgColor = palColors[(LOWORD(lParam) - 31) / 16 + (HIWORD(lParam) / 16) * 14];
-                SendMessage(hwnd, WM_PAINT, 0, 0);
+                fgColor = palColors[(GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14];
+                InvalidateRect(hwnd, NULL, FALSE);
             }
             break;
         case WM_RBUTTONDOWN:
-            if (LOWORD(lParam) >= 31)
+            if (GET_X_LPARAM(lParam) >= 31)
             {
-                bgColor = palColors[(LOWORD(lParam) - 31) / 16 + (HIWORD(lParam) / 16) * 14];
-                SendMessage(hwnd, WM_PAINT, 0, 0);
+                bgColor = palColors[(GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14];
+                InvalidateRect(hwnd, NULL, FALSE);
             }
             break;
         case WM_LBUTTONDBLCLK:
-            if (LOWORD(lParam) >= 31)
+            if (GET_X_LPARAM(lParam) >= 31)
                 if (ChooseColor(&choosecolor))
                 {
-                    palColors[(LOWORD(lParam) - 31) / 16 + (HIWORD(lParam) / 16) * 14] =
+                    palColors[(GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14] =
                         choosecolor.rgbResult;
                     fgColor = choosecolor.rgbResult;
-                    SendMessage(hwnd, WM_PAINT, 0, 0);
+                    InvalidateRect(hwnd, NULL, FALSE);
                 }
             break;
         case WM_RBUTTONDBLCLK:
-            if (LOWORD(lParam) >= 31)
+            if (GET_X_LPARAM(lParam) >= 31)
                 if (ChooseColor(&choosecolor))
                 {
-                    palColors[(LOWORD(lParam) - 31) / 16 + (HIWORD(lParam) / 16) * 14] =
+                    palColors[(GET_X_LPARAM(lParam) - 31) / 16 + (GET_Y_LPARAM(lParam) / 16) * 14] =
                         choosecolor.rgbResult;
                     bgColor = choosecolor.rgbResult;
-                    SendMessage(hwnd, WM_PAINT, 0, 0);
+                    InvalidateRect(hwnd, NULL, FALSE);
                 }
             break;
 
index 8a77b51..b3c8abf 100644 (file)
@@ -72,8 +72,8 @@ SelectionWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
             break;
         }
         case WM_LBUTTONDOWN:
-            xPos = LOWORD(lParam);
-            yPos = HIWORD(lParam);
+            xPos = GET_X_LPARAM(lParam);
+            yPos = GET_Y_LPARAM(lParam);
             SetCapture(hwnd);
             if (action != 0)
                 SetCursor(LoadCursor(NULL, cursors[action]));
@@ -86,8 +86,8 @@ SelectionWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                 int xDelta;
                 int yDelta;
                 resetToU1();
-                xFrac += (short)LOWORD(lParam) - xPos;
-                yFrac += (short)HIWORD(lParam) - yPos;
+                xFrac += GET_X_LPARAM(lParam) - xPos;
+                yFrac += GET_Y_LPARAM(lParam) - yPos;
                 if (zoom < 1000)
                 {
                     xDelta = xFrac * 1000 / zoom;
@@ -170,17 +170,17 @@ SelectionWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                             hSelDC, 0, 0, tempMask, 0, 0, MAKEROP4(SRCCOPY, SRCAND));
                     DeleteObject(tempMask);
                 }
-                SendMessage(hImageArea, WM_PAINT, 0, 0);
-                xPos = LOWORD(lParam);
-                yPos = HIWORD(lParam);
+                InvalidateRect(hImageArea, NULL, FALSE);
+                xPos = GET_X_LPARAM(lParam);
+                yPos = GET_Y_LPARAM(lParam);
                 //SendMessage(hwnd, WM_PAINT, 0, 0);
             }
             else
             {
                 int w = rectSel_dest[2] * zoom / 1000 + 6;
                 int h = rectSel_dest[3] * zoom / 1000 + 6;
-                xPos = LOWORD(lParam);
-                yPos = HIWORD(lParam);
+                xPos = GET_X_LPARAM(lParam);
+                yPos = GET_Y_LPARAM(lParam);
                 SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) NULL);
                 action = identifyCorner(xPos, yPos, w, h);
                 if (action != 0)
index 728bd63..12cb7a6 100644 (file)
@@ -33,8 +33,8 @@ SizeboxWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
             break;
         case WM_LBUTTONDOWN:
             resizing = TRUE;
-            xOrig = LOWORD(lParam);
-            yOrig = HIWORD(lParam);
+            xOrig = GET_X_LPARAM(lParam);
+            yOrig = GET_Y_LPARAM(lParam);
             SetCapture(hwnd);
             break;
         case WM_MOUSEMOVE:
@@ -43,8 +43,8 @@ SizeboxWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                 TCHAR sizeStr[100];
                 short xRel;
                 short yRel;
-                xRel = ((short)LOWORD(lParam) - xOrig) * 1000 / zoom;
-                yRel = ((short)HIWORD(lParam) - yOrig) * 1000 / zoom;
+                xRel = (GET_X_LPARAM(lParam) - xOrig) * 1000 / zoom;
+                yRel = (GET_Y_LPARAM(lParam) - yOrig) * 1000 / zoom;
                 if (hwnd == hSizeboxLeftTop)
                     _stprintf(sizeStr, _T("%d x %d"), imgXRes - xRel, imgYRes - yRel);
                 if (hwnd == hSizeboxCenterTop)
@@ -71,8 +71,8 @@ SizeboxWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                 short yRel;
                 ReleaseCapture();
                 resizing = FALSE;
-                xRel = ((short)LOWORD(lParam) - xOrig) * 1000 / zoom;
-                yRel = ((short)HIWORD(lParam) - yOrig) * 1000 / zoom;
+                xRel = (GET_X_LPARAM(lParam) - xOrig) * 1000 / zoom;
+                yRel = (GET_Y_LPARAM(lParam) - yOrig) * 1000 / zoom;
                 if (hwnd == hSizeboxLeftTop)
                     cropReversible(imgXRes - xRel, imgYRes - yRel, xRel, yRel);
                 if (hwnd == hSizeboxCenterTop)
index 2ba81c7..1cfe04c 100644 (file)
@@ -172,73 +172,75 @@ SettingsWinProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
         }
         case WM_LBUTTONDOWN:
         {
+            int x = GET_X_LPARAM(lParam);
+            int y = GET_Y_LPARAM(lParam);
             switch (activeTool)
             {
                 case TOOL_FREESEL:
                 case TOOL_RECTSEL:
                 case TOOL_TEXT:
-                    if ((HIWORD(lParam) > 1) && (HIWORD(lParam) < 64))
+                    if ((y > 1) && (y < 64))
                     {
-                        transpBg = (HIWORD(lParam) - 2) / 31;
-                        SendMessage(hwnd, WM_PAINT, 0, 0);
+                        transpBg = (y - 2) / 31;
+                        InvalidateRect(hwnd, NULL, TRUE);
                     }
                     break;
                 case TOOL_RUBBER:
-                    if ((HIWORD(lParam) > 1) && (HIWORD(lParam) < 62))
+                    if ((y > 1) && (y < 62))
                     {
-                        rubberRadius = (HIWORD(lParam) - 2) / 15 + 2;
-                        SendMessage(hwnd, WM_PAINT, 0, 0);
+                        rubberRadius = (y - 2) / 15 + 2;
+                        InvalidateRect(hwnd, NULL, TRUE);
                     }
                     break;
                 case TOOL_BRUSH:
-                    if ((LOWORD(lParam) > 1) && (LOWORD(lParam) < 40) && (HIWORD(lParam) > 1)
-                        && (HIWORD(lParam) < 62))
+                    if ((x > 1) && (x < 40) && (y > 1)
+                        && (y < 62))
                     {
-                        brushStyle = (HIWORD(lParam) - 2) / 15 * 3 + (LOWORD(lParam) - 2) / 13;
-                        SendMessage(hwnd, WM_PAINT, 0, 0);
+                        brushStyle = (y - 2) / 15 * 3 + (x - 2) / 13;
+                        InvalidateRect(hwnd, NULL, TRUE);
                     }
                     break;
                 case TOOL_AIRBRUSH:
-                    if (HIWORD(lParam) < 62)
+                    if (y < 62)
                     {
-                        if (HIWORD(lParam) < 30)
+                        if (y < 30)
                         {
-                            if (LOWORD(lParam) < 20)
+                            if (x < 20)
                                 airBrushWidth = 5;
                             else
                                 airBrushWidth = 8;
                         }
                         else
                         {
-                            if (LOWORD(lParam) < 15)
+                            if (x < 15)
                                 airBrushWidth = 3;
                             else
                                 airBrushWidth = 12;
                         }
-                        SendMessage(hwnd, WM_PAINT, 0, 0);
+                        InvalidateRect(hwnd, NULL, TRUE);
                     }
                     break;
                 case TOOL_LINE:
                 case TOOL_BEZIER:
-                    if (HIWORD(lParam) <= 62)
+                    if (y <= 62)
                     {
-                        lineWidth = (HIWORD(lParam) - 2) / 12 + 1;
-                        SendMessage(hwnd, WM_PAINT, 0, 0);
+                        lineWidth = (y - 2) / 12 + 1;
+                        InvalidateRect(hwnd, NULL, TRUE);
                     }
                     break;
                 case TOOL_RECT:
                 case TOOL_SHAPE:
                 case TOOL_ELLIPSE:
                 case TOOL_RRECT:
-                    if (HIWORD(lParam) <= 60)
+                    if (y <= 60)
                     {
-                        shapeStyle = (HIWORD(lParam) - 2) / 20;
-                        SendMessage(hwnd, WM_PAINT, 0, 0);
+                        shapeStyle = (y - 2) / 20;
+                        InvalidateRect(hwnd, NULL, TRUE);
                     }
-                    if ((HIWORD(lParam) >= 70) && (HIWORD(lParam) <= 132))
+                    if ((y >= 70) && (y <= 132))
                     {
-                        lineWidth = (HIWORD(lParam) - 72) / 12 + 1;
-                        SendMessage(hwnd, WM_PAINT, 0, 0);
+                        lineWidth = (y - 72) / 12 + 1;
+                        InvalidateRect(hwnd, NULL, TRUE);
                     }
                     break;
             }
index 75fd287..9e1b6ad 100644 (file)
@@ -20,7 +20,7 @@ selectTool(int tool)
     ShowWindow(hSelection, SW_HIDE);
     activeTool = tool;
     pointSP = 0;                // resets the point-buffer of the polygon and bezier functions
-    SendMessage(hToolSettings, WM_PAINT, 0, 0);
+    InvalidateRect(hToolSettings, NULL, TRUE);
     ShowWindow(hTrackbarZoom, (tool == 6) ? SW_SHOW : SW_HIDE);
 }
 
@@ -133,6 +133,31 @@ alignChildrenToMainWindow()
     MoveWindow(hPalWin, x, 9, 255, 32, TRUE);
 }
 
+void
+saveImage(BOOL overwrite)
+{
+    if (isAFile && overwrite)
+    {
+        SaveDIBToFile(hBms[currInd], filepathname, hDrawingDC, &fileTime, &fileSize, fileHPPM,
+                      fileVPPM);
+        imageSaved = TRUE;
+    }
+    else if (GetSaveFileName(&sfn) != 0)
+    {
+        TCHAR tempstr[1000];
+        TCHAR resstr[100];
+        SaveDIBToFile(hBms[currInd], sfn.lpstrFile, hDrawingDC, &fileTime, &fileSize,
+                      fileHPPM, fileVPPM);
+        CopyMemory(filename, sfn.lpstrFileTitle, sizeof(filename));
+        CopyMemory(filepathname, sfn.lpstrFile, sizeof(filepathname));
+        LoadString(hProgInstance, IDS_WINDOWTITLE, resstr, SIZEOF(resstr));
+        _stprintf(tempstr, resstr, filename);
+        SetWindowText(hMainWnd, tempstr);
+        isAFile = TRUE;
+        imageSaved = TRUE;
+    }
+}
+
 BOOL drawing;
 
 LRESULT CALLBACK
@@ -170,8 +195,9 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                         DestroyWindow(hwnd);
                         break;
                     case IDYES:
-                        SendMessage(hwnd, WM_COMMAND, IDM_FILESAVEAS, 0);
-                        DestroyWindow(hwnd);
+                        saveImage(FALSE);
+                        if (imageSaved)
+                            DestroyWindow(hwnd);
                         break;
                 }
             }
@@ -271,6 +297,10 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
             CheckMenuItem(GetMenu(hMainWnd), IDM_VIEWZOOM800,
                           (zoom == 8000) ? (MF_CHECKED | MF_BYCOMMAND) : (MF_UNCHECKED | MF_BYCOMMAND));
 
+            CheckMenuItem(GetMenu(hMainWnd), IDM_COLORSMODERNPALETTE,
+                          (selectedPalette == 1) ? (MF_CHECKED | MF_BYCOMMAND) : (MF_UNCHECKED | MF_BYCOMMAND));
+            CheckMenuItem(GetMenu(hMainWnd), IDM_COLORSOLDPALETTE,
+                          (selectedPalette == 2) ? (MF_CHECKED | MF_BYCOMMAND) : (MF_UNCHECKED | MF_BYCOMMAND));
             break;
 
         case WM_SIZE:
@@ -280,6 +310,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                 SendMessage(hStatusBar, WM_SIZE, wParam, lParam);
                 SendMessage(hStatusBar, SB_SETPARTS, 3, (LPARAM)&test);
                 alignChildrenToMainWindow();
+                InvalidateRect(hwnd, NULL, TRUE);
             }
             if (hwnd == hImageArea)
             {
@@ -431,8 +462,8 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                     DeleteObject(SelectObject(hdc, oldPen));
                 }
                 ReleaseDC(hImageArea, hdc);
-                SendMessage(hSelection, WM_PAINT, 0, 0);
-                SendMessage(hwndMiniature, WM_PAINT, 0, 0);
+                InvalidateRect(hSelection, NULL, FALSE);
+                InvalidateRect(hwndMiniature, NULL, FALSE);
             }
             else if (hwnd == hwndMiniature)
             {
@@ -490,7 +521,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                     SendMessage(hwnd, WM_LBUTTONUP, wParam, lParam);
                     undo();
                 }
-                SendMessage(hImageArea, WM_PAINT, 0, 0);
+                InvalidateRect(hImageArea, NULL, FALSE);
                 if ((activeTool == TOOL_ZOOM) && (zoom < 8000))
                     zoomTo(zoom * 2, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
             }
@@ -511,7 +542,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                     SendMessage(hwnd, WM_RBUTTONUP, wParam, lParam);
                     undo();
                 }
-                SendMessage(hImageArea, WM_PAINT, 0, 0);
+                InvalidateRect(hImageArea, NULL, FALSE);
                 if ((activeTool == TOOL_ZOOM) && (zoom > 125))
                     zoomTo(zoom / 2, GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
             }
@@ -524,14 +555,14 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                 drawing = FALSE;
                 endPaintingL(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam) * 1000 / zoom, fgColor,
                              bgColor);
-                SendMessage(hImageArea, WM_PAINT, 0, 0);
+                InvalidateRect(hImageArea, NULL, FALSE);
                 if (activeTool == TOOL_COLOR)
                 {
                     int tempColor =
                         GetPixel(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam) * 1000 / zoom);
                     if (tempColor != CLR_INVALID)
                         fgColor = tempColor;
-                    SendMessage(hPalWin, WM_PAINT, 0, 0);
+                    InvalidateRect(hPalWin, NULL, FALSE);
                 }
                 SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) "");
             }
@@ -544,14 +575,14 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                 drawing = FALSE;
                 endPaintingR(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam) * 1000 / zoom, fgColor,
                              bgColor);
-                SendMessage(hImageArea, WM_PAINT, 0, 0);
+                InvalidateRect(hImageArea, NULL, FALSE);
                 if (activeTool == TOOL_COLOR)
                 {
                     int tempColor =
                         GetPixel(hDrawingDC, GET_X_LPARAM(lParam) * 1000 / zoom, GET_Y_LPARAM(lParam) * 1000 / zoom);
                     if (tempColor != CLR_INVALID)
                         bgColor = tempColor;
-                    SendMessage(hPalWin, WM_PAINT, 0, 0);
+                    InvalidateRect(hPalWin, NULL, FALSE);
                 }
                 SendMessage(hStatusBar, SB_SETTEXT, 2, (LPARAM) "");
             }
@@ -586,7 +617,8 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 
                     if (activeTool == TOOL_ZOOM)
                     {
-                        SendMessage(hImageArea, WM_PAINT, 0, 0);
+                        InvalidateRect(hImageArea, NULL, FALSE);
+                        UpdateWindow(hImageArea);
                         drawZoomFrame(GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam));
                     }
 
@@ -606,19 +638,19 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                 if (drawing)
                 {
                     /* values displayed in statusbar */
-                    LONG xRel = xNow - startX;
-                    LONG yRel = yNow - startY;
+                    LONG xRel = xNow - start.x;
+                    LONG yRel = yNow - start.y;
                     /* freesel, rectsel and text tools always show numbers limited to fit into image area */
                     if ((activeTool == TOOL_FREESEL) || (activeTool == TOOL_RECTSEL) || (activeTool == TOOL_TEXT))
                     {
                         if (xRel < 0)
-                            xRel = (xNow < 0) ? -startX : xRel;
+                            xRel = (xNow < 0) ? -start.x : xRel;
                         else if (xNow > imgXRes)
-                            xRel = imgXRes-startX;
+                            xRel = imgXRes-start.x;
                         if (yRel < 0)
-                            yRel = (yNow < 0) ? -startY : yRel;
+                            yRel = (yNow < 0) ? -start.y : yRel;
                         else if (yNow > imgYRes)
-                             yRel = imgYRes-startY;
+                             yRel = imgYRes-start.y;
                     }
                     /* rectsel and shape tools always show non-negative numbers when drawing */
                     if ((activeTool == TOOL_RECTSEL) || (activeTool == TOOL_SHAPE))
@@ -646,7 +678,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                     if ((wParam & MK_LBUTTON) != 0)
                     {
                         whilePaintingL(hDrawingDC, xNow, yNow, fgColor, bgColor);
-                        SendMessage(hImageArea, WM_PAINT, 0, 0);
+                        InvalidateRect(hImageArea, NULL, FALSE);
                         if ((activeTool >= TOOL_TEXT) || (activeTool == TOOL_RECTSEL) || (activeTool == TOOL_FREESEL))
                         {
                             TCHAR sizeStr[100];
@@ -659,7 +691,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                     if ((wParam & MK_RBUTTON) != 0)
                     {
                         whilePaintingR(hDrawingDC, xNow, yNow, fgColor, bgColor);
-                        SendMessage(hImageArea, WM_PAINT, 0, 0);
+                        InvalidateRect(hImageArea, NULL, FALSE);
                         if (activeTool >= TOOL_TEXT)
                         {
                             TCHAR sizeStr[100];
@@ -676,7 +708,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
         case WM_MOUSELEAVE:
             SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM) _T(""));
             if (activeTool == TOOL_ZOOM)
-                SendMessage(hImageArea, WM_PAINT, 0, 0);
+                InvalidateRect(hImageArea, NULL, FALSE);
             break;
 
         // menu and button events
@@ -726,7 +758,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                                 imageSaved = TRUE;
                                 break;
                             case IDYES:
-                                SendMessage(hwnd, WM_COMMAND, IDM_FILESAVEAS, 0);
+                                saveImage(FALSE);
                                 break;
                             case IDCANCEL:
                                 reset = FALSE;
@@ -736,7 +768,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                     if (reset && imageSaved)
                     {
                         Rectangle(hDrawingDC, 0 - 1, 0 - 1, imgXRes + 1, imgYRes + 1);
-                        SendMessage(hImageArea, WM_PAINT, 0, 0);
+                        InvalidateRect(hImageArea, NULL, FALSE);
                         updateCanvasAndScrollbars();
                         clearHistory();
                     }
@@ -764,30 +796,10 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                     }
                     break;
                 case IDM_FILESAVE:
-                    if (isAFile)
-                    {
-                        SaveDIBToFile(hBms[currInd], filepathname, hDrawingDC, &fileTime, &fileSize, fileHPPM,
-                                      fileVPPM);
-                        imageSaved = TRUE;
-                    }
-                    else
-                        SendMessage(hwnd, WM_COMMAND, IDM_FILESAVEAS, 0);
+                    saveImage(TRUE);
                     break;
                 case IDM_FILESAVEAS:
-                    if (GetSaveFileName(&sfn) != 0)
-                    {
-                        TCHAR tempstr[1000];
-                        TCHAR resstr[100];
-                        SaveDIBToFile(hBms[currInd], sfn.lpstrFile, hDrawingDC, &fileTime, &fileSize,
-                                      fileHPPM, fileVPPM);
-                        CopyMemory(filename, sfn.lpstrFileTitle, sizeof(filename));
-                        CopyMemory(filepathname, sfn.lpstrFile, sizeof(filepathname));
-                        LoadString(hProgInstance, IDS_WINDOWTITLE, resstr, SIZEOF(resstr));
-                        _stprintf(tempstr, resstr, filename);
-                        SetWindowText(hMainWnd, tempstr);
-                        isAFile = TRUE;
-                        imageSaved = TRUE;
-                    }
+                    saveImage(FALSE);
                     break;
                 case IDM_FILEASWALLPAPERPLANE:
                     SetWallpaper(filepathname, 1, 1);
@@ -800,11 +812,11 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                     break;
                 case IDM_EDITUNDO:
                     undo();
-                    SendMessage(hImageArea, WM_PAINT, 0, 0);
+                    InvalidateRect(hImageArea, NULL, FALSE);
                     break;
                 case IDM_EDITREDO:
                     redo();
-                    SendMessage(hImageArea, WM_PAINT, 0, 0);
+                    InvalidateRect(hImageArea, NULL, FALSE);
                     break;
                 case IDM_EDITCOPY:
                     OpenClipboard(hMainWnd);
@@ -877,22 +889,32 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                     if (ChooseColor(&choosecolor))
                     {
                         fgColor = choosecolor.rgbResult;
-                        SendMessage(hPalWin, WM_PAINT, 0, 0);
+                        InvalidateRect(hPalWin, NULL, FALSE);
                     }
                     break;
+                case IDM_COLORSMODERNPALETTE:
+                    selectedPalette = 1;
+                    CopyMemory(palColors, modernPalColors, sizeof(palColors));
+                    InvalidateRect(hPalWin, NULL, FALSE);
+                    break;
+                case IDM_COLORSOLDPALETTE:
+                    selectedPalette = 2;
+                    CopyMemory(palColors, oldPalColors, sizeof(palColors));
+                    InvalidateRect(hPalWin, NULL, FALSE);
+                    break;
                 case IDM_IMAGEINVERTCOLORS:
                 {
                     RECT tempRect;
                     newReversible();
                     SetRect(&tempRect, 0, 0, imgXRes, imgYRes);
                     InvertRect(hDrawingDC, &tempRect);
-                    SendMessage(hImageArea, WM_PAINT, 0, 0);
+                    InvalidateRect(hImageArea, NULL, FALSE);
                     break;
                 }
                 case IDM_IMAGEDELETEIMAGE:
                     newReversible();
                     Rect(hDrawingDC, 0, 0, imgXRes, imgYRes, bgColor, bgColor, 0, TRUE);
-                    SendMessage(hImageArea, WM_PAINT, 0, 0);
+                    InvalidateRect(hImageArea, NULL, FALSE);
                     break;
                 case IDM_IMAGEROTATEMIRROR:
                     switch (mirrorRotateDlg())
@@ -916,7 +938,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                                 newReversible();
                                 StretchBlt(hDrawingDC, imgXRes - 1, 0, -imgXRes, imgYRes, hDrawingDC, 0, 0,
                                            imgXRes, imgYRes, SRCCOPY);
-                                SendMessage(hImageArea, WM_PAINT, 0, 0);
+                                InvalidateRect(hImageArea, NULL, FALSE);
                             }
                             break;
                         case 2: /* flip vertically */
@@ -937,7 +959,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                                 newReversible();
                                 StretchBlt(hDrawingDC, 0, imgYRes - 1, imgXRes, -imgYRes, hDrawingDC, 0, 0,
                                            imgXRes, imgYRes, SRCCOPY);
-                                SendMessage(hImageArea, WM_PAINT, 0, 0);
+                                InvalidateRect(hImageArea, NULL, FALSE);
                             }
                             break;
                         case 3: /* rotate 90 degrees */
@@ -960,7 +982,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                                 newReversible();
                                 StretchBlt(hDrawingDC, imgXRes - 1, imgYRes - 1, -imgXRes, -imgYRes, hDrawingDC,
                                            0, 0, imgXRes, imgYRes, SRCCOPY);
-                                SendMessage(hImageArea, WM_PAINT, 0, 0);
+                                InvalidateRect(hImageArea, NULL, FALSE);
                             }
                             break;
                         case 5: /* rotate 270 degrees */
@@ -969,29 +991,27 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
                     break;
                 case IDM_IMAGEATTRIBUTES:
                 {
-                    int retVal = attributesDlg();
-                    if ((LOWORD(retVal) != 0) && (HIWORD(retVal) != 0))
+                    if (attributesDlg())
                     {
-                        cropReversible(LOWORD(retVal), HIWORD(retVal), 0, 0);
+                        cropReversible(widthSetInDlg, heightSetInDlg, 0, 0);
                         updateCanvasAndScrollbars();
                     }
                     break;
                 }
-                case IDM_IMAGECHANGESIZE:
+                case IDM_IMAGESTRETCHSKEW:
                 {
-                    int retVal = changeSizeDlg();
-                    if ((LOWORD(retVal) != 0) && (HIWORD(retVal) != 0))
+                    if (changeSizeDlg())
                     {
                         insertReversible(CopyImage(hBms[currInd], IMAGE_BITMAP,
-                                                   imgXRes * LOWORD(retVal) / 100,
-                                                   imgYRes * HIWORD(retVal) / 100, 0));
+                                                   imgXRes * stretchSkew.percentage.x / 100,
+                                                   imgYRes * stretchSkew.percentage.y / 100, 0));
                         updateCanvasAndScrollbars();
                     }
                     break;
                 }
                 case IDM_IMAGEDRAWOPAQUE:
                     transpBg = 1 - transpBg;
-                    SendMessage(hToolSettings, WM_PAINT, 0, 0);
+                    InvalidateRect(hToolSettings, NULL, TRUE);
                     break;
                 case IDM_IMAGECROP:
                     insertReversible(CopyImage(hSelBm, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG));
@@ -1013,7 +1033,7 @@ WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
 
                 case IDM_VIEWSHOWGRID:
                     showGrid = !showGrid;
-                    SendMessage(hImageArea, WM_PAINT, 0, 0);
+                    InvalidateRect(hImageArea, NULL, FALSE);
                     break;
                 case IDM_VIEWSHOWMINIATURE:
                     showMiniature = !showMiniature;