X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftags%2Fstable%2Fsrc%2Fgtkmm%2Fpreview.h;h=962a537b90dbdca8870560c1580c177709a29c29;hb=47fce282611fbba1044921d22ca887f9b53ad91a;hp=780f689c050ff3fd18c158122b07f71b2c9127c0;hpb=7c6d5426922cb3cda793f688dcd4d534b02765c8;p=synfig.git diff --git a/synfig-studio/tags/stable/src/gtkmm/preview.h b/synfig-studio/tags/stable/src/gtkmm/preview.h index 780f689..962a537 100644 --- a/synfig-studio/tags/stable/src/gtkmm/preview.h +++ b/synfig-studio/tags/stable/src/gtkmm/preview.h @@ -1,30 +1,34 @@ -/* === S I N F G =========================================================== */ +/* === S Y N F I G ========================================================= */ /*! \file preview.h ** \brief Previews an animation ** -** $Id: preview.h,v 1.2 2005/01/10 08:13:44 darco Exp $ +** $Id$ ** ** \legal -** Copyright (c) 2002 Robert B. Quattlebaum Jr. +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley ** -** 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 */ /* ========================================================================= */ /* === S T A R T =========================================================== */ -#ifndef __SINFG_PREVIEW_H -#define __SINFG_PREVIEW_H +#ifndef __SYNFIG_PREVIEW_H +#define __SYNFIG_PREVIEW_H /* === H E A D E R S ======================================================= */ +#include +#include /* indirectly includes winnt.h on WIN32 - needs to be included before gtkmm headers, which fix this */ + #include #include #include @@ -34,18 +38,16 @@ #include #include #include +#include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include "widget_sound.h" -#include -#include - #include /* === M A C R O S ========================================================= */ @@ -56,7 +58,7 @@ namespace studio { class AsyncRenderer; - + class Preview : public sigc::trackable, public etl::shared_object { public: @@ -67,17 +69,17 @@ public: }; etl::handle renderer; - + sigc::signal signal_destroyed_; //so things can reference us without fear - + typedef std::vector FlipBook; private: - + FlipBook frames; - + studio::CanvasView::LooseHandle canvasview; - //sinfg::RendDesc description; //for rendering the preview... + //synfig::RendDesc description; //for rendering the preview... float zoom,fps; float begintime,endtime; bool overbegin,overend; @@ -88,25 +90,25 @@ private: //expose the frame information etc. class Preview_Target; void frame_finish(const Preview_Target *); - + sigc::signal0 sig_changed; - + public: - - Preview(const studio::CanvasView::LooseHandle &h = studio::CanvasView::LooseHandle(), + + Preview(const studio::CanvasView::LooseHandle &h = studio::CanvasView::LooseHandle(), float zoom = 0.5f, float fps = 15); ~Preview(); - + float get_zoom() const {return zoom;} void set_zoom(float z){zoom = z;} - + float get_fps() const {return fps;} void set_fps(float f){fps = f;} - + float get_global_fps() const {return global_fps;} void set_global_fps(float f){global_fps = f;} - - float get_begintime() const + + float get_begintime() const { if(overbegin) return begintime; @@ -114,7 +116,7 @@ public: return get_canvas()->rend_desc().get_time_start(); else return -1; } - + float get_endtime() const { if(overend) @@ -123,41 +125,41 @@ public: return get_canvas()->rend_desc().get_time_end(); else return -1; } - + void set_begintime(float t) {begintime = t;} void set_endtime(float t) {endtime = t;} - + bool get_overbegin() const {return overbegin;} void set_overbegin(bool b) {overbegin = b;} - + bool get_overend() const {return overend;} void set_overend(bool b) {overend = b;} - + int get_quality() const {return quality;} void set_quality(int i) {quality = i;} - - sinfg::Canvas::Handle get_canvas() const {return canvasview->get_canvas();} + + synfig::Canvas::Handle get_canvas() const {return canvasview->get_canvas();} studio::CanvasView::Handle get_canvasview() const {return canvasview;} - + void set_canvasview(const studio::CanvasView::LooseHandle &h); - + //signal interface sigc::signal & signal_destroyed() { return signal_destroyed_; } - //sigc::signal &signal_desc_change() {return signal_desc_change_;} - + //sigc::signal &signal_desc_change() {return signal_desc_change_;} + //functions for exposing iterators through the preview FlipBook::iterator begin() {return frames.begin();} FlipBook::iterator end() {return frames.end();} - + FlipBook::const_iterator begin() const {return frames.begin();} FlipBook::const_iterator end() const {return frames.end();} - + void clear() {frames.clear();} - + unsigned int numframes() const {return frames.size();} - + void render(); - + sigc::signal0 &signal_changed() { return sig_changed; } }; @@ -167,68 +169,69 @@ class Widget_Preview : public Gtk::Table Gtk::Adjustment adj_time_scrub; //the adjustment for the managed scrollbar Gtk::HScrollbar scr_time_scrub; Gtk::ToggleButton b_loop; - + Gtk::Tooltips tooltips; + //Glib::RefPtr gc_area; Glib::RefPtr currentbuf; int currentindex; //double timeupdate; double timedisp; double audiotime; - + //sound stuff etl::handle audio; sigc::connection scrstartcon; sigc::connection scrstopcon; sigc::connection scrubcon; - + //preview encapsulation etl::handle preview; sigc::connection prevchanged; - + Widget_Sound disp_sound; Gtk::Adjustment adj_sound; - + Gtk::Label l_lasttime; - + //only for internal stuff, doesn't set anything bool playing; bool singleframe; - + //for accurate time tracking etl::clock timer; - - //int curindex; //for later - SigC::Connection timecon; - + + //int curindex; //for later + sigc::connection timecon; + void slider_move(); //later to be a time_slider that's cooler bool play_update(); void play_stop(); //bool play_frameupdate(); void update(); - + void scrub_updated(double t); - + void repreview(); - + void whenupdated(); - + void eraseall(); - + bool scroll_move_event(GdkEvent *); void disconnect_preview(Preview *); - + bool redraw(GdkEventExpose *heh = 0); void preview_draw(); - + sigc::signal signal_play_; sigc::signal signal_stop_; sigc::signal signal_seek_; - + public: - + Widget_Preview(); ~Widget_Preview(); - + //sets a signal to identify disconnection (so we don't hold onto it)... void set_preview(etl::handle prev); void set_audioprofile(etl::handle p); @@ -249,7 +252,7 @@ public: bool get_loop_flag() const {return b_loop.get_active();} void set_loop_flag(bool b) {return b_loop.set_active(b);} }; - + }; // END of namespace studio /* === E N D =============================================================== */