예제 #1
0
        public static void ExportPngYear(GCLocation calLocation, string dir, string locationFileName, int currentYear)
        {
            Size imageSize = new Size(1280, 1024);

            using (Bitmap b = new Bitmap(imageSize.Width, imageSize.Height))
            {
                using (Graphics g = Graphics.FromImage(b))
                {
                    CalendarTableDrawer ctd = new CalendarTableDrawer();
                    TResultCalendar     rc  = new TResultCalendar();
                    rc.CalculateCalendar(calLocation, new GregorianDateTime(currentYear, 1, 1), 366);

                    for (int i = 1; i <= 12; i++)
                    {
                        g.Clear(Color.White);
                        ctd.Draw(g, imageSize, rc, currentYear, i);
                        b.Save(Path.Combine(dir, string.Format("{0}-{1}-{2:00}.png", locationFileName, currentYear, i)), ImageFormat.Png);
                    }
                }
            }

            string        text = string.Format("<html><head><title>{0} {1}</title></head><body>", locationFileName, currentYear);
            StringBuilder sb   = new StringBuilder();

            sb.Append(text);
            for (int i = 1; i < 13; i++)
            {
                sb.AppendFormat("<p><img src=\"{0}-{1}-{2:00}.png\"></p>", locationFileName, currentYear, i);
            }
            sb.AppendFormat("</body></html>");

            File.WriteAllText(Path.Combine(dir, string.Format("{0}-{1}.html", locationFileName, currentYear)), sb.ToString());
        }
예제 #2
0
        private void buttonCalcEkadasi_Click(object sender, EventArgs e)
        {
            TResultCalendar cal = new TResultCalendar();

            cal.CalculateCalendar(GCGlobal.myLocation, new GregorianDateTime(int.Parse(textBox1.Text), comboBox1.SelectedIndex + 1, 1), 31);
            List <VAISNAVADAY> le = new List <VAISNAVADAY>();

            for (int i = 0; i < 31; i++)
            {
                VAISNAVADAY vd = cal.GetDay(i);
                if (vd.nFastID == FastType.FAST_EKADASI)
                {
                    LBVD lb = new LBVD();
                    lb.vd = vd;
                    listBox1.Items.Add(lb);
                }
            }

            if (listBox1.Items.Count > 0)
            {
                listBox1.SelectedIndex = 0;
            }

            panel1.Visible = true;
        }
        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;
        }
        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);
        }
예제 #5
0
        public static void ExportTableCalendar(TResultCalendar calendar, int printYearStart, int printYearEnd, string folderPath)
        {
            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, calendar, year, month);
                }
            }

            doc.Save(folderPath);
        }
예제 #6
0
        private void FetchCalendarDataSync(CDVDataTarget requestor, CDVDocumentCell data)
        {
            int i_year, i_month;

            string[] sa = data.Key.Split('-');
            if (sa.Length != 2 || !int.TryParse(sa[0], out i_year) || !int.TryParse(sa[1], out i_month))
            {
                return;
            }

            if (i_month < 2)
            {
                data.PrevKey = string.Format("{0}-{1}", i_year - 1, 12);
            }
            else
            {
                data.PrevKey = string.Format("{0}-{1}", i_year, i_month - 1);
            }

            if (i_month > 11)
            {
                data.NextKey = string.Format("{0}-{1}", i_year + 1, 1);
            }
            else
            {
                data.NextKey = string.Format("{0}-{1}", i_year, i_month + 1);
            }


            TResultCalendar rc      = new TResultCalendar(calLocation, i_year, i_month);
            DocCalenarData  docdata = new DocCalenarData();

            docdata.Calendar = rc;
            docdata.Month    = i_month;
            docdata.Year     = i_year;

            CDVPara para = FormatCalendarLayout(requestor, docdata);

            data.UserData = docdata;
            data.Item     = para;

            AsyncTask2 at2 = new AsyncTask2(requestor.OnCDVDataAvailable);

            while (!this.IsHandleCreated)
            {
                System.Threading.Thread.Sleep(100);
            }
            this.Invoke(at2, data);
            // then return calculated data
            //requestor.OnCDVDataAvailable(data);
        }
예제 #7
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();
                }
            }
        }
예제 #8
0
 public static void ExportPng(GCLocation calLocation, string directory, string locname, int year, int month)
 {
     using (Bitmap b = new Bitmap(1280, 1024))
     {
         using (Graphics g = Graphics.FromImage(b))
         {
             g.Clear(Color.White);
             CalendarTableDrawer ctd = new CalendarTableDrawer();
             TResultCalendar     rc  = new TResultCalendar();
             rc.CalculateCalendar(calLocation, new GregorianDateTime(year, month, 1), 32);
             ctd.Draw(g, new Size(1280, 1024), rc, year, month);
         }
         b.Save(Path.Combine(directory, string.Format("{0}-{1}-{2:00}.png", locname, year, month)), ImageFormat.Png);
     }
 }
        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);
        }
