12.1. Fancy Reports
Sam looked at the first version of the rental contract. "Well, it looks pretty plain to me," he stated.
"OK," I replied. "What else would you like on it?"
"How about a few graphics and making the due date stand out in bold with a larger font?" he queried. "Is that too much trouble?"
"No trouble at all," I answered. "What's the charge limit on your American Express?"
"I don't have a limit," Sam replied.
"Good, then there should be enough money to do it," I stated.
12.1.1. More Is Less
Handling graphics and different fonts, and laying out pages containing them, is a time-consuming process using procedural-driven code. We need to calculate the sizes of strings and compute where to position them. Fortunately, languages and modules are available that provide these necessary operations. These components contain a lot more than we need, but they make a lot less work for us ("More Is Sometimes Less").
One language that does the trick is the Hypertext Markup Language (HTML). The display modules are browsers and HTML-aware edit widgets. The create_report( ) method can create HTML-formatted text. We can display that text using an HTML-aware display module. We change our DisplayReport class to include a method for displaying an HTML report:
class DisplayReport
void display_report_plain_text_format(
ReportPlainTextFormat report_plain_text_format)
void display_report_html_format(
ReportHTMLFormat report_html_format)
ReportHTMLFormat contains HTMLString. HTMLString consists ...