changed map_code
This commit is contained in:
		
							parent
							
								
									01b4ec7146
								
							
						
					
					
						commit
						c6926c8baa
					
				|  | @ -296,22 +296,17 @@ void assign_df_to_TSB(struct data_frame *df,int index) { | |||
| 
 | ||||
| void dispatch(int index) { | ||||
| 
 | ||||
| 	int size,flag = 0; | ||||
| 	int size; | ||||
| 	sort_data_inside_TSB(index); | ||||
| 	dataframe = NULL;	  | ||||
| 	pthread_mutex_lock(&mutex_Upper_Layer_Details); | ||||
| 	struct Upper_Layer_Details *temp_pdc = ULfirst; | ||||
| 	size = create_dataframe(index);	 | ||||
| 
 | ||||
| 	while(temp_pdc != NULL ) { | ||||
| 
 | ||||
| 		if((temp_pdc->UL_upper_pdc_cfgsent == 1) && (temp_pdc->UL_data_transmission_off == 0)) {			 | ||||
| 
 | ||||
| 			if(flag == 0) { | ||||
| 
 | ||||
| 				size = create_dataframe(index);	 | ||||
| 				flag = 1; | ||||
| 			} | ||||
| 
 | ||||
| 			if(temp_pdc->config_change == 1) { | ||||
| 
 | ||||
| 				dataframe[14] = 0x04; | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 29 KiB | 
|  | @ -2182,12 +2182,13 @@ void ipdc_setup_fileSelector (GtkWidget *widget, gpointer udata) | |||
| 							NULL); | ||||
| 	 | ||||
| 	res = gtk_dialog_run(GTK_DIALOG(ipdc_setup_window)); | ||||
| 	printf("res = %d", res); | ||||
| 
 | ||||
| 	if(res == GTK_RESPONSE_ACCEPT) | ||||
| 	{ | ||||
| 		char *filename; | ||||
| 		filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(ipdc_setup_window)); | ||||
| 		strcpy(ipdcFilePath, filename); | ||||
| 		g_print("File selected: %s\n", filename); | ||||
| 		view_setup_file(filename); | ||||
| 		g_free(filename); | ||||
| 	} | ||||
|  | @ -2224,7 +2225,7 @@ void view_setup_file (char *filename) | |||
| 
 | ||||
| 	gtk_widget_destroy(ipdc_setup_window); | ||||
| 
 | ||||
| 	fp1 = fopen(s, "rb"); | ||||
| 	fp1 = fopen(filename, "rb"); | ||||
| 
 | ||||
| 	if (fp1 == NULL) | ||||
| 	{ | ||||
|  | @ -2279,7 +2280,7 @@ void view_setup_file (char *filename) | |||
| 		fclose (fp1); | ||||
| 
 | ||||
| 		/* Open the iPDC Setup File in read mode */ | ||||
| 		fp1 = fopen(s, "rb"); | ||||
| 		fp1 = fopen(filename, "rb"); | ||||
| 
 | ||||
| 		/* If its available, then create a new dialog window for displaying the iPDC details. */ | ||||
| 		setup_display_window = gtk_dialog_new (); | ||||
|  | @ -2296,7 +2297,7 @@ void view_setup_file (char *filename) | |||
| 		gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | ||||
| 
 | ||||
| 		/* The dialog window is created with a vbox packed into it */ | ||||
| 		gtk_box_pack_start (GTK_BOX (GTK_DIALOG(setup_display_window)), scrolled_window, TRUE, TRUE, 0); | ||||
| 		gtk_box_pack_start (gtk_dialog_get_content_area(setup_display_window), scrolled_window, TRUE, TRUE, 0); | ||||
| 		gtk_widget_show (scrolled_window); | ||||
| 
 | ||||
| 		/* Create a table of ? by 2 squares */ | ||||
|  | @ -2543,8 +2544,8 @@ void view_setup_file (char *filename) | |||
| 		/* This makes it so the ok_button is the default. */ | ||||
| 		gtk_widget_set_can_default (cancel_button, TRUE); | ||||
| 		gtk_widget_set_can_default (apply_button, TRUE); | ||||
| 		gtk_box_pack_start (gtk_dialog_get_action_area, apply_button, TRUE, TRUE, 0); | ||||
| 		gtk_box_pack_start (gtk_dialog_get_action_area, cancel_button, TRUE, TRUE, 0); | ||||
| 		gtk_box_pack_start (gtk_dialog_get_action_area(setup_display_window), apply_button, TRUE, TRUE, 0); | ||||
| 		gtk_box_pack_start (gtk_dialog_get_action_area(setup_display_window), cancel_button, TRUE, TRUE, 0); | ||||
| 
 | ||||
| 		/* This grabs this button to be the default button. Simply hitting the "Enter" key will cause this button to activate. */ | ||||
| 		gtk_widget_grab_default (cancel_button); | ||||
|  |  | |||
|  | @ -319,10 +319,10 @@ void* connect_pmu_tcp(void *temp) { | |||
| 
 | ||||
| 						continue;		 | ||||
| 					} | ||||
| 					if (sendto(DB_sockfd,tcp_BUF, MAXBUFLEN-1, 0, | ||||
| 							(struct sockaddr *)&DB_Server_addr,sizeof(DB_Server_addr)) == -1) { | ||||
| 						perror("sendto"); | ||||
| 					} | ||||
| 					// if (sendto(DB_sockfd,tcp_BUF, MAXBUFLEN-1, 0,
 | ||||
| 					// 		(struct sockaddr *)&DB_Server_addr,sizeof(DB_Server_addr)) == -1) {
 | ||||
| 					// 	perror("sendto");
 | ||||
| 					// }
 | ||||
| 
 | ||||
| 					tcp_BUF[bytes_read] = '\0'; | ||||
| 					PMU_process_TCP(tcp_BUF,tcp_sockfd); | ||||
|  |  | |||
|  | @ -60,7 +60,7 @@ | |||
| #include  "align_sort.h" | ||||
| #include  "connections.h" | ||||
| #include  "recreate.h" | ||||
| 
 | ||||
| #include  "utility_tools.h" | ||||
| 
 | ||||
| /* ----------------------------------------------------------------------------	*/ | ||||
| /* FUNCTION  cfgparser():                                	     		*/ | ||||
|  | @ -1269,6 +1269,23 @@ int dataparser(unsigned char data[]) { | |||
| 		//No match for configuration frame
 | ||||
| 		printf("Configuration is not fresent for received data frame!\n");	 | ||||
| 	}   | ||||
| 	printf("freq = %d\n",to_intconvertor(df->dpmu[0]->freq)); | ||||
| 	// temp code 
 | ||||
| 	int freq = to_intconvertor(df->dpmu[0]->freq); | ||||
| 	if(util_map != NULL){ | ||||
| 		g_red_image = gdk_pixbuf_new_from_file_at_size ("red.png", 24,24,NULL); | ||||
|     	g_green_image = gdk_pixbuf_new_from_file_at_size ("green.png", 24,24,NULL); | ||||
| 		if(g_last_image != 0){ | ||||
| 		osm_gps_map_image_remove(util_map, g_last_image); | ||||
| 		} | ||||
| 		if (freq > 300){ | ||||
| 			g_last_image = osm_gps_map_image_add(util_map,15.518597, 74.925584, g_green_image); | ||||
| 		}else{ | ||||
| 			g_last_image = osm_gps_map_image_add(util_map,15.518597, 74.925584, g_green_image); | ||||
| 		} | ||||
| 		gtk_widget_show_all(GTK_WIDGET(util_map)); | ||||
| 
 | ||||
| 	} | ||||
| 
 | ||||
| 	if((config_change == 14) ||(config_change == 10))  | ||||
| 		return config_change; | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.1 KiB | 
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 69 KiB | 
|  | @ -1,8 +1,18 @@ | |||
| #include<gtk/gtk.h> | ||||
| #include "osm-gps-map.h" | ||||
| #include "utility_tools.h" | ||||
| 
 | ||||
| #define UI_fILE "./utility_tools.ui" | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| // void change_image(OsmGpsMap *map, float lat, float lon, OsmGpsMapImage *image)
 | ||||
| // {
 | ||||
| //     if (g_last_image)
 | ||||
| //         osm_gps_map_image_remove(map, g_last_image);
 | ||||
| //     osm_gps_map_image_add(map, lat, lon, image);
 | ||||
| // }
 | ||||
| 
 | ||||
| 
 | ||||
| void utility_tools(GtkButton *but, gpointer udata) | ||||
| { | ||||
|     GtkBuilder *builder; | ||||
|  | @ -13,16 +23,24 @@ void utility_tools(GtkButton *but, gpointer udata) | |||
| 		g_warning("%s", error->message); | ||||
| 		g_free(error); | ||||
| 	} | ||||
|     GtkWidget *window = GTK_WIDGET(gtk_builder_get_object(builder, "util_window")); | ||||
|     window = GTK_WIDGET(gtk_builder_get_object(builder, "util_window")); | ||||
|     GtkContainer *map_container = GTK_CONTAINER(gtk_builder_get_object(builder, "map_layout")); | ||||
| 
 | ||||
|     OsmGpsMap *map = g_object_new (OSM_TYPE_GPS_MAP, | ||||
|                                   "map-source", OSM_GPS_MAP_SOURCE_OPENSTREETMAP, | ||||
|      | ||||
| 
 | ||||
|     util_map = g_object_new (OSM_TYPE_GPS_MAP, | ||||
|                                   "map-source", OSM_GPS_MAP_SOURCE_GOOGLE_HYBRID, | ||||
|                                   "tile-cache", "/tmp/", | ||||
|                                   NULL); | ||||
|     gtk_widget_set_size_request(GTK_WIDGET(map), 800, 600); | ||||
|     osm_gps_map_set_center_and_zoom (util_map, 15.4589, 75.0078, 10); | ||||
|     g_red_image = gdk_pixbuf_new_from_file_at_size ("red.png", 24,24,NULL); | ||||
|     g_green_image = gdk_pixbuf_new_from_file_at_size ("green.png", 24,24,NULL); | ||||
| 
 | ||||
|     gtk_container_add(map_container, GTK_WIDGET(map)); | ||||
|     // g_last_image =  osm_gps_map_image_add(util_map,15.4589, 75.0078, g_red_image);
 | ||||
|     // g_last_image =  osm_gps_map_image_add(util_map,15.518597, 74.925584, g_green_image);
 | ||||
|     gtk_widget_set_size_request(GTK_WIDGET(util_map), 600, 500); | ||||
| 
 | ||||
|     gtk_container_add(map_container, GTK_WIDGET(util_map)); | ||||
| 
 | ||||
|     gtk_widget_show_all(window); | ||||
|     gtk_main(); | ||||
|  |  | |||
|  | @ -1,4 +1,5 @@ | |||
| #include<gtk/gtk.h> | ||||
| #include "osm-gps-map.h" | ||||
| 
 | ||||
| /* Convenience macros for obtaining objects from UI file */ | ||||
| #define CH_GET_OBJECT(builder, name, type, data) \ | ||||
|  | @ -6,4 +7,10 @@ | |||
| #define CH_GET_WIDGET(builder, name, data) \ | ||||
| 		CH_GET_OBJECT(builder, name, GTK_WIDGET, data) | ||||
| 
 | ||||
| OsmGpsMap *util_map; | ||||
| GtkWidget *window; | ||||
| static GdkPixbuf *g_red_image = NULL; | ||||
| static GdkPixbuf *g_green_image = NULL; | ||||
| static OsmGpsMapImage *g_last_image = NULL; | ||||
| 
 | ||||
| void utility_tools(GtkButton *but, gpointer udata); | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -0,0 +1,106 @@ | |||
| /* ----------------------------------------------------------------------------- 
 | ||||
|  * align_sort.h | ||||
|  * | ||||
|  * iPDC - Phasor Data Concentrator | ||||
|  * | ||||
|  * Copyright (C) 2011-2012 Nitesh Pandit | ||||
|  * Copyright (C) 2011-2012 Kedar V. Khandeparkar | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License | ||||
|  * as published by the Free Software Foundation; either version 2 | ||||
|  * of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. | ||||
|  * | ||||
|  * Authors:  | ||||
|  *		Nitesh Pandit <panditnitesh@gmail.com> | ||||
|  *		Kedar V. Khandeparkar <kedar.khandeparkar@gmail.com>			 | ||||
|  * | ||||
|  * ----------------------------------------------------------------------------- */ | ||||
| 
 | ||||
| 
 | ||||
| #define MAXTSB 5 | ||||
| #define OLDFRAMECOUNT 5 | ||||
| 
 | ||||
| /* ---------------------------------------------------------------- */ | ||||
| /*                         global variable                          */ | ||||
| /* ---------------------------------------------------------------- */ | ||||
| 
 | ||||
| int front = -1; | ||||
| int rear=-1; | ||||
| int Tsb_Count = 0; | ||||
| 
 | ||||
| /* ---------------------------------------------------------------- */ | ||||
| /*                         global Data Structure                    */ | ||||
| /* ---------------------------------------------------------------- */ | ||||
| 
 | ||||
| /* Data Structure for Time Stamp Buffer */ | ||||
| struct TimeStampBuffer { | ||||
| 
 | ||||
| 	char *soc; | ||||
| 	char *fracsec; | ||||
| 	int count; // Current index
 | ||||
| 	int num; // Total Number of PMUs
 | ||||
| 	int counter; // Timer that will be initially set to 0
 | ||||
| 	int ready_to_send; | ||||
| 	struct pmupdc_id_list *idlist; | ||||
| 	struct data_frame *first_data_frame; | ||||
| 
 | ||||
| }TSB[MAXTSB]; | ||||
| 
 | ||||
| struct pmupdc_id_list { | ||||
| 
 | ||||
| 	char *idcode; | ||||
| 	int num_pmu; | ||||
| 	struct pmupdc_id_list *nextid; | ||||
| }; | ||||
| 
 | ||||
| // Kedar K on 8/6/2013
 | ||||
| struct  oldDataFramesTimeStampList | ||||
| { | ||||
| 	unsigned int soc; | ||||
| 	unsigned int fracsec; | ||||
| 
 | ||||
| }ODFT[OLDFRAMECOUNT]; | ||||
| 
 | ||||
| int old_df_front = -1; | ||||
| int old_df_rear = -1; | ||||
| 
 | ||||
| /* ---------------------------------------------------------------- */ | ||||
| /*                 	Function prototypes   		            */ | ||||
| /* ---------------------------------------------------------------- */ | ||||
| 
 | ||||
| void time_align(struct data_frame *df); | ||||
| 
 | ||||
| void assign_df_to_TSB(struct data_frame *df,int index); | ||||
| 
 | ||||
| void dispatch(int index); | ||||
| 
 | ||||
| void clear_TSB(int index); | ||||
| 
 | ||||
| int create_dataframe(int index); | ||||
| 
 | ||||
| void checkForMissingFrames(ENTRY*); | ||||
| 
 | ||||
| int create_cfgframe(); | ||||
| 
 | ||||
| void sort_data_inside_TSB(int index); | ||||
| 
 | ||||
| struct data_frame* generate_dummy_dataframe(unsigned char *); | ||||
| 
 | ||||
| void adjustOldFrameCount(int index); | ||||
| 
 | ||||
| void intermediate_dispatch(int xx); | ||||
| 
 | ||||
| int matchDataFrameTimeToTSBTime(unsigned int df_soc,unsigned int df_fracsec); | ||||
| 
 | ||||
| void attacheEachDataFrame(struct data_frame *temp_df,int z); | ||||
| /**************************************** End of File *******************************************************/ | ||||
|  | @ -0,0 +1,724 @@ | |||
| /* ----------------------------------------------------------------------------- 
 | ||||
|  * applications.c | ||||
|  *  | ||||
|  * iPDC - Phasor Data Concentrator | ||||
|  * | ||||
|  * Copyright (C) 2011-2012 Nitesh Pandit | ||||
|  * Copyright (C) 2011-2012 Kedar V. Khandeparkar | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License | ||||
|  * as published by the Free Software Foundation; either version 2 | ||||
|  * of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. | ||||
|  * | ||||
|  * Authors:  | ||||
|  *		Kedar V. Khandeparkar <kedar.khandeparkar@gmail.com>			 | ||||
|  * | ||||
|  * ----------------------------------------------------------------------------- */ | ||||
| 
 | ||||
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| #include <stdlib.h>  | ||||
| #include <math.h>       /* fabs */ | ||||
| #include "parser.h" | ||||
| #include "global.h"  | ||||
| #include "dallocate.h" | ||||
| #include "applications.h" | ||||
| 
 | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| /* FUNCTION  averageFrequency():                               	     				*/ | ||||
| /* Computes average of frequency from all PMUs 										*/ | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| 
 | ||||
| float averageFrequency(struct data_frame *df) { | ||||
| 
 | ||||
| 	//struct data_frame *df = TSB[index].first_data_frame;
 | ||||
| 	struct cfg_frame *temp_cfg = cfgfirst; | ||||
| 	struct data_frame *temp_df; | ||||
| 	float tempFreq = 0,avgFrequency; | ||||
| 	int noOfPMU,i,j,count = 0; | ||||
| 
 | ||||
| 	pthread_mutex_lock(&mutex_cfg); | ||||
| 
 | ||||
| 	while(temp_cfg != NULL){ | ||||
| 		 | ||||
| 		noOfPMU = to_intconvertor(temp_cfg->num_pmu);	 | ||||
| 		count += noOfPMU; | ||||
| 		temp_cfg = temp_cfg->cfgnext;	 | ||||
| 	} | ||||
| 	 | ||||
| 	for(i = 0;i<(count*10-100);i++) { | ||||
| 	 | ||||
| 		temp_df = df;		 | ||||
| 		temp_cfg = cfgfirst; | ||||
| 		//printf("count = %d\n",count);
 | ||||
| 
 | ||||
| 		while(temp_cfg != NULL){ | ||||
| 			 | ||||
| 			noOfPMU = to_intconvertor(temp_cfg->num_pmu);	 | ||||
| 		 | ||||
| 			if(temp_df != NULL) { | ||||
| 				 | ||||
| 				for(j = 0;j < noOfPMU; j++) { | ||||
| 
 | ||||
| 					//printf("a\n");
 | ||||
| 					if(temp_cfg->pmu[j]->fmt->freq == '1')	{		  					 | ||||
| 					 | ||||
| 						tempFreq += decode_ieee_single(temp_df->dpmu[j]->freq); 					 | ||||
| 
 | ||||
| 					} else {					 | ||||
| 
 | ||||
| 						tempFreq += to_intconvertor(temp_df->dpmu[j]->freq); 					 | ||||
| 					} | ||||
| 				}	 | ||||
| 				temp_df = temp_df->dnext; | ||||
| 			} | ||||
| 			temp_cfg = temp_cfg->cfgnext;	 | ||||
| 		} | ||||
| 	} | ||||
| 	pthread_mutex_unlock(&mutex_cfg); | ||||
| 	 | ||||
| 	avgFrequency = tempFreq/count;	 | ||||
| 	return avgFrequency; | ||||
| } | ||||
| 
 | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| /* FUNCTION  frequencyInstability():                           	     				*/ | ||||
| /* Computes weighted average of frequency from some PMUs 							*/ | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| 
 | ||||
| /*int frequencyInstability(struct data_frame *df) {
 | ||||
| 
 | ||||
| 	//struct data_frame *df = TSB[index].first_data_frame;
 | ||||
| 	struct cfg_frame *temp_cfg = cfgfirst; | ||||
| 
 | ||||
| 	float tempFreq = 0,tempFc=0,totalFreq =0,totalHi=0; | ||||
| 	float timeDiff = 20*1e-3; | ||||
| 	float deltaFreq = 0; | ||||
| 	int noOfPMUs = 0,totalPMUs=0,j; | ||||
| 
 | ||||
| 	while(temp_cfg != NULL){ | ||||
| 
 | ||||
| 			totalPMUs += to_intconvertor(temp_cfg->num_pmu);	 | ||||
| 			temp_cfg = temp_cfg->cfgnext; | ||||
| 	}	 | ||||
| 
 | ||||
| 	int generatorPMUs = (totalPMUs*ratio) + 2;  // Considered 1/5*noofPMUs+2 frequencies
 | ||||
| 	int x = 0,*Hi; | ||||
| 	Hi = randomGenerator(minHi,maxHi,generatorPMUs); | ||||
| 	 | ||||
| 	temp_cfg = cfgfirst; | ||||
| 
 | ||||
| 	while(temp_cfg != NULL) { | ||||
| 		 | ||||
| 		noOfPMUs = to_intconvertor(temp_cfg->num_pmu);	  | ||||
| 
 | ||||
| 		if(df != NULL) { | ||||
| 			 | ||||
| 			for(j=0;j<noOfPMUs;j++) {		  					 | ||||
| 
 | ||||
| 				if(temp_cfg->pmu[j]->fmt->freq == '1') {					 | ||||
| 
 | ||||
| 					if(x == generatorPMUs) | ||||
| 						break; | ||||
| 					tempFreq = decode_ieee_single(df->dpmu[j]->freq);  | ||||
| 					totalFreq += Hi[x]*tempFreq;	// Sum of Hi*fi (numerator)
 | ||||
| 					totalHi += Hi[x];				// Sum of Hi (denominator)
 | ||||
| 					x++;					 | ||||
| 				} else { | ||||
| 
 | ||||
| 					if(x == generatorPMUs) | ||||
| 						break;					 | ||||
| 					tempFreq = to_intconvertor(df->dpmu[j]->freq);  | ||||
| 					totalFreq += Hi[x]*tempFreq; // Sum of Hi*fi (numerator)
 | ||||
| 					totalHi += Hi[x];   		  // Sum of Hi (denominator)
 | ||||
| 					x++;			 | ||||
| 				}			  | ||||
| 			} 					 | ||||
| 			 | ||||
| 			df = df->dnext; | ||||
| 		} | ||||
| 		temp_cfg = temp_cfg->cfgnext;		 | ||||
| 	} | ||||
| 
 | ||||
| 	free(Hi); | ||||
| 
 | ||||
| 	if(fc == 0) { | ||||
| 
 | ||||
| 		fc = totalFreq/totalHi; | ||||
| 		return 0; | ||||
| 
 | ||||
| 	} else { | ||||
| 
 | ||||
| 		tempFc = totalFreq/totalHi; | ||||
| 		deltaFreq = fabs(fc-tempFc)/timeDiff; | ||||
| 		/// Need to check deltaFreq < Threshold
 | ||||
| 		fc = tempFc; | ||||
| 		if(deltaFreq>delFThreshold) | ||||
| 			return 1; | ||||
| 		else return 0; | ||||
| 	} | ||||
| } | ||||
| */ | ||||
| 
 | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| /* FUNCTION  angleInstability():                           	     					*/ | ||||
| /* Computes angular deviations from center of inertia 								*/ | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| 
 | ||||
| /*int angleInstability(struct data_frame *df) {
 | ||||
| 
 | ||||
| 	//struct data_frame *df = TSB[index].first_data_frame
 | ||||
| 	struct cfg_frame *temp_cfg = cfgfirst; | ||||
| 	float totalPi,totalTheta,localAreaPi,*localAreaTheta; | ||||
| 	int totalPMUs,noOfPMU,noOfAreas,noOfPMUsInOneArea,tempTotalPMUs,*localAreaPowerSchedule,*individualPowerSchedule; | ||||
| 	 | ||||
| 	noOfPMUsInOneArea = 5; | ||||
| 	totalPi= totalTheta =localAreaPi = 0; | ||||
| 
 | ||||
| 	while(temp_cfg != NULL){ | ||||
| 
 | ||||
| 			totalPMUs += to_intconvertor(temp_cfg->num_pmu);	 | ||||
| 			temp_cfg = temp_cfg->cfgnext; | ||||
| 	}	 | ||||
| 
 | ||||
| 	tempTotalPMUs = totalPMUs; | ||||
| 	float tt; | ||||
| 	tt = (float)(totalPMUs*ratio)+2; // Number of areas eg 200*1/5+2 = 42
 | ||||
| 	noOfAreas = nearbyint(tt/noOfPMUsInOneArea); // 42/5 = 8.4
 | ||||
| 	int tt1 = (int)(noOfAreas);				// 8
 | ||||
| 	int rem = nearbyint(tt%noOfPMUsInOneArea); | ||||
| 	if(fabs(tt-tt1) >0) {	//8.4 - 8 =0.4
 | ||||
| 
 | ||||
| 		noOfAreas++;		// noOfAreas = 9
 | ||||
| 	} | ||||
| 
 | ||||
| 	localAreaTheta = malloc((noOfAreas + 1)*sizeof(float));	 | ||||
| 	localAreaPowerSchedule = malloc((noOfAreas + 1)*sizeof(int));		 | ||||
| 	individualPowerSchedule = randomGenerator(minPi,maxPi,tt); | ||||
| 
 | ||||
| 	temp_cfg = cfgfirst; | ||||
| 
 | ||||
| 	float tempAreaAngle,tempAreaPower; | ||||
| 	unsigned int phnmr,noOfPMUs,pType; | ||||
| 	int x,y,z,i,j; // x to track no of areas and y to track no of generators in those areas z for individual generator schedule
 | ||||
| 	i = j = x = y = z = 0;  | ||||
| 	tempAreaPower = tempAreaAngle = 0; | ||||
| 	unsigned char *d,*fp_left,*fp_right,*fx_left,*fx_right,*phasorType,polar; | ||||
| 
 | ||||
| 	fp_left = malloc(5*sizeof(unsigned char)); | ||||
| 	fp_right = malloc(5*sizeof(unsigned char)); | ||||
| 	fx_left = malloc(3*sizeof(unsigned char)); | ||||
| 	fx_right = malloc(3*sizeof(unsigned char)); | ||||
| 	phasorType = malloc(1*sizeof(unsigned char)); | ||||
| 
 | ||||
| 	while(temp_cfg != NULL) { // Main Loop starts
 | ||||
| 	 | ||||
| 		if(df != NULL) { | ||||
| 			 | ||||
| 			noOfPMUs = to_intconvertor(temp_cfg->num_pmu);	 | ||||
| 			 | ||||
| 			for(j = 0;j < noOfPMUs;j++) { | ||||
| 
 | ||||
| 				phnmr = to_intconvertor(temp_cfg->pmu[j]->phnmr);	 | ||||
| 
 | ||||
| 				if(phnmr != 0) { | ||||
| 					 | ||||
| 					if(temp_cfg->pmu[j]->fmt->phasor == 1) { // Floating	
 | ||||
| 						 | ||||
| 						for(i = 0;i<phnmr;i++) {		 | ||||
| 												 | ||||
| 							copy_cbyc (phasorType,(unsigned char *)temp_cfg->pmu[j]->phunit[i],1); | ||||
| 							pType = to_intconvertor1(phasorType); | ||||
| 
 | ||||
| 							if((pType == 0)&&(i%3 ==0)) { // pTYpe = 0 indicates V and only phase I is chosen with the assumption that 3 phase data is sent
 | ||||
| 
 | ||||
| 								d = df->dpmu[j]->phasors[i];	 | ||||
| 								polar = temp_cfg->pmu[j]->fmt->polar;	 | ||||
| 								tempAreaAngle += (getVoltagePhasorAngle(1,fp_left,fp_right,d,polar,temp_cfg,i,j)) * individualPowerSchedule[z]; // 1 -> floating pt								
 | ||||
| 								tempAreaPower += individualPowerSchedule[z]; | ||||
| 								z++;	 | ||||
| 								y++;								 | ||||
| 
 | ||||
| 								if(y == rem && (x == noOfAreas - 1)) { | ||||
| 									 | ||||
| 									localAreaTheta[x] = tempAreaAngle/tempAreaPower;									 | ||||
| 									x++; | ||||
| 									break; | ||||
| 
 | ||||
| 								} else if(y == noOfPMUsInOneArea) { | ||||
| 
 | ||||
| 									localAreaTheta[x] = tempAreaAngle/tempAreaPower; | ||||
| 									y = 0; | ||||
| 									x++; | ||||
| 								}								 | ||||
| 							}								 | ||||
| 						}					 | ||||
| 						 | ||||
| 					} else { // fixed point
 | ||||
| 
 | ||||
| 						for(i = 0;i < phnmr; i++){	 | ||||
| 
 | ||||
| 							copy_cbyc (phasorType,(unsigned char *)temp_cfg->pmu[j]->phunit[i],1); | ||||
| 							pType = to_intconvertor1(phasorType); | ||||
| 							 | ||||
| 							if((pType == 0)&&(i%3 ==0)) { | ||||
| 
 | ||||
| 		                        d = df->dpmu[j]->phasors[i];	 | ||||
| 								polar = temp_cfg->pmu[j]->fmt->polar;	 | ||||
| 								tempAreaAngle += getVoltagePhasorAngle(0,fp_left,fp_right,d,polar,temp_cfg,i,j)* individualPowerSchedule[z]; // 0 -> fixed pt								
 | ||||
| 								tempAreaPower += individualPowerSchedule[z]; | ||||
| 								z++;	 | ||||
| 								y++;								 | ||||
| 
 | ||||
| 								if(y == rem && (x == noOfAreas - 1)) { | ||||
| 									 | ||||
| 									localAreaTheta[x] = tempAreaAngle/tempAreaPower;									 | ||||
| 									localAreaPowerSchedule[x] = tempAreaPower; | ||||
| 									x++; | ||||
| 									break; | ||||
| 
 | ||||
| 								} else if(y == noOfPMUsInOneArea) { | ||||
| 
 | ||||
| 									localAreaTheta[x] = tempAreaAngle/tempAreaPower; | ||||
| 									localAreaPowerSchedule[x] = tempAreaPower; | ||||
| 									y = 0; | ||||
| 									x++; | ||||
| 								} | ||||
| 							}	                         | ||||
| 						} | ||||
| 						 | ||||
| 					}											 | ||||
| 				} | ||||
| 			} // if df ends	
 | ||||
| 			df = df->dnext;	 | ||||
| 		} | ||||
| 		temp_cfg = temp_cfg->cfgnext; | ||||
| 	} // Main loop ends
 | ||||
| 
 | ||||
| 	float centerAngle,totalPower; | ||||
| 	centerAngle = totalPower = 0; | ||||
| 
 | ||||
| 	for (i = 0;i<noOfAreas;i++) { | ||||
| 	 | ||||
| 		centerAngle += localAreaTheta[i]*localAreaPowerSchedule[i]; | ||||
| 		totalPower += localAreaPowerSchedule[i]; | ||||
| 	} | ||||
| 	centerAngle = centerAngle/totalPower; | ||||
| 
 | ||||
| 	char *violation = malloc(noOfAreas*sizeof(char)); | ||||
| 	for (i = 0;i<noOfAreas;i++)  | ||||
| 	{ | ||||
| 		if(fabs(centerAngle - localAreaTheta[i]) > angleThreshold) | ||||
| 			violation[i] = '1'; | ||||
| 		else | ||||
| 			violation[i] = '0'; | ||||
| 	} | ||||
| 
 | ||||
| 	free(violation); | ||||
| 	free(localAreaTheta);	 | ||||
| 	free(localAreaPowerSchedule); | ||||
| 	free(individualPowerSchedule); | ||||
| 	free(fp_right); | ||||
| 	free(fp_left); | ||||
| 	free(fx_right); | ||||
| 	free(fx_left); | ||||
| } | ||||
| */ | ||||
| 
 | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| /* FUNCTION  voltagePhasorAggregation():                          	     					*/ | ||||
| /* Computes voltage phasor phasorAggregation 										*/ | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| 
 | ||||
| /*float voltagePhasorAggregation(struct data_frame *df) {
 | ||||
| 
 | ||||
| 	//struct data_frame *df = TSB[index].first_data_frame;
 | ||||
| 	struct cfg_frame *temp_cfg = cfgfirst; | ||||
| 
 | ||||
| 	int i,j,noOfPMUs,totalPMUs; | ||||
| 	totalPMUs = i = j = 0; | ||||
| 
 | ||||
| 	while(temp_cfg != NULL){ | ||||
| 
 | ||||
| 			totalPMUs += to_intconvertor(temp_cfg->num_pmu);	 | ||||
| 			temp_cfg = temp_cfg->cfgnext; | ||||
| 	} | ||||
| 
 | ||||
| 	int generatorPMUs = (totalPMUs*ratio) + 4; | ||||
| 	temp_cfg = cfgfirst; | ||||
| 
 | ||||
| 	unsigned int phnmr; | ||||
| 	char polar; | ||||
| 	float avgVoltageMagnitude = 0; | ||||
| 	unsigned char *d; | ||||
| 	int x = 0; | ||||
| 
 | ||||
| 	unsigned char *fp_left,*fp_right,*fx_left,*fx_right,*phasorType; | ||||
| 	fp_left = malloc(5*sizeof(unsigned char)); | ||||
| 	fp_right = malloc(5*sizeof(unsigned char)); | ||||
| 	fx_left = malloc(3*sizeof(unsigned char)); | ||||
| 	fx_right = malloc(3*sizeof(unsigned char)); | ||||
| 	phasorType = malloc(1*sizeof(unsigned char)); | ||||
| 
 | ||||
| 	int pType; | ||||
| 
 | ||||
| 	while(temp_cfg != NULL){ // Main Loop starts
 | ||||
| 	 | ||||
| 		if(df != NULL) { | ||||
| 			 | ||||
| 			noOfPMUs = to_intconvertor(temp_cfg->num_pmu);	 | ||||
| 			 | ||||
| 			for(j=0;j<noOfPMUs;j++) { | ||||
| 				phnmr = to_intconvertor(temp_cfg->pmu[j]->phnmr);	 | ||||
| 				if(phnmr != 0) { | ||||
| 					if(temp_cfg->pmu[j]->fmt->phasor == 1) { // Floating	
 | ||||
| 
 | ||||
| 						for(i = 0;i<phnmr;i++) {		 | ||||
| 
 | ||||
| 							copy_cbyc (phasorType,(unsigned char *)temp_cfg->pmu[j]->phunit[i],1); | ||||
| 							pType = to_intconvertor1(phasorType); | ||||
| 							if((pType == 0) && (i%3 == 0)) { | ||||
| 
 | ||||
| 								d = df->dpmu[j]->phasors[i];	 | ||||
| 								polar = temp_cfg->pmu[j]->fmt->polar;	 | ||||
| 								avgVoltageMagnitude += getPhasorVolageMagnitude(1,fp_left,fp_right,d,polar,temp_cfg,i,j); // 1 -> floating pt
 | ||||
| 							}	 | ||||
| 							 | ||||
| 						} | ||||
| 						x++; | ||||
| 						if(x == generatorPMUs) | ||||
| 							break;  | ||||
| 					} else { // fixed point
 | ||||
| 
 | ||||
| 						for(i = 0;i < phnmr; i++){	 | ||||
| 
 | ||||
| 							copy_cbyc (phasorType,(unsigned char *)temp_cfg->pmu[j]->phunit[i],1); | ||||
| 							pType = to_intconvertor1(phasorType); | ||||
| 							if((pType == 0) && (i%3 == 0)) { | ||||
| 
 | ||||
| 		                        d = df->dpmu[j]->phasors[i];	 | ||||
| 								polar = temp_cfg->pmu[j]->fmt->polar;	 | ||||
| 								avgVoltageMagnitude += getPhasorVolageMagnitude(0,fp_left,fp_right,d,polar,temp_cfg,i,j); // 0 -> fixed pt
 | ||||
| 							}	                         | ||||
| 						} | ||||
| 						x++; | ||||
| 						if(x == generatorPMUs) | ||||
| 							break;  | ||||
| 					}											 | ||||
| 				} | ||||
| 			}	 | ||||
| 			df = df->dnext;	 | ||||
| 		} | ||||
| 		temp_cfg = temp_cfg->cfgnext; | ||||
| 	} // Main loop ends
 | ||||
| 
 | ||||
| 	free(fp_right); | ||||
| 	free(fp_left); | ||||
| 	free(fx_right); | ||||
| 	free(fx_left); | ||||
| 
 | ||||
| 	return avgVoltageMagnitude; | ||||
| } | ||||
| */ | ||||
| 
 | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| /* FUNCTION  randomGenerator():                           	     					*/ | ||||
| /* num random numbers array generated between min to max 							*/ | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| 
 | ||||
| int * randomGenerator(int max,int min,int num) { | ||||
| 
 | ||||
| 	int c =0,n,*coeff; | ||||
| 	coeff = malloc((num+1)*sizeof(int)); | ||||
| 
 | ||||
| 	while(1) { | ||||
| 
 | ||||
|     	n = rand()%max + min; | ||||
| 
 | ||||
|     	if(n>=min && n<= max) { | ||||
|     		coeff[c] = n;    		 | ||||
|     		c++; | ||||
| 
 | ||||
|     		if(c == num) | ||||
|     		break; | ||||
|     	}    | ||||
|   	}	 | ||||
|  	return coeff; 	   | ||||
| } | ||||
| 
 | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| /* FUNCTION  getVoltagePhasorAngle():                           	     					*/ | ||||
| /* get the phase angle 																*/ | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| 
 | ||||
| /*float getVoltagePhasorAngle(int format,char left[],char right[],unsigned char *d,char polar,struct cfg_frame *temp_cfg,int i,int j) {
 | ||||
| 
 | ||||
| 	float fp_r,fp_i,fp_angle; | ||||
| 	unsigned int f_r,f_i; | ||||
| 
 | ||||
| 	 | ||||
| 	if(format == 1) { // format indicates fixed or floating point
 | ||||
| 
 | ||||
| 		memset(left,'\0',5); | ||||
| 		memset(right,'\0',5); | ||||
| 		//d = df->dpmu[j]->phasors[i];						
 | ||||
| 
 | ||||
| 		copy_cbyc (left,d,4); | ||||
| 		left[4] = '\0'; | ||||
| 		d += 4; | ||||
| 
 | ||||
| 		copy_cbyc(right,d,4); | ||||
| 		right[4] = '\0';    | ||||
| 		d += 4; | ||||
| 
 | ||||
| 		fp_r = decode_ieee_single(left); | ||||
| 		fp_i = decode_ieee_single(right); | ||||
| 
 | ||||
| 		if(polar == '1') { // POLAR
 | ||||
| 					 | ||||
| 			fp_angle = fp_i; | ||||
| 		} else { // rectangular
 | ||||
| 
 | ||||
| 			fp_angle = atan2f(fp_i, fp_r); | ||||
| 		} | ||||
| 
 | ||||
| 	} else { | ||||
| 
 | ||||
| 
 | ||||
|         memset(left,'\0',3); | ||||
|         memset(right,'\0',3); | ||||
| 
 | ||||
| 		copy_cbyc (left,d,2); | ||||
|         left[2] = '\0'; | ||||
|         d += 2; | ||||
| 
 | ||||
|         copy_cbyc(right,d,2); | ||||
|         right[2] = '\0';    | ||||
|         d += 2; | ||||
| 
 | ||||
|         f_r = to_intconvertor(left); | ||||
|         f_i = to_intconvertor(right); | ||||
| 
 | ||||
|         if(polar == '1') { // POLAR
 | ||||
|                | ||||
|             fp_angle = f_i*1e-4; // Angle is in 10^4 radians
 | ||||
|         } else // RECTANGULAR 
 | ||||
|         { | ||||
|         	unsigned char *s = (unsigned char *)temp_cfg->pmu[j]->phunit[i]; | ||||
|         	s++; | ||||
| 
 | ||||
|         	unsigned char *buf = malloc(4*sizeof(unsigned char));        	 | ||||
|         	copy_cbyc (buf,(unsigned char *)s,3); | ||||
| 			buf[3] = '\0'; | ||||
| 			unsigned long int l_phunit; | ||||
| 			l_phunit = to_long_int_convertor1(buf); | ||||
| 			l_phunit = l_phunit * 1e-5; | ||||
| 
 | ||||
|          	fp_r = l_phunit *f_r; | ||||
|             fp_i = l_phunit *f_i; | ||||
|                              | ||||
|             fp_angle = atan2f(fp_i, fp_r); | ||||
|             free(buf); | ||||
|        	} | ||||
| 
 | ||||
| 	}	 | ||||
| 	return fp_angle; | ||||
| } | ||||
| */ | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| /* FUNCTION  getPhasorVolageMagnitude():                           	     			*/ | ||||
| /* get the phasor volage magnitude 													*/ | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| 
 | ||||
| /*float getPhasorVolageMagnitude(int format,char left[],char right[],unsigned char *d,char polar,struct cfg_frame *temp_cfg,int i,int j) {
 | ||||
| 
 | ||||
| 	float fp_r,fp_i,fp_magnitude; | ||||
| 	unsigned int f_r,f_i; | ||||
| 	 | ||||
| 	if(format == 1) { // format indicates fixed or floating point
 | ||||
| 
 | ||||
| 		memset(left,'\0',5); | ||||
| 		memset(right,'\0',5); | ||||
| 		//d = df->dpmu[j]->phasors[i];						
 | ||||
| 
 | ||||
| 		copy_cbyc (left,d,4); | ||||
| 		left[4] = '\0'; | ||||
| 		d += 4; | ||||
| 
 | ||||
| 		copy_cbyc(right,d,4); | ||||
| 		right[4] = '\0';    | ||||
| 		d += 4; | ||||
| 
 | ||||
| 		fp_r = decode_ieee_single(left); | ||||
| 		fp_i = decode_ieee_single(right); | ||||
| 
 | ||||
| 		if(polar == '1') { // POLAR
 | ||||
| 					 | ||||
| 			fp_magnitude = fp_r; | ||||
| 		} else { // rectangular
 | ||||
| 
 | ||||
| 			fp_magnitude = sqrt(fp_i*fp_i + fp_r*fp_r); | ||||
| 		} | ||||
| 
 | ||||
| 	} else { | ||||
| 
 | ||||
| 
 | ||||
|         memset(left,'\0',3); | ||||
|         memset(right,'\0',3); | ||||
| 
 | ||||
| 		copy_cbyc (left,d,2); | ||||
|         left[2] = '\0'; | ||||
|         d += 2; | ||||
| 
 | ||||
|         copy_cbyc(right,d,2); | ||||
|         right[2] = '\0';    | ||||
|         d += 2; | ||||
| 
 | ||||
|         f_r = to_intconvertor(left); | ||||
|         f_i = to_intconvertor(right); | ||||
| 
 | ||||
| 	    unsigned char *s = (unsigned char *)temp_cfg->pmu[j]->phunit[i]; | ||||
|         s++; | ||||
| 
 | ||||
|         unsigned char *buf = malloc(4*sizeof(unsigned char));        	 | ||||
|         copy_cbyc (buf,(unsigned char *)s,3); | ||||
| 		buf[3] = '\0'; | ||||
| 		unsigned long int l_phunit; | ||||
| 		l_phunit = to_long_int_convertor1(buf); | ||||
| 		l_phunit = l_phunit * 1e-5; | ||||
| 		free(buf); | ||||
|          | ||||
|         if(polar == '1') { // POLAR
 | ||||
|                | ||||
|             fp_magnitude = f_r*l_phunit;  | ||||
| 
 | ||||
|         } else // RECTANGULAR 
 | ||||
|         {        	 | ||||
|          	fp_r = l_phunit *f_r; | ||||
|             fp_i = l_phunit *f_i; | ||||
|                              | ||||
|             fp_magnitude = sqrt(fp_i*fp_i + fp_r*fp_r);            | ||||
|        	} | ||||
| 	}	 | ||||
| 	return fp_magnitude; | ||||
| } | ||||
| */ | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| /* FUNCTION  outOfStepDetection(): 		                          	     			*/ | ||||
| /* angle deviations 																*/ | ||||
| /* ----------------------------------------------------------------------------		*/ | ||||
| 
 | ||||
| /*float outOfStepDetection(struct data_frame *df) {
 | ||||
| 
 | ||||
| 	//struct data_frame *df = TSB[index].first_data_frame;
 | ||||
| 	struct cfg_frame *temp_cfg = cfgfirst; | ||||
| 
 | ||||
| 	int i,j,noOfPMUs,totalPMUs; | ||||
| 	totalPMUs = i = j = 0; | ||||
| 
 | ||||
| 	while(temp_cfg != NULL){ | ||||
| 
 | ||||
| 			totalPMUs += to_intconvertor(temp_cfg->num_pmu);	 | ||||
| 			temp_cfg = temp_cfg->cfgnext; | ||||
| 	} | ||||
| 
 | ||||
| 	int generatorPMUs = (totalPMUs*ratio); | ||||
| 	if(generatorPMUs%2 == 1)  | ||||
| 		generatorPMUs +=1; | ||||
| 	 | ||||
| 	temp_cfg = cfgfirst; | ||||
| 
 | ||||
| 	if(OOSTD == '0') { | ||||
| 
 | ||||
| 		delta = malloc((generatorPMUs+1)*sizeof(float));		 | ||||
| 		if(delta == NULL)  | ||||
| 			printf("no memory for delta\n");	 | ||||
| 		 | ||||
| 		slipFreuency = malloc((generatorPMUs+1)*sizeof(float));			 | ||||
| 		if(slipFreuency == NULL) | ||||
| 			printf("no memory for slipFreuency\n"); | ||||
| 		OOSTD = '1'; | ||||
| 	} | ||||
| 
 | ||||
| 	unsigned int phnmr; | ||||
| 	char polar; | ||||
| 	float phasorAngle = 0; | ||||
| 	unsigned char *d; | ||||
| 	int x = 0; | ||||
| 
 | ||||
| 	unsigned char *fp_left,*fp_right,*fx_left,*fx_right,*phasorType; | ||||
| 	fp_left = malloc(5*sizeof(unsigned char)); | ||||
| 	fp_right = malloc(5*sizeof(unsigned char)); | ||||
| 	fx_left = malloc(3*sizeof(unsigned char)); | ||||
| 	fx_right = malloc(3*sizeof(unsigned char)); | ||||
| 	phasorType = malloc(1*sizeof(unsigned char)); | ||||
| 
 | ||||
| 	int pType; | ||||
| 
 | ||||
| 	while(temp_cfg != NULL){ // Main Loop starts
 | ||||
| 	 | ||||
| 		if(df != NULL) { | ||||
| 			 | ||||
| 			noOfPMUs = to_intconvertor(temp_cfg->num_pmu);	 | ||||
| 			 | ||||
| 			for(j=0;j<noOfPMUs;j++) { | ||||
| 				phnmr = to_intconvertor(temp_cfg->pmu[j]->phnmr);	 | ||||
| 				if(phnmr != 0) { | ||||
| 					if(temp_cfg->pmu[j]->fmt->phasor == 1) { // Floating	
 | ||||
| 
 | ||||
| 						for(i = 0;i<phnmr;i++) {		 | ||||
| 
 | ||||
| 							copy_cbyc (phasorType,(unsigned char *)temp_cfg->pmu[j]->phunit[i],1); | ||||
| 							pType = to_intconvertor1(phasorType); | ||||
| 							if((pType == 0) && (i%3 == 0)) { | ||||
| 
 | ||||
| 								d = df->dpmu[j]->phasors[i];	 | ||||
| 								polar = temp_cfg->pmu[j]->fmt->polar;	 | ||||
| 								phasorAngle = getVoltagePhasorAngle(1,fp_left,fp_right,d,polar,temp_cfg,i,j); // 1 -> floating pt
 | ||||
| 							}	 | ||||
| 							 | ||||
| 						} | ||||
| 						x++; | ||||
| 						if(x == generatorPMUs) | ||||
| 							break;  | ||||
| 					} else { // fixed point
 | ||||
| 
 | ||||
| 						for(i = 0;i < phnmr; i++){	 | ||||
| 
 | ||||
| 							copy_cbyc (phasorType,(unsigned char *)temp_cfg->pmu[j]->phunit[i],1); | ||||
| 							pType = to_intconvertor1(phasorType); | ||||
| 							if((pType == 0) && (i%3 == 0)) { | ||||
| 
 | ||||
| 		                        d = df->dpmu[j]->phasors[i];	 | ||||
| 								polar = temp_cfg->pmu[j]->fmt->polar;	 | ||||
| 								phasorAngle = getVoltagePhasorAngle(0,fp_left,fp_right,d,polar,temp_cfg,i,j); // 0 -> fixed pt
 | ||||
| 							}	                         | ||||
| 						} | ||||
| 						x++; | ||||
| 						if(x == generatorPMUs) | ||||
| 							break;  | ||||
| 					}											 | ||||
| 				} | ||||
| 			}	 | ||||
| 			df = df->dnext;	 | ||||
| 		} | ||||
| 		temp_cfg = temp_cfg->cfgnext; | ||||
| 	} // Main loop ends
 | ||||
| 
 | ||||
| 	free(fp_right); | ||||
| 	free(fp_left); | ||||
| 	free(fx_right); | ||||
| 	free(fx_left); | ||||
| 
 | ||||
| 	return 0; | ||||
| }*/ | ||||
|  | @ -0,0 +1,47 @@ | |||
| /* ----------------------------------------------------------------------------- 
 | ||||
|  * applications.h | ||||
|  *  | ||||
|  * iPDC - Phasor Data Concentrator | ||||
|  * | ||||
|  * Copyright (C) 2011-2012 Nitesh Pandit | ||||
|  * Copyright (C) 2011-2012 Kedar V. Khandeparkar | ||||
|  * | ||||
|  * This program is free software; you can redistribute it and/or | ||||
|  * modify it under the terms of the GNU General Public License | ||||
|  * as published by the Free Software Foundation; either version 2 | ||||
|  * of the License, or (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, write to the Free Software | ||||
|  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. | ||||
|  * | ||||
|  * Authors:  | ||||
|  *		Kedar V. Khandeparkar <kedar.khandeparkar@gmail.com>			 | ||||
|  * | ||||
|  * ----------------------------------------------------------------------------- */ | ||||
| 
 | ||||
| int minHi = 3,maxHi = 5; | ||||
| int minPi = 100,maxPi = 500; | ||||
| float fc = 0; | ||||
| float delFThreshold = 0.3; | ||||
| int angleThreshold = 20; | ||||
| float ratio = 1/5; | ||||
| float *delta,*slipFreuency; | ||||
| char OOSTD = '0'; | ||||
| //delta = 0;
 | ||||
| //slipFreuency = 0;
 | ||||
| 
 | ||||
| 
 | ||||
| float averageFrequency(struct data_frame *df); | ||||
| int frequencyInstability(struct data_frame *df); | ||||
| int angleInstability(struct data_frame *df); | ||||
| float voltagePhasorAggregation(struct data_frame *df); | ||||
| float outOfStepDetection(struct data_frame *df); | ||||
| int * randomGenerator(int max,int min,int num); | ||||
| float getVoltagePhasorAngle(int format,char left[],char right[],unsigned char *d,char polar,struct cfg_frame *temp_cfg,int i,int j); | ||||
| float getPhasorVolageMagnitude(int format,char left[],char right[],unsigned char *d,char polar,struct cfg_frame *temp_cfg,int i,int j); | ||||
|  | @ -0,0 +1,769 @@ | |||
| # Makefile.in generated by automake 1.16.5 from Makefile.am.
 | ||||
| # examples/Makefile.  Generated from Makefile.in by configure.
 | ||||
| 
 | ||||
| # Copyright (C) 1994-2021 Free Software Foundation, Inc.
 | ||||
| 
 | ||||
| # This Makefile.in is free software; the Free Software Foundation
 | ||||
| # gives unlimited permission to copy and/or distribute it,
 | ||||
| # with or without modifications, as long as this notice is preserved.
 | ||||
| 
 | ||||
| # This program is distributed in the hope that it will be useful,
 | ||||
| # but WITHOUT ANY WARRANTY, to the extent permitted by law; without
 | ||||
| # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | ||||
| # PARTICULAR PURPOSE.
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| am__is_gnu_make = { \
 | ||||
|   if test -z '$(MAKELEVEL)'; then \
 | ||||
|     false; \
 | ||||
|   elif test -n '$(MAKE_HOST)'; then \
 | ||||
|     true; \
 | ||||
|   elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \
 | ||||
|     true; \
 | ||||
|   else \
 | ||||
|     false; \
 | ||||
|   fi; \
 | ||||
| } | ||||
| am__make_running_with_option = \
 | ||||
|   case $${target_option-} in \
 | ||||
|       ?) ;; \
 | ||||
|       *) echo "am__make_running_with_option: internal error: invalid" \
 | ||||
|               "target option '$${target_option-}' specified" >&2; \
 | ||||
|          exit 1;; \
 | ||||
|   esac; \
 | ||||
|   has_opt=no; \
 | ||||
|   sane_makeflags=$$MAKEFLAGS; \
 | ||||
|   if $(am__is_gnu_make); then \
 | ||||
|     sane_makeflags=$$MFLAGS; \
 | ||||
|   else \
 | ||||
|     case $$MAKEFLAGS in \
 | ||||
|       *\\[\ \	]*) \
 | ||||
|         bs=\\; \
 | ||||
|         sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
 | ||||
|           | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
 | ||||
|     esac; \
 | ||||
|   fi; \
 | ||||
|   skip_next=no; \
 | ||||
|   strip_trailopt () \
 | ||||
|   { \
 | ||||
|     flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
 | ||||
|   }; \
 | ||||
|   for flg in $$sane_makeflags; do \
 | ||||
|     test $$skip_next = yes && { skip_next=no; continue; }; \
 | ||||
|     case $$flg in \
 | ||||
|       *=*|--*) continue;; \
 | ||||
|         -*I) strip_trailopt 'I'; skip_next=yes;; \
 | ||||
