/// ------------------------------------------------------------------------------------ /// <summary> /// Creates and returns the primary view construtor for the main view in the layout. /// This is only called once. /// </summary> /// <param name="div"></param> /// <returns>The view constructor to be used for the main view</returns> /// ------------------------------------------------------------------------------------ public virtual IVwViewConstructor MakeMainVc(DivisionLayoutMgr div) { DraftViewVc vc; if (m_divisionPortion == PrintLayoutPortion.TitleAndIntro) { vc = new ScriptureBookIntroVc(TeStVc.LayoutViewTarget.targetPrint, div.FilterInstance, m_styleSheet, false); } else if (m_divisionPortion == PrintLayoutPortion.ScriptureSections) { vc = new ScriptureBodyVc(TeStVc.LayoutViewTarget.targetPrint, div.FilterInstance, m_styleSheet, false); } else { vc = new DraftViewVc(TeStVc.LayoutViewTarget.targetPrint, div.FilterInstance, m_styleSheet, false); } vc.HeightEstimator = this; if ((m_viewType & TeViewType.BackTranslation) != 0) { vc.ContentType = Options.UseInterlinearBackTranslation ? StVc.ContentTypes.kctSegmentBT : StVc.ContentTypes.kctSimpleBT; vc.DefaultWs = m_ws; } vc.Cache = m_fdoCache; vc.PrintLayout = true; return(vc); }
/// ----------------------------------------------------------------------------------- /// <summary> /// Initializes a new instance of the <see cref="DummyPublication"/> class. /// </summary> /// ----------------------------------------------------------------------------------- public DummyScripturePublicationNoDb(IPublication pub, FwStyleSheet stylesheet, DivisionLayoutMgr div, DateTime printDateTime, int filterInstance) : base(stylesheet, filterInstance, pub, TeViewType.PrintLayout, printDateTime) { m_printerDpiX = 720.0f; m_printerDpiY = 1440.0f; }
/// ------------------------------------------------------------------------------------ /// <summary> /// Creates and returns the primary view construtor for the main view in the layout. /// This is only called once. /// </summary> /// <param name="div"></param> /// <returns>The view constructor to be used for the main view</returns> /// ------------------------------------------------------------------------------------ public override IVwViewConstructor MakeMainVc(DivisionLayoutMgr div) { BtPrintLayoutSideBySideVc vc = new BtPrintLayoutSideBySideVc( TeStVc.LayoutViewTarget.targetPrint, div.FilterInstance, m_styleSheet, m_fdoCache, m_ws); vc.HeightEstimator = this; return(vc); }
/// ------------------------------------------------------------------------------------ /// <summary> /// No subordinate views for this dummy configurer. /// </summary> /// <param name="div">The division layout manager</param> /// ------------------------------------------------------------------------------------ public override void ConfigureSubordinateViews(DivisionLayoutMgr div) { if (m_fAddSubordinateStreams) { int hvoScr = m_fdoCache.LangProject.TranslatedScriptureOAHvo; div.AddSubordinateStream(hvoScr, DummyFirstSubViewVc.kfragScrFootnotes, new DummyFirstSubViewVc(), new NLevelOwnerSvd(2, m_fdoCache.MainCacheAccessor, hvoScr)); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Makes a call to MakeSubordinateView, to add a view containing footnotes. /// </summary> /// <param name="div">The PrintLayout manager object</param> /// ------------------------------------------------------------------------------------ public override void ConfigureSubordinateViews(DivisionLayoutMgr div) { int hvoScripture = m_fdoCache.LangProject.TranslatedScriptureOA.Hvo; BtFootnotePrintLayoutSideBySideVc footnoteVc = new BtFootnotePrintLayoutSideBySideVc( TeStVc.LayoutViewTarget.targetPrint, div.FilterInstance, m_styleSheet, m_fdoCache, m_ws); NLevelOwnerSvd ownerSvd = new NLevelOwnerSvd(2, new ScrBookFilterDecorator(m_fdoCache, m_bookFilterInstance), hvoScripture); div.AddSubordinateStream(hvoScripture, (int)FootnoteFrags.kfrScripture, footnoteVc, ownerSvd); }
///// <summary>type of width for this page element across the page</summary> //internal readonly PageElementWidthType m_widthType; #endregion #region Constructor /// ------------------------------------------------------------------------------------ /// <summary> /// Constructor /// </summary> /// <param name="division">The division.</param> /// <param name="stream">The stream.</param> /// <param name="fPageElementOwnsStream">if set to <c>true</c> the page element owns /// the stream.</param> /// <param name="locationOnPage">The location on page.</param> /// <param name="dypOffsetToTopOfDataOnPage">The dyp offset to top of data on page.</param> /// <param name="fMainStream">set to <c>true</c> if <paramref name="stream"/> is the /// main stream of <paramref name="division"/>, otherwise <c>false</c>.</param> /// <param name="columnNumber">The column number of the page element (1-based)</param> /// <param name="totalColumns">The total number of columns on the page for this stream.</param> /// <param name="columnGap">The gap between the columns, which is used if there are two /// or more columns.</param> /// <param name="columnHeight">The height of the current column.</param> /// <param name="dypOverlapWithPreviousElement"></param> /// <param name="fInRightToLeftStream">if set to <c>true</c> the page element is in a /// right-to-left stream.</param> /// ------------------------------------------------------------------------------------ public PageElement(DivisionLayoutMgr division, IVwLayoutStream stream, bool fPageElementOwnsStream, Rectangle locationOnPage, int dypOffsetToTopOfDataOnPage, bool fMainStream, int columnNumber, int totalColumns, int columnGap, int columnHeight, int dypOverlapWithPreviousElement, bool fInRightToLeftStream) { m_division = division; m_stream = stream; m_fPageElementOwnsStream = fPageElementOwnsStream; m_locationOnPage = locationOnPage; m_dypOffsetToTopOfDataOnPage = dypOffsetToTopOfDataOnPage; m_fMainStream = fMainStream; m_column = columnNumber; m_totalColumns = totalColumns; m_fInRightToLeftStream = fInRightToLeftStream; m_columnGap = columnGap; m_columnHeight = columnHeight; m_dypOverlapWithPreviousElement = dypOverlapWithPreviousElement; }
public void TwoColumnOneBook() { foreach (IPubDivision div in m_dbPub.DivisionsOS) { div.NumColumns = 2; } m_BookFilter.FilteredBooks = new [] { Cache.LangProject.TranslatedScriptureOA.ScriptureBooksOS[1] }; Assert.AreEqual(1, m_BookFilter.BookCount); m_ScrPubCtrl.CallRefreshDisplay(); m_ScrPubCtrl.Configure(); m_ScrPubCtrl.CreatePages(); Assert.AreEqual(2, m_ScrPubCtrl.Divisions.Count); DivisionLayoutMgr divTitleIntro = m_ScrPubCtrl.Divisions[0]; DivisionLayoutMgr divScripture = m_ScrPubCtrl.Divisions[1]; Assert.AreNotEqual(divTitleIntro.AvailableMainStreamColumWidthInPrinterPixels, divScripture.AvailableMainStreamColumWidthInPrinterPixels); Assert.AreEqual(divTitleIntro.AvailableMainStreamColumWidthInPrinterPixels, divTitleIntro.AvailablePageWidthInPrinterPixels); Assert.AreNotEqual(DivisionStartOption.Continuous, divTitleIntro.StartAt); Assert.AreEqual(DivisionStartOption.Continuous, divScripture.StartAt); Assert.Greater(divTitleIntro.MainRootBox.Height, 0); Assert.Greater(divScripture.MainRootBox.Height, 0); Assert.Greater(divScripture.MainRootBox.Height, divTitleIntro.MainRootBox.Height); Assert.Greater(m_ScrPubCtrl.PageCount, 1); Assert.IsNotNull(divTitleIntro.MainVc as ScriptureBookIntroVc); Assert.IsNotNull(divScripture.MainVc as ScriptureBodyVc); foreach (DivisionLayoutMgr div in m_ScrPubCtrl.Divisions) { IVwLayoutStream layoutStream = div.MainLayoutStream; Assert.IsNotNull(layoutStream); Assert.IsNotNull(layoutStream as IVwRootBox); } }
public void OneColumnOneBook() { foreach (PubDivision div in m_dbPub.DivisionsOS) { div.NumColumns = 1; } m_BookFilter.UpdateFilter( Cache.LangProject.TranslatedScriptureOA.ScriptureBooksOS.HvoArray[1]); Assert.AreEqual(1, m_BookFilter.BookCount); m_ScrPubCtrl.Configure(); m_ScrPubCtrl.CreatePages(); // Verify that both divisions are one-column Assert.AreEqual(2, m_ScrPubCtrl.Divisions.Count); DivisionLayoutMgr divTitleIntro = m_ScrPubCtrl.Divisions[0]; DivisionLayoutMgr divScripture = m_ScrPubCtrl.Divisions[1]; Assert.AreEqual(divTitleIntro.AvailableMainStreamColumWidthInPrinterPixels, divScripture.AvailableMainStreamColumWidthInPrinterPixels); Assert.AreEqual(divTitleIntro.AvailableMainStreamColumWidthInPrinterPixels, divTitleIntro.AvailablePageWidthInPrinterPixels); Assert.AreNotEqual(DivisionStartOption.Continuous, divTitleIntro.StartAt); Assert.AreEqual(DivisionStartOption.Continuous, divScripture.StartAt); Assert.Greater(divTitleIntro.MainRootBox.Height, 0); Assert.Greater(divScripture.MainRootBox.Height, 0); Assert.Greater(divScripture.MainRootBox.Height, divTitleIntro.MainRootBox.Height); Assert.Greater(m_ScrPubCtrl.PageCount, 2); Assert.IsNotNull(divTitleIntro.MainVc as ScriptureBookIntroVc); Assert.IsNotNull(divScripture.MainVc as ScriptureBodyVc); foreach (DivisionLayoutMgr div in m_ScrPubCtrl.Divisions) { IVwLayoutStream layoutStream = div.MainLayoutStream; Assert.IsNotNull(layoutStream); Assert.IsNotNull(layoutStream as IVwRootBox); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Makes a call to MakeSubordinateView, to add a view containing footnotes. /// </summary> /// <param name="div">The PrintLayout manager object</param> /// ------------------------------------------------------------------------------------ public override void ConfigureSubordinateViews(DivisionLayoutMgr div) { int hvoScripture = m_fdoCache.LangProject.TranslatedScriptureOAHvo; BtFootnotePrintLayoutSideBySideVc footnoteVc = new BtFootnotePrintLayoutSideBySideVc( TeStVc.LayoutViewTarget.targetPrint, div.FilterInstance, m_styleSheet, m_fdoCache, m_ws); NLevelOwnerSvd ownerSvd = new NLevelOwnerSvd(2, m_fdoCache.MainCacheAccessor, hvoScripture); IVwVirtualHandler vh = FilteredScrBooks.GetFilterInstance(m_fdoCache, div.FilterInstance); if (vh != null) { ownerSvd.AddTagLookup((int)Scripture.ScriptureTags.kflidScriptureBooks, vh.Tag); } div.AddSubordinateStream(hvoScripture, (int)FootnoteFrags.kfrScripture, footnoteVc, ownerSvd); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Makes a call to MakeSubordinateView, to add a view containing footnotes. /// </summary> /// <param name="div">The division layout manager</param> /// ------------------------------------------------------------------------------------ public virtual void ConfigureSubordinateViews(DivisionLayoutMgr div) { int hvoScripture = m_fdoCache.LangProject.TranslatedScriptureOA.Hvo; ISilDataAccess decorator; if (m_divisionPortion != PrintLayoutPortion.AllContent) { decorator = new PrintLayoutDataByFlidDecorator(m_fdoCache, m_bookFilterInstance, m_divisionPortion == PrintLayoutPortion.TitleAndIntro); } else { decorator = new ScrBookFilterDecorator(m_fdoCache, m_bookFilterInstance); } NLevelOwnerSvd ownerSvd = new NLevelOwnerSvd(2, decorator, hvoScripture); if (m_sharedStream == null) { FootnoteVc footnoteVc = new FootnoteVc(TeStVc.LayoutViewTarget.targetPrint, div.FilterInstance); footnoteVc.DefaultWs = DefaultWs; footnoteVc.Cache = m_fdoCache; footnoteVc.DisplayTranslation = (m_viewType & TeViewType.BackTranslation) != 0; div.AddSubordinateStream(hvoScripture, (int)FootnoteFrags.kfrScripture, footnoteVc, ownerSvd); } else { int hvoRoot; IVwViewConstructor vc; int frag; IVwStylesheet stylesheet; ((IVwRootBox)m_sharedStream).GetRootObject(out hvoRoot, out vc, out frag, out stylesheet); div.AddSharedSubordinateStream(m_sharedStream, vc, ownerSvd); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// Makes a call to MakeSubordinateView, to add a view containing footnotes. /// </summary> /// <param name="div">The division layout manager</param> /// ------------------------------------------------------------------------------------ public virtual void ConfigureSubordinateViews(DivisionLayoutMgr div) { int hvoScripture = m_fdoCache.LangProject.TranslatedScriptureOAHvo; int wsDefault = ((m_viewType & TeViewType.BackTranslation) != 0 ? m_fdoCache.DefaultAnalWs : m_fdoCache.DefaultVernWs); NLevelOwnerSvd ownerSvd = new NLevelOwnerSvd(2, m_fdoCache.MainCacheAccessor, hvoScripture); IVwVirtualHandler vh = FilteredScrBooks.GetFilterInstance(m_fdoCache, div.FilterInstance); if (vh != null) { ownerSvd.AddTagLookup((int)Scripture.ScriptureTags.kflidScriptureBooks, vh.Tag); } if (m_sharedStream == null) { FootnoteVc footnoteVc = new FootnoteVc(div.FilterInstance, TeStVc.LayoutViewTarget.targetPrint, wsDefault); footnoteVc.Cache = m_fdoCache; footnoteVc.DisplayTranslation = (m_viewType & TeViewType.BackTranslation) != 0; div.AddSubordinateStream(hvoScripture, (int)FootnoteFrags.kfrScripture, footnoteVc, ownerSvd); } else { int hvoRoot; IVwViewConstructor vc; int frag; IVwStylesheet stylesheet; ((IVwRootBox)m_sharedStream).GetRootObject(out hvoRoot, out vc, out frag, out stylesheet); div.AddSharedSubordinateStream(m_sharedStream, vc, ownerSvd); } }
/// ------------------------------------------------------------------------------------ /// <summary> /// No subordinate views for this dummy configurer. /// </summary> /// <param name="div">The division layout manager</param> /// ------------------------------------------------------------------------------------ public override void ConfigureSubordinateViews(DivisionLayoutMgr div) { }
/// ----------------------------------------------------------------------------------- /// <summary> /// Initializes a new instance of the <see cref="ReallyStupidPubCtrl"/> class. /// </summary> /// ----------------------------------------------------------------------------------- public ReallyStupidPubCtrl(IPublication pub, FwStyleSheet stylesheet, DivisionLayoutMgr div, DateTime printDateTime, bool fApplyStyleOverrides) : base(pub, stylesheet, div, printDateTime, fApplyStyleOverrides) { }
/// ------------------------------------------------------------------------------------ /// <summary> /// Creates and returns the primary view construtor for the main view in the layout. /// This is only called once. /// </summary> /// <returns>The view constructor to be used for the main view</returns> /// <param name="div"></param> /// ------------------------------------------------------------------------------------ public override IVwViewConstructor MakeMainVc(DivisionLayoutMgr div) { return(new DummyMainLazyViewVc(m_fdoCache, m_fAddContent)); }
/// ------------------------------------------------------------------------------------ /// <summary> /// No-op /// </summary> /// <param name="div">The division layout manager</param> /// ------------------------------------------------------------------------------------ public virtual void ConfigureSubordinateViews(DivisionLayoutMgr div) { }
/// ------------------------------------------------------------------------------------ /// <summary> /// Creates and returns the primary view construtor for the main view in the layout. /// This is only called once. /// </summary> /// <param name="div"></param> /// <returns>The view constructor to be used for the main view</returns> /// ------------------------------------------------------------------------------------ public virtual IVwViewConstructor MakeMainVc(DivisionLayoutMgr div) { return(new EmptyTePrintLayoutVc()); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Initializes a new instance of the <see cref="T:TeDummyPublication"/> class. /// </summary> /// <param name="pub">The pub.</param> /// <param name="div">The div.</param> /// <param name="printDateTime">The print date time.</param> /// ------------------------------------------------------------------------------------ public TeDummyPublication(Publication pub, DivisionLayoutMgr div, DateTime printDateTime) : base(pub, div, printDateTime) { }
/// -------------------------------------------------------------------------------- /// <summary> /// Calls the get last element. /// </summary> /// <param name="division">The division.</param> /// <param name="xd">The xd.</param> /// <returns></returns> /// -------------------------------------------------------------------------------- public PageElement CallGetLastElement(DivisionLayoutMgr division, out int xd) { return(GetLastElement(division, out xd)); }
public void TwoColumnTwoBooks() { foreach (PubDivision div in m_dbPub.DivisionsOS) { div.NumColumns = 2; } m_BookFilter.UpdateFilter( Cache.LangProject.TranslatedScriptureOA.ScriptureBooksOS.HvoArray[0], Cache.LangProject.TranslatedScriptureOA.ScriptureBooksOS.HvoArray[1]); Assert.AreEqual(2, m_BookFilter.BookCount); m_ScrPubCtrl.Configure(); m_ScrPubCtrl.CreatePages(); Assert.AreEqual(4, m_ScrPubCtrl.Divisions.Count); DivisionLayoutMgr divTitleIntroFirstBook = m_ScrPubCtrl.Divisions[0]; DivisionLayoutMgr divScriptureFirstBook = m_ScrPubCtrl.Divisions[1]; DivisionLayoutMgr divTitleIntroSecondBook = m_ScrPubCtrl.Divisions[2]; DivisionLayoutMgr divScriptureSecondBook = m_ScrPubCtrl.Divisions[3]; Assert.Greater(divTitleIntroFirstBook.AvailableMainStreamColumWidthInPrinterPixels, divScriptureFirstBook.AvailableMainStreamColumWidthInPrinterPixels); Assert.AreEqual(divTitleIntroFirstBook.AvailableMainStreamColumWidthInPrinterPixels, divTitleIntroFirstBook.AvailablePageWidthInPrinterPixels); Assert.AreEqual(divTitleIntroFirstBook.AvailableMainStreamColumWidthInPrinterPixels, divTitleIntroSecondBook.AvailableMainStreamColumWidthInPrinterPixels); Assert.AreEqual(divScriptureFirstBook.AvailableMainStreamColumWidthInPrinterPixels, divScriptureSecondBook.AvailableMainStreamColumWidthInPrinterPixels); Assert.AreNotEqual(DivisionStartOption.Continuous, divTitleIntroFirstBook.StartAt); Assert.AreEqual(DivisionStartOption.Continuous, divScriptureFirstBook.StartAt); Assert.AreNotEqual(DivisionStartOption.Continuous, divTitleIntroSecondBook.StartAt); Assert.AreEqual(DivisionStartOption.Continuous, divScriptureSecondBook.StartAt); Assert.Greater(divTitleIntroFirstBook.MainRootBox.Height, 0); Assert.Greater(divScriptureFirstBook.MainRootBox.Height, 0); // Intro of Philemon is quite long, so we just test that the heights of the two division are not equal Assert.AreNotEqual(divScriptureFirstBook.MainRootBox.Height, divTitleIntroFirstBook.MainRootBox.Height); Assert.Greater(divTitleIntroSecondBook.MainRootBox.Height, 0); Assert.Greater(divScriptureSecondBook.MainRootBox.Height, 0); Assert.Greater(divScriptureSecondBook.MainRootBox.Height, divTitleIntroSecondBook.MainRootBox.Height); Assert.AreEqual(2, m_ScrPubCtrl.Pages[1].FirstDivOnPage, "Page 2 should start with second book (third division)"); Assert.AreEqual(0, m_ScrPubCtrl.Pages[1].OffsetFromTopOfDiv( m_ScrPubCtrl.Divisions[m_ScrPubCtrl.Pages[2].FirstDivOnPage]), "Third division should start on top of page 2"); Assert.Greater(m_ScrPubCtrl.PageCount, 2); Assert.IsNotNull(divTitleIntroFirstBook.MainVc as ScriptureBookIntroVc); Assert.IsNotNull(divScriptureFirstBook.MainVc as ScriptureBodyVc); Assert.IsNotNull(divTitleIntroSecondBook.MainVc as ScriptureBookIntroVc); Assert.IsNotNull(divScriptureSecondBook.MainVc as ScriptureBodyVc); foreach (DivisionLayoutMgr div in m_ScrPubCtrl.Divisions) { IVwLayoutStream layoutStream = div.MainLayoutStream; Assert.IsNotNull(layoutStream); Assert.IsNotNull(layoutStream as IVwRootBox); } }