109 lines
3.6 KiB
C
109 lines
3.6 KiB
C
/*
|
|
* Windows driver font functions
|
|
*
|
|
* Copyright 1996 John Harvey
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include "windows.h"
|
|
#include "win16drv.h"
|
|
#include "gdi.h"
|
|
#include "font.h"
|
|
|
|
|
|
/***********************************************************************
|
|
* WIN16DRV_GetTextExtentPoint
|
|
*/
|
|
BOOL32 WIN16DRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT32 count,
|
|
LPSIZE32 size )
|
|
{
|
|
WIN16DRV_PDEVICE *physDev = (WIN16DRV_PDEVICE *)dc->physDev;
|
|
DWORD dwRet;
|
|
|
|
printf("LPGDI_GetTextExtPoint: %04x %s %d %p\n", dc->hSelf, str, count, size);
|
|
|
|
/* TTD support PS fonts */
|
|
/* Assume fixed font */
|
|
size->cx = count * physDev->tm.tmAveCharWidth;
|
|
size->cy = physDev->tm.tmHeight;
|
|
|
|
|
|
printf("LPGDI_GetTextExtPoint: cx=%d, cy=%d\n", size->cx,size->cy);
|
|
|
|
dwRet = PRTDRV_ExtTextOut(physDev->segptrPDEVICE, 0, 0,
|
|
NULL, str,
|
|
-count, physDev->segptrFontInfo, win16drv_SegPtr_DrawMode,
|
|
win16drv_SegPtr_TextXForm, NULL, NULL, 0);
|
|
printf("LPGDI_GetTextExtPoint: cx=0x%x, cy=0x%x Ret 0x%lx\n", size->cx, size->cy, dwRet);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
/***********************************************************************
|
|
* WIN16DRV_GetTextMetrics
|
|
*/
|
|
BOOL32 WIN16DRV_GetTextMetrics( DC *dc, TEXTMETRIC32A *metrics )
|
|
{
|
|
WIN16DRV_PDEVICE *physDev = (WIN16DRV_PDEVICE *)dc->physDev;
|
|
|
|
printf("LPGDI_GetTextMetrics: %04x \n", dc->hSelf);
|
|
|
|
metrics->tmHeight = physDev->tm.tmHeight;
|
|
metrics->tmAscent = physDev->tm.tmAscent;
|
|
metrics->tmDescent = physDev->tm.tmDescent;
|
|
metrics->tmInternalLeading = physDev->tm.tmInternalLeading;
|
|
metrics->tmExternalLeading = physDev->tm.tmExternalLeading;
|
|
metrics->tmAveCharWidth = physDev->tm.tmAveCharWidth;
|
|
metrics->tmMaxCharWidth = physDev->tm.tmMaxCharWidth;
|
|
metrics->tmWeight = physDev->tm.tmWeight;
|
|
metrics->tmOverhang = physDev->tm.tmOverhang;
|
|
metrics->tmDigitizedAspectX = physDev->tm.tmDigitizedAspectX;
|
|
metrics->tmDigitizedAspectY = physDev->tm.tmDigitizedAspectY;
|
|
metrics->tmFirstChar = physDev->tm.tmFirstChar;
|
|
metrics->tmLastChar = physDev->tm.tmLastChar;
|
|
metrics->tmDefaultChar = physDev->tm.tmDefaultChar;
|
|
metrics->tmBreakChar = physDev->tm.tmBreakChar;
|
|
metrics->tmItalic = physDev->tm.tmItalic;
|
|
metrics->tmUnderlined = physDev->tm.tmUnderlined;
|
|
metrics->tmStruckOut = physDev->tm.tmStruckOut;
|
|
metrics->tmPitchAndFamily = physDev->tm.tmPitchAndFamily;
|
|
metrics->tmCharSet = physDev->tm.tmCharSet;
|
|
|
|
printf("H %d, A %d, D %d, Int %d, Ext %d, AW %d, MW %d, W %d\n",
|
|
physDev->tm.tmHeight,
|
|
physDev->tm.tmAscent,
|
|
physDev->tm.tmDescent,
|
|
physDev->tm.tmInternalLeading,
|
|
physDev->tm.tmExternalLeading,
|
|
physDev->tm.tmAveCharWidth,
|
|
physDev->tm.tmMaxCharWidth,
|
|
physDev->tm.tmWeight);
|
|
|
|
return TRUE;
|
|
}
|
|
|
|
HFONT32 WIN16DRV_FONT_SelectObject( DC * dc, HFONT32 hfont, FONTOBJ * font)
|
|
{
|
|
/* TTD */
|
|
printf("In WIN16DRV_FONT_SelectObject\n");
|
|
return GetStockObject32(SYSTEM_FIXED_FONT);
|
|
}
|
|
|
|
/***********************************************************************
|
|
* GetCharWidth32A (GDI32.155)
|
|
*/
|
|
BOOL32 WIN16DRV_GetCharWidth( DC *dc, UINT32 firstChar, UINT32 lastChar,
|
|
LPINT32 buffer )
|
|
{
|
|
int i;
|
|
WIN16DRV_PDEVICE *physDev = (WIN16DRV_PDEVICE *)dc->physDev;
|
|
/* TTD Need to cope with PS fonts */
|
|
for (i = firstChar; i <= lastChar; i++)
|
|
*buffer++ = physDev->tm.tmAveCharWidth;
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
|