diff options
author | Federico Mena Quintero <federico@nuclecu.unam.mx> | 1998-10-09 01:19:43 +0800 |
---|---|---|
committer | Arturo Espinosa <unammx@src.gnome.org> | 1998-10-09 01:19:43 +0800 |
commit | 2389bd7bedc9b1caf3e9f34631c70c8ddf3fb306 (patch) | |
tree | 92b63256b47a7c61141ea2fecdb6fabf28d7e96b /calendar/layout.h | |
parent | 3b1a500fd323b3f3908477f3df66f1ab0ad7674b (diff) | |
download | gsoc2013-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.h | 20 |
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 |