lmi-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lmi-commits] [lmi] odd/pagination 4ab1634: Offset data by InforceYear


From: Greg Chicares
Subject: [lmi-commits] [lmi] odd/pagination 4ab1634: Offset data by InforceYear
Date: Sun, 16 Sep 2018 11:52:25 -0400 (EDT)

branch: odd/pagination
commit 4ab163487c0e84cb58789ce48da7951fcd451751
Author: Gregory W. Chicares <address@hidden>
Commit: Gregory W. Chicares <address@hidden>

    Offset data by InforceYear
    
    Begin inforce illustrations at the inforce duration: no longer show
    all-zero rows for prior durations.
---
 ledger_pdf_generator_wx.cpp | 30 +++++++++++++++++++++++-------
 1 file changed, 23 insertions(+), 7 deletions(-)

diff --git a/ledger_pdf_generator_wx.cpp b/ledger_pdf_generator_wx.cpp
index 85ed1a4..2baa753 100644
--- a/ledger_pdf_generator_wx.cpp
+++ b/ledger_pdf_generator_wx.cpp
@@ -1196,6 +1196,11 @@ class numbered_page : public page_with_footer
         --extra_pages_;
     }
 
+    // Exposed only to allow an assertion that the number calculated
+    // in page_with_tabular_report::get_extra_pages_needed() equals
+    // the number calculated in page_with_tabular_report::render().
+    int number_of_extra_pages() {return extra_pages_;}
+
   private:
     // Derived classes may override this function if they may need more than 
one
     // physical page to show their contents.
@@ -1698,6 +1703,7 @@ class page_with_tabular_report
             ,pdf_writer_wx           & writer
             ,html_interpolator  const& interpolate_html
             ,wx_table_generator      & table_gen
+            ,int                       offset
             )
             :outer_            {outer}
             ,ledger_           {ledger}
@@ -1705,8 +1711,9 @@ class page_with_tabular_report
             ,interpolate_html_ {interpolate_html}
 //          ,table_gen_        {create_table_generator(ledger, writer)}
             ,table_gen_        {table_gen}
+            ,offset_           {offset}
+            ,year_             {0}
             ,pos_y_            {}
-            ,year_             {}
         {}
 
       private:
@@ -1731,7 +1738,7 @@ class page_with_tabular_report
 
         void print_a_data_row () override
         {
-            auto const v = outer_.visible_values(ledger_, interpolate_html_, 
year_);
+            auto const v = outer_.visible_values(ledger_, interpolate_html_, 
year_ + offset());
             table_gen_.output_row(pos_y_, v);
             ++year_;
         }
@@ -1754,13 +1761,16 @@ class page_with_tabular_report
 
         void postlude         () override {}
 
+        int offset            () const {return offset_;}
+
         page_with_tabular_report& outer_;
         Ledger             const& ledger_;
         pdf_writer_wx           & writer_;
         html_interpolator  const& interpolate_html_;
         wx_table_generator      & table_gen_;
-        int                       pos_y_;
+        int                       offset_;
         int                       year_;
+        int                       pos_y_;
     };
 
   public:
@@ -1784,12 +1794,16 @@ class page_with_tabular_report
             );
         int const max_lines_per_page = (get_footer_top() - start_y) / 
table_gen.row_height();
 
-        pager p(*this, ledger, writer, interpolate_html, table_gen);
-        p.init
-            (ledger.GetMaxLength()
+        auto const& invar = ledger.GetLedgerInvariant();
+        int const inforce_year = bourn_cast<int>(invar.InforceYear);
+        pager p(*this, ledger, writer, interpolate_html, table_gen, 
inforce_year);
+        int page_count = p.init
+            (ledger.GetMaxLength() - inforce_year
             ,wx_table_generator::rows_per_group
             ,max_lines_per_page
             );
+        // "1 +" because extra pages are, well, extra.
+        LMI_ASSERT(page_count == 1 + number_of_extra_pages());
         p.print();
 
         // The original code is left in place below for reference;
@@ -1943,7 +1957,9 @@ class page_with_tabular_report
             throw std::runtime_error("no space left for tabular report");
             }
 
-        paginator z(ledger.GetMaxLength(), rows_per_group, max_lines_per_page);
+        auto const& invar = ledger.GetLedgerInvariant();
+        int const inforce_year = bourn_cast<int>(invar.InforceYear);
+        paginator z(ledger.GetMaxLength() - inforce_year, rows_per_group, 
max_lines_per_page);
         // "- 1": return the number of *extra* pages.
         return z.page_count() - 1;
     }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]