wxWidgets/src/msw/microwin.c
Dimitri Schoolwerth 80fdcdb90e No changes, synchronised source names that appear commented at the top of files with the actual path to the files.
Fixed commented names (path, filename, and extension) of files in include/ and src/. Prepended the names in src/ with "src/" everywhere, while starting those in include/wx/ with "wx/".

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2011-03-20 00:14:35 +00:00

366 lines
7.4 KiB
C

/*
/////////////////////////////////////////////////////////////////////////////
// Name: src/msw/microwin.cpp
// Purpose: Extra implementation for MicroWindows
// Author: Julian Smart
// Created: 2001-05-31
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
*/
#include "mwtypes.h"
#include "windows.h"
#include "wintern.h"
#include "device.h"
#include "wx/msw/microwin.h"
void GdMoveCursor(MWCOORD x, MWCOORD y);
void MwSetCursor(HWND wp, PMWCURSOR pcursor);
BOOL SetCursorPos(int x, int y)
{
GdMoveCursor(x, y);
return TRUE;
}
HCURSOR SetCursor(HCURSOR hCursor)
{
/* TODO */
return 0;
}
int GetScrollPosWX (HWND hWnd, int iSBar)
{
int pos = 0;
if (GetScrollPos(hWnd, iSBar, & pos))
return pos;
else
return 0;
}
BOOL ScrollWindow(HWND hWnd, int xAmount, int yAmount,
CONST RECT* lpRect, CONST RECT* lpClipRect)
{
/* TODO */
return FALSE;
}
HWND WindowFromPoint(POINT pt)
{
/* TODO */
return 0;
}
SHORT GetKeyState(int nVirtKey)
{
/* TODO */
return 0;
}
HWND SetParent(HWND hWndChild, HWND hWndNewParent)
{
/* TODO */
return 0;
}
VOID DragAcceptFiles(HWND hWnd, BOOL b)
{
/* TODO */
}
BOOL IsDialogMessage(HWND hWnd, MSG* msg)
{
/* TODO */
return FALSE;
}
DWORD GetMessagePos(VOID)
{
/* TODO */
return 0;
}
BOOL IsIconic(HWND hWnd)
{
/* TODO */
return FALSE;
}
int SetMapMode(HDC hDC, wxMappingMode mode)
{
return MM_TEXT;
}
wxMappingMode GetMapMode(HDC hDC)
{
return MM_TEXT;
}
HCURSOR LoadCursor(HINSTANCE hInst, int cursor)
{
/* TODO */
return 0;
}
DWORD GetModuleFileName(HINSTANCE hInst, LPSTR name, DWORD sz)
{
/* TODO */
name[0] = 0;
return 0;
}
VOID DestroyIcon(HICON hIcon)
{
/* TODO */
}
COLORREF GetTextColor(HDC hdc)
{
if (!hdc)
return CLR_INVALID;
return hdc->textcolor ;
}
COLORREF GetBkColor(HDC hdc)
{
if (!hdc)
return CLR_INVALID;
return hdc->bkcolor ;
}
HPALETTE SelectPalette(HDC hdc, HPALETTE hPalette, BOOL b)
{
/* TODO */
return 0;
}
BOOL IntersectClipRect(HDC hdc, int x, int y,
int right, int bottom)
{
/* TODO */
HRGN rgn = CreateRectRgn(x, y, right, bottom);
BOOL ret = (ExtSelectClipRgn(hdc, rgn, RGN_AND) != ERROR);
DeleteObject(rgn);
return ret;
}
BOOL GetClipBox(HDC hdc, RECT* rect)
{
MWCLIPREGION* r;
MWRECT mwrect;
if (!hdc->region)
return FALSE;
r = ((MWRGNOBJ*) hdc->region)->rgn;
GdGetRegionBox(r, & mwrect);
rect->left = mwrect.left;
rect->top = mwrect.top;
rect->right = mwrect.right;
rect->bottom = mwrect.bottom;
return TRUE;
}
BOOL DrawIconEx(HDC hdc, int x, int y, HICON hIcon, int w, int h, UINT istepIfAniCur, HBRUSH hbrFlickerFreeDraw, UINT diFlags)
{
/* TODO */
return FALSE;
}
BOOL SetViewportExtEx(HDC hdc, int x, int y, LPSIZE lpSize)
{
/* TODO */
return FALSE;
}
BOOL SetViewportOrgEx(HDC hdc, int x, int y, LPPOINT lpPoint)
{
/* TODO */
return FALSE;
}
BOOL SetWindowExtEx(HDC hdc, int x, int y, LPSIZE lpSize)
{
/* TODO */
return FALSE;
}
BOOL SetWindowOrgEx(HDC hdc, int x, int y, LPPOINT lpSize)
{
/* TODO */
return FALSE;
}
BOOL ExtFloodFill(HDC hdc, int x, int y, COLORREF col, UINT flags)
{
/* TODO */
return FALSE;
}
int SetPolyFillMode(HDC hdc, int mode)
{
/* TODO */
return 0;
}
BOOL RoundRect(HDC hdc, int left, int top, int right, int bottom, int r1, int r2)
{
/* TODO */
return Rectangle(hdc, left, top, right, bottom);
}
BOOL MaskBlt(HDC hdc, int x, int y, int w, int h,
HDC hDCSource, int xSrc, int ySrc, HBITMAP hBitmapMask, int xMask, int yMask, DWORD rop)
{
/* TODO */
return FALSE;
}
UINT RealizePalette(HDC hDC)
{
/* TODO */
return 0;
}
BOOL SetBrushOrgEx(HDC hdc, int xOrigin, int yOrigin, LPPOINT lpPoint)
{
/* TODO */
return FALSE;
}
int GetObject(HGDIOBJ hObj, int sz, LPVOID logObj)
{
if (sz == sizeof(LOGFONT))
{
LOGFONT* logFont = (LOGFONT*) logObj;
MWFONTINFO fi;
HFONT hFont = (HFONT) hObj;
GdGetFontInfo(((MWFONTOBJ*) hFont)->pfont, &fi);
/* FIXME many items are guessed for the time being*/
logFont->lfHeight = fi.height;
/* reversed for kaffe port
logFont->tmAscent = fi.height - fi.baseline;
logFont->tmDescent= fi.baseline;
*/
logFont->lfWidth = fi.widths['x'];
logFont->lfWeight = FW_NORMAL;
logFont->lfEscapement = 0;
logFont->lfOrientation = 0;
logFont->lfOutPrecision = OUT_OUTLINE_PRECIS;
logFont->lfClipPrecision = CLIP_DEFAULT_PRECIS;
logFont->lfQuality = DEFAULT_QUALITY;
logFont->lfItalic = 0;
logFont->lfUnderline = 0;
logFont->lfStrikeOut = 0;
/* note that win32 has the TMPF_FIXED_PITCH flags REVERSED...*/
logFont->lfPitchAndFamily = fi.fixed?
FF_DONTCARE: (FF_DONTCARE | TMPF_FIXED_PITCH);
logFont->lfCharSet = OEM_CHARSET;
/* TODO I don't know how to get the font name. May
* test for different font classes.
*/
logFont->lfFaceName[0] = 0;
#if 0
strncpy(logFont->lfFaceName, ??, sizeof(logFont->lfFaceName));
#endif
return sz;
}
else
{
return 0;
}
}
/* Not in wingdi.c in earlier versions of MicroWindows */
#if 0
HBITMAP WINAPI
CreateCompatibleBitmap(HDC hdc, int nWidth, int nHeight)
{
MWBITMAPOBJ *hbitmap;
int size;
int linelen;
if(!hdc)
return NULL;
nWidth = MWMAX(nWidth, 1);
nHeight = MWMAX(nHeight, 1);
/* calc memory allocation size and linelen from width and height*/
if(!GdCalcMemGCAlloc(hdc->psd, nWidth, nHeight, 0, 0, &size, &linelen))
return NULL;
/* allocate gdi object*/
hbitmap = (MWBITMAPOBJ *)GdItemAlloc(sizeof(MWBITMAPOBJ)-1+size);
if(!hbitmap)
return NULL;
hbitmap->hdr.type = OBJ_BITMAP;
hbitmap->hdr.stockobj = FALSE;
hbitmap->width = nWidth;
hbitmap->height = nHeight;
/* create compatible with hdc*/
hbitmap->planes = hdc->psd->planes;
hbitmap->bpp = hdc->psd->bpp;
hbitmap->linelen = linelen;
hbitmap->size = size;
return (HBRUSH)hbitmap;
}
#endif
/* Attempt by JACS to create arbitrary bitmap
* TODO: make use of lpData
*/
HBITMAP WINAPI
CreateBitmap( int nWidth, int nHeight, int nPlanes, int bPP, LPCVOID lpData)
{
MWBITMAPOBJ *hbitmap;
int size;
int linelen;
HDC hScreenDC;
hScreenDC = GetDC(NULL);
nWidth = MWMAX(nWidth, 1);
nHeight = MWMAX(nHeight, 1);
/* calc memory allocation size and linelen from width and height*/
if(!GdCalcMemGCAlloc(hScreenDC->psd, nWidth, nHeight, nPlanes, bPP, &size, &linelen))
{
ReleaseDC(NULL, hScreenDC);
return NULL;
}
ReleaseDC(NULL, hScreenDC);
/* allocate gdi object*/
hbitmap = (MWBITMAPOBJ *)GdItemAlloc(sizeof(MWBITMAPOBJ)-1+size);
if(!hbitmap)
return NULL;
hbitmap->hdr.type = OBJ_BITMAP;
hbitmap->hdr.stockobj = FALSE;
hbitmap->width = nWidth;
hbitmap->height = nHeight;
/* create with specified parameters */
hbitmap->planes = nPlanes;
hbitmap->bpp = bPP;
hbitmap->linelen = linelen;
hbitmap->size = size;
/* TODO: copy data */
return (HBRUSH)hbitmap;
}