home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!pipex!bnr.co.uk!uknet!mcsun!news.funet.fi!ajk.tele.fi!funic!nntp.hut.fi!cs.hut.fi!aleskine
- From: aleskine@cs.hut.fi (Arto Leskinen)
- Newsgroups: comp.sys.mac.programmer
- Subject: StyledLineBreak
- Message-ID: <ALESKINE.92Dec26203719@cardhu.cs.hut.fi>
- Date: 26 Dec 92 18:37:22 GMT
- Sender: usenet@nntp.hut.fi (Usenet pseudouser id)
- Distribution: comp.sys.mac.programmer
- Organization: Helsinki University of Technology, Finland
- Lines: 45
- Nntp-Posting-Host: cardhu.cs.hut.fi
-
- I got StyledLineBreak to work somehow, but not perfectly. So I have table
- of style structs and style start offsets. I have tried to look that all values
- for StyledLineBreak are correct, but sometimes it draws olmost 2 chars too
- far. Even if I have only one style on a line. Can anyone give some advice?
-
- long lineLength(mTextSHand mTRecH, long chars, long line,
- mLineStyleRec *lineStyles, short styleCount)
- {
- unsigned char *cPtr, **cHand;
- short i;
- long width = 0, start, offset = 1;
- FormatOrder order[kMaxLineStyles];
- StyledLineBreakCode sLBCode = smBreakOverflow;
-
- for ( i=0; order[i][0] = i++; );
- start = (*(*mTRecH)->lineStarts)[line];
- cHand = capCpyStr((**mTRecH).currText, start, chars);
- width = (**mTRecH).destRect.right - (**mTRecH).destRect.left;
- width = (width<<16) & 0xFFFF0000;
- if ( cHand && **cHand)
- {
- HLock(cHand);
- cPtr = *cHand;
- styleCount = setLineStyles(mTRecH, start, start+chars-1,
- lineStyles);
- GetFormatOrder(order, 0, styleCount, (Boolean)GetSysJust(),
- mTRLDirProc, (Ptr) lineStyles);
- for (i = 0; lineStyles[order[i][0]].tStyleH &&
- (sLBCode == smBreakOverflow); i++)
- {
- setTextStyle(lineStyles[order[i][0]].tStyleH);
- sLBCode = StyledLineBreak(cPtr, chars, lineStyles[order[i][0]].start,
- lineStyles[order[i][0]+1].start-1, 0L, &width, &offset);
- }
- HUnlock(cHand);
- if (sLBCode == smBreakWord)
- return offset;
- }
- }
-
- Thank You!
-
- Arto Leskinen
- aleskine@cs.hut.fi
- (I had some problems sening this so I hope it is all right.)
-