Esempio n. 1
0
        public FastPlate(string plateTitle, int?dfWidth, Rule rule, Hashtable blocks) : this(plateTitle, dfWidth, rule)
        {
            if (blocks == null)
            {
                return;
            }

            var c = 0.0D;

            foreach (var i in blocks.Keys)
            {
                var blkNm = i?.ToString();
                if (blkNm == null)
                {
                    continue;
                }
                var blk = new Block {
                    Ruler = Ruler, Title = blkNm
                };
                c += 1.0D;
                c  = Math.Floor(c);
                Blocks.Add(blk);
                _blockIdxName.Add(c, blkNm);

                var innerBlks = blocks[i] as IEnumerable;
                if (innerBlks == null)
                {
                    continue;
                }
                foreach (var j in innerBlks)
                {
                    var iBlkNm = j?.ToString();
                    if (iBlkNm == null)
                    {
                        continue;
                    }
                    var iBlk = new Block
                    {
                        Ruler      = Ruler,
                        Title      = iBlkNm,
                        StartValue = Ruler.StartValue + Ruler.RuleLineSpacing
                    };
                    blk.AddInnerBlock(iBlk);
                    c += 0.1D;
                    c  = (double)Math.Round((decimal)c, 1);
                    _blockIdxName.Add(c, iBlkNm);
                }
            }
            _lineCounter = Ruler.RuleLineSpacing + 1;
        }
Esempio n. 2
0
        public void PrintPlateWithInnerPlatesTest()
        {
            var ruler = new Rule {StartValue = 950, EndValue = 775};
            var egypt = new Block {Ruler = ruler, Title = "Egypt"};
            var israel = new Block {Ruler = ruler, Title = "Israel"};
            var damascus = new Block {Ruler = ruler, Title = "Damascus"};
            var assyria = new Block {Ruler = ruler, Title = "Assyria"};

            var northKingdom = new Block {StartValue = 922, EndValue = 775, Ruler = ruler, Title = "Israel"};
            var southKingdom = new Block {StartValue = 922, EndValue = 775, Ruler = ruler, Title = "Judea"};

            egypt.AddEntry(new Entry {StartValue = 935, Text = "XXII Dyn. 935-725",Location = PrintLocation.Left});
            egypt.AddEntry(new Entry { StartValue = 935, EndValue = 914, Text = "Shishak 935-914",Location = PrintLocation.Right});
            egypt.AddEntry(new Entry {StartValue = 914, EndValue = 874, Text = "Osorkon I 914-874"});

            israel.AddEntry(new Entry {StartValue = 940,Text="Solomon 961-922"});

            southKingdom.AddEntry(new Entry {StartValue = 922, Text = "Rehoboam 922-915"});
            southKingdom.AddEntry(new Entry {StartValue = 915, Text = "Abijah 915-913"});

            northKingdom.AddEntry(new Entry {StartValue = 922, Text = "Jeroboam I 922-901"});

            israel.AddInnerBlock(southKingdom);
            israel.AddInnerBlock(northKingdom);

            damascus.AddEntry(new Entry {StartValue = 930, Text = "Rezon"});

            assyria.AddEntry(new Entry {StartValue = 935, Text = "Asshur-dan II 935-913"});

            var testSubject = new Plate() {Name = "Near East", Ruler = ruler};
            testSubject.AddBlock(egypt);
            testSubject.AddBlock(israel);
            testSubject.AddBlock(damascus);
            testSubject.AddBlock(assyria);

            var testResult = testSubject.ToString();

            System.Diagnostics.Debug.WriteLine(testResult);
        }