|       -*I?*) strip_trailopt 'I';; \
 | ||||
|         -*O) strip_trailopt 'O'; skip_next=yes;; \
 | ||||
|       -*O?*) strip_trailopt 'O';; \
 | ||||
|         -*l) strip_trailopt 'l'; skip_next=yes;; \
 | ||||
|       -*l?*) strip_trailopt 'l';; \
 | ||||
|       -[dEDm]) skip_next=yes;; \
 | ||||
|       -[JT]) skip_next=yes;; \
 | ||||
|     esac; \
 | ||||
|     case $$flg in \
 | ||||
|       *$$target_option*) has_opt=yes; break;; \
 | ||||
|     esac; \
 | ||||
|   done; \
 | ||||
|   test $$has_opt = yes | ||||
| am__make_dryrun = (target_option=n; $(am__make_running_with_option)) | ||||
| am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) | ||||
| pkgdatadir = $(datadir)/osm-gps-map | ||||
| pkgincludedir = $(includedir)/osm-gps-map | ||||
| pkglibdir = $(libdir)/osm-gps-map | ||||
| pkglibexecdir = $(libexecdir)/osm-gps-map | ||||
| am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd | ||||
| install_sh_DATA = $(install_sh) -c -m 644 | ||||
| install_sh_PROGRAM = $(install_sh) -c | ||||
| install_sh_SCRIPT = $(install_sh) -c | ||||
| INSTALL_HEADER = $(INSTALL_DATA) | ||||
| transform = $(program_transform_name) | ||||
| NORMAL_INSTALL = : | ||||
| PRE_INSTALL = : | ||||
| POST_INSTALL = : | ||||
| NORMAL_UNINSTALL = : | ||||
| PRE_UNINSTALL = : | ||||
| POST_UNINSTALL = : | ||||
| build_triplet = x86_64-pc-linux-gnu | ||||
| host_triplet = x86_64-pc-linux-gnu | ||||
| noinst_PROGRAMS = mapviewer$(EXEEXT) polygon$(EXEEXT) \
 | ||||
| 	editable_track$(EXEEXT) | ||||
| subdir = examples | ||||
| ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 | ||||
| am__aclocal_m4_deps = $(top_srcdir)/m4/ax_is_release.m4 \
 | ||||
| 	$(top_srcdir)/m4/ax_require_defined.m4 \
 | ||||
| 	$(top_srcdir)/m4/gtk-doc.m4 $(top_srcdir)/m4/introspection.m4 \
 | ||||
| 	$(top_srcdir)/m4/libtool.m4 $(top_srcdir)/m4/ltoptions.m4 \
 | ||||
| 	$(top_srcdir)/m4/ltsugar.m4 $(top_srcdir)/m4/ltversion.m4 \
 | ||||
| 	$(top_srcdir)/m4/lt~obsolete.m4 $(top_srcdir)/m4/pkg.m4 \
 | ||||
| 	$(top_srcdir)/configure.ac | ||||
| am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
 | ||||
| 	$(ACLOCAL_M4) | ||||
| DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) | ||||
| mkinstalldirs = $(install_sh) -d | ||||
| CONFIG_HEADER = $(top_builddir)/config.h | ||||
| CONFIG_CLEAN_FILES = | ||||
| CONFIG_CLEAN_VPATH_FILES = | ||||
| PROGRAMS = $(noinst_PROGRAMS) | ||||
| am_editable_track_OBJECTS = editable_track-editable_track.$(OBJEXT) | ||||
| editable_track_OBJECTS = $(am_editable_track_OBJECTS) | ||||
| am__DEPENDENCIES_1 = | ||||
| am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
 | ||||