예제 #10
0
        /// <summary>
        /// If newText is changed during the processing of this method
        /// then running of this method is aborted and new search starts in backSearch_DoWork
        /// by assigning newText value into currentText
        /// </summary>
        private void doSearch(string text, CancellationTokenSource tokenSource)
        {
            TResultCalendar cal = new TResultCalendar();
            string          dayText;

            cal.CalculateCalendar(EarthLocation, new GregorianDateTime(), 700);

            StringBuilder results3 = new StringBuilder();

            GSScript script = new GSScript();

            script.readTextTemplate(TResultCalendar.getPlainDayTemplate());

            GSExecutor exec = new GSExecutor();


            for (int i = 0; i < cal.m_PureCount; i++)
            {
                VAISNAVADAY vd = cal.GetDay(i);

                exec.SetVariable("app", GCUserInterface.Shared);
                exec.SetVariable("location", EarthLocation);
                exec.SetVariable("pvd", vd);

                //dayText = TResultCalendar.formatPlainTextDay(vd);
                exec.resetOutput();
                exec.ExecuteElement(script);
                dayText = exec.getOutput();
                //Debugger.Log(0, "", "SEARCH IN TEXT: " + dayText + "\n\n");
                if (dayText.IndexOf(text, 0, StringComparison.CurrentCultureIgnoreCase) >= 0)
                {
                    results3.AppendLine();
                    results3.AppendLine(dayText);
                }
                if (tokenSource.IsCancellationRequested)
                {
                    return;
                }
            }

            if (!tokenSource.IsCancellationRequested)
            {
                FinalizeDelegate dlg = new FinalizeDelegate(setRichText);
                richTextBox1.BeginInvoke(dlg, results3.ToString());
                ctTask = null;
                ctPrev = null;
            }
        }
예제 #11
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);
        }
예제 #12
0
 public void PrintPdfYear(TResultCalendar loc, int year, string fileName)
 {
     GCPrintService.ExportTableCalendar(loc, year, year, fileName);
 }
예제 #13
0
        private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
        {
            SetProgressValue locdel = new SetProgressValue(SetLocationsProgressValue);
            SetProgressValue yrdel  = new SetProgressValue(SetYearsProgressvalue);

            List <FileRec>   files     = new List <FileRec>();
            HashSet <string> countries = new HashSet <string>();

            GCDisplaySettings stateDetailedText = new GCDisplaySettings("Detailed Calendar");
            GCDisplaySettings stateText         = new GCDisplaySettings("Brief Calendar");
            GCDisplaySettings stateOrig         = GCDisplaySettings.Current;

            try
            {
//                stateText.Clear();
                stateText.setValue(GCDS.CAL_DST_CHANGE, 1);
                stateText.setValue(GCDS.CAL_EKADASI_PARANA, 1);
                stateText.setValue(GCDS.CAL_FEST_0, 1);
                stateText.CalHeaderType = 1;
                stateText.setValue(GCDS.CAL_MASA_CHANGE, 1);
                stateText.setValue(GCDS.CAL_MOON_LONG, 0);
                stateText.setValue(GCDS.CAL_MOON_RISE, 0);
                stateText.setValue(GCDS.CAL_MOON_SET, 0);
                stateText.setValue(GCDS.CAL_SANKRANTI, 0);
                stateText.setValue(GCDS.CAL_SUN_LONG, 0);
                stateText.setValue(GCDS.CAL_SUN_RISE, 0);
                stateText.setValue(GCDS.CAL_SUN_SANDHYA, 0);
                stateText.setValue(GCDS.CAL_VRDDHI, 0);
                stateText.setValue(GCDS.COREEVENTS_ABHIJIT_MUHURTA, 0);
                stateText.setValue(GCDS.COREEVENTS_ASCENDENT, 0);
                stateText.setValue(GCDS.COREEVENTS_CONJUNCTION, 0);
                stateText.setValue(GCDS.COREEVENTS_GULIKALAM, 0);
                stateText.setValue(GCDS.COREEVENTS_MOON, 0);
                stateText.setValue(GCDS.COREEVENTS_MOONRASI, 0);
                stateText.setValue(GCDS.COREEVENTS_NAKSATRA, 0);
                stateText.setValue(GCDS.COREEVENTS_RAHUKALAM, 0);
                stateText.setValue(GCDS.COREEVENTS_SANKRANTI, 0);
                stateText.setValue(GCDS.COREEVENTS_SUN, 0);
                stateText.setValue(GCDS.COREEVENTS_TITHI, 0);
                stateText.setValue(GCDS.COREEVENTS_YAMAGHANTI, 0);
                stateText.setValue(GCDS.COREEVENTS_YOGA, 0);

                stateDetailedText.setValue(GCDS.CAL_ARUN_TIME, 0);
                stateDetailedText.setValue(GCDS.CAL_ARUN_TITHI, 0);
                stateDetailedText.setValue(GCDS.CAL_AYANAMSHA, 0);
                stateDetailedText.setValue(GCDS.CAL_BRAHMA_MUHURTA, 1);
                stateDetailedText.setValue(GCDS.CAL_COREEVENTS, 1);
                stateDetailedText.setValue(GCDS.CAL_DST_CHANGE, 1);
                stateDetailedText.setValue(GCDS.CAL_EKADASI_PARANA, 1);
                stateDetailedText.setValue(GCDS.CAL_FEST_0, 1);
                stateDetailedText.CalHeaderType = 1;
                stateDetailedText.setValue(GCDS.CAL_JULIAN, 0);
                stateDetailedText.setValue(GCDS.CAL_KSAYA, 0);
                stateDetailedText.setValue(GCDS.CAL_MASA_CHANGE, 1);
                stateDetailedText.setValue(GCDS.CAL_SUN_RISE, 1);
                stateDetailedText.setValue(GCDS.CAL_SUN_SANDHYA, 1);
                stateDetailedText.setValue(GCDS.COREEVENTS_CONJUNCTION, 1);
                stateDetailedText.setValue(GCDS.COREEVENTS_GULIKALAM, 0);
                stateDetailedText.setValue(GCDS.COREEVENTS_MOON, 1);
                stateDetailedText.setValue(GCDS.COREEVENTS_MOONRASI, 1);
                stateDetailedText.setValue(GCDS.COREEVENTS_NAKSATRA, 1);
                stateDetailedText.setValue(GCDS.COREEVENTS_TITHI, 1);
                stateDetailedText.setValue(GCDS.COREEVENTS_YAMAGHANTI, 0);
                stateDetailedText.setValue(GCDS.COREEVENTS_YOGA, 1);
                stateDetailedText.setValue(GCDS.GENERAL_FIRST_DOW, stateOrig.getValue(GCDS.GENERAL_FIRST_DOW));


                string  content;
                FileRec currentFileRec;

                for (int locIndex = 0; locIndex < SelectedLocations.Count; locIndex++)
                {
                    TLocation loc = SelectedLocations[locIndex];
                    if (!countries.Contains(loc.Country.Name))
                    {
                        countries.Add(loc.Country.Name);
                    }
                    progressBar1.Invoke(locdel, locIndex);
                    for (int year = StartYear; year <= EndYear; year++)
                    {
                        if (backgroundWorker1.CancellationPending)
                        {
                            return;
                        }
                        if (CancelRequested)
                        {
                            return;
                        }

                        progressBar2.Invoke(yrdel, year);
                        //                        Thread.Sleep(1000);

                        TResultCalendar calendar;
                        GCLocation      locRef = loc.GetLocationRef();


                        currentFileRec = new FileRec()
                        {
                            filename       = year.ToString() + "_" + ToFilePart(loc.CityName) + ".html",
                            filenameDetail = year.ToString() + "_" + ToFilePart(loc.CityName) + "_d.html",
                            filenamePdf    = year.ToString() + "_" + ToFilePart(loc.CityName) + ".pdf",
                            city           = loc.CityName,
                            country        = loc.Country.Name,
                            year           = year
                        };

                        files.Add(currentFileRec);

                        GCDisplaySettings.Current = stateText;
                        calendar = new TResultCalendar(loc.GetLocationRef(), year);
                        content  = calendar.formatText(GCDataFormat.HTML);
                        // print plain TXT
                        File.WriteAllText(Path.Combine(OutputDir, currentFileRec.filename), content);
                        // print PDF
                        PrintPdfYear(calendar, year, Path.Combine(OutputDir, currentFileRec.filenamePdf));

                        GCDisplaySettings.Current = stateDetailedText;
                        calendar = new TResultCalendar(loc.GetLocationRef(), year);
                        content  = calendar.formatText(GCDataFormat.HTML);
                        // print detailed TXT
                        File.WriteAllText(Path.Combine(OutputDir, currentFileRec.filenameDetail), content);
                    }

                    // write location index file
                    if (StartYear != EndYear)
                    {
                        File.WriteAllText(Path.Combine(OutputDir, ToFilePart(loc.CityName) + ".html"), GenerateYearIndex(loc, StartYear, EndYear));
                    }
                }

                for (int year = StartYear; year <= EndYear; year++)
                {
                    // write main index file
                    File.WriteAllText(Path.Combine(OutputDir, "y" + year.ToString() + ".html"), GenerateMainIndex(countries, year, year));
                }

                // write main index file
                File.WriteAllText(Path.Combine(OutputDir, "index.html"), GenerateMainIndex(countries, StartYear, EndYear));

                // write main years file
                //File.WriteAllText(Path.Combine(OutputDir, "years.html"), GenerateYearsOverview(StartYear, EndYear));

                progressBar1.Invoke(new SetProgressValue(SetDialogCompleted), 0);
            }
            catch (Exception ex)
            {
                Debugger.Log(0, "", "Error: " + ex.Message + "\n" + ex.StackTrace + "\n");
            }
            finally
            {
                GCDisplaySettings.Current = stateOrig;
            }
        }
        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);
        }
예제 #15
0
 public void RecalculateCalendar()
 {
     calendar = new TResultCalendar();
     calendar.CalculateCalendar(calLocation, new GregorianDateTime(currentYear, currentMonth, 1), 31);
     Invalidate();
 }