[Lemon-commits] [lemon_svn] hegyi: r2961 - glemon/trunk
Lemon SVN
svn at lemon.cs.elte.hu
Mon Nov 6 21:51:29 CET 2006
Author: hegyi
Date: Thu Sep 28 16:32:40 2006
New Revision: 2961
Modified:
glemon/trunk/graph_displayer_canvas-node.cc
glemon/trunk/graph_displayer_canvas-zoom.cc
glemon/trunk/graph_displayer_canvas.cc
glemon/trunk/graph_displayer_canvas.h
glemon/trunk/main_win.cc
glemon/trunk/main_win.h
glemon/trunk/nbtab.cc
glemon/trunk/nbtab.h
Log:
Zoom tracking of nodes is implemented and is switchable.
Modified: glemon/trunk/graph_displayer_canvas-node.cc
==============================================================================
--- glemon/trunk/graph_displayer_canvas-node.cc (original)
+++ glemon/trunk/graph_displayer_canvas-node.cc Thu Sep 28 16:32:40 2006
@@ -38,6 +38,12 @@
w=5;
}
+ if(zoomtrack)
+ {
+ double actual_ppu=get_pixels_per_unit();
+ w=(int)(w/actual_ppu*fixed_zoom_factor);
+ }
+
if(w>=0)
{
double x1, y1, x2, y2;
@@ -95,6 +101,11 @@
{
w=(int)(MIN_NODE_RADIUS+(v-min)/(max-min)*(MAX_NODE_RADIUS-MIN_NODE_RADIUS));
}
+ if(zoomtrack)
+ {
+ double actual_ppu=get_pixels_per_unit();
+ w=(int)(w/actual_ppu*fixed_zoom_factor);
+ }
if(w>=0)
{
double x1, y1, x2, y2;
Modified: glemon/trunk/graph_displayer_canvas-zoom.cc
==============================================================================
--- glemon/trunk/graph_displayer_canvas-zoom.cc (original)
+++ glemon/trunk/graph_displayer_canvas-zoom.cc Thu Sep 28 16:32:40 2006
@@ -5,12 +5,20 @@
{
set_pixels_per_unit(
(1.0 + (double) zoom_step / 100.0) * get_pixels_per_unit());
+ if(zoomtrack)
+ {
+ propertyChange(false, N_RADIUS);
+ }
}
void GraphDisplayerCanvas::zoomOut()
{
set_pixels_per_unit(
(1.0 - (double) zoom_step / 100.0) * get_pixels_per_unit());
+ if(zoomtrack)
+ {
+ propertyChange(false, N_RADIUS);
+ }
}
void GraphDisplayerCanvas::zoomFit()
@@ -31,12 +39,22 @@
double ppu1 = (double) aw / fabs(x2 - x1);
double ppu2 = (double) ah / fabs(y2 - y1);
set_pixels_per_unit((ppu1 < ppu2) ? ppu1 : ppu2);
+
+ if(zoomtrack)
+ {
+ propertyChange(false, N_RADIUS);
+ }
}
void GraphDisplayerCanvas::zoom100()
{
updateScrollRegion();
set_pixels_per_unit(1.0);
+
+ if(zoomtrack)
+ {
+ propertyChange(false, N_RADIUS);
+ }
}
void GraphDisplayerCanvas::updateScrollRegion()
Modified: glemon/trunk/graph_displayer_canvas.cc
==============================================================================
--- glemon/trunk/graph_displayer_canvas.cc (original)
+++ glemon/trunk/graph_displayer_canvas.cc Thu Sep 28 16:32:40 2006
@@ -5,7 +5,7 @@
nodesmap(mainw.mapstorage.graph), edgesmap(mainw.mapstorage.graph), edgetextmap(mainw.mapstorage.graph),
nodetextmap(mainw.mapstorage.graph), displayed_graph(*(root()), 0, 0),
isbutton(0), active_item(NULL), target_item(NULL), nodemap_to_edit(""),
- edgemap_to_edit(""), autoscale(true), radius_min(10), radius_max(40), radius_unit(1), mytab(mainw)
+ edgemap_to_edit(""), autoscale(true), zoomtrack(false), radius_min(10), radius_max(40), radius_unit(1), mytab(mainw)
{
//base event handler is move tool
actual_handler=signal_event().connect(sigc::mem_fun(*this, &GraphDisplayerCanvas::moveEventHandler), false);
@@ -227,18 +227,27 @@
}
}
-void GraphDisplayerCanvas::setNodeView(bool autoscale_p, double min_p, double max_p, double unit_p)
+void GraphDisplayerCanvas::setNodeView(bool autoscale_p, bool zoomtrack_p, double min_p, double max_p, double unit_p)
{
autoscale=autoscale_p;
radius_min=min_p;
radius_max=max_p;
radius_unit=unit_p;
+
+ if((!zoomtrack) && zoomtrack_p)
+ {
+ fixed_zoom_factor=get_pixels_per_unit();
+ }
+
+ zoomtrack=zoomtrack_p;
+
propertyChange(false, N_RADIUS);
}
-void GraphDisplayerCanvas::getNodeView(bool & autoscale_p, double& min_p, double& max_p, double& unit_p)
+void GraphDisplayerCanvas::getNodeView(bool & autoscale_p, bool & zoomtrack_p, double& min_p, double& max_p, double& unit_p)
{
autoscale_p=autoscale;
+ zoomtrack_p=zoomtrack;
min_p=radius_min;
max_p=radius_max;
unit_p=radius_unit;
Modified: glemon/trunk/graph_displayer_canvas.h
==============================================================================
--- glemon/trunk/graph_displayer_canvas.h (original)
+++ glemon/trunk/graph_displayer_canvas.h Thu Sep 28 16:32:40 2006
@@ -287,10 +287,10 @@
int getActualTool();
///Sets node representation settings
- void setNodeView(bool, double, double, double);
+ void setNodeView(bool, bool, double, double, double);
///Gets node representation settings
- void getNodeView(bool &, double&, double&, double&);
+ void getNodeView(bool &, bool &, double&, double&, double&);
///draws the graph
@@ -386,6 +386,12 @@
///Is node radius autoscaled
bool autoscale;
+ ///Should we track zoomfactor changes
+ bool zoomtrack;
+
+ ///to store the zoom factor when it was "fixed"
+ double fixed_zoom_factor;
+
///Minimum node radius
double radius_min;
Modified: glemon/trunk/main_win.cc
==============================================================================
--- glemon/trunk/main_win.cc (original)
+++ glemon/trunk/main_win.cc Thu Sep 28 16:32:40 2006
@@ -199,16 +199,15 @@
table.attach(*toolbar, 0, 1, 1, 2, Gtk::EXPAND|Gtk::FILL, Gtk::SHRINK);
}
-
- auto_scale= new Gtk::CheckButton("Autoscale");
- auto_scale->set_active(false);
- auto_scale->signal_toggled().connect(sigc::mem_fun(*this, &MainWin::nodeViewChanged));
-
+
table2.set_row_spacings(10);
table2.set_col_spacings(5);
+ auto_scale = new Gtk::CheckButton("Autoscale");
+ auto_scale->set_active(false);
+ auto_scale->signal_toggled().connect(sigc::mem_fun(*this, &MainWin::nodeViewChanged));
table2.attach(*auto_scale, 0,2,0,1);
-
+
Gtk::Label * unit_label= new Gtk::Label("Unit:");
// table2.attach(*unit_label, 2,3,0,1);
@@ -236,6 +235,12 @@
radius_max->signal_value_changed().connect(sigc::mem_fun(*this, &MainWin::nodeViewChanged));
table2.attach(*radius_max, 3,4,1,2);
+ zoom_track = new Gtk::CheckButton("Zoom tracking");
+ zoom_track->set_active(false);
+ zoom_track->signal_toggled().connect(sigc::mem_fun(*this, &MainWin::nodeViewChanged));
+ table2.attach(*zoom_track, 2,4,0,1);
+
+
//vbox.pack_start(hbox, Gtk::PACK_SHRINK);
table.attach(table2, 1, 2, 0, 2, Gtk::SHRINK, Gtk::SHRINK);
@@ -362,13 +367,15 @@
tabs[active_tab]->gd_canvas->changeEditorialTool(active_tool);
set_title(tabnames[active_tab]);
bool autoscale;
+ bool zoomtrack;
double min;
double max;
double unit;
- tabs[active_tab]->getNodeView(autoscale, min, max, unit);
+ tabs[active_tab]->getNodeView(autoscale, zoomtrack, min, max, unit);
radius_min->set_value(min);
radius_max->set_value(max);
radius_unit->set_value(unit);
+ zoom_track->set_active(zoomtrack);
auto_scale->set_active(autoscale);
}
@@ -539,6 +546,7 @@
double min=radius_min->get_value();
double max=radius_max->get_value();
double unit=radius_unit->get_value();
+ bool zoomtrack=zoom_track->get_active();
bool autoscale=auto_scale->get_active();
- tabs[active_tab]->setNodeView(autoscale, min, max, unit);
+ tabs[active_tab]->setNodeView(autoscale, zoomtrack, min, max, unit);
}
Modified: glemon/trunk/main_win.h
==============================================================================
--- glemon/trunk/main_win.h (original)
+++ glemon/trunk/main_win.h Thu Sep 28 16:32:40 2006
@@ -30,6 +30,9 @@
///Should nodes be autoscaled or not?
Gtk::CheckButton * auto_scale;
+ ///Should node size track zoom factor?
+ Gtk::CheckButton * zoom_track;
+
///Minimum and maximum node radius entry
Gtk::SpinButton * radius_min, * radius_max, * radius_unit;
Modified: glemon/trunk/nbtab.cc
==============================================================================
--- glemon/trunk/nbtab.cc (original)
+++ glemon/trunk/nbtab.cc Thu Sep 28 16:32:40 2006
@@ -218,12 +218,12 @@
return signal_title;
}
-void NoteBookTab::setNodeView(bool autoscale, double min, double max, double unit)
+void NoteBookTab::setNodeView(bool autoscale, bool zoomtrack, double min, double max, double unit)
{
- gd_canvas->setNodeView(autoscale, min, max, unit);
+ gd_canvas->setNodeView(autoscale, zoomtrack, min, max, unit);
}
-void NoteBookTab::getNodeView(bool & autoscale, double& min, double& max, double& unit)
+void NoteBookTab::getNodeView(bool & autoscale, bool & zoomtrack, double& min, double& max, double& unit)
{
- gd_canvas->getNodeView(autoscale, min, max, unit);
+ gd_canvas->getNodeView(autoscale, zoomtrack, min, max, unit);
}
Modified: glemon/trunk/nbtab.h
==============================================================================
--- glemon/trunk/nbtab.h (original)
+++ glemon/trunk/nbtab.h Thu Sep 28 16:32:40 2006
@@ -158,10 +158,10 @@
void closeMapWin();
///Sets node representation settings
- void setNodeView(bool, double, double, double);
+ void setNodeView(bool, bool, double, double, double);
///Gets node representation settings
- void getNodeView(bool &, double&, double&, double&);
+ void getNodeView(bool &, bool &, double&, double&, double&);
};
#endif //NBTAB_H
More information about the Lemon-commits
mailing list