Esempio n. 3
0
        public void PrintEntriesToCanvasWithInnerBlockTest()
        {
            var rule = new Rule() { StartValue = 2100, EndValue = 1500 };
            var mesopotamia = new Block() { Ruler = rule, Title = "Mesopotamia" };
            mesopotamia.AddEntry(new Entry() { StartValue = 2060, EndValue = 1950, Text = "Ur III" });

            var assyria = new Block() { Ruler = rule, Title = "Assyria", StartValue = 1950 };
            assyria.AddEntry(new Entry() { StartValue = 1900, Text = "Cappadocian Colonies" });
            assyria.AddEntry(new Entry() { StartValue = 1750, Text = "Shamshi-Adad I" });

            var mari = new Block() { Ruler = rule, Title = "Mari", StartValue = 1950, EndValue = 1700, Width = 16 };
            mari.AddEntry(new Entry() { StartValue = 1750, Text = "The 'Mari Age'" });

            var isin = new Block() { Ruler = rule, Title = "Isin", StartValue = 1950, EndValue = 1750, Width = 8 };

            var larsa = new Block() { Ruler = rule, Title = "Larsa", StartValue = 1950, EndValue = 1700, Width = 16 };
            larsa.AddEntry(new Entry() { StartValue = 1758, Text = "Rim-Sin I" });

            var babylon = new Block() { Ruler = rule, Title = "Babylon", StartValue = 1830, EndValue = 1550, Width = 20 };
            babylon.AddEntry(new Entry() { StartValue = 1700, Text = "Hammurabi" });
            babylon.AddEntry(new Entry() { StartValue = 1630, Text = "Kassite Dyn." });

            mesopotamia.AddInnerBlock(assyria);
            mesopotamia.AddInnerBlock(mari);
            mesopotamia.AddInnerBlock(isin);
            mesopotamia.AddInnerBlock(larsa);
            mesopotamia.AddInnerBlock(babylon);

            TextCanvas myInnerBlockCanvas = null;

            if (mesopotamia._innerBlocks.Count > 0)
            {
                myInnerBlockCanvas = mesopotamia._innerBlocks[0].PrintEntriesOnCanvas();
                System.Diagnostics.Debug.WriteLine(myInnerBlockCanvas);
                for (var i = 1; i < mesopotamia._innerBlocks.Count; i++)
                {
                    System.Diagnostics.Debug.WriteLine(myInnerBlockCanvas);
                    myInnerBlockCanvas = myInnerBlockCanvas.Concat(mesopotamia._innerBlocks[i].PrintEntriesOnCanvas(), rule);
                }
            }
            System.Diagnostics.Debug.WriteLine(myInnerBlockCanvas);
        }
Esempio n. 4
0
        public void PlateSplitBlockTest()
        {
            var rule = new Rule() {StartValue = 2050, EndValue = 1500};
            var mesopotamia = new Block() {Ruler = rule, Title = "Mesopotamia"};
            mesopotamia.AddEntry(new Entry(){StartValue = 2060, EndValue = 1950, Text = "Ur III: ca. 2060-1950"});
            var assyria =  new Block(){Ruler = rule, StartValue = 1950, EndValue = 1550, Title = "Assyria"};
            var babylon = new Block {Ruler = rule, StartValue = 1830, EndValue = 1530, Title = "I Babylon"};
            var kassite = new Block {Ruler = rule, StartValue = 1650, EndValue = 1500, Title = "Kassite Dyn."};
            mesopotamia.AddInnerBlock(assyria);
            mesopotamia.AddInnerBlock(babylon);
            mesopotamia.AddInnerBlock(kassite);

            mesopotamia.AddArrow(new Arrow(babylon,assyria) {StartValue = 1728,Text = "Hammurabi"});

            var hittites = new Block {Ruler = rule, Title = "Hittites"};
            var palestine = new Block() {Ruler = rule, Title = "Palestine"};
            var egypt = new Block() {Ruler = rule, Title = "Egypt"};

            var plate = new Plate() {Name = "Near East 2050-1500", Ruler = rule};
            plate.AddBlock(mesopotamia);
            plate.AddBlock(hittites);
            plate.AddBlock(palestine);
            plate.AddBlock(egypt);

            var testResult = plate.ToString();

            System.Diagnostics.Debug.WriteLine(testResult);
        }
