common.h
上传用户:center1979
上传日期:2022-07-26
资源大小:50633k
文件大小:3k
源码类别:

OpenGL

开发平台:

Visual C++

  1. /*
  2.  *  Celestia GTK+ Front-End
  3.  *  Copyright (C) 2005 Pat Suwalski <pat@suwalski.net>
  4.  *
  5.  *  This program is free software; you can redistribute it and/or modify
  6.  *  it under the terms of the GNU General Public License as published by
  7.  *  the Free Software Foundation; either version 2 of the License, or
  8.  *  (at your option) any later version.
  9.  *
  10.  *  $Id: common.h,v 1.5 2008-01-18 04:36:11 suwalski Exp $
  11.  */
  12. #ifndef GTK_COMMON_H
  13. #define GTK_COMMON_H
  14. #ifdef HAVE_CONFIG_H
  15. #include <config.h>
  16. #endif /* HAVE_CONFIG_H */
  17. #include <gtk/gtk.h>
  18. #ifdef GNOME
  19. #include <gconf/gconf-client.h>
  20. #endif /* GNOME */
  21. #include <celengine/render.h>
  22. #include <celengine/simulation.h>
  23. #include <celestia/celestiacore.h>
  24. typedef struct _AppData AppData;
  25. struct _AppData {
  26. /* Core Pointers */
  27. CelestiaCore* core;
  28. Renderer* renderer;
  29. Simulation* simulation;
  30. /* Important Widgets */
  31. GtkWidget* mainWindow;
  32. GtkWidget* mainMenu;
  33. GtkWidget* glArea;
  34. GtkWidget* optionDialog;
  35. GtkWidget* contextMenu;
  36. /* Action Groups */
  37. GtkActionGroup* agMain;
  38. GtkActionGroup* agRender;
  39. GtkActionGroup* agOrbit;
  40. GtkActionGroup* agLabel;
  41. GtkActionGroup* agVerbosity;
  42. GtkActionGroup* agStarStyle;
  43. GtkActionGroup* agAmbient;
  44. /* Settings */
  45. #ifdef GNOME
  46. GConfClient* client;
  47. #else
  48. GKeyFile* settingsFile;
  49. #endif /* GNOME */
  50. /* Ready to render? */
  51. gboolean bReady;
  52. /* Mouse motion tracking */
  53. int lastX;
  54. int lastY;
  55. /* Starting URL */
  56. char* startURL;
  57. /* A few preferences not tracked by the core */
  58. gboolean showLocalTime;
  59. gboolean fullScreen;
  60. };
  61. /* Helper functions used throughout */
  62. gint tzOffsetAtDate(astro::Date date);
  63. void updateTimeZone(AppData* app, gboolean local);
  64. gint buttonMake(GtkWidget *hbox, const char *txt, GtkSignalFunc func, gpointer data);
  65. void makeRadioItems(const char* const *labels, GtkWidget *box, GtkSignalFunc sigFunc, GtkToggleButton **gads, gpointer data);
  66. char* readFromFile(const char *fname);
  67. /* Functions to get window properties regardless of window state */
  68. int getWinWidth(AppData* app);
  69. int getWinHeight(AppData* app);
  70. int getWinX(AppData* app);
  71. int getWinY(AppData* app);
  72. /* Functions to apply preferences with sanity checks */
  73. void setSaneAmbientLight(AppData* app, float value);
  74. void setSaneVisualMagnitude(AppData* app, float value);
  75. void setSaneGalaxyLightGain(float value);
  76. void setSaneDistanceLimit(AppData* app, int value);
  77. void setSaneVerbosity(AppData* app, int value);
  78. void setSaneStarStyle(AppData* app, Renderer::StarStyle value);
  79. void setSaneTextureResolution(AppData* app, int value);
  80. void setSaneAltSurface(AppData* app, char* value);
  81. void setSaneWinSize(AppData* app, int x, int y);
  82. void setSaneWinPosition(AppData* app, int x, int y);
  83. void setDefaultRenderFlags(AppData* app);
  84. /* Constants used throughout */
  85. const char * const monthOptions[] = 
  86. {
  87.     "January",
  88.     "February",
  89.     "March",
  90.     "April",
  91.     "May",
  92.     "June",
  93.     "July",
  94.     "August",
  95.     "September",
  96.     "October",
  97.     "November",
  98.     "December",
  99.     NULL
  100. };
  101. static const float amLevels[] =
  102. {
  103.     0.0, 
  104.     0.1,
  105.     0.25
  106. };
  107. static const int resolutions[] =
  108. {
  109. 0,        /* Must start with 0 */
  110. 640,
  111. 800,
  112. 1024,
  113. 1152,
  114. 1280,
  115. 1400,
  116. 1600,
  117. -1        /* Must end with -1 */
  118. };
  119. /* This is the spacing used for widgets throughout the program */
  120. #define CELSPACING 8
  121. #endif /* GTK_COMMON_H */