Release synfigstudio_0_61_07_rc2
[synfig.git] / synfig-studio / tags / synfigstudio_0_61_07_rc2 / src / gtkmm / dock_navigator.h
diff --git a/synfig-studio/tags/synfigstudio_0_61_07_rc2/src/gtkmm/dock_navigator.h b/synfig-studio/tags/synfigstudio_0_61_07_rc2/src/gtkmm/dock_navigator.h
new file mode 100644 (file)
index 0000000..b40b57d
--- /dev/null
@@ -0,0 +1,121 @@
+/* === S Y N F I G ========================================================= */
+/*!    \file dock_navigator.h
+**     \brief Navigator Dock Header
+**
+**     $Id$
+**
+**     \legal
+**     Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
+**
+**     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.
+**
+**     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
+*/
+/* ========================================================================= */
+
+/* === S T A R T =========================================================== */
+
+#ifndef __SYNFIG_DOCK_NAVIGATOR_H
+#define __SYNFIG_DOCK_NAVIGATOR_H
+
+/* === H E A D E R S ======================================================= */
+#include "sigc++/signal.h"
+
+#include <gtkmm/drawingarea.h>
+#include <gdkmm/pixbuf.h>
+#include <gtkmm/adjustment.h>
+#include <gtkmm/label.h>
+
+#include <synfig/renddesc.h>
+
+#include "canvasview.h"
+#include "dock_canvasspecific.h"
+#include "widget_distance.h"
+
+#include <ETL/smart_ptr>
+
+/* === M A C R O S ========================================================= */
+
+/* === T Y P E D E F S ===================================================== */
+
+/* === C L A S S E S & S T R U C T S ======================================= */
+
+namespace studio {
+class AsyncRenderer;
+
+class Widget_NavView : public Gtk::Table
+{
+       //handle to out parent canvas
+       CanvasView::LooseHandle         canvview;
+
+       Glib::RefPtr<Gdk::Pixbuf>       prev;
+       bool dirty;
+
+       //The drawing stuff
+       Gtk::DrawingArea        drawto;
+
+       //The input stuff
+       Gtk::Adjustment         adj_zoom;
+       Gtk::Label                      zoom_print;
+
+       //zoom window stuff
+       bool                            scrolling;
+
+       //asyncronous rendering stuff
+       etl::handle<AsyncRenderer>      renderer;
+       etl::smart_ptr<synfig::Surface> surface;
+       bool                                            rendering;
+
+       //drawing functionality
+       void on_start_render(); //breaks out into asynchronous rendering
+       void on_finish_render();
+       void on_draw(); //renders the small thing we have
+       void on_dirty_preview(); //dirties the preview for rerender
+
+       //for the zoom buttons
+       void on_zoom_in();
+       void on_zoom_out();
+
+       //handles the zoom scroller
+       bool on_scroll_event(GdkEvent *event);
+       void on_number_modify();
+
+       //
+       bool on_mouse_event(GdkEvent * e);
+
+       //draws the gotten bitmap on the draw area
+       bool on_expose_draw(GdkEventExpose *exp=0);
+
+       //for when the canvasview view changes (boolean value scrolling solves cyclic problems)
+       void on_workarea_view_change();
+
+public:
+       Widget_NavView(CanvasView::LooseHandle cv = CanvasView::LooseHandle());
+       ~Widget_NavView();
+
+       etl::loose_handle<studio::CanvasView> get_canvas_view() {return canvview;}
+};
+
+class Dock_Navigator : public Dock_CanvasSpecific
+{
+       Widget_NavView  dummy;
+
+public:
+       Dock_Navigator();
+       ~Dock_Navigator();
+
+       virtual void changed_canvas_view_vfunc(etl::loose_handle<CanvasView> canvas_view);
+};
+
+}; // END of namespace studio
+
+/* === E N D =============================================================== */
+
+#endif