Esempio n. 5
0
        public void PlateConcatAllBlocksTest()
        {
            var ruler = new Rule { StartValue = 950, EndValue = 775 };
            var egypt = new Block { Ruler = ruler, Title = "Egypt" };
            var israel = new Block { Ruler = ruler, Title = "Israel" };
            var damascus = new Block { Ruler = ruler, Title = "Damascus" };
            var assyria = new Block { Ruler = ruler, Title = "Assyria" };

            var northKingdom = new Block { StartValue = 922, EndValue = 775, Ruler = ruler, Title = "Israel" };
            var southKingdom = new Block { StartValue = 922, EndValue = 775, Ruler = ruler, Title = "Judea" };

            egypt.AddEntry(new Entry { StartValue = 935, Text = "XXII Dyn. 935-725", Location = PrintLocation.Left });
            egypt.AddEntry(new Entry { StartValue = 935, EndValue = 914, Text = "Shishak 935-914", Location = PrintLocation.Right });
            egypt.AddEntry(new Entry { StartValue = 914, EndValue = 874, Text = "Osorkon I 914-874" });

            israel.AddEntry(new Entry { StartValue = 940, Text = "Solomon 961-922" });

            southKingdom.AddEntry(new Entry { StartValue = 922, Text = "Rehoboam 922-915" });
            southKingdom.AddEntry(new Entry { StartValue = 915, Text = "Abijah 915-913" });

            northKingdom.AddEntry(new Entry { StartValue = 922, Text = "Jeroboam I 922-901" });

            israel.AddInnerBlock(southKingdom);
            israel.AddInnerBlock(northKingdom);

            damascus.AddEntry(new Entry { StartValue = 930, Text = "Rezon" });

            assyria.AddEntry(new Entry { StartValue = 935, Text = "Asshur-dan II 935-913" });

            var testSubject = new Plate() { Name = "Near East", Ruler = ruler };
            testSubject.AddBlock(egypt);
            testSubject.AddBlock(israel);
            testSubject.AddBlock(damascus);
            testSubject.AddBlock(assyria);

            var testResult = testSubject.ToTextCanvas();

            Assert.IsNotNull(testResult);
            Assert.AreNotEqual(0, testResult.Items);

            foreach (var item in testResult.Items)
            {
                var itemText = new string(item.Text.ToArray());

                foreach (var span in item.Ranges)
                {
                    var subText = itemText.Substring(span.StartIndex, span.Length);
                    System.Diagnostics.Debug.WriteLine("{0} {1} {2} {3} {4} '{5}'",item.Index, item.HashMarkValue,span.Id,span.StartIndex,span.Length, subText);
                }
            }
        }
