3
* Copyright (C) 2006 Fabien Chereau
5
* This program is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU General Public License
7
* as published by the Free Software Foundation; either version 2
8
* of the License, or (at your option) any later version.
10
* This program is distributed in the hope that it will be useful,
11
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
* GNU General Public License for more details.
15
* You should have received a copy of the GNU General Public License
16
* along with this program; if not, write to the Free Software
17
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
21
#include "GeodesicGridDrawer.h"
22
#include "Projector.hpp"
23
#include "StelApp.hpp"
24
#include "StelFontMgr.hpp"
25
#include "StelLocaleMgr.hpp"
27
GeodesicGridDrawer::GeodesicGridDrawer(int maxLevel)
29
// geodesic_grid = new GeodesicGrid(maxLevel);
30
// geodesic_search_result = new GeodesicSearchResult(*geodesic_grid);
31
font = &StelApp::getInstance().getFontManager().getStandardFont(StelApp::getInstance().getLocaleMgr().getAppLanguage());
34
GeodesicGridDrawer::~GeodesicGridDrawer()
36
// delete geodesic_search_result;
37
// delete geodesic_grid;
40
void GeodesicGridDrawer::init(const InitParser& conf, LoadingBar& lb)
45
double GeodesicGridDrawer::draw(Projector *prj, const Navigator *nav,
46
ToneReproductor *eye, int max_search_level)
48
glDisable(GL_TEXTURE_2D);
50
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Normal transparency mode
51
prj->setCurrentFrame(Projector::FRAME_J2000); // set 2D coordinate
52
glColor4f(0.2,0.3,0.2,1);
54
int lev = (int)(7./pow(prj->getFov(), 0.4))+2;
55
if (lev>geodesic_grid->getMaxLevel()) lev = geodesic_grid->getMaxLevel();
56
lev = max_search_level;
57
// Vec3d e0, e1, e2, e3;
59
// prj->unproject_j2000(0,0,e0);
60
// prj->unproject_j2000(prj->getViewportWidth(),0,e1);
61
// prj->unproject_j2000(prj->getViewportWidth(),prj->getViewportHeight(),e2);
62
// prj->unproject_j2000(0,prj->getViewportHeight(),e3);
63
// geodesic_search_result->search(e0, e3, e2, e1, lev);
67
GeodesicSearchInsideIterator it1(*geodesic_search_result, lev);
68
while((index = it1.next()) >= 0)
71
geodesic_grid->getTriangleCorners(lev, index, v0, v1, v2);
72
prj->project(v0, win1);
73
prj->project(v1, win2);
76
glVertex2f(win1[0],win1[1]);
77
glVertex2f(win2[0],win2[1]);
79
prj->project(v1, win1);
80
prj->project(v2, win2);
82
glVertex2f(win1[0],win1[1]);
83
glVertex2f(win2[0],win2[1]);
86
prj->project(v2, win1);
87
prj->project(v0, win2);
89
glVertex2f(win1[0],win1[1]);
90
glVertex2f(win2[0],win2[1]);
95
os << index << " (" << geodesic_grid->getPartnerTriangle(lev, index) << ")";
96
glEnable(GL_TEXTURE_2D);
97
prj->drawText(font,center[0]-6, center[1]+6, os.str());
98
glDisable(GL_TEXTURE_2D);
101
GeodesicSearchBorderIterator it1(*geodesic_search_result, lev);
102
while((index = it1.next()) >= 0)
105
geodesic_grid->getTriangleCorners(lev, index, v0, v1, v2);
106
prj->project(v0, win1);
107
prj->project(v1, win2);
110
glVertex2f(win1[0],win1[1]);
111
glVertex2f(win2[0],win2[1]);
113
prj->project(v1, win1);
114
prj->project(v2, win2);
116
glVertex2f(win1[0],win1[1]);
117
glVertex2f(win2[0],win2[1]);
120
prj->project(v2, win1);
121
prj->project(v0, win2);
123
glVertex2f(win1[0],win1[1]);
124
glVertex2f(win2[0],win2[1]);
129
os << index << " (" << geodesic_grid->getPartnerTriangle(lev, index) << ")";
130
glEnable(GL_TEXTURE_2D);
131
prj->drawText(font,center[0]-6, center[1]+6, os.str());
132
glDisable(GL_TEXTURE_2D);