aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/layout.h
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@nuclecu.unam.mx>1998-10-09 01:19:43 +0800
committerArturo Espinosa <unammx@src.gnome.org>1998-10-09 01:19:43 +0800
commit2389bd7bedc9b1caf3e9f34631c70c8ddf3fb306 (patch)
tree92b63256b47a7c61141ea2fecdb6fabf28d7e96b /calendar/layout.h
parent3b1a500fd323b3f3908477f3df66f1ab0ad7674b (diff)
downloadgsoc2013-evolution-2389bd7bedc9b1caf3e9f34631c70c8ddf3fb306.tar.gz
gsoc2013-evolution-2389bd7bedc9b1caf3e9f34631c70c8ddf3fb306.tar.zst
gsoc2013-evolution-2389bd7bedc9b1caf3e9f34631c70c8ddf3fb306.zip
Do some cleanup; now we pass a struct with the layout algorithm's state
1998-10-08 Federico Mena Quintero <federico@nuclecu.unam.mx> * layout.c: Do some cleanup; now we pass a struct with the layout algorithm's state instead of passing a trillion parameters around. * gncal-full-day.c (layout_children): Use the new generic layout engine. (child_compare): Sort keys are start time then end time, not just start time. This produces somewhat nicer results for the layout algorithm. The new layout code uses a partition of the time range occupied by the events, rather than using a fixed time granularity. This is better since the different parts of the program that use the layout module will have different semantics regarding snapping the event bounds to a fixed "time grid". svn path=/trunk/; revision=434
Diffstat (limited to 'calendar/layout.h')
-rw-r--r--calendar/layout.h20
1 files changed, 16 insertions, 4 deletions
diff --git a/calendar/layout.h b/calendar/layout.h
index b87cf7e36b..734b720b8b 100644
--- a/calendar/layout.h
+++ b/calendar/layout.h
@@ -9,17 +9,29 @@
#ifndef LAYOUT_H
#define LAYOUT_H
-#include "calendar.h"
+#include <glib.h>
+#include <time.h>
-/* This is the main layout function for overlapping events. You pass in a list of CalendarObject
- * structures and it will calculate a nice non-overlapping layout for them.
+/* Functions of this type must translate the list item into two time_t values for the start and end
+ * of an event.
+ */
+typedef void (* LayoutQueryTimeFunc) (GList *event, time_t *start, time_t *end);
+
+
+/* This is the main layout function for overlapping events. You pass in a list of (presumably)
+ * events and a function that should take a list element and return the start and end times for the
+ * event corresponding to that list element.
*
* It returns the number of slots ("columns") that you need to take into account when actually
* painting the events, the array of the first slot index that each event occupies, and the array of
* number of slots that each event occupies. You have to free both arrays.
+ *
+ * You will get somewhat better-looking results if the list of events is sorted by using the start
+ * time as the primary sort key and the end time as the secondary sort key -- so that "longer"
+ * events go first in the list.
*/
-void layout_events (GList *events, int *num_slots, int **allocations, int **slots);
+void layout_events (GList *events, LayoutQueryTimeFunc func, int *num_slots, int **allocations, int **slots);
#endif