X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=synfig-studio%2Ftags%2F0.61.08%2Fsrc%2Fgtkmm%2Fdock_navigator.h;fp=synfig-studio%2Ftags%2F0.61.08%2Fsrc%2Fgtkmm%2Fdock_navigator.h;h=95e3fa1e12e1c5d80c8b5514885f622ca4745ba3;hb=79fcd5b32f0accf9f1d13f9b6ded0d628e6f4b33;hp=0000000000000000000000000000000000000000;hpb=c1f365570ac471ede0668ad976fad345747aa8de;p=synfig.git diff --git a/synfig-studio/tags/0.61.08/src/gtkmm/dock_navigator.h b/synfig-studio/tags/0.61.08/src/gtkmm/dock_navigator.h new file mode 100644 index 0000000..95e3fa1 --- /dev/null +++ b/synfig-studio/tags/0.61.08/src/gtkmm/dock_navigator.h @@ -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 +#include +#include +#include + +#include + +#include "canvasview.h" +#include "dock_canvasspecific.h" +#include "widget_distance.h" + +#include + +/* === 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 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; + + //asynchronous rendering stuff + etl::handle renderer; + etl::smart_ptr 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 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 canvas_view); +}; + +}; // END of namespace studio + +/* === E N D =============================================================== */ + +#endif