240 lines
10 KiB
C
240 lines
10 KiB
C
|
/*
|
||
|
* Android driver initialisation functions
|
||
|
*
|
||
|
* Copyright 1996, 2013, 2017 Alexandre Julliard
|
||
|
*
|
||
|
* This library is free software; you can redistribute it and/or
|
||
|
* modify it under the terms of the GNU Lesser General Public
|
||
|
* License as published by the Free Software Foundation; either
|
||
|
* version 2.1 of the License, or (at your option) any later version.
|
||
|
*
|
||
|
* This library is distributed in the hope that it will be useful,
|
||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
* Lesser General Public License for more details.
|
||
|
*
|
||
|
* You should have received a copy of the GNU Lesser General Public
|
||
|
* License along with this library; if not, write to the Free Software
|
||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||
|
*/
|
||
|
|
||
|
#define NONAMELESSSTRUCT
|
||
|
#define NONAMELESSUNION
|
||
|
#include "config.h"
|
||
|
#include "wine/port.h"
|
||
|
|
||
|
#include <stdarg.h>
|
||
|
#include <string.h>
|
||
|
|
||
|
#include "windef.h"
|
||
|
#include "winbase.h"
|
||
|
#include "wingdi.h"
|
||
|
#include "winuser.h"
|
||
|
#include "wine/gdi_driver.h"
|
||
|
#include "wine/debug.h"
|
||
|
|
||
|
WINE_DEFAULT_DEBUG_CHANNEL(android);
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
struct gdi_physdev dev;
|
||
|
} ANDROID_PDEVICE;
|
||
|
|
||
|
static const struct gdi_dc_funcs android_drv_funcs;
|
||
|
|
||
|
/******************************************************************************
|
||
|
* create_android_physdev
|
||
|
*/
|
||
|
static ANDROID_PDEVICE *create_android_physdev(void)
|
||
|
{
|
||
|
ANDROID_PDEVICE *physdev;
|
||
|
|
||
|
if (!(physdev = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(*physdev) ))) return NULL;
|
||
|
return physdev;
|
||
|
}
|
||
|
|
||
|
/**********************************************************************
|
||
|
* ANDROID_CreateDC
|
||
|
*/
|
||
|
static BOOL ANDROID_CreateDC( PHYSDEV *pdev, LPCWSTR driver, LPCWSTR device,
|
||
|
LPCWSTR output, const DEVMODEW* initData )
|
||
|
{
|
||
|
ANDROID_PDEVICE *physdev = create_android_physdev();
|
||
|
|
||
|
if (!physdev) return FALSE;
|
||
|
|
||
|
push_dc_driver( pdev, &physdev->dev, &android_drv_funcs );
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**********************************************************************
|
||
|
* ANDROID_CreateCompatibleDC
|
||
|
*/
|
||
|
static BOOL ANDROID_CreateCompatibleDC( PHYSDEV orig, PHYSDEV *pdev )
|
||
|
{
|
||
|
ANDROID_PDEVICE *physdev = create_android_physdev();
|
||
|
|
||
|
if (!physdev) return FALSE;
|
||
|
|
||
|
push_dc_driver( pdev, &physdev->dev, &android_drv_funcs );
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
|
||
|
/**********************************************************************
|
||
|
* ANDROID_DeleteDC
|
||
|
*/
|
||
|
static BOOL ANDROID_DeleteDC( PHYSDEV dev )
|
||
|
{
|
||
|
HeapFree( GetProcessHeap(), 0, dev );
|
||
|
return TRUE;
|
||
|
}
|
||
|
|
||
|
|
||
|
static const struct gdi_dc_funcs android_drv_funcs =
|
||
|
{
|
||
|
NULL, /* pAbortDoc */
|
||
|
NULL, /* pAbortPath */
|
||
|
NULL, /* pAlphaBlend */
|
||
|
NULL, /* pAngleArc */
|
||
|
NULL, /* pArc */
|
||
|
NULL, /* pArcTo */
|
||
|
NULL, /* pBeginPath */
|
||
|
NULL, /* pBlendImage */
|
||
|
NULL, /* pChord */
|
||
|
NULL, /* pCloseFigure */
|
||
|
ANDROID_CreateCompatibleDC, /* pCreateCompatibleDC */
|
||
|
ANDROID_CreateDC, /* pCreateDC */
|
||
|
ANDROID_DeleteDC, /* pDeleteDC */
|
||
|
NULL, /* pDeleteObject */
|
||
|
NULL, /* pDeviceCapabilities */
|
||
|
NULL, /* pEllipse */
|
||
|
NULL, /* pEndDoc */
|
||
|
NULL, /* pEndPage */
|
||
|
NULL, /* pEndPath */
|
||
|
NULL, /* pEnumFonts */
|
||
|
NULL, /* pEnumICMProfiles */
|
||
|
NULL, /* pExcludeClipRect */
|
||
|
NULL, /* pExtDeviceMode */
|
||
|
NULL, /* pExtEscape */
|
||
|
NULL, /* pExtFloodFill */
|
||
|
NULL, /* pExtSelectClipRgn */
|
||
|
NULL, /* pExtTextOut */
|
||
|
NULL, /* pFillPath */
|
||
|
NULL, /* pFillRgn */
|
||
|
NULL, /* pFlattenPath */
|
||
|
NULL, /* pFontIsLinked */
|
||
|
NULL, /* pFrameRgn */
|
||
|
NULL, /* pGdiComment */
|
||
|
NULL, /* pGetBoundsRect */
|
||
|
NULL, /* pGetCharABCWidths */
|
||
|
NULL, /* pGetCharABCWidthsI */
|
||
|
NULL, /* pGetCharWidth */
|
||
|
NULL, /* pGetDeviceCaps */
|
||
|
NULL, /* pGetDeviceGammaRamp */
|
||
|
NULL, /* pGetFontData */
|
||
|
NULL, /* pGetFontRealizationInfo */
|
||
|
NULL, /* pGetFontUnicodeRanges */
|
||
|
NULL, /* pGetGlyphIndices */
|
||
|
NULL, /* pGetGlyphOutline */
|
||
|
NULL, /* pGetICMProfile */
|
||
|
NULL, /* pGetImage */
|
||
|
NULL, /* pGetKerningPairs */
|
||
|
NULL, /* pGetNearestColor */
|
||
|
NULL, /* pGetOutlineTextMetrics */
|
||
|
NULL, /* pGetPixel */
|
||
|
NULL, /* pGetSystemPaletteEntries */
|
||
|
NULL, /* pGetTextCharsetInfo */
|
||
|
NULL, /* pGetTextExtentExPoint */
|
||
|
NULL, /* pGetTextExtentExPointI */
|
||
|
NULL, /* pGetTextFace */
|
||
|
NULL, /* pGetTextMetrics */
|
||
|
NULL, /* pGradientFill */
|
||
|
NULL, /* pIntersectClipRect */
|
||
|
NULL, /* pInvertRgn */
|
||
|
NULL, /* pLineTo */
|
||
|
NULL, /* pModifyWorldTransform */
|
||
|
NULL, /* pMoveTo */
|
||
|
NULL, /* pOffsetClipRgn */
|
||
|
NULL, /* pOffsetViewportOrg */
|
||
|
NULL, /* pOffsetWindowOrg */
|
||
|
NULL, /* pPaintRgn */
|
||
|
NULL, /* pPatBlt */
|
||
|
NULL, /* pPie */
|
||
|
NULL, /* pPolyBezier */
|
||
|
NULL, /* pPolyBezierTo */
|
||
|
NULL, /* pPolyDraw */
|
||
|
NULL, /* pPolyPolygon */
|
||
|
NULL, /* pPolyPolyline */
|
||
|
NULL, /* pPolygon */
|
||
|
NULL, /* pPolyline */
|
||
|
NULL, /* pPolylineTo */
|
||
|
NULL, /* pPutImage */
|
||
|
NULL, /* pRealizeDefaultPalette */
|
||
|
NULL, /* pRealizePalette */
|
||
|
NULL, /* pRectangle */
|
||
|
NULL, /* pResetDC */
|
||
|
NULL, /* pRestoreDC */
|
||
|
NULL, /* pRoundRect */
|
||
|
NULL, /* pSaveDC */
|
||
|
NULL, /* pScaleViewportExt */
|
||
|
NULL, /* pScaleWindowExt */
|
||
|
NULL, /* pSelectBitmap */
|
||
|
NULL, /* pSelectBrush */
|
||
|
NULL, /* pSelectClipPath */
|
||
|
NULL, /* pSelectFont */
|
||
|
NULL, /* pSelectPalette */
|
||
|
NULL, /* pSelectPen */
|
||
|
NULL, /* pSetArcDirection */
|
||
|
NULL, /* pSetBkColor */
|
||
|
NULL, /* pSetBkMode */
|
||
|
NULL, /* pSetBoundsRect */
|
||
|
NULL, /* pSetDCBrushColor */
|
||
|
NULL, /* pSetDCPenColor */
|
||
|
NULL, /* pSetDIBitsToDevice */
|
||
|
NULL, /* pSetDeviceClipping */
|
||
|
NULL, /* pSetDeviceGammaRamp */
|
||
|
NULL, /* pSetLayout */
|
||
|
NULL, /* pSetMapMode */
|
||
|
NULL, /* pSetMapperFlags */
|
||
|
NULL, /* pSetPixel */
|
||
|
NULL, /* pSetPolyFillMode */
|
||
|
NULL, /* pSetROP2 */
|
||
|
NULL, /* pSetRelAbs */
|
||
|
NULL, /* pSetStretchBltMode */
|
||
|
NULL, /* pSetTextAlign */
|
||
|
NULL, /* pSetTextCharacterExtra */
|
||
|
NULL, /* pSetTextColor */
|
||
|
NULL, /* pSetTextJustification */
|
||
|
NULL, /* pSetViewportExt */
|
||
|
NULL, /* pSetViewportOrg */
|
||
|
NULL, /* pSetWindowExt */
|
||
|
NULL, /* pSetWindowOrg */
|
||
|
NULL, /* pSetWorldTransform */
|
||
|
NULL, /* pStartDoc */
|
||
|
NULL, /* pStartPage */
|
||
|
NULL, /* pStretchBlt */
|
||
|
NULL, /* pStretchDIBits */
|
||
|
NULL, /* pStrokeAndFillPath */
|
||
|
NULL, /* pStrokePath */
|
||
|
NULL, /* pUnrealizePalette */
|
||
|
NULL, /* pWidenPath */
|
||
|
NULL, /* wine_get_wgl_driver */
|
||
|
GDI_PRIORITY_GRAPHICS_DRV /* priority */
|
||
|
};
|
||
|
|
||
|
|
||
|
/******************************************************************************
|
||
|
* ANDROID_get_gdi_driver
|
||
|
*/
|
||
|
const struct gdi_dc_funcs * CDECL ANDROID_get_gdi_driver( unsigned int version )
|
||
|
{
|
||
|
if (version != WINE_GDI_DRIVER_VERSION)
|
||
|
{
|
||
|
ERR( "version mismatch, gdi32 wants %u but wineandroid has %u\n", version, WINE_GDI_DRIVER_VERSION );
|
||
|
return NULL;
|
||
|
}
|
||
|
return &android_drv_funcs;
|
||
|
}
|