#include "precomp.h"
+#define NDEBUG
+#include <debug.h>
/*
* @implemented
*/
-HBRUSH
+BOOL
STDCALL
-CreateSolidBrush(
- COLORREF crColor
- )
+FixBrushOrgEx(
+ HDC hDC,
+ INT nXOrg,
+ INT nYOrg,
+ LPPOINT lpPoint)
{
- return NtGdiCreateSolidBrush(crColor);
+ return FALSE;
}
/*
* @implemented
*/
-HBRUSH
-STDCALL
-CreateBrushIndirect(
- CONST LOGBRUSH *lplb
- )
+HBRUSH STDCALL
+CreateDIBPatternBrush(
+ HGLOBAL hglbDIBPacked,
+ UINT fuColorSpec)
{
- return NtGdiCreateBrushIndirect(lplb);
+ PVOID lpPackedDIB;
+ HBRUSH hBrush = NULL;
+ PBITMAPINFO pConvertedInfo;
+ UINT ConvertedInfoSize;
+
+ lpPackedDIB = GlobalLock(hglbDIBPacked);
+ if (lpPackedDIB == NULL)
+ return 0;
+
+ pConvertedInfo = ConvertBitmapInfo((PBITMAPINFO)lpPackedDIB, fuColorSpec,
+ &ConvertedInfoSize, TRUE);
+ if (pConvertedInfo)
+ {
+ hBrush = NtGdiCreateDIBBrush(pConvertedInfo, fuColorSpec,
+ ConvertedInfoSize, FALSE, FALSE, lpPackedDIB);
+ if ((PBITMAPINFO)lpPackedDIB != pConvertedInfo)
+ RtlFreeHeap(RtlGetProcessHeap(), 0, pConvertedInfo);
+ }
+
+ GlobalUnlock(hglbDIBPacked);
+
+ return hBrush;
+}
+
+/*
+ * @implemented
+ */
+HBRUSH STDCALL
+CreateDIBPatternBrushPt(
+ CONST VOID *lpPackedDIB,
+ UINT fuColorSpec)
+{
+ HBRUSH hBrush = NULL;
+ PBITMAPINFO pConvertedInfo;
+ UINT ConvertedInfoSize;
+
+ if (lpPackedDIB == NULL)
+ return 0;
+
+ pConvertedInfo = ConvertBitmapInfo((PBITMAPINFO)lpPackedDIB, fuColorSpec,
+ &ConvertedInfoSize, TRUE);
+ if (pConvertedInfo)
+ {
+ hBrush = NtGdiCreateDIBBrush(pConvertedInfo, fuColorSpec,
+ ConvertedInfoSize, FALSE, FALSE, (PVOID)lpPackedDIB);
+ if ((PBITMAPINFO)lpPackedDIB != pConvertedInfo)
+ RtlFreeHeap(RtlGetProcessHeap(), 0, pConvertedInfo);
+ }
+
+ return hBrush;
}
/*
*/
HBRUSH
STDCALL
-CreateDIBPatternBrushPt(
- CONST VOID *lpPackedDIB,
- UINT iUsage
- )
+CreateHatchBrush(INT fnStyle,
+ COLORREF clrref)
{
- return NtGdiCreateDIBPatternBrushPt(lpPackedDIB, iUsage);
+ return NtGdiCreateHatchBrushInternal(fnStyle, clrref, FALSE);
}
/*
*/
HBRUSH
STDCALL
-CreateHatchBrush(
- int fnStyle,
- COLORREF clrref
- )
+CreatePatternBrush(HBITMAP hbmp)
{
- return NtGdiCreateHatchBrush(fnStyle, clrref);
+ return NtGdiCreatePatternBrushInternal(hbmp, FALSE, FALSE);
}
/*
*/
HBRUSH
STDCALL
-CreatePatternBrush(
- HBITMAP hbmp
- )
+CreateSolidBrush(IN COLORREF crColor)
{
- return NtGdiCreatePatternBrush ( hbmp );
+ /* Call Server-Side API */
+ return NtGdiCreateSolidBrush(crColor, NULL);
}
+
+/*
+ * @implemented
+ */
+HBRUSH STDCALL
+CreateBrushIndirect(
+ CONST LOGBRUSH *LogBrush)
+{
+ HBRUSH hBrush;
+
+ switch (LogBrush->lbStyle)
+ {
+ case BS_DIBPATTERN8X8:
+ case BS_DIBPATTERN:
+ hBrush = CreateDIBPatternBrush((HGLOBAL)LogBrush->lbHatch,
+ LogBrush->lbColor);
+ break;
+
+ case BS_DIBPATTERNPT:
+ hBrush = CreateDIBPatternBrushPt((PVOID)LogBrush->lbHatch,
+ LogBrush->lbColor);
+ break;
+
+ case BS_PATTERN:
+ hBrush = NtGdiCreatePatternBrushInternal((HBITMAP)LogBrush->lbHatch,
+ FALSE,
+ FALSE);
+ break;
+
+ case BS_PATTERN8X8:
+ hBrush = NtGdiCreatePatternBrushInternal((HBITMAP)LogBrush->lbHatch,
+ FALSE,
+ TRUE);
+ break;
+
+ case BS_SOLID:
+ hBrush = NtGdiCreateSolidBrush(LogBrush->lbColor, 0);
+ break;
+
+ case BS_HATCHED:
+ hBrush = NtGdiCreateHatchBrushInternal(LogBrush->lbHatch,
+ LogBrush->lbColor,
+ FALSE);
+ break;
+
+ case BS_NULL:
+ hBrush = NtGdiGetStockObject(NULL_BRUSH);
+ break;
+
+ default:
+ SetLastError(ERROR_INVALID_PARAMETER);
+ hBrush = NULL;
+ break;
+ }
+
+ return hBrush;
+}
+