/** * Sets the bottom of the Rectangle and determines the proper {link #verticalOffset} to * appropriately align the contents vertically. * * @param value */ public void setBottom(float value) { super.setBottom(value); float firstLineRealHeight = firstLineRealHeight(); float totalHeight = ury - value; // can't use top (already compensates for cellspacing) float nonContentHeight = (cellpadding() * 2f) + (cellspacing() * 2f); nonContentHeight += getBorderWidthInside(TOP) + getBorderWidthInside(BOTTOM); float interiorHeight = totalHeight - nonContentHeight; float extraHeight = 0.0f; switch (verticalAlignment) { case Element.ALIGN_BOTTOM: extraHeight = interiorHeight - contentHeight; break; case Element.ALIGN_MIDDLE: extraHeight = (interiorHeight - contentHeight) / 2.0f; break; default: // ALIGN_TOP extraHeight = 0f; } extraHeight += cellpadding() + cellspacing(); extraHeight += getBorderWidthInside(TOP); if (firstLine != null) { firstLine.height = firstLineRealHeight + extraHeight; } }
/** * Gets a Rectangle that is altered to fit on the page. * * @param top the top position * @param bottom the bottom position * @return a <CODE>Rectangle</CODE> */ public Rectangle rectangle(float top, float bottom) { Rectangle tmp = new Rectangle(left(), bottom(), right(), top()); tmp.cloneNonPositionParameters(this); if (top() > top) { tmp.setTop(top); tmp.setBorder(border - (border & TOP)); } if (bottom() < bottom) { tmp.setBottom(bottom); tmp.setBorder(border - (border & BOTTOM)); } return tmp; }
public void page3() { drawBorder(pageIcon, "IDIT"); drawHeader(userInfo.getClientHeading(), "Intentionally Defective Irrevocable Trust (IDIT)"); Rectangle rct = new Rectangle(prctTop); rct.setTop(rct.getTop() - (12 * _1_4TH)); rct.setBottom(rct.getBottom() - _1_4TH); rct.setLeft(rct.getLeft() - _1_4TH); if (useLLC) { if (userInfo.isSingle()) { if (userInfo.getClientGender().equalsIgnoreCase("M")) { drawDiagram("LLC-SIDIT-M.png", rct, CNTR_TB + CNTR_LR); } else { drawDiagram("LLC-SIDIT-F.png", rct, CNTR_TB + CNTR_LR); } } else { drawDiagram("LLC-SIDIT.png", rct, CNTR_TB + CNTR_LR); } } else { if (userInfo.isSingle()) { if (userInfo.getClientGender().equalsIgnoreCase("M")) { drawDiagram("SIDIT-M.png", rct, CNTR_TB + CNTR_LR); } else { drawDiagram("SIDIT-F.png", rct, CNTR_TB + CNTR_LR); } } else { drawDiagram("SIDIT.png", rct, CNTR_LR + CNTR_TB); } } // We now need the values placed on the left hand side of the page! // Now do the table. Rectangle lrct = new Rectangle(prctLLeft); lrct.setTop(lrct.getTop() - (_1_2TH + _1_4TH)); drawSection( lrct, "Comparison in " + Integer.toString(sidit.getFinalDeath()) + " Years", new String[0], 0); rct = new Rectangle(prctLLeft); rct.setTop(rct.getTop() - (_1_2TH + _1_2TH)); PageTable table = new PageTable(writer); table.setTableFormat(rct, 4); CellInfoFactory cif = new CellInfoFactory(); BaseFont baseFont = PageUtils.LoadFont("GARA.TTF"); BaseFont baseFontBold = PageUtils.LoadFont("GARABD.TTF"); float ptSize = 10f; cif.setDefaultFont(new Font(baseFont, ptSize)); Color green = new Color(0, 176, 0); Color red = new Color(192, 0, 0); Font fontBold = new Font(baseFontBold, ptSize, Font.NORMAL); Font fontBGreen = new Font(baseFontBold, ptSize, Font.NORMAL, green); Font fontBRed = new Font(baseFontBold, ptSize, Font.NORMAL, red); double f = sidit.getFinalBalance(); double t = f * .55; double result = f - t; double balance = sidit.getBalance()[sidit.getFinalDeath() - 1] + sidit.getLifeDeathBenefit(); double note = sidit.getNoteBalance()[0]; double noteTax = note * .55; double noteValueToFamily = note - noteTax; CellInfo cellData[][] = { // Column Headers { cif.getCellInfo(" "), cif.getCellInfo("Keep in the Estate", Element.ALIGN_CENTER, fontBold), cif.getCellInfo("IDIT", Element.ALIGN_CENTER, fontBold), cif.getCellInfo("Difference", Element.ALIGN_CENTER, fontBold) }, { cif.getCellInfo("Estate/Gift Taxable:"), cif.getCellInfo(dollar.format(f), Element.ALIGN_CENTER, fontBold), cif.getCellInfo(dollar.format(note) + " **", Element.ALIGN_CENTER, fontBold), cif.getCellInfo(dollar.format(f - note), Element.ALIGN_CENTER, fontBold) }, { cif.getCellInfo("Total Estate/Gift Taxes:"), cif.getCellInfo(dollar.format(t), Element.ALIGN_CENTER, fontBRed), cif.getCellInfo(dollar.format(noteTax), Element.ALIGN_CENTER, fontBRed), cif.getCellInfo(dollar.format(t - noteTax), Element.ALIGN_CENTER, fontBRed), }, { cif.getCellInfo("Life Insurance:"), cif.getCellInfo("0", Element.ALIGN_CENTER, fontBGreen), cif.getCellInfo( dollar.format(sidit.getLifeDeathBenefit()), Element.ALIGN_CENTER, fontBGreen), cif.getCellInfo( dollar.format(sidit.getLifeDeathBenefit()), Element.ALIGN_CENTER, fontBGreen), }, { cif.getCellInfo("Total to Family"), cif.getCellInfo(dollar.format(result), Element.ALIGN_CENTER, fontBGreen), cif.getCellInfo( dollar.format(balance + noteValueToFamily), Element.ALIGN_CENTER, fontBGreen), cif.getCellInfo( dollar.format((balance + noteValueToFamily) - result), Element.ALIGN_CENTER, fontBGreen), }, }; // Do the chart DefaultCategoryDataset dataSet = new DefaultCategoryDataset(); String series1 = "Keep in Estate"; String series2 = "IDIT"; String cat1 = "Estate Taxes"; String cat2 = "Total to Family"; dataSet.addValue(t, series1, cat1); dataSet.addValue(noteTax, series2, cat1); dataSet.addValue(result, series1, cat2); dataSet.addValue(balance + noteValueToFamily, series2, cat2); BarChart barChart = new BarChart(); barChart.setTitle("IDIT Comparison"); barChart.setDataSet(dataSet); Rectangle barRect = new Rectangle(prctLRight); barRect.setRight(barRect.getRight() + _1_2TH); barChart.setRect(barRect); barChart.generateBarChart(); barChart.setSeriesColor(new Color(0xff0000), new Color(0x00ff00)); barChart.setColor(0, Color.red); barChart.setColor(1, Color.green); barChart.setLablesOff(true); Image img = barChart.getBarChartImage(); drawDiagram(img, barRect, 0, 72); table.setTableData(cellData); table.drawTable(); drawLabel( "** The value(s) of the note is kept inside the taxable estate.", prctBottom, "GARA.TTF", new Color(64, 64, 64), 9, LBL_LEFT, LBL_BOTTOM); }
public void page2() { drawBorder(pageIcon, "IDIT"); drawHeader(userInfo.getClientHeading(), "Intentionally Defective Irrevocable Trust (IDIT)"); Rectangle rct = new Rectangle(prctTop); rct.setTop(rct.getTop() - (12 * _1_4TH)); rct.setBottom(rct.getBottom() - _1_4TH); rct.setLeft(rct.getLeft() - _1_4TH); if (useLLC) { if (userInfo.isSingle()) { if (userInfo.getClientGender().equalsIgnoreCase("M")) { drawDiagram("LLC-SIDIT-M.png", rct, CNTR_TB + LEFT); } else { drawDiagram("LLC-SIDIT-F.png", rct, CNTR_TB + LEFT); } } else { drawDiagram("LLC-SIDIT.png", rct, CNTR_TB + CNTR_LR); } } else { if (userInfo.isSingle()) { if (userInfo.getClientGender().equalsIgnoreCase("M")) { drawDiagram("SIDIT-M.png", rct, CNTR_TB + LEFT); } else { drawDiagram("SIDIT-F.png", rct, CNTR_TB + LEFT); } } else { drawDiagram("SIDIT.png", rct, CNTR_TB + CNTR_LR); } } double nRate = sidit.getNoteRate(); int term = sidit.getNoteTerm(); String process[]; if (useLLC) { if (userInfo.isSingle()) { process = new String[] { "1. A Limited Liability Company (LLC) is formed, with a business purpose, with a small Managing Member Interests (MMI) and a larger Member Interests (MI). Assets are transferred to the LLC with your retaining the MMI/MI shares.", "2,3. MI interests are sold to an Intentionally Defective Irrevocable Trust (IDIT) set up for the benefit of your children, grandchildren, etc. " + "The sale price is discounted (where possible) due to the lack of control, and marketability, of the MI interests you have." + "You obtain notes recievable for the discounted value, paying interest only (" + percent.format(nRate) + "/year), with a balloon payment due at the end of the term (" + Integer.toString(term) + " years).", "Note: Prior to selling assets to the IDIT in exchange for interest only notes, that trust should have assets in it that have a value of at least 10 percent of the value of the assets in the trust after the intended sale. In order to meet this requirement, you might consider gifting assets in an appropriate amount to the trust." }; } else { process = new String[] { "1. A Limited Liability Company (LLC) is formed, with a business purpose, with small Managing Member Interests (MMI) and a larger Member Interests (MI). Assets are transferred to the LLC with each of you recieving one half of the MMI/MI shares.", "2,3. MI interests are sold by each of you to an Intentionally Defective Irrevocable Trust (IDIT) set up for the benefit of your children, grandchildren, etc. " + "The sale price is discounted (where possible) due to the lack of control, and marketability, of the MI interests you each have. " + "You each obtain notes recievable for the discounted value, paying interest only (" + percent.format(nRate) + "/year), with a balloon payment due at the end of the term (" + Integer.toString(term) + " years).", "Note: Prior to selling assets to the IDIT in exchange for interest only notes, that trust should have assets in it that have a value of at least 10 percent of the value of the assets in the trust after the intended sale. In order to meet this requirement, you might consider gifting assets in an appropriate amount to the trust." }; } } else { if (userInfo.isSingle()) { process = new String[] { "1. A Family Limited Partnership (FLP) is formed, with a business purpose, with a small General Partnership (GP) interest and a larger Limited Partnership (LP) interest. Assets are transferred to the FLP, with you recieving the GP/LP shares.", "2,3. LP interests are sold by you to an Intentionally Defective Irrevocable Trust (IDIT) set up for the benefit of your children, grandchildren, etc. " + "The sale price is discounted (where possible) due to the lack of control, and marketability of the LP interests you have." + "You obtain notes recievable for the discounted value, paying interest only (" + percent.format(nRate) + "/year), with a balloon payment due at the end of the term (" + Integer.toString(term) + " years).", "Note: Prior to selling assets to the IDIT in exchange for interest only notes, that trust should have assets in it that have a value of at least 10 percent of the value of the assets in the trust after the intended sale. In order to meet this requirement, you might consider gifting assets in an appropriate amount to the trust." }; } else { process = new String[] { "1. A Family Limited Partnership (FLP) is formed, with a business purpose, with a small General Partnership (GP) interest and a larger Limited Partnership (LP) interest. Assets are transferred to the FLP. with each of you recieving one half of the GP/LP shares.", "2,3. LP interests are sold by each of you to an Intentionally Defective Irrevocable Trust (IDIT) set up for the benefit of your children, grandchildren, etc. " + "The sale price is discounted (where possible) due to lack of control, and marketability of the LP interests you each have. " + "You each obtain notes recievable for the discounted value, paying interest only (" + percent.format(nRate) + "/year), with a balloon payment due at the end of the term (" + Integer.toString(term) + " years).", "Note: Prior to selling assets to the IDIT in exchange for interest only notes, that trust should have assets in it that have a value of at least 10 percent of the value of the assets in the trust after the intended sale. In order to meet this requirement, you might consider gifting assets in an appropriate amount to the trust." }; } } rct = new Rectangle(prctLLeft); rct.setTop(rct.getTop() - Page._1_4TH); drawSection(rct, "The Process", process, 0); String benefits[]; if (useLLC) { benefits = new String[] { "The LLC is often eligible for discounts on the asset value.", "The IDIT enables the freezing of a rapidly growing value (appraisal needed).", "Future growth of the asset(s) sold is shifted to the younger generation(s) without gift or estate tax.", "The Grantor pays all income tax on the taxable income of the IDIT", "Grantor retains control over the assets with the Grantor/Seller retaining the right to choose who manages the Manager Interest of the LLC.", "Life Insurance can be obtained and premiums paid within the IDIT." }; } else { benefits = new String[] { "The FLP is often eligible for discounts on the asset value (appraisal needed).", "The IDIT enables the freezing of a rapidly growing value.", "Future growth of the asset(s) sold is shifted to the younger generation(s) without gift or estate tax.", "The Grantor pays all income tax on the taxable income of the IDIT", "Grantor retains control over the assets with the Grantor/Seller retaining the right to choose who manages the General Partnership interest of the FLP.", "Life Insurance can be obtained and premiums paid within the IDIT." }; } rct = new Rectangle(prctLRight); rct.setTop(rct.getTop() - Page._1_4TH); Rectangle r = this.drawSection(rct, "Benefits of using this technique.", benefits, 2); String effects[] = { "Assets are Irrevocably transferred to the family.", "Heirs lose the step-up in basis of the assets.", "The value of the note is subject to estate taxes." }; rct.setTop(r.getBottom()); r = drawSection(rct, "Side effects of this technique", effects, 2); }