[cairo-commit] roadster/src databasewindow.h, NONE,
1.1 datasetwindow.h, NONE, 1.1 db.h, NONE, 1.1 geometryset.h,
NONE, 1.1 gotowindow.h, NONE, 1.1 gpsclient.h, NONE, 1.1 gui.h,
NONE, 1.1 import.h, NONE, 1.1 import_tiger.h, NONE,
1.1 importwindow.h, NONE, 1.1 layers.h, NONE,
1.1 locationset.h, NONE, 1.1 mainwindow.h, NONE, 1.1 map.c,
1.8, 1.9 map.h, NONE, 1.1 scenemanager.h, NONE, 1.1 search.h,
NONE, 1.1 search_location.h, NONE, 1.1 search_road.h, NONE,
1.1 searchwindow.h, NONE, 1.1 util.h, NONE,
1.1 welcomewindow.h, NONE, 1.1
Ian McIntosh
commit at pdx.freedesktop.org
Wed Feb 23 09:43:52 PST 2005
Committed by: ian
Update of /cvs/cairo/roadster/src
In directory gabe:/tmp/cvs-serv27910/src
Modified Files:
map.c
Added Files:
databasewindow.h datasetwindow.h db.h geometryset.h
gotowindow.h gpsclient.h gui.h import.h import_tiger.h
importwindow.h layers.h locationset.h mainwindow.h map.h
scenemanager.h search.h search_location.h search_road.h
searchwindow.h util.h welcomewindow.h
Log Message:
--- NEW FILE: databasewindow.h ---
/***************************************************************************
* databasewindow.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _DATABASEWINDOW_H
#define _DATABASEWINDOW_H
#ifdef __cplusplus
extern "C"
{
#endif
void databasewindow_init(GladeXML* pGladeXML);
gboolean databasewindow_connect(void);
/* Funky, auto-lookup glade signal handlers.
XXX: Better would be to hook these up manually, remove these
declarations, and make the functions static.
*/
void databasewindow_on_connectbutton_clicked(void);
#ifdef __cplusplus
}
#endif
#endif /* _DATABASEWINDOW_H */
--- NEW FILE: datasetwindow.h ---
/***************************************************************************
* datasetwindow.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _DATASETWINDOW_H
#define _DATASETWINDOW_H
#include <glade/glade.h>
#ifdef __cplusplus
extern "C"
{
#endif
void datasetwindow_init(GladeXML* pGladeXML);
void datasetwindow_show(void);
/* Funky, auto-lookup glade signal handlers.
XXX: Better would be to hook these up manually, remove these
declarations, and make the functions static.
*/
void datasetwindow_on_datasetdeletebutton_clicked(GtkWidget *widget, gpointer user_data);
void datasetwindow_on_datasetimportbutton_clicked(GtkWidget *widget, gpointer user_data);
#ifdef __cplusplus
}
#endif
#endif /* _DATASETWINDOW_H */
--- NEW FILE: db.h ---
/***************************************************************************
* db.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _DB_H_
#define _DB_H_
#include <mysql.h>
typedef struct db_connection {
MYSQL *m_pMySQLConnection;
gchar* m_pzHost;
gchar* m_pzUserName;
gchar* m_pzPassword;
gchar* m_pzDatabase;
} db_connection_t;
typedef MYSQL_RES db_resultset_t;
typedef MYSQL_ROW db_row_t;
#define DB_ROADS_TABLENAME ("Road")
#define DB_FEATURES_TABLENAME ("Feature")
#include "map.h"
#include "layers.h"
void db_create_tables(void);
void db_init(void);
void db_deinit(void);
// connect
gboolean db_connect(const gchar* pzHost, const gchar* pzUserName, const gchar* pzPassword, const gchar* pzDatabase);
const gchar* db_get_connection_info(void);
// utility
gboolean db_is_empty(void);
gboolean db_insert_road(gint nLayerType, gint nAddressLeftStart, gint nAddressLeftEnd, gint nAddressRightStart, gint nAddressRightEnd, GPtrArray* pPointsArray, gint* pReturnID);
gboolean db_insert_roadname(gint nRoadID, const gchar* pszName, gint nSuffixID);
//~ gboolean db_create_points_db(const gchar* name);
//~ // insert
//~ gboolean db_road_insert(db_connection_t* pConnection, gint nLayerType, GPtrArray* pPoints, gint* pReturnID);
//~ gboolean db_point_insert(db_connection_t* pConnection, gint nPointSetID, mappoint_t* pPoint, gint* pReturnID);
//~ // load
//~ gboolean db_load_geometry(db_connection_t* pConnection, maprect_t* pRect, layer_t* pLayer, gint nNumLayers); //, geometryset_t* pGeometrySet);
//~ gboolean db_pointset_get_list(db_connection_t* pConnection, GPtrArray* pPointSet);
gboolean db_query(const gchar* pszSQL, db_resultset_t** ppResultSet);
db_row_t db_fetch_row(db_resultset_t* pResultSet);
void db_free_result(db_resultset_t* pResultSet);
gint db_get_last_insert_id(void);
gchar* db_make_escaped_string(const gchar* pszString);
void db_free_escaped_string(gchar* pszString);
void db_parse_point(const gchar* pszText, mappoint_t* pPoint);
void db_parse_pointstring(const gchar* pszText, pointstring_t* pPointString, gboolean (*callback_get_point)(mappoint_t**));
void db_enable_keys(void);
void db_disable_keys(void);
#endif
--- NEW FILE: geometryset.h ---
/***************************************************************************
* geometryset.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef __GEOMETRYSET_H__
#define __GEOMETRYSET_H__
// a geometry set holds all the geometry for a layer
typedef struct geometryset {
GPtrArray* m_pPointStringsArray;
} geometryset_t;
// holds points that form a road or polygon (park, etc.)
typedef struct {
gchar* m_pszName;
GPtrArray* m_pPointsArray;
} pointstring_t;
#include "map.h"
void geometryset_init(void);
void geometryset_free(geometryset_t* pGeometrySet);
void geometryset_clear(geometryset_t* pGeometrySet);
gboolean geometryset_new(geometryset_t** ppGeometrySet);
gboolean geometryset_util_new_point(mappoint_t** ppPoint);
gboolean geometryset_util_new_pointstring(pointstring_t** ppPointString);
void geometryset_util_free_pointstring(pointstring_t* pPointString);
gboolean geometryset_load_geometry(maprect_t* pRect);
void geometryset_debug_print(geometryset_t* pGeometrySet);
#endif
--- NEW FILE: gotowindow.h ---
/***************************************************************************
* gotowindow.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#include <glade/glade.h>
void gotowindow_init(GladeXML* pGladeXML);
void gotowindow_show(void);
void gotowindow_hide(void);
/* Funky, auto-lookup glade signal handlers.
XXX: Better would be to hook these up manually, remove these
declarations, and make the functions static.
*/
void gotowindow_on_knownlocationtreeview_row_activated(GtkTreeView *treeview, GtkTreePath *arg1, GtkTreeViewColumn *arg2, gpointer user_data);
void gotowindow_on_gobutton_clicked(GtkButton *button, gpointer user_data);
--- NEW FILE: gpsclient.h ---
/***************************************************************************
* gpsclient.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _GPSCLIENT_H
#define _GPSCLIENT_H
#ifdef __cplusplus
extern "C"
{
#endif
#include "map.h"
typedef enum {
GPS_STATUS_NO_GPSD = 0, // daemon is absent :( (0 should be default state)
GPS_STATUS_NO_DEVICE = 1, // no physical GPS device :(
GPS_STATUS_NO_SIGNAL = 2, // can't get a signal :(
GPS_STATUS_LIVE = 3, // :) everything groovy
} EGPSClientStatus;
typedef enum {
GPS_SIGNALQUALITY_1_TERRIBLE = 0, // (0 should be default state)
GPS_SIGNALQUALITY_2_POOR = 1,
GPS_SIGNALQUALITY_3_FAIR = 2,
GPS_SIGNALQUALITY_4_GOOD = 3,
GPS_SIGNALQUALITY_5_EXCELLENT = 4,
} EGPSClientSignalQuality;
// PDOP (positional dilution of precision) values. PDOP combines HDOP and VDOP.
// lower is better. these numbers are semi-arbitrary, and depend on the use
// (in our case, navigating a car, where a few feet here and there isn't important).
#define PDOP_EXCELLENT (2.0)
#define PDOP_GOOD (3.0)
#define PDOP_FAIR (4.0)
#define PDOP_POOR (5.0)
// public gpsdata
typedef struct gpsdata {
EGPSClientStatus m_eStatus;
mappoint_t m_ptPosition;
gdouble m_fSignalQuality;
gdouble m_fSpeedInKilometersPerHour;
gdouble m_fSpeedInMilesPerHour;
} gpsdata_t;
void gpsclient_init(void);
gpsdata_t* gpsclient_getdata(void);
#ifdef __cplusplus
}
#endif
#endif /* _GPSCLIENT_H */
--- NEW FILE: gui.h ---
/***************************************************************************
* gui.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _GUI_H_
#define _GUI_H_
#include <gtk/gtk.h>
extern GtkWidget *g_pApplicationWidget;
extern GtkWidget *g_pDisplaySettingsWidget;
struct gui_state_t {
float m_fCenterX;
float m_fCenterY;
guint8 m_nZoomLevel;
};
//
// prototypes
//
void gui_init(void);
void gui_run(void);
extern gboolean gui_redraw_map_if_needed(void);
extern void gui_set_tool_label(gchar* pMessage);
extern void gui_exit(void);
extern GtkWidget* gui_get_top_window(void);
//~ void gui_show_goto_window();
//~ void gui_hide_goto_window();
//~ void gui_show_colors_window();
//~ void gui_hide_colors_window();
//~ void gui_show_about_dialog();
//~ void gui_hide_about_window();
//~ void gui_show_preferences_window();
//~ void gui_hide_preferences_window();
void cursor_init(void);
//~ void gui_statusbar_update_zoomscale();
//~ void gui_statusbar_update_position();
//~ void gui_statusbar_set_position(gchar* pMessage);
//~ void gui_statusbar_set_zoomscale(gchar* pMessage);
//~ gboolean gui_get_toolbar_visible();
//~ void gui_set_toolbar_visible(gboolean bVisible);
//~ void gui_toggle_fullscreen();
//~ void gui_zoomin();
//~ void gui_zoomout();
#endif
--- NEW FILE: import.h ---
/***************************************************************************
* import.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _IMPORT_H
#define _IMPORT_H
#ifdef __cplusplus
extern "C"
{
#endif
gboolean import_from_uri(const gchar* pszURI);
#ifdef __cplusplus
}
#endif
#endif /* _IMPORT_H */
--- NEW FILE: import_tiger.h ---
/***************************************************************************
* import_tiger.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _IMPORT_TIGER_H
#define _IMPORT_TIGER_H
#ifdef __cplusplus
extern "C"
{
#endif
#include <gtk/gtk.h>
#include "db.h"
gboolean import_tiger_from_uri(const gchar* pszURI, gint nTigerSetNumber);
#ifdef __cplusplus
}
#endif
#endif /* _IMPORT_TIGER_H */
--- NEW FILE: importwindow.h ---
/***************************************************************************
* importwindow.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _IMPORTWINDOW_H
#define _IMPORTWINDOW_H
#include <glade/glade.h>
#ifdef __cplusplus
extern "C"
{
#endif
void importwindow_init(GladeXML* pGladeXML);
void importwindow_show(void);
void importwindow_begin(GSList* pSelectedFileList);
void importwindow_log_append(const gchar* pszText, ...);
void importwindow_progress_pulse(void);
// void importwindow_progress_callback(gdouble fPercent, gpointer pData);
#ifdef __cplusplus
}
#endif
#endif /* _IMPORTWINDOW_H */
--- NEW FILE: layers.h ---
/***************************************************************************
* layers.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _LAYERS_H
#define _LAYERS_H
#include <gtk/gtk.h>
#include "geometryset.h"
#ifdef __cplusplus
extern "C"
{
#endif
#define LAYER_NONE (0)
#define LAYER_MINORSTREET (1)
#define LAYER_MAJORSTREET (2)
#define LAYER_MINORHIGHWAY (3)
#define LAYER_MINORHIGHWAY_RAMP (4)
#define LAYER_MAJORHIGHWAY (5) // used?
#define LAYER_MAJORHIGHWAY_RAMP (6) // used?
#define LAYER_RAILROAD (7)
#define LAYER_PARK (8)
#define LAYER_RIVER (9)
#define LAYER_LAKE (10)
#define LAYER_MISC_AREA (11)
#define NUM_LAYERS (11)
#define LAYER_FIRST (1)
#define LAYER_LAST (11)
typedef struct color {
gfloat m_fRed;
gfloat m_fGreen;
gfloat m_fBlue;
gfloat m_fAlpha;
} color_t;
#define NUM_DASH_STYLES (2)
typedef struct dashstyle {
gdouble* m_pfList;
gint m_nCount;
} dashstyle_t;
dashstyle_t g_aDashStyles[NUM_DASH_STYLES];
typedef struct sublayerstyle {
gdouble m_afLineWidths[MAX_ZOOM_LEVEL];
color_t m_clrColor;
gint m_nDashStyle;
gint m_nJoinStyle;
gint m_nCapStyle;
} sublayerstyle_t;
//~ gint m_nMinZoomLevel;
//~ gdouble m_fTopLineWidthPercent;
//~ gdouble m_afLineWidths[10];
//~ color_t m_clrLowDetail;
//~ color_t m_clrFill;
//~ color_t m_clrOutline;
//~ gint m_nDashStyle; // index into dashes table
typedef struct textlabelstyle {
gdouble m_afFontSizeAtZoomLevel[MAX_ZOOM_LEVEL];
gint m_abBoldAtZoomLevel[MAX_ZOOM_LEVEL]; // 0s or 1s
gint m_abHaloAtZoomLevel[MAX_ZOOM_LEVEL]; // 0s or 1s
color_t m_clrColor;
// font family...
// font style...
} textlabelstyle_t;
// defines the look of a layer
typedef struct layerstyle {
sublayerstyle_t m_aSubLayers[2];
} layerstyle_t;
typedef struct layer {
gint nLayerIndex;
gchar* m_pszName;
layerstyle_t m_Style;
textlabelstyle_t m_TextLabelStyle;
geometryset_t* m_pGeometrySet;
} layer_t;
extern layer_t g_aLayers[NUM_LAYERS+1];
void layers_init(void);
void layers_clear(void);
#ifdef __cplusplus
}
#endif
#endif /* _LAYERS_H */
--- NEW FILE: locationset.h ---
/***************************************************************************
* locationset.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _LOCATIONSET_H
#define _LOCATIONSET_H
#ifdef __cplusplus
extern "C"
{
#endif
#include "map.h"
typedef struct locationsetstyle {
// icon?
int a;
} locationsetstyle_t;
// a single location (eg. "Someday Cafe")
typedef struct location {
gint m_nID;
gchar* m_pszName;
mappoint_t m_Coordinates;
} location_t;
// a set of locations (eg. "Coffee Shops")
typedef struct locationset {
gint m_nID;
gchar* m_pszName;
locationsetstyle_t m_Style;
GPtrArray* m_pLocationsArray;
} locationset_t;
void locationset_init(void);
void locationset_load_locationsets(void);
gboolean locationset_load_locations(maprect_t* pRect);
gboolean locationset_add_location(gint nLocationSetID, mappoint_t* pPoint, gint* pReturnID);
const GPtrArray* locationset_get_set_array(void);
#ifdef __cplusplus
}
#endif
#endif /* _LOCATIONSET_H */
--- NEW FILE: mainwindow.h ---
/***************************************************************************
* mainwindow.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _MAINWINDOW_H
#define _MAINWINDOW_H
#include <glade/glade.h>
#ifdef __cplusplus
extern "C"
{
#endif
void mainwindow_init(GladeXML* pGladeXML);
void mainwindow_draw_map(void);
void mainwindow_show(void);
void mainwindow_show_on_startup(void);
void mainwindow_hide(void);
void mainwindow_set_sensitive(gboolean bSensitive);
void mainwindow_toggle_fullscreen(void);
void mainwindow_set_toolbar_visible(gboolean);
gboolean mainwindow_get_toolbar_visible(void);
void mainwindow_set_statusbar_visible(gboolean);
gboolean mainwindow_get_statusbar_visible(void);
void mainwindow_set_sidebox_visible(gboolean);
gboolean mainwindow_get_sidebox_visible(void);
GtkWidget* mainwindow_get_window(void);
void mainwindow_statusbar_update_zoomscale(void);
void mainwindow_statusbar_update_position(void);
void mainwindow_statusbar_progressbar_set_text(const gchar* pszText);
void mainwindow_statusbar_progressbar_pulse(void);
void mainwindow_statusbar_progressbar_clear(void);
void mainwindow_begin_import_geography_data(void);
void* mainwindow_set_busy(void);
void mainwindow_set_not_busy(void** pCursor);
/* Funky, auto-lookup glade signal handlers.
XXX: Better would be to hook these up manually, remove these
declarations, and make the functions static.
*/
void on_import_maps_activate(GtkWidget *widget, gpointer user_data);
void on_quitmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
gboolean on_application_delete_event(GtkWidget *widget, GdkEvent *event, gpointer user_data);
void on_zoomscale_value_changed(GtkRange *range, gpointer user_data);
void on_aboutmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_toolbarmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_statusbarmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_sidebarmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_zoomin_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_zoomout_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_fullscreenmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void mainwindow_on_gotomenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_importmenuitem_activate(GtkMenuItem *menuitem, gpointer user_data);
void on_gotobutton_clicked(GtkToolButton *toolbutton, gpointer user_data);
void on_toolbutton_clicked(GtkToolButton *toolbutton, gpointer user_data);
void mainwindow_on_addpointmenuitem_activate(GtkWidget *_unused, gpointer* __unused);
void mainwindow_on_datasetmenuitem_activate(GtkWidget *pWidget, gpointer* p);
#ifdef __cplusplus
}
#endif
#endif /* _MAINWINDOW_H */
Index: map.c
===================================================================
RCS file: /cvs/cairo/roadster/src/map.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -d -r1.8 -r1.9
--- map.c 23 Feb 2005 17:22:07 -0000 1.8
+++ map.c 23 Feb 2005 17:43:50 -0000 1.9
@@ -84,6 +84,22 @@
{"Run", "Run"},
{"Pass", "Pass"},
+ {"Freeway", "Fwy"},
+ {"Alley", "Aly"},
+ {"Crescent", "Cres"},
+ {"Tunnel", "Tunl"},
+ {"Walk", "Walk"},
+ {"Terrace", "Trce"},
+ {"Branch", "Br"},
+ {"Cove", "Cv"},
+ {"Bypass", "Byp"},
+ {"Loop", "Loop"},
+ {"Spur", "Spur"},
+ {"Ramp", "Ramp"},
+ {"Pike", "Pike"},
+ {"Grade", "Grd"},
+ {"Route", "Rte"},
+ {"Arc", "Arc"},
};
struct {
@@ -158,6 +174,47 @@
{"Run", ROAD_SUFFIX_RUN},
{"Pass", ROAD_SUFFIX_PASS},
+
+ {"Freeway", ROAD_SUFFIX_FREEWAY},
+ {"Fwy", ROAD_SUFFIX_FREEWAY},
+
+ {"Alley", ROAD_SUFFIX_ALLEY},
+ {"Aly", ROAD_SUFFIX_ALLEY},
+
+ {"Crescent", ROAD_SUFFIX_CRESCENT},
+ {"Cres", ROAD_SUFFIX_CRESCENT},
+
+ {"Tunnel", ROAD_SUFFIX_TUNNEL},
+ {"Tunl", ROAD_SUFFIX_TUNNEL},
+
+ {"Walk", ROAD_SUFFIX_WALK},
+ {"Walk", ROAD_SUFFIX_WALK},
+
+ {"Branch", ROAD_SUFFIX_BRANCE},
+ {"Br", ROAD_SUFFIX_BRANCE},
+
+ {"Cove", ROAD_SUFFIX_COVE},
+ {"Cv", ROAD_SUFFIX_COVE},
+
+ {"Bypass", ROAD_SUFFIX_BYPASS},
+ {"Byp", ROAD_SUFFIX_BYPASS},
+
+ {"Loop", ROAD_SUFFIX_LOOP},
+
+ {"Spur", ROAD_SUFFIX_SPUR},
+
+ {"Ramp", ROAD_SUFFIX_RAMP},
+
+ {"Pike", ROAD_SUFFIX_PIKE},
+
+ {"Grade", ROAD_SUFFIX_GRADE},
+ {"Grd", ROAD_SUFFIX_GRADE},
+
+ {"Route", ROAD_SUFFIX_ROUTE},
+ {"Rte", ROAD_SUFFIX_ROUTE},
+
+ {"Arc", ROAD_SUFFIX_ARC},
+
};
#define SCALE_X(p, x) ((((x) - (p)->m_rWorldBoundingBox.m_A.m_fLongitude) / (p)->m_fScreenLongitude) * (p)->m_nWindowWidth)
--- NEW FILE: map.h ---
/***************************************************************************
* map.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _MAP_H_
#define _MAP_H_
#include <cairo.h>
struct GtkWidget;
#define MIN_ZOOM_LEVEL 1
#define MAX_ZOOM_LEVEL 10
// World space
typedef struct mappoint {
gdouble m_fLatitude;
gdouble m_fLongitude;
} mappoint_t;
typedef struct maprect {
mappoint_t m_A;
mappoint_t m_B;
} maprect_t;
// Screen space
typedef struct screenpoint {
gint16 m_nX;
gint16 m_nY;
} screenpoint_t;
typedef struct screenrect {
screenpoint_t m_A;
screenpoint_t m_B;
} screenrect_t;
// Window space (0,0 being upper left of the draw area)
typedef struct windowdimensions {
guint16 m_uWidth;
guint16 m_uHeight;
} windowdimensions_t;
typedef struct zoomlevel {
guint32 m_uScale; // ex. 10000 for 1:10000 scale
gchar* m_szName;
} zoomlevel_t;
extern zoomlevel_t g_sZoomLevels[];
typedef enum {
UNIT_FIRST=0,
UNIT_FEET=0,
UNIT_MILES=1,
UNIT_METERS=2,
UNIT_KILOMETERS=3,
UNIT_LAST=3,
} EDistanceUnits;
#define DEFAULT_UNIT (UNIT_MILES)
extern gchar* g_aDistanceUnitNames[];
enum ERoadNameSuffix { // these can't change once stored in DB
ROAD_SUFFIX_FIRST = 0,
ROAD_SUFFIX_NONE = 0,
ROAD_SUFFIX_ROAD = 1,
ROAD_SUFFIX_STREET,
ROAD_SUFFIX_DRIVE,
ROAD_SUFFIX_BOULEVARD, // blvd
ROAD_SUFFIX_AVENUE,
ROAD_SUFFIX_CIRCLE,
ROAD_SUFFIX_SQUARE,
ROAD_SUFFIX_PATH,
ROAD_SUFFIX_WAY,
ROAD_SUFFIX_PLAZA,
ROAD_SUFFIX_TRAIL,
ROAD_SUFFIX_LANE,
ROAD_SUFFIX_CROSSING,
ROAD_SUFFIX_PLACE,
ROAD_SUFFIX_COURT,
ROAD_SUFFIX_TURNPIKE,
ROAD_SUFFIX_TERRACE,
ROAD_SUFFIX_ROW,
ROAD_SUFFIX_PARKWAY,
ROAD_SUFFIX_BRIDGE,
ROAD_SUFFIX_HIGHWAY,
ROAD_SUFFIX_RUN,
ROAD_SUFFIX_PASS,
ROAD_SUFFIX_FREEWAY,
ROAD_SUFFIX_ALLEY,
ROAD_SUFFIX_CRESCENT,
ROAD_SUFFIX_TUNNEL,
ROAD_SUFFIX_WALK,
ROAD_SUFFIX_BRANCE,
ROAD_SUFFIX_COVE,
ROAD_SUFFIX_BYPASS,
ROAD_SUFFIX_LOOP,
ROAD_SUFFIX_SPUR,
ROAD_SUFFIX_RAMP,
ROAD_SUFFIX_PIKE,
ROAD_SUFFIX_GRADE,
ROAD_SUFFIX_ROUTE,
ROAD_SUFFIX_ARC,
ROAD_SUFFIX_LAST = ROAD_SUFFIX_ARC
};
//~ type 'Ctr' couldn't be looked up
//~ type 'Walk' couldn't be looked up
//~ type 'Ramp' couldn't be looked up
//~ type 'Cv' couldn't be looked up
//~ type 'Byp' couldn't be looked up
//~ type 'Ramp' couldn't be looked up
//~ type 'Br' couldn't be looked up
//~ type 'Trce' couldn't be looked up
typedef struct rendermetrics {
gint m_nZoomLevel;
gdouble m_fScreenLatitude;
gdouble m_fScreenLongitude;
maprect_t m_rWorldBoundingBox;
gint m_nWindowWidth;
gint m_nWindowHeight;
} rendermetrics_t;
// SuffixTypes
#define SUFFIX_TYPE_SHORT (0)
#define SUFFIX_TYPE_LONG (1)
const gchar* map_road_suffix_itoa(gint nSuffixID, gint nSuffixType);
gboolean map_road_suffix_atoi(const gchar* pszSuffix, gint* pReturnSuffixID);
#include "db.h"
GtkWidget* map_create_canvas(void);
void map_set_zoomlevel(guint16 uZoomLevel);
guint16 map_get_zoomlevel(void);
guint32 map_get_zoomlevel_scale(void);
void map_set_redraw_needed(gboolean bNeeded);
gboolean map_is_redraw_needed(void);
guint32 map_get_scale(void);
//void map_draw(void* pDBConnection, cairo_t * cr);
void map_get_world_coordinates(float* pLongitude, float* pLatitude);
void map_get_world_coordinate_point(mappoint_t* pPoint);
void map_center_on_worldpoint(double fX, double fY);
void map_center_on_windowpoint(guint16 uX, guint16 uY);
void map_set_window_dimensions(guint16 uWidth, guint16 uHeight);
gboolean map_redraw_if_needed(void);
void map_set_view_dimensions(guint16 uWidth, guint16 uHeight);
void map_windowpoint_to_mappoint(screenpoint_t* pScreenPoint, mappoint_t* pMapPoint);
void map_draw(cairo_t *cr);
void map_get_render_metrics(rendermetrics_t* pMetrics);
gdouble map_distance_in_units_to_degrees(gdouble fDistance, gint nDistanceUnit);
#endif
--- NEW FILE: scenemanager.h ---
/***************************************************************************
* scenemanager.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
void scenemanager_init(void);
gboolean scenemanager_can_draw_label(const gchar* pszLabel);
void scenemanager_label_drawn(const gchar* pszLabel);
void scenemanager_clear(void);
--- NEW FILE: search.h ---
/***************************************************************************
* search.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _SEARCH_H
#define _SEARCH_H
#ifdef __cplusplus
extern "C"
{
#endif
void search_clean_string(gchar* p);
gboolean search_address_number_atoi(const gchar* pszText, gint* pnReturn);
#ifdef __cplusplus
}
#endif
#endif /* _SEARCH_H */
--- NEW FILE: search_location.h ---
/***************************************************************************
* search_location.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _SEARCH_LOCATION_H
#define _SEARCH_LOCATION_H
#ifdef __cplusplus
extern "C"
{
#endif
void search_location_execute(const gchar* pszSearch, gint nLocationSetID, gfloat fDistance, gint nDistanceUnit);
#ifdef __cplusplus
}
#endif
#endif /* _SEARCH_LOCATION_H */
--- NEW FILE: search_road.h ---
/***************************************************************************
* search_road.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _SEARCH_ROAD_H
#define _SEARCH_ROAD_H
#ifdef __cplusplus
extern "C"
{
#endif
void search_road_execute(const gchar* pszSentence);
#ifdef __cplusplus
}
#endif
#endif /* _SEARCH_ROAD_H */
--- NEW FILE: searchwindow.h ---
/***************************************************************************
* searchwindow.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _SEARCHWINDOW_H
#define _SEARCHWINDOW_H
#ifdef __cplusplus
extern "C"
{
#endif
#include <glade/glade.h>
#include "gpsclient.h"
void searchwindow_init(GladeXML* pGladeXML);
void searchwindow_add_result(gint nRoadID, const gchar* pszText, mappoint_t* pPoint);
void searchwindow_go_to_selected_result(void);
void searchwindow_clear_results(void);
/* Funky, auto-lookup glade signal handlers.
XXX: Better would be to hook these up manually, remove these
declarations, and make the functions static.
*/
void searchwindow_on_findbutton_clicked(GtkWidget *pWidget, gpointer* p);
void searchwindow_on_searchtypecombo_changed(GtkWidget *pWidget, gpointer* p);
void searchwindow_on_addressresultstreeview_row_activated(GtkWidget *pWidget, gpointer* p);
void searchwindow_on_gobutton_clicked(GtkWidget *pWidget, gpointer* p);
#ifdef __cplusplus
}
#endif
#endif /* _SEARCHWINDOW_H */
--- NEW FILE: util.h ---
/***************************************************************************
* util.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _UTIL_H_
#define _UTIL_H_
#include <gtk/gtk.h>
#define NUM_ELEMS(a) (sizeof(a) / sizeof(a[0]))
void util_random_color(void* pColor);
#if 0
#define TIMER_BEGIN(name, str) GTimer* name = g_timer_new(); g_print("\n%s (%f)\n", str, g_timer_elapsed(name, NULL))
#define TIMER_SHOW(name, str) g_print(" %s (%f)\n", str, g_timer_elapsed(name, NULL))
#define TIMER_END(name, str) g_print("%s (%f)\n", str, g_timer_elapsed(name, NULL)); g_timer_destroy(name); name = NULL
#else
#define TIMER_BEGIN(name, str)
#define TIMER_SHOW(name, str)
#define TIMER_END(name, str)
#endif
#define min(x,y) ((x)<(y)?(x):(y))
#define max(x,y) ((x)>(y)?(x):(y))
#define is_even(x) (((x) & 1) == 0)
#define is_odd(x) (((x) & 1) == 1)
/* Funky, auto-lookup glade signal handlers.
XXX: Better would be to hook these up manually, remove these
declarations, and make the functions static.
*/
void util_close_parent_window(GtkWidget* pWidget, gpointer data);
#endif
--- NEW FILE: welcomewindow.h ---
/***************************************************************************
* welcomewindow.h
*
* Copyright 2005 Ian McIntosh
* ian_mcintosh at linuxadvocate.org
****************************************************************************/
/*
* 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 Library 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.
*/
#ifndef _WELCOMEWINDOW_H
#define _WELCOMEWINDOW_H
#ifdef __cplusplus
extern "C"
{
#endif
void welcomewindow_init(GladeXML* pGladeXML);
void welcomewindow_show(void);
/* Funky, auto-lookup glade signal handlers.
XXX: Better would be to hook these up manually, remove these
declarations, and make the functions static.
*/
void welcomewindow_on_url_clicked(GtkWidget* pButton, gpointer data);
void welcomewindow_on_okbutton_clicked(GtkWidget* pButton, gpointer data);
#ifdef __cplusplus
}
#endif
#endif /* _WELCOMEWINDOW_H */
More information about the cairo-commit
mailing list