Hello everybody,
First of all thanks genete for your help in the forum:)
(http://www.synfig.org/forums/viewtopic.php?f=22&t=4587)
For the rest, i tried to implement this issue
http://www.synfig.org/issues/thebuggeni ... issues/238
<http://www.synfig.org/issues/thebuggenie/synfig/issues/238>
through metadata panel.
I am sending you my first attempt with a patch because i didnt know if i
had to make a pull request already and how exactly i would do it.
Tell me what you think
Krista
diff --git a/synfig-studio/src/gui/duckmatic.cpp
b/synfig-studio/src/gui/duckmatic.cpp
index d8484af..b3f2a01 100644
--- a/synfig-studio/src/gui/duckmatic.cpp
+++ b/synfig-studio/src/gui/duckmatic.cpp
@@ -113,6 +113,7 @@
Duckmatic::Duckmatic(etl::loose_handle<synfigapp::CanvasInterface> canvas_interf
grid_snap(false),
guide_snap(false),
grid_size(1.0/4.0,1.0/4.0),
+ grid_color(synfig::Color(159.0/255.0,159.0/255.0,159.0/255.0)),
show_persistent_strokes(true)
{
axis_lock=false;
@@ -167,6 +168,16 @@ Duckmatic::set_grid_size(const synfig::Vector &s)
}
void
+Duckmatic::set_grid_color(const synfig::Color &c)
+{
+ if(grid_color!=c)
+ {
+ grid_color=c;
+ signal_grid_changed();
+ }
+}
+
+void
Duckmatic::set_grid_snap(bool x)
{
if(grid_snap!=x)
diff --git a/synfig-studio/src/gui/duckmatic.h
b/synfig-studio/src/gui/duckmatic.h
index c790607..02a4809 100644
--- a/synfig-studio/src/gui/duckmatic.h
+++ b/synfig-studio/src/gui/duckmatic.h
@@ -247,6 +247,7 @@ protected:
//! This vector describes the grid size.
/*! \see grid_snap, show_grid */
synfig::Vector grid_size;
+ synfig::Color grid_color;
float zoom; //!< Zoom factor
float prev_zoom; //!< Previous Zoom factor
@@ -309,9 +310,11 @@ public:
//! Sets the size of the grid
void set_grid_size(const synfig::Vector &s);
+ void set_grid_color(const synfig::Color &c);
//! Returns the size of the grid
const synfig::Vector &get_grid_size()const { return grid_size; }
+ const synfig::Color &get_grid_color()const { return grid_color;}
const synfig::Time &get_time()const { return cur_time; }
diff --git a/synfig-studio/src/gui/workarea.cpp
b/synfig-studio/src/gui/workarea.cpp
index de79f31..cd02f0d 100644
--- a/synfig-studio/src/gui/workarea.cpp
+++ b/synfig-studio/src/gui/workarea.cpp
@@ -1139,6 +1139,7 @@
WorkArea::WorkArea(etl::loose_handle<synfigapp::CanvasInterface> canvas_interfac
get_scrolly_adjustment()->signal_value_changed().connect(sigc::mem_fun(*this,
&WorkArea::refresh_dimension_info));
get_canvas()->signal_meta_data_changed("grid_size").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
+
get_canvas()->signal_meta_data_changed("grid_color").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
get_canvas()->signal_meta_data_changed("grid_snap").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
get_canvas()->signal_meta_data_changed("grid_show").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
get_canvas()->signal_meta_data_changed("guide_show").connect(sigc::mem_fun(*this,&WorkArea::load_meta_data));
@@ -1206,7 +1207,9 @@ WorkArea::save_meta_data()
meta_data_lock=true;
Vector s(get_grid_size());
+ Color c(get_grid_color());
canvas_interface->set_meta_data("grid_size",strprintf("%f
%f",s[0],s[1]));
+ canvas_interface->set_meta_data("grid_color",strprintf("%f %f
%f",c.get_r(),c.get_g(),c.get_b()));
canvas_interface->set_meta_data("grid_snap",get_grid_snap()?"1":"0");
canvas_interface->set_meta_data("guide_snap",get_guide_snap()?"1":"0");
canvas_interface->set_meta_data("guide_show",get_show_guides()?"1":"0");
@@ -1285,6 +1288,40 @@ WorkArea::load_meta_data()
set_grid_size(Vector(gx,gy));
}
+ data=canvas->get_meta_data("grid_color");
+ if(!data.empty())
+ {
+ float
gr(get_grid_color().get_r()),gg(get_grid_color().get_g()),gb(get_grid_color().get_b());
+
+ String::iterator iter(find(data.begin(),data.end(),' '));
+ String tmp(data.begin(),iter);
+
+ if(!tmp.empty())
+ gr=stratof(tmp);
+ else
+ synfig::error("WorkArea::load_meta_data(): Unable to
parse data for \"grid_color\", which was \"%s\"",data.c_str());
+
+ if(iter==data.end())
+ tmp.clear();
+ else
+ tmp=String(iter+1,data.end());
+
+ if(!tmp.empty())
+ gg=stratof(tmp);
+ else
+ synfig::error("WorkArea::load_meta_data(): Unable to
parse data for \"grid_color\", which was \"%s\"",data.c_str());
+ if(iter==data.end())
+ tmp.clear();
+ else
+ tmp=String(iter+1,data.end());
+ if(!tmp.empty())
+ gb=stratof(tmp);
+ else
+ synfig::error("WorkArea::load_meta_data(): Unable to
parse data for \"grid_color\", which was \"%s\"",data.c_str());
+
+ set_grid_color(synfig::Color(gr,gg,gb));
+ }
+
data=canvas->get_meta_data("grid_show");
if(data.size() && (data=="1" || data[0]=='t' || data[0]=='T'))
show_grid=true;
@@ -1447,6 +1484,14 @@ WorkArea::set_grid_size(const synfig::Vector &s)
}
void
+WorkArea::set_grid_color(const synfig::Color &c)
+{
+ Duckmatic::set_grid_color(c);
+ save_meta_data();
+ queue_draw();
+}
+
+void
WorkArea::set_focus_point(const synfig::Point &point)
{
// These next three lines try to ensure that we place the
diff --git a/synfig-studio/src/gui/workarea.h b/synfig-studio/src/gui/workarea.h
index ddb60f3..9ce5034 100644
--- a/synfig-studio/src/gui/workarea.h
+++ b/synfig-studio/src/gui/workarea.h
@@ -457,6 +457,8 @@ public:
//! Sets the size of the grid
void set_grid_size(const synfig::Vector &s);
+ void set_grid_color(const synfig::Color &c);
+ const synfig::Color &get_grid_color()const { return
Duckmatic::get_grid_color();}
//! ??
void popup_menu();
diff --git a/synfig-studio/src/gui/workarearenderer/renderer_grid.cpp
b/synfig-studio/src/gui/workarearenderer/renderer_grid.cpp
index f25ae25..5230f7a 100644
--- a/synfig-studio/src/gui/workarearenderer/renderer_grid.cpp
+++ b/synfig-studio/src/gui/workarearenderer/renderer_grid.cpp
@@ -93,7 +93,8 @@ Renderer_Grid::render_vfunc(
const synfig::Vector::value_type
window_starty(get_work_area()->get_window_tl()[1]);
const synfig::Vector::value_type
window_endy(get_work_area()->get_window_br()[1]);
const float pw(get_pw()),ph(get_ph());
-
+
+ synfig::Color grid_color(get_work_area()->get_grid_color());
// Draw out the grid
if(grid_size[0]>pw*3.5 && grid_size[1]>ph*3.5)
@@ -109,7 +110,7 @@ Renderer_Grid::render_vfunc(
cr->set_antialias(Cairo::ANTIALIAS_NONE);
cr->set_line_width(1.0);
- cr->set_source_rgb(159.0/255.0,159.0/255.0,159.0/255.0);
+
cr->set_source_rgb(grid_color.get_r(),grid_color.get_g(),grid_color.get_b());
//255.0/255.0,0.0/255.0,0.0/255.0
std::valarray<double> dashes(2);
dashes[0]=4.0;
dashes[1]=4.0;
------------------------------------------------------------------------------
LIMITED TIME SALE - Full Year of Microsoft Training For Just $49.99!
1,500+ hours of tutorials including VisualStudio 2012, Windows 8, SharePoint
2013, SQL 2012, MVC 4, more. BEST VALUE: New Multi-Library Power Pack includes
Mobile, Cloud, Java, and UX Design. Lowest price ever! Ends 9/20/13.
http://pubads.g.doubleclick.net/gampad/clk?id=58041151&iu=/4140/ostg.clktrk
_______________________________________________
Synfig-devl mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/synfig-devl