Author: bfreisen Date: Sun Oct 18 20:36:46 2009 New Revision: 43567
URL: http://svn.reactos.org/svn/reactos?rev=43567&view=rev Log: [PAINT] - opening files via command line - file date, time, size and paper resolution (pix. per meter) in attributes dialog - loading/saving PpM resolution from/to file - zoom tool shows and zooms to target rectangle - implemented missing scroll bar functionality - hiding status bar via menu item prepared
Modified: trunk/reactos/base/applications/paint/definitions.h trunk/reactos/base/applications/paint/dialogs.c trunk/reactos/base/applications/paint/dib.c trunk/reactos/base/applications/paint/dib.h trunk/reactos/base/applications/paint/globalvar.h trunk/reactos/base/applications/paint/lang/bg-BG.rc trunk/reactos/base/applications/paint/lang/cs-CZ.rc trunk/reactos/base/applications/paint/lang/de-DE.rc trunk/reactos/base/applications/paint/lang/en-GB.rc trunk/reactos/base/applications/paint/lang/en-US.rc trunk/reactos/base/applications/paint/lang/es-ES.rc trunk/reactos/base/applications/paint/lang/eu-ES.rc trunk/reactos/base/applications/paint/lang/fr-FR.rc trunk/reactos/base/applications/paint/lang/it-IT.rc trunk/reactos/base/applications/paint/lang/ja-JP.rc trunk/reactos/base/applications/paint/lang/nl-NL.rc trunk/reactos/base/applications/paint/lang/no-NO.rc trunk/reactos/base/applications/paint/lang/pl-PL.rc trunk/reactos/base/applications/paint/lang/pt-BR.rc trunk/reactos/base/applications/paint/lang/pt-PT.rc trunk/reactos/base/applications/paint/lang/ro-RO.rc trunk/reactos/base/applications/paint/lang/ru-RU.rc trunk/reactos/base/applications/paint/lang/sk-SK.rc trunk/reactos/base/applications/paint/lang/uk-UA.rc trunk/reactos/base/applications/paint/main.c trunk/reactos/base/applications/paint/toolsettings.c trunk/reactos/base/applications/paint/winproc.c
Modified: trunk/reactos/base/applications/paint/definitions.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/def... ============================================================================== --- trunk/reactos/base/applications/paint/definitions.h [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/definitions.h [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -165,3 +165,5 @@
#define IDS_OPENFILTER 926 #define IDS_SAVEFILTER 927 +#define IDS_FILESIZE 928 +#define IDS_PRINTRES 929
Modified: trunk/reactos/base/applications/paint/dialogs.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/dia... ============================================================================== --- trunk/reactos/base/applications/paint/dialogs.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/dialogs.c [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -9,6 +9,7 @@ /* INCLUDES *********************************************************/
#include <windows.h> +#include <tchar.h> #include "definitions.h" #include "globalvar.h"
@@ -76,6 +77,25 @@ CheckDlgButton(hwnd, IDD_ATTRIBUTESRB5, BST_CHECKED); SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT1, imgXRes, FALSE); SetDlgItemInt(hwnd, IDD_ATTRIBUTESEDIT2, imgYRes, FALSE); + TCHAR strrc[100]; + if (isAFile) + { + TCHAR date[100]; + TCHAR size[100]; + TCHAR temp[100]; + GetDateFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, date, sizeof(date)); + GetTimeFormat(LOCALE_USER_DEFAULT, 0, &fileTime, NULL, temp, sizeof(temp)); + _tcscat(date, _T(" ")); + _tcscat(date, temp); + LoadString(hProgInstance, IDS_FILESIZE, strrc, sizeof(strrc)); + _stprintf(size, strrc, fileSize); + SetDlgItemText(hwnd, IDD_ATTRIBUTESTEXT6, date); + SetDlgItemText(hwnd, IDD_ATTRIBUTESTEXT7, size); + } + TCHAR res[100]; + LoadString(hProgInstance, IDS_PRINTRES, strrc, sizeof(strrc)); + _stprintf(res, strrc, fileHPPM, fileVPPM); + SetDlgItemText(hwnd, IDD_ATTRIBUTESTEXT8, res); return TRUE; case WM_CLOSE: EndDialog(hwnd, 0);
Modified: trunk/reactos/base/applications/paint/dib.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/dib... ============================================================================== --- trunk/reactos/base/applications/paint/dib.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/dib.c [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -39,7 +39,7 @@ return bm.bmHeight; }
-void SaveDIBToFile(HBITMAP hBitmap, LPTSTR FileName, HDC hDC) +void SaveDIBToFile(HBITMAP hBitmap, LPTSTR FileName, HDC hDC, LPSYSTEMTIME time, int *size, int hRes, int vRes) { BITMAP bm; HANDLE hFile; @@ -64,6 +64,8 @@ bi.biPlanes = bm.bmPlanes; bi.biBitCount = bm.bmBitsPixel; bi.biCompression = BI_RGB; + bi.biXPelsPerMeter = hRes; + bi.biYPelsPerMeter = vRes;
buffer = HeapAlloc(GetProcessHeap(), 0, imgDataSize); GetDIBits(hDC, hBitmap, 0, bm.bmHeight, buffer, (LPBITMAPINFO)&bi, DIB_RGB_COLORS); @@ -76,39 +78,64 @@ WriteFile(hFile, &bi, sizeof(BITMAPINFOHEADER), &dwBytesWritten, NULL); WriteFile(hFile, buffer, imgDataSize, &dwBytesWritten, NULL);
+ if (time) + { + FILETIME ft; + GetFileTime(hFile, NULL, NULL, &ft); + FileTimeToSystemTime(&ft, time); + } + if (size) + *size = GetFileSize(hFile, NULL); + CloseHandle(hFile); HeapFree(GetProcessHeap(), 0, buffer); }
-HBITMAP LoadDIBFromFile(LPTSTR name) +void LoadDIBFromFile(HBITMAP *hBitmap, LPTSTR name, LPSYSTEMTIME time, int *size, int *hRes, int *vRes) { - HBITMAP hBitmap; BITMAPFILEHEADER bfh; BITMAPINFO *bi; PVOID pvBits; DWORD dwBytesRead; HANDLE hFile; + + if (!hBitmap) + return;
hFile = CreateFile(name, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL); if (hFile == INVALID_HANDLE_VALUE) - return NULL; + return;
/* read header and check for 'BM' magic */ ReadFile(hFile, &bfh, sizeof(BITMAPFILEHEADER), &dwBytesRead, NULL); if (bfh.bfType != 0x4d42) { CloseHandle(hFile); - return NULL; + return; } + + if (time) + { + FILETIME ft; + GetFileTime(hFile, NULL, NULL, &ft); + FileTimeToSystemTime(&ft, time); + } + if (size) + *size = GetFileSize(hFile, NULL);
bi = HeapAlloc(GetProcessHeap(), 0, bfh.bfOffBits - sizeof(BITMAPFILEHEADER)); if (!bi) - return NULL; + return;
ReadFile(hFile, bi, bfh.bfOffBits - sizeof(BITMAPFILEHEADER), &dwBytesRead, NULL); - hBitmap = CreateDIBSection(NULL, bi, DIB_RGB_COLORS, &pvBits, NULL, 0); + *hBitmap = CreateDIBSection(NULL, bi, DIB_RGB_COLORS, &pvBits, NULL, 0); ReadFile(hFile, pvBits, bfh.bfSize - bfh.bfOffBits, &dwBytesRead, NULL); + + if (hRes) + *hRes = (*bi).bmiHeader.biXPelsPerMeter; + if (vRes) + *vRes = (*bi).bmiHeader.biYPelsPerMeter; + CloseHandle(hFile); HeapFree(GetProcessHeap(), 0, bi); - return hBitmap; }
Modified: trunk/reactos/base/applications/paint/dib.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/dib... ============================================================================== --- trunk/reactos/base/applications/paint/dib.h [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/dib.h [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -12,6 +12,6 @@
int GetDIBHeight(HBITMAP hbm);
-void SaveDIBToFile(HBITMAP hbm, LPTSTR name, HDC hdc); +void SaveDIBToFile(HBITMAP hBitmap, LPTSTR FileName, HDC hDC, LPSYSTEMTIME time, int *size, int hRes, int vRes);
-HBITMAP LoadDIBFromFile(LPTSTR name); +void LoadDIBFromFile(HBITMAP *hBitmap, LPTSTR name, LPSYSTEMTIME time, int *size, int *hRes, int *vRes);
Modified: trunk/reactos/base/applications/paint/globalvar.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/glo... ============================================================================== --- trunk/reactos/base/applications/paint/globalvar.h [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/globalvar.h [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -73,6 +73,10 @@ extern TCHAR filename[256]; extern TCHAR filepathname[1000]; extern BOOL isAFile; +extern int fileSize; +extern int fileHPPM; +extern int fileVPPM; +extern SYSTEMTIME fileTime;
extern BOOL showGrid; extern BOOL showMiniature;
Modified: trunk/reactos/base/applications/paint/lang/bg-BG.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/bg-BG.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/bg-BG.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -1,6 +1,6 @@ /* - * US-English Language resource file - * Translated by: first times touched from en-GB.rc file by Mario Kacmar + * Bulgarian Language resource file + * Translated by: */
LANGUAGE LANG_BULGARIAN, SUBLANG_DEFAULT @@ -198,4 +198,6 @@ IDS_TOOLTIP16, "Çàîáëåí ïðàâîúãúëíèê" IDS_OPENFILTER, "Ôàéëîâå bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1Âñè÷êè ôàéëîâå (*.*)\1*.*\1" IDS_SAVEFILTER, "24 ðàçðÿäíè ôàéëîâå bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/cs-CZ.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/cs-CZ.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/cs-CZ.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -197,4 +197,6 @@ IDS_TOOLTIP16, "Zaoblený obdélník" IDS_OPENFILTER, "Soubory bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1Vechny soubory (*.*)\1*.*\1" IDS_SAVEFILTER, "24bitová bitmapa (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/de-DE.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/de-DE.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/de-DE.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -134,12 +134,12 @@ EDITTEXT IDD_ATTRIBUTESEDIT2, 110, 40, 35, 12 LTEXT "Breite:", IDD_ATTRIBUTESTEXT1, 10, 40, 30, 10 LTEXT "Höhe:", IDD_ATTRIBUTESTEXT2, 80, 40, 30, 10 - LTEXT "Dateidatum:", IDD_ATTRIBUTESTEXT3, 10, 5, 60, 10 - LTEXT "Dateigröße:", IDD_ATTRIBUTESTEXT4, 10, 15, 60, 10 - LTEXT "Auflösung:", IDD_ATTRIBUTESTEXT5, 10, 25, 60, 10 - LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT6, 70, 5, 60, 10 - LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT7, 70, 15, 60, 10 - LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT8, 70, 25, 60, 10 + LTEXT "Dateidatum:", IDD_ATTRIBUTESTEXT3, 10, 5, 50, 10 + LTEXT "Dateigröße:", IDD_ATTRIBUTESTEXT4, 10, 15, 50, 10 + LTEXT "Auflösung:", IDD_ATTRIBUTESTEXT5, 10, 25, 50, 10 + LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT6, 60, 5, 90, 10 + LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT7, 60, 15, 90, 10 + LTEXT "Nicht verfügbar", IDD_ATTRIBUTESTEXT8, 60, 25, 90, 10 GROUPBOX "Maßeinheit", IDD_ATTRIBUTESGROUP1, 6, 57, 139, 27 AUTORADIOBUTTON "Zoll", IDD_ATTRIBUTESRB1, 12, 69, 35, 10, WS_GROUP AUTORADIOBUTTON "cm", IDD_ATTRIBUTESRB2, 52, 69, 35, 10 @@ -197,4 +197,6 @@ IDS_TOOLTIP16, "Abgerundetes Rechteck" IDS_OPENFILTER, "Bitmapdateien (*.bmp;*.dib)\1*.bmp;*.dib\1Alle Dateien (*.*)\1*.*\1" IDS_SAVEFILTER, "24-Bit-Bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d Bytes" + IDS_PRINTRES, "%d x %d Pixel pro Meter" +END
Modified: trunk/reactos/base/applications/paint/lang/en-GB.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/en-GB.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/en-GB.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -198,4 +198,6 @@ IDS_TOOLTIP16, "Rounded rectangle" IDS_OPENFILTER, "Bitmap files (*.bmp;*.dib)\1*.bmp;*.dib\1All files (*.*)\1*.*\1" IDS_SAVEFILTER, "24 bit bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/en-US.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/en-US.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/en-US.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -198,4 +198,6 @@ IDS_TOOLTIP16, "Rounded rectangle" IDS_OPENFILTER, "Bitmap files (*.bmp;*.dib)\1*.bmp;*.dib\1All files (*.*)\1*.*\1" IDS_SAVEFILTER, "24 bit bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/es-ES.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/es-ES.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/es-ES.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -198,4 +198,6 @@ IDS_TOOLTIP16, "Rectángulo redondeado" IDS_OPENFILTER, "Archivos de mapa de bits (*.bmp;*.dib)\1*.bmp;*.dib\1Todos los archivos (*.*)\1*.*\1" IDS_SAVEFILTER, "Mapa de bits de 24 bits (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/eu-ES.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/eu-ES.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/eu-ES.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -195,4 +195,6 @@ IDS_TOOLTIP16, "Laukizuzen biribildua" IDS_OPENFILTER, "Bit-mapa fitxategiak(*.bmp;*.dib)\1*.bmp;*.dib\1Fitxategi gustiak (*.*)\1*.*\1" IDS_SAVEFILTER, "24 Biteko bit-mapa (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/fr-FR.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/fr-FR.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/fr-FR.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -197,4 +197,6 @@ IDS_TOOLTIP16, "Rectangle arrondi" IDS_OPENFILTER, "Bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1Tous les fichiers (*.*)\1*.*\1" IDS_SAVEFILTER, "Bitmap 24 bit (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/it-IT.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/it-IT.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/it-IT.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -197,4 +197,6 @@ IDS_TOOLTIP16, "Rettangolo arrotondato" IDS_OPENFILTER, "Bitmap files (*.bmp;*.dib)\1*.bmp;*.dib\1All files (*.*)\1*.*\1" IDS_SAVEFILTER, "24 bit bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/ja-JP.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/ja-JP.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/ja-JP.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -198,4 +198,6 @@ IDS_TOOLTIP16, "pÛlp`" IDS_OPENFILTER, "rbg}bv t@C (*.bmp;*.dib)\1*.bmp;*.dib\1·×ÄÌt@C (*.*)\1*.*\1" IDS_SAVEFILTER, "24 rbg rbg}bv (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/nl-NL.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/nl-NL.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/nl-NL.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -197,4 +197,6 @@ IDS_TOOLTIP16, "Afgeronde rechthoek" IDS_OPENFILTER, "Bitmapbestanden (*.bmp;*.dib)\1*.bmp;*.dib\1Alle bestanden (*.*)\1*.*\1" IDS_SAVEFILTER, "24 bit bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/no-NO.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/no-NO.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/no-NO.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -197,4 +197,6 @@ IDS_TOOLTIP16, "Avrundet rektangel" IDS_OPENFILTER, "Bitmap filer (*.bmp;*.dib)\1*.bmp;*.dib\1Alle filer (*.*)\1*.*\1" IDS_SAVEFILTER, "24 bit bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/pl-PL.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/pl-PL.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/pl-PL.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -200,4 +200,6 @@ IDS_TOOLTIP16, "Zaokr¹glony Prostok¹t" IDS_OPENFILTER, "Pliki Bitmapy (*.bmp;*.dib)\1*.bmp;*.dib\1Wszystkie pliki (*.*)\1*.*\1" IDS_SAVEFILTER, "Bitmapa 24 bit (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/pt-BR.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/pt-BR.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/pt-BR.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -197,4 +197,6 @@ IDS_TOOLTIP16, "Retângulo arredondado" IDS_OPENFILTER, "Arquivos de bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1Todos os arquivos (*.*)\1*.*\1" IDS_SAVEFILTER, "Bitmaps de 24 bits (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/pt-PT.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/pt-PT.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/pt-PT.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -197,4 +197,6 @@ IDS_TOOLTIP16, "Retângulo arredondado" IDS_OPENFILTER, "Ficheiros de mapa de bits (*.bmp;*.dib)\1*.bmp;*.dib\1Todos os arquivos (*.*)\1*.*\1" IDS_SAVEFILTER, "Mapa de bits de 24 bits (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/ro-RO.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/ro-RO.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/ro-RO.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -200,6 +200,8 @@ IDS_TOOLTIP16, "Dreptunghi rotunjit" IDS_OPENFILTER, "FiÈiere bitmap (*.bmp;*.dib)\1*.bmp;*.dib\1All files (*.*)\1*.*\1" IDS_SAVEFILTER, "Bitmap pe 24 biÈi (*.bmp;*.dib)\1*.bmp;*.dib\1" + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" END
#pragma code_page(default)
Modified: trunk/reactos/base/applications/paint/lang/ru-RU.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/ru-RU.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/ru-RU.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -192,4 +192,6 @@ IDS_TOOLTIP16, "Ñêðóãëåííûé ïðÿìîóãîëüíèê" IDS_OPENFILTER, "Òî÷å÷íûå ðèñóíêè (*.bmp;*.dib)\1*.bmp;*.dib\1Âñå ôàéëû (*.*)\1*.*\1" IDS_SAVEFILTER, "24-ðàçðÿäíûé ðèñóíîê (*.bmp;*.dib)\1*.bmp;*.dib\1" + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" END
Modified: trunk/reactos/base/applications/paint/lang/sk-SK.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/sk-SK.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/sk-SK.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -199,4 +199,6 @@ IDS_TOOLTIP16, "Zaoblený obdånik" IDS_OPENFILTER, "Súbory bitových máp (*.bmp;*.dib)\1*.bmp;*.dib\1Vetky súbory (*.*)\1*.*\1" IDS_SAVEFILTER, "24-bitová mapa (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/lang/uk-UA.rc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/lan... ============================================================================== --- trunk/reactos/base/applications/paint/lang/uk-UA.rc [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/lang/uk-UA.rc [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -200,4 +200,6 @@ IDS_TOOLTIP16, "Ïðÿìîêóòíèê ç îêðóãëåíèìè êóòàìè" IDS_OPENFILTER, "Òî÷êîâ³ ðèñóíêè (*.bmp;*.dib)\1*.bmp;*.dib\1Óñ³ ôàéëè (*.*)\1*.*\1" IDS_SAVEFILTER, "24-ðîçðÿäíèé ðèñóíîê (*.bmp;*.dib)\1*.bmp;*.dib\1" -END + IDS_FILESIZE, "%d bytes" + IDS_PRINTRES, "%d x %d pixels per meter" +END
Modified: trunk/reactos/base/applications/paint/main.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/mai... ============================================================================== --- trunk/reactos/base/applications/paint/main.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/main.c [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -103,6 +103,10 @@ TCHAR filename[256]; TCHAR filepathname[1000]; BOOL isAFile = FALSE; +int fileSize; +int fileHPPM = 2834; +int fileVPPM = 2834; +SYSTEMTIME fileTime;
BOOL showGrid = FALSE; BOOL showMiniature = FALSE; @@ -339,6 +343,26 @@ SelectObject(hDrawingDC, hBms[0]); Rectangle(hDrawingDC, 0-1, 0-1, imgXRes+1, imgYRes+1);
+ if (lpszArgument[0] != 0) + { + HBITMAP bmNew = NULL; + LoadDIBFromFile(&bmNew, lpszArgument, &fileTime, &fileSize, &fileHPPM, &fileVPPM); + if (bmNew!=NULL) + { + TCHAR tempstr[1000]; + TCHAR resstr[100]; + insertReversible(bmNew); + TCHAR *temp; + GetFullPathName(lpszArgument, sizeof(filepathname), filepathname, &temp); + _tcscpy(filename, temp); + LoadString(hProgInstance, IDS_WINDOWTITLE, resstr, SIZEOF(resstr)); + _stprintf(tempstr, resstr, filename); + SetWindowText(hMainWnd, tempstr); + clearHistory(); + isAFile = TRUE; + } + } + /* initializing the CHOOSECOLOR structure for use with ChooseColor */ choosecolor.lStructSize = sizeof(CHOOSECOLOR); choosecolor.hwndOwner = hwnd;
Modified: trunk/reactos/base/applications/paint/toolsettings.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/too... ============================================================================== --- trunk/reactos/base/applications/paint/toolsettings.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/toolsettings.c [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -22,7 +22,7 @@ { case WM_VSCROLL: { - ZoomTo(125<<SendMessage(hTrackbarZoom, TBM_GETPOS, 0, 0)); + zoomTo(125<<SendMessage(hTrackbarZoom, TBM_GETPOS, 0, 0), 0, 0); } break; case WM_PAINT:
Modified: trunk/reactos/base/applications/paint/winproc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/paint/win... ============================================================================== --- trunk/reactos/base/applications/paint/winproc.c [iso-8859-1] (original) +++ trunk/reactos/base/applications/paint/winproc.c [iso-8859-1] Sun Oct 18 20:36:46 2009 @@ -48,10 +48,28 @@ SetScrollPos(hScrollbox, SB_VERT, 0, TRUE); }
-void ZoomTo(int newZoom) +void zoomTo(int newZoom, int mouseX, int mouseY) { + long clientRectScrollbox[4]; + long clientRectImageArea[4]; + GetClientRect(hScrollbox, (LPRECT)&clientRectScrollbox); + GetClientRect(hImageArea, (LPRECT)&clientRectImageArea); + int x, y, w, h; + w = clientRectImageArea[2] * clientRectScrollbox[2] / (clientRectImageArea[2] * newZoom / zoom); + h = clientRectImageArea[3] * clientRectScrollbox[3] / (clientRectImageArea[3] * newZoom / zoom); + x = max(0, min(clientRectImageArea[2] - w, mouseX - w / 2)) * newZoom / zoom; + y = max(0, min(clientRectImageArea[3] - h, mouseY - h / 2)) * newZoom / zoom; + zoom = newZoom; - updateCanvasAndScrollbars(); + + ShowWindow(hSelection, SW_HIDE); + MoveWindow(hImageArea, 3, 3, imgXRes*zoom/1000, imgYRes*zoom/1000, FALSE); + InvalidateRect(hScrollbox, NULL, TRUE); + InvalidateRect(hImageArea, NULL, FALSE); + + SendMessage(hScrollbox, WM_HSCROLL, SB_THUMBPOSITION | (x << 16), 0); + SendMessage(hScrollbox, WM_VSCROLL, SB_THUMBPOSITION | (y << 16), 0); + int tbPos = 0; int tempZoom = newZoom; while (tempZoom>125) @@ -62,6 +80,34 @@ SendMessage(hTrackbarZoom, TBM_SETPOS, (WPARAM)TRUE, (LPARAM)tbPos); }
+void drawZoomFrame(int mouseX, int mouseY) +{ + long clientRectScrollbox[4]; + long clientRectImageArea[4]; + GetClientRect(hScrollbox, (LPRECT)&clientRectScrollbox); + GetClientRect(hImageArea, (LPRECT)&clientRectImageArea); + int x, y, w, h; + w = clientRectImageArea[2] * clientRectScrollbox[2] / (clientRectImageArea[2] * 2); + h = clientRectImageArea[3] * clientRectScrollbox[3] / (clientRectImageArea[3] * 2); + x = max(0, min(clientRectImageArea[2] - w, mouseX - w / 2)); + y = max(0, min(clientRectImageArea[3] - h, mouseY - h / 2)); + HDC hdc; + hdc = GetDC(hImageArea); + HPEN oldPen; + oldPen = SelectObject(hdc, CreatePen(PS_SOLID, 0, 0)); + HBRUSH oldBrush; + LOGBRUSH logbrush; + logbrush.lbStyle = BS_HOLLOW; + oldBrush = SelectObject(hdc, CreateBrushIndirect(&logbrush)); + int rop; + rop = SetROP2(hdc, R2_NOT); + Rectangle(hdc, x, y, x + w, y + h); + SetROP2(hdc, rop); + DeleteObject(SelectObject(hdc, oldBrush)); + DeleteObject(SelectObject(hdc, oldPen)); + ReleaseDC(hImageArea, hdc); +} + HDC hdc; BOOL drawing;
@@ -163,6 +209,11 @@ CheckMenuItem(GetMenu(hMainWnd), IDM_IMAGEDRAWOPAQUE, MF_UNCHECKED | MF_BYCOMMAND); break; } + if (IsWindowVisible(hStatusBar)) + CheckMenuItem(GetMenu(hMainWnd), IDM_VIEWSTATUSBAR, MF_CHECKED | MF_BYCOMMAND); + else + CheckMenuItem(GetMenu(hMainWnd), IDM_VIEWSTATUSBAR, MF_UNCHECKED | MF_BYCOMMAND); + if (showGrid) CheckMenuItem(GetMenu(hMainWnd), IDM_VIEWSHOWGRID, MF_CHECKED | MF_BYCOMMAND); else @@ -246,46 +297,88 @@ SCROLLINFO vertScroll; GetClientRect(hScrollbox, (LPRECT)&clientRectScrollbox); GetClientRect(hImageArea, (LPRECT)&clientRectImageArea); - MoveWindow(hScrlClient, 0, 0, max(clientRectImageArea[2]+6, clientRectScrollbox[2]), max(clientRectImageArea[3]+6, clientRectScrollbox[3]), TRUE); horzScroll.cbSize = sizeof(SCROLLINFO); horzScroll.fMask = SIF_PAGE | SIF_RANGE; - horzScroll.nMax = 10000; + horzScroll.nMax = clientRectImageArea[2]+6-1; horzScroll.nMin = 0; - horzScroll.nPage = clientRectScrollbox[2]*10000/(clientRectImageArea[2]+6); + horzScroll.nPage = clientRectScrollbox[2]; horzScroll.nPos = 0; horzScroll.nTrackPos = 0; SetScrollInfo(hScrollbox, SB_HORZ, &horzScroll, TRUE); GetClientRect(hScrollbox, (LPRECT)clientRectScrollbox); vertScroll.cbSize = sizeof(SCROLLINFO); vertScroll.fMask = SIF_PAGE | SIF_RANGE; - vertScroll.nMax = 10000; + vertScroll.nMax = clientRectImageArea[3]+6-1; vertScroll.nMin = 0; - vertScroll.nPage = clientRectScrollbox[3]*10000/(clientRectImageArea[3]+6); + vertScroll.nPage = clientRectScrollbox[3]; vertScroll.nPos = 0; vertScroll.nTrackPos = 0; SetScrollInfo(hScrollbox, SB_VERT, &vertScroll, TRUE); + MoveWindow(hScrlClient, + -GetScrollPos(hScrollbox, SB_HORZ), -GetScrollPos(hScrollbox, SB_VERT), + max(clientRectImageArea[2]+6, clientRectScrollbox[2]), max(clientRectImageArea[3]+6, clientRectScrollbox[3]), TRUE); } break; case WM_HSCROLL: if (hwnd==hScrollbox) { - if ((LOWORD(wParam)==SB_THUMBPOSITION)||(LOWORD(wParam)==SB_THUMBTRACK)) - { - SetScrollPos(hScrollbox, SB_HORZ, HIWORD(wParam), TRUE); - MoveWindow(hScrlClient, -(imgXRes*zoom/1000+6)*GetScrollPos(hScrollbox, SB_HORZ)/10000, - -(imgYRes*zoom/1000+6)*GetScrollPos(hScrollbox, SB_VERT)/10000, imgXRes*zoom/1000+6, imgYRes*zoom/1000+6, TRUE); - } + SCROLLINFO si; + si.cbSize = sizeof(SCROLLINFO); + si.fMask = SIF_ALL; + GetScrollInfo(hScrollbox, SB_HORZ, &si); + switch (LOWORD(wParam)) + { + case SB_THUMBTRACK: + case SB_THUMBPOSITION: + si.nPos = HIWORD(wParam); + break; + case SB_LINELEFT: + si.nPos -= 5; + break; + case SB_LINERIGHT: + si.nPos += 5; + break; + case SB_PAGELEFT: + si.nPos -= si.nPage; + break; + case SB_PAGERIGHT: + si.nPos += si.nPage; + break; + } + SetScrollInfo(hScrollbox, SB_HORZ, &si, TRUE); + MoveWindow(hScrlClient, -GetScrollPos(hScrollbox, SB_HORZ), + -GetScrollPos(hScrollbox, SB_VERT), imgXRes*zoom/1000+6, imgYRes*zoom/1000+6, TRUE); } break; case WM_VSCROLL: if (hwnd==hScrollbox) { - if ((LOWORD(wParam)==SB_THUMBPOSITION)||(LOWORD(wParam)==SB_THUMBTRACK)) - { - SetScrollPos(hScrollbox, SB_VERT, HIWORD(wParam), TRUE); - MoveWindow(hScrlClient, -(imgXRes*zoom/1000+6)*GetScrollPos(hScrollbox, SB_HORZ)/10000, - -(imgYRes*zoom/1000+6)*GetScrollPos(hScrollbox, SB_VERT)/10000, imgXRes*zoom/1000+6, imgYRes*zoom/1000+6, TRUE); - } + SCROLLINFO si; + si.cbSize = sizeof(SCROLLINFO); + si.fMask = SIF_ALL; + GetScrollInfo(hScrollbox, SB_VERT, &si); + switch (LOWORD(wParam)) + { + case SB_THUMBTRACK: + case SB_THUMBPOSITION: + si.nPos = HIWORD(wParam); + break; + case SB_LINEUP: + si.nPos -= 5; + break; + case SB_LINEDOWN: + si.nPos += 5; + break; + case SB_PAGEUP: + si.nPos -= si.nPage; + break; + case SB_PAGEDOWN: + si.nPos += si.nPage; + break; + } + SetScrollInfo(hScrollbox, SB_VERT, &si, TRUE); + MoveWindow(hScrlClient, -GetScrollPos(hScrollbox, SB_HORZ), + -GetScrollPos(hScrollbox, SB_VERT), imgXRes*zoom/1000+6, imgYRes*zoom/1000+6, TRUE); } break; case WM_GETMINMAXINFO: @@ -375,7 +468,7 @@ undo(); } SendMessage(hImageArea, WM_PAINT, 0, 0); - if ((activeTool==6)&&(zoom<8000)) ZoomTo(zoom*2); + if ((activeTool==6)&&(zoom<8000)) zoomTo(zoom*2, (short)LOWORD(lParam), (short)HIWORD(lParam)); } break; case WM_RBUTTONDOWN: @@ -392,7 +485,7 @@ undo(); } SendMessage(hImageArea, WM_PAINT, 0, 0); - if ((activeTool==6)&&(zoom>125)) ZoomTo(zoom/2); + if ((activeTool==6)&&(zoom>125)) zoomTo(zoom/2, (short)LOWORD(lParam), (short)HIWORD(lParam)); } break; case WM_LBUTTONUP: @@ -435,6 +528,19 @@ TCHAR coordStr[100]; _stprintf(coordStr, _T("%d, %d"), (short)LOWORD(lParam)*1000/zoom, (short)HIWORD(lParam)*1000/zoom); SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM)coordStr); + + if (activeTool == 6) + { + SendMessage(hImageArea, WM_PAINT, 0, 0); + drawZoomFrame((short)LOWORD(lParam), (short)HIWORD(lParam)); + } + + TRACKMOUSEEVENT tme; + tme.cbSize = sizeof(TRACKMOUSEEVENT); + tme.dwFlags = TME_LEAVE; + tme.hwndTrack = hImageArea; + tme.dwHoverTime = 0; + TrackMouseEvent(&tme); } if (drawing) { @@ -461,9 +567,13 @@ } } } - } else + } + break; + case WM_MOUSELEAVE: { SendMessage(hStatusBar, SB_SETTEXT, 1, (LPARAM)_T("")); + if (activeTool == 6) + SendMessage(hImageArea, WM_PAINT, 0, 0); } break;
@@ -496,7 +606,8 @@ case IDM_FILEOPEN: if (GetOpenFileName(&ofn)!=0) { - HBITMAP bmNew = (HBITMAP)LoadDIBFromFile(ofn.lpstrFile); + HBITMAP bmNew = NULL; + LoadDIBFromFile(&bmNew, ofn.lpstrFile, &fileTime, &fileSize, &fileHPPM, &fileVPPM); if (bmNew!=NULL) { TCHAR tempstr[1000]; @@ -516,7 +627,7 @@ case IDM_FILESAVE: if (isAFile) { - SaveDIBToFile(hBms[currInd], filepathname, hDrawingDC); + SaveDIBToFile(hBms[currInd], filepathname, hDrawingDC, &fileTime, &fileSize, fileHPPM, fileVPPM); imageSaved = TRUE; } else @@ -527,7 +638,7 @@ { TCHAR tempstr[1000]; TCHAR resstr[100]; - SaveDIBToFile(hBms[currInd], sfn.lpstrFile, hDrawingDC); + 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)); @@ -588,7 +699,7 @@ } break; case IDM_EDITCOPYTO: - if (GetSaveFileName(&ofn)!=0) SaveDIBToFile(hSelBm, ofn.lpstrFile, hDrawingDC); + if (GetSaveFileName(&ofn)!=0) SaveDIBToFile(hSelBm, ofn.lpstrFile, hDrawingDC, NULL, NULL, fileHPPM, fileVPPM); break; case IDM_COLORSEDITPALETTE: if (ChooseColor(&choosecolor)) @@ -659,6 +770,13 @@ insertReversible(CopyImage(hSelBm, IMAGE_BITMAP, 0, 0, LR_COPYRETURNORG)); updateCanvasAndScrollbars(); break; + + case IDM_VIEWSTATUSBAR: + if (IsWindowVisible(hStatusBar)) + ShowWindow(hStatusBar, SW_HIDE); + else + ShowWindow(hStatusBar, SW_SHOW); + break;
case IDM_VIEWSHOWGRID: showGrid = !showGrid; @@ -672,25 +790,25 @@ break;
case IDM_VIEWZOOM125: - ZoomTo(125); + zoomTo(125, 0, 0); break; case IDM_VIEWZOOM25: - ZoomTo(250); + zoomTo(250, 0, 0); break; case IDM_VIEWZOOM50: - ZoomTo(500); + zoomTo(500, 0, 0); break; case IDM_VIEWZOOM100: - ZoomTo(1000); + zoomTo(1000, 0, 0); break; case IDM_VIEWZOOM200: - ZoomTo(2000); + zoomTo(2000, 0, 0); break; case IDM_VIEWZOOM400: - ZoomTo(4000); + zoomTo(4000, 0, 0); break; case IDM_VIEWZOOM800: - ZoomTo(8000); + zoomTo(8000, 0, 0); break; case ID_FREESEL: selectTool(1);