Esempio n. 1
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. 2
0
        void Repopulate()
        {
            string[] weekdays = new string[]
            {
                "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"
            };

            mList.Items.Clear();

            ListViewItem li;

            li = new ListViewItem("Date of Birth");
            li.SubItems.Add(h.info.tob.ToString());
            mList.Items.Add(li);

            li = new ListViewItem("Time Zone");
            li.SubItems.Add(h.info.tz.ToString());
            mList.Items.Add(li);

            li = new ListViewItem("Latitude");
            li.SubItems.Add(h.info.lat.ToString());
            mList.Items.Add(li);

            li = new ListViewItem("Longitude");
            li.SubItems.Add(h.info.lon.ToString());
            mList.Items.Add(li);

            li = new ListViewItem("Altitude");
            li.SubItems.Add(h.info.alt.ToString());
            mList.Items.Add(li);

            {
                HMSInfo hms_srise = new HMSInfo(h.sunrise);
                li = new ListViewItem("Sunrise");
                string fmt = String.Format("{0:00}:{1:00}:{2:00}",
                                           hms_srise.degree, hms_srise.minute, hms_srise.second);
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                HMSInfo hms_sset = new HMSInfo(h.sunset);
                li = new ListViewItem("Sunset");
                string fmt = String.Format("{0:00}:{1:00}:{2:00}",
                                           hms_sset.degree, hms_sset.minute, hms_sset.second);
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                li = new ListViewItem("Weekday");
                string fmt = String.Format("{0}", h.wday);
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                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();
                Body.Name tiLord = ti.getLord();
                li = new ListViewItem("Tithi");
                string fmt = String.Format("{0} ({1}) {2:N}% left", ti.ToString(), tiLord, offset / 12.0 * 100);
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                Longitude lmoon     = h.getPosition(Body.Name.Moon).longitude;
                Nakshatra nmoon     = lmoon.toNakshatra();
                Body.Name nmoonLord = VimsottariDasa.LordOfNakshatra(nmoon);
                double    offset    = (360.0 / 27.0) - lmoon.toNakshatraOffset();
                int       pada      = lmoon.toNakshatraPada();
                string    fmt       = String.Format("{0} {1} ({2}) {3:N}% left",
                                                    nmoon.value, pada, nmoonLord, offset / (360.0 / 27.0) * 100);
                li = new ListViewItem("Nakshatra");
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                li = new ListViewItem("Karana");
                Longitude lkarana = h.getPosition(Body.Name.Moon).longitude.sub(h.getPosition(Body.Name.Sun).longitude);
                double    koffset = (360.0 / 60.0) - lkarana.toKaranaOffset();
                Karana    k       = lkarana.toKarana();
                Body.Name kLord   = k.getLord();
                string    fmt     = string.Format("{0} ({1}) {2:N}% left", k.value, kLord, koffset / 6.0 * 100);
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                li = new ListViewItem("Yoga");
                Longitude   smLon  = h.getPosition(Body.Name.Sun).longitude.add(h.getPosition(Body.Name.Moon).longitude);
                double      offset = (360.0 / 27.0) - smLon.toSunMoonYogaOffset();
                SunMoonYoga smYoga = smLon.toSunMoonYoga();
                Body.Name   smLord = smYoga.getLord();
                string      fmt    = string.Format("{0} ({1}) {2:N}% left", smYoga, smLord, offset / (360.0 / 27.0) * 100);
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                li = new ListViewItem("Hora");
                Body.Name b   = h.calculateHora();
                string    fmt = String.Format("{0}", b);
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                li = new ListViewItem("Kala");
                Body.Name b   = h.calculateKala();
                string    fmt = String.Format("{0}", b);
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                li = new ListViewItem("Muhurta");
                int            mIndex = (int)(Math.Floor((h.hoursAfterSunrise() / h.lengthOfDay()) * 30.0) + 1);
                Basics.Muhurta m      = (Basics.Muhurta)mIndex;
                string         fmt    = String.Format("{0} ({1})", m, Basics.NakLordOfMuhurta(m));
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                double ghatisSr = h.hoursAfterSunrise() * 2.5;
                double ghatisSs = h.hoursAfterSunRiseSet() * 2.5;
                li = new ListViewItem("Ghatis");
                string fmt = String.Format("{0:0.0000} / {1:0.0000}", ghatisSr, ghatisSs);
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                int vgOff = (int)Math.Ceiling(h.hoursAfterSunRiseSet() * 150.0);
                vgOff = vgOff % 9;
                if (vgOff == 0)
                {
                    vgOff = 9;
                }
                Body.Name b = (Body.Name)((int)Body.Name.Sun + vgOff - 1);
                li = new ListViewItem("Vighatika Graha");
                string fmt = String.Format("{0}", b);
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
            }
            {
                li = new ListViewItem("LMT Offset");
                double e      = h.lmt_offset;
                double orig_e = e;
                e  = e < 0 ? -e : e;
                e *= 24.0;
                int hour = (int)Math.Floor(e);
                e = (e - Math.Floor(e)) * 60.0;
                int min = (int)Math.Floor(e);
                e = (e - Math.Floor(e)) * 60.0;
                string prefix = "";
                if (orig_e < 0)
                {
                    prefix = "-";
                }
                string fmt = String.Format("{0}{1:00}:{2:00}:{3:00.00}",
                                           prefix, hour, min, e);
                string fmt2 = String.Format(" ({0:00.00} minutes)", h.lmt_offset * 24.0 * 60.0);
                li.SubItems.Add(fmt + fmt2);
                mList.Items.Add(li);
            }
            {
                sweph.obtainLock(h);
                li = new ListViewItem("Ayanamsa");
                double aya      = sweph.swe_get_ayanamsa_ut(h.baseUT);
                int    aya_hour = (int)Math.Floor(aya);
                aya = (aya - Math.Floor(aya)) * 60.0;
                int aya_min = (int)Math.Floor(aya);
                aya = (aya - Math.Floor(aya)) * 60.0;
                string fmt = String.Format("{0:00}-{1:00}-{2:00.00}", aya_hour, aya_min, aya);
                li.SubItems.Add(fmt);
                mList.Items.Add(li);
                sweph.releaseLock(h);
            }
            {
                li = new ListViewItem("Universal Time");
                li.SubItems.Add(h.baseUT.ToString());
                mList.Items.Add(li);
            }


            this.ColorAndFontRows(mList);
        }
Esempio n. 3
0
        private void ComputeEntry(double ut, double[] geopos)
        {
            int    year = 0, month = 0, day = 0;
            double sunset = 0, hour = 0;

            sweph.obtainLock(h);
            h.populateSunrisetCacheHelper(ut - 0.5, ref sunrise, ref sunset, ref ut_sr);
            sweph.releaseLock(h);

            sweph.swe_revjul(ut_sr, ref year, ref month, ref day, ref hour);
            Moment    moment_sr = new Moment(year, month, day, hour);
            Moment    moment_ut = new Moment(ut, h);
            HoraInfo  infoCurr  = new HoraInfo(moment_ut, h.info.lat, h.info.lon, h.info.tz);
            Horoscope hCurr     = new Horoscope(infoCurr, h.options);

            ListViewItem li = null;

            PanchangaLocalMoments local = new PanchangaLocalMoments();

            local.sunrise    = hCurr.sunrise;
            local.sunset     = sunset;
            local.sunrise_ut = ut_sr;
            sweph.swe_revjul(ut, ref year, ref month, ref day, ref hour);
            local.wday = (Basics.Weekday)sweph.swe_day_of_week(ut);



            local.kalas_ut = hCurr.getKalaCuspsUt();
            if (this.opts.CalcSpecialKalas)
            {
                Body.Name bStart = Basics.weekdayRuler(hCurr.wday);
                if (hCurr.options.KalaType == HoroscopeOptions.EHoraType.Lmt)
                {
                    bStart = Basics.weekdayRuler(hCurr.lmt_wday);
                }

                local.rahu_kala_index   = this.rahu_kalas[(int)bStart];
                local.gulika_kala_index = this.gulika_kalas[(int)bStart];
                local.yama_kala_index   = this.yama_kalas[(int)bStart];
            }

            if (opts.CalcLagnaCusps)
            {
                li = new ListViewItem();
                sweph.obtainLock(h);
                BodyPosition     bp_lagna_sr = Basics.CalculateSingleBodyPosition(ut_sr, sweph.BodyNameToSweph(Body.Name.Lagna), Body.Name.Lagna, BodyType.Name.Lagna, h);
                DivisionPosition dp_lagna_sr = bp_lagna_sr.toDivisionPosition(new Division(Basics.DivisionType.Rasi));
                local.lagna_zh = dp_lagna_sr.zodiac_house.value;

                Longitude bp_lagna_base = new Longitude(bp_lagna_sr.longitude.toZodiacHouseBase());
                double    ut_transit    = ut_sr;
                for (int i = 1; i <= 12; i++)
                {
                    Retrogression r = new Retrogression(h, Body.Name.Lagna);
                    ut_transit = r.GetLagnaTransitForward(ut_transit, bp_lagna_base.add(i * 30.0));

                    PanchangaMomentInfo pmi = new PanchangaMomentInfo(
                        ut_transit, (int)bp_lagna_sr.longitude.toZodiacHouse().add(i + 1).value);
                    local.lagnas_ut.Add(pmi);
                }

                sweph.releaseLock(h);
            }

            if (opts.CalcTithiCusps)
            {
                Transit t = new Transit(h);
                sweph.obtainLock(h);
                Tithi tithi_start = t.LongitudeOfTithi(ut_sr).toTithi();
                Tithi tithi_end   = t.LongitudeOfTithi(ut_sr + 1.0).toTithi();

                Tithi tithi_curr = tithi_start.add(1);
                local.tithi_index_start = globals.tithis_ut.Count - 1;
                local.tithi_index_end   = globals.tithis_ut.Count - 1;

                while (tithi_start.value != tithi_end.value &&
                       tithi_curr.value != tithi_end.value)
                {
                    tithi_curr = tithi_curr.add(2);
                    double dLonToFind = ((double)(int)tithi_curr.value - 1) * (360.0 / 30.0);
                    double ut_found   = t.LinearSearchBinary(ut_sr, ut_sr + 1.0, new Longitude(dLonToFind),
                                                             new ReturnLon(t.LongitudeOfTithiDir));

                    globals.tithis_ut.Add(new PanchangaMomentInfo(ut_found, (int)tithi_curr.value));
                    local.tithi_index_end++;
                }
                sweph.releaseLock(h);
            }


            if (opts.CalcKaranaCusps)
            {
                Transit t = new Transit(h);
                sweph.obtainLock(h);
                Karana karana_start = t.LongitudeOfTithi(ut_sr).toKarana();
                Karana karana_end   = t.LongitudeOfTithi(ut_sr + 1.0).toKarana();

                Karana karana_curr = karana_start.add(1);
                local.karana_index_start = globals.karanas_ut.Count - 1;
                local.karana_index_end   = globals.karanas_ut.Count - 1;

                while (karana_start.value != karana_end.value &&
                       karana_curr.value != karana_end.value)
                {
                    karana_curr = karana_curr.add(2);
                    double dLonToFind = ((double)(int)karana_curr.value - 1) * (360.0 / 60.0);
                    double ut_found   = t.LinearSearchBinary(ut_sr, ut_sr + 1.0, new Longitude(dLonToFind),
                                                             new ReturnLon(t.LongitudeOfTithiDir));

                    globals.karanas_ut.Add(new PanchangaMomentInfo(ut_found, (int)karana_curr.value));
                    local.karana_index_end++;
                }
                sweph.releaseLock(h);
            }

            if (opts.CalcSMYogaCusps)
            {
                Transit t = new Transit(h);
                sweph.obtainLock(h);
                SunMoonYoga sm_start = t.LongitudeOfSunMoonYoga(ut_sr).toSunMoonYoga();
                SunMoonYoga sm_end   = t.LongitudeOfSunMoonYoga(ut_sr + 1.0).toSunMoonYoga();

                SunMoonYoga sm_curr = sm_start.add(1);
                local.smyoga_index_start = globals.smyogas_ut.Count - 1;
                local.smyoga_index_end   = globals.smyogas_ut.Count - 1;

                while (sm_start.value != sm_end.value &&
                       sm_curr.value != sm_end.value)
                {
                    sm_curr = sm_curr.add(2);
                    double dLonToFind = ((double)(int)sm_curr.value - 1) * (360.0 / 27);
                    double ut_found   = t.LinearSearchBinary(ut_sr, ut_sr + 1.0, new Longitude(dLonToFind),
                                                             new ReturnLon(t.LongitudeOfSunMoonYogaDir));

                    globals.smyogas_ut.Add(new PanchangaMomentInfo(ut_found, (int)sm_curr.value));
                    local.smyoga_index_end++;
                }

                sweph.releaseLock(h);
            }


            if (opts.CalcNakCusps)
            {
                bool    bDiscard = true;
                Transit t        = new Transit(h, Body.Name.Moon);
                sweph.obtainLock(h);
                Nakshatra nak_start = t.GenericLongitude(ut_sr, ref bDiscard).toNakshatra();
                Nakshatra nak_end   = t.GenericLongitude(ut_sr + 1.0, ref bDiscard).toNakshatra();

                local.nakshatra_index_start = globals.nakshatras_ut.Count - 1;
                local.nakshatra_index_end   = globals.nakshatras_ut.Count - 1;

                Nakshatra nak_curr = nak_start.add(1);

                while (nak_start.value != nak_end.value &&
                       nak_curr.value != nak_end.value)
                {
                    nak_curr = nak_curr.add(2);
                    double dLonToFind = ((double)((int)nak_curr.value - 1)) * (360.0 / 27.0);
                    double ut_found   = t.LinearSearchBinary(ut_sr, ut_sr + 1.0, new Longitude(dLonToFind),
                                                             new ReturnLon(t.GenericLongitude));

                    globals.nakshatras_ut.Add(new PanchangaMomentInfo(ut_found, (int)nak_curr.value));
                    Console.WriteLine("Found nakshatra {0}", nak_curr.value);
                    local.nakshatra_index_end++;
                }
                sweph.releaseLock(h);
            }

            if (opts.CalcHoraCusps)
            {
                local.horas_ut = hCurr.getHoraCuspsUt();
                hCurr.calculateHora(ut_sr + 1.0 / 24.0, ref local.hora_base);
            }

            if (opts.CalcKalaCusps)
            {
                hCurr.calculateKala(ref local.kala_base);
            }


            this.locals.Add(local);
            this.DisplayEntry(local);
        }
Esempio n. 4
0
        private void DisplayEntry(PanchangaLocalMoments local)
        {
            string s;
            int    day = 0, month = 0, year = 0;
            double time = 0;

            sweph.swe_revjul(local.sunrise_ut, ref year, ref month, ref day, ref time);
            Moment m = new Moment(year, month, day, time);

            this.mList.Items.Add(string.Format("{0}, {1}", local.wday, m.ToDateString()));

            if (this.opts.ShowSunriset)
            {
                s = string.Format("Sunrise at {0}. Sunset at {1}",
                                  this.timeToString(local.sunrise),
                                  this.timeToString(local.sunset));
                this.mList.Items.Add(s);
            }

            if (this.opts.CalcSpecialKalas)
            {
                string s_rahu = string.Format("Rahu Kala from {0} to {1}",
                                              new Moment(local.kalas_ut[local.rahu_kala_index], h).ToTimeString(),
                                              new Moment(local.kalas_ut[local.rahu_kala_index + 1], h).ToTimeString());
                string s_gulika = string.Format("Gulika Kala from {0} to {1}",
                                                new Moment(local.kalas_ut[local.gulika_kala_index], h).ToTimeString(),
                                                new Moment(local.kalas_ut[local.gulika_kala_index + 1], h).ToTimeString());
                string s_yama = string.Format("Yama Kala from {0} to {1}",
                                              new Moment(local.kalas_ut[local.yama_kala_index], h).ToTimeString(),
                                              new Moment(local.kalas_ut[local.yama_kala_index + 1], h).ToTimeString());

                if (opts.OneEntryPerLine)
                {
                    this.mList.Items.Add(s_rahu);
                    this.mList.Items.Add(s_gulika);
                    this.mList.Items.Add(s_yama);
                }
                else
                {
                    this.mList.Items.Add(string.Format("{0}. {1}. {2}.", s_rahu, s_gulika, s_yama));
                }
            }

            if (this.opts.CalcTithiCusps)
            {
                string s_tithi = "";

                if (local.tithi_index_start == local.tithi_index_end &&
                    local.tithi_index_start >= 0)
                {
                    PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.tithis_ut[local.tithi_index_start];
                    Tithi t = new Tithi((Tithi.Name)pmi.info);
                    this.mList.Items.Add(string.Format("{0} - full.", t.value));
                }
                else
                {
                    for (int i = local.tithi_index_start + 1; i <= local.tithi_index_end; i++)
                    {
                        if (i < 0)
                        {
                            continue;
                        }
                        PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.tithis_ut[i];
                        Tithi t = new Tithi((Tithi.Name)pmi.info).addReverse(2);
                        s_tithi += string.Format("{0} until {1}",
                                                 t.value,
                                                 this.utTimeToString(pmi.ut, local.sunrise_ut, local.sunrise));

                        if (this.opts.OneEntryPerLine)
                        {
                            this.mList.Items.Add(s_tithi);
                            s_tithi = "";
                        }
                        else
                        {
                            s_tithi += ". ";
                        }
                    }
                    if (false == opts.OneEntryPerLine)
                    {
                        this.mList.Items.Add(s_tithi);
                    }
                }
            }


            if (this.opts.CalcKaranaCusps)
            {
                string s_karana = "";

                if (local.karana_index_start == local.karana_index_end &&
                    local.karana_index_start >= 0)
                {
                    PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.karanas_ut[local.karana_index_start];
                    Karana k = new Karana((Karana.Name)pmi.info);
                    this.mList.Items.Add(string.Format("{0} karana - full.", k.value));
                }
                else
                {
                    for (int i = local.karana_index_start + 1; i <= local.karana_index_end; i++)
                    {
                        if (i < 0)
                        {
                            continue;
                        }
                        PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.karanas_ut[i];
                        Karana k = new Karana((Karana.Name)pmi.info).addReverse(2);
                        s_karana += string.Format("{0} karana until {1}",
                                                  k.value,
                                                  this.utTimeToString(pmi.ut, local.sunrise_ut, local.sunrise));

                        if (this.opts.OneEntryPerLine)
                        {
                            this.mList.Items.Add(s_karana);
                            s_karana = "";
                        }
                        else
                        {
                            s_karana += ". ";
                        }
                    }
                    if (false == opts.OneEntryPerLine)
                    {
                        this.mList.Items.Add(s_karana);
                    }
                }
            }



            if (this.opts.CalcSMYogaCusps)
            {
                string s_smyoga = "";

                if (local.smyoga_index_start == local.smyoga_index_end &&
                    local.smyoga_index_start >= 0)
                {
                    PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.smyogas_ut[local.smyoga_index_start];
                    SunMoonYoga         sm  = new SunMoonYoga((SunMoonYoga.Name)pmi.info);
                    this.mList.Items.Add(string.Format("{0} yoga - full.", sm.value));
                }
                else
                {
                    for (int i = local.smyoga_index_start + 1; i <= local.smyoga_index_end; i++)
                    {
                        if (i < 0)
                        {
                            continue;
                        }
                        PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.smyogas_ut[i];
                        SunMoonYoga         sm  = new SunMoonYoga((SunMoonYoga.Name)pmi.info).addReverse(2);
                        s_smyoga += string.Format("{0} yoga until {1}",
                                                  sm.value,
                                                  this.utTimeToString(pmi.ut, local.sunrise_ut, local.sunrise));

                        if (this.opts.OneEntryPerLine)
                        {
                            this.mList.Items.Add(s_smyoga);
                            s_smyoga = "";
                        }
                        else
                        {
                            s_smyoga += ". ";
                        }
                    }
                    if (false == opts.OneEntryPerLine)
                    {
                        this.mList.Items.Add(s_smyoga);
                    }
                }
            }



            if (this.opts.CalcNakCusps)
            {
                string s_nak = "";

                if (local.nakshatra_index_start == local.nakshatra_index_end &&
                    local.nakshatra_index_start >= 0)
                {
                    PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.nakshatras_ut[local.nakshatra_index_start];
                    Nakshatra           n   = new Nakshatra((Nakshatra.Name)pmi.info);
                    this.mList.Items.Add(string.Format("{0} - full.", n.value));
                }
                else
                {
                    for (int i = local.nakshatra_index_start + 1; i <= local.nakshatra_index_end; i++)
                    {
                        if (i < 0)
                        {
                            continue;
                        }
                        PanchangaMomentInfo pmi = (PanchangaMomentInfo)globals.nakshatras_ut[i];
                        Nakshatra           n   = new Nakshatra((Nakshatra.Name)pmi.info).addReverse(2);
                        s_nak += string.Format("{0} until {1}",
                                               n.value,
                                               this.utTimeToString(pmi.ut, local.sunrise_ut, local.sunrise));
                        if (this.opts.OneEntryPerLine)
                        {
                            this.mList.Items.Add(s_nak);
                            s_nak = "";
                        }
                        else
                        {
                            s_nak += ". ";
                        }
                    }
                    if (false == opts.OneEntryPerLine)
                    {
                        this.mList.Items.Add(s_nak);
                    }
                }
            }

            if (this.opts.CalcLagnaCusps)
            {
                string      sLagna = "    ";
                ZodiacHouse zBase  = new ZodiacHouse(local.lagna_zh);
                for (int i = 0; i < 12; i++)
                {
                    PanchangaMomentInfo pmi   = (PanchangaMomentInfo)local.lagnas_ut[i];
                    ZodiacHouse         zCurr = new ZodiacHouse((ZodiacHouse.Name)pmi.info);
                    zCurr  = zCurr.add(12);
                    sLagna = string.Format("{0}{1} Lagna until {2}. ", sLagna, zCurr.value,
                                           this.utTimeToString(pmi.ut, local.sunrise_ut, local.sunrise));
                    if (opts.OneEntryPerLine || i % 4 == 3)
                    {
                        this.mList.Items.Add(sLagna);
                        sLagna = "";
                    }
                }
            }

            if (this.opts.CalcHoraCusps)
            {
                string sHora = "    ";
                for (int i = 0; i < 24; i++)
                {
                    int       ib    = (int)Basics.normalize_exc_lower(0, 7, local.hora_base + i);
                    Body.Name bHora = h.horaOrder[ib];
                    sHora = string.Format("{0}{1} hora until {2}. ", sHora, bHora,
                                          this.utTimeToString(local.horas_ut[i + 1], local.sunrise_ut, local.sunrise));
                    if (opts.OneEntryPerLine || i % 4 == 3)
                    {
                        this.mList.Items.Add(sHora);
                        sHora = "";
                    }
                }
            }

            if (this.opts.CalcKalaCusps)
            {
                string sKala = "    ";
                for (int i = 0; i < 16; i++)
                {
                    int       ib    = (int)Basics.normalize_exc_lower(0, 8, local.kala_base + i);
                    Body.Name bKala = h.kalaOrder[ib];
                    sKala = string.Format("{0}{1} kala until {2}. ", sKala, bKala,
                                          this.utTimeToString(local.kalas_ut[i + 1], local.sunrise_ut, local.sunrise));
                    if (opts.OneEntryPerLine || i % 4 == 3)
                    {
                        this.mList.Items.Add(sKala);
                        sKala = "";
                    }
                }
            }

            this.mList.Items.Add("");
        }
Esempio n. 5
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);
        }