internal unsafe void SetTabs( int incrementalTab, LsTbd *tabStops, int tabStopCount ) { Invariant.Assert(_ploc.Value != System.IntPtr.Zero); LsErr lserr = UnsafeNativeMethods.LoSetTabs( _ploc.Value, incrementalTab, tabStopCount, tabStops ); if (lserr != LsErr.None) { ThrowExceptionFromLsError(SR.Get(SRID.SetTabsFailure, lserr), lserr); } }
/// <summary> /// Fill a fixed buffer of LsTbd with /// </summary> private unsafe void CreateLsTbds( ParaProp pap, LsTbd *plsTbds, int lsTbdCount ) { for (int i = 0; i < lsTbdCount; i++) { TextTabProperties tab = (TextTabProperties)pap.Tabs[i]; plsTbds[i].lskt = Convert.LsKTabFromTabAlignment(tab.Alignment); plsTbds[i].ur = TextFormatterImp.RealToIdeal(tab.Location); if (tab.TabLeader != 0) { // Note: LS does not currently support surrogate character as tab leader and aligning character plsTbds[i].wchTabLeader = (char)tab.TabLeader; // tab leader requires state at display time for tab leader width fetching _statusFlags |= StatusFlags.KeepState; } plsTbds[i].wchCharTab = (char)tab.AligningCharacter; } }