| 	$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) | ||||
| editable_track_DEPENDENCIES = $(am__DEPENDENCIES_2) \
 | ||||
| 	$(am__DEPENDENCIES_1) $(top_builddir)/src/libosmgpsmap-1.0.la | ||||
| AM_V_lt = $(am__v_lt_$(V)) | ||||
| am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) | ||||
| am__v_lt_0 = --silent | ||||
| am__v_lt_1 =  | ||||
| editable_track_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
 | ||||
| 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
 | ||||
| 	$(editable_track_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o \
 | ||||
| 	$@ | ||||
| am_mapviewer_OBJECTS = mapviewer-mapviewer.$(OBJEXT) | ||||
| mapviewer_OBJECTS = $(am_mapviewer_OBJECTS) | ||||
| mapviewer_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
 | ||||
| 	$(top_builddir)/src/libosmgpsmap-1.0.la | ||||
| mapviewer_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 | ||||
| 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(mapviewer_CFLAGS) \
 | ||||
| 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ | ||||
| am_polygon_OBJECTS = polygon-polygon.$(OBJEXT) | ||||
| polygon_OBJECTS = $(am_polygon_OBJECTS) | ||||
| polygon_DEPENDENCIES = $(am__DEPENDENCIES_2) $(am__DEPENDENCIES_1) \
 | ||||
| 	$(top_builddir)/src/libosmgpsmap-1.0.la | ||||
| polygon_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 | ||||
| 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(polygon_CFLAGS) \
 | ||||
| 	$(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ | ||||
| AM_V_P = $(am__v_P_$(V)) | ||||
| am__v_P_ = $(am__v_P_$(AM_DEFAULT_VERBOSITY)) | ||||
| am__v_P_0 = false | ||||
| am__v_P_1 = : | ||||
| AM_V_GEN = $(am__v_GEN_$(V)) | ||||
| am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) | ||||
| am__v_GEN_0 = @echo "  GEN     " $@; | ||||
| am__v_GEN_1 =  | ||||
| AM_V_at = $(am__v_at_$(V)) | ||||
| am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) | ||||
| am__v_at_0 = @ | ||||
| am__v_at_1 =  | ||||
| DEFAULT_INCLUDES = -I. -I$(top_builddir) | ||||
| depcomp = $(SHELL) $(top_srcdir)/depcomp | ||||
| am__maybe_remake_depfiles = depfiles | ||||
| am__depfiles_remade = ./$(DEPDIR)/editable_track-editable_track.Po \
 | ||||
| 	./$(DEPDIR)/mapviewer-mapviewer.Po \
 | ||||
| 	./$(DEPDIR)/polygon-polygon.Po | ||||
| am__mv = mv -f | ||||
| COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
 | ||||
| 	$(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) | ||||
| LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 | ||||
| 	$(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
 | ||||
| 	$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
 | ||||
| 	$(AM_CFLAGS) $(CFLAGS) | ||||
| AM_V_CC = $(am__v_CC_$(V)) | ||||
| am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) | ||||
| am__v_CC_0 = @echo "  CC      " $@; | ||||
| am__v_CC_1 =  | ||||
| CCLD = $(CC) | ||||
| LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
 | ||||
| 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
 | ||||
| 	$(AM_LDFLAGS) $(LDFLAGS) -o $@ | ||||
| AM_V_CCLD = $(am__v_CCLD_$(V)) | ||||
| am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) | ||||
| am__v_CCLD_0 = @echo "  CCLD    " $@; | ||||
| am__v_CCLD_1 =  | ||||
| SOURCES = $(editable_track_SOURCES) $(mapviewer_SOURCES) \
 | ||||
| 	$(polygon_SOURCES) | ||||
| DIST_SOURCES = $(editable_track_SOURCES) $(mapviewer_SOURCES) \
 | ||||
| 	$(polygon_SOURCES) | ||||
| am__can_run_installinfo = \
 | ||||
|   case $$AM_UPDATE_INFO_DIR in \
 | ||||
|     n|no|NO) false;; \
 | ||||
|     *) (install-info --version) >/dev/null 2>&1;; \
 | ||||
|   esac | ||||
| am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) | ||||
| # Read a list of newline-separated strings from the standard input,
 | ||||
| # and print each of them once, without duplicates.  Input order is
 | ||||
| # *not* preserved.
 | ||||
| am__uniquify_input = $(AWK) '\
 | ||||
|   BEGIN { nonempty = 0; } \
 | ||||
|   { items[$$0] = 1; nonempty = 1; } \
 | ||||
|   END { if (nonempty) { for (i in items) print i; }; } \
 | ||||
| ' | ||||
| # Make sure the list of sources is unique.  This is necessary because,
 | ||||
| # e.g., the same source file might be shared among _SOURCES variables
 | ||||
| # for different programs/libraries.
 | ||||
| am__define_uniq_tagged_files = \
 | ||||
|   list='$(am__tagged_files)'; \
 | ||||
|   unique=`for i in $$list; do \
 | ||||
|     if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
 | ||||
|   done | $(am__uniquify_input)` | ||||
| am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README | ||||
| DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) | ||||
| ACLOCAL = ${SHELL} '/home/chasingcar/dev/osm-gps-map/missing' aclocal-1.16 | ||||
| AMTAR = $${TAR-tar} | ||||
| AM_DEFAULT_VERBOSITY = 0 | ||||
| AR = ar | ||||
| AS = as | ||||
| AUTOCONF = ${SHELL} '/home/chasingcar/dev/osm-gps-map/missing' autoconf | ||||
| AUTOHEADER = ${SHELL} '/home/chasingcar/dev/osm-gps-map/missing' autoheader | ||||
| AUTOMAKE = ${SHELL} '/home/chasingcar/dev/osm-gps-map/missing' automake-1.16 | ||||
| AWK = mawk | ||||
| CAIRO_CFLAGS = -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/libpng16 | ||||
| CAIRO_LIBS = -lcairo | ||||
| CC = gcc | ||||
| CCDEPMODE = depmode=gcc3 | ||||
| CFLAGS = -g -O2 | ||||
| CPPFLAGS =  | ||||
| CSCOPE = cscope | ||||
| CTAGS = ctags | ||||
| CYGPATH_W = echo | ||||
| DEFS = -DHAVE_CONFIG_H | ||||
| DEPDIR = .deps | ||||
| DLLTOOL = dlltool | ||||
| DSYMUTIL =  | ||||
| DUMPBIN =  | ||||
| ECHO_C =  | ||||
| ECHO_N = -n | ||||
| ECHO_T =  | ||||
| EGREP = /usr/bin/grep -E | ||||
| ETAGS = etags | ||||
| EXEEXT =  | ||||
| FGREP = /usr/bin/grep -F | ||||
| GLIB_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include | ||||
| GLIB_LIBS = -lglib-2.0 | ||||
| GREP = /usr/bin/grep | ||||
| GTHREAD_CFLAGS = -pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include | ||||
| GTHREAD_LIBS = -lgthread-2.0 -pthread -lglib-2.0 | ||||
| GTKDOC_CHECK = gtkdoc-check.test | ||||
| GTKDOC_CHECK_PATH = /usr/bin/gtkdoc-check | ||||
| GTKDOC_DEPS_CFLAGS = -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include | ||||
| GTKDOC_DEPS_LIBS = -lgobject-2.0 -lglib-2.0 | ||||
| GTKDOC_MKPDF = /usr/bin/gtkdoc-mkpdf | ||||
| GTKDOC_REBASE = /usr/bin/gtkdoc-rebase | ||||
| GTK_CFLAGS = -pthread -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0 -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/fribidi -I/usr/include/harfbuzz -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/uuid -I/usr/include/freetype2 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/x86_64-linux-gnu -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include | ||||
| GTK_LIBS = -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -lharfbuzz -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 | ||||
| HTML_DIR = ${datadir}/gtk-doc/html | ||||
| INSTALL = /usr/bin/install -c | ||||
| INSTALL_DATA = ${INSTALL} -m 644 | ||||
| INSTALL_PROGRAM = ${INSTALL} | ||||
| INSTALL_SCRIPT = ${INSTALL} | ||||
| INSTALL_STRIP_PROGRAM = $(install_sh) -c -s | ||||
| INTROSPECTION_CFLAGS = -I/usr/include/gobject-introspection-1.0 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include | ||||
| INTROSPECTION_COMPILER = /usr/bin/g-ir-compiler | ||||
| INTROSPECTION_GENERATE = /usr/bin/g-ir-generate | ||||
| INTROSPECTION_GIRDIR = /usr/local/share/gir-1.0 | ||||
| INTROSPECTION_LIBS = -lgirepository-1.0 -lgobject-2.0 -lglib-2.0 | ||||
| INTROSPECTION_MAKEFILE = /usr/share/gobject-introspection-1.0/Makefile.introspection | ||||
| INTROSPECTION_SCANNER = /usr/bin/g-ir-scanner | ||||
| INTROSPECTION_TYPELIBDIR = /usr/local/lib/girepository-1.0 | ||||
| LD = /usr/bin/ld -m elf_x86_64 | ||||
| LDFLAGS =  | ||||
| LIBOBJS =  | ||||
| LIBS =  | ||||
| LIBTOOL = $(SHELL) $(top_builddir)/libtool | ||||
| LIPO =  | ||||
| LN_S = ln -s | ||||
| LTLIBOBJS =  | ||||
| LT_SYS_LIBRARY_PATH =  | ||||
| LT_VERSION_INFO = 2:1:1 | ||||
| MAKEINFO = ${SHELL} '/home/chasingcar/dev/osm-gps-map/missing' makeinfo | ||||
| MANIFEST_TOOL = : | ||||
| MKDIR_P = /usr/bin/mkdir -p | ||||
| NM = /usr/bin/nm -B | ||||
| NMEDIT =  | ||||
| OBJDUMP = objdump | ||||
| OBJEXT = o | ||||
| OTOOL =  | ||||
| OTOOL64 =  | ||||
| PACKAGE = osm-gps-map | ||||
| PACKAGE_BUGREPORT = http://github.com/nzjrs/osm-gps-map/issues | ||||
| PACKAGE_NAME = osm-gps-map | ||||
| PACKAGE_STRING = osm-gps-map 1.2.1 | ||||
| PACKAGE_TARNAME = osm-gps-map | ||||
| PACKAGE_URL =  | ||||
| PACKAGE_VERSION = 1.2.1 | ||||
| PATH_SEPARATOR = : | ||||
| PKG_CONFIG = /usr/bin/pkg-config | ||||
| PKG_CONFIG_LIBDIR =  | ||||
| PKG_CONFIG_PATH =  | ||||
| RANLIB = ranlib | ||||
| SED = /usr/bin/sed | ||||
| SET_MAKE =  | ||||
| SHELL = /bin/bash | ||||
| SOUP24_CFLAGS = -pthread -I/usr/include/libsoup-2.4 -I/usr/include/libxml2 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include | ||||
| SOUP24_LIBS = -lsoup-2.4 -Wl,--export-dynamic -lgmodule-2.0 -pthread -lgio-2.0 -lgobject-2.0 -lglib-2.0 | ||||
| STRIP = strip | ||||
| VERSION = 1.2.1 | ||||
| _GI_EXP_DATADIR = /usr/local/share | ||||
| _GI_EXP_LIBDIR = /usr/local/lib | ||||
| abs_builddir = /home/chasingcar/dev/osm-gps-map/examples | ||||
| abs_srcdir = /home/chasingcar/dev/osm-gps-map/examples | ||||
| abs_top_builddir = /home/chasingcar/dev/osm-gps-map | ||||
| abs_top_srcdir = /home/chasingcar/dev/osm-gps-map | ||||
| ac_ct_AR = ar | ||||
| ac_ct_CC = gcc | ||||
| ac_ct_DUMPBIN =  | ||||
| am__include = include | ||||
| am__leading_dot = . | ||||
| am__quote =  | ||||
| am__tar = $${TAR-tar} chof - "$$tardir" | ||||
| am__untar = $${TAR-tar} xf - | ||||
| bindir = ${exec_prefix}/bin | ||||
| build = x86_64-pc-linux-gnu | ||||
| build_alias =  | ||||
| build_cpu = x86_64 | ||||
| build_os = linux-gnu | ||||
| build_vendor = pc | ||||
| builddir = . | ||||
| datadir = ${datarootdir} | ||||
| datarootdir = ${prefix}/share | ||||
| docdir = ${datarootdir}/doc/${PACKAGE_TARNAME} | ||||
| dvidir = ${docdir} | ||||
| exec_prefix = ${prefix} | ||||
| host = x86_64-pc-linux-gnu | ||||
| host_alias =  | ||||
| host_cpu = x86_64 | ||||
| host_os = linux-gnu | ||||
| host_vendor = pc | ||||
| htmldir = ${docdir} | ||||
| includedir = ${prefix}/include | ||||
| infodir = ${datarootdir}/info | ||||
| install_sh = ${SHELL} /home/chasingcar/dev/osm-gps-map/install-sh | ||||
| libdir = ${exec_prefix}/lib | ||||
| libexecdir = ${exec_prefix}/libexec | ||||
| localedir = ${datarootdir}/locale | ||||
| localstatedir = ${prefix}/var | ||||
| mandir = ${datarootdir}/man | ||||
| mkdir_p = $(MKDIR_P) | ||||
| oldincludedir = /usr/include | ||||
| pdfdir = ${docdir} | ||||
| prefix = /usr/local | ||||
| program_transform_name = s,x,x, | ||||
| psdir = ${docdir} | ||||
| runstatedir = ${localstatedir}/run | ||||
| sbindir = ${exec_prefix}/sbin | ||||
| sharedstatedir = ${prefix}/com | ||||
| srcdir = . | ||||
| sysconfdir = ${prefix}/etc | ||||
| target_alias =  | ||||
| top_build_prefix = ../ | ||||
| top_builddir = .. | ||||
| top_srcdir = .. | ||||
| OSMGPSMAP_CFLAGS = \
 | ||||
