internal unsafe LsErr GetGlyphExpansionInfoFullMixed( IntPtr pols, // Line Layout context LsDevice device, // kind of device LsTFlow textFlow, // text flow LsGlyphRunInfo *plsglyphrunInfo, // glyph-based run info LsNeighborInfo *plsneighborInfoLeft, // left neighbor info LsNeighborInfo *plsneighborInfoRight, // right neigbor info int maxPriorityLevel, // maximum priority level int **pplsexpansionLeft, // [in/out] fill in left expansion amount per priority level on the way out int **pplsexpansionRight, // [in/out] fill in right expansion amount per priority level on the way out LsExpType *plsexptype, // [in/out] fill in glyph expansion type for each glyph int *pduMinInk // [in/out] fill in glyph minimum expansion for exptAddInkContinuous ) { LsErr lserr = LsErr.None; Plsrun plsrun = Plsrun.Undefined; LSRun lsrun = null; try { Invariant.Assert(maxPriorityLevel == 3); plsrun = plsglyphrunInfo->plsrun; lsrun = FullText.StoreFrom(plsrun).GetRun(plsrun); int em = lsrun.EmSize; return ExpandGlyphs( plsglyphrunInfo, (int)(em * Constants.MaxInterWordExpansionPerEm), pplsexpansionLeft, pplsexpansionRight, plsexptype, LsExpType.AddWhiteSpace, // inter-word expansion type ((lsrun.BidiLevel & 1) == 0 ? LsExpType.AddWhiteSpace : LsExpType.None) ); } catch (Exception e) { SaveException(e, plsrun, lsrun); lserr = LsErr.ClientAbort; } catch { SaveNonCLSException("GetGlyphExpansionInfoFullMixed", plsrun, lsrun); lserr = LsErr.ClientAbort; } return lserr; }
internal unsafe LsErr GetGlyphCompressionInfoFullMixed( IntPtr pols, // Line Layout context LsDevice device, // kind of device LsTFlow textFlow, // text flow LsGlyphRunInfo *plsglyphrunInfo, // glyph-based run info LsNeighborInfo *plsneighborInfoLeft, // left neighbor info LsNeighborInfo *plsneighborInfoRight, // right neigbor info int maxPriorityLevel, // maximum priority level int **pplscompressionLeft, // [in/out] fill in left compression amount per priority level on the way out int **pplscompressionRight // [in/out] fill in right compression amount per priority level on the way out ) { LsErr lserr = LsErr.None; Plsrun plsrun = Plsrun.Undefined; LSRun lsrun = null; try { Invariant.Assert(maxPriorityLevel == 3); plsrun = plsglyphrunInfo->plsrun; lsrun = FullText.StoreFrom(plsrun).GetRun(plsrun); int em = lsrun.EmSize; return CompressGlyphs( plsglyphrunInfo, (int)(em * Constants.MinInterWordCompressionPerEm), pplscompressionLeft, pplscompressionRight ); } catch (Exception e) { SaveException(e, plsrun, lsrun); lserr = LsErr.ClientAbort; } catch { SaveNonCLSException("GetGlyphCompressionInfoFullMixed", plsrun, lsrun); lserr = LsErr.ClientAbort; } return lserr; }