X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftags%2Fsynfig_0_61_07_rc3%2Fsrc%2Fsynfig%2Fsurfacenew.h;fp=synfig-core%2Ftags%2Fsynfig_0_61_07_rc3%2Fsrc%2Fsynfig%2Fsurfacenew.h;h=0000000000000000000000000000000000000000;hb=3a6643238c67c043fc3592837a05d6d2861967f1;hp=69e9ef61882b94eb2c7af5d71bf219875c80760f;hpb=47fce282611fbba1044921d22ca887f9b53ad91a;p=synfig.git diff --git a/synfig-core/tags/synfig_0_61_07_rc3/src/synfig/surfacenew.h b/synfig-core/tags/synfig_0_61_07_rc3/src/synfig/surfacenew.h deleted file mode 100644 index 69e9ef6..0000000 --- a/synfig-core/tags/synfig_0_61_07_rc3/src/synfig/surfacenew.h +++ /dev/null @@ -1,400 +0,0 @@ -/* === S Y N F I G ========================================================= */ -/*! \file surfacenew.h -** \brief Template 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_SURFACENEW_H -#define __SYNFIG_SURFACENEW_H - -/* === H E A D E R S ======================================================= */ - -#include -#include -#include "color.h" -#include "mutex.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 synfig { - -class Surface; -class SurfaceChannelLock; -class SurfaceChannelLockConst; - -//! \writeme -enum SurfaceColorSystem -{ - COLORSYS_RGB, - COLORSYS_YUV, - - COLORSYS_END -}; // END of enum SurfaceColorSystem - -//! \writeme -enum SurfaceChannel -{ - CHAN_A, - CHAN_R, - CHAN_G, - CHAN_B, - - CHAN_Y, - CHAN_U, - CHAN_V, - - CHAN_END -}; // END of enum SurfaceChannel - -class SurfaceNew : etl::shared_object -{ - friend class SurfaceChannelLock; - - /* - -- ** -- T Y P E S ----------------------------------------------------------- - */ - -public: - - //! \writeme - typedef etl::handle Handle; - - //! \writeme - typedef etl::handle HandleConst; - - //! \writeme - typedef etl::loose_handle LooseHandle; - - //! \writeme - typedef SurfaceChannel; - - //! \writeme - typedef SurfaceChannelLock ChannelLock; - - //! \writeme - typedef SurfaceChannelLockConst ChannelLockConst; - - //! \writeme - typedef SurfaceColorSystem; - - //! \writeme - class Lock - { - Handle x; - public: - Lock(const Handle& x):x(x) { x->lock(); } - void unlock() { if(x){ x->unlock(); x=0; } } - ~Lock() { unlock(); } - }; // END of class Lock - friend class Lock; - -private: - - //! \writeme - class ChannelData; - - /* - -- ** -- D A T A ------------------------------------------------------------- - */ - -private: - - //! \writeme - RecMutex mutex_; - - //! \writeme - int w_,h_; - - //! \writeme - ColorSystem color_system_; - - //! \writeme - bool premult_flag_; - - //! \writeme - std::map channel_map_; - - /* - -- ** -- S I G N A L S ------------------------------------------------------- - */ - -private: - - /* - -- ** -- S I G N A L I N T E R F A C E ------------------------------------- - */ - -public: - - /* - -- ** -- C O N S T R U C T O R S --------------------------------------------- - */ - -protected: - - //! \writeme - SurfaceNew(); - -public: - - //! \writeme - virtual ~SurfaceNew(); - - /* - -- ** -- M E M B E R F U N C T I O N S ------------------------------------- - */ - -public: - - //! \writeme - int get_w()const; - - //! \writeme - int get_h()const; - - //! \writeme - void set_wh(int w, int h); - - //! \writeme - ColorSystem get_color_system()const; - - //! \writeme - void set_color_system(ColorSystem x); - - //! Should only be used in certain circumstances - Color get_color(int x, int y)const; - - //! \writeme - void lock(); - - //! \writeme - void unlock(); - - //! \writeme - bool trylock(); - - //! \writeme - ChannelLock lock_channel(Channel chan); - - //! \writeme - ChannelLockConst lock_channel_const(Channel chan)const; - - //! \writeme - ChannelLock lock_channel_alpha(Channel chan); - - //! \writeme - ChannelLockConst lock_channel_alpha_const(Channel chan)const; - - //! \writeme - bool is_channel_defined(Channel chan)const; - - //! \writeme - bool get_premult()const; - - //! \writeme - void set_premult(); - - /* - -- ** -- S T A T I C F U N C T I O N S ------------------------------------- - */ - -public: - - //! Normal SurfaceNew Constructor - static Handle create(int w=0, int h=0, ColorSystem sys=COLORSYS_RGB); - - //! Converts an old Surface to a SurfaceNew - static Handle create(const Surface&); - - //! Dupilcates a surface - static Handle create(HandleConst); - - //! Creates a cropped copy of a surface - static Handle crop(HandleConst, int x, int y, int w, int h); - - static void blit( - Handle dest, - int x_dest, - int y_dest, - HandleConst src, - float amount=1.0, - Color::BlendMethod bm=Color::BLEND_COMPOSITE - ); - - static void blit( - Handle dest, - int x_dest, - int y_dest, - Handle src, - int x_src, - int y_src, - int w_src, - int h_src, - float amount=1.0, - Color::BlendMethod bm=Color::BLEND_COMPOSITE - ); - - - static void chan_mlt(ChannelLock& dest, float x); - static void chan_mlt(ChannelLock& dest, const ChannelLockConst& x); - - static void chan_div(ChannelLock& dest, float x); - static void chan_div(ChannelLock& dest, const ChannelLockConst& x); - - static void chan_add(ChannelLock& dest, float x); - static void chan_add(ChannelLock& dest, const ChannelLockConst& x); - - static void chan_sub(ChannelLock& dest, float x); - static void chan_sub(ChannelLock& dest, const ChannelLockConst& x); -}; // END of class SurfaceNew - -//! \writeme -class SurfaceChannelLockConst -{ - friend class SurfaceNew; - - /* - -- ** -- T Y P E S ----------------------------------------------------------- - */ - -public: - - /* - -- ** -- D A T A ------------------------------------------------------------- - */ - -protected: - - //! \writeme - SurfaceNew::Handle surface_; - - //! \writeme - etl::reference_counter ref_count_; - - //! \writeme - SurfaceChannel channel_; - - //! \writeme - bool data_ptr_checked_out_; - - /* - -- ** -- C O N S T R U C T O R S --------------------------------------------- - */ - -public: - - SurfaceChannelLockConst(); - - //! \writeme - ~SurfaceChannelLockConst(); - - /* - -- ** -- M E M B E R F U N C T I O N S ------------------------------------- - */ - -public: - - //! \writeme - SurfaceChannel get_channel()const; - - //! \writeme - int get_w()const; - - //! \writeme - int get_h()const; - - //! \writeme - float get_value(int x, int y); - - //! \writeme - const float* get_data_ptr()const; - - //! \writeme - int get_data_ptr_stride()const; - - //! Releases the pointer obtained with get_data_ptr() - void release_data_ptr()const; - - //! \writeme - operator bool()const; -}; // END of class SurfaceChannelLockConst - - -//! \writeme -class SurfaceChannelLock : public SurfaceChannelLockConst -{ - friend class SurfaceNew; - - using SurfaceChannelLock::get_data_ptr; - - /* - -- ** -- T Y P E S ----------------------------------------------------------- - */ - -public: - - /* - -- ** -- D A T A ------------------------------------------------------------- - */ - -private: - - /* - -- ** -- C O N S T R U C T O R S --------------------------------------------- - */ - -public: - - //! \writeme - SurfaceChannelLock(); - - //! \writeme - ~SurfaceChannelLock(); - - /* - -- ** -- M E M B E R F U N C T I O N S ------------------------------------- - */ - -public: - - //! \writeme - void clear(); - - //! \writeme - void fill(float value); - - //! \writeme - void set_value(int x, int y, float v); - - float* get_data_ptr(); -}; // END of class ChannelLock - - -}; // END of namespace synfig - -/* === E N D =============================================================== */ - -#endif