mirror of
https://github.com/reactos/reactos.git
synced 2025-08-05 06:33:01 +00:00
- Revert changes in font.
svn path=/trunk/; revision=44933
This commit is contained in:
parent
ae0d45f91c
commit
e94d3dc399
1 changed files with 4 additions and 189 deletions
|
@ -75,19 +75,7 @@ GreGetKerningPairs(
|
||||||
return Count;
|
return Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
|
||||||
|
|
||||||
It is recommended that an application use the GetFontLanguageInfo function
|
|
||||||
to determine whether the GCP_DIACRITIC, GCP_DBCS, GCP_USEKERNING, GCP_LIGATE,
|
|
||||||
GCP_REORDER, GCP_GLYPHSHAPE, and GCP_KASHIDA values are valid for the
|
|
||||||
currently selected font. If not valid, GetCharacterPlacement ignores the
|
|
||||||
value.
|
|
||||||
|
|
||||||
M$ must use a preset "compiled in" support for each language based releases.
|
|
||||||
ReactOS uses FreeType, this will need to be supported. ATM this is hard coded
|
|
||||||
for GCPCLASS_LATIN!
|
|
||||||
|
|
||||||
*/
|
|
||||||
DWORD
|
DWORD
|
||||||
FASTCALL
|
FASTCALL
|
||||||
GreGetCharacterPlacementW(
|
GreGetCharacterPlacementW(
|
||||||
|
@ -98,185 +86,16 @@ GreGetCharacterPlacementW(
|
||||||
LPGCP_RESULTSW pgcpw,
|
LPGCP_RESULTSW pgcpw,
|
||||||
DWORD dwFlags)
|
DWORD dwFlags)
|
||||||
{
|
{
|
||||||
GCP_RESULTSW gcpwSave;
|
|
||||||
UINT i, nSet, cSet;
|
|
||||||
// INT *lpDx, *tmpDxCaretPos;
|
|
||||||
INT *tmpDxCaretPos;
|
|
||||||
LONG Cx;
|
|
||||||
SIZE Size = {0,0};
|
SIZE Size = {0,0};
|
||||||
|
|
||||||
DPRINT1("GreGCPW Start\n");
|
|
||||||
|
|
||||||
if (!pgcpw)
|
if (!pgcpw)
|
||||||
{
|
{
|
||||||
if (GreGetTextExtentW( hdc, pwsz, nCount, &Size, 1))
|
if (GreGetTextExtentW( hdc, pwsz, nCount, &Size, 1))
|
||||||
return MAKELONG(Size.cx, Size.cy);
|
return MAKELONG(Size.cx, Size.cy);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
UNIMPLEMENTED;
|
||||||
RtlCopyMemory(&gcpwSave, pgcpw, sizeof(GCP_RESULTSW));
|
return 0;
|
||||||
|
|
||||||
cSet = nSet = nCount;
|
|
||||||
|
|
||||||
if ( nCount > gcpwSave.nGlyphs ) cSet = gcpwSave.nGlyphs;
|
|
||||||
|
|
||||||
/* GCP_JUSTIFY may only be used in conjunction with GCP_MAXEXTENT. */
|
|
||||||
if ( dwFlags & GCP_JUSTIFY) dwFlags |= GCP_MAXEXTENT;
|
|
||||||
|
|
||||||
if ( !gcpwSave.lpDx && gcpwSave.lpCaretPos )
|
|
||||||
tmpDxCaretPos = gcpwSave.lpCaretPos;
|
|
||||||
else
|
|
||||||
tmpDxCaretPos = gcpwSave.lpDx;
|
|
||||||
|
|
||||||
if ( !GreGetTextExtentExW( hdc,
|
|
||||||
pwsz,
|
|
||||||
cSet,
|
|
||||||
nMaxExtent,
|
|
||||||
((dwFlags & GCP_MAXEXTENT) ? (PULONG) &cSet : NULL),
|
|
||||||
(PULONG) tmpDxCaretPos,
|
|
||||||
&Size,
|
|
||||||
0) )
|
|
||||||
{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
nSet = cSet;
|
|
||||||
|
|
||||||
if ( tmpDxCaretPos && nSet > 0)
|
|
||||||
{
|
|
||||||
// lpDx = tmpDxCaretPos + 4 * nSet - 4;
|
|
||||||
// lpDx = tmpDxCaretPos[nSet - 1];
|
|
||||||
/* while ( lpDx > tmpDxCaretPos )
|
|
||||||
{
|
|
||||||
*lpDx -= *lpDx - 4;
|
|
||||||
lpDx -= 4;
|
|
||||||
}*/
|
|
||||||
for (i = (nSet - 1); i > 0; i--)
|
|
||||||
{
|
|
||||||
tmpDxCaretPos[i] -= tmpDxCaretPos[i - 1];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( !(dwFlags & GCP_MAXEXTENT) || nSet )
|
|
||||||
{
|
|
||||||
if ( (dwFlags & GCP_USEKERNING) &&
|
|
||||||
( gcpwSave.lpDx ||
|
|
||||||
gcpwSave.lpCaretPos ) &&
|
|
||||||
nSet >= 2 )
|
|
||||||
{
|
|
||||||
DWORD Count;
|
|
||||||
LPKERNINGPAIR pKP;
|
|
||||||
|
|
||||||
Count = GreGetKerningPairs( hdc, 0, NULL);
|
|
||||||
if (Count)
|
|
||||||
{
|
|
||||||
pKP = ExAllocatePoolWithTag(PagedPool, Count * sizeof(KERNINGPAIR), GDITAG_TEXT);
|
|
||||||
if (pKP)
|
|
||||||
{
|
|
||||||
if ( GreGetKerningPairs( hdc, Count, pKP) != Count)
|
|
||||||
{
|
|
||||||
ExFreePoolWithTag( pKP, GDITAG_TEXT);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( (ULONG_PTR)(pKP) < ((ULONG_PTR)(pKP) + (ULONG_PTR)(Count * sizeof(KERNINGPAIR))) )
|
|
||||||
{
|
|
||||||
DPRINT1("We Need to Do Something HERE!\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
ExFreePoolWithTag( pKP, GDITAG_TEXT);
|
|
||||||
|
|
||||||
if ( dwFlags & GCP_MAXEXTENT )
|
|
||||||
{
|
|
||||||
// Cx = Size.cx;
|
|
||||||
if ( Size.cx > nMaxExtent )
|
|
||||||
{
|
|
||||||
// lpDx = tmpDxCaretPos + 4 * nSet - 4;
|
|
||||||
// lpDx = tmpDxCaretPos[nSet - 1];
|
|
||||||
/*
|
|
||||||
while ( 1 )
|
|
||||||
{
|
|
||||||
if ( !nSet ) break;
|
|
||||||
|
|
||||||
Cx -= *lpDx;
|
|
||||||
--nSet;
|
|
||||||
lpDx -= 4;
|
|
||||||
|
|
||||||
Size.cx = Cx;
|
|
||||||
|
|
||||||
if ( Cx <= nMaxExtent ) break;
|
|
||||||
}*/
|
|
||||||
for (Cx = Size.cx; nSet > 0; nSet--)
|
|
||||||
{
|
|
||||||
Cx -= tmpDxCaretPos[nSet - 1];
|
|
||||||
Size.cx = Cx;
|
|
||||||
if ( Cx <= nMaxExtent ) break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if ( !nSet )
|
|
||||||
{
|
|
||||||
pgcpw->nGlyphs = 0;
|
|
||||||
pgcpw->nMaxFit = 0;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( (dwFlags & GCP_JUSTIFY) &&
|
|
||||||
( gcpwSave.lpDx ||
|
|
||||||
gcpwSave.lpCaretPos ) &&
|
|
||||||
nSet )
|
|
||||||
{
|
|
||||||
DPRINT1("We Need to Do Something HERE 2!\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( gcpwSave.lpDx && gcpwSave.lpCaretPos )
|
|
||||||
RtlCopyMemory( gcpwSave.lpCaretPos, gcpwSave.lpDx, nSet * sizeof(LONG));
|
|
||||||
|
|
||||||
if ( gcpwSave.lpCaretPos )
|
|
||||||
{
|
|
||||||
int pos = 0;
|
|
||||||
i = 0;
|
|
||||||
if ( nSet > 0 )
|
|
||||||
{
|
|
||||||
do
|
|
||||||
{
|
|
||||||
Cx = gcpwSave.lpCaretPos[i];
|
|
||||||
gcpwSave.lpCaretPos[i] = pos;
|
|
||||||
pos += Cx;
|
|
||||||
++i;
|
|
||||||
}
|
|
||||||
while ( i < nSet );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( gcpwSave.lpOutString )
|
|
||||||
RtlCopyMemory(gcpwSave.lpOutString, pwsz, nSet * sizeof(WCHAR));
|
|
||||||
|
|
||||||
if ( gcpwSave.lpClass )
|
|
||||||
RtlFillMemory(gcpwSave.lpClass, nSet, GCPCLASS_LATIN);
|
|
||||||
|
|
||||||
if ( gcpwSave.lpOrder )
|
|
||||||
{
|
|
||||||
for (i = 0; i < nSet; i++)
|
|
||||||
gcpwSave.lpOrder[i] = i;
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( gcpwSave.lpGlyphs )
|
|
||||||
{
|
|
||||||
if ( GreGetGlyphIndicesW( hdc, pwsz, nSet, gcpwSave.lpGlyphs, 0, 0) == GDI_ERROR )
|
|
||||||
{
|
|
||||||
nSet = 0;
|
|
||||||
Size.cx = 0;
|
|
||||||
Size.cy = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pgcpw->nGlyphs = nSet;
|
|
||||||
pgcpw->nMaxFit = nSet;
|
|
||||||
}
|
|
||||||
return MAKELONG(Size.cx, Size.cy);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
INT
|
INT
|
||||||
|
@ -494,12 +313,8 @@ NtGdiGetCharacterPlacementW(
|
||||||
IN OUT LPGCP_RESULTSW pgcpw,
|
IN OUT LPGCP_RESULTSW pgcpw,
|
||||||
IN DWORD dwFlags)
|
IN DWORD dwFlags)
|
||||||
{
|
{
|
||||||
return GreGetCharacterPlacementW( hdc,
|
UNIMPLEMENTED;
|
||||||
pwsz,
|
return 0;
|
||||||
nCount,
|
|
||||||
nMaxExtent,
|
|
||||||
pgcpw,
|
|
||||||
dwFlags);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
DWORD
|
DWORD
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue