示例#1
0
        private void buttonOK_Click(object sender, EventArgs e)
        {
            if (Controller != null)
            {
                GregorianDateTime dt = StartDate;
                if (dt != null)
                {
                    InputStartDate = StartDate;
                    InputEndDate   = EndDate;
                    if (OnPeriodSelected != null)
                    {
                        OnPeriodSelected(this, e);
                    }
                }
                else
                {
                    StartDatePanel d = new StartDatePanel();
                    d.CustomTitle      = "Enter Start Date";
                    d.EarthLocation    = this.EarthLocation;
                    d.GregorianTime    = InputStartDate;
                    d.OnStartDateDone += new TBButtonPressed(d_OnStartDateDone);
                    StartDatePanelController dc = new StartDatePanelController(d);
                    dc.ShowInContainer(Controller.ViewContainer, GVControlAlign.Center);
                }
            }

            Controller.RemoveFromContainer();
        }
        private void eventMapOverlayView1_OnClick(object o, EventmapOverlayEventArgs e)
        {
            GregorianDateTime dt = new GregorianDateTime(SelectedDate);

            dt.PreviousDay();
            dt.PreviousDay();

            GCLocation loc = new GCLocation();
            TTimeZone  tz  = new TTimeZone();

            loc.Latitude  = 0;
            loc.Longitude = 0;
            loc.TimeZone  = tz;

            TResultCalendar cal = new TResultCalendar();

            cal.EkadasiOnly = true;

            VAISNAVADAY vd = GetCalcDay(dt, loc, cal, e.Longitude, e.Latitude);

            string str = string.Format("{0}, sunrise: {1}, longitude: {2}, latitude: {3}"
                                       , vd.date.ToString(), vd.astrodata.sunRise.ToLongTimeString()
                                       , e.Longitude, e.Latitude);

            labelStatus.Text = str;
        }
        public override GSCore ExecuteMessage(string token, GSCoreCollection args)
        {
            switch (token)
            {
            case "getEndDone":
            {
                GSCore gtObj = args.getSafe(0);
                if (gtObj != null && gtObj is GregorianDateTime)
                {
                    GregorianDateTime gdt = gtObj as GregorianDateTime;
                    if (gdt.GetJulianInteger() < getView().calStartDate.GetJulianInteger() + 7)
                    {
                        gdt = new GregorianDateTime(getView().calStartDate);
                        gdt.AddDays(7);
                    }
                    getView().calEndDate = gdt;
                    //getView().EndDateText(gdt.ToString());
                    getView().Recalculate();
                }
            }
            break;

            case "getCurrentContent":
                return(getView().getCurrentContent());

            default:
                return(base.ExecuteMessage(token, args));
            }

            return(GSCore.Void);
        }
        private void FunctionCalcBoundariesSync(Quadrant map, GregorianDateTime date)
        {
            GCLog.Write("Ekadasi Boundaries Calculation START");
            RootArray           = null;
            CalculationFinished = false;

            GregorianDateTime dt = new GregorianDateTime(date);

            dt.PreviousDay();
            dt.PreviousDay();

            GCLocation loc = new GCLocation();
            TTimeZone  tz  = new TTimeZone();

            loc.Latitude  = 0;
            loc.Longitude = 0;
            loc.TimeZone  = tz;

            TResultCalendar cal = new TResultCalendar();

            cal.EkadasiOnly = true;

            List <Quadrant> quandrantList = new List <Quadrant>();

            quandrantList.Add(map);
            QuadrantArray qa;

            map = null;
            int count = 0, maxCount = 2000;

            while (quandrantList.Count > 0)
            {
                map = quandrantList[0];
                quandrantList.RemoveAt(0);
                if (stopRequested)
                {
                    break;
                }
                map.Details = CalculateQuadrantArray(map, dt, loc, cal, quandrantList);
                if (RootArray == null)
                {
                    RootArray = map.Details;
                }

                // for testing
                count++;
                if (count >= maxCount)
                {
                    break;
                }
            }

            CalculationFinished = true;

            GCLog.Write("Ekadasi Boundaries Calculation END");

            StopMethodDelegate stopMethod = new StopMethodDelegate(PerformeStop);

            this.Invoke(stopMethod);
        }
        public DlgCalcEkadasiBoundaries(GregorianDateTime sd)
        {
            InitializeComponent();

            eventMapOverlayView1.DataSource = this;

            SelectedDate = sd;
        }
示例#6
0
 private void UpdateGaurabdaValues(GregorianDateTime value)
 {
     if (EarthLocation != null)
     {
         GaurabdaDate va;
         GCCalendar.VCTIMEtoVATIME(value, out va, EarthLocation);
         SetGaurabdaValues(va);
     }
 }
示例#7
0
 private void onDateRangeClickDone(object sender, EventArgs e)
 {
     if (sender is GregorianDateTime)
     {
         GregorianDateTime gdt = sender as GregorianDateTime;
         selectedDate = gdt;
         StartDateText(gdt.ToString());
         Recalculate();
     }
 }
示例#8
0
 private void d_OnPeriodSelected(object sender, EventArgs e)
 {
     if (sender is EnterPeriodPanel)
     {
         EnterPeriodPanel d = sender as EnterPeriodPanel;
         calStartDate = d.InputStartDate;
         calEndDate   = d.InputEndDate;
         Recalculate();
     }
 }
示例#9
0
        public TodayTab()
        {
            InitializeComponent();
            richTextBox1.Dock = DockStyle.Fill;
            pictureBox1.Dock  = DockStyle.Fill;

            selectedDate = new GregorianDateTime();
            LocationText(GCGlobal.myLocation.Title);
            StartDateText(selectedDate.ToString());
            SetMode(Properties.Settings.Default.TodayShowMode);
        }
示例#10
0
        private GregorianDateTime GetGregorianValues()
        {
            GregorianDateTime vc = new GregorianDateTime();

            vc.day   = cbDay.SelectedIndex + 1;
            vc.month = cbMonth.SelectedIndex + 1;
            int.TryParse(tbYear.Text, out vc.year);
            vc.InitWeekDay();
            vc.TimezoneHours = 0.0;
            return(vc);
        }
示例#11
0
        private void ekadasiMapToolStripMenuItem_Click(object sender, EventArgs e)
        {
            int               step        = 0;
            VAISNAVADAY       dayEkadasi  = null;
            GregorianDateTime dateEkadasi = null;
            GCMap             selectedMap = null;

            while (step >= 0)
            {
                switch (step)
                {
                case 0:     // select ekadasi
                    DlgGetEkadasiName dlg = new DlgGetEkadasiName();
                    if (dlg.ShowDialog() == DialogResult.OK)
                    {
                        dayEkadasi  = dlg.SelectedDate;
                        dateEkadasi = dlg.SelectedDate.date;
                        step        = 1;
                    }
                    else
                    {
                        step = -1;
                    }
                    break;

                case 1:     // select location map
                    DlgSelectMap maps = new DlgSelectMap();
                    if (maps.ShowDialog() == DialogResult.OK)
                    {
                        step        = 2;
                        selectedMap = maps.SelectedMap;
                        if (selectedMap == null)
                        {
                            step = -1;
                        }
                    }
                    else
                    {
                        step = -1;
                    }
                    break;

                case 2:     // calculate Ekadasi map
                    DlgCalcEkadasiBoundaries d2 = new DlgCalcEkadasiBoundaries(dayEkadasi.date);
                    d2.SelectedDate        = dateEkadasi;
                    d2.SelectedVaisnavaDay = dayEkadasi;
                    d2.FindType            = 1;
                    d2.SelectedMap         = selectedMap;
                    d2.Show();
                    step = -1;
                    break;
                }
            }
        }
示例#12
0
 private void onDateRangeCallback(object sender, EventArgs e)
 {
     if (sender is GregorianDateTime)
     {
         GregorianDateTime gdt = sender as GregorianDateTime;
         appDayDateTime = gdt;
         StartDateText(gdt.ToString());
         StartTimeText(gdt.ShortTimeString());
         Recalculate();
     }
 }
示例#13
0
        public DateTimePanel()
        {
            InitializeComponent();

            for (int i = 1; i < 32; i++)
            {
                cbDay.Items.Add(i.ToString());
            }
            for (int j = 1; j < 12; j++)
            {
                cbMonth.Items.Add(GregorianDateTime.GetMonthName(j));
            }
        }
示例#14
0
        public EnterPeriodPanel()
        {
            InitializeComponent();
            CaptionFont = new Font(FontFamily.GenericSansSerif, 13);
            TextFont    = new Font(FontFamily.GenericSansSerif, 10);
            DateRecord dr;

            DateTime d = DateTime.Now;

            dr = new DateRecord()
            {
                Title = "Year " + d.Year
            };
            dr.StartDate = new GregorianDateTime(DateTime.Now.Year, 1, 1);
            dr.EndDate   = new GregorianDateTime(DateTime.Now.Year, 12, 31);
            dr.UpdateSubtitle();
            listBox1.Items.Add(dr);

            dr = new DateRecord()
            {
                Title = "Year " + (d.Year + 1).ToString()
            };
            dr.StartDate = new GregorianDateTime(DateTime.Now.Year + 1, 1, 1);
            dr.EndDate   = new GregorianDateTime(DateTime.Now.Year + 1, 12, 31);
            dr.UpdateSubtitle();
            listBox1.Items.Add(dr);

            dr = new DateRecord();
            if (d.Month == 12)
            {
                dr.Title = string.Format("{0} {1} - {2} {3}", GregorianDateTime.GetMonthAbreviation(12), d.Year,
                                         GregorianDateTime.GetMonthAbreviation(1), d.Year + 1);
                dr.StartDate = new GregorianDateTime(d.Year, 12, 1);
                dr.EndDate   = new GregorianDateTime(d.Year + 1, 1, 31);
            }
            else
            {
                dr.Title = string.Format("{0} - {1} {2}", GregorianDateTime.GetMonthAbreviation(d.Month),
                                         GregorianDateTime.GetMonthAbreviation(d.Month + 1), d.Year);
                dr.StartDate = new GregorianDateTime(d.Year, d.Month, 1);
                dr.EndDate   = new GregorianDateTime(d.Year, d.Month + 1, GregorianDateTime.GetMonthMaxDays(d.Year, d.Month + 1));
            }
            dr.UpdateSubtitle();
            listBox1.Items.Add(dr);

            dr          = new DateRecord();
            dr.Title    = "Custom Date Range";
            dr.Subtitle = "Enter start date manually";
            listBox1.Items.Add(dr);
        }
示例#15
0
        private void printToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (p_mode == 0)
            {
                if (Controller != null)
                {
                    Controller.ExecuteMessage("printContent", m_calendar);
                }
            }
            else if (p_mode == 2)
            {
                PrintDialog pd = new PrintDialog();

                if (pd.ShowDialog() != DialogResult.OK)
                {
                    return;
                }

                DialogResult dr = MessageBox.Show("Do you want to print a whole year ?", "Time Period", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
                if (dr == DialogResult.Yes)
                {
                    printMonthStart = 1;
                    printMonthEnd   = 12;
                    printYearStart  = calendarTableView1.CurrentYear;
                    printYearEnd    = printYearStart;
                }
                else if (dr == DialogResult.No)
                {
                    printMonthEnd  = printMonthStart = calendarTableView1.CurrentMonth;
                    printYearStart = printYearEnd = calendarTableView1.CurrentYear;
                }
                else
                {
                    printMonthStart = printMonthEnd = -1;
                    printYearStart  = printYearEnd = -1;
                }

                if (printYearStart > 0)
                {
                    m_calendarToPrint = new TResultCalendar();
                    GregorianDateTime startDate = new GregorianDateTime(printYearStart, printMonthStart, 1);
                    GregorianDateTime endDate   = new GregorianDateTime(printYearEnd, printMonthEnd, 1);
                    m_calendarToPrint.CalculateCalendar(calLocation, startDate, endDate.GetJulianInteger() - startDate.GetJulianInteger() + 31);
                    printDocumentTable.PrinterSettings = pd.PrinterSettings;
                    printDocumentTable.DocumentName    = string.Format("{0}_{1}", calLocation.Title, printYearStart);
                    printDocumentTable.Print();
                }
            }
        }
        public VAISNAVADAY GetCalcDay(GregorianDateTime dt, GCLocation loc, TResultCalendar cal, double longitude, double latitude)
        {
            loc.SetCoordinates(longitude, latitude);
            cal.CalculateCalendar(loc, dt, 5);
            for (int i = 0; i < 5; i++)
            {
                VAISNAVADAY vd = cal.GetDay(i);
                if (vd.nFastID == FastType.FAST_EKADASI)
                {
                    return(vd);
                }
            }

            return(null);
        }
示例#17
0
        private static void TestAscendant()
        {
            GCEarthData earth = new GCEarthData();

            earth.latitudeDeg  = 48.133;
            earth.longitudeDeg = 17.1;
            GregorianDateTime gt = new GregorianDateTime(2016, 9, 26);

            gt.shour         = 0.0;
            gt.TimezoneHours = 2.0;
            for (int i = 0; i < 144; i++)
            {
                double d = earth.GetAscendantDegrees(gt.GetJulianDetailed());
                Debugger.Log(0, "", string.Format("{0} {1}     {2}\n", gt.ToString(), gt.LongTimeString(), d));
                gt.shour += 10 / 1440.0;
            }
        }
示例#18
0
        public CalendarTab()
        {
            InitializeComponent();

            calendarDataView1.Dock  = DockStyle.Fill;
            calendarTableView1.Dock = DockStyle.Fill;
            pictureBox1.Dock        = DockStyle.Fill;


            string s = Properties.Settings.Default.CalendarLocation;

            if (s.Length < 1)
            {
                s = GCGlobal.LastLocation.EncodedString;
            }
            calLocation = new GCLocation();
            calLocation.EncodedString = s;
            s = Properties.Settings.Default.CalendarStartDate;
            if (s.Length > 1)
            {
                calStartDate.EncodedString = s;
            }
            s = Properties.Settings.Default.CalendarEndDate;
            if (s.Length > 1)
            {
                calEndDate.EncodedString = s;
            }

            if ((calStartDate.year < 1500 || calStartDate.year > 3000) ||
                calEndDate.year < 1500 || calEndDate.year > 3000)
            {
                calStartDate     = new GregorianDateTime();
                calStartDate.day = 1;
                calEndDate       = new GregorianDateTime(calStartDate);
                calEndDate.AddDays(60);
            }

            calendarTableView1.calLocation = calLocation;
            calendarTableView1.LiveRefresh = true;

            calendarDataView1.DataSource = this;
            calendarDataView1.InitWithKey("2017-10");

            SetMode(0);
        }
示例#19
0
        private void d_OnEndDateDone(object sender, EventArgs e)
        {
            if (sender is GregorianDateTime)
            {
                InputEndDate = sender as GregorianDateTime;

                if (InputEndDate.GetJulianInteger() < InputStartDate.GetJulianInteger() + 7)
                {
                    InputEndDate = new GregorianDateTime(InputStartDate);
                    InputEndDate.AddDays(7);
                }

                if (OnPeriodSelected != null)
                {
                    OnPeriodSelected(this, e);
                }
            }
        }
        private QuadrantArray CalculateQuadrantArray(Quadrant map, GregorianDateTime dt, GCLocation loc, TResultCalendar cal, List <Quadrant> qlist)
        {
            QuadrantArray qa = new QuadrantArray(map, calculateSplits(map.LongitudeRange, map.pixelsX), calculateSplits(map.LatitudeRange, map.pixelsY));

            for (int lo = 0; lo < qa.Longitudes.Length; lo++)
            {
                for (int la = 0; la < qa.Latitudes.Length; la++)
                {
                    if (qa.Points[lo, la].Result != null)
                    {
                        continue;
                    }
                    VAISNAVADAY vd = GetCalcDay(dt, loc, cal, qa.Longitudes[lo], qa.Latitudes[la]);

                    /*                    loc.SetCoordinates(qa.Longitudes[lo], qa.Latitudes[la]);
                     *                  cal.CalculateCalendar(loc, dt, 5);
                     *                  for (int i = 0; i < 5; i++)
                     *                  {
                     *                      VAISNAVADAY vd = cal.GetDay(i);
                     *                      if (vd.nFastID == FastType.FAST_EKADASI)
                     *                      {
                     *                          qa.Points[lo, la].Result = GetSafeResult(vd);
                     *                      }
                     *                  }*/
                    if (vd != null)
                    {
                        qa.Points[lo, la].Result = GetSafeResult(vd);
                    }
                }
            }

            for (int lo = 0; lo < qa.Quadrants.GetLength(0); lo++)
            {
                for (int la = 0; la < qa.Quadrants.GetLength(1); la++)
                {
                    if (qa.Quadrants[lo, la].ResultState == QuadrantResultState.Decomposable)
                    {
                        qlist.Add(qa.Quadrants[lo, la]);
                    }
                }
            }

            return(qa);
        }
        public DateSpecifyDstPanel()
        {
            InitializeComponent();
            int i;

            for (i = 0; i < 7; i++)
            {
                comboBoxDayOfWeek.Items.Add(GCCalendar.GetWeekdayName(i));
            }

            for (i = 1; i < 32; i++)
            {
                comboBoxDayOfMonth.Items.Add(i.ToString());
            }

            for (i = 1; i < 13; i++)
            {
                comboBoxMonth.Items.Add(GregorianDateTime.GetMonthName(i));
            }
        }
示例#22
0
        private static void TestHouses(StringBuilder sb)
        {
            GregorianDateTime g = new GregorianDateTime(2016, 9, 1);

            g.shour         = 0.0;
            g.TimezoneHours = 0.0;

            GCEarthData earth = GCGlobal.myLocation.GetEarthData();
            GCEarth     e     = new GCEarth();

            sb.AppendLine(string.Format("{0,12} {1,8} {2,-15}  ", "Date", "Time", "Julian"));
            sb.AppendLine("---------------------------------------------------------------------------------------");
            for (int i = 0; i < 400; i++)
            {
                double jd = g.GetJulianComplete();
                double t = (jd - 2451545) / 365250;
                double sl1 = GCCoreAstronomy.GetSunLongitude(g, earth);
                double el, eb, er;
                GCEarth.Calculate(jd, out el, out eb, out er);
                double rl, rb, rr;
                GCRahu.Calculate(jd, out rl, out rb, out rr);
                double ml, mb, mr;
                GCMoonData.Calculate(jd, out ml, out mb, out mr);
                double ay = GCAyanamsha.GetAyanamsa(jd);
                sb.AppendLine(string.Format("{0,12} {1,8} {2,-15:F6}", g.ToString(), g.LongTime, jd));
                sb.AppendLine();
                for (int j = 5; j < 6; j++)
                {
                    GCVSOPAstronomy.GetGeocentricCoordinates(j, jd, out rl, out rb, out rr);
                    sb.AppendLine(string.Format("    {0,14} {1:F6}", GCStrings.GetPlanetNameEn(j), rl));
                }
                sb.AppendLine();

                g.AddHours(24);
            }


            File.WriteAllText("d:\\Temp\\gcaltest.txt", sb.ToString());
        }
示例#23
0
        public StartDatePanel()
        {
            InitializeComponent();
            int i;

            for (i = 1; i <= 31; i++)
            {
                cbDay.Items.Add(i.ToString());
            }
            for (i = 1; i <= 12; i++)
            {
                cbMonth.Items.Add(GregorianDateTime.GetMonthName(i));
            }
            for (i = 0; i < 30; i++)
            {
                cbTithi.Items.Add(GCTithi.GetName(i));
            }
            for (i = 0; i <= 12; i++)
            {
                cbMasa.Items.Add(GCMasa.GetName(i));
            }
        }
示例#24
0
        public static void ExportTableCalendar(GCLocation calLocation, int printYearStart, int printYearEnd, string folderPath)
        {
            TResultCalendar   m_calendarToPrint = new TResultCalendar();
            GregorianDateTime startDate         = new GregorianDateTime(printYearStart, 1, 1);
            GregorianDateTime endDate           = new GregorianDateTime(printYearEnd, 12, 1);

            m_calendarToPrint.CalculateCalendar(calLocation, startDate, endDate.GetJulianInteger() - startDate.GetJulianInteger() + 31);

            string DocumentName = string.Format("{0}_{1}", calLocation.Title, printYearStart);

            PdfDocument doc = new PdfDocument();

            CalendarPdfDrawer ctd = new CalendarPdfDrawer();

            for (int year = printYearStart; year <= printYearEnd; year++)
            {
                for (int month = 1; month <= 12; month++)
                {
                    PdfPage page = doc.AddPage();
                    page.Size        = PdfSharp.PageSize.A4;
                    page.Orientation = PdfSharp.PageOrientation.Landscape;

                    XGraphics gfx = XGraphics.FromPdfPage(page);

                    SizeF pageSizeF = gfx.PageSize.ToSizeF();
                    ctd.PaddingTop    = Convert.ToInt32(pageSizeF.Height / 20);
                    ctd.PaddingBottom = Convert.ToInt32(pageSizeF.Height / 20);
                    ctd.PaddingLeft   = Convert.ToInt32(pageSizeF.Width / 20);
                    ctd.PaddingRight  = Convert.ToInt32(pageSizeF.Width / 20);

                    ctd.Draw(gfx, gfx.PageSize, m_calendarToPrint, year, month);
                }
            }

            doc.Save(folderPath);
        }
示例#25
0
 private void toolStripButton5_Click(object sender, EventArgs e)
 {
     selectedDate = new GregorianDateTime();
     StartDateText(selectedDate.ToString());
     Recalculate();
 }
示例#26
0
 public string GetTitleString()
 {
     return(string.Format("{0} {1}", GregorianDateTime.GetMonthName(currentMonth), currentYear));
 }
示例#27
0
 private void SetGregorianValues(GregorianDateTime value)
 {
     cbDay.SelectedIndex   = value.day - 1;
     cbMonth.SelectedIndex = value.month - 1;
     tbYear.Text           = value.year.ToString();
 }