Esempio n. 6
0
        public Plate CE1700to1788()
        {
            var rule = new Rule {StartValue = 1700, EndValue = 1790, RuleLineSpacing = 7};
            var amer = new Block {Ruler = rule, Title = "Americas"};

            var col = new Block {StartValue = 1703, EndValue = 1783, Title = "Colonies", Ruler = rule};
            col.AddEntry(1771, "Boston Massacre(1770)", PrintLocation.Left);
            col.AddEntry(1703, "Yale College (1700)");
            col.AddEntry(1727, "[Bering] Bering straight(1728)");
            col.AddEntry(1739, "Stono Rebellion(1739)");
            col.AddEntry(1730, "Baltimore MA(1730)");
            col.AddEntry(1764, "Mason Dixon survey(1764)");
            col.AddEntry(1769, "[D.Boone]-Kentucky(1769)");
            col.AddEntry(1773, "Boston Tea Party(1773)");

            col.AddEntry(1704, 1713, "Queen Anne's War");
            col.AddEntry(1754, 1763, "French Indian War");
            col.AddEntry(1775, 1783, "American Rev.(1775-1783)", PrintLocation.Left);
            col.AddEntry(1777, "NY occupied(1776)");
            col.AddEntry(1778, "Savannah occupied(1778)");
            col.AddEntry(1780, "Charleston occupied(1780)");

            var que = new Block {StartValue = 1703, EndValue = 1763, Title = "New France", Ruler = rule, Width = 22};
            que.AddEntry(1703, "Fr.settle Mobile AL");
            que.AddEntry(1718, "New Orleans LA(1718)");

            var usa = new Block {StartValue = 1775, Title = "United States", Ruler = rule};
            usa.AddEntry(1776, "Lafayette in PA(1777)");
            usa.AddEntry(1781, "Cornwallis surrender(1781)");
            usa.AddEntry(1783, "Peace of Paris(1783)");
            usa.AddEntry(1787, "U.S.Constitution(1787)");
            amer.AddInnerBlock(col);
            amer.AddInnerBlock(usa);
            amer.AddInnerBlock(que);
            amer.AddArrow(new Arrow(que, col) {StartValue = 1706, ArrowTail = "."});
            amer.AddArrow(new Arrow(col, que) {StartValue = 1755, Text = "B. of the Monongahela"});
            amer.AddArrow(new Arrow(que, col) {StartValue = 1757, Text = "massacre @ F.William Henry"});

            var engd = new Block {Ruler = rule, Title = "United Kingdom"};
            engd.AddEntry(1704, "[Anne 1702-1714]", PrintLocation.Left);
            engd.AddEntry(1720, "[George I 1714-1727]", PrintLocation.Left);
            engd.AddEntry(1727, "[George II 1727-1760]", PrintLocation.Left);
            engd.AddEntry(1730, "first railroad(1730)");
            engd.AddEntry(1739, "Wesley/Whitefield[Methodism]");
            engd.AddEntry(1745, "Jacobite Rebellion(1745)");
            engd.AddEntry(1760, "[George III 1760-1820]", PrintLocation.Left);
            engd.AddEntry(1766, "H.Cavendish[hydrogen](1766)", PrintLocation.Right);
            engd.AddEntry(1776, "'Wealth of Nations' A.Smith(1776)", PrintLocation.Right);
            engd.AddEntry(1777, " 'Rise & Fall..Roman Empire'Gibbon(1777)", PrintLocation.Right);
            engd.AddEntry(1781, "1st Sunday-school(R.Raikes)(1781)", PrintLocation.Right);
            engd.AddEntry(1769, "J.Watt[steam engine](1769)", PrintLocation.Right);
            engd.AddEntry(1764, "J.Hargreaves[spinning jenny](1764)", PrintLocation.Right);
            engd.AddEntry(1782, "Lord North resigns as PM(1782)");
            engd.AddEntry(1787, "Australia penal settlement(1788)");
            engd.AddEntry(1789, "[Cook]Hawaiian Islands(1788)");
            engd.AddEntry(1702, 1714, "Stuart(restored)", PrintLocation.Left);
            engd.AddEntry(1715, 1800, "Hanover", PrintLocation.Left);

            var fr = new Block {Ruler = rule, Title = "France"};
            fr.AddEntry(1601, "[Louis XIV 1643-1715]", PrintLocation.Left);
            fr.AddEntry(1715, "[Louis XV 1715-1774]", PrintLocation.Left);
            fr.AddEntry(1774, "[Louis XVI 1774-1792]", PrintLocation.Left);
            fr.AddEntry(1720, "France bankrupt(1721)");
            fr.AddEntry(1748, "'The Spirit of Laws' Montesquieu(1748)", PrintLocation.Right);
            fr.AddEntry(1761, "'Social Contract' Rousseau(1761)", PrintLocation.Right);
            fr.AddEntry(1756, "Diplomatic Revolution(1756)(c.)");
            fr.AddEntry(1783, "1st hot-air ballon(1783)", PrintLocation.Right);
            fr.AddEntry(1702, 1790, "Capetian[Bourbon]", PrintLocation.Left);
            fr.AddEntry(1701, 1714, "War of Spanish Succ.(1701-1714)");

            var de = new Block {Ruler = rule, Title = "Prussia"};
            de.AddEntry(1702, "[Fredrick I 1701-1713]", PrintLocation.Left);
            de.AddEntry(1713, "[Fredrick William I 1713-1740]", PrintLocation.Left);
            de.AddEntry(1740, "[Fredrick the Great 1740-1786]", PrintLocation.Left);
            de.AddEntry(1786, "[Fredrick William II 1786-1797]", PrintLocation.Left);
            de.AddEntry(1781, "'Critique of Pure Reason' E.Kant(1781)", PrintLocation.Right);
            de.AddEntry(1715, "Fahrenheit[thermometer](1714)");
            de.AddEntry(1730, "'Toccata Fugue' Bach(~1730s)");
            de.AddEntry(1754, 1763, "Seven's Year War");

            var aus = new Block {Ruler = rule, Title = "Austrian Empire"};
            aus.AddEntry(1701, "[Leopold I 1640-1705]", PrintLocation.Left);
            aus.AddEntry(1705, "[Joseph I 1705-1711]", PrintLocation.Left);
            aus.AddEntry(1711, "[Charles III 1711-1740]", PrintLocation.Left);
            aus.AddEntry(1739, "[Maria Theresa 1740-1780]", PrintLocation.Left);
            aus.AddEntry(1780, "[Joseph II 1780-1790]", PrintLocation.Left);
            aus.AddEntry(1783, "Mozart in Vienna", PrintLocation.Right);
            aus.AddEntry(1741, 1748, "War of Austrian Succ.(1740-1748)");

            var ott = new Block {Ruler = rule, Title = "Ottoman Empire"};
            ott.AddEntry(1710, "[Ahmed III 1703-1730]", PrintLocation.Left);
            ott.AddEntry(1730, "[Mahmud I 1730-1754]", PrintLocation.Left);
            ott.AddEntry(1754, "[Osman III 1754-1757]", PrintLocation.Left);
            ott.AddEntry(1757, "[Mustafa III 1757-1774]", PrintLocation.Left);
            ott.AddEntry(1774, "[Abdulhamid I 1774-1789]", PrintLocation.Left);
            ott.AddEntry(1789, "[Selim III 1789-1807]", PrintLocation.Left);

            var rus = new Block {Ruler = rule, Title = "Imperial Russia", StartValue = 1721};
            rus.AddEntry(1725, "[Peter the Great 1695-1725]");
            rus.AddEntry(1727, 1760, "[internal intrigue]");
            rus.AddEntry(1762, "[Catherine theGreat 1762-1796]");
            rus.AddEntry(1783, "(+)Crimea(1783)");
            rus.AddEntry(1768, 1774, "1st Russio-Turkish War", PrintLocation.Right);

            var plate = new Plate {Ruler = rule, Name = "Early Modern Age(2)"};
            plate.AddBlock(amer);
            plate.AddBlock(engd);
            plate.AddBlock(fr);
            plate.AddBlock(de);
            plate.AddBlock(aus);
            plate.AddBlock(ott);
            plate.AddBlock(rus);

            plate.AddArrow(new Arrow(aus, fr) {StartValue = 1704, Text = "B. of Blenheim(1704)"});
            plate.AddArrow(new Arrow(fr, de) {StartValue = 1706, Text = "B. of Ramilies(1706)"});
            plate.AddArrow(new Arrow(fr, de) {StartValue = 1708, Text = "B. of Oudenarde(1708)"});
            plate.AddArrow(new Arrow(engd, fr) {StartValue = 1709, Text = "B. of Malpaquet(1709)"});
            plate.AddArrow(new Arrow(aus, ott) {StartValue = 1717, Text = "B. of Belgrad(1717)"});
            plate.AddArrow(new Arrow(de, aus) {StartValue = 1740, Text = "invasion of Silesia(1740)"});
            plate.AddArrow(new Arrow(engd, fr) {StartValue = 1743, Text = "B. of Dettingen(1743)(e.)"});
            plate.AddArrow(new Arrow(de, aus) {StartValue = 1757, Text = "B. of Prague(1757)"});
            plate.AddArrow(new Arrow(rus, ott) {StartValue = 1770, Text = "B.of Chesma & Kagus(1770)"});

            plate.AddArrow(new Arrow(engd, aus)
            {
                StartValue = 1714,
                Text = "Peace of Ulrecht(1714)(a.)",
                ArrowTail = "[..........",
                FromLeftToRightArrowHead = "......]",
            });
            plate.AddArrow(new Arrow(aus, de)
            {
                StartValue = 1748,
                Text = "Treaty of Aix-la-Chapelle(1748)",
                ArrowTail = "........]",
                FromRightToLeftArrowHead = "[.....",
            });

            plate.AddArrow(new Arrow(engd, fr)
            {
                StartValue = 1763,
                Text = "Treaty of Paris(1763)(b.)",
                ArrowTail = "[..........",
                FromLeftToRightArrowHead = "......]",
            });

            plate.AddArrow(new Arrow(de, aus)
            {
                StartValue = 1788,
                Text = "War of Bavarian Succ.(1778\\79)",
                ArrowTail = "[.........",
                FromLeftToRightArrowHead = "]",
            });

            plate.AddArrow(new Arrow(engd, amer)
            {
                StartValue = 1771,
                Text = "B. of the Alamance(1771)",
                FromRightToLeftArrowHead = "<..............................."
            });
            plate.AddArrow(new Arrow(engd, amer)
            {
                StartValue = 1775,
                Text = "B. of Lexington(1775)",
                FromRightToLeftArrowHead = "<........................",
                ArrowTail = "."
            });
            plate.AddArrow(new Arrow(engd, amer)
            {
                StartValue = 1777,
                Text = "B. at Trenton(1777)",
                FromRightToLeftArrowHead = "<........................",
                ArrowTail = "."
            });

            plate.Notes.Add("(a.)marks the end of Wars of Spanish Succession");
            plate.Notes.Add("(b.)British supremacy in Canada and India");
            plate.Notes.Add("(c.)England allies with Prussia - Austria with France.");
            plate.Notes.Add("(d.)start of Wars of Austrian Succ.");
            plate.Notes.Add("(e.)fought on German soil");

            return plate;
        }
