Author: gedmurphy
Date: Sun Nov 19 22:49:45 2006
New Revision: 24784
URL:
http://svn.reactos.org/svn/reactos?rev=24784&view=rev
Log:
- merge the latest code from my minibranch:
- use a static image to refer to when choosing your image brightness so returning to
normal (100) displays the original colours
- allow individual colours (RGB) to be adjusted as well as adjusting them all
simultaneously
- apply the chosen brightness from the dialog to the main image
- implement greyscale, so an image can be displayed in black and white
- implement inverting of colours so an image can be displayed as a negative.
Added:
trunk/reactos/base/applications/imagesoft/brightness.c
Removed:
trunk/reactos/base/applications/imagesoft/imageprop.c
Modified:
trunk/reactos/base/applications/imagesoft/adjust.c
trunk/reactos/base/applications/imagesoft/imageprop.h
trunk/reactos/base/applications/imagesoft/imagesoft.rbuild
trunk/reactos/base/applications/imagesoft/imgedwnd.c
trunk/reactos/base/applications/imagesoft/lang/En.rc
trunk/reactos/base/applications/imagesoft/mainwnd.c
trunk/reactos/base/applications/imagesoft/resource.h
Modified: trunk/reactos/base/applications/imagesoft/adjust.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/imagesof…
==============================================================================
--- trunk/reactos/base/applications/imagesoft/adjust.c (original)
+++ trunk/reactos/base/applications/imagesoft/adjust.c Sun Nov 19 22:49:45 2006
@@ -1,9 +1,10 @@
-#include "precomp.h"
+#include <precomp.h>
-VOID
-AdjustBrightness(PIMAGEADJUST pImgAdj,
- HDC hdcMem)
+BOOL
+DisplayBlackAndWhite(HWND hwnd,
+ HDC hdcMem,
+ HBITMAP hBitmap)
{
BITMAPINFO bi;
BITMAP bitmap;
@@ -11,34 +12,38 @@
DWORD Count = 0;
INT i, j;
PBYTE pBits;
+ RECT rc;
+
+ GetObject(hBitmap,
+ sizeof(BITMAP),
+ &bitmap);
/* Bitmap header */
bi.bmiHeader.biSize = sizeof(bi.bmiHeader);
- bi.bmiHeader.biWidth = pImgAdj->ImageRect.right;
- bi.bmiHeader.biHeight = pImgAdj->ImageRect.bottom;
+ bi.bmiHeader.biWidth = bitmap.bmWidth;
+ bi.bmiHeader.biHeight = bitmap.bmHeight;
bi.bmiHeader.biPlanes = 1;
bi.bmiHeader.biBitCount = 32;
bi.bmiHeader.biCompression = BI_RGB;
- bi.bmiHeader.biSizeImage = pImgAdj->ImageRect.right * 4 *
pImgAdj->ImageRect.bottom;
+ bi.bmiHeader.biSizeImage = bitmap.bmWidth * bitmap.bmHeight * 4;
bi.bmiHeader.biClrUsed = 0;
bi.bmiHeader.biClrImportant = 0;
/* Buffer */
pBits = (PBYTE)HeapAlloc(ProcessHeap,
0,
- pImgAdj->ImageRect.right * 4 *
pImgAdj->ImageRect.bottom);
+ bitmap.bmWidth * bitmap.bmHeight * 4);
+ if (!pBits)
+ return FALSE;
+ /* get the bits from the original bitmap */
bRes = GetDIBits(hdcMem,
- pImgAdj->hBitmap,
+ hBitmap,
0,
- pImgAdj->ImageRect.bottom,
+ bitmap.bmHeight,
pBits,
&bi,
DIB_RGB_COLORS);
-
- GetObject(pImgAdj->hBitmap,
- sizeof(BITMAP),
- &bitmap);
for (i = 0; i < bitmap.bmHeight; i++)
{
@@ -56,35 +61,22 @@
g = GetGValue(Val);
r = GetBValue(Val);
- /* Red */
- r += pImgAdj->RedVal;
- if (r > 255) r = 255;
- else if (r < 0) r = 0;
+ // get the average color value
+ Val = (r+g+b)/3;
- /* Green */
- g += pImgAdj->GreenVal;
- if (g > 255) g = 255;
- else if (g < 0) g = 0;
-
- /* Blue */
- b += pImgAdj->BlueVal;
- if (b > 255) b = 255;
- else if (b < 0) b = 0;
-
- /* Store in reverse order */
- Val = RGB(b, g, r);
- CopyMemory(&pBits[Count],
- &Val,
+ // assign to RGB color
+ Val = RGB(Val, Val, Val);
+ CopyMemory(&pBits[Count],
+ &Val,
4);
- /* RGB color take 4 bytes.The high-order byte must be zero */
- Count += 4;
+ Count+=4;
}
}
/* Set the new pixel bits */
SetDIBits(hdcMem,
- pImgAdj->hBitmap,
+ hBitmap,
0,
bRes,
pBits,
@@ -95,7 +87,105 @@
0,
pBits);
- InvalidateRect(pImgAdj->hPicPrev,
- &pImgAdj->ImageRect,
+ GetClientRect(hwnd,
+ &rc);
+
+ InvalidateRect(hwnd,
+ &rc,
FALSE);
+
+ return TRUE;
}
+
+
+BOOL
+DisplayInvertedColors(HWND hwnd,
+ HDC hdcMem,
+ HBITMAP hBitmap)
+{
+ BITMAPINFO bi;
+ BITMAP bitmap;
+ BOOL bRes;
+ DWORD Count = 0;
+ INT i, j;
+ PBYTE pBits;
+ RECT rc;
+
+ GetObject(hBitmap,
+ sizeof(BITMAP),
+ &bitmap);
+
+ /* Bitmap header */
+ bi.bmiHeader.biSize = sizeof(bi.bmiHeader);
+ bi.bmiHeader.biWidth = bitmap.bmWidth;
+ bi.bmiHeader.biHeight = bitmap.bmHeight;
+ bi.bmiHeader.biPlanes = 1;
+ bi.bmiHeader.biBitCount = 32;
+ bi.bmiHeader.biCompression = BI_RGB;
+ bi.bmiHeader.biSizeImage = bitmap.bmWidth * bitmap.bmHeight * 4;
+ bi.bmiHeader.biClrUsed = 0;
+ bi.bmiHeader.biClrImportant = 0;
+
+ /* Buffer */
+ pBits = (PBYTE)HeapAlloc(ProcessHeap,
+ 0,
+ bitmap.bmWidth * bitmap.bmHeight * 4);
+ if (!pBits)
+ return FALSE;
+
+ /* get the bits from the original bitmap */
+ bRes = GetDIBits(hdcMem,
+ hBitmap,
+ 0,
+ bitmap.bmHeight,
+ pBits,
+ &bi,
+ DIB_RGB_COLORS);
+
+ for (i = 0; i < bitmap.bmHeight; i++)
+ {
+ for (j = 0; j < bitmap.bmWidth; j++)
+ {
+ DWORD Val = 0;
+ INT b, g, r;
+
+ CopyMemory(&Val,
+ &pBits[Count],
+ 4);
+
+ b = 255 - GetRValue(Val);
+ g = 255 - GetGValue(Val);
+ r = 255 - GetBValue(Val);
+
+ Val = RGB(b, g, r);
+
+ CopyMemory(&pBits[Count],
+ &Val,
+ 4);
+
+ Count+=4;
+ }
+ }
+
+ /* Set the new pixel bits */
+ SetDIBits(hdcMem,
+ hBitmap,
+ 0,
+ bRes,
+ pBits,
+ &bi,
+ DIB_RGB_COLORS);
+
+ HeapFree(ProcessHeap,
+ 0,
+ pBits);
+
+ GetClientRect(hwnd,
+ &rc);
+
+ InvalidateRect(hwnd,
+ &rc,
+ FALSE);
+
+ return TRUE;
+}
Added: trunk/reactos/base/applications/imagesoft/brightness.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/imagesof…
==============================================================================
--- trunk/reactos/base/applications/imagesoft/brightness.c (added)
+++ trunk/reactos/base/applications/imagesoft/brightness.c Sun Nov 19 22:49:45 2006
@@ -1,0 +1,379 @@
+#include "precomp.h"
+
+#define BASECOLOUR 100
+
+
+VOID
+AdjustBrightness(HBITMAP hOrigBitmap,
+ HBITMAP hNewBitmap,
+ HWND hwnd,
+ HDC hdcMem,
+ INT RedVal,
+ INT GreenVal,
+ INT BlueVal)
+{
+ BITMAPINFO bi;
+ BITMAP bitmap;
+ BOOL bRes;
+ DWORD Count = 0;
+ INT i, j;
+ PBYTE pBits;
+ RECT rc;
+
+ GetObject(hNewBitmap,
+ sizeof(BITMAP),
+ &bitmap);
+
+ /* Bitmap header */
+ bi.bmiHeader.biSize = sizeof(bi.bmiHeader);
+ bi.bmiHeader.biWidth = bitmap.bmWidth;
+ bi.bmiHeader.biHeight = bitmap.bmHeight;
+ bi.bmiHeader.biPlanes = 1;
+ bi.bmiHeader.biBitCount = 32;
+ bi.bmiHeader.biCompression = BI_RGB;
+ bi.bmiHeader.biSizeImage = bitmap.bmWidth * bitmap.bmHeight * 4;
+ bi.bmiHeader.biClrUsed = 0;
+ bi.bmiHeader.biClrImportant = 0;
+
+ /* Buffer */
+ pBits = (PBYTE)HeapAlloc(ProcessHeap,
+ 0,
+ bitmap.bmWidth * bitmap.bmHeight * 4);
+ if (!pBits)
+ return;
+
+ /* get the bits from the original bitmap */
+ bRes = GetDIBits(hdcMem,
+ hOrigBitmap,
+ 0,
+ bitmap.bmHeight,
+ pBits,
+ &bi,
+ DIB_RGB_COLORS);
+
+ for (i = 0; i < bitmap.bmHeight; i++)
+ {
+ for (j = 0; j < bitmap.bmWidth; j++)
+ {
+ DWORD Val = 0;
+ INT b, g, r;
+
+ CopyMemory(&Val,
+ &pBits[Count],
+ 4);
+
+ /* Get pixels in reverse order */
+ b = GetRValue(Val);
+ g = GetGValue(Val);
+ r = GetBValue(Val);
+
+ /* Red */
+ r += RedVal;
+ if (r > 255) r = 255;
+ else if (r < 0) r = 0;
+
+ /* Green */
+ g += GreenVal;
+ if (g > 255) g = 255;
+ else if (g < 0) g = 0;
+
+ /* Blue */
+ b += BlueVal;
+ if (b > 255) b = 255;
+ else if (b < 0) b = 0;
+
+ /* Store in reverse order */
+ Val = RGB(b, g, r);
+ CopyMemory(&pBits[Count],
+ &Val,
+ 4);
+
+ /* RGB color take 4 bytes.The high-order byte must be zero */
+ Count += 4;
+ }
+ }
+
+ /* Set the new pixel bits */
+ SetDIBits(hdcMem,
+ hNewBitmap,
+ 0,
+ bRes,
+ pBits,
+ &bi,
+ DIB_RGB_COLORS);
+
+ HeapFree(ProcessHeap,
+ 0,
+ pBits);
+
+ GetClientRect(hwnd,
+ &rc);
+
+ InvalidateRect(hwnd,
+ &rc,
+ FALSE);
+}
+
+
+static PIMAGEADJUST
+OnInitDialog(PIMAGEADJUST pImgAdj,
+ HWND hDlg,
+ LPARAM lParam)
+{
+ pImgAdj = HeapAlloc(ProcessHeap,
+ 0,
+ sizeof(IMAGEADJUST));
+ if (!pImgAdj)
+ return NULL;
+
+
+ pImgAdj->Info = (PMAIN_WND_INFO)lParam;
+ if (!pImgAdj->Info->ImageEditors)
+ goto fail;
+
+
+ pImgAdj->hPicPrev = GetDlgItem(hDlg, IDC_PICPREVIEW);
+ GetClientRect(pImgAdj->hPicPrev,
+ &pImgAdj->ImageRect);
+
+ /* Make a static copy of the main image */
+ pImgAdj->hBitmap = CopyImage(pImgAdj->Info->ImageEditors->hBitmap,
+ IMAGE_BITMAP,
+ pImgAdj->ImageRect.right,
+ pImgAdj->ImageRect.bottom,
+ LR_CREATEDIBSECTION);
+ if (!pImgAdj->hBitmap)
+ goto fail;
+
+ /* Make a copy which will be updated */
+ pImgAdj->hPreviewBitmap =
CopyImage(pImgAdj->Info->ImageEditors->hBitmap,
+ IMAGE_BITMAP,
+ pImgAdj->ImageRect.right,
+ pImgAdj->ImageRect.bottom,
+ LR_CREATEDIBSECTION);
+ if (!pImgAdj->hPreviewBitmap)
+ goto fail;
+
+
+ pImgAdj->RedVal = pImgAdj->BlueVal = pImgAdj->GreenVal = 0;
+
+ /* setup dialog */
+ SendDlgItemMessage(hDlg,
+ IDC_BRI_FULL,
+ BM_SETCHECK,
+ BST_CHECKED,
+ 0);
+ SendDlgItemMessage(hDlg,
+ IDC_BRI_TRACKBAR,
+ TBM_SETRANGE,
+ TRUE,
+ (LPARAM)MAKELONG(0, 200));
+ SendDlgItemMessage(hDlg,
+ IDC_BRI_TRACKBAR,
+ TBM_SETPOS,
+ TRUE,
+ (LPARAM)BASECOLOUR);
+ SetDlgItemText(hDlg,
+ IDC_BRI_EDIT,
+ _T("100"));
+
+ return pImgAdj;
+
+fail:
+ HeapFree(ProcessHeap,
+ 0,
+ pImgAdj);
+ return NULL;
+}
+
+
+static VOID
+OnDrawItem(PIMAGEADJUST pImgAdj,
+ LPARAM lParam)
+{
+ LPDRAWITEMSTRUCT lpDrawItem;
+ HDC hdcMem;
+
+ lpDrawItem = (LPDRAWITEMSTRUCT)lParam;
+
+ hdcMem = CreateCompatibleDC(lpDrawItem->hDC);
+
+ if(lpDrawItem->CtlID == IDC_PICPREVIEW)
+ {
+ SelectObject(hdcMem,
+ pImgAdj->hPreviewBitmap);
+
+ BitBlt(lpDrawItem->hDC,
+ pImgAdj->ImageRect.left,
+ pImgAdj->ImageRect.top,
+ pImgAdj->ImageRect.right,
+ pImgAdj->ImageRect.bottom,
+ hdcMem,
+ 0,
+ 0,
+ SRCCOPY);
+
+ DeleteDC(hdcMem);
+ }
+}
+
+
+static VOID
+OnTrackBar(PIMAGEADJUST pImgAdj,
+ HWND hDlg)
+{
+ HDC hdcMem;
+ DWORD TrackPos;
+
+ TrackPos = (DWORD)SendDlgItemMessage(hDlg,
+ IDC_BRI_TRACKBAR,
+ TBM_GETPOS,
+ 0,
+ 0);
+
+ SetDlgItemInt(hDlg,
+ IDC_BRI_EDIT,
+ TrackPos,
+ FALSE);
+
+ if (IsDlgButtonChecked(hDlg, IDC_BRI_FULL) == BST_CHECKED)
+ {
+ pImgAdj->RedVal = pImgAdj->GreenVal = pImgAdj->BlueVal = TrackPos -
BASECOLOUR;
+ }
+ else if (IsDlgButtonChecked(hDlg, IDC_BRI_RED) == BST_CHECKED)
+ {
+ pImgAdj->RedVal = TrackPos - BASECOLOUR;
+ }
+ else if (IsDlgButtonChecked(hDlg, IDC_BRI_GREEN) == BST_CHECKED)
+ {
+ pImgAdj->GreenVal = TrackPos - BASECOLOUR;
+ }
+ else if (IsDlgButtonChecked(hDlg, IDC_BRI_BLUE) == BST_CHECKED)
+ {
+ pImgAdj->BlueVal = TrackPos - BASECOLOUR;
+ }
+
+ hdcMem = GetDC(pImgAdj->hPicPrev);
+
+ AdjustBrightness(pImgAdj->hBitmap,
+ pImgAdj->hPreviewBitmap,
+ pImgAdj->hPicPrev,
+ hdcMem,
+ pImgAdj->RedVal,
+ pImgAdj->GreenVal,
+ pImgAdj->BlueVal);
+
+ ReleaseDC(pImgAdj->hPicPrev, hdcMem);
+}
+
+
+static BOOL
+OnCommand(PIMAGEADJUST pImgAdj,
+ HWND hDlg,
+ UINT uID)
+{
+ switch (uID)
+ {
+ case IDOK:
+ {
+ HDC hdcMem;
+
+ hdcMem = GetDC(pImgAdj->Info->ImageEditors->hSelf);
+
+ AdjustBrightness(pImgAdj->Info->ImageEditors->hBitmap,
+ pImgAdj->Info->ImageEditors->hBitmap,
+ pImgAdj->Info->ImageEditors->hSelf,
+ hdcMem,
+ pImgAdj->RedVal,
+ pImgAdj->GreenVal,
+ pImgAdj->BlueVal);
+
+ ReleaseDC(pImgAdj->Info->ImageEditors->hSelf,
+ hdcMem);
+
+ EndDialog(hDlg,
+ uID);
+
+ return TRUE;
+ }
+
+ case IDCANCEL:
+ {
+ EndDialog(hDlg,
+ uID);
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+
+INT_PTR CALLBACK
+BrightnessProc(HWND hDlg,
+ UINT message,
+ WPARAM wParam,
+ LPARAM lParam)
+{
+ static PIMAGEADJUST pImgAdj = NULL;
+
+ switch (message)
+ {
+ case WM_INITDIALOG:
+ {
+ pImgAdj = OnInitDialog(pImgAdj,
+ hDlg,
+ lParam);
+ if (!pImgAdj)
+ {
+ EndDialog(hDlg, -1);
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+
+ case WM_DRAWITEM:
+ {
+ OnDrawItem(pImgAdj,
+ lParam);
+ return TRUE;
+ }
+
+ case WM_HSCROLL:
+ {
+ if (LOWORD(wParam) == TB_THUMBTRACK ||
+ LOWORD(wParam) == TB_ENDTRACK)
+ {
+ OnTrackBar(pImgAdj,
+ hDlg);
+ }
+
+ return TRUE;
+ }
+
+ case WM_COMMAND:
+ {
+ return OnCommand(pImgAdj,
+ hDlg,
+ LOWORD(wParam));
+ }
+
+ case WM_DESTROY:
+ {
+ if (pImgAdj)
+ {
+ if (pImgAdj->hBitmap)
+ DeleteObject(pImgAdj->hBitmap);
+ if (pImgAdj->hPreviewBitmap)
+ DeleteObject(pImgAdj->hPreviewBitmap);
+
+ HeapFree(ProcessHeap,
+ 0,
+ pImgAdj);
+ }
+ }
+ }
+
+ return FALSE;
+}
Removed: trunk/reactos/base/applications/imagesoft/imageprop.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/imagesof…
==============================================================================
--- trunk/reactos/base/applications/imagesoft/imageprop.c (original)
+++ trunk/reactos/base/applications/imagesoft/imageprop.c (removed)
@@ -1,145 +1,0 @@
-#include <precomp.h>
-
-INT_PTR CALLBACK
-BrightnessProc(HWND hDlg,
- UINT message,
- WPARAM wParam,
- LPARAM lParam)
-{
- static PIMAGEADJUST pImgAdj = NULL;
-
- switch (message)
- {
- case WM_INITDIALOG:
- {
- pImgAdj = HeapAlloc(ProcessHeap,
- 0,
- sizeof(IMAGEADJUST));
- if (!pImgAdj)
- return -1;
-
- /* setup values */
- pImgAdj->Info = (PMAIN_WND_INFO)lParam;
- pImgAdj->hPicPrev = GetDlgItem(hDlg, IDC_PICPREVIEW);
- GetClientRect(pImgAdj->hPicPrev,
- &pImgAdj->ImageRect);
-
- pImgAdj->hBitmap =
CopyImage(pImgAdj->Info->ImageEditors->hBitmap,
- IMAGE_BITMAP,
- pImgAdj->ImageRect.right,
- pImgAdj->ImageRect.bottom,
- LR_CREATEDIBSECTION);
-
- pImgAdj->OldTrackPos = 100;
- pImgAdj->RedVal = pImgAdj->BlueVal = pImgAdj->GreenVal = 0;
-
- /* setup dialog */
- SendDlgItemMessage(hDlg,
- IDC_BRI_FULL,
- BM_SETCHECK,
- BST_CHECKED,
- 0);
- SendDlgItemMessage(hDlg,
- IDC_BRI_TRACKBAR,
- TBM_SETRANGE,
- TRUE,
- (LPARAM)MAKELONG(0, 200));
- SendDlgItemMessage(hDlg,
- IDC_BRI_TRACKBAR,
- TBM_SETPOS,
- TRUE,
- (LPARAM)100);
- SetDlgItemText(hDlg,
- IDC_BRI_EDIT,
- _T("100"));
-
- return TRUE;
- }
-
- case WM_DRAWITEM:
- {
- LPDRAWITEMSTRUCT lpDrawItem;
- HDC hdcMem;
-
- lpDrawItem = (LPDRAWITEMSTRUCT)lParam;
-
- hdcMem = CreateCompatibleDC(lpDrawItem->hDC);
-
- if(lpDrawItem->CtlID == IDC_PICPREVIEW)
- {
- SelectObject(hdcMem,
- pImgAdj->hBitmap);
-
- BitBlt(lpDrawItem->hDC,
- pImgAdj->ImageRect.left,
- pImgAdj->ImageRect.top,
- pImgAdj->ImageRect.right,
- pImgAdj->ImageRect.bottom,
- hdcMem,
- 0,
- 0,
- SRCCOPY);
-
- DeleteDC(hdcMem);
- }
- return TRUE;
- }
-
- case WM_HSCROLL:
- {
- if (LOWORD(wParam) == TB_THUMBTRACK ||
- LOWORD(wParam) == TB_ENDTRACK)
- {
- HDC hdcMem;
- DWORD TrackPos = (DWORD)SendDlgItemMessage(hDlg,
- IDC_BRI_TRACKBAR,
- TBM_GETPOS,
- 0,
- 0);
-
- /* quick hack, change all the colours regardless */
- pImgAdj->RedVal = pImgAdj->BlueVal = pImgAdj->GreenVal =
TrackPos - pImgAdj->OldTrackPos;
- pImgAdj->OldTrackPos = TrackPos;
-
- SetDlgItemInt(hDlg,
- IDC_BRI_EDIT,
- TrackPos,
- FALSE);
-
- hdcMem = GetDC(pImgAdj->hPicPrev);
-
- AdjustBrightness(pImgAdj,
- hdcMem);
-
- ReleaseDC(pImgAdj->hPicPrev, hdcMem);
-
- }
-
- return TRUE;
- }
-
- case WM_COMMAND:
- {
- if (LOWORD(wParam) == IDOK ||
- LOWORD(wParam) == IDCANCEL)
- {
- EndDialog(hDlg,
- LOWORD(wParam));
- return TRUE;
- }
- }
- break;
-
- case WM_DESTROY:
- {
- DeleteObject(pImgAdj->hBitmap);
-
- HeapFree(ProcessHeap,
- 0,
- pImgAdj);
- }
-
- }
-
- return FALSE;
-}
Modified: trunk/reactos/base/applications/imagesoft/imageprop.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/imagesof…
==============================================================================
--- trunk/reactos/base/applications/imagesoft/imageprop.h (original)
+++ trunk/reactos/base/applications/imagesoft/imageprop.h Sun Nov 19 22:49:45 2006
@@ -4,8 +4,8 @@
PMAIN_WND_INFO Info;
HWND hPicPrev;
HBITMAP hBitmap;
+ HBITMAP hPreviewBitmap;
RECT ImageRect;
- DWORD OldTrackPos;
INT RedVal;
INT GreenVal;
INT BlueVal;
@@ -16,10 +16,19 @@
UINT message,
WPARAM wParam,
LPARAM lParam);
+
INT_PTR CALLBACK BrightnessProc(HWND hDlg,
UINT message,
WPARAM wParam,
LPARAM lParam);
-VOID AdjustBrightness(PIMAGEADJUST pImgAdj,
- HDC hdcMem);
+VOID AdjustBrightness(HBITMAP hOrigBitmap,
+ HBITMAP hNewBitmap,
+ HWND hwnd,
+ HDC hdcMem,
+ INT RedVal,
+ INT GreenVal,
+ INT BlueVal);
+
+BOOL DisplayBlackAndWhite(HWND hwnd, HDC hdcMem, HBITMAP hBitmap);
+BOOL DisplayInvertedColors(HWND hwnd, HDC hdcMem, HBITMAP hBitmap);
Modified: trunk/reactos/base/applications/imagesoft/imagesoft.rbuild
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/imagesof…
==============================================================================
--- trunk/reactos/base/applications/imagesoft/imagesoft.rbuild (original)
+++ trunk/reactos/base/applications/imagesoft/imagesoft.rbuild Sun Nov 19 22:49:45 2006
@@ -18,10 +18,10 @@
<compilationunit name="unit.c">
<file>about.c</file>
<file>adjust.c</file>
+ <file>brightness.c</file>
<file>custcombo.c</file>
<file>floatwindow.c</file>
<file>font.c</file>
- <file>imageprop.c</file>
<file>imagesoft.c</file>
<file>imgedwnd.c</file>
<file>mainwnd.c</file>
Modified: trunk/reactos/base/applications/imagesoft/imgedwnd.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/imagesof…
==============================================================================
--- trunk/reactos/base/applications/imagesoft/imgedwnd.c (original)
+++ trunk/reactos/base/applications/imagesoft/imgedwnd.c Sun Nov 19 22:49:45 2006
@@ -1,4 +1,4 @@
-#include <precomp.h>
+#include "precomp.h"
static const TCHAR szImageEditWndClass[] = TEXT("ImageSoftEditWndClass");
@@ -33,13 +33,15 @@
}
-static VOID
+static BOOL
LoadBlankCanvas(PEDIT_WND_INFO Info)
{
/* FIXME: convert this to a DIB Section */
/* set bitmap dimensions */
Info->Width = Info->OpenInfo->New.Width;
Info->Height = Info->OpenInfo->New.Height;
+
+ return TRUE;
}
static BOOL
@@ -125,6 +127,8 @@
static BOOL
InitEditWnd(PEDIT_WND_INFO Info)
{
+ //BOOL bRet = FALSE;
+
Info->Zoom = 100;
if (Info->OpenInfo != NULL)
Modified: trunk/reactos/base/applications/imagesoft/lang/En.rc
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/imagesof…
==============================================================================
--- trunk/reactos/base/applications/imagesoft/lang/En.rc (original)
+++ trunk/reactos/base/applications/imagesoft/lang/En.rc Sun Nov 19 22:49:45 2006
@@ -50,6 +50,11 @@
MENUITEM "Brightness...", ID_BRIGHTNESS
MENUITEM "Contrast...", -1, GRAYED
MENUITEM "Hue/Saturation...", -1, GRAYED
+ POPUP "Colour"
+ BEGIN
+ MENUITEM "Black and White" ID_BLACKANDWHITE
+ MENUITEM "Invert Colours" ID_INVERTCOLORS
+ END
MENUITEM SEPARATOR
MENUITEM "Blur", -1, GRAYED
MENUITEM "Sharpen", -1, GRAYED
Modified: trunk/reactos/base/applications/imagesoft/mainwnd.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/imagesof…
==============================================================================
--- trunk/reactos/base/applications/imagesoft/mainwnd.c (original)
+++ trunk/reactos/base/applications/imagesoft/mainwnd.c Sun Nov 19 22:49:45 2006
@@ -906,6 +906,28 @@
(LPARAM)Info);
break;
+ case ID_BLACKANDWHITE:
+ {
+ if (Info->ImageEditors)
+ {
+ DisplayBlackAndWhite(Info->ImageEditors->hSelf,
+ Info->ImageEditors->hDCMem,
+ Info->ImageEditors->hBitmap);
+ }
+ }
+ break;
+
+ case ID_INVERTCOLORS:
+ {
+ if (Info->ImageEditors)
+ {
+ DisplayInvertedColors(Info->ImageEditors->hSelf,
+ Info->ImageEditors->hDCMem,
+ Info->ImageEditors->hBitmap);
+ }
+ }
+ break;
+
case ID_EXIT:
SendMessage(Info->hSelf,
WM_CLOSE,
Modified: trunk/reactos/base/applications/imagesoft/resource.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/base/applications/imagesof…
==============================================================================
--- trunk/reactos/base/applications/imagesoft/resource.h (original)
+++ trunk/reactos/base/applications/imagesoft/resource.h Sun Nov 19 22:49:45 2006
@@ -80,6 +80,8 @@
/* Adjust */
#define ID_BRIGHTNESS 2100
+#define ID_BLACKANDWHITE 2101
+#define ID_INVERTCOLORS 2102
#define ID_ABOUT 2400