|     $(GLIB_CFLAGS)          \
 | ||||
|     $(GTK_CFLAGS)           \
 | ||||
|     $(CAIRO_CFLAGS)         \
 | ||||
|     $(SOUP24_CFLAGS) | ||||
| 
 | ||||
| OSMGPSMAP_LIBS = \
 | ||||
|     $(GLIB_LIBS)            \
 | ||||
|     $(GTK_LIBS)             \
 | ||||
|     $(CAIRO_LIBS)           \
 | ||||
|     $(SOUP24_LIBS) | ||||
| 
 | ||||
| mapviewer_SOURCES = \
 | ||||
|     mapviewer.c | ||||
| 
 | ||||
| mapviewer_CFLAGS = \
 | ||||
|     -I$(top_srcdir)/src     \
 | ||||
|     $(WARN_CFLAGS)          \
 | ||||
|     $(DISABLE_DEPRECATED)   \
 | ||||
|     $(OSMGPSMAP_CFLAGS)     \
 | ||||
|     $(GTHREAD_CFLAGS) | ||||
| 
 | ||||
| mapviewer_LDADD = \
 | ||||
|     $(OSMGPSMAP_LIBS)       \
 | ||||
|     $(GTHREAD_LIBS)         \
 | ||||
|     $(top_builddir)/src/libosmgpsmap-1.0.la | ||||
| 
 | ||||
| polygon_SOURCES = \
 | ||||
|     polygon.c | ||||
| 
 | ||||
| polygon_CFLAGS = \
 | ||||
|     -I$(top_srcdir)/src     \
 | ||||
|     $(WARN_CFLAGS)          \
 | ||||
|     $(DISABLE_DEPRECATED)   \
 | ||||
|     $(OSMGPSMAP_CFLAGS)     \
 | ||||
|     $(GTHREAD_CFLAGS) | ||||
| 
 | ||||
| polygon_LDADD = \
 | ||||
|     $(OSMGPSMAP_LIBS)       \
 | ||||
|     $(GTHREAD_LIBS)         \
 | ||||
|     $(top_builddir)/src/libosmgpsmap-1.0.la | ||||
| 
 | ||||
| editable_track_SOURCES = \
 | ||||
|     editable_track.c | ||||
| 
 | ||||
| editable_track_CFLAGS = \
 | ||||
|     -I$(top_srcdir)/src     \
 | ||||
|     $(WARN_CFLAGS)          \
 | ||||
|     $(DISABLE_DEPRECATED)   \
 | ||||
|     $(OSMGPSMAP_CFLAGS)     \
 | ||||
|     $(GTHREAD_CFLAGS) | ||||
| 
 | ||||
| editable_track_LDADD = \
 | ||||
|     $(OSMGPSMAP_LIBS)       \
 | ||||
|     $(GTHREAD_LIBS)         \
 | ||||
|     $(top_builddir)/src/libosmgpsmap-1.0.la | ||||
| 
 | ||||
| EXTRA_DIST = poi.png mapviewer.ui mapviewer.js README | ||||
| all: all-am | ||||
| 
 | ||||
| .SUFFIXES: | ||||
| .SUFFIXES: .c .lo .o .obj | ||||
| $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps) | ||||
| 	@for dep in $?; do \
 | ||||
| 	  case '$(am__configure_deps)' in \
 | ||||
| 	    *$$dep*) \
 | ||||
| 	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
 | ||||
| 	        && { if test -f $@; then exit 0; else break; fi; }; \
 | ||||
| 	      exit 1;; \
 | ||||
| 	  esac; \
 | ||||
| 	done; \
 | ||||
| 	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/Makefile'; \
 | ||||
| 	$(am__cd) $(top_srcdir) && \
 | ||||
| 	  $(AUTOMAKE) --foreign examples/Makefile | ||||
| Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status | ||||
| 	@case '$?' in \
 | ||||
| 	  *config.status*) \
 | ||||
| 	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
 | ||||
| 	  *) \
 | ||||
| 	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles)'; \
 | ||||
| 	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__maybe_remake_depfiles);; \
 | ||||
| 	esac; | ||||
| 
 | ||||
| $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) | ||||
| 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||||
| 
 | ||||
| $(top_srcdir)/configure:  $(am__configure_deps) | ||||
| 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||||
| $(ACLOCAL_M4):  $(am__aclocal_m4_deps) | ||||
| 	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh | ||||
| $(am__aclocal_m4_deps): | ||||
| 
 | ||||
| clean-noinstPROGRAMS: | ||||
| 	@list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
 | ||||
| 	echo " rm -f" $$list; \
 | ||||
| 	rm -f $$list || exit $$?; \
 | ||||
| 	test -n "$(EXEEXT)" || exit 0; \
 | ||||
| 	list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
 | ||||
| 	echo " rm -f" $$list; \
 | ||||
| 	rm -f $$list | ||||
| 
 | ||||
| editable_track$(EXEEXT): $(editable_track_OBJECTS) $(editable_track_DEPENDENCIES) $(EXTRA_editable_track_DEPENDENCIES)  | ||||
| 	@rm -f editable_track$(EXEEXT) | ||||
| 	$(AM_V_CCLD)$(editable_track_LINK) $(editable_track_OBJECTS) $(editable_track_LDADD) $(LIBS) | ||||
| 
 | ||||
| mapviewer$(EXEEXT): $(mapviewer_OBJECTS) $(mapviewer_DEPENDENCIES) $(EXTRA_mapviewer_DEPENDENCIES)  | ||||
| 	@rm -f mapviewer$(EXEEXT) | ||||
| 	$(AM_V_CCLD)$(mapviewer_LINK) $(mapviewer_OBJECTS) $(mapviewer_LDADD) $(LIBS) | ||||
| 
 | ||||
| polygon$(EXEEXT): $(polygon_OBJECTS) $(polygon_DEPENDENCIES) $(EXTRA_polygon_DEPENDENCIES)  | ||||
| 	@rm -f polygon$(EXEEXT) | ||||
| 	$(AM_V_CCLD)$(polygon_LINK) $(polygon_OBJECTS) $(polygon_LDADD) $(LIBS) | ||||
| 
 | ||||
| mostlyclean-compile: | ||||
| 	-rm -f *.$(OBJEXT) | ||||
| 
 | ||||
| distclean-compile: | ||||
| 	-rm -f *.tab.c | ||||
| 
 | ||||
| include ./$(DEPDIR)/editable_track-editable_track.Po # am--include-marker
 | ||||
| include ./$(DEPDIR)/mapviewer-mapviewer.Po # am--include-marker
 | ||||
| include ./$(DEPDIR)/polygon-polygon.Po # am--include-marker
 | ||||
| 
 | ||||
| $(am__depfiles_remade): | ||||
| 	@$(MKDIR_P) $(@D) | ||||
| 	@echo '# dummy' >$@-t && $(am__mv) $@-t $@ | ||||
| 
 | ||||
| am--depfiles: $(am__depfiles_remade) | ||||
| 
 | ||||
| .c.o: | ||||
| 	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
 | ||||
| 	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
 | ||||
| 	$(am__mv) $$depbase.Tpo $$depbase.Po | ||||
| #	$(AM_V_CC)source='$<' object='$@' libtool=no \
 | ||||
| #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 | ||||
| #	$(AM_V_CC_no)$(COMPILE) -c -o $@ $<
 | ||||
| 
 | ||||
| .c.obj: | ||||
| 	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
 | ||||
| 	$(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
 | ||||
| 	$(am__mv) $$depbase.Tpo $$depbase.Po | ||||
| #	$(AM_V_CC)source='$<' object='$@' libtool=no \
 | ||||
| #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 | ||||
| #	$(AM_V_CC_no)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 | ||||
| 
 | ||||
| .c.lo: | ||||
| 	$(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
 | ||||
| 	$(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
 | ||||
| 	$(am__mv) $$depbase.Tpo $$depbase.Plo | ||||
| #	$(AM_V_CC)source='$<' object='$@' libtool=yes \
 | ||||
| #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 | ||||
| #	$(AM_V_CC_no)$(LTCOMPILE) -c -o $@ $<
 | ||||
| 
 | ||||
| editable_track-editable_track.o: editable_track.c | ||||
| 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(editable_track_CFLAGS) $(CFLAGS) -MT editable_track-editable_track.o -MD -MP -MF $(DEPDIR)/editable_track-editable_track.Tpo -c -o editable_track-editable_track.o `test -f 'editable_track.c' || echo '$(srcdir)/'`editable_track.c | ||||
| 	$(AM_V_at)$(am__mv) $(DEPDIR)/editable_track-editable_track.Tpo $(DEPDIR)/editable_track-editable_track.Po | ||||
| #	$(AM_V_CC)source='editable_track.c' object='editable_track-editable_track.o' libtool=no \
 | ||||
| #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 | ||||
| #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(editable_track_CFLAGS) $(CFLAGS) -c -o editable_track-editable_track.o `test -f 'editable_track.c' || echo '$(srcdir)/'`editable_track.c
 | ||||
| 
 | ||||
| editable_track-editable_track.obj: editable_track.c | ||||
| 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(editable_track_CFLAGS) $(CFLAGS) -MT editable_track-editable_track.obj -MD -MP -MF $(DEPDIR)/editable_track-editable_track.Tpo -c -o editable_track-editable_track.obj `if test -f 'editable_track.c'; then $(CYGPATH_W) 'editable_track.c'; else $(CYGPATH_W) '$(srcdir)/editable_track.c'; fi` | ||||
| 	$(AM_V_at)$(am__mv) $(DEPDIR)/editable_track-editable_track.Tpo $(DEPDIR)/editable_track-editable_track.Po | ||||
| #	$(AM_V_CC)source='editable_track.c' object='editable_track-editable_track.obj' libtool=no \
 | ||||
| #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 | ||||
| #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(editable_track_CFLAGS) $(CFLAGS) -c -o editable_track-editable_track.obj `if test -f 'editable_track.c'; then $(CYGPATH_W) 'editable_track.c'; else $(CYGPATH_W) '$(srcdir)/editable_track.c'; fi`
 | ||||
| 
 | ||||
| mapviewer-mapviewer.o: mapviewer.c | ||||
| 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mapviewer_CFLAGS) $(CFLAGS) -MT mapviewer-mapviewer.o -MD -MP -MF $(DEPDIR)/mapviewer-mapviewer.Tpo -c -o mapviewer-mapviewer.o `test -f 'mapviewer.c' || echo '$(srcdir)/'`mapviewer.c | ||||
| 	$(AM_V_at)$(am__mv) $(DEPDIR)/mapviewer-mapviewer.Tpo $(DEPDIR)/mapviewer-mapviewer.Po | ||||
| #	$(AM_V_CC)source='mapviewer.c' object='mapviewer-mapviewer.o' libtool=no \
 | ||||
| #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 | ||||
| #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mapviewer_CFLAGS) $(CFLAGS) -c -o mapviewer-mapviewer.o `test -f 'mapviewer.c' || echo '$(srcdir)/'`mapviewer.c
 | ||||
| 
 | ||||
| mapviewer-mapviewer.obj: mapviewer.c | ||||
| 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mapviewer_CFLAGS) $(CFLAGS) -MT mapviewer-mapviewer.obj -MD -MP -MF $(DEPDIR)/mapviewer-mapviewer.Tpo -c -o mapviewer-mapviewer.obj `if test -f 'mapviewer.c'; then $(CYGPATH_W) 'mapviewer.c'; else $(CYGPATH_W) '$(srcdir)/mapviewer.c'; fi` | ||||
| 	$(AM_V_at)$(am__mv) $(DEPDIR)/mapviewer-mapviewer.Tpo $(DEPDIR)/mapviewer-mapviewer.Po | ||||
| #	$(AM_V_CC)source='mapviewer.c' object='mapviewer-mapviewer.obj' libtool=no \
 | ||||
| #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 | ||||
| #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(mapviewer_CFLAGS) $(CFLAGS) -c -o mapviewer-mapviewer.obj `if test -f 'mapviewer.c'; then $(CYGPATH_W) 'mapviewer.c'; else $(CYGPATH_W) '$(srcdir)/mapviewer.c'; fi`
 | ||||
| 
 | ||||
| polygon-polygon.o: polygon.c | ||||
| 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(polygon_CFLAGS) $(CFLAGS) -MT polygon-polygon.o -MD -MP -MF $(DEPDIR)/polygon-polygon.Tpo -c -o polygon-polygon.o `test -f 'polygon.c' || echo '$(srcdir)/'`polygon.c | ||||
| 	$(AM_V_at)$(am__mv) $(DEPDIR)/polygon-polygon.Tpo $(DEPDIR)/polygon-polygon.Po | ||||
| #	$(AM_V_CC)source='polygon.c' object='polygon-polygon.o' libtool=no \
 | ||||
| #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 | ||||
| #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(polygon_CFLAGS) $(CFLAGS) -c -o polygon-polygon.o `test -f 'polygon.c' || echo '$(srcdir)/'`polygon.c
 | ||||
| 
 | ||||
| polygon-polygon.obj: polygon.c | ||||
| 	$(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(polygon_CFLAGS) $(CFLAGS) -MT polygon-polygon.obj -MD -MP -MF $(DEPDIR)/polygon-polygon.Tpo -c -o polygon-polygon.obj `if test -f 'polygon.c'; then $(CYGPATH_W) 'polygon.c'; else $(CYGPATH_W) '$(srcdir)/polygon.c'; fi` | ||||
| 	$(AM_V_at)$(am__mv) $(DEPDIR)/polygon-polygon.Tpo $(DEPDIR)/polygon-polygon.Po | ||||
| #	$(AM_V_CC)source='polygon.c' object='polygon-polygon.obj' libtool=no \
 | ||||
| #	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) \
 | ||||
| #	$(AM_V_CC_no)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(polygon_CFLAGS) $(CFLAGS) -c -o polygon-polygon.obj `if test -f 'polygon.c'; then $(CYGPATH_W) 'polygon.c'; else $(CYGPATH_W) '$(srcdir)/polygon.c'; fi`
 | ||||
| 
 | ||||
| mostlyclean-libtool: | ||||
| 	-rm -f *.lo | ||||
| 
 | ||||
| clean-libtool: | ||||
| 	-rm -rf .libs _libs | ||||
| 
 | ||||
| ID: $(am__tagged_files) | ||||
| 	$(am__define_uniq_tagged_files); mkid -fID $$unique | ||||
| tags: tags-am | ||||
| TAGS: tags | ||||
| 
 | ||||
| tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) | ||||
| 	set x; \
 | ||||
| 	here=`pwd`; \
 | ||||
| 	$(am__define_uniq_tagged_files); \
 | ||||
| 	shift; \
 | ||||
| 	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
 | ||||
| 	  test -n "$$unique" || unique=$$empty_fix; \
 | ||||
| 	  if test $$# -gt 0; then \ | ||||
| 	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
 | ||||
| 	      "$$@" $$unique; \
 | ||||
| 	  else \
 | ||||
| 	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
 | ||||
| 	      $$unique; \
 | ||||
| 	  fi; \
 | ||||
| 	fi | ||||
| ctags: ctags-am | ||||
| 
 | ||||
| CTAGS: ctags | ||||
| ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) | ||||
| 	$(am__define_uniq_tagged_files); \
 | ||||
| 	test -z "$(CTAGS_ARGS)$$unique" \
 | ||||
| 	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
 | ||||
| 	     $$unique | ||||
| 
 | ||||
| GTAGS: | ||||
| 	here=`$(am__cd) $(top_builddir) && pwd` \
 | ||||
| 	  && $(am__cd) $(top_srcdir) \
 | ||||
| 	  && gtags -i $(GTAGS_ARGS) "$$here" | ||||
| cscopelist: cscopelist-am | ||||
| 
 | ||||