Esempio n. 7
0
        public Plate CE1700to1788()
        {
            var rule = new Rule {
                StartValue = 1700, EndValue = 1790, RuleLineSpacing = 7
            };
            var amer = new Block {
                Ruler = rule, Title = "Americas"
            };

            var col = new Block {
                StartValue = 1703, EndValue = 1783, Title = "Colonies", Ruler = rule
            };

            col.AddEntry(1771, "Boston Massacre(1770)", PrintLocation.Left);
            col.AddEntry(1703, "Yale College (1700)");
            col.AddEntry(new ExplorerEntry("Bering", "Bering straight", 1728)
            {
                StartValue = 1727
            });
            col.AddEntry(1739, "Stono Rebellion(1739)");
            col.AddEntry(1730, "Baltimore MA(1730)");
            col.AddEntry(1764, "Mason Dixon survey(1764)");
            col.AddEntry(new ExplorerEntry("D.Boone", "Kentucky", 1769));
            col.AddEntry(1773, "Boston Tea Party(1773)");

            col.AddEntry(1704, 1713, "Queen Anne's War");
            col.AddEntry(1754, 1763, "French Indian War");
            col.AddEntry(1775, 1783, "American Rev.(1775-1783)", PrintLocation.Left);
            col.AddEntry(1777, "NY occupied(1776)");
            col.AddEntry(1778, "Savannah occupied(1778)");
            col.AddEntry(1780, "Charleston occupied(1780)");

            var que = new Block {
                StartValue = 1703, EndValue = 1763, Title = "New France", Ruler = rule, Width = 22
            };

            que.AddEntry(1703, "Fr.settle Mobile AL");
            que.AddEntry(1718, "New Orleans LA(1718)");

            var usa = new Block {
                StartValue = 1775, Title = "United States", Ruler = rule
            };

            usa.AddEntry(1776, "Lafayette in PA(1777)");
            usa.AddEntry(1781, "Cornwallis surrender(1781)");
            usa.AddEntry(1783, "Peace of Paris(1783)");
            usa.AddEntry(new LiteraryWorkEntry("U.S.Constitution", "", 1789)
            {
                StartValue = 1787
            });

            var engd = new Block {
                Ruler = rule, Title = "United Kingdom"
            };

            engd.AddEntry(new LeaderEntry("Anne", new int?[, ] {
                { 1702, 1714 }
            })
            {
                StartValue = 1704
            });
            engd.AddEntry(new LeaderEntry("George I", new int?[, ] {
                { 1714, 1727 }
            })
            {
                StartValue = 1720
            });
            engd.AddEntry(new LeaderEntry("George II", new int?[, ] {
                { 1727, 1760 }
            }));
            engd.AddEntry(new ScienceAdvEntry("railroad", "", 1730));
            engd.AddEntry(1739, "Wesley/Whitefield[Methodism]");
            engd.AddEntry(1745, "Jacobite Rebellion(1745)");
            engd.AddEntry(new LeaderEntry("George III", new int?[, ] {
                { 1760, 1820 }
            }));
            engd.AddEntry(new ScienceAdvEntry("hydrogen", "H.Cavendish", 1766));
            engd.AddEntry(new LiteraryWorkEntry("Wealth of Nations", "A.Smith", 1776)
            {
                Location = PrintLocation.Right
            });
            engd.AddEntry(new LiteraryWorkEntry("Rise & Fall..Roman Empire", "Gibbon", 1777)
            {
                Location = PrintLocation.Right
            });
            engd.AddEntry(1781, "1st Sunday-school(R.Raikes)(1781)", PrintLocation.Right);
            engd.AddEntry(new ScienceAdvEntry("steam engine", "J.Watt", 1769));
            engd.AddEntry(new ScienceAdvEntry("spinning jenny", "J.Hargreaves", 1764)
            {
                Location = PrintLocation.Right
            });
            engd.AddEntry(1782, "Lord North resigns as PM(1782)");
            engd.AddEntry(1787, "Australia penal settlement(1788)");
            engd.AddEntry(new ExplorerEntry("Cook", "Hawaiian Islands", 1788)
            {
                StartValue = 1789
            });
            engd.AddEntry(1702, 1714, "Stuart(restored)", PrintLocation.Left);
            engd.AddEntry(1715, 1800, "Hanover", PrintLocation.Left);

            var fr = new Block {
                Ruler = rule, Title = "France"
            };

            fr.AddEntry(new LeaderEntry("Louis XIV", new int?[, ] {
                { null, 1715 }
            })
            {
                StartValue = 1704
            });
            fr.AddEntry(new LeaderEntry("Louis XV", new int?[, ] {
                { 1715, 1774 }
            })
            {
                StartValue = 1715
            });
            fr.AddEntry(new LeaderEntry("Louis XVI", new int?[, ] {
                { 1774, 1792 }
            })
            {
                StartValue = 1774
            });
            fr.AddEntry(1720, "France bankrupt(1721)");
            fr.AddEntry(new LiteraryWorkEntry("The Spirit of Laws", "Montesquieu", 1748)
            {
                Location = PrintLocation.Right
            });
            fr.AddEntry(new LiteraryWorkEntry("Social Contract", "Rousseau", 1761)
            {
                Location = PrintLocation.Right
            });
            fr.AddEntry(1756, "Diplomatic Revolution(1756)(c.)");
            fr.AddEntry(new ScienceAdvEntry("hot-air ballon", "", 1783)
            {
                Location = PrintLocation.Right
            });
            fr.AddEntry(1702, 1790, "Capetian[Bourbon]", PrintLocation.Left);
            fr.AddEntry(1701, 1714, "War of Spanish Succ.(1701-1714)");

            var de = new Block {
                Ruler = rule, Title = "Prussia"
            };

            de.AddEntry(new LeaderEntry("Fredrick I", new int?[, ] {
                { 1701, 1713 }
            })
            {
                StartValue = 1702
            });
            de.AddEntry(new LeaderEntry("Fredrick William I", new int?[, ] {
                { 1713, 1740 }
            }));
            de.AddEntry(new LeaderEntry("Fredrick the Great", new int?[, ] {
                { 1740, 1786 }
            }));
            de.AddEntry(new LeaderEntry("Fredrick William II", new int?[, ] {
                { 1786, 1797 }
            }));
            de.AddEntry(new LiteraryWorkEntry("Critique Pure Reason", "E.Kant", 1781));
            de.AddEntry(new ScienceAdvEntry("thermometer", "Fahrenheit", 1714)
            {
                StartValue = 1715
            });
            de.AddEntry(1730, "'Toccata Fugue' Bach(~1730s)");
            de.AddEntry(1754, 1763, "Seven's Year War");

            var aus = new Block {
                Ruler = rule, Title = "Austrian Empire"
            };

            aus.AddEntry(new LeaderEntry("Leopold I", new int?[, ] {
                { 1640, 1705 }
            })
            {
                StartValue = 1701
            });
            aus.AddEntry(new LeaderEntry("Joseph I", new int?[, ] {
                { 1705, 1711 }
            }));
            aus.AddEntry(new LeaderEntry("Charles III", new int?[, ] {
                { 1711, 1740 }
            }));
            aus.AddEntry(new LeaderEntry("Maria Theresa", new int?[, ] {
                { 1740, 1780 }
            })
            {
                StartValue = 1739
            });
            aus.AddEntry(new LeaderEntry("Joseph II", new int?[, ] {
                { 1780, 1790 }
            }));
            aus.AddEntry(1783, "Mozart in Vienna", PrintLocation.Right);
            aus.AddEntry(1741, 1748, "War of Austrian Succ.(1740-1748)");

            var ott = new Block {
                Ruler = rule, Title = "Ottoman Empire"
            };

            ott.AddEntry(new LeaderEntry("Ahmed III", new int?[, ] {
                { 1703, 1730 }
            })
            {
                StartValue = 1710
            });
            ott.AddEntry(new LeaderEntry("Mahmud I", new int?[, ] {
                { 1730, 1754 }
            }));
            ott.AddEntry(new LeaderEntry("Osman III", new int?[, ] {
                { 1754, 1757 }
            }));
            ott.AddEntry(new LeaderEntry("Mustafa III", new int?[, ] {
                { 1757, 1774 }
            }));
            ott.AddEntry(new LeaderEntry("Abdulhamid I", new int?[, ] {
                { 1774, 1789 }
            }));
            ott.AddEntry(new LeaderEntry("Selim III", new int?[, ] {
                { 1789, 1807 }
            }));

            var rus = new Block {
                Ruler = rule, Title = "Imperial Russia", StartValue = 1721
            };

            rus.AddEntry(new LeaderEntry("Peter the Great", new int?[, ] {
                { 1695, 1725 }
            })
            {
                StartValue = 1725
            });
            rus.AddEntry(1727, 1760, "[internal intrigue]");
            rus.AddEntry(new LeaderEntry("[Catherine the Great", new int?[, ] {
                { 1762, 1796 }
            }));
            rus.AddEntry(new TerritoryEntry("Crimea")
            {
                StartValue = 1783
            });
            rus.AddEntry(1768, 1774, "1st Russio-Turkish War", PrintLocation.Right);

            amer.AddInnerBlock(col);
            amer.AddInnerBlock(usa);
            amer.AddInnerBlock(que);

            amer.AddArrow(new Arrow(que, col)
            {
                StartValue = 1706, ArrowTail = ".."
            });
            amer.AddArrow(new Arrow(col, que)
            {
                StartValue = 1755, Text = "B. of the Monongahela", ArrowTail = ".."
            });
            amer.AddArrow(new Arrow(que, col)
            {
                StartValue = 1757, Text = "massacre @ F.William Henry", ArrowTail = ".."
            });

            var plate = new Plate {
                Ruler = rule, Name = "Early Modern Age"
            };

            plate.AddBlock(amer);
            plate.AddBlock(engd);
            plate.AddBlock(fr);
            plate.AddBlock(de);
            plate.AddBlock(aus);
            plate.AddBlock(ott);
            plate.AddBlock(rus);
            plate.FileName = "16_CE1700_1788";

            plate.AddArrow(new Arrow(aus, fr)
            {
                StartValue = 1704, Text = "B. of Blenheim(1704)"
            });
            plate.AddArrow(new Arrow(fr, de)
            {
                StartValue = 1706, Text = "B. of Ramilies(1706)"
            });
            plate.AddArrow(new Arrow(fr, de)
            {
                StartValue = 1708, Text = "B. of Oudenarde(1708)"
            });
            plate.AddArrow(new Arrow(engd, fr)
            {
                StartValue = 1709, Text = "B. of Malpaquet(1709)"
            });
            plate.AddArrow(new Arrow(aus, ott)
            {
                StartValue = 1717, Text = "B. of Belgrad(1717)"
            });
            plate.AddArrow(new Arrow(de, aus)
            {
                StartValue = 1740, Text = "invasion of Silesia(1740)"
            });
            plate.AddArrow(new Arrow(engd, fr)
            {
                StartValue = 1743, Text = "B. of Dettingen(1743)(e.)"
            });
            plate.AddArrow(new Arrow(de, aus)
            {
                StartValue = 1757, Text = "B. of Prague(1757)"
            });
            plate.AddArrow(new Arrow(rus, ott)
            {
                StartValue = 1770, Text = "B.of Chesma & Kagus(1770)"
            });

            plate.AddArrow(new Arrow(engd, aus)
            {
                StartValue = 1714,
                Text       = "Peace of Ulrecht(1714)(a.)",
                ArrowTail  = "[..",
                FromLeftToRightArrowHead = "..]",
            });
            plate.AddArrow(new Arrow(aus, de)
            {
                StartValue = 1748,
                Text       = "Treaty of Aix-la-Chapelle(1748)",
                ArrowTail  = "..]",
                FromRightToLeftArrowHead = "[..",
            });

            plate.AddArrow(new Arrow(engd, fr)
            {
                StartValue = 1763,
                Text       = "Treaty of Paris(1763)(b.)",
                ArrowTail  = "[..",
                FromLeftToRightArrowHead = "..]",
            });

            plate.AddArrow(new Arrow(de, aus)
            {
                StartValue = 1788,
                Text       = "War of Bavarian Succ.(1778\\79)",
                ArrowTail  = "[..",
                FromLeftToRightArrowHead = "..]",
            });

            plate.AddArrow(new Arrow(engd, usa)
            {
                StartValue = 1771,
                Text       = "B. of the Alamance(1771)"
            });
            plate.AddArrow(new Arrow(engd, usa)
            {
                StartValue = 1775,
                Text       = "B. of Lexington(1775)",
            });
            plate.AddArrow(new Arrow(engd, usa)
            {
                StartValue = 1777,
                Text       = "B. at Trenton(1777)",
            });

            plate.Notes.Add("(a.)marks the end of Wars of Spanish Succession");
            plate.Notes.Add("(b.)British supremacy in Canada and India");
            plate.Notes.Add("(c.)England allies with Prussia - Austria with France.");
            plate.Notes.Add("(d.)start of Wars of Austrian Succ.");
            plate.Notes.Add("(e.)fought on German soil");


            return(plate);
        }