diff --git a/dlls/wineandroid.drv/Makefile.in b/dlls/wineandroid.drv/Makefile.in index 0001dec22ad..13ec433eb77 100644 --- a/dlls/wineandroid.drv/Makefile.in +++ b/dlls/wineandroid.drv/Makefile.in @@ -1,8 +1,14 @@ MODULE = wineandroid.drv +C_SRCS = \ + init.c + IN_SRCS = \ build.gradle.in +SVG_SRCS = \ + wine.svg + EXTRA_TARGETS = wine-debug.apk all: wine-debug.apk diff --git a/dlls/wineandroid.drv/init.c b/dlls/wineandroid.drv/init.c new file mode 100644 index 00000000000..da2a168e015 --- /dev/null +++ b/dlls/wineandroid.drv/init.c @@ -0,0 +1,239 @@ +/* + * 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 +#include + +#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; +} diff --git a/dlls/wineandroid.drv/wineandroid.drv.spec b/dlls/wineandroid.drv/wineandroid.drv.spec index 30fd8e18344..9e943202cef 100644 --- a/dlls/wineandroid.drv/wineandroid.drv.spec +++ b/dlls/wineandroid.drv/wineandroid.drv.spec @@ -1 +1,3 @@ -# Nothing here yet +# GDI driver + +@ cdecl wine_get_gdi_driver(long) ANDROID_get_gdi_driver