示例#28
0
        internal void Draw(Graphics graphics, Size size, Base.TResultCalendar tResultCalendar, int nYear, int nMonth)
        {
            Graphics g          = graphics;
            SizeF    textSize   = Size.Empty;
            float    fontH1Size = Math.Min(size.Height - PaddingLeft - PaddingRight, size.Width * 0.707f - PaddingTop - PaddingBottom) / 30;

            xMarginLeft     = PaddingLeft;
            yMarginTop      = PaddingTop;
            xMarginRight    = size.Width - PaddingRight;
            yUnderTitleBar  = 0;
            yUnderMainTitle = 0;
            float        tx;
            float        cellInset  = fontH1Size / 5;
            StringFormat rectFormat = new StringFormat();

            rectFormat.Trimming = StringTrimming.EllipsisWord;
            DateTime dtToday = DateTime.Now;


            InitializeFonts(fontH1Size);

            string str;

            DrawTitle(nYear, nMonth, g);

            if (tResultCalendar == null)
            {
                return;
            }

            DrawRightTitleInfo(tResultCalendar, g);

            g.DrawLine(monthDivider, xMarginLeft, yUnderTitleBar, xMarginRight, yUnderTitleBar);

            firstDayOfWeekGeneral = GCDisplaySettings.Current.getValue(GCDS.GENERAL_FIRST_DOW);
            xCellWidth            = (xMarginRight - xMarginLeft) / 7.0f;

            float tempTextHeight = fontH1Size / 5;

            // draw names of weekdays
            textSize = DrawWeekdayHeader(g, tempTextHeight);

            yTableTop = yUnderTitleBar + 2 * tempTextHeight + textSize.Height;


            yMarginBottom = size.Height - PaddingBottom;
            int firstIndex  = 0;
            int firstDayDow = 0;

            for (int i = 0; i < tResultCalendar.m_nCount; i++)
            {
                GregorianDateTime gdt = tResultCalendar.m_pData[i].date;
                if (gdt.day == 1 && gdt.month == nMonth && gdt.year == nYear)
                {
                    firstIndex  = i;
                    firstDayDow = gdt.dayOfWeek;
                }
            }

            int daysBeforeFirstDay = (firstDayDow - firstDayOfWeekGeneral + 14) % 7;
            int monthDays          = GregorianDateTime.GetMonthMaxDays(nYear, nMonth);

            int totalDays  = daysBeforeFirstDay + monthDays;
            int weeksCount = ((totalDays % 7) == 0) ? (totalDays / 7) : (totalDays / 7 + 1);

            yCellHeight = (yMarginBottom - yTableTop) / weeksCount;

            RectangleF    rcf = new RectangleF();
            int           row, column, di;
            StringBuilder masaText = new StringBuilder();

            for (int i = 1; i <= monthDays; i++)
            {
                di     = daysBeforeFirstDay + i - 1;
                row    = di / 7;
                column = di % 7;

                VAISNAVADAY vd      = tResultCalendar.m_pData[firstIndex + i - 1];
                VAISNAVADAY vd_prev = tResultCalendar.m_pData[firstIndex + i - 2];
                VAISNAVADAY vd_next = tResultCalendar.m_pData[firstIndex + i];

                ConstructMasaText(masaText, i, vd, vd_prev, vd_next);

                yCellMarginTop  = yTableTop + row * yCellHeight + cellInset;
                xCellMarginLeft = xMarginLeft + column * xCellWidth + cellInset;

                rcf.X      = xCellMarginLeft - cellInset;
                rcf.Y      = yCellMarginTop - cellInset;
                rcf.Width  = xCellWidth;
                rcf.Height = yCellHeight;
                if (vd.nFastID == FastType.FAST_EKADASI)
                {
                    g.FillRectangle(Brushes.LightGreen, rcf);
                }
                else if (vd.nFastID != 0)
                {
                    g.FillRectangle(Brushes.LightSkyBlue, rcf);
                }
                if (dtToday.Day == i && dtToday.Month == nMonth && dtToday.Year == nYear)
                {
                    g.DrawRectangle(todayBorder, rcf.Left, rcf.Top, rcf.Width, rcf.Height);
                }


                textSize = DrawCellDayNumber(g, i);

                yCellAnchor1      = yCellMarginTop + textSize.Height + cellInset;
                xCellAnchor1      = xCellMarginLeft + textSize.Width + cellInset;
                xCellMarginRight  = xCellMarginLeft + xCellWidth - 2 * cellInset;
                yCellMarginBottom = yCellMarginTop + yCellHeight - 2 * cellInset;


                tempTextHeight = DrawTithiText(g, vd);

                yCellAnchor1 = Math.Max(tempTextHeight + cellInset, yCellAnchor1);


                rcf.X      = xCellAnchor1;
                rcf.Y      = yCellMarginTop;
                rcf.Width  = xCellMarginRight - xCellAnchor1;
                rcf.Height = textSize.Height + 2;

                str = GetEventsLineText(vd);

                Font f = fontS2;
                textSize = g.MeasureString(str, fontS2, Convert.ToInt32(xCellMarginRight - xCellMarginLeft));
                if (textSize.Height + yCellAnchor1 + cellInset > yCellMarginTop + yCellHeight)
                {
                    f        = fontS3;
                    textSize = g.MeasureString(str, f, Convert.ToInt32(xCellMarginRight - xCellMarginLeft));
                }
                rcf.Y      = yCellAnchor1;
                rcf.X      = xCellMarginLeft;
                rcf.Width  = textSize.Width;
                rcf.Height = Math.Min(yCellMarginBottom - yCellAnchor1, textSize.Height);
                g.DrawString(str, f, Brushes.Black, rcf, rectFormat);
            }

            // masa info text
            g.DrawString(masaText.ToString(), fontS2, Brushes.Black, xMarginLeft, yUnderMainTitle);

            // final step: draw matrix
            for (int i = 0; i < 8; i++)
            {
                g.DrawLine(dayDivider, xMarginLeft + i * xCellWidth, yTableTop, xMarginLeft + i * xCellWidth, yMarginBottom);
            }
            for (int j = 0; j <= weeksCount; j++)
            {
                g.DrawLine(dayDivider, xMarginLeft, yTableTop + j * yCellHeight, xMarginRight, yTableTop + j * yCellHeight);
            }
        }
示例#29
0
 public string GetTitleString(int nYear, int nMonth)
 {
     return(string.Format("{0} {1}", GregorianDateTime.GetMonthName(nMonth), nYear));
 }
示例#30
0
        private CDVPara FormatCalendarLayout(CDVDataTarget requestor, DocCalenarData docData)
        {
            CDVParaStyle pstitle = new CDVParaStyle();

            pstitle.StyleName       = "TitleC";
            pstitle.Align           = CDVAlign.Center;
            pstitle.Padding.All     = 12;
            pstitle.Margin.All      = 12;
            pstitle.BorderWidth.All = 1;
            pstitle.BorderColor     = CDVColor.Black;
            pstitle.BackgroundColor = CDVColor.LightYellow;

            CDVParaStyle pshdr = new CDVParaStyle();

            pshdr.StyleName       = "Hdr";
            pshdr.Margin.Top      = 2;
            pshdr.Margin.Bottom   = 12;
            pshdr.BackgroundColor = new CDVColor(255, 64, 32, 0);

            CDVParaStyle ps = new CDVParaStyle();

            ps.StyleName = "Centered";
            ps.Align     = CDVAlign.Center;

            CDVTextStyle ts = new CDVTextStyle();

            ts.FontSize = 18;

            CDVTextStyle tsWeekday = new CDVTextStyle();

            tsWeekday.FontSize = 9;

            CDVTextStyle tsHdr = new CDVTextStyle();

            tsHdr.Color    = CDVColor.White;
            tsHdr.FontSize = 10;

            CDVRuler atithi     = new CDVRuler(null, 10);
            CDVRuler aday       = new CDVRuler(null, 0);
            CDVRuler apak       = new CDVRuler(null);
            CDVRuler anak       = new CDVRuler(null);
            CDVRuler ayog       = new CDVRuler(null);
            CDVRuler afast      = new CDVRuler(null, 0);
            CDVRuler amr        = new CDVRuler(null);
            CDVRuler amsun1     = new CDVRuler(null);
            CDVRuler amsun2     = new CDVRuler(null);
            CDVRuler amsun3     = new CDVRuler(null);
            CDVRuler amcore     = new CDVRuler(null, 20);
            CDVRuler amcoretime = new CDVRuler(null);

            CDVAtom doc  = requestor.GetDocument();
            CDVPara para = new CDVPara(doc, CDVOrientation.Vertical,
                                       new CDVPara(null, CDVOrientation.Vertical, pstitle, CDVSpan.Maximum,
                                                   new CDVWord(null, string.Format("{0} {1}", GregorianDateTime.GetMonthName(docData.Month), docData.Year), ts, ps, CDVSpan.Maximum),
                                                   new CDVWord(null, calLocation.Format("{locationName}, {longitudeText} {latitudeText}, {timeZoneName}"), ps, CDVSpan.Maximum)
                                                   )
                                       );

            CDVPara subRow;
            CDVPara row = new CDVPara(para, CDVOrientation.Horizontal, pshdr, tsHdr);

            para.Add(row);
            row.Add(new CDVWord(row, "Date"));
            row.Add(aday);
            row.Add(new CDVWord(row, ""));
            row.Add(atithi);
            row.Add(new CDVWord(row, "Tithi/Festival/Paksa"));
            if (GCDisplaySettings.Current.CalColPaksa)
            {
                row.Add(apak);
                row.Add(new CDVWord(row, ""));
            }
            if (GCDisplaySettings.Current.CalColNaksatra)
            {
                row.Add(anak);
                row.Add(new CDVWord(row, "Naksatra"));
            }
            if (GCDisplaySettings.Current.CalColYoga)
            {
                row.Add(ayog);
                row.Add(new CDVWord(row, "Yoga"));
            }
            if (GCDisplaySettings.Current.CalColFast)
            {
                row.Add(afast);
                row.Add(new CDVWord(row, "Fast"));
            }
            if (GCDisplaySettings.Current.CalColMoonRasi)
            {
                row.Add(amr);
                row.Add(new CDVWord(row, "Moon Rasi"));
            }

            if (GCDisplaySettings.Current.CalColCoreEvents)
            {
                row.Add(amcore);
                row.Add(new CDVWord(row, "Core Events"));
            }
            else
            {
                if (GCDisplaySettings.Current.CalColSunrise)
                {
                    row.Add(amsun1);
                    row.Add(new CDVWord(row, "Sunrise"));
                }
                if (GCDisplaySettings.Current.CalColNoon)
                {
                    row.Add(amsun2);
                    row.Add(new CDVWord(row, "Noon"));
                }
                if (GCDisplaySettings.Current.CalColSunset)
                {
                    row.Add(amsun3);
                    row.Add(new CDVWord(row, "Sunset"));
                }
            }

            for (int i = 0; i < docData.Calendar.m_PureCount; i++)
            {
                VAISNAVADAY vd = docData.Calendar.GetDay(i);
                row = new CDVPara(para, CDVOrientation.Horizontal);
                para.Add(row);
                row.Add(new CDVWord(row, vd.date.ToString()));
                row.Add(aday);
                row.Add(new CDVWord(row, GCCalendar.GetWeekdayAbbr(vd.date.dayOfWeek), tsWeekday));
                row.Add(atithi);
                row.Add(new CDVWord(row, vd.GetFullTithiName()));
                if (GCDisplaySettings.Current.CalColPaksa)
                {
                    row.Add(apak);
                    row.Add(new CDVWord(row, GCPaksa.GetAbbr(vd.astrodata.sunRise.Paksa).ToString()));
                }
                if (GCDisplaySettings.Current.CalColNaksatra)
                {
                    row.Add(anak);
                    row.Add(new CDVWord(row, GCNaksatra.GetName(vd.astrodata.sunRise.Naksatra)));
                }
                if (GCDisplaySettings.Current.CalColYoga)
                {
                    row.Add(ayog);
                    row.Add(new CDVWord(row, GCYoga.GetName(vd.astrodata.sunRise.Yoga)));
                }
                if (GCDisplaySettings.Current.CalColFast)
                {
                    row.Add(afast);
                    row.Add(new CDVWord(row, vd.nFastID > 0 ? "*" : ""));
                }
                if (GCDisplaySettings.Current.CalColMoonRasi)
                {
                    row.Add(amr);
                    row.Add(new CDVWord(row, GCRasi.GetName(vd.astrodata.sunRise.RasiOfMoon)));
                }

                if (!GCDisplaySettings.Current.CalColCoreEvents)
                {
                    if (GCDisplaySettings.Current.CalColSunrise)
                    {
                        row.Add(amsun1);
                        row.Add(new CDVWord(row, vd.astrodata.sunRise.ToShortTimeString()));
                    }

                    if (GCDisplaySettings.Current.CalColNoon)
                    {
                        row.Add(amsun2);
                        row.Add(new CDVWord(row, vd.astrodata.sunNoon.ToShortTimeString()));
                    }

                    if (GCDisplaySettings.Current.CalColSunset)
                    {
                        row.Add(amsun3);
                        row.Add(new CDVWord(row, vd.astrodata.sunSet.ToShortTimeString()));
                    }
                }

                row = new CDVPara(para, CDVOrientation.Horizontal);
                para.Add(row);

                subRow = new CDVPara(row, CDVOrientation.Vertical);
                row.Add(atithi);
                row.Add(subRow);

                List <VAISNAVAEVENT> evs = vd.VisibleEvents;
                if (evs.Count > 0 && vd.astrodata.sunRise.longitude >= 0.0)
                {
                    foreach (VAISNAVAEVENT ve in evs)
                    {
                        subRow.Add(new CDVPara(null, CDVOrientation.Horizontal,
                                               new CDVWord(null, ve.text)
                                               ));
                    }
                }

                if (GCDisplaySettings.Current.CalColCoreEvents)
                {
                    row.Add(amcore);
                    subRow = new CDVPara(row, CDVOrientation.Vertical);
                    row.Add(subRow);
                    bool show = false;

                    foreach (TCoreEvent tce in vd.coreEvents)
                    {
                        if (tce.nType == CoreEventType.CCTYPE_S_ARUN)
                        {
                            show = GCDisplaySettings.Current.CalColSunrise;
                        }
                        else if (tce.nType == CoreEventType.CCTYPE_S_RISE)
                        {
                            show = GCDisplaySettings.Current.CalColSunrise;
                        }
                        else if (tce.nType == CoreEventType.CCTYPE_S_NOON)
                        {
                            show = GCDisplaySettings.Current.CalColNoon;
                        }
                        else if (tce.nType == CoreEventType.CCTYPE_S_SET)
                        {
                            show = GCDisplaySettings.Current.CalColSunset;
                        }
                        else
                        {
                            show = true;
                        }
                        if (show)
                        {
                            subRow.Add(new CDVPara(null, CDVOrientation.Horizontal, tsWeekday,
                                                   new CDVWord(null, tce.TypeString),
                                                   amcoretime,
                                                   new CDVWord(null, vd.GetCoreEventTime(tce))));
                        }
                    }
                }
            }

            return(para);
        }