Remove .gitignore do nothing is ignored.
[synfig.git] / synfig-studio / trunk / src / gtkmm / renderer_timecode.cpp
index 4c4d62a..48cc42b 100644 (file)
@@ -1,20 +1,22 @@
-/* === S I N F G =========================================================== */
-/*!    \file template.cpp
+/* === S Y N F I G ========================================================= */
+/*!    \file renderer_timecode.cpp
 **     \brief Template File
 **
-**     $Id: renderer_timecode.cpp,v 1.1.1.1 2005/01/07 03:34:36 darco Exp $
+**     $Id$
 **
 **     \legal
-**     Copyright (c) 2002 Robert B. Quattlebaum Jr.
+**     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**     Copyright (c) 2007 Chris Moore
 **
-**     This software and associated documentation
-**     are CONFIDENTIAL and PROPRIETARY property of
-**     the above-mentioned copyright holder.
+**     This package is free software; you can redistribute it and/or
+**     modify it under the terms of the GNU General Public License as
+**     published by the Free Software Foundation; either version 2 of
+**     the License, or (at your option) any later version.
 **
-**     You may not copy, print, publish, or in any
-**     other way distribute this software without
-**     a prior written agreement with
-**     the copyright holder.
+**     This package is distributed in the hope that it will be useful,
+**     but WITHOUT ANY WARRANTY; without even the implied warranty of
+**     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+**     General Public License for more details.
 **     \endlegal
 */
 /* ========================================================================= */
@@ -34,6 +36,9 @@
 #include <pangomm/context.h>
 #include <pango/pango.h>
 #include "app.h"
+#include <cassert>
+
+#include "general.h"
 
 #endif
 
@@ -41,7 +46,7 @@
 
 using namespace std;
 using namespace etl;
-using namespace sinfg;
+using namespace synfig;
 using namespace studio;
 
 /* === M A C R O S ========================================================= */
@@ -64,7 +69,7 @@ Renderer_Timecode::get_enabled_vfunc()const
                canvas->get_time()!=canvas->rend_desc().get_time_start());
 }
 
-sinfg::Vector
+synfig::Vector
 Renderer_Timecode::get_grid_size()const
 {
        return get_work_area()->get_grid_size();
@@ -73,32 +78,32 @@ Renderer_Timecode::get_grid_size()const
 void
 Renderer_Timecode::render_vfunc(
        const Glib::RefPtr<Gdk::Drawable>& drawable,
-       const Gdk::Rectangle& expose_area
+       const Gdk::Rectangle& /*expose_area*/
 )
 {
        assert(get_work_area());
        if(!get_work_area())
                return;
-       
-       //const sinfg::RendDesc &rend_desc(get_work_area()->get_canvas()->rend_desc());
-       
-       const sinfg::Vector focus_point(get_work_area()->get_focus_point());
+
+       //const synfig::RendDesc &rend_desc(get_work_area()->get_canvas()->rend_desc());
+
+       const synfig::Vector focus_point(get_work_area()->get_focus_point());
 
        //std::vector< std::pair<Glib::RefPtr<Gdk::Pixbuf>,int> >& tile_book(get_tile_book());
-       
+
        int drawable_w,drawable_h;
        drawable->get_size(drawable_w,drawable_h);
-       
+
        // Calculate the window coordinates of the top-left
        // corner of the canvas.
-//     const sinfg::Vector::value_type
+//     const synfig::Vector::value_type
 //             x(focus_point[0]/get_pw()+drawable_w/2-get_w()/2),
 //             y(focus_point[1]/get_ph()+drawable_h/2-get_h()/2);
 
-       /*const sinfg::Vector::value_type window_startx(window_tl[0]);
-       const sinfg::Vector::value_type window_endx(window_br[0]);
-       const sinfg::Vector::value_type window_starty(window_tl[1]);
-       const sinfg::Vector::value_type window_endy(window_br[1]);
+       /*const synfig::Vector::value_type window_startx(window_tl[0]);
+       const synfig::Vector::value_type window_endx(window_br[0]);
+       const synfig::Vector::value_type window_starty(window_tl[1]);
+       const synfig::Vector::value_type window_endy(window_br[1]);
        */
 //     const int
 //             tile_w(get_work_area()->get_tile_w()),
@@ -107,24 +112,24 @@ Renderer_Timecode::render_vfunc(
 //     const int
 //             w(get_w()),
 //             h(get_h());
-       
+
        Glib::RefPtr<Gdk::GC> gc(Gdk::GC::create(drawable));
-       
-       //const sinfg::Vector grid_size(get_grid_size());
 
-//     const sinfg::Vector::value_type window_startx(get_work_area()->get_window_tl()[0]);
-//     const sinfg::Vector::value_type window_endx(get_work_area()->get_window_br()[0]);
-//     const sinfg::Vector::value_type window_starty(get_work_area()->get_window_tl()[1]);
-//     const sinfg::Vector::value_type window_endy(get_work_area()->get_window_br()[1]);
+       //const synfig::Vector grid_size(get_grid_size());
+
+//     const synfig::Vector::value_type window_startx(get_work_area()->get_window_tl()[0]);
+//     const synfig::Vector::value_type window_endx(get_work_area()->get_window_br()[0]);
+//     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());
 
        Canvas::Handle canvas(get_work_area()->get_canvas());
-       sinfg::Time cur_time(canvas->get_time());
-       
+       synfig::Time cur_time(canvas->get_time());
+
        // Print out the timecode
        {
                Glib::RefPtr<Pango::Layout> layout(Pango::Layout::create(get_work_area()->get_pango_context()));
-               
+
 /*             Glib::ustring timecode(cur_time.get_string(rend_desc.get_frame_rate(),App::get_time_format()));
 
                try
@@ -132,25 +137,33 @@ Renderer_Timecode::render_vfunc(
                        timecode+="\n"+canvas->keyframe_list().find(cur_time)->get_description();
                        gc->set_rgb_fg_color(Gdk::Color("#FF0000"));
                }
-               catch(sinfg::Exception::NotFound)
+               catch(synfig::Exception::NotFound)
                {
                        return;
                        gc->set_rgb_fg_color(Gdk::Color("#000000"));
                }
-               
-               layout->set_text(timecode);             
+
+               layout->set_text(timecode);
 */
 
                gc->set_rgb_fg_color(Gdk::Color("#5f0000"));
                try
                {
-                       layout->set_text(canvas->keyframe_list().find(cur_time)->get_description());            
+                       int w, h;
+                       layout->set_text(canvas->keyframe_list().find(cur_time)->get_description());
+                       layout->get_size(w, h);
+                       get_work_area()->timecode_width = int(w*1.0/Pango::SCALE);
+                       get_work_area()->timecode_height = int(h*1.0/Pango::SCALE);
                }
-               catch(sinfg::Exception::NotFound)
+               catch(synfig::Exception::NotFound)
                {
+                       get_work_area()->timecode_width = get_work_area()->timecode_height = 0;
                        return;
                }
-               
+               catch(...) {
+                       assert(0);
+               }
+
                drawable->draw_layout(gc, 4, 4, layout);
-       }       
+       }
 }