/* Standard Libraries */ #include #include #include #include #include #include #include /* Cairo Libraries */ #include #include /* calp Libraries */ #include "color.h" #include "date.h" #include "draw.h" // int main (int argc, char *argv[]) { int main (void) { /* Dimension initialization */ int rows = 6; /* Number of weeks in a month */ int columns = 7; /* Number of days in a week */ double margin = 0.5; /* 0.5" */ int number_of_days = 28; double month_origin_x = margin; double month_origin_y = 3.0; double paper_width = 8.5; double paper_height = 11; double month_width = paper_width - (month_origin_x * 2); double month_height = paper_height - month_origin_y - margin; double day_box_width = month_width / columns; double day_box_height = month_height / rows; struct dimensions dim = { paper_width, /* pw */ paper_height, /* ph */ month_width, /* mw */ month_height, /* mh */ day_box_width, /* bw */ day_box_height, /* bh */ rows, /* r */ columns, /* c */ margin, /* m */ }; /* Date Setup */ char *months[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; //int days_in_month[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // const char *weekday_names[] = { // "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" // }; // const char *weekdays_abbr[] = { // "Su", "Mo", "Tue", "Wed", "Thurs", "Fri", "Sat" // }; int year = 2025; int month = 2; struct tm day; day.tm_mon = month - 1; day.tm_mday = 1; day.tm_year = year - 1900; /* tm.hour, tm_min, & tm_sec are not used, but need to be zeroed. */ day.tm_hour = 0; day.tm_min = 0; day.tm_sec = 0; mktime(&day); cairo_surface_t * surface = cairo_pdf_surface_create("0.pdf", dim.pw * 72, dim.ph * 72); cairo_t *cr = cairo_create(surface); cairo_scale(cr, 72, 72); set_color(cr, "GRAY"); cairo_set_line_width (cr, 0.03); clock_t begin = clock(); draw_calendar(cr, month_origin_x, month_origin_y, dim); draw_numbers(cr, month_origin_x, month_origin_y, dim, day.tm_wday, number_of_days); draw_month_name(cr, months[1], dim); /* Clean Up */ cairo_destroy(cr); cairo_surface_destroy(surface); clock_t end = clock(); double time_spent = (double)(end - begin) / CLOCKS_PER_SEC; printf("Execution Time: %.3fs\n", time_spent); return(0); }