| cscopelist-am: $(am__tagged_files) | ||||
| 	list='$(am__tagged_files)'; \
 | ||||
| 	case "$(srcdir)" in \
 | ||||
| 	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
 | ||||
| 	  *) sdir=$(subdir)/$(srcdir) ;; \
 | ||||
| 	esac; \
 | ||||
| 	for i in $$list; do \
 | ||||
| 	  if test -f "$$i"; then \
 | ||||
| 	    echo "$(subdir)/$$i"; \
 | ||||
| 	  else \
 | ||||
| 	    echo "$$sdir/$$i"; \
 | ||||
| 	  fi; \
 | ||||
| 	done >> $(top_builddir)/cscope.files | ||||
| 
 | ||||
| distclean-tags: | ||||
| 	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags | ||||
| distdir: $(BUILT_SOURCES) | ||||
| 	$(MAKE) $(AM_MAKEFLAGS) distdir-am | ||||
| 
 | ||||
| distdir-am: $(DISTFILES) | ||||
| 	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 | ||||
| 	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
 | ||||
| 	list='$(DISTFILES)'; \
 | ||||
| 	  dist_files=`for file in $$list; do echo $$file; done | \
 | ||||
| 	  sed -e "s|^$$srcdirstrip/||;t" \
 | ||||
| 	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
 | ||||
| 	case $$dist_files in \
 | ||||
| 	  */*) $(MKDIR_P) `echo "$$dist_files" | \
 | ||||
| 			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
 | ||||
