Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include "trackpoint.h"
- #include "track.h"
- typedef struct segment
- {
- trackpoint * trackpoints;
- double total_distance;
- int num_trackpoints;
- }segment;
- struct track
- {
- segment * segments;
- int num_segments;
- };
- track *track_create()
- {
- track *t = malloc(sizeof(track));
- if (t != NULL)
- {
- t->segments[0] = malloc(sizeof(trackpoint *));
- }
- return t;
- }
- void track_destroy(track *trk)
- {
- if (trk != NULL)
- {
- for(int i = 0; i < trk->num_segments; i++)
- {
- // for(int j = 0; j < trk->num_segments[i]->num_trackpoints; j++)
- // {
- // free(trk->segments[i]->trackpoints[j]);
- // }
- free(trk->segments[i]);
- }
- free(trk);
- }
- }
- int track_count_segments(const track *trk)
- {
- if(trk->segments[0] != NULL)
- {
- return trk->num_segments;
- }
- return 0;
- }
- int track_count_points(const track *trk, int i)
- {
- if(trk->segments[i]->trackpoints[0] != NULL)
- {
- return trk->segments[i]->num_trackpoints;
- }
- return 0;
- }
- trackpoint *track_get_point(const track *trk, int i, int j)
- {
- trackpoint * trkpoint_cpy = malloc(sizeof(trackpoint));
- if(trk->segments[i] != NULL && trk->segments[i].trackpoints[j] != NULL)
- {
- *trkpoint_cpy = trk->segments[i]->trackpoints[j];
- return trkpoint_cpy;
- }
- return NULL;
- }
- double *track_get_lengths(const track *trk)
- {
- trackpoint * arr = malloc(sizeof(trackpoint) * trk->num_segments);
- for(int i = 0; i < trk->num_segments; i++)
- {
- arr[i] = trk->segments[i].total_distance;
- }
- return arr;
- }
- bool track_add_point(track *trk, const trackpoint *pt)
- {
- }
- void track_start_segment(track *trk)
- {
- }
- void track_merge_segments(track *trk, int start, int end)
- {
- }
- void track_heatmap(const track *trk, double cell_width, double cell_height, int ***map, int *rows, int *cols)
- {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement