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

Reply via email to