| 			   sort -u` ;; \
 | ||||
| 	esac; \
 | ||||
| 	for file in $$dist_files; do \
 | ||||
| 	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
 | ||||
| 	  if test -d $$d/$$file; then \
 | ||||
| 	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
 | ||||
| 	    if test -d "$(distdir)/$$file"; then \
 | ||||
| 	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 | ||||
| 	    fi; \
 | ||||
| 	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
 | ||||
| 	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
 | ||||
| 	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
 | ||||
| 	    fi; \
 | ||||
| 	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
 | ||||
| 	  else \
 | ||||
| 	    test -f "$(distdir)/$$file" \
 | ||||
| 	    || cp -p $$d/$$file "$(distdir)/$$file" \
 | ||||
| 	    || exit 1; \
 | ||||
| 	  fi; \
 | ||||
| 	done | ||||
| check-am: all-am | ||||
| check: check-am | ||||
| all-am: Makefile $(PROGRAMS) | ||||
| installdirs: | ||||
| install: install-am | ||||
| install-exec: install-exec-am | ||||
| install-data: install-data-am | ||||
| uninstall: uninstall-am | ||||
| 
 | ||||
| install-am: all-am | ||||
| 	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am | ||||
| 
 | ||||
| installcheck: installcheck-am | ||||
| install-strip: | ||||
| 	if test -z '$(STRIP)'; then \
 | ||||
| 	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
 | ||||
| 	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
 | ||||
| 	      install; \
 | ||||
| 	else \
 | ||||
| 	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
 | ||||
| 	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
 | ||||
| 	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
 | ||||
| 	fi | ||||
| mostlyclean-generic: | ||||
| 
 | ||||
| clean-generic: | ||||
| 
 | ||||
| distclean-generic: | ||||
| 	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) | ||||
| 	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) | ||||
| 
 | ||||
| maintainer-clean-generic: | ||||
| 	@echo "This command is intended for maintainers to use" | ||||
| 	@echo "it deletes files that may require special tools to rebuild." | ||||
| clean: clean-am | ||||
| 
 | ||||
| clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ | ||||
| 	mostlyclean-am | ||||
| 
 | ||||
| distclean: distclean-am | ||||
| 		-rm -f ./$(DEPDIR)/editable_track-editable_track.Po | ||||
| 	-rm -f ./$(DEPDIR)/mapviewer-mapviewer.Po | ||||
| 	-rm -f ./$(DEPDIR)/polygon-polygon.Po | ||||
| 	-rm -f Makefile | ||||
| distclean-am: clean-am distclean-compile distclean-generic \ | ||||
| 	distclean-tags | ||||
| 
 | ||||
| dvi: dvi-am | ||||
| 
 | ||||
| dvi-am: | ||||
| 
 | ||||
| html: html-am | ||||
| 
 | ||||
| html-am: | ||||
| 
 | ||||
| info: info-am | ||||
| 
 | ||||
| info-am: | ||||
| 
 | ||||
| install-data-am: | ||||
| 
 | ||||
| install-dvi: install-dvi-am | ||||
| 
 | ||||
| install-dvi-am: | ||||
| 
 | ||||
| install-exec-am: | ||||
| 
 | ||||
| install-html: install-html-am | ||||
| 
 | ||||
| install-html-am: | ||||
| 
 | ||||
| install-info: install-info-am | ||||
| 
 | ||||
| install-info-am: | ||||
| 
 | ||||
| install-man: | ||||
| 
 | ||||
| install-pdf: install-pdf-am | ||||
| 
 | ||||
| install-pdf-am: | ||||
| 
 | ||||
| install-ps: install-ps-am | ||||
| 
 | ||||
| install-ps-am: | ||||
| 
 | ||||
| installcheck-am: | ||||
| 
 | ||||
| maintainer-clean: maintainer-clean-am | ||||
| 		-rm -f ./$(DEPDIR)/editable_track-editable_track.Po | ||||
| 	-rm -f ./$(DEPDIR)/mapviewer-mapviewer.Po | ||||
| 	-rm -f ./$(DEPDIR)/polygon-polygon.Po | ||||
| 	-rm -f Makefile | ||||
| maintainer-clean-am: distclean-am maintainer-clean-generic | ||||
| 
 | ||||
| mostlyclean: mostlyclean-am | ||||
| 
 | ||||
| mostlyclean-am: mostlyclean-compile mostlyclean-generic \ | ||||
| 	mostlyclean-libtool | ||||
| 
 | ||||
| pdf: pdf-am | ||||
| 
 | ||||
| pdf-am: | ||||
| 
 | ||||
| ps: ps-am | ||||
| 
 | ||||
| ps-am: | ||||
| 
 | ||||
| uninstall-am: | ||||
| 
 | ||||
| .MAKE: install-am install-strip | ||||
| 
 | ||||
| .PHONY: CTAGS GTAGS TAGS all all-am am--depfiles check check-am clean \ | ||||
| 	clean-generic clean-libtool clean-noinstPROGRAMS cscopelist-am \
 | ||||
| 	ctags ctags-am distclean distclean-compile distclean-generic \
 | ||||
| 	distclean-libtool distclean-tags distdir dvi dvi-am html \
 | ||||
| 	html-am info info-am install install-am install-data \
 | ||||
| 	install-data-am install-dvi install-dvi-am install-exec \
 | ||||
| 	install-exec-am install-html install-html-am install-info \
 | ||||
| 	install-info-am install-man install-pdf install-pdf-am \
 | ||||
| 	install-ps install-ps-am install-strip installcheck \
 | ||||
| 	installcheck-am installdirs maintainer-clean \
 | ||||
| 	maintainer-clean-generic mostlyclean mostlyclean-compile \
 | ||||
| 	mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
 | ||||
| 	tags tags-am uninstall uninstall-am | ||||
| 
 | ||||
| .PRECIOUS: Makefile | ||||
| 
 | ||||
| 
 | ||||
| # Tell versions [3.59,3.63) of GNU make to not export all variables.
 | ||||
| # Otherwise a system limit (for SysV at least) may be exceeded.
 | ||||
| .NOEXPORT: | ||||
|  | @ -0,0 +1,17 @@ | |||
| osm-gps-map example applications | ||||
|  * ./mapviewer | ||||
|    C based demo app with many options. See '--help' for a list. Note, this | ||||
|    must be executed from the examples directory so it can find the mapviewer.ui | ||||
|    file. | ||||
|  * ./polygon | ||||
|    This example demonstrates editable polygons. Vertex points can be dragged.  | ||||
|    Clicking mid-points divides the line and creates another vertex. | ||||
|  * ./mapviewer.py | ||||
|    Python version of the C demo app, with examples showing how to do custom | ||||
|    layers. | ||||
|  * ./mapviewer.js | ||||
|    Javascript example using seed + gobject-introspection. If running uninstalled, | ||||
|    you probbably need to tell GObject introspection where to find the | ||||
|    bindings. Do the following from the example directory | ||||
|     # export LD_LIBRARY_PATH=../src/.libs/ | ||||
|     # export GI_TYPELIB_PATH=../src/ | ||||
|  | @ -0,0 +1,42 @@ | |||
| #include <gtk/gtk.h> | ||||
| #include "osm-gps-map.h" | ||||
| 
 | ||||
| int | ||||
| main (int   argc, | ||||
|       char *argv[]) | ||||
| { | ||||
| 	OsmGpsMap *map; | ||||
|     GtkWidget *window; | ||||
| 
 | ||||
|     gtk_init (&argc, &argv); | ||||
| 
 | ||||
|     window = gtk_window_new (GTK_WINDOW_TOPLEVEL); | ||||
|     gtk_window_set_title (GTK_WINDOW (window), "Window"); | ||||
|     g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); | ||||
| 
 | ||||
| 
 | ||||
| 	map = g_object_new (OSM_TYPE_GPS_MAP, NULL); | ||||
| 	gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(map)); | ||||
| 
 | ||||
| 	OsmGpsMapTrack* track = osm_gps_map_track_new(); | ||||
| 
 | ||||
| 	OsmGpsMapPoint* p1, *p2; | ||||
| 	p1 = osm_gps_map_point_new_radians(1.25663706, -0.488692191); | ||||
| 	p2 = osm_gps_map_point_new_radians(1.06465084, -0.750491578); | ||||
| 
 | ||||
| 	osm_gps_map_track_add_point(track, p1); | ||||
| 	osm_gps_map_track_add_point(track, p2); | ||||
| 
 | ||||
| 	g_object_set(track, "editable", TRUE, NULL); | ||||
| 
 | ||||
| 	osm_gps_map_track_add(map, track); | ||||
| 
 | ||||
| 	gtk_widget_show (GTK_WIDGET(map)); | ||||
|     gtk_widget_show (window); | ||||
| 
 | ||||
|     gtk_main (); | ||||
| 
 | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
|  | @ -0,0 +1,7 @@ | |||
| #!/bin/sh | ||||
| 
 | ||||
| export LD_LIBRARY_PATH=../src/.libs/ | ||||
| export GI_TYPELIB_PATH=$GI_TYPELIB_PATH:../src/ | ||||
| export PYTHONPATH=../python/ | ||||
| 
 | ||||
| $1 | ||||
|  | @ -0,0 +1,450 @@ | |||
| /* -*- Mode: C; indent-tabs-mode: nil; c-basic-offset: 4; tab-width: 4 -*- */ | ||||
| /* vim:set et sw=4 ts=4 cino=t0,(0: */ | ||||
| /*
 | ||||
|  * main.c | ||||
|  * Copyright (C) John Stowers 2008 <john.stowers@gmail.com> | ||||
|  * | ||||
|  * This is free software: you can redistribute it and/or modify it | ||||
|  * under the terms of the GNU General Public License | ||||
|  * as published by the Free Software Foundation; version 2. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program; if not, see <http://www.gnu.org/licenses/>.
 | ||||
|  */ | ||||
| 
 | ||||
| #include <stdlib.h> | ||||
| #include <math.h> | ||||
| #include <glib.h> | ||||
| #include <gtk/gtk.h> | ||||
| #include <gdk/gdkkeysyms.h> | ||||
| 
 | ||||
| #include "osm-gps-map.h" | ||||
| 
 | ||||
| static OsmGpsMapSource_t opt_map_provider = OSM_GPS_MAP_SOURCE_OPENSTREETMAP; | ||||
| static gboolean opt_friendly_cache = FALSE; | ||||
| static gboolean opt_no_cache = FALSE; | ||||
| static char *opt_cache_base_dir = NULL; | ||||
| static gboolean opt_editable_tracks = FALSE; | ||||
| static GOptionEntry entries[] = | ||||
|     { | ||||
|         {"friendly-cache", 'f', 0, G_OPTION_ARG_NONE, &opt_friendly_cache, "Store maps using friendly cache style (source name)", NULL}, | ||||
|         {"no-cache", 'n', 0, G_OPTION_ARG_NONE, &opt_no_cache, "Disable cache", NULL}, | ||||
|         {"cache-basedir", 'b', 0, G_OPTION_ARG_FILENAME, &opt_cache_base_dir, "Cache basedir", NULL}, | ||||
|         {"map", 'm', 0, G_OPTION_ARG_INT, &opt_map_provider, "Map source", "N"}, | ||||
|         {"editable-tracks", 'e', 0, G_OPTION_ARG_NONE, &opt_editable_tracks, "Make the tracks editable", NULL}, | ||||
|         {NULL}}; | ||||
| 
 | ||||
| #if !GTK_CHECK_VERSION(3, 22, 0) | ||||
| // use --gtk-debug=updates instead on newer GTK
 | ||||
| static gboolean opt_debug = FALSE; | ||||
| static GOptionEntry debug_entries[] = | ||||
|     { | ||||
|         {"debug", 'd', 0, G_OPTION_ARG_NONE, &opt_debug, "Enable debugging", NULL}, | ||||
|         {NULL}}; | ||||
| #endif | ||||
| 
 | ||||
| static GdkPixbuf *g_star_image = NULL; | ||||
| static OsmGpsMapImage *g_last_image = NULL; | ||||
| 
 | ||||
| static gboolean | ||||
| on_button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer user_data) | ||||
| { | ||||
|     OsmGpsMapPoint coord; | ||||
|     float lat, lon; | ||||
|     OsmGpsMap *map = OSM_GPS_MAP(widget); | ||||
|     OsmGpsMapTrack *othertrack = OSM_GPS_MAP_TRACK(user_data); | ||||
| 
 | ||||
|     int left_button = (event->button == 1) && (event->state == 0); | ||||
|     int middle_button = (event->button == 2) || ((event->button == 1) && (event->state & GDK_SHIFT_MASK)); | ||||
|     int right_button = (event->button == 3) || ((event->button == 1) && (event->state & GDK_CONTROL_MASK)); | ||||
| 
 | ||||
|     osm_gps_map_convert_screen_to_geographic(map, event->x, event->y, &coord); | ||||
|     osm_gps_map_point_get_degrees(&coord, &lat, &lon); | ||||
| 
 | ||||
|     if (event->type == GDK_3BUTTON_PRESS) | ||||
|     { | ||||
|         if (middle_button) | ||||
|         { | ||||
|             if (g_last_image) | ||||
|                 osm_gps_map_image_remove(map, g_last_image); | ||||
|         } | ||||
|         if (right_button) | ||||
|         { | ||||
|             osm_gps_map_track_remove(map, othertrack); | ||||
|         } | ||||
|     } | ||||
|     else if (event->type == GDK_2BUTTON_PRESS) | ||||
|     { | ||||
|         if (left_button) | ||||
|         { | ||||
|             osm_gps_map_gps_add(map, | ||||
|                                 lat, | ||||
|                                 lon, | ||||
|                                 g_random_double_range(0, 360)); | ||||
|         } | ||||
|         if (middle_button) | ||||
|         { | ||||
|             g_last_image = osm_gps_map_image_add(map, | ||||
|                                                  lat, | ||||
|                                                  lon, | ||||
|                                                  g_star_image); | ||||
|         } | ||||
|         if (right_button) | ||||
|         { | ||||
|             osm_gps_map_track_add_point(othertrack, &coord); | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
|     return FALSE; | ||||
| } | ||||
| 
 | ||||
| static gboolean | ||||
| on_map_changed_event(GtkWidget *widget, gpointer user_data) | ||||
| { | ||||
|     float lat, lon; | ||||
|     GtkEntry *entry = GTK_ENTRY(user_data); | ||||
|     OsmGpsMap *map = OSM_GPS_MAP(widget); | ||||
| 
 | ||||
|     g_object_get(map, "latitude", &lat, "longitude", &lon, NULL); | ||||
|     gchar *msg = g_strdup_printf("Map Centre: lattitude %f longitude %f", lat, lon); | ||||
|     gtk_entry_set_text(entry, msg); | ||||
|     g_free(msg); | ||||
| 
 | ||||
|     return FALSE; | ||||
| } | ||||
| 
 | ||||
| static gboolean | ||||
| on_zoom_in_clicked_event(GtkWidget *widget, gpointer user_data) | ||||
| { | ||||
|     int zoom; | ||||
|     OsmGpsMap *map = OSM_GPS_MAP(user_data); | ||||
|     g_object_get(map, "zoom", &zoom, NULL); | ||||
|     osm_gps_map_set_zoom(map, zoom + 1); | ||||
|     return FALSE; | ||||
| } | ||||
| 
 | ||||
| static gboolean | ||||
| on_zoom_out_clicked_event(GtkWidget *widget, gpointer user_data) | ||||
| { | ||||
|     int zoom; | ||||
|     OsmGpsMap *map = OSM_GPS_MAP(user_data); | ||||
|     g_object_get(map, "zoom", &zoom, NULL); | ||||
|     osm_gps_map_set_zoom(map, zoom - 1); | ||||
|     return FALSE; | ||||
| } | ||||
| 
 | ||||
| static gboolean | ||||
| on_home_clicked_event(GtkWidget *widget, gpointer user_data) | ||||
| { | ||||
|     OsmGpsMap *map = OSM_GPS_MAP(user_data); | ||||
|     osm_gps_map_set_center_and_zoom(map, -43.5326, 172.6362, 12); | ||||
|     return FALSE; | ||||
| } | ||||
| 
 | ||||
| static gboolean | ||||
| on_cache_clicked_event(GtkWidget *widget, gpointer user_data) | ||||
| { | ||||
|     OsmGpsMap *map = OSM_GPS_MAP(user_data); | ||||
|     if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) | ||||
|     { | ||||
|         int zoom, max_zoom; | ||||
|         OsmGpsMapPoint pt1, pt2; | ||||
|         osm_gps_map_get_bbox(map, &pt1, &pt2); | ||||
|         g_object_get(map, "zoom", &zoom, "max-zoom", &max_zoom, NULL); | ||||
|         osm_gps_map_download_maps(map, &pt1, &pt2, zoom, max_zoom); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         osm_gps_map_download_cancel_all(map); | ||||
|     } | ||||
|     return FALSE; | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| on_tiles_queued_changed(OsmGpsMap *image, GParamSpec *pspec, gpointer user_data) | ||||
| { | ||||
|     gchar *s; | ||||
|     int tiles; | ||||
|     GtkLabel *label = GTK_LABEL(user_data); | ||||
|     g_object_get(image, "tiles-queued", &tiles, NULL); | ||||
|     s = g_strdup_printf("%d", tiles); | ||||
|     gtk_label_set_text(label, s); | ||||
|     g_free(s); | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| on_gps_alpha_changed(GtkAdjustment *adjustment, gpointer user_data) | ||||
| { | ||||
|     OsmGpsMap *map = OSM_GPS_MAP(user_data); | ||||
|     OsmGpsMapTrack *track = osm_gps_map_gps_get_track(map); | ||||
|     float f = gtk_adjustment_get_value(adjustment); | ||||
|     g_object_set(track, "alpha", f, NULL); | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| on_gps_width_changed(GtkAdjustment *adjustment, gpointer user_data) | ||||
| { | ||||
|     OsmGpsMap *map = OSM_GPS_MAP(user_data); | ||||
|     OsmGpsMapTrack *track = osm_gps_map_gps_get_track(map); | ||||
|     float f = gtk_adjustment_get_value(adjustment); | ||||
|     g_object_set(track, "line-width", f, NULL); | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| on_star_align_changed(GtkAdjustment *adjustment, gpointer user_data) | ||||
| { | ||||
|     const char *propname = user_data; | ||||
|     float f = gtk_adjustment_get_value(adjustment); | ||||
|     if (g_last_image) | ||||
|         g_object_set(g_last_image, propname, f, NULL); | ||||
| } | ||||
| 
 | ||||
| #if GTK_CHECK_VERSION(3, 4, 0) | ||||
| static void | ||||
| on_gps_color_changed(GtkColorChooser *widget, gpointer user_data) | ||||
| { | ||||
|     GdkRGBA c; | ||||
|     OsmGpsMapTrack *track = OSM_GPS_MAP_TRACK(user_data); | ||||
|     gtk_color_chooser_get_rgba(widget, &c); | ||||
|     osm_gps_map_track_set_color(track, &c); | ||||
| } | ||||
| #else | ||||
| static void | ||||
| on_gps_color_changed(GtkColorButton *widget, gpointer user_data) | ||||
| { | ||||
|     GdkRGBA c; | ||||
|     OsmGpsMapTrack *track = OSM_GPS_MAP_TRACK(user_data); | ||||
|     gtk_color_button_get_rgba(widget, &c); | ||||
|     osm_gps_map_track_set_color(track, &c); | ||||
| } | ||||
| 
 | ||||
| #endif | ||||
| 
 | ||||
| static void | ||||
| on_close(GtkWidget *widget, gpointer user_data) | ||||
| { | ||||
|     gtk_widget_destroy(widget); | ||||
|     gtk_main_quit(); | ||||
| } | ||||
| 
 | ||||
| static void | ||||
| usage(GOptionContext *context) | ||||
| { | ||||
|     int i; | ||||
| 
 | ||||
|     puts(g_option_context_get_help(context, TRUE, NULL)); | ||||
| 
 | ||||
|     printf("Valid map sources:\n"); | ||||
|     for (i = OSM_GPS_MAP_SOURCE_NULL; i <= OSM_GPS_MAP_SOURCE_LAST; i++) | ||||
|     { | ||||
|         const char *name = osm_gps_map_source_get_friendly_name(i); | ||||
|         const char *uri = osm_gps_map_source_get_repo_uri(i); | ||||
|         if (uri != NULL) | ||||
|             printf("\t%d:\t%s\n", i, name); | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| int main(int argc, char **argv) | ||||
| { | ||||
|     GtkBuilder *builder; | ||||
|     GtkWidget *widget; | ||||
|     GtkAccelGroup *ag; | ||||
|     OsmGpsMap *map; | ||||
|     OsmGpsMapLayer *osd; | ||||
|     OsmGpsMapTrack *rightclicktrack; | ||||
|     const char *repo_uri; | ||||
|     char *cachedir, *cachebasedir; | ||||
|     GError *error = NULL; | ||||
|     GOptionContext *context; | ||||
| 
 | ||||
|     gtk_init(&argc, &argv); | ||||
| 
 | ||||
|     context = g_option_context_new("- Map browser"); | ||||
|     g_option_context_set_help_enabled(context, FALSE); | ||||
|     g_option_context_add_main_entries(context, entries, NULL); | ||||
| #if !GTK_CHECK_VERSION(3, 22, 0) | ||||
|     g_option_context_add_main_entries(context, debug_entries, NULL); | ||||
| #endif | ||||
| 
 | ||||
|     if (!g_option_context_parse(context, &argc, &argv, &error)) | ||||
|     { | ||||
|         usage(context); | ||||
|         return 1; | ||||
|     } | ||||
| 
 | ||||
|     /* Only use the repo_uri to check if the user has supplied a
 | ||||
|     valid map source ID */ | ||||
|     repo_uri = osm_gps_map_source_get_repo_uri(opt_map_provider); | ||||
|     if (repo_uri == NULL) | ||||
|     { | ||||
|         usage(context); | ||||
|         return 2; | ||||
|     } | ||||
| 
 | ||||
|     cachebasedir = osm_gps_map_get_default_cache_directory(); | ||||
| 
 | ||||
|     if (opt_cache_base_dir && g_file_test(opt_cache_base_dir, G_FILE_TEST_IS_DIR)) | ||||
|     { | ||||
|         cachedir = g_strdup(OSM_GPS_MAP_CACHE_AUTO); | ||||
|         cachebasedir = g_strdup(opt_cache_base_dir); | ||||
|     } | ||||
|     else if (opt_friendly_cache) | ||||
|     { | ||||
|         cachedir = g_strdup(OSM_GPS_MAP_CACHE_FRIENDLY); | ||||
|     } | ||||
|     else if (opt_no_cache) | ||||
|     { | ||||
|         cachedir = g_strdup(OSM_GPS_MAP_CACHE_DISABLED); | ||||
|     } | ||||
|     else | ||||
|     { | ||||
|         cachedir = g_strdup(OSM_GPS_MAP_CACHE_AUTO); | ||||
|     } | ||||
| 
 | ||||
| #if !GTK_CHECK_VERSION(3, 22, 0) | ||||
|     // use --gtk-debug=updates on newer gtk
 | ||||
|     if (opt_debug) | ||||
|         gdk_window_set_debug_updates(TRUE); | ||||
| #endif | ||||
| 
 | ||||
|     printf("Map Cache Dir: %s", cachedir); | ||||
|     printf("Map Provider: %s (%d)", osm_gps_map_source_get_friendly_name(opt_map_provider), opt_map_provider); | ||||
| 
 | ||||
|     map = g_object_new(OSM_TYPE_GPS_MAP, | ||||
|                        "map-source", opt_map_provider, | ||||
|                        "tile-cache", cachedir, | ||||
|                        "tile-cache-base", cachebasedir, | ||||
|                        "proxy-uri", g_getenv("http_proxy"), | ||||
|                        "user-agent", "mapviewer.c", // Always set user-agent, for better tile-usage compliance
 | ||||
|                        NULL); | ||||
| 
 | ||||
|     osd = g_object_new(OSM_TYPE_GPS_MAP_OSD, | ||||
|                        "show-scale", TRUE, | ||||
|                        "show-coordinates", TRUE, | ||||
|                        "show-crosshair", TRUE, | ||||
|                        "show-dpad", TRUE, | ||||
|                        "show-zoom", TRUE, | ||||
|                        "show-gps-in-dpad", TRUE, | ||||
|                        "show-gps-in-zoom", FALSE, | ||||
|                        "dpad-radius", 30, | ||||
|                        NULL); | ||||
|     osm_gps_map_layer_add(OSM_GPS_MAP(map), osd); | ||||
|     g_object_unref(G_OBJECT(osd)); | ||||
| 
 | ||||
|     // Add a second track for right clicks
 | ||||
|     rightclicktrack = osm_gps_map_track_new(); | ||||
| 
 | ||||
|     if (opt_editable_tracks) | ||||
|         g_object_set(rightclicktrack, "editable", TRUE, NULL); | ||||
|     osm_gps_map_track_add(OSM_GPS_MAP(map), rightclicktrack); | ||||
| 
 | ||||
|     g_free(cachedir); | ||||
|     g_free(cachebasedir); | ||||
| 
 | ||||
|     // Enable keyboard navigation
 | ||||
|     osm_gps_map_set_keyboard_shortcut(map, OSM_GPS_MAP_KEY_FULLSCREEN, GDK_KEY_F11); | ||||
|     osm_gps_map_set_keyboard_shortcut(map, OSM_GPS_MAP_KEY_UP, GDK_KEY_Up); | ||||
|     osm_gps_map_set_keyboard_shortcut(map, OSM_GPS_MAP_KEY_DOWN, GDK_KEY_Down); | ||||
|     osm_gps_map_set_keyboard_shortcut(map, OSM_GPS_MAP_KEY_LEFT, GDK_KEY_Left); | ||||
|     osm_gps_map_set_keyboard_shortcut(map, OSM_GPS_MAP_KEY_RIGHT, GDK_KEY_Right); | ||||
| 
 | ||||
|     // Build the UI
 | ||||
|     g_star_image = gdk_pixbuf_new_from_file_at_size("poi.png", 24, 24, NULL); | ||||
| 
 | ||||
|     builder = gtk_builder_new(); | ||||
|     gtk_builder_add_from_file(builder, "mapviewer.ui", &error); | ||||
|     if (error) | ||||
|         g_error("ERROR: %s\n", error->message); | ||||
| 
 | ||||
|     gtk_box_pack_start( | ||||
|         GTK_BOX(gtk_builder_get_object(builder, "map_box")), | ||||
|         GTK_WIDGET(map), TRUE, TRUE, 0); | ||||
| 
 | ||||
|     // Init values
 | ||||
|     float lw, a; | ||||
|     GdkRGBA c; | ||||
|     OsmGpsMapTrack *gpstrack = osm_gps_map_gps_get_track(map); | ||||
|     g_object_get(gpstrack, "line-width", &lw, "alpha", &a, NULL); | ||||
|     osm_gps_map_track_get_color(gpstrack, &c); | ||||
|     gtk_adjustment_set_value( | ||||
|         GTK_ADJUSTMENT(gtk_builder_get_object(builder, "gps_width_adjustment")), | ||||
|         lw); | ||||
|     gtk_adjustment_set_value( | ||||
|         GTK_ADJUSTMENT(gtk_builder_get_object(builder, "gps_alpha_adjustment")), | ||||
|         a); | ||||
|     gtk_adjustment_set_value( | ||||
|         GTK_ADJUSTMENT(gtk_builder_get_object(builder, "star_xalign_adjustment")), | ||||
|         0.5); | ||||
|     gtk_adjustment_set_value( | ||||
|         GTK_ADJUSTMENT(gtk_builder_get_object(builder, "star_yalign_adjustment")), | ||||
|         0.5); | ||||
| #if GTK_CHECK_VERSION(3, 4, 0) | ||||
|     gtk_color_chooser_set_rgba( | ||||
|         GTK_COLOR_CHOOSER(gtk_builder_get_object(builder, "gps_colorbutton")), | ||||
|         &c); | ||||
| #else | ||||
|     gtk_color_button_set_rgba( | ||||
|         GTK_COLOR_BUTTON(gtk_builder_get_object(builder, "gps_colorbutton")), | ||||
|         &c); | ||||
| #endif | ||||
| 
 | ||||
|     // Connect to signals
 | ||||
|     g_signal_connect( | ||||
|         gtk_builder_get_object(builder, "gps_colorbutton"), "color-set", | ||||
|         G_CALLBACK(on_gps_color_changed), (gpointer)gpstrack); | ||||
|     g_signal_connect( | ||||
|         gtk_builder_get_object(builder, "zoom_in_button"), "clicked", | ||||
|         G_CALLBACK(on_zoom_in_clicked_event), (gpointer)map); | ||||
|     g_signal_connect( | ||||
|         gtk_builder_get_object(builder, "zoom_out_button"), "clicked", | ||||
|         G_CALLBACK(on_zoom_out_clicked_event), (gpointer)map); | ||||
|     g_signal_connect( | ||||
|         gtk_builder_get_object(builder, "home_button"), "clicked", | ||||
|         G_CALLBACK(on_home_clicked_event), (gpointer)map); | ||||
|     g_signal_connect( | ||||
|         gtk_builder_get_object(builder, "cache_button"), "clicked", | ||||
|         G_CALLBACK(on_cache_clicked_event), (gpointer)map); | ||||
|     g_signal_connect( | ||||
|         gtk_builder_get_object(builder, "gps_alpha_adjustment"), "value-changed", | ||||
|         G_CALLBACK(on_gps_alpha_changed), (gpointer)map); | ||||
|     g_signal_connect( | ||||
|         gtk_builder_get_object(builder, "gps_width_adjustment"), "value-changed", | ||||
|         G_CALLBACK(on_gps_width_changed), (gpointer)map); | ||||
|     g_signal_connect( | ||||
|         gtk_builder_get_object(builder, "star_xalign_adjustment"), "value-changed", | ||||
|         G_CALLBACK(on_star_align_changed), (gpointer) "x-align"); | ||||
|     g_signal_connect( | ||||
|         gtk_builder_get_object(builder, "star_yalign_adjustment"), "value-changed", | ||||
|         G_CALLBACK(on_star_align_changed), (gpointer) "y-align"); | ||||
|     g_signal_connect(G_OBJECT(map), "button-press-event", | ||||
|                      G_CALLBACK(on_button_press_event), (gpointer)rightclicktrack); | ||||
|     g_signal_connect(G_OBJECT(map), "changed", | ||||
|                      G_CALLBACK(on_map_changed_event), | ||||
|                      (gpointer)gtk_builder_get_object(builder, "text_entry")); | ||||
|     g_signal_connect(G_OBJECT(map), "notify::tiles-queued", | ||||
|                      G_CALLBACK(on_tiles_queued_changed), | ||||
|                      (gpointer)gtk_builder_get_object(builder, "cache_label")); | ||||
| 
 | ||||
|     widget = GTK_WIDGET(gtk_builder_get_object(builder, "window1")); | ||||
|     g_signal_connect(widget, "destroy", | ||||
|                      G_CALLBACK(on_close), (gpointer)map); | ||||
|     // Setup accelerators.
 | ||||
|     ag = gtk_accel_group_new(); | ||||
|     gtk_accel_group_connect(ag, GDK_KEY_w, GDK_CONTROL_MASK, GTK_ACCEL_MASK, | ||||
|                             g_cclosure_new(gtk_main_quit, NULL, NULL)); | ||||
|     gtk_accel_group_connect(ag, GDK_KEY_q, GDK_CONTROL_MASK, GTK_ACCEL_MASK, | ||||
|                             g_cclosure_new(gtk_main_quit, NULL, NULL)); | ||||
|     gtk_window_add_accel_group(GTK_WINDOW(widget), ag); | ||||
| 
 | ||||
|     gtk_widget_show_all(widget); | ||||
| 
 | ||||
|     g_log_set_handler("OsmGpsMap", G_LOG_LEVEL_MASK, g_log_default_handler, NULL); | ||||
|     gtk_main(); | ||||
| 
 | ||||
|     return 0; | ||||
| } | ||||
|  | @ -0,0 +1,34 @@ | |||
| #!/usr/bin/seed
 | ||||
| 
 | ||||
| // You probbably need to tell GObject introspection where to find the bindings
 | ||||
| // export LD_LIBRARY_PATH=../src/.libs/
 | ||||
| // export GI_TYPELIB_PATH=../src/
 | ||||
| 
 | ||||
| const Gtk = imports.gi.Gtk; | ||||
| const Osm = imports.gi.OsmGpsMap; | ||||
| 
 | ||||
| Gtk.init(0, null); | ||||
| 
 | ||||
| var win = new Gtk.Window({ type: Gtk.WindowType.TOPLEVEL }); | ||||
| win.set_border_width(10); | ||||
| win.set_default_size(400,400); | ||||
| 
 | ||||
| // ARRRGGGHHHHH GNOME
 | ||||
| if (0) | ||||
|     // GJS makes me do this
 | ||||
|     win.connect("delete-event", Gtk.main_quit); | ||||
| else | ||||
|     // Seed makes me do this
 | ||||
|     win.signal.delete_event.connect(Gtk.main_quit); | ||||
| 
 | ||||
| var map = new Osm.OsmGpsMap() | ||||
| var osd = new Osm.Osd() | ||||
| 
 | ||||
| map.layer_add(osd) | ||||
| win.add(map); | ||||
| 
 | ||||
| win.show_all(); | ||||
| 
 | ||||
| Gtk.main(); | ||||
| 
 | ||||
| 
 | ||||
|  | @ -0,0 +1,299 @@ | |||
| #!/usr/bin/env python3 | ||||
| 
 | ||||
| """ | ||||
| Copyright (C) Hadley Rich 2008 <hads@nice.net.nz> | ||||
| based on main.c - with thanks to John Stowers | ||||
| 
 | ||||
| This is free software: you can redistribute it and/or modify it | ||||
| under the terms of the GNU General Public License | ||||
| as published by the Free Software Foundation; version 2. | ||||
| 
 | ||||
| This program is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
| GNU General Public License for more details. | ||||
| 
 | ||||
| You should have received a copy of the GNU General Public License | ||||
| along with this program; if not, see <http://www.gnu.org/licenses/>. | ||||
| """ | ||||
| 
 | ||||
| import random | ||||
| import gi | ||||
| 
 | ||||
| gi.require_version("Gdk", "3.0") | ||||
| gi.require_version("Gtk", "3.0") | ||||
| gi.require_version("OsmGpsMap", "1.0") | ||||
| 
 | ||||
| from gi.repository import ( | ||||
|     Gdk, | ||||
|     GdkPixbuf, | ||||
|     GLib, | ||||
|     GObject, | ||||
|     Gtk, | ||||
|     OsmGpsMap as osmgpsmap, | ||||
| )  # noqa | ||||
| 
 | ||||
| print(f"using library: {osmgpsmap.__file__} (version {osmgpsmap._version})") | ||||
| 
 | ||||
| assert osmgpsmap._version == "1.0" | ||||
| 
 | ||||
| class DummyMapNoGpsPoint(osmgpsmap.Map): | ||||
|     def do_draw_gps_point(self, drawable): | ||||
|         pass | ||||
| 
 | ||||
| 
 | ||||
| GObject.type_register(DummyMapNoGpsPoint) | ||||
| 
 | ||||
| 
 | ||||
| class DummyLayer(GObject.GObject, osmgpsmap.MapLayer): | ||||
|     def __init__(self): | ||||
|         GObject.GObject.__init__(self) | ||||
| 
 | ||||
|     def do_draw(self, gpsmap, gdkdrawable): | ||||
|         pass | ||||
| 
 | ||||
|     def do_render(self, gpsmap): | ||||
|         pass | ||||
| 
 | ||||
|     def do_busy(self): | ||||
|         return False | ||||
| 
 | ||||
|     def do_button_press(self, gpsmap, gdkeventbutton): | ||||
|         return False | ||||
| 
 | ||||
| 
 | ||||
| GObject.type_register(DummyLayer) | ||||
| 
 | ||||
| 
 | ||||
| class UI(Gtk.Window): | ||||
|     def __init__(self): | ||||
|         Gtk.Window.__init__(self, type=Gtk.WindowType.TOPLEVEL) | ||||
| 
 | ||||
|         self.set_default_size(500, 500) | ||||
|         self.connect("destroy", lambda x: Gtk.main_quit()) | ||||
|         self.set_title("OpenStreetMap GPS Mapper") | ||||
| 
 | ||||
|         self.vbox = Gtk.VBox(homogeneous=False, spacing=0) | ||||
|         self.add(self.vbox) | ||||
| 
 | ||||
|         if 0: | ||||
|             self.osm = DummyMapNoGpsPoint() | ||||
|         else: | ||||
|             self.osm = osmgpsmap.Map() | ||||
|         self.osm.layer_add( | ||||
|             osmgpsmap.MapOsd(show_dpad=True, | ||||
|                              show_zoom=True, | ||||
|                              show_crosshair=True) | ||||
|         ) | ||||
|         self.osm.set_property("map-source", osmgpsmap.MapSource_t.OPENSTREETMAP) | ||||
|         self.osm.layer_add(DummyLayer()) | ||||
| 
 | ||||
|         self.last_image = None | ||||
| 
 | ||||
|         self.osm.connect("button_press_event", self.on_button_press) | ||||
|         self.osm.connect("changed", self.on_map_change) | ||||
| 
 | ||||
|         # connect keyboard shortcuts | ||||
|         self.osm.set_keyboard_shortcut( | ||||
|             osmgpsmap.MapKey_t.FULLSCREEN, Gdk.keyval_from_name("F11") | ||||
|         ) | ||||
|         self.osm.set_keyboard_shortcut( | ||||
|             osmgpsmap.MapKey_t.UP, Gdk.keyval_from_name("Up") | ||||
|         ) | ||||
|         self.osm.set_keyboard_shortcut( | ||||
|             osmgpsmap.MapKey_t.DOWN, Gdk.keyval_from_name("Down") | ||||
|         ) | ||||
|         self.osm.set_keyboard_shortcut( | ||||
|             osmgpsmap.MapKey_t.LEFT, Gdk.keyval_from_name("Left") | ||||
|         ) | ||||
|         self.osm.set_keyboard_shortcut( | ||||
|             osmgpsmap.MapKey_t.RIGHT, Gdk.keyval_from_name("Right") | ||||
|         ) | ||||
| 
 | ||||
|         # connect to tooltip | ||||
|         self.osm.props.has_tooltip = True | ||||
|         self.osm.connect("query-tooltip", self.on_query_tooltip) | ||||
| 
 | ||||
|         self.latlon_entry = Gtk.Entry() | ||||
| 
 | ||||
|         zoom_in_button = Gtk.Button.new_from_icon_name("zoom-in", | ||||
|                                                        Gtk.IconSize.BUTTON) | ||||
|         zoom_in_button.connect("clicked", self.zoom_in_clicked) | ||||
|         zoom_out_button = Gtk.Button.new_from_icon_name("zoom-out", | ||||
|                                                         Gtk.IconSize.BUTTON) | ||||
|         zoom_out_button.connect("clicked", self.zoom_out_clicked) | ||||
|         home_button = Gtk.Button.new_from_icon_name("go-home", | ||||
|                                                     Gtk.IconSize.BUTTON) | ||||
|         home_button.connect("clicked", self.home_clicked) | ||||
|         cache_button = Gtk.Button(label="Cache") | ||||
|         cache_button.connect("clicked", self.cache_clicked) | ||||
| 
 | ||||
|         self.vbox.pack_start(self.osm, True, True, 0) | ||||
|         hbox = Gtk.HBox(homogeneous=False, spacing=0) | ||||
|         hbox.pack_start(zoom_in_button, False, True, 0) | ||||
|         hbox.pack_start(zoom_out_button, False, True, 0) | ||||
|         hbox.pack_start(home_button, False, True, 0) | ||||
|         hbox.pack_start(cache_button, False, True, 0) | ||||
| 
 | ||||
|         # add ability to test custom map URIs | ||||
|         ex = Gtk.Expander(label="<b>Map Repository URI</b>") | ||||
|         ex.props.use_markup = True | ||||
|         vb = Gtk.VBox() | ||||
|         self.repouri_entry = Gtk.Entry() | ||||
|         self.repouri_entry.set_text(self.osm.props.repo_uri) | ||||
|         self.image_format_entry = Gtk.Entry() | ||||
|         self.image_format_entry.set_text(self.osm.props.image_format) | ||||
| 
 | ||||
|         lbl = Gtk.Label( | ||||
|             label="""Enter an repository URL to fetch map tiles \ | ||||
| from in the box below. Special metacharacters may be included in this url | ||||
| 
 | ||||
| <i>Metacharacters:</i> | ||||
| \t#X\tMax X location | ||||
| \t#Y\tMax Y location | ||||
| \t#Z\tMap zoom (0 = min zoom, fully zoomed out) | ||||
| \t#S\tInverse zoom (max-zoom - #Z) | ||||
| \t#Q\tQuadtree encoded tile (qrts) | ||||
| \t#W\tQuadtree encoded tile (1234) | ||||
| \t#U\tEncoding not implemeted | ||||
| \t#R\tRandom integer, 0-4""" | ||||
|         ) | ||||
|         lbl.props.xalign = 0 | ||||
|         lbl.props.use_markup = True | ||||
|         lbl.props.wrap = True | ||||
| 
 | ||||
|         ex.add(vb) | ||||
|         vb.pack_start(lbl, False, True, 0) | ||||
| 
 | ||||
|         hb = Gtk.HBox() | ||||
|         hb.pack_start(Gtk.Label(label="URI: "), False, True, 0) | ||||
|         hb.pack_start(self.repouri_entry, True, True, 0) | ||||
|         vb.pack_start(hb, False, True, 0) | ||||
| 
 | ||||
|         hb = Gtk.HBox() | ||||
|         hb.pack_start(Gtk.Label(label="Image Format: "), False, True, 0) | ||||
|         hb.pack_start(self.image_format_entry, True, True, 0) | ||||
|         vb.pack_start(hb, False, True, 0) | ||||
| 
 | ||||
|         gobtn = Gtk.Button(label="Load Map URI") | ||||
|         gobtn.connect("clicked", self.load_map_clicked) | ||||
|         vb.pack_start(gobtn, False, True, 0) | ||||
| 
 | ||||
|         self.show_tooltips = False | ||||
|         cb = Gtk.CheckButton(label="Show Location in Tooltips") | ||||
|         cb.props.active = self.show_tooltips | ||||
|         cb.connect("toggled", self.on_show_tooltips_toggled) | ||||
|         self.vbox.pack_end(cb, False, True, 0) | ||||
| 
 | ||||
|         cb = Gtk.CheckButton(label="Disable Cache") | ||||
|         cb.props.active = False | ||||
|         cb.connect("toggled", self.disable_cache_toggled) | ||||
|         self.vbox.pack_end(cb, False, True, 0) | ||||
| 
 | ||||
|         self.vbox.pack_end(ex, False, True, 0) | ||||
|         self.vbox.pack_end(self.latlon_entry, False, True, 0) | ||||
|         self.vbox.pack_end(hbox, False, True, 0) | ||||
| 
 | ||||
|         GLib.timeout_add(500, self.print_tiles) | ||||
| 
 | ||||
|     def disable_cache_toggled(self, btn): | ||||
|         if btn.props.active: | ||||
|             self.osm.props.tile_cache = osmgpsmap.MAP_CACHE_DISABLED | ||||
|         else: | ||||
|             self.osm.props.tile_cache = osmgpsmap.MAP_CACHE_AUTO | ||||
| 
 | ||||
|     def on_show_tooltips_toggled(self, btn): | ||||
|         self.show_tooltips = btn.props.active | ||||
| 
 | ||||
|     def load_map_clicked(self, button): | ||||
|         uri = self.repouri_entry.get_text() | ||||
|         format = self.image_format_entry.get_text() | ||||
|         if uri and format: | ||||
|             if self.osm: | ||||
|                 # remove old map | ||||
|                 self.vbox.remove(self.osm) | ||||
|             try: | ||||
|                 self.osm = osmgpsmap.Map(repo_uri=uri, image_format=format) | ||||
|             except Exception as e: | ||||
|                 print("ERROR:", e) | ||||
|                 self.osm = osmgpsmap.Map() | ||||
| 
 | ||||
|             self.vbox.pack_start(self.osm, True, True, 0) | ||||
|             self.osm.show() | ||||
| 
 | ||||
|     def print_tiles(self): | ||||
|         if self.osm.props.tiles_queued != 0: | ||||
|             print(self.osm.props.tiles_queued, "tiles queued") | ||||
|         return True | ||||
| 
 | ||||
|     def zoom_in_clicked(self, button): | ||||
|         self.osm.set_zoom(self.osm.props.zoom + 1) | ||||
| 
 | ||||
|     def zoom_out_clicked(self, button): | ||||
|         self.osm.set_zoom(self.osm.props.zoom - 1) | ||||
| 
 | ||||
|     def home_clicked(self, button): | ||||
|         self.osm.set_center_and_zoom(-44.39, 171.25, 12) | ||||
| 
 | ||||
|     def on_query_tooltip(self, widget, x, y, keyboard_tip, tooltip, data=None): | ||||
|         if keyboard_tip: | ||||
|             return False | ||||
| 
 | ||||
|         if self.show_tooltips: | ||||
|             p = osmgpsmap.point_new_degrees(0.0, 0.0) | ||||
|             self.osm.convert_screen_to_geographic(x, y, p) | ||||
|             lat, lon = p.get_degrees() | ||||
|             tooltip.set_markup(f"{lat:+.4f}, {lon:+.4f}") | ||||
|             return True | ||||
| 
 | ||||
|         return False | ||||
| 
 | ||||
|     def cache_clicked(self, button): | ||||
|         bbox = self.osm.get_bbox() | ||||
|         self.osm.download_maps( | ||||
|             *bbox, | ||||
|             zoom_start=self.osm.props.zoom, | ||||
|             zoom_end=self.osm.props.max_zoom | ||||
|         ) | ||||
| 
 | ||||
|     def on_map_change(self, osm): | ||||
|         self.latlon_entry.set_text( | ||||
|             f"Map Centre: latitude {self.osm.props.latitude} " | ||||
|             f"longitude {self.osm.props.longitude}" | ||||
|         ) | ||||
| 
 | ||||
|     def on_button_press(self, osm, event): | ||||
|         state = event.get_state() | ||||
|         lat, lon = self.osm.get_event_location(event).get_degrees() | ||||
| 
 | ||||
|         left = event.button == 1 and state == 0 | ||||
|         middle = event.button == 2 or ( | ||||
|             event.button == 1 and state & Gdk.ModifierType.SHIFT_MASK | ||||
|         ) | ||||
|         right = event.button == 3 or ( | ||||
|             event.button == 1 and state & Gdk.ModifierType.CONTROL_MASK | ||||
|         ) | ||||
| 
 | ||||
|         # work around binding bug with invalid variable name | ||||
|         GDK_2BUTTON_PRESS = getattr(Gdk.EventType, "2BUTTON_PRESS") | ||||
|         GDK_3BUTTON_PRESS = getattr(Gdk.EventType, "3BUTTON_PRESS") | ||||
| 
 | ||||
|         if event.type == GDK_3BUTTON_PRESS: | ||||
|             if middle: | ||||
|                 if self.last_image is not None: | ||||
|                     self.osm.image_remove(self.last_image) | ||||
|                     self.last_image = None | ||||
|         elif event.type == GDK_2BUTTON_PRESS: | ||||
|             if left: | ||||
|                 self.osm.gps_add(lat, lon, heading=random.random() * 360) | ||||
|             if middle: | ||||
|                 pb = GdkPixbuf.Pixbuf.new_from_file_at_size("poi.png", 24, 24) | ||||
|                 self.last_image = self.osm.image_add(lat, lon, pb) | ||||
|             if right: | ||||
|                 pass | ||||
| 
 | ||||
| 
 | ||||
| if __name__ == "__main__": | ||||
|     u = UI() | ||||
|     u.show_all() | ||||
|     Gtk.main() | ||||
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 1.1 KiB | 
|  | @ -0,0 +1,47 @@ | |||
| #include <gtk/gtk.h> | ||||
| #include "osm-gps-map.h" | ||||
| 
 | ||||
| int | ||||
| main (int   argc, | ||||
|       char *argv[]) | ||||
| { | ||||
| 	OsmGpsMap *map; | ||||
| 	OsmGpsMapPolygon* poly; | ||||
|     GtkWidget *window; | ||||
| 
 | ||||
|     gtk_init (&argc, &argv); | ||||
| 
 | ||||
|     window = gtk_window_new (GTK_WINDOW_TOPLEVEL); | ||||
|     gtk_window_set_title (GTK_WINDOW (window), "Window"); | ||||
|     g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); | ||||
| 
 | ||||
| 
 | ||||
| 	map = g_object_new (OSM_TYPE_GPS_MAP, NULL); | ||||
| 	gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(map)); | ||||
| 
 | ||||
| 	poly = osm_gps_map_polygon_new(); | ||||
| 	OsmGpsMapTrack* polytrack = osm_gps_map_track_new(); | ||||
| 
 | ||||
| 	OsmGpsMapPoint* p1, *p2, *p3; | ||||
| 	p1 = osm_gps_map_point_new_radians(1.25663706, -0.488692191); | ||||
| 	p2 = osm_gps_map_point_new_radians(1.06465084, -0.750491578); | ||||
| 	p3 = osm_gps_map_point_new_radians(1.064650849, -0.191986218); | ||||
| 
 | ||||
| 	osm_gps_map_track_add_point(polytrack, p1); | ||||
| 	osm_gps_map_track_add_point(polytrack, p2); | ||||
| 	osm_gps_map_track_add_point(polytrack, p3); | ||||
| 
 | ||||
| 	g_object_set(poly, "track", polytrack, NULL); | ||||
| 	g_object_set(poly, "editable", TRUE, NULL); | ||||
| 
 | ||||
| 	osm_gps_map_polygon_add(map, poly); | ||||
| 
 | ||||
| 	gtk_widget_show (GTK_WIDGET(map)); | ||||
|     gtk_widget_show (window); | ||||
| 
 | ||||
|     gtk_main (); | ||||
| 
 | ||||
|     return 0; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue
	
	 karthikmv
						karthikmv