Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

53 lines
1.6 KiB

// height.c
// We have to include a bunch of junk to use the XRC in our hack for
// free input. Because of the is we need tsunamip.h instead of
// tsunami.h
//#include "tsunami.h"
#include "tsunamip.h"
VOID PUBLIC GetBoxinfo(BOXINFO * boxinfo, int iBox, LPGUIDE lpguide, HRC hrc)
{
// Test for free guide.
if (lpguide->cHorzBox == 0) {
XRC *pXRC = (XRC *)hrc;
int realBase, realHeight;
//// No guide, compute a quick hack to guess at what we want.
//// We use the size of the box that was precomputed for us.
//// But we have to figure out where to place it.
// We have to fake up an absolute baseline. First we find the
// base and height of this cell.
realBase = pXRC->ppQueue[iBox]->rect.bottom;
realHeight = realBase - pXRC->ppQueue[iBox]->rect.top;
// Now center the ink in computed box size. E.g. add half the
// difference in heights to the baseline.
boxinfo->baseline = realBase + (lpguide->cyBox - realHeight)/2;
// Everything else can be computed from the numbers we now have.
boxinfo->size = lpguide->cyBox;
boxinfo->xheight = boxinfo->size / 2;
boxinfo->midline = boxinfo->baseline - boxinfo->xheight;
} else {
//
// The size of the writing area is computed first.
//
if (lpguide->cyBase == 0)
boxinfo->size = lpguide->cyBox;
else
boxinfo->size = lpguide->cyBase;
if (lpguide->cyMid == 0)
boxinfo->xheight = boxinfo->size / 2;
else
boxinfo->xheight = lpguide->cyMid;
boxinfo->baseline = boxinfo->size + lpguide->yOrigin + (iBox / lpguide->cHorzBox) * lpguide->cyBox;
boxinfo->midline = boxinfo->baseline - boxinfo->xheight;
}
}