BEAST/BSE - Better Audio System and Sound Engine  0.8.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
standardsaturator.genidl.hh
Go to the documentation of this file.
00001 
00002 /*-------- begin ../sfi/sfidl generated code --------*/
00003 
00004 
00005 
00006 #include <bse/bsecxxplugin.hh>
00007 
00008 
00009 /* enum prototypes */
00010 namespace Bse {
00011 namespace Standard {
00012 #define BSE_STANDARD_TYPE_SATURATION_TYPE               BSE_CXX_DECLARED_ENUM_TYPE (Bse::Standard, SaturationType)
00013 
00014 
00015 /* choice prototypes */
00016 static SfiChoiceValues SaturationType_choice_values();
00017 
00018 
00019 /* record prototypes */
00020 
00021 
00022 /* sequence prototypes */
00023 
00024 
00025 /* class prototypes */
00026 class SaturatorBase;
00027 class Saturator;
00028 #define BSE_STANDARD_TYPE_SATURATOR             BSE_CXX_DECLARED_CLASS_TYPE (Bse::Standard, Saturator)
00029 #define BSE_STANDARD_IS_SATURATOR(o) (::Bse::CxxBase::instance_is_a (o, BSE_STANDARD_TYPE_SATURATOR))
00030 
00031 
00032 /* enum definitions */
00033 enum SaturationType {
00034   SATURATE_TANH = 0,
00035   SATURATE_ATAN = 1,
00036   SATURATE_QUADRATIC = 2,
00037   SATURATE_SOFT_KNEE = 3,
00038   SATURATE_HARD = 4,
00039 };
00040 
00041 
00042 /* sequence definitions */
00043 
00044 
00045 /* record definitions */
00046 
00047 
00048 /* enum declarations */
00049 BSE_CXX_DECLARE_ENUM (SaturationType, "BseStandardSaturationType", 5,
00050   *v++ = ::Bse::EnumValue (SATURATE_TANH, "BSE_STANDARD_SATURATE_TANH", _("TANH") );
00051   *v++ = ::Bse::EnumValue (SATURATE_ATAN, "BSE_STANDARD_SATURATE_ATAN", _("ATAN") );
00052   *v++ = ::Bse::EnumValue (SATURATE_QUADRATIC, "BSE_STANDARD_SATURATE_QUADRATIC", _("Quadratic") );
00053   *v++ = ::Bse::EnumValue (SATURATE_SOFT_KNEE, "BSE_STANDARD_SATURATE_SOFT_KNEE", _("Soft Knee") );
00054   *v++ = ::Bse::EnumValue (SATURATE_HARD, "BSE_STANDARD_SATURATE_HARD", _("Hard") );
00055 );
00056 
00057 
00058 /* sequence type declarations */
00059 
00060 
00061 /* record type declarations */
00062 
00063 
00064 /* procedure prototypes */
00065 
00066 
00067 /* class definitions */
00068 BSE_CXX_DECLARE_CLASS (Saturator);
00069 class SaturatorBase : public ::Bse::Effect {
00070   template<bool> static inline const unsigned char* inlined_pixstream();
00071 public:
00072   static inline const unsigned char* pixstream () { return inlined_pixstream<true>(); }
00073   static void               class_init (::Bse::CxxBaseClass *klass);
00074   static inline const char* options   () { return ""; }
00075   static inline const char* category  () { static const char *c = NULL;
00076     return c ? c : c = sfi_category_concat ("/Modules", "/Distortion/Saturate"); }
00077   static inline const char* i18n_category  () { static const char *c = NULL;
00078     return c ? c : c = sfi_category_concat ("/Modules", "/Distortion/Saturate"); }
00079   static inline const char* blurb     () { return "This is 2-channel saturation module. Various saturation types are supported. The 'Level' parameter adjusts the maximum saturation stage output for a normalized input signal. Some saturartion types simply clip signals beyond this threshold, while others (notably TANH and ATAN) allow overdrive signals to pass through the saturation stage up to a certain amount. The output volume allows for extra amplification after the saturation stage. For saturation types that allow overdrive signals past the saturation stage, an output volume greater than 0dB may result in overdrive signals as output of this module."; }
00080   static inline const char* authors   () { return "Tim Janik"; }
00081   static inline const char* license   () { return ""; }
00082   static inline const char* type_name () { return "BseStandardSaturator"; }
00083 public:
00084   enum {
00085     ICHANNEL_AUDIO_IN1,
00086     ICHANNEL_AUDIO_IN2,
00087     N_ICHANNELS
00088   };
00089 public:
00090   enum {
00091     OCHANNEL_AUDIO_OUT1,
00092     OCHANNEL_AUDIO_OUT2,
00093     N_OCHANNELS
00094   };
00095 protected:
00096   enum SaturatorPropertyID {
00097     PROP_SATURATION = 1,
00098     PROP_LEVEL,
00099     PROP_AUTO_OUTPUT,
00100     PROP_OUTPUT_VOLUME,
00101   };
00102 public:
00103   /* "transport" structure to configure synthesis modules from properties */
00104   struct SaturatorProperties {
00105     typedef SaturatorPropertyID IDType;
00106     ::Bse::Standard::SaturationType saturation;
00107     Sfi::Real level;
00108     bool auto_output;
00109     Sfi::Real output_volume;
00110     explicit SaturatorProperties (SaturatorBase *p) :
00111       saturation (p->saturation),
00112       level (p->level),
00113       auto_output (p->auto_output),
00114       output_volume (p->output_volume)
00115     {
00116     }
00117   };
00118 protected:
00119   typedef ::Bse::SynthesisModule::NeedAutoUpdateTag AutoUpdateCategory;
00120 protected:
00121   ::Bse::Standard::SaturationType saturation;
00122   Sfi::Real level;
00123   bool auto_output;
00124   Sfi::Real output_volume;
00125   guint64 last__output_volume;
00126 public:
00127   void get_property (SaturatorPropertyID prop_id, ::Bse::Value &value, GParamSpec *pspec)
00128   {
00129     switch (prop_id) {
00130     case PROP_SATURATION:
00131       sfi_value_set_enum_auto SFI_START_ARGS() BSE_STANDARD_TYPE_SATURATION_TYPE, SFI_END_ARGS2 (&value, saturation);
00132     break;
00133     case PROP_LEVEL:
00134       sfi_value_set_real (&value, level);
00135     break;
00136     case PROP_AUTO_OUTPUT:
00137       sfi_value_set_bool (&value, auto_output);
00138     break;
00139     case PROP_OUTPUT_VOLUME:
00140       sfi_value_set_real (&value, output_volume);
00141     break;
00142     };
00143   }
00144   void set_property (SaturatorPropertyID prop_id, const ::Bse::Value &value, GParamSpec *pspec)
00145   {
00146     switch (prop_id) {
00147     case PROP_SATURATION:
00148       saturation = (::Bse::Standard::SaturationType) sfi_value_get_enum_auto SFI_START_ARGS() BSE_STANDARD_TYPE_SATURATION_TYPE, SFI_END_ARGS1 (&value);
00149     break;
00150     case PROP_LEVEL:
00151       level = sfi_value_get_real (&value);
00152     break;
00153     case PROP_AUTO_OUTPUT:
00154       auto_output = sfi_value_get_bool (&value);
00155     break;
00156     case PROP_OUTPUT_VOLUME:
00157       output_volume = sfi_value_get_real (&value);
00158     break;
00159     };
00160     property_changed (SaturatorPropertyID (prop_id));
00161     update_modules();
00162     switch (prop_id) {
00163     default: ;
00164     };
00165   }
00166   virtual bool editable_property (SaturatorPropertyID prop_id, GParamSpec *pspec)
00167   {
00168     return true;
00169   }
00170   virtual void get_candidates (SaturatorPropertyID prop_id, ::Bse::PropertyCandidatesHandle &pch, GParamSpec *pspec)
00171   {
00172   }
00173   void property_updated (SaturatorPropertyID prop_id, guint64 tick_stamp, double prop_value, GParamSpec *pspec)
00174   {
00175     bool seen_change = false;
00176     switch (prop_id) {
00177     case PROP_OUTPUT_VOLUME:
00178       if (tick_stamp >= ::std::max (last__output_volume, module_update_tick_stamp()))
00179         {
00180           seen_change = true;
00181           output_volume = prop_value;
00182         }
00183       last__output_volume = tick_stamp;
00184     break;
00185     default: ;
00186     };
00187     if (seen_change &&
00188         property_changed (SaturatorPropertyID (prop_id)))
00189       update_modules();
00190   }
00191 private:
00192   static struct StaticData {
00193     int dummy;
00194   } static_data;
00195 protected:
00196   virtual bool property_changed (SaturatorPropertyID) { return false; }
00197   virtual ~SaturatorBase ()
00198   {
00199   }
00200 public:
00201 };
00202 
00203 
00204 /* choice implementations */
00205 static SfiChoiceValues
00206 SaturationType_choice_values()
00207 {
00208   static SfiChoiceValue values[5];
00209   static const SfiChoiceValues choice_values = {
00210     G_N_ELEMENTS (values), values,
00211   };
00212   if (!values[0].choice_ident)
00213     {
00214       values[0].choice_ident = "BSE_STANDARD_SATURATE_TANH";
00215       values[0].choice_label = _("TANH");
00216       values[0].choice_blurb = _("Saturation via hyperbolic tangent function which is mostly linear for small levels while providing a soft curvature for high volume signals");
00217       values[1].choice_ident = "BSE_STANDARD_SATURATE_ATAN";
00218       values[1].choice_label = _("ATAN");
00219       values[1].choice_blurb = _("Saturation via arc tangent function which is reasonably linear in the lower 50% but develops a strong curvature above 80%");
00220       values[2].choice_ident = "BSE_STANDARD_SATURATE_QUADRATIC";
00221       values[2].choice_label = _("Quadratic");
00222       values[2].choice_blurb = _("Saturation via quadratic approximation which keeps a well-proportioned curvature across all levels");
00223       values[3].choice_ident = "BSE_STANDARD_SATURATE_SOFT_KNEE";
00224       values[3].choice_label = _("Soft Knee");
00225       values[3].choice_blurb = _("Linear saturation with a soft knee transit into the clipping range (equals hard clipping at 100%) which approaches quadratic curvature for small levels");
00226       values[4].choice_ident = "BSE_STANDARD_SATURATE_HARD";
00227       values[4].choice_label = _("Hard");
00228       values[4].choice_blurb = _("Hard saturation via clipping (prone to clicks)");
00229   }
00230   return choice_values;
00231 }
00232 
00233 
00234 
00235 /* record implementations */
00236 
00237 
00238 /* sequence implementations */
00239 
00240 
00241 /* class implementations */
00242 void
00243 SaturatorBase::class_init (::Bse::CxxBaseClass *klass)
00244 {
00245   klass->set_accessors (::Bse::cxx_get_property_trampoline<SaturatorBase, SaturatorPropertyID>,
00246                         ::Bse::cxx_set_property_trampoline<SaturatorBase, SaturatorPropertyID>,
00247                         ::Bse::cxx_editable_property_trampoline<SaturatorBase, SaturatorPropertyID>,
00248                         ::Bse::cxx_get_candidates_trampoline<SaturatorBase, SaturatorPropertyID>,
00249                         ::Bse::cxx_property_updated_trampoline<SaturatorBase, SaturatorPropertyID>);
00250   klass->add_param (PROP_SATURATION, sfidl_pspec_GEnum ("Saturation","/opt/src/beast/plugins/standardsaturator.idl",770, "saturation", _ ( "Saturation Type" ) , _ ( "The type of saturation to be used" ) , SATURATE_TANH , ":r:w:S:G:", BSE_STANDARD_TYPE_SATURATION_TYPE));
00251   klass->add_param (PROP_LEVEL, sfidl_pspec_Perc ("Saturation","/opt/src/beast/plugins/standardsaturator.idl",771,"level",_ ( "Level" ) , _ ( "Normalization level of the saturation curve in percent, some saturation types still " "allow overdrive signals beyond this level" ) , 50LL , "scale:" ":r:w:S:G:"));
00252   klass->add_param (PROP_AUTO_OUTPUT, sfidl_pspec_Bool ("Saturation","/opt/src/beast/plugins/standardsaturator.idl",775,"auto_output",_ ( "Auto Output" ) , _ ( "Automatically adapt the output volume according to changes in saturation level" ) , TRUE , ":r:w:S:G:"));
00253   klass->add_param (PROP_OUTPUT_VOLUME, sfidl_pspec_DBVolume ("Saturation","/opt/src/beast/plugins/standardsaturator.idl",778,"output_volume",_ ( "Output Volume" ) , _ ( "Output stage amplification in decibel" ) , 0LL , 0LL , + 42LL , "automate:" ":r:w:S:G:"));
00254   klass->add_ichannel ("audio_in1", "Audio In1", "First Audio Input", ICHANNEL_AUDIO_IN1);
00255   klass->add_ichannel ("audio_in2", "Audio In2", "Second Audio Input", ICHANNEL_AUDIO_IN2);
00256   klass->add_ochannel ("audio_out1", "Audio Out1", "First Audio Output", OCHANNEL_AUDIO_OUT1);
00257   klass->add_ochannel ("audio_out2", "Audio Out2", "Second Audio Output", OCHANNEL_AUDIO_OUT2);
00258 }
00259 
00260 
00261 /* procedure implementations */
00262 
00263 
00264 /* standardsaturator.idl type registrations */
00265 #define BSE_CXX_REGISTER_ALL_TYPES_FROM_STANDARDSATURATOR_IDL() \
00266   BSE_CXX_REGISTER_ENUM (SaturationType); \
00267   BSE_CXX_REGISTER_EFFECT (Saturator); \
00268   /* standardsaturator.idl type registrations done */
00269 } // Standard
00270 } // Bse
00271 template<bool> const unsigned char*
00272 ::Bse::Standard::SaturatorBase::inlined_pixstream()
00273 {
00274   /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */
00275 
00276 #ifdef __SUNPRO_C
00277 #pragma align 4 (local_pixstream)
00278 #endif
00279 #ifdef __GNUC__
00280 static const guint8 local_pixstream[] __attribute__ ((__aligned__ (4))) = 
00281 #else
00282 static const guint8 local_pixstream[] = 
00283 #endif
00284 { ""
00285   /* Pixbuf magic (0x47646b50) */
00286   "GdkP"
00287   /* length: header (24) + pixel_data (5162) */
00288   "\0\0\24B"
00289   /* pixdata_type (0x2010002) */
00290   "\2\1\0\2"
00291   /* rowstride (256) */
00292   "\0\0\1\0"
00293   /* width (64) */
00294   "\0\0\0@"
00295   /* height (64) */
00296   "\0\0\0@"
00297   /* pixel_data: */
00298   "\206\0\0\0\0\230\0\0\0\1\243\0\0\0\0\3\0\0\0\1\0\0\0\4\0\0\0\10\202\0"
00299   "\0\0\13\230\0\0\0\14\5\0\0\0\13\0\0\0\12\0\0\0\10\0\0\0\3\0\0\0\1\236"
00300   "\0\0\0\0\5\0\0\0\4\0\0\0\17\0\0\0\36\0\0\0(\0\0\0*\230\0\0\0,\5\0\0\0"
00301   "*\0\0\0&\0\0\0\32\0\0\0\12\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0\0\0\10\0\0"
00302   "\0\37\0\0\0;\0\0\0I\0\0\0J\0\0\0K\226\0\0\0L\6\0\0\0K\0\0\0I\0\0\0D\0"
00303   "\0\0.\0\0\0\20\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0\0\0\13\0\0\0(\0\0\0I\0"
00304   "\0\0\270\0\0\0\343\230\0\0\0\377\5\12\27\12\377\33\77\33\377\0\0\0""8"
00305   "\0\0\0\23\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0\0\0\14\0\0\0+\0\0\0J\0\0\0"
00306   "\343nnn\262\276\276\276\222\221\377\377\377\177\202&w&\377\11S\241R\377"
00307   "P\241P\377N\241M\377@\210\77\377+`,\377\12\27\12\377\0\0\0;\0\0\0\25"
00308   "\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0\0\0\14\0\0\0,\0\0\0K\0\0\0\377\276\276"
00309   "\276\222\221\377\377\377\177\202&w&\377\12V\242U\377T\242R\377Q\241P"
00310   "\377N\241M\377K\240K\377>\211=\377\0\0\0\377\0\0\0<\0\0\0\26\0\0\0\2"
00311   "\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\221\377\377\377"
00312   "\177\202&w&\377\13X\242W\377V\242U\377T\242R\377Q\241P\377N\241M\377"
00313   "L\241K\377I\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
00314   "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\220\262\267\375\257\202&w&"
00315   "\377\14[\242Z\377Y\242X\377V\241U\377T\241S\377P\241P\377N\241N\377K"
00316   "\241K\377I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0"
00317   "\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\217\226\235\374\313\202&w&\377"
00318   "\15^\242\\\377[\242Z\377X\241W\377V\241U\377T\241S\377Q\241P\377N\240"
00319   "N\377K\240K\377I\241H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0"
00320   "\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\216\226\235\374\313\202"
00321   "&w&\377\16`\243^\377^\242\\\377[\242Z\377Y\242W\377V\241U\377S\241R\377"
00322   "Q\241P\377N\241M\377L\241K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0"
00323   "\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\215\226"
00324   "\235\374\313\202&w&\377\17c\243a\377a\242_\377^\243]\377[\242Z\377Y\242"
00325   "W\377V\241T\377S\241R\377Q\241O\377N\241M\377L\240K\377H\240I\377\0\0"
00326   "\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,"
00327   "\0\0\0L\0\0\0\377\214\226\235\374\313\202&w&\377\20e\243d\377c\242a\377"
00328   "a\243_\377^\243]\377\\\242Z\377Y\241X\377U\241U\377T\241S\377P\241P\377"
00329   "N\241N\377K\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
00330   "\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\213\226\235\374\313"
00331   "\202&w&\377\21h\243g\377f\243d\377d\243b\377`\243_\377^\242\\\377[\242"
00332   "Z\377Y\242X\377V\242U\377S\241R\377P\241P\377N\241M\377K\241K\377I\240"
00333   "H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\4\0\0\0\1\0\0\0\14"
00334   "\0\0\0,\0\0\0L\234\0\0\0\377\3\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
00335   "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\211\226\235\374\313\202&w&"
00336   "\377\23n\244k\377k\243h\377h\243f\377f\243d\377c\243a\377a\243_\377^"
00337   "\243\\\377\\\242Z\377Y\242X\377V\242U\377S\241S\377Q\241P\377N\241M\377"
00338   "K\240K\377H\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5"
00339   "\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\210\226\235\374\313\202&w&"
00340   "\377\24p\245n\377m\244k\377k\244h\377h\244f\377f\243c\377c\243a\377a"
00341   "\243_\377^\243]\377[\242Z\377X\241W\377V\242U\377S\241S\377P\241P\377"
00342   "N\241M\377L\241K\377I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235"
00343   "\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\207\226\235\374\313"
00344   "\202&w&\377\25s\245p\377q\244m\377n\244k\377k\243h\377i\243f\377f\243"
00345   "d\377d\243b\377a\242_\377]\243\\\377[\242Z\377Y\242W\377V\242U\377S\241"
00346   "S\377Q\241P\377N\241N\377L\240K\377H\240H\377\0\0\0\377\0\0\0=\0\0\0"
00347   "\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\206"
00348   "\226\235\374\313\202&w&\377\26v\245s\377s\244p\377q\244n\377n\244k\377"
00349   "l\244h\377i\243f\377e\243c\377c\243a\377`\242_\377^\242\\\377[\242Z\377"
00350   "Y\241W\377V\242U\377S\241S\377Q\241P\377N\240N\377K\241K\377I\240H\377"
00351   "\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0"
00352   "\0,\0\0\0L\0\0\0\377\205\226\235\374\313\202&w&\377\27x\245u\377v\245"
00353   "s\377t\245p\377p\244n\377n\244k\377k\244i\377i\244f\377f\243d\377c\243"
00354   "a\377a\242_\377]\243]\377[\242Y\377X\242W\377V\242U\377S\241R\377P\241"
00355   "P\377N\241N\377K\241K\377I\240I\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2"
00356   "\235\0\0\0\0\5\0\0\0\1\0\0\0\14\0\0\0,\0\0\0L\0\0\0\377\204\226\235\374"
00357   "\313\202&w&\377\30{\246x\377x\245u\377v\245s\377s\244p\377p\244n\377"
00358   "n\243k\377k\243i\377i\243f\377f\243c\377c\243b\377`\242_\377^\243]\377"
00359   "[\242Z\377Y\242X\377V\242U\377S\242S\377P\241P\377N\241N\377K\240K\377"
00360   "I\240H\377\0\0\0\377\0\0\0=\0\0\0\26\0\0\0\2\235\0\0\0\0\6\0\0\0\1\0"
00361   "\0\0\14\0\0\0,\0\0\0K\0\0\0\377{\201\317\323\202\226\235\374\313\202"
00362   "&w&\377\31~\246z\377{\245w\377y\245u\377v\244r\377s\245p\377q\245m\377"
00363   "n\244k\377k\244i\377i\243f\377f\244d\377d\243b\377`\243_\377]\242\\\377"
00364   "[\242Z\377X\242X\377U\241T\377S\242S\377Q\241O\377N\241M\377K\241K\377"
00365   ">\210>\377\0\0\0\377\0\0\0<\0\0\0\26\0\0\0\2\235\0\0\0\0\7\0\0\0\1\0"
00366   "\0\0\13\0\0\0+\0\0\0J\12\12\26\363RV\212\340{\201\317\323\202&w&\377"
00367   "\32\201\246|\377~\246z\377{\245w\377x\244u\377v\245r\377t\245p\377p\244"
00368   "n\377n\244k\377k\243i\377h\244f\377e\243c\377c\243a\377a\243_\377^\242"
00369   "]\377[\242Z\377X\242W\377V\242U\377S\241R\377Q\241O\377N\241N\377@\210"
00370   "@\377,`+\377\12\27\12\377\0\0\0:\0\0\0\24\0\0\0\2\235\0\0\0\0\6\0\0\0"
00371   "\1\0\0\0\12\0\0\0&\0\0\0E\36\40B\341\12\13\26\363\230\0\0\0\377\5\12"
00372   "\27\12\377\33\77\33\377\0\0\0""7\0\0\0\21\0\0\0\2\235\0\0\0\0\7\0\0\0"
00373   "\1\0\0\0\10\0\0\0\33\0\0\0.\0\0\0""8\0\0\0;\0\0\0<\223\0\0\0=\11\0\0"
00374   "\0>\0\0\0@\0\0\0D\0\0\0F\0\0\0G\0\0\0B\0\0\0+\0\0\0\14\0\0\0\1\236\0"
00375   "\0\0\0\5\0\0\0\3\0\0\0\12\0\0\0\20\0\0\0\23\0\0\0\24\223\0\0\0\26\12"
00376   "\0\0\0\27\0\0\0\31\0\0\0\34\0\0\0!\0\0\0&\0\0\0'\0\0\0$\0\0\0\26\0\0"
00377   "\0\7\0\0\0\1\236\0\0\0\0\1\0\0\0\1\227\0\0\0\2\11\0\0\0\3\0\0\0\4\0\0"
00378   "\0\6\0\0\0\10\0\0\0\12\3173\27\367\307+\23\364\0\0\0\27\0\0\0\5\272\0"
00379   "\0\0\0\12\0\0\0\1\3173\27\367\332=\34\377\331<\33\377\271'\21\343\0\0"
00380   "\0\34\0\0\0\3\302&\21\377\0\0\0\16\0\0\0\3\266\0\0\0\0\12\3173\27\344"
00381   "\332=\34\377\331<\33\377\330:\33\377\3248\31\376\263\40\16\350\302(\22"
00382   "\353\3140\26\377\0\0\0I\0\0\0\21\265\0\0\0\0\13\3204\27\360\332=\34\377"
00383   "\330<\33\377\327;\32\377\3269\32\377\3248\32\377\3237\31\377\3226\30"
00384   "\377\3130\25\377\0\0\0e\0\0\0\25\264\0\0\0\0\14\3204\30\352\332=\34\377"
00385   "\331<\33\377\327;\33\377\3269\32\377\3258\32\377\3236\31\377\3226\30"
00386   "\377\3215\30\377\312/\25\377\0\0\0j\0\0\0\25\264\0\0\0\0\14\307,\23\377"
00387   "\331<\33\377\330;\33\377\3269\32\377\3258\32\377\3237\31\377\3226\31"
00388   "\377\3214\30\377\3173\27\377\311.\25\377\0\0\0j\0\0\0\25\264\0\0\0\0"
00389   "\14\0\0\0\21\273(\21\352\3248\31\377\3248\32\377\3237\31\377\3226\31"
00390   "\377\3204\30\377\3173\27\377\3162\27\377\310-\24\377\0\0\0j\0\0\0\25"
00391   "\264\0\0\0\0\14\0\0\0\3\0\0\0\35\264\40\16\352\3236\31\377\3226\30\377"
00392   "\3215\30\377\3173\30\377\3162\27\377\3151\26\377\307,\23\377\0\0\0j\0"
00393   "\0\0\25\265\0\0\0\0\13\0\0\0\3\302(\22\353\3226\31\377\3214\30\377\317"
00394   "3\27\377\3161\27\377\3151\26\377\3140\25\377\306+\23\377\0\0\0j\0\0\0"
00395   "\25\265\0\0\0\0\13\303'\22\367\3141\26\377\313/\26\377\312.\25\377\311"
00396   ".\25\377\310-\24\377\307,\23\377\306+\23\377\302&\21\377\0\0\0j\0\0\0"
00397   "\25\265\0\0\0\0\3\0\0\0\15\0\0\0G\0\0\0d\202\0\0\0i\204\0\0\0j\2\0\0"
00398   "\0Y\0\0\0\22\265\0\0\0\0\6\0\0\0\3\0\0\0\20\0\0\0\25\0\0\0\30\0\0\0\36"
00399   "\0\0\0!\202\0\0\0#\6\0\0\0\"\0\0\0\34\0\0\0\14\0\0\0\6\0\0\0\4\0\0\0"
00400   "\3\225\0\0\0\2\1\0\0\0\1\236\0\0\0\0\14\0\0\0\3\0\0\0\20\0\0\0'\0\0\0"
00401   "7\0\0\0:\0\0\0;\0\0\0""9\0\0\0""3\0\0\0*\0\0\0!\0\0\0\32\0\0\0\27\221"
00402   "\0\0\0\26\5\0\0\0\24\0\0\0\22\0\0\0\20\0\0\0\12\0\0\0\3\236\0\0\0\0\14"
00403   "\0\0\0\5\0\0\0\32\0\0\0C\0\0\0\\\0\0\0_\0\0\0^\0\0\0]\0\0\0W\0\0\0N\0"
00404   "\0\0F\0\0\0@\0\0\0>\220\0\0\0=\7\0\0\0<\0\0\0;\0\0\0""8\0\0\0.\0\0\0"
00405   "\32\0\0\0\10\0\0\0\1\235\0\0\0\0\5\0\0\0\4\0\0\0\31\0\0\0D\0\0\0\272"
00406   "\0\0\0\344\230\0\0\0\377\6\0\0\0\342\0\0\0\266\0\0\0D\0\0\0&\0\0\0\12"
00407   "\0\0\0\1\235\0\0\0\0\6\0\0\0\3\0\0\0\27\0\0\0>\0\0\0\343nnn\262\276\276"
00408   "\276\222\226\377\377\377\177\7\276\276\276\222nnn\262\0\0\0\342\0\0\0"
00409   "I\0\0\0+\0\0\0\13\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\26\0\0\0<\0\0\0"
00410   "\377\276\276\276\222\230\377\377\377\177\6\276\276\276\222\0\0\0\377"
00411   "\0\0\0K\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0"
00412   "=\0\0\0\377\226\377\377\377\177\2\366\370\367\202\272\317\305\230\202"
00413   "\246\302\265\241\5\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0"
00414   "\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\222\262\267\375\257\15\257\265"
00415   "\372\260y\223\301\317U{\242\353Iq\233\367En\232\374Cl\232\377Eo\234\377"
00416   "Fo\235\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0"
00417   "\0\2\0\0\0\26\0\0\0=\0\0\0\377\220\226\235\374\313\17\201\220\342\327"
00418   "h\202\307\347Us\272\367Om\271\377Rp\276\377Wt\302\377Yw\304\377Zx\305"
00419   "\377Yx\304\377Xy\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235"
00420   "\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\216\226\235\374\313\21\177"
00421   "\220\340\327Wu\272\365Om\271\377Qo\274\377Ur\300\377Zv\305\377]y\307"
00422   "\377[y\306\377[y\305\377Zy\305\377Zy\304\377Xx\303\377\0\0\0\377\0\0"
00423   "\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0"
00424   "\0\377\215\226\235\374\313\6`|\300\355Nm\271\376Ro\274\377[v\305\377"
00425   "_y\311\377^y\310\377\202]y\307\377\12[y\306\377[y\305\377Zy\305\377Z"
00426   "x\304\377Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0"
00427   "\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\214\226\235\374\313\4Vt\272"
00428   "\367Om\271\377Xt\303\377`y\312\377\202_y\311\377\2^y\310\377]y\310\377"
00429   "\202\\y\307\377\11[y\305\377Zy\305\377Yx\304\377Xx\303\377\0\0\0\377"
00430   "\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0"
00431   "=\0\0\0\377\213\226\235\374\313\5Rq\271\372Om\271\377]v\310\377ay\313"
00432   "\377`y\313\377\202_y\311\377\15^y\310\377]y\310\377]y\307\377[y\306\377"
00433   "[y\305\377Zy\305\377Yy\304\377Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0"
00434   "\0\14\0\0\0\1\235\0\0\0\0\3\0\0\0\2\0\0\0\26\0\0\0=\234\0\0\0\377\4\0"
00435   "\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0"
00436   "\0\0\377\211\226\235\374\313\202Om\271\377\2cz\315\377by\314\377\202"
00437   "ay\313\377\1`y\312\377\202_y\311\377\15^y\310\377]y\310\377]y\307\377"
00438   "[y\307\377[y\305\377Zy\305\377Yx\304\377Xx\303\377\0\0\0\377\0\0\0L\0"
00439   "\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377"
00440   "\210\226\235\374\313\202Om\271\377\6cz\316\377cz\315\377bz\314\377az"
00441   "\313\377ay\313\377`y\312\377\202_y\311\377\1^y\310\377\202]y\307\377"
00442   "\12[y\307\377[y\305\377Zy\305\377Zy\304\377Xx\303\377\0\0\0\377\0\0\0"
00443   "L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0"
00444   "\377\207\226\235\374\313\202Om\271\377\4ez\316\377dz\316\377cz\315\377"
00445   "by\314\377\202ay\313\377\1`y\313\377\202_y\311\377\1^y\310\377\202]y"
00446   "\307\377\12[y\307\377[y\305\377Zy\305\377Zx\304\377Xx\303\377\0\0\0\377"
00447   "\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0"
00448   "=\0\0\0\377\206\226\235\374\313\202Om\271\377\5fz\320\377ez\316\377d"
00449   "z\316\377cz\315\377cz\314\377\202ay\313\377\1`y\312\377\202_y\311\377"
00450   "\1^y\310\377\202]y\307\377\12[y\307\377[y\305\377Zx\305\377Yy\304\377"
00451   "Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\4\0\0"
00452   "\0\2\0\0\0\26\0\0\0=\0\0\0\377\205\226\235\374\313\202Om\271\377\202"
00453   "fz\320\377\7ez\316\377cz\316\377cz\315\377bz\315\377az\313\377ay\313"
00454   "\377`y\312\377\202_y\311\377\1^y\310\377\202]y\307\377\12[y\306\377["
00455   "y\305\377Zy\305\377Yy\304\377Xx\303\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0"
00456   "\14\0\0\0\1\235\0\0\0\0\4\0\0\0\2\0\0\0\26\0\0\0=\0\0\0\377\204\226\235"
00457   "\374\313\202Om\271\377\1g{\321\377\202fz\320\377\4ez\316\377cz\316\377"
00458   "cy\315\377by\315\377\202ay\313\377\1`y\313\377\202_y\311\377\15^y\310"
00459   "\377]y\310\377]y\307\377[y\307\377[y\305\377Zy\305\377Yx\304\377Xx\303"
00460   "\377\0\0\0\377\0\0\0L\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0"
00461   "\0\0\26\0\0\0<\0\0\0\377{\201\317\323\202\226\235\374\313\202Om\271\377"
00462   "\13h{\321\377gz\320\377fz\320\377fz\317\377ez\316\377dz\316\377cz\315"
00463   "\377bz\315\377ay\313\377az\313\377`y\313\377\202_y\311\377\15^y\310\377"
00464   "]y\310\377\\y\307\377[y\307\377[y\305\377Zy\305\377Yy\304\377Kf\246\377"
00465   "\0\0\0\377\0\0\0K\0\0\0,\0\0\0\14\0\0\0\1\235\0\0\0\0\6\0\0\0\2\0\0\0"
00466   "\24\0\0\0:\12\13\26\363RV\212\340{\201\317\323\202Om\271\377\14h{\322"
00467   "\377h{\321\377gz\320\377fz\320\377fz\317\377ez\316\377cz\316\377cz\315"
00468   "\377by\315\377az\313\377ay\313\377`y\312\377\202_y\311\377\1^y\310\377"
00469   "\202]y\307\377\12[y\306\377[y\305\377Zy\305\377Lf\247\3775Hu\377\14\21"
00470   "\34\377\0\0\0J\0\0\0+\0\0\0\14\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\22"
00471   "\0\0\0""8\36\40B\341\12\12\26\363\230\0\0\0\377\6\14\21\34\377\"/L\377"
00472   "\0\0\0H\0\0\0(\0\0\0\13\0\0\0\1\235\0\0\0\0\6\0\0\0\2\0\0\0\20\0\0\0"
00473   ".\0\0\0D\0\0\0I\0\0\0K\226\0\0\0L\7\0\0\0K\0\0\0J\0\0\0I\0\0\0;\0\0\0"
00474   "\37\0\0\0\10\0\0\0\1\235\0\0\0\0\5\0\0\0\2\0\0\0\12\0\0\0\32\0\0\0&\0"
00475   "\0\0*\230\0\0\0,\5\0\0\0*\0\0\0(\0\0\0\36\0\0\0\17\0\0\0\4\236\0\0\0"
00476   "\0\5\0\0\0\1\0\0\0\3\0\0\0\10\0\0\0\12\0\0\0\13\230\0\0\0\14\202\0\0"
00477   "\0\13\3\0\0\0\10\0\0\0\4\0\0\0\1\243\0\0\0\0\230\0\0\0\1\206\0\0\0\0"};
00478 
00479 
00480 
00481   return local_pixstream;
00482 }
00483 
00484 /*-------- end ../sfi/sfidl generated code --------*/
00485 
00486 
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines