Esempio n. 1
0
        protected void SplitViewHorizontal(object sender, System.EventArgs e)
        {
            MhoraControlContainer c_this  = (MhoraControlContainer)this.Parent;
            MhoraSplitContainer   c_grand = (MhoraSplitContainer)c_this.Parent;

            DivisionalChart       dc1   = new DivisionalChart(h);
            MhoraControlContainer c_dc1 = new MhoraControlContainer(dc1);

            DivisionalChart       dc2   = new DivisionalChart(h);
            MhoraControlContainer c_cd2 = new MhoraControlContainer(dc2);

            MhoraSplitContainer ns = new MhoraSplitContainer(c_dc1);

            ns.Control1      = c_cd2;
            ns.DrawDock      = MhoraSplitContainer.DrawStyle.UpDown;
            c_grand.Control2 = ns;
            return;

            //c_grand.Control2 = c_dc;
            //c_dc.Dock = DockStyle.Fill;
            //return;

            /*
             * MhoraSplitContainer new_split = new MhoraSplitContainer (c_this);
             * new_split.Control2 = c_this;
             * new_split.DrawDock = MhoraSplitContainer.DrawStyle.UpDown;
             * new_split.Dock = DockStyle.Fill;
             *
             * c_grand.Control2 = new_split;
             * c_grand.Show();
             */
        }
Esempio n. 2
0
        private void menuLayout2by2_Click(object sender, System.EventArgs e)
        {
            if (Contents != null)
            {
                this.Controls.Remove(Contents);
            }

            DasaControl           dc1   = new DasaControl(h, new VimsottariDasa(h));
            MhoraControlContainer c_dc1 = new MhoraControlContainer(dc1);

            BasicCalculationsControl dc2   = new BasicCalculationsControl(h);
            MhoraControlContainer    c_dc2 = new MhoraControlContainer(dc2);

            DivisionalChart       div_rasi   = new DivisionalChart(h);
            MhoraControlContainer c_div_rasi = new MhoraControlContainer(div_rasi);

            DivisionalChart div_nav = new DivisionalChart(h);

            div_nav.options.Varga = new Division(Basics.DivisionType.Navamsa);
            div_nav.SetOptions(div_nav.options);
            MhoraControlContainer c_div_nav = new MhoraControlContainer(div_nav);


            MhoraSplitContainer sp_ud = new MhoraSplitContainer(c_div_rasi);

            sp_ud.Control2 = c_div_nav;
            sp_ud.DrawDock = MhoraSplitContainer.DrawStyle.UpDown;

            MhoraSplitContainer sp_ud2 = new MhoraSplitContainer(c_dc1);

            sp_ud2.Control2 = c_dc2;
            sp_ud2.DrawDock = MhoraSplitContainer.DrawStyle.UpDown;

            MhoraSplitContainer sp_dc = new MhoraSplitContainer(sp_ud2);

            MhoraSplitContainer sp_lr = new MhoraSplitContainer(sp_ud);

            sp_lr.Control2 = sp_dc;

            int sz = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height / 2 - 50;

            sp_lr.Control1.Width   = sz;
            sp_ud.Control1.Height  = sz;
            sp_ud2.Control1.Height = sz;
            this.Controls.AddRange(new Control[] { sp_lr });
            Contents = sp_lr;
        }
Esempio n. 3
0
        public VargaRectificationForm(Horoscope _h, DivisionalChart _dc, Division _dtype)
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            if (false == MhoraGlobalOptions.Instance.VargaRectificationFormSize.IsEmpty)
            {
                this.Size = MhoraGlobalOptions.Instance.VargaRectificationFormSize;
            }

            h         = _h;
            dc        = _dc;
            mOriginal = (Moment)h.info.tob.Clone();
            cs        = new CuspTransitSearch(h);
            this.PopulateOptionsInit(_dtype);
            //this.PopulateOptions();
            this.PopulateCache();
            this.HScroll = true;
            this.VScroll = true;
            this.Invalidate();
        }
Esempio n. 4
0
        private void PrintFirstPage(PrintPageEventArgs e)
        {
            e.HasMorePages = true;
            Graphics g = e.Graphics;

            g.ResetTransform();
            g.TranslateTransform(margin_offset, header_offset);

            PrintTitle(g, 0, this.wday_offset + this.wday_width, "Date/Day");
            PrintTitle(g, this.sunrise_offset, this.sunset_offset + this.sunset_width, "Sunrise/set");
            PrintTitle(g, this.nak_name_offset, this.nak_time_offset + this.nak_time_width, "Nakshatra");
            PrintTitle(g, this.tithi_name_offset, this.tithi_time_offset + this.tithi_time_width, "Tithi");
            PrintTitle(g, this.karana_name_1_offset, this.karana_time_2_offset + this.karana_time_width, "Karana");
            PrintTitle(g, this.sm_name_offset, this.sm_time_offset + this.sm_time_width, "SM-Yoga");

            g.TranslateTransform(0, (float)(f.Height * 1.5));

            int iStart = local_index;
            int i      = local_index;

            while (i < locals.Count)
            {
                int numLines = 1;
                PanchangaLocalMoments local = (PanchangaLocalMoments)locals[i];
                Moment m_sunrise            = new Moment(local.sunrise_ut, h);
                Moment m_sunset             = new Moment(0, 0, 0, local.sunset);

                g.DrawString(m_sunrise.ToShortDateString(), f, b, day_offset, 0);
                g.DrawString(Basics.weekdayToShortString(local.wday), f, b, wday_offset, 0);

                if (opts.ShowSunriset)
                {
                    g.DrawString(m_sunrise.ToTimeString(), f, b, sunrise_offset, 0);
                    g.DrawString(m_sunset.ToTimeString(), f, b, sunset_offset, 0);
                }

                int numTithis  = local.tithi_index_end - local.tithi_index_start;
                int numNaks    = local.nakshatra_index_end - local.nakshatra_index_start;
                int numSMYogas = local.smyoga_index_end - local.smyoga_index_start;
                int numKaranas = local.karana_index_end - local.karana_index_start;

                if (opts.CalcTithiCusps)
                {
                    numLines = Math.Max(numLines, numTithis);
                    for (int j = 0; j < numTithis; j++)
                    {
                        PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.tithis_ut[local.tithi_index_start + 1 + j];
                        Tithi  t      = new Tithi((Tithi.Name)pmi.info);
                        Moment mTithi = new Moment(pmi.ut, h);
                        g.DrawString(t.ToUnqualifiedString(), f, b, tithi_name_offset, j * f.Height);
                        g.DrawString(this.utTimeToString(pmi.ut, local.sunrise_ut, local.sunrise),
                                     f, b, tithi_time_offset, j * f.Height);
                    }
                }

                if (opts.CalcKaranaCusps)
                {
                    numLines = Math.Max(numLines, (int)Math.Ceiling(numKaranas / 2.0));
                    for (int j = 0; j < numKaranas; j++)
                    {
                        PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.karanas_ut[local.karana_index_start + 1 + j];
                        Karana k           = new Karana((Karana.Name)pmi.info);
                        Moment mKarana     = new Moment(pmi.ut, h);
                        int    jRow        = (int)Math.Floor((decimal)j / 2);
                        int    name_offset = karana_name_1_offset;
                        int    time_offset = karana_time_1_offset;
                        if (j % 2 == 1)
                        {
                            name_offset = karana_name_2_offset;
                            time_offset = karana_time_2_offset;
                        }

                        g.DrawString(k.value.ToString(), f, b, name_offset, jRow * f.Height);
                        g.DrawString(this.utTimeToString(pmi.ut, local.sunrise_ut, local.sunrise),
                                     f, b, time_offset, jRow * f.Height);
                    }
                }

                if (opts.CalcNakCusps)
                {
                    numLines = Math.Max(numLines, numNaks);
                    for (int j = 0; j < numNaks; j++)
                    {
                        PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.nakshatras_ut[local.nakshatra_index_start + 1 + j];
                        Nakshatra           n   = new Nakshatra((Nakshatra.Name)pmi.info);
                        Moment mNak             = new Moment(pmi.ut, h);
                        g.DrawString(n.ToString(), f, b, nak_name_offset, j * f.Height);
                        g.DrawString(this.utTimeToString(pmi.ut, local.sunrise_ut, local.sunrise),
                                     f, b, nak_time_offset, j * f.Height);
                    }
                }

                if (opts.CalcSMYogaCusps)
                {
                    numLines = Math.Max(numLines, numSMYogas);
                    for (int j = 0; j < numSMYogas; j++)
                    {
                        PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.smyogas_ut[local.smyoga_index_start + 1 + j];
                        SunMoonYoga         sm  = new SunMoonYoga((SunMoonYoga.Name)pmi.info);
                        Moment mSMYoga          = new Moment(pmi.ut, h);
                        g.DrawString(sm.value.ToString(), f, b, sm_name_offset, j * f.Height);
                        g.DrawString(this.utTimeToString(pmi.ut, local.sunrise_ut, local.sunrise),
                                     f, b, sm_time_offset, j * f.Height);
                    }
                }


#if DND
                string s_rahu_kala = string.Format("{0} - {1}",
                                                   this.utTimeToString(local.kalas_ut[local.rahu_kala_index], local.sunrise_ut, local.sunrise),
                                                   this.utTimeToString(local.kalas_ut[local.rahu_kala_index + 1], local.sunrise_ut, local.sunrise));
                g.DrawString(s_rahu_kala, f, b, rahu_kala_offset, 0);
#endif

                g.TranslateTransform(0, f.Height * numLines);

                local_index = ++i;

                if (g.Transform.OffsetY > e.PageBounds.Height - this.header_offset - divisional_chart_size)
                {
                    goto first_done;
                }
            }

            this.bPrintPanchanga = false;
            this.local_index     = 0;

first_done:
            float offsetY = g.Transform.OffsetY;
            float offsetX = margin_offset + sm_time_offset + sm_time_width;

            Moment          mCurr  = new Moment(((PanchangaLocalMoments)locals[iStart]).sunrise_ut, h);
            HoraInfo        hiCurr = new HoraInfo(mCurr, h.info.lat, h.info.lon, h.info.tz);
            Horoscope       hCurr  = new Horoscope(hiCurr, h.options);
            DivisionalChart dc     = new DivisionalChart(hCurr);
            dc.PrintMode         = true;
            dc.options.ViewStyle = DivisionalChart.UserOptions.EViewStyle.Panchanga;
            dc.SetOptions(dc.options);
            dc.DrawChart(g, divisional_chart_size, divisional_chart_size);

            g.ResetTransform();
            // horizontal top & bottom
            g.DrawLine(p, margin_offset - 5, header_offset - 5, margin_offset + sm_time_offset + sm_time_width + 5, header_offset - 5);
            g.DrawLine(p, margin_offset - 5, header_offset - 5 + f.Height * (float)1.5, margin_offset + sm_time_offset + sm_time_width + 5, header_offset - 5 + f.Height * (float)1.5);
            g.DrawLine(p, margin_offset - 5, offsetY + 5, offsetX + 5, offsetY + 5);
            // vertical left and right
            g.DrawLine(p, margin_offset - 5, header_offset - 5, margin_offset - 5, offsetY + 5);
            g.DrawLine(p, offsetX + 5, header_offset - 5, offsetX + 5, offsetY + 5);

            g.DrawLine(p,
                       margin_offset + sunset_offset + sunset_width - 2, header_offset - 5,
                       margin_offset + sunset_offset + sunset_width - 2, offsetY + 5);

            g.DrawLine(p,
                       margin_offset + tithi_time_offset + tithi_time_width - 2, header_offset - 5,
                       margin_offset + tithi_time_offset + tithi_time_width - 2, offsetY + 5);

            g.DrawLine(p,
                       margin_offset + nak_time_offset + nak_time_width - 2, header_offset - 5,
                       margin_offset + nak_time_offset + nak_time_width - 2, offsetY + 5);

            g.DrawLine(p,
                       margin_offset + karana_time_2_offset + karana_time_width - 2, header_offset - 5,
                       margin_offset + karana_time_2_offset + karana_time_width - 2, offsetY + 5);
        }
Esempio n. 5
0
        private void menuLayout3by3_Click(object sender, System.EventArgs e)
        {
            if (Contents != null)
            {
                this.Controls.Remove(Contents);
            }

            DivisionalChart       d1   = new DivisionalChart(h);
            MhoraControlContainer c_d1 = new MhoraControlContainer(d1);

            DivisionalChart d2 = new DivisionalChart(h);

            d2.options.Varga = new Division(Basics.DivisionType.DrekkanaParasara);
            d2.SetOptions(d2.options);
            MhoraControlContainer c_d2 = new MhoraControlContainer(d2);

            DivisionalChart d3 = new DivisionalChart(h);

            d3.options.Varga = new Division(Basics.DivisionType.Navamsa);
            d3.SetOptions(d3.options);
            MhoraControlContainer c_d3 = new MhoraControlContainer(d3);

            DivisionalChart d4 = new DivisionalChart(h);

            d4.options.Varga = new Division(Basics.DivisionType.Saptamsa);
            d4.SetOptions(d4.options);
            MhoraControlContainer c_d4 = new MhoraControlContainer(d4);

            DivisionalChart d5 = new DivisionalChart(h);

            d5.options.Varga = new Division(Basics.DivisionType.Dasamsa);
            d5.SetOptions(d5.options);
            MhoraControlContainer c_d5 = new MhoraControlContainer(d5);

            DivisionalChart d6 = new DivisionalChart(h);

            d6.options.Varga = new Division(Basics.DivisionType.Vimsamsa);
            d6.SetOptions(d6.options);
            MhoraControlContainer c_d6 = new MhoraControlContainer(d6);


            MhoraSplitContainer sp_ud1 = new MhoraSplitContainer(c_d1);

            sp_ud1.Control2 = c_d2;
            sp_ud1.DrawDock = MhoraSplitContainer.DrawStyle.UpDown;

            MhoraSplitContainer sp_ud2 = new MhoraSplitContainer(c_d3);

            sp_ud2.Control2 = c_d4;
            sp_ud2.DrawDock = MhoraSplitContainer.DrawStyle.UpDown;

            MhoraSplitContainer sp_ud3 = new MhoraSplitContainer(c_d5);

            sp_ud3.Control2 = c_d6;
            sp_ud3.DrawDock = MhoraSplitContainer.DrawStyle.UpDown;



            MhoraSplitContainer lr2 = new MhoraSplitContainer(sp_ud2);

            lr2.Control2 = sp_ud3;


            MhoraSplitContainer lr1 = new MhoraSplitContainer(sp_ud1);

            lr1.Control2 = lr2;


            int h_sz = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Height / 2 - 30;
            int w_sz = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea.Width / 3 - 30;
            int sz   = Math.Min(h_sz, w_sz);

            lr1.Control1.Width     = sz;
            lr2.Control1.Width     = sz;
            sp_ud1.Control1.Height = sz;
            sp_ud2.Control1.Height = sz;
            sp_ud3.Control1.Height = sz;

            this.Controls.AddRange(new Control[] { lr1 });
            Contents = lr1;
        }
Esempio n. 6
0
        private void PrintCoverPage(PrintPageEventArgs e)
        {
            g = e.Graphics;

            left  = e.MarginBounds.Left;
            top   = e.MarginBounds.Top;
            width = e.MarginBounds.Width;



            DivisionalChart dc_rasi = new DivisionalChart(h);

            dc_rasi.PrintMode = true;

            DivisionalChart dc_nav = new DivisionalChart(h);

            dc_nav.options.Varga = new Division(Basics.DivisionType.Navamsa);
            dc_nav.PrintMode     = true;
            dc_nav.SetOptions(dc_nav.options);

            // Rasi & Navamsa charts
            g.TranslateTransform(left, top);
            dc_rasi.DrawChart(g, width / 2, width / 2);
            g.ResetTransform();
            g.TranslateTransform(left + (width / 2), top);
            dc_nav.DrawChart(g, width / 2, width / 2);
            top += (width / 2) + pad_height;

            // Birth Details
            this.PrintString(string.Format("{0} {1}. {2}. {3}, {4}.",
                                           h.wday, h.info.tob, h.info.tz, h.info.lat, h.info.lon));

            // Tithi
            Longitude ltithi = h.getPosition(Body.Name.Moon).longitude.sub(h.getPosition(Body.Name.Sun).longitude);
            double    offset = (360.0 / 30.0) - ltithi.toTithiOffset();
            Tithi     ti     = ltithi.toTithi();

            this.PrintString(String.Format("Tithi: {0} {1:N}% left", ti.value, offset / 12.0 * 100));

            // Nakshatra
            Longitude lmoon = h.getPosition(Body.Name.Moon).longitude;
            Nakshatra nmoon = lmoon.toNakshatra();

            offset = (360.0 / 27.0) - lmoon.toNakshatraOffset();
            int pada = lmoon.toNakshatraPada();

            this.PrintString(String.Format("Nakshatra: {0} {1}  {2:N}% left",
                                           nmoon.value, pada, offset / (360.0 / 27.0) * 100));

            // Yoga, Hora
            Longitude   smLon  = h.getPosition(Body.Name.Sun).longitude.add(h.getPosition(Body.Name.Moon).longitude);
            SunMoonYoga smYoga = smLon.toSunMoonYoga();

            Body.Name bHora = h.calculateHora();
            this.PrintString(string.Format("{0} Yoga, {1} Hora", smYoga.value, bHora));



            top += pad_height;

            // Calculation Details
            foreach (BodyPosition bp in h.positionList)
            {
                switch (bp.type)
                {
                case BodyType.Name.Graha:
                case BodyType.Name.Lagna:
                case BodyType.Name.SpecialLagna:
                case BodyType.Name.Upagraha:
                    this.PrintBody(bp);
                    break;
                }
            }

            top  = e.MarginBounds.Top + (width / 2) + pad_height + f.Height;
            left = e.MarginBounds.Left + (width / 2);
            // Vimsottari Dasa
            VimsottariDasa vd = new VimsottariDasa(h);

            vd.options.SeedBody = VimsottariDasa.UserOptions.StartBodyType.Moon;
            this.PrintVimDasa(vd);
        }
Esempio n. 7
0
        private void PrintVargas(PrintPageEventArgs e)
        {
            g = e.Graphics;

            left  = e.MarginBounds.Left;
            top   = e.MarginBounds.Top;
            width = e.MarginBounds.Width;

            Division        dtype = new Division(Basics.DivisionType.Rasi);
            DivisionalChart dc    = new DivisionalChart(h);

            dc.PrintMode = true;

            int dc_size = Math.Min(width / 2, e.MarginBounds.Height / 3);

            if (false == this.GetNextVarga(ref dtype))
            {
                return;
            }
            dc.options.Varga = dtype;
            dc.SetOptions(dc.options);
            g.TranslateTransform(left, top);
            dc.DrawChart(g, dc_size, dc_size);

            g.ResetTransform();
            if (false == this.GetNextVarga(ref dtype))
            {
                return;
            }
            dc.options.Varga = dtype;
            dc.SetOptions(dc.options);
            g.TranslateTransform(left + dc_size, top);
            dc.DrawChart(g, dc_size, dc_size);

            g.ResetTransform();
            if (false == this.GetNextVarga(ref dtype))
            {
                return;
            }
            dc.options.Varga = dtype;
            dc.SetOptions(dc.options);
            g.TranslateTransform(left, top + dc_size);
            dc.DrawChart(g, dc_size, dc_size);

            g.ResetTransform();
            if (false == this.GetNextVarga(ref dtype))
            {
                return;
            }
            dc.options.Varga = dtype;
            dc.SetOptions(dc.options);
            g.TranslateTransform(left + dc_size, top + dc_size);
            dc.DrawChart(g, dc_size, dc_size);

            g.ResetTransform();
            if (false == this.GetNextVarga(ref dtype))
            {
                return;
            }
            dc.options.Varga = dtype;
            dc.SetOptions(dc.options);
            g.TranslateTransform(left, top + dc_size * 2);
            dc.DrawChart(g, dc_size, dc_size);

            g.ResetTransform();
            if (false == this.GetNextVarga(ref dtype))
            {
                return;
            }
            dc.options.Varga = dtype;
            dc.SetOptions(dc.options);
            g.TranslateTransform(left + dc_size, top + dc_size * 2);
            dc.DrawChart(g, dc_size, dc_size);
        }
Esempio n. 8
0
        public void SetView(BaseUserOptions.ViewType view)
        {
            MhoraControl mc = null;;

            switch (view)
            {
            case BaseUserOptions.ViewType.DivisionalChart:
                mc = new DivisionalChart(h);
                break;

            case BaseUserOptions.ViewType.Ashtakavarga:
                mc = new AshtakavargaControl(h);
                break;

            case BaseUserOptions.ViewType.ChakraSarvatobhadra81:
                mc = new Sarvatobhadra81Control(h);
                break;

            case BaseUserOptions.ViewType.NavamsaCircle:
                mc = new NavamsaControl(h);
                break;

            case BaseUserOptions.ViewType.VaraChakra:
                mc = new VaraChakra(h);
                break;

            case BaseUserOptions.ViewType.Panchanga:
                mc = new PanchangaControl(h);
                break;

            case BaseUserOptions.ViewType.KutaMatching:
            {
                Horoscope h2 = h;
                foreach (Form f in ((MhoraContainer)MhoraGlobalOptions.mainControl).MdiChildren)
                {
                    if (f is MhoraChild)
                    {
                        MhoraChild mch = (MhoraChild)f;
                        if (h == h2 && mch.getHoroscope() != h2)
                        {
                            h2 = mch.getHoroscope();
                            break;
                        }
                    }
                }
                mc = new KutaMatchingControl(h, h);
            }
            break;

            case BaseUserOptions.ViewType.DasaVimsottari:
                mc = new DasaControl(h, new VimsottariDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaYogini:
                mc = new DasaControl(h, new YoginiDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaShodashottari:
                mc = new DasaControl(h, new ShodashottariDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaAshtottari:
                mc = new DasaControl(h, new AshtottariDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaTithiAshtottari:
                mc = new DasaControl(h, new TithiAshtottariDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaKaranaChaturashitiSama:
                mc = new DasaControl(h, new KaranaChaturashitiSamaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaYogaVimsottari:
                mc = new DasaControl(h, new YogaVimsottariDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaLagnaKendradiRasi:
                mc = new DasaControl(h, new LagnaKendradiRasiDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaKarakaKendradiGraha:
                mc = new DasaControl(h, new KarakaKendradiGrahaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaKalachakra:
                mc = new DasaControl(h, new KalachakraDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaMoola:
                mc = new DasaControl(h, new MoolaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaNavamsa:
                mc = new DasaControl(h, new NavamsaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaMandooka:
                mc = new DasaControl(h, new MandookaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaChara:
                mc = new DasaControl(h, new CharaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaTrikona:
                mc = new DasaControl(h, new TrikonaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaSu:
                mc = new DasaControl(h, new SuDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaSudarshanaChakra:
                mc = new DasaControl(h, new SudarshanaChakraDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaMudda:
            {
                DasaControl dc = new DasaControl(h, new VimsottariDasa(h));
                dc.DasaOptions.YearType    = ToDate.DateType.SolarYear;
                dc.DasaOptions.YearLength  = 360;
                dc.DasaOptions.Compression = 1;
                dc.Reset();
                mc = dc;
            }
            break;

            case BaseUserOptions.ViewType.DasaSudarshanaChakraCompressed:
            {
                DasaControl dc = new DasaControl(h, new SudarshanaChakraDasa(h));
                dc.DasaOptions.YearType    = ToDate.DateType.SolarYear;
                dc.DasaOptions.YearLength  = 360;
                dc.DasaOptions.Compression = 1;
                dc.Reset();
                mc = dc;
            }
            break;

            case BaseUserOptions.ViewType.DasaYogaPraveshVimsottariCompressedYoga:
            {
                DasaControl dc = new DasaControl(h, new YogaVimsottariDasa(h));
                dc.compressToYogaPraveshaYearYoga();
                mc = dc;
            }
            break;

            case BaseUserOptions.ViewType.DasaTithiPraveshAshtottariCompressedTithi:
            {
                DasaControl dc = new DasaControl(h, new TithiAshtottariDasa(h));
                dc.DasaOptions.YearType = ToDate.DateType.TithiYear;
                ToDate td_pravesh = new ToDate(h.baseUT, ToDate.DateType.TithiPraveshYear, 360.0, 0, h);
                ToDate td_tithi   = new ToDate(h.baseUT, ToDate.DateType.TithiYear, 360.0, 0, h);
                sweph.obtainLock(h);
                if (td_tithi.AddYears(1).toUniversalTime() + 15.0 < td_pravesh.AddYears(1).toUniversalTime())
                {
                    dc.DasaOptions.YearLength = 390;
                }
                sweph.releaseLock(h);
                dc.DasaOptions.Compression = 1;

                TithiAshtottariDasa.UserOptions tuo = (TithiAshtottariDasa.UserOptions)dc.DasaSpecificOptions;
                tuo.UseTithiRemainder  = true;
                dc.DasaSpecificOptions = tuo;

                dc.Reset();
                mc = dc;
            }
            break;

            case BaseUserOptions.ViewType.DasaTithiPraveshAshtottariCompressedFixed:
            {
                DasaControl dc         = new DasaControl(h, new TithiAshtottariDasa(h));
                ToDate      td_pravesh = new ToDate(h.baseUT, ToDate.DateType.TithiPraveshYear, 360.0, 0, h);
                sweph.obtainLock(h);
                dc.DasaOptions.YearType   = ToDate.DateType.FixedYear;
                dc.DasaOptions.YearLength = td_pravesh.AddYears(1).toUniversalTime() -
                                            td_pravesh.AddYears(0).toUniversalTime();
                sweph.releaseLock(h);

                TithiAshtottariDasa.UserOptions tuo = (TithiAshtottariDasa.UserOptions)dc.DasaSpecificOptions;
                tuo.UseTithiRemainder      = true;
                dc.DasaSpecificOptions     = tuo;
                dc.DasaOptions.Compression = 1;

                dc.Reset();
                mc = dc;
            }
            break;

            case BaseUserOptions.ViewType.DasaTithiPraveshAshtottariCompressedSolar:
            {
                DasaControl dc         = new DasaControl(h, new TithiAshtottariDasa(h));
                ToDate      td_pravesh = new ToDate(h.baseUT, ToDate.DateType.TithiPraveshYear, 360.0, 0, h);
                sweph.obtainLock(h);
                double       ut_start = td_pravesh.AddYears(0).toUniversalTime();
                double       ut_end   = td_pravesh.AddYears(1).toUniversalTime();
                BodyPosition sp_start = Basics.CalculateSingleBodyPosition(
                    ut_start, sweph.BodyNameToSweph(Body.Name.Sun), Body.Name.Sun, BodyType.Name.Graha, this.h);
                BodyPosition sp_end = Basics.CalculateSingleBodyPosition(
                    ut_end, sweph.BodyNameToSweph(Body.Name.Sun), Body.Name.Sun, BodyType.Name.Graha, this.h);
                Longitude lDiff = sp_end.longitude.sub(sp_start.longitude);
                double    diff  = lDiff.value;
                if (diff < 120.0)
                {
                    diff += 360.0;
                }

                dc.DasaOptions.YearType   = ToDate.DateType.SolarYear;
                dc.DasaOptions.YearLength = diff;
                sweph.releaseLock(h);

                TithiAshtottariDasa.UserOptions tuo = (TithiAshtottariDasa.UserOptions)dc.DasaSpecificOptions;
                tuo.UseTithiRemainder  = true;
                dc.DasaSpecificOptions = tuo;


                //dc.DasaOptions.YearType = ToDate.DateType.FixedYear;
                //dc.DasaOptions.YearLength = td_pravesh.AddYears(1).toUniversalTime() -
                //	td_pravesh.AddYears(0).toUniversalTime();
                dc.DasaOptions.Compression = 1;

                dc.Reset();
                mc = dc;
            }
            break;

            case BaseUserOptions.ViewType.DasaDwadashottari:
                mc = new DasaControl(h, new DwadashottariDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaPanchottari:
                mc = new DasaControl(h, new PanchottariDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaShatabdika:
                mc = new DasaControl(h, new ShatabdikaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaChaturashitiSama:
                mc = new DasaControl(h, new ChaturashitiSamaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaDwisaptatiSama:
                mc = new DasaControl(h, new DwisaptatiSamaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaShatTrimshaSama:
                mc = new DasaControl(h, new ShatTrimshaSamaDasa(h));
                break;

            case BaseUserOptions.ViewType.BasicCalculations:
                mc = new BasicCalculationsControl(h);
                break;

            case BaseUserOptions.ViewType.KeyInfo:
                mc = new KeyInfoControl(h);
                break;

            case BaseUserOptions.ViewType.Balas:
                mc = new BalasControl(h);
                break;

            case BaseUserOptions.ViewType.TransitSearch:
                mc = new TransitSearch(h);
                break;

            case BaseUserOptions.ViewType.NaisargikaRasiDasa:
                mc = new DasaControl(h, new NaisargikaRasiDasa(h));
                break;

            case BaseUserOptions.ViewType.NaisargikaGrahaDasa:
                mc = new DasaControl(h, new NaisargikaGrahaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaNarayana:
                mc = new DasaControl(h, new NarayanaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaNarayanaSama:
                mc = new DasaControl(h, new NarayanaSamaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaShoola:
                mc = new DasaControl(h, new ShoolaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaNiryaanaShoola:
                mc = new DasaControl(h, new NirayaanaShoolaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaDrig:
                mc = new DasaControl(h, new DrigDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaTajaka:
                mc = new DasaControl(h, new TajakaDasa(h));
                break;

            case BaseUserOptions.ViewType.DasaTithiPravesh:
            {
                DasaControl dc = new DasaControl(h, new TithiPraveshDasa(h));
                dc.DasaOptions.YearType = ToDate.DateType.TithiPraveshYear;
                dc.LinkToHoroscope      = false;
                dc.Reset();
                mc = dc;
            }
            break;

            case BaseUserOptions.ViewType.DasaYogaPravesh:
            {
                DasaControl dc = new DasaControl(h, new YogaPraveshDasa(h));
                dc.DasaOptions.YearType = ToDate.DateType.YogaPraveshYear;
                dc.LinkToHoroscope      = false;
                dc.Reset();
                mc = dc;
            }
            break;

            case BaseUserOptions.ViewType.DasaNakshatraPravesh:
            {
                DasaControl dc = new DasaControl(h, new NakshatraPraveshDasa(h));
                dc.DasaOptions.YearType = ToDate.DateType.NakshatraPraveshYear;
                dc.LinkToHoroscope      = false;
                dc.Reset();
                mc = dc;
            }
            break;

            case BaseUserOptions.ViewType.DasaKaranaPravesh:
            {
                DasaControl dc = new DasaControl(h, new KaranaPraveshDasa(h));
                dc.DasaOptions.YearType = ToDate.DateType.KaranaPraveshYear;
                dc.LinkToHoroscope      = false;
                dc.Reset();
                mc = dc;
            }
            break;

            case BaseUserOptions.ViewType.DasaTattwa:
                mc = new DasaControl(h, new TattwaDasa(h));
                break;

            default:
                Debug.Assert(false, "Unknown View Internal error");
                break;
            }
            mc.Dock = DockStyle.Fill;
            if (null != this.Control)
            {
                this.Control.Dispose();
            }
            this.Control = mc;

            return;
        }