You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
(67) |
Apr
(455) |
May
(202) |
Jun
(136) |
Jul
(203) |
Aug
(60) |
Sep
(88) |
Oct
(64) |
Nov
(56) |
Dec
(78) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(271) |
Feb
(207) |
Mar
|
Apr
|
May
(167) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Foster B. <fos...@us...> - 2006-01-24 19:39:32
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/mac In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/future/widgets/headers/mac Modified Files: ui_core_implementation.hpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: ui_core_implementation.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/mac/ui_core_implementation.hpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ui_core_implementation.hpp 6 Jan 2006 18:02:58 -0000 1.6 --- ui_core_implementation.hpp 24 Jan 2006 19:38:46 -0000 1.7 *************** *** 217,220 **** --- 217,226 ---- return result; } + + /// If this extractor hasn't been setup yet then this function returns + /// true, otherwise it returns false. + /// \return does this extractor have metrics available. + bool empty() const { return dictionary_m.empty(); } + private: dictionary_t dictionary_m; *************** *** 644,647 **** --- 650,654 ---- void initialize(const Rect& bounds, const std::string& name); virtual extents_t best_bounds(); + void set_bounds(const point_2d_t& position, const extents_t& extents); void set_active(bool active); virtual void set_theme(theme_t theme); |
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/gil/core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/gil/core Modified Files: algorithm.hpp channel.hpp gil_concept.hpp image.hpp metafunctions.hpp pixel_iterator.hpp typedefs.hpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: image.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/gil/core/image.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** image.hpp 9 Jan 2006 19:37:55 -0000 1.1 --- image.hpp 24 Jan 2006 19:38:49 -0000 1.2 *************** *** 62,66 **** template <typename LOC> // Models 2D Pixel Locator class image_view { ! GIL_CLASS_REQUIRE(LOC, GIL, XYLocatorConcept); public: --- 62,66 ---- template <typename LOC> // Models 2D Pixel Locator class image_view { ! GIL_CLASS_REQUIRE(LOC, GIL, PixelLocatorConcept); public: *************** *** 365,392 **** ///@{ ! /// \name get_num_channels ! /// \brief Returns the number of channels of an image view /// \ingroup ImageView ! template <typename LOC> ! int get_num_channels(const image_view<LOC>& view) { ! return image_view<LOC>::color_space_type::num_channels; ! } ! template <typename C_S> int get_num_channels(const variant<C_S>& img_view) { return img_view.apply_visitor(detail::any_image_view_get_num_channels()); } - ///@} - - ///@{ - /// \name get_width, get_height, get_dimensions - /// \brief Returns the dimensions of an image view - - /// \ingroup ImageView - /// \brief Returns the width of a templated image view - template <typename LOC> - int get_width(const image_view<LOC>& view) { return view.width(); } /// \brief Returns the width of any image view --- 365,378 ---- ///@{ ! /// \name get_width, get_height, get_dimensions, get_num_channels ! /// \brief Returns the dimensions of an image view variant /// \ingroup ImageView ! /// \brief Returns the number of channels of an image view template <typename C_S> int get_num_channels(const variant<C_S>& img_view) { return img_view.apply_visitor(detail::any_image_view_get_num_channels()); } /// \brief Returns the width of any image view *************** *** 396,403 **** } - /// \brief Returns the height of a templated image view - template <typename LOC> - int get_height(const image_view<LOC>& view) { return view.width(); } - /// \brief Returns the height of any image view template <typename C_S> --- 382,385 ---- *************** *** 406,413 **** } - /// \brief Returns the dimensions of a templated image view - template <typename LOC> - point2<int> get_dimensions(const image_view<LOC>& view) { return view.dimensions(); } - /// \brief Returns the dimensions of any image view template <typename C_S> --- 388,391 ---- Index: algorithm.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/gil/core/algorithm.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** algorithm.hpp 9 Jan 2006 19:37:55 -0000 1.1 --- algorithm.hpp 24 Jan 2006 19:38:49 -0000 1.2 *************** *** 75,82 **** /// Source range is delimited by image iterators /// \ingroup Algorithms ! template <typename IL, typename O> // IL Models ConstXYLocatorConcept, O Models PixelIteratorConcept struct copier_n<GIL::pixel_image_iterator<IL>,O> { void operator()(GIL::pixel_image_iterator<IL> src, ptrdiff_t n, O dst) const { ! GIL::gil_function_requires<GIL::XYLocatorConcept<IL> >(); GIL::gil_function_requires<GIL::MutablePixelIteratorConcept<O> >(); while (n>0) { --- 75,82 ---- /// Source range is delimited by image iterators /// \ingroup Algorithms ! template <typename IL, typename O> // IL Models ConstPixelLocatorConcept, O Models PixelIteratorConcept struct copier_n<GIL::pixel_image_iterator<IL>,O> { void operator()(GIL::pixel_image_iterator<IL> src, ptrdiff_t n, O dst) const { ! GIL::gil_function_requires<GIL::PixelLocatorConcept<IL> >(); GIL::gil_function_requires<GIL::MutablePixelIteratorConcept<O> >(); while (n>0) { *************** *** 92,100 **** /// Destination range is delimited by image iterators /// \ingroup Algorithms ! template <typename I, typename OL> // I Models ConstPixelIteratorConcept, OL Models XYLocatorConcept struct copier_n<I,GIL::pixel_image_iterator<OL> > { void operator()(I src, ptrdiff_t n, GIL::pixel_image_iterator<OL> dst) const { GIL::gil_function_requires<GIL::PixelIteratorConcept<I> >(); ! GIL::gil_function_requires<GIL::MutableXYLocatorConcept<OL> >(); while (n>0) { ptrdiff_t numToCopy=std::min<const ptrdiff_t>(n,dst.width()-dst.x()); --- 92,100 ---- /// Destination range is delimited by image iterators /// \ingroup Algorithms ! template <typename I, typename OL> // I Models ConstPixelIteratorConcept, OL Models PixelLocatorConcept struct copier_n<I,GIL::pixel_image_iterator<OL> > { void operator()(I src, ptrdiff_t n, GIL::pixel_image_iterator<OL> dst) const { GIL::gil_function_requires<GIL::PixelIteratorConcept<I> >(); ! GIL::gil_function_requires<GIL::MutablePixelLocatorConcept<OL> >(); while (n>0) { ptrdiff_t numToCopy=std::min<const ptrdiff_t>(n,dst.width()-dst.x()); *************** *** 112,117 **** struct copier_n<GIL::pixel_image_iterator<IL>,GIL::pixel_image_iterator<OL> > { void operator()(GIL::pixel_image_iterator<IL> src, ptrdiff_t n, GIL::pixel_image_iterator<OL> dst) const { ! GIL::gil_function_requires<GIL::XYLocatorConcept<IL> >(); ! GIL::gil_function_requires<GIL::MutableXYLocatorConcept<OL> >(); if (src.x()!=dst.x() || src.width()!=dst.width()) { while(n-->0) { --- 112,117 ---- struct copier_n<GIL::pixel_image_iterator<IL>,GIL::pixel_image_iterator<OL> > { void operator()(GIL::pixel_image_iterator<IL> src, ptrdiff_t n, GIL::pixel_image_iterator<OL> dst) const { ! GIL::gil_function_requires<GIL::PixelLocatorConcept<IL> >(); ! GIL::gil_function_requires<GIL::MutablePixelLocatorConcept<OL> >(); if (src.x()!=dst.x() || src.width()!=dst.width()) { while(n-->0) { *************** *** 144,149 **** template <typename IL, typename OL> inline GIL::pixel_image_iterator<OL> copy(GIL::pixel_image_iterator<IL> first, GIL::pixel_image_iterator<IL> last, GIL::pixel_image_iterator<OL> dst) { ! GIL::gil_function_requires<GIL::XYLocatorConcept<IL> >(); ! GIL::gil_function_requires<GIL::MutableXYLocatorConcept<OL> >(); ptrdiff_t n=last-first; if (first.is_contiguous()) { --- 144,149 ---- template <typename IL, typename OL> inline GIL::pixel_image_iterator<OL> copy(GIL::pixel_image_iterator<IL> first, GIL::pixel_image_iterator<IL> last, GIL::pixel_image_iterator<OL> dst) { ! GIL::gil_function_requires<GIL::PixelLocatorConcept<IL> >(); ! GIL::gil_function_requires<GIL::MutablePixelLocatorConcept<OL> >(); ptrdiff_t n=last-first; if (first.is_contiguous()) { *************** *** 170,174 **** template <typename IL, typename V> void fill(GIL::pixel_image_iterator<IL> first, GIL::pixel_image_iterator<IL> last, const V& val) { ! GIL::gil_function_requires<GIL::MutableXYLocatorConcept<IL> >(); if (first.is_contiguous()) { std::fill(first.x_it(), last.x_it(), val); --- 170,174 ---- template <typename IL, typename V> void fill(GIL::pixel_image_iterator<IL> first, GIL::pixel_image_iterator<IL> last, const V& val) { ! GIL::gil_function_requires<GIL::MutablePixelLocatorConcept<IL> >(); if (first.is_contiguous()) { std::fill(first.x_it(), last.x_it(), val); Index: gil_concept.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/gil/core/gil_concept.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** gil_concept.hpp 9 Jan 2006 19:37:55 -0000 1.1 --- gil_concept.hpp 24 Jan 2006 19:38:49 -0000 1.2 *************** *** 184,188 **** typedef typename channel_traits<T>::const_pointer cp; channel_multiply(c,c); - channel_interpolate(c,c,c); // this one is defined for all defining channel_traits<T>::max(), but it uses operator-. So either define operator- or channel_invert --- 184,187 ---- *************** *** 237,241 **** /// \ingroup ChannelConcept template <typename SRC_T, typename DST_T> ! struct ChannelsConvertibleConcept { void constraints() { gil_function_requires<ChannelConcept<SRC_T> >(); --- 236,240 ---- /// \ingroup ChannelConcept template <typename SRC_T, typename DST_T> ! struct ChannelConvertibleConcept { void constraints() { gil_function_requires<ChannelConcept<SRC_T> >(); *************** *** 328,336 **** /// \ingroup PixelConcept template <typename SRC_P, typename DST_P> ! struct PixelsConvertibleConcept { void constraints() { gil_function_requires<PixelConcept<SRC_P> >(); gil_function_requires<MutablePixelConcept<DST_P> >(); ! gil_function_requires<ChannelsConvertibleConcept<typename SRC_P::channel_type, typename DST_P::channel_type> >(); color_convert(src,dst); } --- 327,335 ---- /// \ingroup PixelConcept template <typename SRC_P, typename DST_P> ! struct PixelConvertibleConcept { void constraints() { gil_function_requires<PixelConcept<SRC_P> >(); gil_function_requires<MutablePixelConcept<DST_P> >(); ! gil_function_requires<ChannelConvertibleConcept<typename SRC_P::channel_type, typename DST_P::channel_type> >(); color_convert(src,dst); } *************** *** 360,366 **** gil_function_requires<ChannelConcept<channel_type> >(); - typedef typename std::iterator_traits<IT>::const_channel_type const_channel_type; - gil_function_requires<ChannelConcept<const_channel_type> >(); - typedef typename std::iterator_traits<IT>::color_space_type color_space_type; gil_function_requires<ColorSpaceTypeConcept<color_space_type> >(); --- 359,362 ---- *************** *** 462,466 **** /// \brief GIL's pixel step iterator concept /// ! /// GIL's pixel step iterators additionally require that they are iterator adaptors and are byte advancable /// \ingroup StepIteratorConcept template <typename IT> struct PixelIteratorAdaptorConcept; --- 458,462 ---- /// \brief GIL's pixel step iterator concept /// ! /// GIL's pixel step iterators additionally require that they are iterator adaptors and are byte advanceable /// \ingroup StepIteratorConcept template <typename IT> struct PixelIteratorAdaptorConcept; *************** *** 473,477 **** gil_function_requires<PixelIteratorAdaptorConcept<IT> >(); ! // Must be byte advancable gil_function_requires<detail::RandomAccessIteratorIsByteAdvancableConcept<IT> >(); --- 469,473 ---- gil_function_requires<PixelIteratorAdaptorConcept<IT> >(); ! // Must be byte advanceable gil_function_requires<detail::RandomAccessIteratorIsByteAdvancableConcept<IT> >(); *************** *** 652,659 **** }; ! /// \ingroup XYLocatorConcept /// \brief GIL's 2-dimensional locator over immutable GIL pixels template <typename LOC> ! struct XYLocatorConcept { void constraints() { gil_function_requires< RandomAccess2DLocatorConcept<LOC> >(); --- 648,655 ---- }; ! /// \ingroup PixelLocatorConcept /// \brief GIL's 2-dimensional locator over immutable GIL pixels template <typename LOC> ! struct PixelLocatorConcept { void constraints() { gil_function_requires< RandomAccess2DLocatorConcept<LOC> >(); *************** *** 725,734 **** }; ! /// \ingroup XYLocatorConcept /// \brief GIL's 2-dimensional locator over mutable GIL pixels template <typename LOC> ! struct MutableXYLocatorConcept { void constraints() { ! gil_function_requires<XYLocatorConcept<LOC> >(); gil_function_requires<detail::RandomAccess2DLocatorIsMutableConcept<LOC> >(); } --- 721,730 ---- }; ! /// \ingroup PixelLocatorConcept /// \brief GIL's 2-dimensional locator over mutable GIL pixels template <typename LOC> ! struct MutablePixelLocatorConcept { void constraints() { ! gil_function_requires<PixelLocatorConcept<LOC> >(); gil_function_requires<detail::RandomAccess2DLocatorIsMutableConcept<LOC> >(); } *************** *** 859,863 **** // TODO: This executes the requirements for RandomAccess2DLocatorConcept again. Fix it to improve compile time ! gil_function_requires<XYLocatorConcept<typename VIEW::xy_locator> >(); BOOST_STATIC_ASSERT((boost::is_same<typename VIEW::x_coord_type, typename VIEW::y_coord_type>::value)); --- 855,859 ---- // TODO: This executes the requirements for RandomAccess2DLocatorConcept again. Fix it to improve compile time ! gil_function_requires<PixelLocatorConcept<typename VIEW::xy_locator> >(); BOOST_STATIC_ASSERT((boost::is_same<typename VIEW::x_coord_type, typename VIEW::y_coord_type>::value)); Index: metafunctions.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/gil/core/metafunctions.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** metafunctions.hpp 9 Jan 2006 19:37:55 -0000 1.1 --- metafunctions.hpp 24 Jan 2006 19:38:49 -0000 1.2 *************** *** 153,160 **** /// @} - - #define REMOVE_CONST_AND_REFERENCE(T) typename boost::remove_const<typename boost::remove_reference<T>::type>::type - - ADOBE_GIL_NAMESPACE_END --- 153,156 ---- Index: pixel_iterator.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/gil/core/pixel_iterator.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** pixel_iterator.hpp 9 Jan 2006 19:37:55 -0000 1.1 --- pixel_iterator.hpp 24 Jan 2006 19:38:49 -0000 1.2 *************** *** 288,292 **** /// \ingroup Iterators /// ! /// MODELS: XYLocatorConcept /// /// The class takes a step iterator as a parameter. The step iterator provides navigation along the vertical axis --- 288,292 ---- /// \ingroup Iterators /// ! /// MODELS: PixelLocatorConcept /// /// The class takes a step iterator as a parameter. The step iterator provides navigation along the vertical axis *************** *** 352,356 **** typedef typename point_type::template axis<1>::coord_type y_coord_type; ! // typedefs required by XYLocatorConcept typedef pixel_xy_locator<typename std::iterator_traits<S_IT>::dynamic_step_base_type> dynamic_step_type; typedef typename std::iterator_traits<X_IT>::channel_type channel_type; --- 352,356 ---- typedef typename point_type::template axis<1>::coord_type y_coord_type; ! // typedefs required by PixelLocatorConcept typedef pixel_xy_locator<typename std::iterator_traits<S_IT>::dynamic_step_base_type> dynamic_step_type; typedef typename std::iterator_traits<X_IT>::channel_type channel_type; *************** *** 453,459 **** //////////////////////////////////////////////////////////////////////////////////////// ! template <typename LOC2> // Models XYLocatorConcept class pixel_image_iterator : public boost::iterator_facade<pixel_image_iterator<LOC2>,typename LOC2::value_type,boost::random_access_traversal_tag,typename LOC2::reference,typename LOC2::coord_type> { ! GIL_CLASS_REQUIRE(LOC2, GIL, XYLocatorConcept); public: typedef boost::iterator_facade<pixel_image_iterator<LOC2>,typename LOC2::value_type,boost::random_access_traversal_tag,typename LOC2::reference,typename LOC2::coord_type> parent_type; --- 453,459 ---- //////////////////////////////////////////////////////////////////////////////////////// ! template <typename LOC2> // Models PixelLocatorConcept class pixel_image_iterator : public boost::iterator_facade<pixel_image_iterator<LOC2>,typename LOC2::value_type,boost::random_access_traversal_tag,typename LOC2::reference,typename LOC2::coord_type> { ! GIL_CLASS_REQUIRE(LOC2, GIL, PixelLocatorConcept); public: typedef boost::iterator_facade<pixel_image_iterator<LOC2>,typename LOC2::value_type,boost::random_access_traversal_tag,typename LOC2::reference,typename LOC2::coord_type> parent_type; *************** *** 637,641 **** typedef T channel_type; - typedef typename boost::add_const<T>::type const_channel_type; typedef C color_space_type; // incorporates the color space, presence of alpha, and the channel sequence. Sample values: rgb_tag, bgr_tag, rgba_tag, bgra_tag, cmyk_tag, cmyka_tag BOOST_STATIC_CONSTANT(bool, is_base=true); --- 637,640 ---- *************** *** 646,650 **** template <typename T, typename C> struct iterator_traits<GIL::pixel<T,C>*> : public iterator_traits_base<T,C> { - typedef typename iterator_traits_base<T,C>::const_channel_type const_channel_type; typedef typename iterator_traits_base<T,C>::value_type value_type; typedef value_type& reference; --- 645,648 ---- *************** *** 652,656 **** typedef value_type* pointer; typedef GIL::pixel_step_iterator<GIL::pixel<T,C>*> dynamic_step_type; ! typedef GIL::pixel<const_channel_type,C>* const_type; BOOST_STATIC_CONSTANT(bool, is_planar=false); }; --- 650,654 ---- typedef value_type* pointer; typedef GIL::pixel_step_iterator<GIL::pixel<T,C>*> dynamic_step_type; ! typedef GIL::pixel<typename GIL::channel_traits<T>::const_value_type,C>* const_type; BOOST_STATIC_CONSTANT(bool, is_planar=false); }; *************** *** 659,668 **** template <typename T, typename C> struct iterator_traits<GIL::planar_ptr<T,C> > : public iterator_traits_base<T,C> { - typedef typename iterator_traits_base<T,C>::const_channel_type const_channel_type; typedef GIL::pixel<T&,C> reference; ! typedef GIL::pixel<const_channel_type&,C> const_reference; typedef GIL::planar_ptr<T,C> pointer; typedef GIL::pixel_step_iterator<GIL::planar_ptr<T,C> > dynamic_step_type; ! typedef GIL::planar_ptr<const_channel_type,C> const_type; BOOST_STATIC_CONSTANT(bool, is_planar=true); }; --- 657,665 ---- template <typename T, typename C> struct iterator_traits<GIL::planar_ptr<T,C> > : public iterator_traits_base<T,C> { typedef GIL::pixel<T&,C> reference; ! typedef GIL::pixel<typename GIL::channel_traits<T>::const_reference,C> const_reference; typedef GIL::planar_ptr<T,C> pointer; typedef GIL::pixel_step_iterator<GIL::planar_ptr<T,C> > dynamic_step_type; ! typedef GIL::planar_ptr<typename GIL::channel_traits<T>::const_value_type,C> const_type; BOOST_STATIC_CONSTANT(bool, is_planar=true); }; *************** *** 687,691 **** }; ! template <typename LOC> // Models XYLocatorConcept struct iterator_traits<GIL::pixel_image_iterator<LOC> > : public iterator_traits<typename LOC::x_iterator> { typedef GIL::pixel_image_iterator<typename LOC::dynamic_step_type> dynamic_step_type; --- 684,688 ---- }; ! template <typename LOC> // Models PixelLocatorConcept struct iterator_traits<GIL::pixel_image_iterator<LOC> > : public iterator_traits<typename LOC::x_iterator> { typedef GIL::pixel_image_iterator<typename LOC::dynamic_step_type> dynamic_step_type; Index: channel.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/gil/core/channel.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** channel.hpp 9 Jan 2006 19:37:55 -0000 1.1 --- channel.hpp 24 Jan 2006 19:38:49 -0000 1.2 *************** *** 164,191 **** /// \ingroup Channel template <typename T> ! inline T channel_invert(T x) { return channel_traits<T>::max()-x; } ///@} - - ///@{ - /// \name channel_interpolate - /// \brief Channel interpolation (generalization of Photoshop's Interp8 and Interp16) - - /// \ingroup Channel - - inline bits8 channel_interpolate( bits8 m, bits8 a, bits8 b ) { - return bits8(detail::div255((boost::uint32_t)m*b + channel_invert(m)*(boost::uint32_t)a)); - } - - inline bits16 channel_interpolate( bits16 m, bits16 a, bits16 b ) { - return bits16(detail::div32768((boost::uint32_t)m*b + channel_invert(m)*(boost::uint32_t)a)); - } - - inline bits32 channel_interpolate( bits32 m, bits32 a, bits32 b ) { - return m*b + channel_invert(m)*a; - } - ///@} - ADOBE_GIL_NAMESPACE_END --- 164,171 ---- /// \ingroup Channel template <typename T> ! inline T channel_invert(T x) { return channel_traits<T>::max()-x + channel_traits<T>::min(); } ///@} ADOBE_GIL_NAMESPACE_END Index: typedefs.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/gil/core/typedefs.hpp,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** typedefs.hpp 9 Jan 2006 19:37:55 -0000 1.1 --- typedefs.hpp 24 Jan 2006 19:38:49 -0000 1.2 *************** *** 383,404 **** typedef pixel_xy_locator<pixel_step_iterator<cmyk32_step_ptr> > cmyk32_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<gray8c_ptr> > gray8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<gray16c_ptr> > gray16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<gray32c_ptr> > gray32c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgb8c_ptr> > rgb8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgb16c_ptr> > rgb16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgb32c_ptr> > rgb32c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<bgr8c_ptr> > bgr8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<bgr16c_ptr> > bgr16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<bgr32c_ptr> > bgr32c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgba8c_ptr> > rgba8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgba16c_ptr> > rgba16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgba32c_ptr> > rgba32c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<lab8c_ptr> > lab8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<lab16c_ptr> > lab16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<lab32c_ptr> > lab32c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<cmyk8c_ptr> > cmyk8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<cmyk16c_ptr> > cmyk16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<cmyk32c_ptr> > cmyk32c_step_loc; typedef pixel_xy_locator<pixel_step_iterator<rgb8_planar_step_ptr> > rgb8_planar_step_loc; --- 383,404 ---- typedef pixel_xy_locator<pixel_step_iterator<cmyk32_step_ptr> > cmyk32_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<gray8c_step_ptr> > gray8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<gray16c_step_ptr> > gray16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<gray32c_step_ptr> > gray32c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgb8c_step_ptr> > rgb8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgb16c_step_ptr> > rgb16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgb32c_step_ptr> > rgb32c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<bgr8c_step_ptr> > bgr8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<bgr16c_step_ptr> > bgr16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<bgr32c_step_ptr> > bgr32c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgba8c_step_ptr> > rgba8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgba16c_step_ptr> > rgba16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<rgba32c_step_ptr> > rgba32c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<lab8c_step_ptr> > lab8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<lab16c_step_ptr> > lab16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<lab32c_step_ptr> > lab32c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<cmyk8c_step_ptr> > cmyk8c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<cmyk16c_step_ptr> > cmyk16c_step_loc; ! typedef pixel_xy_locator<pixel_step_iterator<cmyk32c_step_ptr> > cmyk32c_step_loc; typedef pixel_xy_locator<pixel_step_iterator<rgb8_planar_step_ptr> > rgb8_planar_step_loc; |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:29
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe Modified Files: Jamfile.v2 adam.hpp adam_parser.hpp eve_evaluate.hpp eve_parser.hpp istream.hpp Added Files: basic_sheet.hpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes --- NEW FILE: basic_sheet.hpp --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ /*************************************************************************************************/ #ifndef ADOBE_BASIC_SHEET_HPP #define ADOBE_BASIC_SHEET_HPP #include <adobe/config.hpp> #include <deque> #include <map> #include <boost/function.hpp> #include <boost/signal.hpp> #include <adobe/name.hpp> #include <adobe/value.hpp> /*************************************************************************************************/ namespace adobe { /*************************************************************************************************/ class basic_sheet_t : boost::noncopyable { public: typedef boost::signals::connection connection_t; typedef boost::function<void (const value_t&)> monitor_value_t; void add_constant(name_t, const value_t&); void add_interface(name_t, const value_t&); std::size_t count_interface(name_t) const; connection_t monitor_interface(name_t, const monitor_value_t&); void set(name_t, const value_t&); // interface cell const value_t& operator[](name_t) const; // variable lookup private: typedef boost::signal<void (const value_t&)> monitor_value_signal_t; struct cell_t { cell_t(const value_t& value) : value_m(value) { } value_t value_m; }; struct interface_cell_t : cell_t { interface_cell_t(const value_t& value) : cell_t(value) { } interface_cell_t(const interface_cell_t& x) : cell_t(x.value_m) { } interface_cell_t& operator=(const interface_cell_t& x) { value_m = x.value_m; // copying a value could throw so it goes first // monitor_m is not copied - nor can it be return *this; } monitor_value_signal_t monitor_m; }; typedef std::map<const char*, interface_cell_t*> interface_index_t; typedef std::map<const char*, const cell_t*> variable_index_t; interface_cell_t* lookup_interface(name_t); variable_index_t variable_index_m; interface_index_t interface_index_m; std::deque<cell_t> constant_cell_set_m; std::deque<interface_cell_t> interface_cell_set_m; }; /*************************************************************************************************/ } // namespace adobe /*************************************************************************************************/ #endif /*************************************************************************************************/ Index: adam_parser.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/adam_parser.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** adam_parser.hpp 6 Jan 2006 18:02:35 -0000 1.3 --- adam_parser.hpp 24 Jan 2006 19:38:43 -0000 1.4 *************** *** 53,57 **** const std::string& detailed)> add_cell_proc_t; ! typedef boost::function<void ( const line_position_t& position, const array_t& conditional, const relation_t* first, --- 53,58 ---- const std::string& detailed)> add_cell_proc_t; ! typedef boost::function<void ( bool weak, ! const line_position_t& position, const array_t& conditional, const relation_t* first, Index: eve_parser.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/eve_parser.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** eve_parser.hpp 6 Jan 2006 18:02:35 -0000 1.3 --- eve_parser.hpp 24 Jan 2006 19:38:43 -0000 1.4 *************** *** 24,35 **** /* ! Eve Grammer: ! ---------------------------------------- ! view_definition = [lead_comment] view_class_decl ((";" [trail_comment]) ! | ([trail_comment] view_statement_list). ! view_statment_sequence = { view_definition }. ! view_class_decl = ident "(" [ named_argument_list ] ")". ! view_statment_list = "{" view_statement_sequence "}". */ --- 24,48 ---- /* ! Eve Grammer: ! ---------------------------------------- ! ! layout_specifier = [lead_comment] "layout" identifier "{" { qualified_cell_decl } ! "view" view_definition "}" [trail_comment]. ! ! qualified_cell_decl = interface_set_decl | constant_set_decl. ! ! interface_set_decl = "interface" ":" { cell_decl }. ! constant_set_decl = "constant" ":" { cell_decl }. ! ! cell_decl = [lead_comment] identifier initializer end_statement. ! initializer = ":" expression. ! view_definition = [lead_comment] view_class_decl ((";" [trail_comment]) ! | ([trail_comment] view_statement_list)). ! view_statment_sequence = { view_definition }. ! view_class_decl = ident "(" [ named_argument_list ] ")". ! view_statment_list = "{" view_statement_sequence "}". ! ! end_statement = ";" [trail_comment]. */ *************** *** 37,59 **** namespace adobe { - namespace eve { /*************************************************************************************************/ ! typedef boost::any position_t; ! typedef boost::function<position_t ( const position_t& parent, ! const line_position_t& parse_location, ! adobe::name_t name, ! const adobe::array_t& parameters, ! const std::string& brief, ! const std::string& detailed)> assemble_t; ! line_position_t parse(std::istream& in, const line_position_t&, const position_t&, ! const assemble_t&); /*************************************************************************************************/ - } // namespace eve } // namespace adobe --- 50,90 ---- namespace adobe { /*************************************************************************************************/ ! struct eve_callback_suite_t ! { ! enum cell_type_t ! { ! constant_k, ! interface_k ! }; ! ! typedef boost::any position_t; ! typedef boost::function<position_t ( const position_t& parent, ! const line_position_t& parse_location, ! name_t name, ! const array_t& parameters, ! const std::string& brief, ! const std::string& detailed)> add_view_proc_t; ! ! typedef boost::function<void ( cell_type_t type, ! name_t name, ! const line_position_t& position, ! const array_t& initializer, ! const std::string& brief, ! const std::string& detailed)> add_cell_proc_t; ! ! ! add_view_proc_t add_view_proc_m; ! add_cell_proc_t add_cell_proc_m; ! }; ! line_position_t parse(std::istream& in, const line_position_t&, ! const eve_callback_suite_t::position_t&, const eve_callback_suite_t&); /*************************************************************************************************/ } // namespace adobe Index: Jamfile.v2 =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/Jamfile.v2,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** Jamfile.v2 6 Jan 2006 18:02:35 -0000 1.8 --- Jamfile.v2 24 Jan 2006 19:38:43 -0000 1.9 *************** *** 39,42 **** --- 39,43 ---- iomanip iomanip_pdf + modal_dialog_interface ; Index: eve_evaluate.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/eve_evaluate.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** eve_evaluate.hpp 6 Jan 2006 18:02:35 -0000 1.3 --- eve_evaluate.hpp 24 Jan 2006 19:38:43 -0000 1.4 *************** *** 13,31 **** #include <boost/function.hpp> ! #include <adobe/array_fwd.hpp> ! #include <adobe/dictionary.hpp> /*************************************************************************************************/ namespace adobe { - namespace eve { /*************************************************************************************************/ ! boost::function<dictionary_t (const array_t&)> evaluate_arguments(); /*************************************************************************************************/ - } // namespace eve } // namespace adobe --- 13,40 ---- #include <boost/function.hpp> ! ! #include <adobe/dictionary_fwd.hpp> ! #include <adobe/name_fwd.hpp> ! ! #include <adobe/basic_sheet.hpp> ! #include <adobe/eve_parser.hpp> ! #include <adobe/virtual_machine.hpp> /*************************************************************************************************/ namespace adobe { /*************************************************************************************************/ ! typedef boost::function< ! eve_callback_suite_t::position_t ( const eve_callback_suite_t::position_t& parent, ! name_t name, ! dictionary_t arguments)> bind_layout_proc_t; ! ! eve_callback_suite_t bind_layout(const bind_layout_proc_t& proc, basic_sheet_t& layout_sheet, ! virtual_machine_t& evaluator); /*************************************************************************************************/ } // namespace adobe Index: istream.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/istream.hpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** istream.hpp 6 Jan 2006 18:02:35 -0000 1.10 --- istream.hpp 24 Jan 2006 19:38:43 -0000 1.11 *************** *** 22,25 **** --- 22,27 ---- #include <boost/any.hpp> + #include <boost/shared_ptr.hpp> + #include <boost/function.hpp> /*************************************************************************************************/ *************** *** 39,49 **** struct line_position_t { ! typedef std::pair<adobe::name_t, boost::any> ident_pair_t; // line_number starts at 1. ! explicit line_position_t( const ident_pair_t& stream_name, ! int line_number = 1, ! std::streampos line_start = 0, ! std::streampos position = -1); // This constructor is used with __FILE__ and __LINE__, line_index starts at 0 --- 41,54 ---- struct line_position_t { ! public: ! typedef boost::function<std::string (adobe::name_t, std::streampos)> getline_proc_impl_t; ! typedef boost::shared_ptr<getline_proc_impl_t> getline_proc_t; // line_number starts at 1. ! explicit line_position_t( adobe::name_t file_path, ! getline_proc_t getline_proc, ! int line_number = 1, ! std::streampos line_start = 0, ! std::streampos position = -1); // This constructor is used with __FILE__ and __LINE__, line_index starts at 0 *************** *** 54,59 **** #endif // !defined(ADOBE_NO_DOCUMENTATION) ! const char* stream_name() const; ! boost::any stream_token() const; int line_number_m; // type int to match __LINE__ token --- 59,71 ---- #endif // !defined(ADOBE_NO_DOCUMENTATION) ! const char* line_position_t::stream_name() const ! { return file_name_m.get(); } ! ! std::string file_snippet() const ! { ! return getline_proc_m->empty() ? ! std::string() : ! (*getline_proc_m)(file_name_m, line_start_m); ! } int line_number_m; // type int to match __LINE__ token *************** *** 63,67 **** #if !defined(ADOBE_NO_DOCUMENTATION) private: ! ident_pair_t ident_pair_m; #endif // !defined(ADOBE_NO_DOCUMENTATION) }; --- 75,80 ---- #if !defined(ADOBE_NO_DOCUMENTATION) private: ! adobe::name_t file_name_m; ! getline_proc_t getline_proc_m; #endif // !defined(ADOBE_NO_DOCUMENTATION) }; *************** *** 69,72 **** --- 82,89 ---- /*************************************************************************************************/ + std::ostream& operator<<(std::ostream&, const line_position_t&); + + /*************************************************************************************************/ + class stream_error_t : public std::logic_error { *************** *** 142,159 **** template <typename I> // I models InputIterator ! bool is_line_end(I& first, I last, char c) { // Handle any type of line ending. ! if (c == '\n') return true; if (c == '\r') { ! if (first != last && *first == '\n') ++first; ! return true; } ! return false; } --- 159,181 ---- template <typename I> // I models InputIterator ! std::size_t is_line_end(I& first, I last, char c) { // Handle any type of line ending. ! if (c == '\n') return 1; if (c == '\r') { ! if (first != last && *first == '\n') ! { ! ++first; ! return 2; ! } ! ! return 1; } ! return 0; } Index: adam.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/adam.hpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** adam.hpp 6 Jan 2006 18:02:35 -0000 1.5 --- adam.hpp 24 Jan 2006 19:38:43 -0000 1.6 *************** *** 84,88 **** const line_position_t&, const array_t& expression); ! void add_relation ( const line_position_t&, const array_t& conditional, const relation_t* first, const relation_t* last); --- 84,88 ---- const line_position_t&, const array_t& expression); ! void add_relation ( bool weak, const line_position_t&, const array_t& conditional, const relation_t* first, const relation_t* last); |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:29
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/future/widgets/headers Modified Files: client_assembler.hpp display.hpp factory.hpp ui_core.hpp ui_core_common.hpp ui_overlay.hpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: ui_core_common.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/ui_core_common.hpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ui_core_common.hpp 6 Jan 2006 18:02:58 -0000 1.4 --- ui_core_common.hpp 24 Jan 2006 19:38:46 -0000 1.5 *************** *** 16,19 **** --- 16,21 ---- #include <adobe/extents.hpp> + #include <adobe/future/widgets/headers/ui_core.hpp> + /****************************************************************************************************/ *************** *** 50,53 **** --- 52,72 ---- std::string localize(const std::string& str); + // + /// \ingroup widget_lib + /// + /// Use this to specify the callback used in the case when a UI element + /// returns an error of some kind. + // + + ui_core_error_handler_proc_t& ui_core_error_handler(); + + // + /// \ingroup widget_lib + /// + /// Used to report an error through the ui_core_error_handler proc + // + + void report_ui_element_error(const std::string& error); + /****************************************************************************************************/ Index: display.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/display.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** display.hpp 6 Jan 2006 18:02:58 -0000 1.3 --- display.hpp 24 Jan 2006 19:38:46 -0000 1.4 *************** *** 54,57 **** --- 54,59 ---- /****************************************************************************************************/ + // intended to be overridden on a per-widget basis + template <typename ReturnType, typename DisplayElement> ReturnType view_for_element(DisplayElement& element); *************** *** 59,62 **** --- 61,71 ---- /****************************************************************************************************/ + // used to fetch the platform-specific UI token directly + + template <typename ReturnType, typename DisplayElement> + ReturnType unwrap_display_token(DisplayElement& element); + + /****************************************************************************************************/ + template <typename DisplayElement> display_t::position_t insert(display_t& display, display_t::position_t& parent, DisplayElement& element); Index: client_assembler.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/client_assembler.hpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** client_assembler.hpp 6 Jan 2006 18:02:58 -0000 1.7 --- client_assembler.hpp 24 Jan 2006 19:38:46 -0000 1.8 *************** *** 17,24 **** --- 17,27 ---- #include <adobe/future/assemblage.hpp> #include <adobe/adam.hpp> + #include <adobe/basic_sheet.hpp> #include <adobe/dictionary.hpp> #include <adobe/eve.hpp> #include <adobe/istream.hpp> + #include <adobe/future/widgets/headers/display.hpp> + #include <adobe/future/memory.hpp> *************** *** 26,29 **** --- 29,33 ---- #include <list> + #include <vector> /****************************************************************************************************/ *************** *** 78,82 **** */ ! class eve_client_holder; // /// The window_server_t class can open Eve definitions from file and --- 82,87 ---- */ ! struct eve_client_holder; ! // /// The window_server_t class can open Eve definitions from file and *************** *** 126,130 **** /// \param data an std::istream open on the Eve /// definition to be loaded. ! /// \param ident_pair identification name and token /// that represents the data stream /// \param dialog_size the size of the dialog to create, --- 131,135 ---- /// \param data an std::istream open on the Eve /// definition to be loaded. ! /// \param ident_pair identification name and callback proc (two parameters) /// that represents the data stream /// \param dialog_size the size of the dialog to create, *************** *** 133,137 **** /// definition. // ! void push_back(std::istream& data, const adobe::line_position_t::ident_pair_t& ident_pair, size_enum_t dialog_size); #if 0 --- 138,142 ---- /// definition. // ! void push_back(std::istream& data, adobe::name_t file_path, const adobe::line_position_t::getline_proc_t& getline_proc, size_enum_t dialog_size); #if 0 *************** *** 220,226 **** /*************************************************************************************************/ ! class eve_client_holder : public boost::noncopyable { - public: /* NOTE (sparent) : Order is important here - we want to destruct window_m prior to destructing --- 225,241 ---- /*************************************************************************************************/ ! /* ! REVISIT (sparent) : As a current "hack" for handling the drawing order of widgets when optional ! panels come and go we are going to define a vector of items which need to be shown or hidden ! and the window will handle the logic. Still need to figure out the right place to put this. ! */ ! ! typedef std::pair<bool, adobe::panel_t*> visible_change_request_t; ! typedef std::vector<visible_change_request_t> visible_change_queue_t; ! ! /*************************************************************************************************/ ! ! struct eve_client_holder : public boost::noncopyable { /* NOTE (sparent) : Order is important here - we want to destruct window_m prior to destructing *************** *** 229,252 **** there yet. */ ! adobe::eve_t* eve_m; ! serialize_signal_t widget_stream_m; adobe::assemblage_t assemblage_m; std::pair<adobe::dictionary_t, adobe::array_t> contributing_m; show_window_signal_t show_window_m; - adobe::ui_overlay_t overlay_m; - bool window_dirty_m; ! private: ! friend adobe::auto_ptr<eve_client_holder> make_view(const adobe::line_position_t::ident_pair_t& stream_ident, ! std::istream& stream, ! adobe::sheet_t& sheet, ! const button_notifier_t& notifier, ! size_enum_t dialog_size, ! adobe::widget_factory_proc_t factory); }; /*************************************************************************************************/ ! adobe::auto_ptr<eve_client_holder> make_view( const adobe::line_position_t::ident_pair_t& stream_ident, std::istream& stream, adobe::sheet_t& sheet, --- 244,311 ---- there yet. */ ! ! // ! /// The Eve engine which all of these widgets are being inserted into. This must ! /// be known by top-level windows, and by widgets which manage trees of Eve ! /// widgets (such as splitter widgets). ! // ! adobe::eve_t eve_m; ! ! // ! /// The layout sheet is a "mini" sheet used to hold the layout state. ! // ! adobe::basic_sheet_t layout_sheet_m; ! ! // ! /// This is the assemblage which widget factories register the created widget ! /// (or wrapping structure) with, such that the widget gets deleted when the ! /// assemblage does. ! // adobe::assemblage_t assemblage_m; + + // + /// A set for the contributing factors to the sheet (not the layout sheet) + // std::pair<adobe::dictionary_t, adobe::array_t> contributing_m; + + // + /// Top-level widgets (windows, dialogs, etc) need to be told to show themselves + /// when all of the child widgets have been created and inserted. This signal + /// is issued when the top-level window needs to be shown -- so any factory function + /// which creates a window needs to connect to this signal. + // show_window_signal_t show_window_m; ! // ! /// REVISIT (sparent) : We really need a generalized mechanism for defereing an action - ! /// a command queue of sorts - which collapses so things don't get done twince. We hack it here. ! // ! visible_change_queue_t visible_change_queue_m; ! ! // ! /// Display token for the root item in the view ! // ! adobe::display_t::position_t root_display_m; ! ! #ifndef NDEBUG ! // ! /// This is the signal which should trigger widget serialization. All widgets ! /// should bind to this signal. ! // ! serialize_signal_t widget_stream_m; ! ! // ! /// Top-level widgets (windows, dialogs, etc) can provide debugging functionality ! /// which involves drawing tick marks around the Eve-specified extents of a widget. ! /// This is handled through an overlay class, which is passed here for binding ! // ! adobe::ui_overlay_t overlay_m; ! #endif }; /*************************************************************************************************/ ! adobe::auto_ptr<eve_client_holder> make_view( adobe::name_t file_name, ! const adobe::line_position_t::getline_proc_t& getline_proc, std::istream& stream, adobe::sheet_t& sheet, *************** *** 376,382 **** utility_widget_place( place_func_t placer, const adobe::eve_t::calculate_data_t& calc, ! const adobe::eve_t::place_data_t& data, ! adobe::ui_overlay_t& overlay, ! adobe::ui_overlay_t::position_t node); /*************************************************************************************************/ --- 435,444 ---- utility_widget_place( place_func_t placer, const adobe::eve_t::calculate_data_t& calc, ! const adobe::eve_t::place_data_t& data ! #ifndef NDEBUG ! , adobe::ui_overlay_t& overlay, ! adobe::ui_overlay_t::position_t node ! #endif ! ); /*************************************************************************************************/ Index: factory.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/factory.hpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** factory.hpp 6 Jan 2006 18:02:58 -0000 1.4 --- factory.hpp 24 Jan 2006 19:38:46 -0000 1.5 *************** *** 5,14 **** */ ! /****************************************************************************************************/ #ifndef ADOBE_UI_CORE_FACTORY_HPP #define ADOBE_UI_CORE_FACTORY_HPP ! /****************************************************************************************************/ #include <adobe/config.hpp> --- 5,14 ---- */ ! /*************************************************************************************************/ #ifndef ADOBE_UI_CORE_FACTORY_HPP #define ADOBE_UI_CORE_FACTORY_HPP ! /*************************************************************************************************/ #include <adobe/config.hpp> *************** *** 22,26 **** #include <adobe/eve_parser.hpp> ! /****************************************************************************************************/ // /// This file defines the factory functions which are used to create widgets specified by --- 22,26 ---- #include <adobe/eve_parser.hpp> ! /*************************************************************************************************/ // /// This file defines the factory functions which are used to create widgets specified by *************** *** 37,45 **** /// in the factory token to be destroyed when the assemblage is destroyed. // ! /****************************************************************************************************/ namespace adobe { ! /****************************************************************************************************/ // /// This structure is given to all factory functions, so that they can correctly create --- 37,79 ---- /// in the factory token to be destroyed when the assemblage is destroyed. // ! /*************************************************************************************************/ namespace adobe { ! namespace implementation { ! ! inline void update_display_queue(eve_client::visible_change_queue_t* queue, eve_t* layout) ! { ! if (!queue->empty()) ! { ! eve_client::visible_change_queue_t::iterator mid(adobe::partition(*queue, &eve_client::visible_change_request_t::first)); ! adobe::for_each(mid, queue->end(), boost::bind(&adobe::panel_t::set_visible, boost::bind(&eve_client::visible_change_request_t::second, _1), false)); ! layout->evaluate(adobe::eve_t::evaluate_nested); ! adobe::for_each(queue->begin(), mid, boost::bind(&adobe::panel_t::set_visible, boost::bind(&eve_client::visible_change_request_t::second, _1), true)); ! queue->clear(); ! } ! } ! ! inline void sheet_set_update(sheet_t* sheet, eve_client::visible_change_queue_t* queue, ! eve_t* layout, name_t name, const value_t value) ! { ! sheet->set(name, value); ! sheet->update(); ! ! update_display_queue(queue, layout); ! } ! ! inline void layout_sheet_set_update(basic_sheet_t* sheet, eve_client::visible_change_queue_t* queue, ! eve_t* layout, name_t name, const value_t value) ! { ! sheet->set(name, value); ! ! update_display_queue(queue, layout); ! } ! ! } // namespace implementation ! ! /*************************************************************************************************/ ! // /// This structure is given to all factory functions, so that they can correctly create *************** *** 49,94 **** struct factory_token_t { ! factory_token_t(display_t& display, ! assemblage_t& assemblage, ! eve_t& layout, ! sheet_t& sheet, ! eve_client::button_notifier_t notifier, ! eve_client::serialize_signal_t& serialize_signal, ! eve_client::show_window_signal_t& show_signal, ! ui_overlay_t& overlay, ! bool& window_dirty ) : display_m(display), - assemblage_m(assemblage), sheet_m(sheet), ! layout_m(layout), ! notifier_m(notifier), ! widget_stream_m(serialize_signal), ! show_window_signal_m(show_signal), ! overlay_m(overlay), ! window_dirty_m(window_dirty) {} // /// Created widgets should be made with respect to this display, and inserted /// into the given parent by this display. // ! display_t& display_m; ! // ! /// This is the assemblage which widget factories register the created widget ! /// (or wrapping structure) with, such that the widget gets deleted when the ! /// assemblage does. ! // ! assemblage_t& assemblage_m; // /// The current Adam sheet -- this contains all of the cells which widgets might /// want to bind against. // ! sheet_t& sheet_m; // ! /// The Eve engine which all of these widgets are being inserted into. This must ! /// be known by top-level windows, and by widgets which manage trees of Eve ! /// widgets (such as splitter widgets). // ! eve_t& layout_m; // /// The function to call when a button is pressed. This should be called by --- 83,162 ---- struct factory_token_t { ! factory_token_t(display_t& display, ! sheet_t& sheet, ! eve_client::eve_client_holder& client_holder, ! eve_client::button_notifier_t notifier ) : display_m(display), sheet_m(sheet), ! client_holder_m(client_holder), ! notifier_m(notifier) {} + + typedef sheet_t::monitor_active_t monitor_active_t; + typedef sheet_t::monitor_value_t monitor_value_t; + + /* + REVISIT (sparent) : Token is starting to look like a "binding" abstraction of some sort. + + We're going to add a bind function to the factory token to take care of the complexity + of binding to a layout_sheet or sheet. + + REVISIT (sparent) : This code also indicates problems with the current sheet interfaces: + + 1. There should be some way to build a single index for both sheets to cover the entire + scope. + 2. The set() functions may become functions which return setter objects and don't need to + do the lookup. + */ + + monitor_value_t bind(name_t name, const monitor_active_t& monitor_active, const monitor_value_t& monitor_value) const + { + if (client_holder_m.layout_sheet_m.count_interface(name)) + { + client_holder_m.assemblage_m.hold_connection(client_holder_m.layout_sheet_m.monitor_interface(name, monitor_value)); + return boost::bind( &implementation::layout_sheet_set_update, + &client_holder_m.layout_sheet_m, + &client_holder_m.visible_change_queue_m, + &client_holder_m.eve_m, name, _1); + } + + client_holder_m.assemblage_m.hold_connection(sheet_m.monitor_value(name, monitor_value)); + client_holder_m.assemblage_m.hold_connection(sheet_m.monitor_active(name, monitor_active)); + + return boost::bind( &implementation::sheet_set_update, + &sheet_m, + &client_holder_m.visible_change_queue_m, + &client_holder_m.eve_m, name, _1); + } + + void bind_in(name_t name, const monitor_value_t& monitor_value) const + { + if (client_holder_m.layout_sheet_m.count_interface(name)) + client_holder_m.assemblage_m.hold_connection(client_holder_m.layout_sheet_m.monitor_interface(name, monitor_value)); + else + client_holder_m.assemblage_m.hold_connection(sheet_m.monitor_value(name, monitor_value)); + } + // /// Created widgets should be made with respect to this display, and inserted /// into the given parent by this display. // ! display_t& display_m; ! // /// The current Adam sheet -- this contains all of the cells which widgets might /// want to bind against. // ! sheet_t& sheet_m; ! // ! /// The current eve_client_holder -- keeps all the relevant parts of a view in ! /// one location. Originally the factory token was duplication nearly every ! /// member of the client_holder as a member itself, so this cleans up factory_token ! /// quite a bit. // ! eve_client::eve_client_holder& client_holder_m; ! // /// The function to call when a button is pressed. This should be called by *************** *** 97,125 **** // eve_client::button_notifier_t notifier_m; - // - /// This is the signal which should trigger widget serialization. All widgets - /// should bind to this signal. - // - eve_client::serialize_signal_t& widget_stream_m; - // - /// Top-level widgets (windows, dialogs, etc) need to be told to show themselves - /// when all of the child widgets have been created and inserted. This signal - /// is issued when the top-level window needs to be shown -- so any factory function - /// which creates a window needs to connect to this signal. - // - eve_client::show_window_signal_t& show_window_signal_m; - // - /// Top-level widgets (windows, dialogs, etc) can provide debugging functionality - /// which involves drawing tick marks around the Eve-specified extents of a widget. - /// This is handled through an overlay class, which is passed here for binding - // - ui_overlay_t& overlay_m; - /* - REVISIT (sparent) : We really need a generalized mechanism for defereing an action - - a command queue of sorts - which colapses so things don't get done twince. We hack it here. - */ - bool& window_dirty_m; }; ! /****************************************************************************************************/ // /// This structure represents a widget registered into Eve and the display. If a widget is --- 165,171 ---- // eve_client::button_notifier_t notifier_m; }; ! ! /*************************************************************************************************/ // /// This structure represents a widget registered into Eve and the display. If a widget is *************** *** 131,140 **** widget_node_t( size_enum_t size, const eve_t::iterator& eve_token, ! const display_t::position_t& display_token, ! const ui_overlay_t::position_t& overlay_token) : size_m(size), eve_token_m(eve_token), ! display_token_m(display_token), ! overlay_token_m(overlay_token) { } // --- 177,191 ---- widget_node_t( size_enum_t size, const eve_t::iterator& eve_token, ! const display_t::position_t& display_token ! #ifndef NDEBUG ! , const ui_overlay_t::position_t& overlay_token ! #endif ! ) : size_m(size), eve_token_m(eve_token), ! display_token_m(display_token) ! #ifndef NDEBUG ! , overlay_token_m(overlay_token) ! #endif { } // *************** *** 152,155 **** --- 203,207 ---- // mutable display_t::position_t display_token_m; + #ifndef NDEBUG // /// The widget as known by the overlay. *************** *** 157,162 **** // mutable ui_overlay_t::position_t overlay_token_m; }; ! /****************************************************************************************************/ // /// This is the main factory function. It will create the named widget (if possible) --- 209,215 ---- // mutable ui_overlay_t::position_t overlay_token_m; + #endif }; ! /*************************************************************************************************/ // /// This is the main factory function. It will create the named widget (if possible) *************** *** 175,179 **** // widget_node_t default_factory(adobe::name_t name, const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a row container with the given parameters, and insert it into the --- 228,232 ---- // widget_node_t default_factory(adobe::name_t name, const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a row container with the given parameters, and insert it into the *************** *** 189,193 **** // widget_node_t row_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a column container with the given parameters, and insert it into the --- 242,246 ---- // widget_node_t row_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a column container with the given parameters, and insert it into the *************** *** 203,207 **** // widget_node_t column_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create an overlay container with the given parameters, and insert it into the --- 256,260 ---- // widget_node_t column_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create an overlay container with the given parameters, and insert it into the *************** *** 217,221 **** // widget_node_t overlay_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a dialog widget with the given parameters, and insert it into the --- 270,274 ---- // widget_node_t overlay_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a dialog widget with the given parameters, and insert it into the *************** *** 231,235 **** // widget_node_t dialog_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a palette widget with the given parameters, and insert it into the --- 284,288 ---- // widget_node_t dialog_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a palette widget with the given parameters, and insert it into the *************** *** 245,249 **** // widget_node_t palette_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a button widget with the given parameters, and insert it into the --- 298,302 ---- // widget_node_t palette_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a button widget with the given parameters, and insert it into the *************** *** 259,263 **** // widget_node_t button_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a check box widget with the given parameters, and insert it into the --- 312,316 ---- // widget_node_t button_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a check box widget with the given parameters, and insert it into the *************** *** 273,277 **** // widget_node_t checkbox_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a radio button widget with the given parameters, and insert it into the --- 326,330 ---- // widget_node_t checkbox_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a radio button widget with the given parameters, and insert it into the *************** *** 287,291 **** // widget_node_t radio_button_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a edit text widget with the given parameters, and insert it into the --- 340,344 ---- // widget_node_t radio_button_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a edit text widget with the given parameters, and insert it into the *************** *** 301,305 **** // widget_node_t edit_text_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a edit number widget with the given parameters, and insert it into the --- 354,358 ---- // widget_node_t edit_text_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a edit number widget with the given parameters, and insert it into the *************** *** 315,319 **** // widget_node_t edit_number_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a static text widget with the given parameters, and insert it into the --- 368,372 ---- // widget_node_t edit_number_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a static text widget with the given parameters, and insert it into the *************** *** 329,333 **** // widget_node_t static_text_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a popup widget with the given parameters, and insert it into the --- 382,386 ---- // widget_node_t static_text_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a popup widget with the given parameters, and insert it into the *************** *** 343,347 **** // widget_node_t popup_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ /// Create a group widget with the given parameters, and insert it into the /// given parent. --- 396,400 ---- // widget_node_t popup_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ /// Create a group widget with the given parameters, and insert it into the /// given parent. *************** *** 356,360 **** // widget_node_t group_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a slider widget with the given parameters, and insert it into the --- 409,413 ---- // widget_node_t group_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a slider widget with the given parameters, and insert it into the *************** *** 370,374 **** // widget_node_t slider_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a separator widget with the given parameters, and insert it into the --- 423,427 ---- // widget_node_t slider_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a separator widget with the given parameters, and insert it into the *************** *** 384,388 **** // widget_node_t separator_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a link widget with the given parameters, and insert it into the --- 437,441 ---- // widget_node_t separator_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a link widget with the given parameters, and insert it into the *************** *** 398,402 **** // widget_node_t link_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a progress bar widget with the given parameters, and insert it into the --- 451,455 ---- // widget_node_t link_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a progress bar widget with the given parameters, and insert it into the *************** *** 412,416 **** // widget_node_t progress_bar_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a tab group widget with the given parameters, and insert it into the --- 465,469 ---- // widget_node_t progress_bar_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a tab group widget with the given parameters, and insert it into the *************** *** 426,430 **** // widget_node_t tab_group_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// Create a panel widget with the given parameters, and insert it into the --- 479,483 ---- // widget_node_t tab_group_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// Create a panel widget with the given parameters, and insert it into the *************** *** 440,444 **** // widget_node_t panel_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /****************************************************************************************************/ // /// This enumeration is for the different types of bevel button. --- 493,497 ---- // widget_node_t panel_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token); ! /*************************************************************************************************/ // /// This enumeration is for the different types of bevel button. *************** *** 465,476 **** // widget_node_t bevel_button_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token, bevel_button_enum_t emulation); ! /****************************************************************************************************/ } ! /****************************************************************************************************/ #endif ! /****************************************************************************************************/ --- 518,529 ---- // widget_node_t bevel_button_factory(const dictionary_t& parameters, const widget_node_t& parent, const factory_token_t& token, bevel_button_enum_t emulation); ! /*************************************************************************************************/ } ! /*************************************************************************************************/ #endif ! /*************************************************************************************************/ Index: ui_core.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/ui_core.hpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ui_core.hpp 6 Jan 2006 18:02:58 -0000 1.6 --- ui_core.hpp 24 Jan 2006 19:38:46 -0000 1.7 *************** *** 440,443 **** --- 440,449 ---- /****************************************************************************************************/ + typedef boost::function<void (std::string)> ui_core_error_handler_proc_t; + + void set_ui_core_error_handler(ui_core_error_handler_proc_t proc); + + /****************************************************************************************************/ + void system_beep(); Index: ui_overlay.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/headers/ui_overlay.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** ui_overlay.hpp 6 Jan 2006 18:02:58 -0000 1.3 --- ui_overlay.hpp 24 Jan 2006 19:38:46 -0000 1.4 *************** *** 10,13 **** --- 10,15 ---- #define ADOBE_UI_OVERLAY_HPP + #ifndef NDEBUG + /****************************************************************************************************/ *************** *** 66,68 **** --- 68,72 ---- #endif + #endif + /****************************************************************************************************/ |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:29
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources/mac In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/future/widgets/sources/mac Modified Files: display.cpp ui_core_implementation.cpp ui_overlay.cpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: display.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources/mac/display.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** display.cpp 6 Jan 2006 18:02:59 -0000 1.3 --- display.cpp 24 Jan 2006 19:38:47 -0000 1.4 *************** *** 85,88 **** --- 85,94 ---- /****************************************************************************************************/ + template <> + HIViewRef unwrap_display_token<HIViewRef, adobe::display_t::position_t>(adobe::display_t::position_t& position) + { return (boost::any_cast<view_wrap>(position)).ref_m; } + + /****************************************************************************************************/ + #if 0 #pragma mark - Index: ui_overlay.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources/mac/ui_overlay.cpp,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ui_overlay.cpp 6 Jan 2006 18:02:59 -0000 1.4 --- ui_overlay.cpp 24 Jan 2006 19:38:47 -0000 1.5 *************** *** 7,10 **** --- 7,12 ---- /****************************************************************************************************/ + #ifndef NDEBUG + #include "ui_overlay.hpp" #include "carbon_safe.hpp" *************** *** 537,538 **** --- 539,544 ---- /****************************************************************************************************/ + + #endif + + /****************************************************************************************************/ Index: ui_core_implementation.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources/mac/ui_core_implementation.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** ui_core_implementation.cpp 6 Jan 2006 18:02:59 -0000 1.8 --- ui_core_implementation.cpp 24 Jan 2006 19:38:47 -0000 1.9 *************** *** 17,20 **** --- 17,21 ---- #include <adobe/algorithm.hpp> #include <adobe/array.hpp> + #include <adobe/istream_fwd.hpp> #include <adobe/dictionary.hpp> #include <adobe/value.hpp> *************** *** 202,205 **** --- 203,226 ---- /****************************************************************************************************/ [...1181 lines suppressed...] *** 5123,5129 **** ADOBE_INSERT_BOILERPLATE_SPECIALIZATION(window_t); template <> ui_overlay_t::position_t ui_overlay_t::root(window_t& window) ! { HIViewRef ref(adobe::view_for_element<HIViewRef>(window)); return root<HIViewRef>(ref); } /****************************************************************************************************/ --- 5362,5372 ---- ADOBE_INSERT_BOILERPLATE_SPECIALIZATION(window_t); + #ifndef NDEBUG + template <> ui_overlay_t::position_t ui_overlay_t::root(window_t& window) ! { HIViewRef ref(adobe::view_for_element<HIViewRef>(window)); return root<HIViewRef>(ref); } ! ! #endif /****************************************************************************************************/ |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:29
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/source Modified Files: adam.cpp adam_evaluate.cpp adam_parser.cpp eve_evaluate.cpp eve_parser.cpp istream.cpp lex_shared.hpp xstring.cpp Added Files: basic_sheet.cpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: xstring.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/source/xstring.cpp,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** xstring.cpp 6 Jan 2006 18:03:00 -0000 1.12 --- xstring.cpp 24 Jan 2006 19:38:50 -0000 1.13 *************** *** 330,335 **** const adobe::attribute_set_t& searching) { - assert(parsed_m); - typedef std::iterator_traits<store_iterator>::difference_type difference_type; --- 330,333 ---- Index: adam_evaluate.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/source/adam_evaluate.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** adam_evaluate.cpp 6 Jan 2006 18:03:00 -0000 1.3 --- adam_evaluate.cpp 24 Jan 2006 19:38:50 -0000 1.4 *************** *** 54,57 **** --- 54,58 ---- void add_relation( adobe::sheet_t& sheet, + bool weak, const adobe::line_position_t& position, const adobe::array_t& conditional, *************** *** 80,84 **** } ! sheet.add_relation(position, conditional, &relations[0], &relations[0] + relations.size()); } --- 81,85 ---- } ! sheet.add_relation(weak, position, conditional, &relations[0], &relations[0] + relations.size()); } *************** *** 98,102 **** suite.add_cell_proc_m = boost::bind(&add_cell, boost::ref(sheet), _1, _2, _3, _4); ! suite.add_relation_proc_m = boost::bind(&add_relation, boost::ref(sheet), _1, _2, _3, _4); suite.add_interface_proc_m = boost::bind(&adobe::sheet_t::add_interface, boost::ref(sheet), _1, _2, _3, _4, _5, _6); --- 99,103 ---- suite.add_cell_proc_m = boost::bind(&add_cell, boost::ref(sheet), _1, _2, _3, _4); ! suite.add_relation_proc_m = boost::bind(&add_relation, boost::ref(sheet), _1, _2, _3, _4, _5); suite.add_interface_proc_m = boost::bind(&adobe::sheet_t::add_interface, boost::ref(sheet), _1, _2, _3, _4, _5, _6); Index: adam_parser.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/source/adam_parser.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** adam_parser.cpp 6 Jan 2006 18:03:00 -0000 1.3 --- adam_parser.cpp 24 Jan 2006 19:38:50 -0000 1.4 *************** *** 31,54 **** /*************************************************************************************************/ - /* - TODO (sparent) : Changes to grammar - - * 1. input/output qualifiers go away - auto-detect qualification. - * 2. State cells go away. - * 3. non_reversible goes away (need to add some kind of idempotent check). - 4. Add relate clause - * 5. Question: Does "relation_set" go away? What are they for? - 6. The current relation sets should be renamed if they stay - what is in relate is a - relation set. - 7. Need to add some way to declare validity predicate. - * 8. Question: Do "when" and "after" conditionals only apply to relate clauses? - - - For optional items ensure that if present - the following items are required. - after is currently not connected. - - */ - - /*************************************************************************************************/ - namespace { void init_keyword_table(); } --- 31,34 ---- *************** *** 62,66 **** /*************************************************************************************************/ ! typedef boost::array<adobe::name_t, 10> keyword_table_t; /*************************************************************************************************/ --- 42,46 ---- /*************************************************************************************************/ ! typedef boost::array<adobe::name_t, 11> keyword_table_t; /*************************************************************************************************/ *************** *** 82,85 **** --- 62,66 ---- adobe::const_once_name_t when_k; adobe::const_once_name_t relate_k; + adobe::const_once_name_t weak_k; /*************************************************************************************************/ *************** *** 97,100 **** --- 78,82 ---- when_k .initialize("when"); relate_k .initialize("relate"); + weak_k .initialize("weak"); static keyword_table_t keyword_table_s = *************** *** 109,113 **** unlink_k, when_k, ! relate_k }}; --- 91,96 ---- unlink_k, when_k, ! relate_k, ! weak_k }}; *************** *** 168,172 **** invariant_cell_decl = named_decl. ! relate_decl = [conditional] "relate" "{" relate_expression relate_expression { relate_expression } "}" [trail_comment]. relate_expression = [lead_comment] named_decl. named_decl = identifier define_expression end_statement. --- 151,155 ---- invariant_cell_decl = named_decl. ! relate_decl = [conditional] ("relate" | "weak") "{" relate_expression relate_expression { relate_expression } "}" [trail_comment]. relate_expression = [lead_comment] named_decl. named_decl = identifier define_expression end_statement. *************** *** 233,238 **** bool is_invariant_cell_decl(const std::string& detailed); ! // relate_decl = [conditional] "relate" "{" relate_expression relate_expression { relate_expression } "}" [trail_comment]. ! bool is_relate_decl(line_position_t& position, array_t& expression, relation_set_t&, std::string&); // relate_expression = [lead_comment] named_decl. bool is_relate_expression_decl(relation_t&); --- 216,221 ---- bool is_invariant_cell_decl(const std::string& detailed); ! // relate_decl = [conditional] ("relate" | "weak") "{" relate_expression relate_expression { relate_expression } "}" [trail_comment]. ! bool is_relate_decl(bool& weak, line_position_t& position, array_t& expression, relation_set_t&, std::string&); // relate_expression = [lead_comment] named_decl. bool is_relate_expression_decl(relation_t&); *************** *** 313,316 **** --- 296,301 ---- bool adam_parser::is_sheet_specifier() { + /* REVISIT (sparent) : Top level block is ignored. */ + is_token(lead_comment_k); if (!is_token(sheet_k)) return false; *************** *** 485,488 **** --- 470,474 ---- array_t expression; std::string brief; + bool weak; relation_set_t relations; *************** *** 494,500 **** return true; } ! else if (is_relate_decl(position, expression, relations, brief)) { ! adam_callback_suite_m.add_relation_proc_m( position, expression, &relations.front(), &relations.front() + relations.size(), brief, detailed); --- 480,486 ---- return true; } ! else if (is_relate_decl(weak, position, expression, relations, brief)) { ! adam_callback_suite_m.add_relation_proc_m( weak, position, expression, &relations.front(), &relations.front() + relations.size(), brief, detailed); *************** *** 524,529 **** /*************************************************************************************************/ ! // relate_decl = [conditional] "relate" "{" relate_expression relate_expression { relate_expression } "}" [trail_comment] ! bool adam_parser::is_relate_decl(line_position_t& position, array_t& expression, relation_set_t& relation_set, std::string& brief) { /* --- 510,516 ---- /*************************************************************************************************/ ! // relate_decl = [conditional] ("relate" | "weak") "{" relate_expression relate_expression { relate_expression } "}" [trail_comment] ! bool adam_parser::is_relate_decl(bool& weak, line_position_t& position, array_t& expression, ! relation_set_t& relation_set, std::string& brief) { /* *************** *** 532,539 **** expression for this purpose. */ ! ! if (is_conditional(position, expression)) require_token(relate_k); ! else if (!is_token(relate_k)) return false; ! else position = next_position(); require_token(open_brace_k); --- 519,533 ---- expression for this purpose. */ ! bool conditional(is_conditional(position, expression)); ! ! weak = is_token(weak_k); ! ! if (!(weak || is_token(relate_k))) ! { ! if (conditional) throw_exception("weak or relate required"); ! return false; ! } ! ! if (!conditional) position = next_position(); require_token(open_brace_k); Index: eve_parser.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/source/eve_parser.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** eve_parser.cpp 6 Jan 2006 18:03:00 -0000 1.2 --- eve_parser.cpp 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 11,14 **** --- 11,16 ---- #include <string> + #include <boost/array.hpp> + #include <adobe/array.hpp> #include <adobe/dictionary.hpp> *************** *** 21,37 **** /*************************************************************************************************/ namespace { /*************************************************************************************************/ class eve_parser : public adobe::expression_parser { public: ! typedef adobe::eve::position_t position_t; ! eve_parser(const adobe::eve::assemble_t& assembler, std::istream& in, const adobe::line_position_t& position) : expression_parser(in, position), assembler_m(assembler) ! { } void parse(const position_t&); --- 23,105 ---- /*************************************************************************************************/ + namespace { void init_keyword_table(); } + + ADOBE_ONCE_DECLARATION(adobe_eve_parser) + ADOBE_ONCE_DEFINITION(adobe_eve_parser, init_keyword_table) + + /*************************************************************************************************/ + namespace { /*************************************************************************************************/ + typedef boost::array<adobe::name_t, 4> keyword_table_t; + + /*************************************************************************************************/ + + /* + WARNING (sparent) : Initialization of these const_once_name_t items is defered until + eve_parser::eve_parser(). + */ + + keyword_table_t* keyword_table_g; + adobe::const_once_name_t interface_k; + adobe::const_once_name_t constant_k; + adobe::const_once_name_t layout_k; + adobe::const_once_name_t view_k; + + /*************************************************************************************************/ + + void init_keyword_table() + { + interface_k .initialize("interface"); + constant_k .initialize("constant"); + layout_k .initialize("layout"); + view_k .initialize("view"); + + static keyword_table_t keyword_table_s = + {{ + interface_k, + constant_k, + layout_k, + view_k + }}; + + adobe::sort(keyword_table_s); + + keyword_table_g = &keyword_table_s; + } + + /*************************************************************************************************/ + + bool keyword_lookup(const adobe::name_t& name) + { + keyword_table_t::const_iterator iter(adobe::lower_bound(*keyword_table_g, name)); + + return (iter != keyword_table_g->end() && *iter == name); + } + + void once_instance() + { + ADOBE_ONCE_INSTANCE(adobe_eve_parser); + } + + /*************************************************************************************************/ + class eve_parser : public adobe::expression_parser { public: ! typedef adobe::eve_callback_suite_t::position_t position_t; ! eve_parser(const adobe::eve_callback_suite_t& assembler, std::istream& in, const adobe::line_position_t& position) : expression_parser(in, position), assembler_m(assembler) ! { ! once_instance(); ! set_keyword_extension_lookup(boost::bind(&keyword_lookup, _1)); ! ! assert(assembler_m.add_view_proc_m); ! // assert(assembler_m.add_cell_proc_m); Only required if you have a sheet state. ! } void parse(const position_t&); *************** *** 39,42 **** --- 107,117 ---- private: + bool is_layout_specifier(const position_t&); + bool is_qualified_cell_decl(); + bool is_interface_set_decl(); + bool is_constant_set_decl(); + bool is_cell_decl(adobe::eve_callback_suite_t::cell_type_t); + bool is_initializer(adobe::line_position_t& position, adobe::array_t& expression); + void require_end_statement(std::string&); bool is_view_definition(const position_t&); bool is_view_statement_sequence(const position_t&); *************** *** 44,48 **** void require_view_statement_list(const position_t&); ! adobe::eve::assemble_t assembler_m; }; --- 119,123 ---- void require_view_statement_list(const position_t&); ! adobe::eve_callback_suite_t assembler_m; }; *************** *** 51,65 **** void eve_parser::parse(const position_t& position) { ! is_view_definition(position); } /*************************************************************************************************/ ! bool eve_parser::is_view_definition(const position_t& location) { using namespace adobe; std::string brief; std::string detailed; name_t class_name; array_t arguments; --- 126,248 ---- void eve_parser::parse(const position_t& position) { ! if (!is_layout_specifier(position)) throw_exception("layout specifier required"); } /*************************************************************************************************/ + + bool eve_parser::is_layout_specifier(const position_t& position) + { + /* REVISIT (sparent) : Top level block is ignored. */ ! using namespace adobe; ! ! is_token(lead_comment_k); ! ! if (!is_token(layout_k)) return false; ! ! require_token(identifier_k); ! require_token(open_brace_k); ! while (is_qualified_cell_decl()) { }; ! ! require_token(view_k); ! if (!is_view_definition(position)) throw_exception("view definition required"); ! require_token(close_brace_k); ! is_token(trail_comment_k); ! return true; ! } ! ! /*************************************************************************************************/ ! ! bool eve_parser::is_qualified_cell_decl() ! { ! if (is_interface_set_decl() || is_constant_set_decl()) return true; ! return false; ! } ! ! /*************************************************************************************************/ ! ! // interface_set_decl = "interface" ":" { cell_decl }. ! bool eve_parser::is_interface_set_decl() ! { ! using namespace adobe; ! ! if (!is_token(interface_k)) return false; ! require_token(colon_k); ! ! while (is_cell_decl(eve_callback_suite_t::interface_k)) { } ! return true; ! } ! ! /*************************************************************************************************/ ! ! // constant_set_decl = "constant" ":" { cell_decl }. ! bool eve_parser::is_constant_set_decl() ! { ! using namespace adobe; ! ! if (!is_token(constant_k)) return false; ! require_token(colon_k); ! ! while (is_cell_decl(eve_callback_suite_t::constant_k)) { } ! return true; ! } ! ! /*************************************************************************************************/ ! ! // cell_decl = [lead_comment] identifier initializer end_statement. ! bool eve_parser::is_cell_decl(adobe::eve_callback_suite_t::cell_type_t type) { using namespace adobe; + std::string detailed; std::string brief; + name_t cell_name; + line_position_t position; + array_t initializer; + + (void)is_lead_comment(detailed); + if (!is_identifier(cell_name)) return false; + if (!is_initializer(position, initializer)) throw_exception("initializer required"); + require_end_statement(brief); + + assembler_m.add_cell_proc_m(type, cell_name, position, initializer, brief, detailed); + + return true; + } + + /*************************************************************************************************/ + + // initializer = ":" expression. + bool eve_parser::is_initializer(adobe::line_position_t& position, adobe::array_t& expression) + { + using namespace adobe; + + if (!is_token(colon_k)) return false; + + position = next_position(); + require_expression(expression); + + return true; + } + + /*************************************************************************************************/ + + // end_statement = ";" [trail_comment]. + void eve_parser::require_end_statement(std::string& brief) + { + using namespace adobe; + + require_token(semicolon_k); + (void)is_trail_comment(brief); + } + + /*************************************************************************************************/ + + bool eve_parser::is_view_definition(const position_t& location) + { + using namespace adobe; + std::string detailed; + std::string brief; name_t class_name; array_t arguments; *************** *** 80,85 **** try { ! node_location = assembler_m(location, line_position, class_name, arguments, brief, ! detailed); } catch (const std::exception& error) --- 263,268 ---- try { ! node_location = assembler_m.add_view_proc_m(location, line_position, class_name, arguments, ! brief, detailed); } catch (const std::exception& error) *************** *** 134,141 **** } // namespace ! adobe::line_position_t adobe::eve::parse(std::istream& in, ! const adobe::line_position_t& line_position, ! const adobe::eve::position_t& position, ! const adobe::eve::assemble_t& assembler) { eve_parser parser(assembler, in, line_position); --- 317,328 ---- } // namespace ! namespace adobe { ! ! /*************************************************************************************************/ ! ! line_position_t parse(std::istream& in, ! const line_position_t& line_position, ! const eve_callback_suite_t::position_t& position, ! const eve_callback_suite_t& assembler) { eve_parser parser(assembler, in, line_position); *************** *** 145,146 **** --- 332,337 ---- /*************************************************************************************************/ + + } // namespace adobe + + /*************************************************************************************************/ Index: eve_evaluate.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/source/eve_evaluate.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** eve_evaluate.cpp 6 Jan 2006 18:03:00 -0000 1.2 --- eve_evaluate.cpp 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 61,106 **** /*************************************************************************************************/ ! adobe::value_t reflected_variables(adobe::name_t name) { - ADOBE_ONCE_INSTANCE(adobe_eve_evaluate); - adobe::name_t* found(std::lower_bound(reflected_range_g->first, reflected_range_g->second, name)); ! if (found == reflected_range_g->second || *found != name) ! { ! std::string error("Variable not found: "); ! error << name.get(); ! throw std::logic_error(error); ! } ! ! return adobe::value_t(*found); } /*************************************************************************************************/ ! class evaluate_named_arguments_t { ! public: ! typedef adobe::dictionary_t result_type; ! ! evaluate_named_arguments_t() ! { ! evaluator_m.set_simple_variable_lookup(&reflected_variables); ! } ! adobe::dictionary_t operator () (const adobe::array_t& arguments) ! { ! evaluator_m.evaluate(arguments); ! adobe::dictionary_t result(evaluator_m.back().value_m.get<adobe::dictionary_t>()); ! evaluator_m.pop_back(); ! return result; ! } ! ! private: ! adobe::virtual_machine_t evaluator_m; ! }; /*************************************************************************************************/ --- 61,118 ---- /*************************************************************************************************/ ! adobe::value_t reflected_variables(const adobe::basic_sheet_t& layout_sheet, adobe::name_t name) { adobe::name_t* found(std::lower_bound(reflected_range_g->first, reflected_range_g->second, name)); ! if (found != reflected_range_g->second && *found == name) return adobe::value_t(name); ! ! return layout_sheet[name]; } /*************************************************************************************************/ ! adobe::dictionary_t evaluate_named_arguments(adobe::virtual_machine_t& evaluator, ! const adobe::array_t& arguments) { ! evaluator.evaluate(arguments); ! ! adobe::dictionary_t result(evaluator.back().value_m.get<adobe::dictionary_t>()); ! ! evaluator.pop_back(); ! return result; ! } ! /*************************************************************************************************/ ! adobe::value_t evaluate_initializer(adobe::virtual_machine_t& evaluator, ! const adobe::array_t& expression) ! { ! evaluator.evaluate(expression); ! ! adobe::value_t result(evaluator.back().value_m); ! ! evaluator.pop_back(); ! return result; ! } ! /*************************************************************************************************/ ! void add_cell( adobe::basic_sheet_t& sheet, ! adobe::eve_callback_suite_t::cell_type_t type, ! adobe::name_t name, ! const adobe::value_t& value) ! { ! switch(type) ! { ! case adobe::eve_callback_suite_t::constant_k: ! sheet.add_constant(name, value); ! break; ! case adobe::eve_callback_suite_t::interface_k: ! sheet.add_interface(name, value); ! break; ! default: ! assert(false); // Type not supported ! } ! } /*************************************************************************************************/ *************** *** 114,121 **** /*************************************************************************************************/ ! boost::function<adobe::dictionary_t (const adobe::array_t&)> adobe::eve::evaluate_arguments() { ! return evaluate_named_arguments_t(); } /*************************************************************************************************/ --- 126,154 ---- /*************************************************************************************************/ ! namespace adobe { ! ! /*************************************************************************************************/ ! ! eve_callback_suite_t bind_layout(const bind_layout_proc_t& proc, basic_sheet_t& layout_sheet, ! virtual_machine_t& evaluator) { ! ADOBE_ONCE_INSTANCE(adobe_eve_evaluate); ! ! eve_callback_suite_t suite; ! ! evaluator.set_simple_variable_lookup( ! boost::bind(&reflected_variables, boost::cref(layout_sheet), _1)); ! ! suite.add_view_proc_m = boost::bind(proc, _1, _3, boost::bind(&evaluate_named_arguments, ! boost::ref(evaluator), _4)); ! suite.add_cell_proc_m = boost::bind(&add_cell, boost::ref(layout_sheet), _1, _2, ! boost::bind(&evaluate_initializer, boost::ref(evaluator), _4)); ! ! return suite; } /*************************************************************************************************/ + + } // namespace adobe + + /*************************************************************************************************/ --- NEW FILE: basic_sheet.cpp --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ /*************************************************************************************************/ #include <adobe/basic_sheet.hpp> #include <adobe/string.hpp> /*************************************************************************************************/ namespace adobe { /*************************************************************************************************/ void basic_sheet_t::add_constant(name_t name, const value_t& value) { constant_cell_set_m.push_back(cell_t(value)); const cell_t* cell(&constant_cell_set_m.back()); variable_index_m.insert(std::make_pair(name.get(), cell)); } /*************************************************************************************************/ void basic_sheet_t::add_interface(name_t name, const value_t& value) { interface_cell_set_m.push_back(interface_cell_t(value)); interface_cell_t* cell(&interface_cell_set_m.back()); variable_index_m.insert(std::make_pair(name.get(), cell)); interface_index_m.insert(std::make_pair(name.get(), cell)); } /*************************************************************************************************/ std::size_t basic_sheet_t::count_interface(name_t name) const { return interface_index_m.count(name.get()); } /*************************************************************************************************/ basic_sheet_t::connection_t basic_sheet_t::monitor_interface(name_t name, const monitor_value_t& monitor) { interface_cell_t* cell(lookup_interface(name)); monitor(cell->value_m); return (cell->monitor_m.connect(monitor)); } /*************************************************************************************************/ void basic_sheet_t::set(name_t name, const value_t& value) { interface_cell_t* cell(lookup_interface(name)); cell->value_m = value; cell->monitor_m(value); } /*************************************************************************************************/ const value_t& basic_sheet_t::operator[](name_t name) const { variable_index_t::const_iterator iter(variable_index_m.find(name.get())); if (iter == variable_index_m.end()) { std::string error("Variable cell does not exist: "); error << name.get(); throw std::logic_error(error); } return iter->second->value_m; } /*************************************************************************************************/ basic_sheet_t::interface_cell_t* basic_sheet_t::lookup_interface(name_t name) { interface_index_t::iterator iter(interface_index_m.find(name.get())); if (iter == interface_index_m.end()) { std::string error("Interface cell does not exist: "); error << name.get(); throw std::logic_error(error); } return iter->second; } /*************************************************************************************************/ } // namespace adobe /*************************************************************************************************/ Index: adam.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/source/adam.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** adam.cpp 6 Jan 2006 18:03:00 -0000 1.6 --- adam.cpp 24 Jan 2006 19:38:49 -0000 1.7 *************** *** 209,213 **** const line_position_t&, const array_t& expression); ! void add_relation (const line_position_t&, const array_t& conditional, const relation_t* first, const relation_t* last); connection_t monitor_value(name_t, const monitor_value_t&); // output only --- 209,213 ---- const line_position_t&, const array_t& expression); ! void add_relation (bool weak, const line_position_t&, const array_t& conditional, const relation_t* first, const relation_t* last); connection_t monitor_value(name_t, const monitor_value_t&); // output only *************** *** 243,247 **** struct relation_cell_t { ! relation_cell_t(const line_position_t& position, const adobe::array_t& conditional, const relation_t* first, const relation_t* last) : resolved_m(false), conditional_resolved_m(false), --- 243,250 ---- struct relation_cell_t { ! relation_cell_t(bool weak, const line_position_t& position, ! const adobe::array_t& conditional, const relation_t* first, ! const relation_t* last) : ! weak_m(weak), resolved_m(false), conditional_resolved_m(false), *************** *** 250,253 **** --- 253,258 ---- terms_m(first, last) { } + + bool weak_m; bool resolved_m; *************** *** 529,535 **** { object_m->add_interface(name, linked, position1, initializer, position2, expression); } ! void sheet_t::add_relation(const adobe::line_position_t& position, const adobe::array_t& conditional, const relation_t* first, const relation_t* last) ! { object_m->add_relation(position, conditional, first, last); } sheet_t::connection_t sheet_t::monitor_value(adobe::name_t output, const monitor_value_t& monitor) --- 534,540 ---- { object_m->add_interface(name, linked, position1, initializer, position2, expression); } ! void sheet_t::add_relation(bool weak, const adobe::line_position_t& position, const adobe::array_t& conditional, const relation_t* first, const relation_t* last) ! { object_m->add_relation(weak, position, conditional, first, last); } sheet_t::connection_t sheet_t::monitor_value(adobe::name_t output, const monitor_value_t& monitor) *************** *** 811,820 **** /*************************************************************************************************/ ! void sheet_t::implementation_t::add_relation(const adobe::line_position_t& position, const adobe::array_t& conditional, const relation_t* first, const relation_t* last) { assert(!prepared_m); ! relation_cell_set_m.push_back(relation_cell_t(position, conditional, first, last)); // Need to link each relation_cell to the cells the output cells that depend on it. // Should that happen at initialization time? or can we require that cells are declared first. --- 816,825 ---- /*************************************************************************************************/ ! void sheet_t::implementation_t::add_relation(bool weak, const adobe::line_position_t& position, const adobe::array_t& conditional, const relation_t* first, const relation_t* last) { assert(!prepared_m); ! relation_cell_set_m.push_back(relation_cell_t(weak, position, conditional, first, last)); // Need to link each relation_cell to the cells the output cells that depend on it. // Should that happen at initialization time? or can we require that cells are declared first. *************** *** 857,868 **** } ! sheet_t::connection_t sheet_t::implementation_t::monitor_value(adobe::name_t n, const monitor_value_t& monitor) { prepare(); ! index_t::iterator iter(output_index_m.find(n)); ! connection_t connection; ! ! if (iter == output_index_m.end()) throw std::logic_error(std::string("Attempt to monitor nonexistent cell: ") + n.get()); return iter->monitor_value_m.connect(make_first_call(monitor)); } --- 862,876 ---- } ! sheet_t::connection_t sheet_t::implementation_t::monitor_value(adobe::name_t name, const monitor_value_t& monitor) { prepare(); ! index_t::iterator iter(output_index_m.find(name)); + if (iter == output_index_m.end()) + { + std::string error("Attempt to monitor nonexistent cell: "); + error << name.get(); + throw error; + } return iter->monitor_value_m.connect(make_first_call(monitor)); } *************** *** 1088,1091 **** --- 1096,1100 ---- void sheet_t::implementation_t::update() { + //std::cout << std::endl << "<update>" << std::endl; prepare(); *************** *** 1144,1148 **** if (forward) cell.state_m.contributing_m |= conditional_indirect_contributing_m; } ! catch (const unresolved_relation_t&) { } catch (...) { --- 1153,1163 ---- if (forward) cell.state_m.contributing_m |= conditional_indirect_contributing_m; } ! catch (const unresolved_relation_t&) ! { ! #if defined(BOOST_MSVC) && _MSC_VER <= 1310 // 1310 == VC++ 7.1 ! // needed because of a bad code gen bug in the msvc 7.1 compiler ! int i=0; i = 2*i; ! #endif ! } catch (...) { *************** *** 1154,1279 **** } ! // Then we try and resolve any relations we can. for (relation_cell_set_t::iterator current_cell(relation_cell_set_m.begin()), ! last_cell(relation_cell_set_m.end()); current_cell != last_cell; ++current_cell) { ! if (current_cell->resolved_m) continue; ! cell_t* cell_to_resolve = NULL; ! const relation_t* term(0); ! for (relation_set_t::iterator current_term(current_cell->terms_m.begin()), ! last_term(current_cell->terms_m.end()); current_term != last_term; ++current_term) { ! index_t::iterator iter(output_index_m.find(current_term->name_m)); ! if (iter == output_index_m.end()) { ! std::string message; ! message << "Output variable " << current_term->name_m.get() << " not found."; ! throw std::logic_error(message); } ! cell_t& cell(*iter); ! if (!cell.resolved_m) { ! if (!cell_to_resolve) { ! cell_to_resolve = &cell; ! term = &(*current_term); } else { ! cell_to_resolve = NULL; break; } } ! } ! ! if (!cell_to_resolve) continue; ! ! /* ! REVISIT (sparent) : We want to hold off on evaluting conditional relations as long as possible ! because they have an interesting effect on how they contribute to the result - a true ! conditional will contribute directly to the term. A false conditional contributes to the term ! "indirectly". I don't know how to handle this "indirect" relationship so for now a false ! conditional contributes to everything after it. ! */ ! ! contributing_t conditional_direct_contributing; ! ! if (!current_cell->conditional_resolved_m) ! { tracked_value_t result; ! try { ! result = calculate_expression(current_cell->position_m, current_cell->conditional_m); ! } catch (const unresolved_relation_t&) { ! continue; // can't determine if predicate applies. } - current_cell->conditional_resolved_m = true; ! if (!result.value_m.get<bool>()) { ! // remove this relation from any terms. ! for (relation_set_t::iterator current_term(current_cell->terms_m.begin()), ! last_term(current_cell->terms_m.end()); current_term != last_term; ++current_term) ! { ! index_t::iterator iter(output_index_m.find(current_term->name_m)); ! if (iter == output_index_m.end()) ! { ! std::string message; ! message << "Output variable " << current_term->name_m.get() << " not found."; ! throw std::logic_error(message); ! } ! ! --iter->relation_count_m; ! } ! conditional_indirect_contributing_m |= result.contributing_m; current_cell->resolved_m = true; forward = true; } - else - { - conditional_direct_contributing |= result.contributing_m; - } - } - - if (current_cell->resolved_m) continue; - - tracked_value_t result; - - // std::cout << "Resolving cell: " << term->name_m << std::endl; - - get_stack_m.push_back(term->name_m); - - try { - result = calculate_expression(term->position_m, term->expression_m); - } - catch (const unresolved_relation_t&) - { - // std::cout << "Failed Resolving cell: " << term->name_m << std::endl; - cell_to_resolve = false; - } - catch (...) - { - get_stack_m.pop_back(); - throw; - } - - get_stack_m.pop_back(); - - if (cell_to_resolve) - { - cell_to_resolve->dirty_m = (result.value_m != cell_to_resolve->state_m.value_m); - cell_to_resolve->state_m = result; - cell_to_resolve->state_m.contributing_m |= conditional_direct_contributing; - cell_to_resolve->state_m.contributing_m |= conditional_indirect_contributing_m; - cell_to_resolve->resolved_m = true; - - current_cell->resolved_m = true; - forward = true; } } --- 1169,1357 ---- } ! // Then we are going to try and resolve the conditionals for (relation_cell_set_t::iterator current_cell(relation_cell_set_m.begin()), ! last_cell(relation_cell_set_m.end()); current_cell != last_cell; ++current_cell) { + if (current_cell->conditional_resolved_m) continue; + + tracked_value_t result; ! try ! { ! result = calculate_expression(current_cell->position_m, current_cell->conditional_m); ! } catch (const unresolved_relation_t&) ! { ! continue; // can't determine if predicate applies. ! } ! current_cell->conditional_resolved_m = true; ! ! if (!result.value_m.get<bool>()) ! { ! // remove this relation from any terms. ! for (relation_set_t::iterator current_term(current_cell->terms_m.begin()), ! last_term(current_cell->terms_m.end()); current_term != last_term; ++current_term) ! { ! index_t::iterator iter(output_index_m.find(current_term->name_m)); ! if (iter == output_index_m.end()) ! { ! std::string message; ! message << "Output variable " << current_term->name_m.get() << " not found."; ! throw std::logic_error(message); ! } ! ! --iter->relation_count_m; ! } ! current_cell->resolved_m = true; ! forward = true; ! } ! ! conditional_indirect_contributing_m |= result.contributing_m; ! } ! // Then we try and resolve any relations we can. ! for (int private_i = 0; private_i != 2 && !forward; ++private_i) ! { ! bool solve_weak(private_i != 0); ! ! for (relation_cell_set_t::iterator current_cell(relation_cell_set_m.begin()), ! last_cell(relation_cell_set_m.end()); current_cell != last_cell; ++current_cell) { ! if (current_cell->weak_m != solve_weak) continue; ! if (current_cell->resolved_m) continue; ! if (!current_cell->conditional_resolved_m) continue; ! ! cell_t* cell_to_resolve = NULL; ! const relation_t* term(0); ! ! for (relation_set_t::iterator current_term(current_cell->terms_m.begin()), ! last_term(current_cell->terms_m.end()); current_term != last_term; ++current_term) { ! index_t::iterator iter(output_index_m.find(current_term->name_m)); ! if (iter == output_index_m.end()) ! { ! std::string message; ! message << "Output variable " << current_term->name_m.get() << " not found."; ! throw std::logic_error(message); ! } ! ! cell_t& cell(*iter); ! ! if (!cell.resolved_m) ! { ! if (!cell_to_resolve) ! { ! cell_to_resolve = &cell; ! term = &(*current_term); ! } ! else ! { ! cell_to_resolve = NULL; break; ! } ! } } ! if (!cell_to_resolve) continue; ! #if 0 ! ! /* ! REVISIT (sparent) : We want to hold off on evaluting conditional relations as long as possible ! because they have an interesting effect on how they contribute to the result - a true ! conditional will contribute directly to the term. A false conditional contributes to the term ! "indirectly". I don't know how to handle this "indirect" relationship so for now a false ! conditional contributes to everything after it. ! ! Although the above statement is true... Handling conditionals can't be delayed ! quite like this - we need to evalute them before we go poking into a relation ! clause otherwise we will end up screwing the priority tracking. ! ! Tracking only touched items while we calculate output should clean this up ! considerably. ! ! */ ! ! contributing_t conditional_direct_contributing; ! ! if (!current_cell->conditional_resolved_m) { ! tracked_value_t result; ! try { ! result = calculate_expression(current_cell->position_m, current_cell->conditional_m); ! } catch (const unresolved_relation_t&) ! { ! continue; // can't determine if predicate applies. ! } ! current_cell->conditional_resolved_m = true; ! ! if (!result.value_m.get<bool>()) ! { ! // remove this relation from any terms. ! for (relation_set_t::iterator current_term(current_cell->terms_m.begin()), ! last_term(current_cell->terms_m.end()); current_term != last_term; ++current_term) ! { ! index_t::iterator iter(output_index_m.find(current_term->name_m)); ! if (iter == output_index_m.end()) ! { ! std::string message; ! message << "Output variable " << current_term->name_m.get() << " not found."; ! throw std::logic_error(message); ! } ! ! --iter->relation_count_m; ! } ! conditional_indirect_contributing_m |= result.contributing_m; ! current_cell->resolved_m = true; ! forward = true; } else { ! conditional_direct_contributing |= result.contributing_m; } } ! ! if (current_cell->resolved_m) continue; ! ! #endif ! tracked_value_t result; ! ! // std::cout << "Resolving cell: " << term->name_m << std::endl; ! ! get_stack_m.push_back(term->name_m); ! ! try { ! result = calculate_expression(term->position_m, term->expression_m); ! } ! catch (const unresolved_relation_t&) { ! // std::cout << "Failed Resolving cell: " << term->name_m << std::endl; ! cell_to_resolve = NULL; ! } ! catch (...) { ! get_stack_m.pop_back(); ! throw; } ! get_stack_m.pop_back(); ! ! if (cell_to_resolve) { ! cell_to_resolve->dirty_m = (result.value_m != cell_to_resolve->state_m.value_m); ! cell_to_resolve->state_m = result; ! // cell_to_resolve->state_m.contributing_m |= conditional_direct_contributing; ! cell_to_resolve->state_m.contributing_m |= conditional_indirect_contributing_m; ! cell_to_resolve->resolved_m = true; ! current_cell->resolved_m = true; forward = true; + + #if 0 + std::cout << "Resolved cell: " << cell_to_resolve->name_m << std::endl; + #endif } } } *************** *** 1293,1297 **** index_t::iterator input_iter(input_index_m.find(cell.name_m)); ! if ((input_iter == input_index_m.end()) || !input_iter->linked_m) continue; // REVIST (sparent) can unlinked things be related? std::size_t in_cell_priority (input_iter->priority_m); --- 1371,1375 ---- index_t::iterator input_iter(input_index_m.find(cell.name_m)); ! if (input_iter == input_index_m.end()) continue; // NOTE (sparent) : This is not an interface cell. std::size_t in_cell_priority (input_iter->priority_m); *************** *** 1307,1311 **** if (cell_to_resolve) { ! // std::cout << "Forcing cell: " << cell_to_resolve->name_m << std::endl; cell_to_resolve->relation_count_m = 0; forward = true; --- 1385,1391 ---- if (cell_to_resolve) { ! #if 0 ! std::cout << "Forcing cell: " << cell_to_resolve->name_m << std::endl; ! #endif cell_to_resolve->relation_count_m = 0; forward = true; *************** *** 1315,1333 **** } while (forward); ! // REVISIT (sparent) : At this point all output cells must be resolved as must all relations! ! ! ! #ifndef NDEBUG { ! relation_cell_set_t::iterator iter(adobe::find_if_not(relation_cell_set_m, &relation_cell_t::resolved_m)); ! ! if (iter != relation_cell_set_m.end()) ! { ! throw adobe::stream_error_t("(warning) relation unnecessary and ignored.", iter->position_m); ! } ! } ! #endif // end grotesque solve loop! --- 1395,1423 ---- } while (forward); ! /* ! REVISIT (sparent) : Now we are going to simply iterate through any relations and if they are ! not resolved, but conditional then we need to resolve the conditional to see if we have an ! error or not. ! */ + for (relation_cell_set_t::iterator first(relation_cell_set_m.begin()), + last(relation_cell_set_m.end()); first != last; ++first) { ! if (first->resolved_m || first->weak_m) continue; ! ! #if 0 ! if (!first->conditional_resolved_m) ! { ! if (!calculate_expression(first->position_m, first->conditional_m).value_m.get<bool>()) ! { ! continue; ! } ! } ! #endif ! ! #ifndef NDEBUG ! std::clog << "(warning) relation unnecessary and ignored\n" << first->position_m; #endif + } // end grotesque solve loop! *************** *** 1384,1387 **** --- 1474,1479 ---- adobe::for_each(input_index_m, &cell_t::update_active); + + // std::cout << std::endl << "</update>" << std::endl; } Index: lex_shared.hpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/source/lex_shared.hpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** lex_shared.hpp 6 Jan 2006 18:03:00 -0000 1.7 --- lex_shared.hpp 24 Jan 2006 19:38:50 -0000 1.8 *************** *** 349,353 **** first_m(first), last_m(last), ! streampos_m(0), line_position_m(position), skip_white_m(true), --- 349,353 ---- first_m(first), last_m(last), ! streampos_m(1), line_position_m(position), skip_white_m(true), *************** *** 502,515 **** bool stream_lex_base_t<S, I>::is_line_end(char c) { ! bool result(adobe::is_line_end(first_m, last_m, c)); ! if (result) { ++line_position_m.line_number_m; line_position_m.line_start_m = streampos_m; } ! return result; } --- 502,518 ---- bool stream_lex_base_t<S, I>::is_line_end(char c) { ! std::size_t num_chars_eaten(adobe::is_line_end(first_m, last_m, c)); ! if (num_chars_eaten != 0) { ++line_position_m.line_number_m; + if (num_chars_eaten == 2) + streampos_m += 1; + line_position_m.line_start_m = streampos_m; } ! return num_chars_eaten != 0; } Index: istream.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/source/istream.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** istream.cpp 6 Jan 2006 18:03:00 -0000 1.9 --- istream.cpp 24 Jan 2006 19:38:50 -0000 1.10 *************** *** 9,12 **** --- 9,13 ---- #include <iomanip> #include <sstream> + #include <ostream> #include <adobe/name.hpp> *************** *** 17,46 **** /*************************************************************************************************/ ! namespace { /*************************************************************************************************/ ! std::string format_line_position(std::istream& stream, const adobe::line_position_t& position) { typedef std::streampos pos_t; - - const char* current_file (""); - - std::ostringstream result; - - /* - REVISIT (sparent) : It may be better to save and restore the stream state instead of - clearing it. - */ - - stream.clear(); ! // Get the line with the error ! ! stream.seekg(position.line_start_m); ! stream.unsetf(std::ios_base::skipws); ! std::string line_string (adobe::get_line( std::istream_iterator<char>(stream), ! std::istream_iterator<char>()).second); // Replace any tabs with spaces --- 18,32 ---- /*************************************************************************************************/ ! namespace adobe { /*************************************************************************************************/ ! std::ostream& operator<<(std::ostream& result, const line_position_t& position) { typedef std::streampos pos_t; ! const char* current_file (""); ! std::string line_string(position.file_snippet()); // Replace any tabs with spaces *************** *** 62,66 **** int width_int (static_cast<int>(std::streamoff(width))); // shorten to an int ! // If the file name has changed - the output it if (position.stream_name() && (std::strcmp(position.stream_name(), current_file) != 0)) --- 48,52 ---- int width_int (static_cast<int>(std::streamoff(width))); // shorten to an int ! // If the file name has changed then output it if (position.stream_name() && (std::strcmp(position.stream_name(), current_file) != 0)) *************** *** 76,101 **** result << ": " << line_string << '\n'; result << std::setw(width_int) << std::setfill(' ') << '^' << '\n'; ! ! return result.str(); } /*************************************************************************************************/ ! } // namespace ! ! /*************************************************************************************************/ ! ! namespace adobe { ! ! /*************************************************************************************************/ ! ! line_position_t::line_position_t( const ident_pair_t& ident_pair, ! int line_number, ! std::streampos line_start, ! std::streampos position) : line_number_m(line_number), line_start_m(line_start), position_m(position), ! ident_pair_m(ident_pair) { } --- 62,81 ---- result << ": " << line_string << '\n'; result << std::setw(width_int) << std::setfill(' ') << '^' << '\n'; ! ! return result; } /*************************************************************************************************/ ! line_position_t::line_position_t( adobe::name_t file_path, ! getline_proc_t getline_proc, ! int line_number, ! std::streampos line_start, ! std::streampos position) : line_number_m(line_number), line_start_m(line_start), position_m(position), ! file_name_m(file_path), ! getline_proc_m(getline_proc) { } *************** *** 104,108 **** line_start_m(0), position_m(-1), ! ident_pair_m(ident_pair_t(adobe::name_t(stream_name), boost::any())) { } --- 84,88 ---- line_start_m(0), position_m(-1), ! file_name_m(adobe::name_t(stream_name)) { } *************** *** 115,124 **** #endif // !defined(ADOBE_NO_DOCUMENTATION) - const char* line_position_t::stream_name() const - { return ident_pair_m.first.get(); } - - boost::any line_position_t::stream_token() const - { return ident_pair_m.second; } - /*************************************************************************************************/ --- 95,98 ---- *************** *** 132,151 **** last (error.line_position_set().end()); iter != last; ++iter) { ! const line_position_t& position (*iter); ! ! boost::any token(position.stream_token()); ! ! if (token.empty()) continue; ! ! std::istream* stream(0); ! ! if (token.type() == typeid(std::istream*)) stream = *boost::any_cast<std::istream*>(&token); ! else if (token.type() == typeid(std::ifstream*)) stream = *boost::any_cast<std::ifstream*>(&token); ! else if (token.type() == typeid(boost::filesystem::ifstream*)) stream = *boost::any_cast<boost::filesystem::ifstream*>(&token); ! else if (token.type() == typeid(std::stringstream*)) stream = *boost::any_cast<std::stringstream*>(&token); ! else if (token.type() == typeid(std::istringstream*)) stream = *boost::any_cast<std::istringstream*>(&token); ! else continue; ! ! result << format_line_position(*stream, position); } --- 106,110 ---- last (error.line_position_set().end()); iter != last; ++iter) { ! result << *iter; } *************** *** 166,172 **** last (error.line_position_set().end()); iter != last; ++iter) { ! const adobe::line_position_t& position (*iter); ! ! result << format_line_position(stream, position); } --- 125,129 ---- last (error.line_position_set().end()); iter != last; ++iter) { ! result << *iter; } |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:28
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources/win In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/future/widgets/sources/win Modified Files: ui_core_implementation.cpp Removed Files: display.cpp event_dispatcher.cpp metrics.cpp ui_overlay.cpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes --- display.cpp DELETED --- --- metrics.cpp DELETED --- --- ui_overlay.cpp DELETED --- --- event_dispatcher.cpp DELETED --- Index: ui_core_implementation.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources/win/ui_core_implementation.cpp,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** ui_core_implementation.cpp 24 Jan 2006 05:01:27 -0000 1.10 --- ui_core_implementation.cpp 24 Jan 2006 19:38:47 -0000 1.11 *************** *** 55,59 **** namespace { ! /****************************************************************************************************/ namespace hackery { --- 55,59 ---- namespace { ! /****************************************************************************************************/ namespace hackery { |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:28
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/future/widgets/sources Modified Files: client_assembler.cpp ui_core.cpp ui_core_common.cpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: ui_core_common.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources/ui_core_common.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ui_core_common.cpp 6 Jan 2006 18:02:59 -0000 1.6 --- ui_core_common.cpp 24 Jan 2006 19:38:47 -0000 1.7 *************** *** 78,81 **** --- 78,101 ---- /****************************************************************************************************/ + ui_core_error_handler_proc_t& ui_core_error_handler() + { + static ui_core_error_handler_proc_t ui_core_error_handler_proc_s; + + return ui_core_error_handler_proc_s; + } + + /****************************************************************************************************/ + + void report_ui_element_error(const std::string& error) + { + ui_core_error_handler_proc_t& proc(ui_core_error_handler()); + + if (proc.empty()) return; + + proc(error); + } + + /****************************************************************************************************/ + } // namespace adobe Index: ui_core.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources/ui_core.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ui_core.cpp 6 Jan 2006 18:02:59 -0000 1.5 --- ui_core.cpp 24 Jan 2006 19:38:47 -0000 1.6 *************** *** 9,12 **** --- 9,13 ---- #include "ui_core.hpp" #include "ui_core_implementation.hpp" + #include "ui_core_common.hpp" #include <adobe/value.hpp> *************** *** 46,49 **** --- 47,57 ---- /****************************************************************************************************/ + void set_ui_core_error_handler(ui_core_error_handler_proc_t proc) + { + ui_core_error_handler() = proc; + } + + /****************************************************************************************************/ + void system_beep() { Index: client_assembler.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources/client_assembler.cpp,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** client_assembler.cpp 6 Jan 2006 18:02:59 -0000 1.7 --- client_assembler.cpp 24 Jan 2006 19:38:47 -0000 1.8 *************** *** 270,273 **** --- 270,282 ---- virtual ~client_proxy_t() { } + + /* + REVISIT (sparent) : late_bind is a HACK - here is the issue, a basic seet calls the monitor + function when set to make sure the item being connected to the sheet is aware of the + current value. For an optinal panel this sets visibility - be the panel isn't yet connected + to the layout! Need to think through the proper ordering here... + */ [...1182 lines suppressed...] ! notifier ); ! ! adobe::virtual_machine_t evaluator; ! /* ! We set the initial parent to be the root of the main display, an ! empty eve iterator and the given dialog size. ! */ ! adobe::parse(stream, adobe::line_position_t(file_path, getline_proc), ! adobe::widget_node_t(dialog_size, adobe::eve_t::iterator(), adobe::get_main_display().root() ! #ifndef NDEBUG ! , adobe::ui_overlay_t::position_t() ! #endif ! ), ! bind_layout(boost::bind(&client_assembler, boost::ref(token), _1, _2, _3, factory), ! result->layout_sheet_m, evaluator)); result->contributing_m = sheet.contributing(); return result; |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:28
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/test/begin Modified Files: Jamfile.v2 Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: Jamfile.v2 =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/Jamfile.v2,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Jamfile.v2 7 Nov 2005 18:08:58 -0000 1.4 --- Jamfile.v2 24 Jan 2006 19:38:50 -0000 1.5 *************** *** 14,18 **** # Directory name for Windows specific sources and headers # ! PLATFORM_DIRECTORIES_NAME = win ; --- 14,18 ---- # Directory name for Windows specific sources and headers # ! PLATFORM_DIRECTORIES_NAME = win32 ; |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:28
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources/fltk In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/future/widgets/sources/fltk Modified Files: display.cpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: display.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/sources/fltk/display.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** display.cpp 7 Nov 2005 18:08:58 -0000 1.2 --- display.cpp 24 Jan 2006 19:38:47 -0000 1.3 *************** *** 65,68 **** --- 65,74 ---- /****************************************************************************************************/ + template <> + fltk::Widget* unwrap_display_token<fltk::Widget*, adobe::display_t::position_t>(adobe::display_t::position_t& position) + { return (boost::any_cast<view_wrap>(position)).ref_m; } + + /****************************************************************************************************/ + display_t::display_t() : object_m(new implementation_t()) {} display_t::~display_t() |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:28
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/future/widgets Modified Files: Jamfile.v2 Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: Jamfile.v2 =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/widgets/Jamfile.v2,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** Jamfile.v2 6 Jan 2006 18:02:58 -0000 1.6 --- Jamfile.v2 24 Jan 2006 19:38:46 -0000 1.7 *************** *** 39,43 **** # Directory name for Windows specific sources and headers # ! PLATFORM_DIRECTORIES_NAME = win ; --- 39,43 ---- # Directory name for Windows specific sources and headers # ! PLATFORM_DIRECTORIES_NAME = win32 ; |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:28
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/documentation/sources/gil In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/documentation/sources/gil Modified Files: main.dox Added Files: design_guide.dox tutorial.dox Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: main.dox =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/documentation/sources/gil/main.dox,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** main.dox 6 Jan 2006 18:02:55 -0000 1.1 --- main.dox 24 Jan 2006 19:38:44 -0000 1.2 *************** *** 20,25 **** \section ResourcesSec Resources - \ref BeforeAfterExample "See the GIL difference!" Example of code before and after GIL. ! - A tutorial is nearing completion and should be released soon. ! - A detailed GIL design guide is also nearing completion and should be released soon. \section InstallationSec Installation --- 20,25 ---- \section ResourcesSec Resources - \ref BeforeAfterExample "See the GIL difference!" Example of code before and after GIL. ! - A Quick, Hands-on \ref GILTutorial "Tutorial". (In <a href="gil_tutorial.pdf">PDF</a>) ! - A Detailed \ref GILDesignGuide "Design Guide". (In <a href="gil_design_guide.pdf">PDF</a>) \section InstallationSec Installation *************** *** 33,125 **** - <b>Sean Parent</b> and Alex Stepanov suggested splitting the image into a 'container' and 'range' classes - <b>Bjarne Stroustrup</b> reviewed the core library design - */ - - /*! - \defgroup Pixels Channels and Pixels - \ingroup asl_gil - \brief The pixel concept represents a color unit in an image - */ - - /*! - \defgroup Channels Channels - \ingroup Pixels - \brief Channels and channel operations - */ - - /*! - \defgroup ColorSpaces Color Spaces - \ingroup Pixels - \brief Color spaces and color space conversion - */ - - /*! - \defgroup ColorBase Color Bases - \ingroup Pixels - \brief A bundle of channel values/references/pointers of a given color space - */ - - /*! - \defgroup Iterators Pixel Iterators - \ingroup asl_gil - \brief Iterators operating on pixels - */ - - /*! - \defgroup IteratorTraits Iterator Traits - \ingroup Iterators - \brief Traits for pixel iterators - */ - - /*! - \defgroup ByteOperations Byte-level operations - \ingroup Iterators - \brief Byte-level operations on pixel iterators - */ - - /*! - \defgroup byte_step byte_step - \ingroup ByteOperations - \brief returns the number of bytes from the current pixel of a pointer to the next - */ - - /*! - \defgroup byte_distance byte_distance - \ingroup ByteOperations - \brief Returns the distance in bytes from the first pixel iterator to the second - */ - - /*! - \defgroup byte_advance byte_advance - \ingroup ByteOperations - \brief Moves a pixel iterator a given distance in bytes - */ - - /*! - \defgroup byte_advanced byte_advanced - \ingroup ByteOperations - \brief Returns a pixel iterator a given byte distance away from a given pixel iterator - */ - - /*! - \defgroup byte_advanced_ref byte_advanced_ref - \ingroup ByteOperations - \brief Shortcut to advancing a pixel iterator by a given number of bytes and taking the reference in case the compiler is not smart enough - */ ! /*! ! \defgroup Image Image View and Image ! \ingroup asl_gil ! \brief Image views and image-level operations */ ! /*! ! \defgroup Variant Variant ! \ingroup asl_gil ! \brief Support for concepts with run-time instantiation. Used in GIL to provide images and image views of run-time specified color space, channel depth, etc. ! */ ! /*! ! \defgroup Metafunctions Meta-functions ! \ingroup asl_gil ! \brief Meta-functions that construct types or return type properties ! */ --- 33,253 ---- - <b>Sean Parent</b> and Alex Stepanov suggested splitting the image into a 'container' and 'range' classes - <b>Bjarne Stroustrup</b> reviewed the core library design ! \section gil_toc GIL Table of Contents ! - \ref GILConcepts ! - \ref PointConcept ! - \ref ChannelConcept ! - \ref ColorSpaceTypeConcept ! - \ref PixelConcept ! - \ref IteratorConcept ! - \ref IteratorAdaptorConcept ! - \ref StepIteratorConcept ! - \ref ImageIteratorConcept ! - \ref LocatorConcept ! - \ref LocatorNDConcept ! - \ref Locator2DConcept ! - \ref XYLocatorConcept ! - \ref ImageViewConcept ! - \ref ImageViewNDConcept ! - \ref ImageView2DConcept ! - \ref GILImageViewConcept ! - \ref ImageConcept ! - \ref ImageNDConcept ! - \ref Image2DConcept ! - \ref GILImageConcept ! - \ref GILModels ! - \ref Channel ! - \ref ColorSpaces ! - \ref CMYK ! - \ref ColorConvert ! - \ref GRAY ! - \ref LAB ! - \ref RGB ! - \ref RGBA ! - \ref Pixel ! - \ref ChannelAccessor ! - \ref ColorBase ! - \ref Iterators ! - \ref PlanarPtr ! - \ref IteratorTraits ! - \ref ByteOperations ! - \ref byte_step ! - \ref byte_distance ! - \ref byte_advance ! - \ref byte_advanced ! - \ref byte_advanced_ref ! - \ref ImageView ! - \ref ImageViewConstructors ! - \ref Image ! - \ref Variant ! - \ref Metafunctions ! - \ref type_factory ! - \ref Algorithms */ ! /// @defgroup GILConcepts GIL Concepts ! /// \ingroup asl_gil ! /// \brief GIL concept definitions, archetypes and concept checks ! /// @defgroup PointConcept Point ! /// @ingroup GILConcepts ! /// \brief Concept for N-dimensional point and refinement for 2D ! Ê ! /// @defgroup ChannelConcept Channel ! /// @ingroup GILConcepts ! /// \brief Concept for channel and mutable channel ! Ê ! /// @defgroup ColorSpaceTypeConcept Color Space ! /// @ingroup GILConcepts ! /// \brief Concept for color space type ! Ê ! /// @defgroup PixelConcept Pixel ! /// @ingroup GILConcepts ! /// \brief Concept for pixel and mutable pixel ! Ê ! /// @defgroup IteratorConcept Iterator ! /// @ingroup GILConcepts ! /// \brief Concept for iterators over pixels (fundamental, step, adaptor and image-pixel iterators over immutable/mutable pixels) ! /// @defgroup IteratorAdaptorConcept Iterator Adaptor ! /// @ingroup IteratorConcept ! /// \brief Concept for an iterator adaptor over a base iterator ! Ê ! /// @defgroup StepIteratorConcept Step Iterator ! /// @ingroup IteratorConcept ! /// \brief Concept for an iterator that has non-fundamental step ! Ê ! /// @defgroup ImageIteratorConcept Image Iterator ! /// @ingroup IteratorConcept ! /// \brief Concept for an iterator over all pixels in an image ! Ê ! /// @defgroup LocatorConcept Locator ! /// @ingroup GILConcepts ! /// \brief Concept for locator (generalization of iterator in N-dimensional space) ! /// @defgroup LocatorNDConcept N-Dimensional Locator ! /// @ingroup LocatorConcept ! /// \brief Concept for an N-dimensional locator over immutable/mutable values ! Ê ! /// @defgroup Locator2DConcept 2-Dimensional Locator ! /// @ingroup LocatorConcept ! /// \brief Concept for a 2-dimensional locator over immutable/mutable values ! Ê ! /// @defgroup XYLocatorConcept GIL's 2-Dimensional Pixel Locator ! /// @ingroup LocatorConcept ! /// \brief Concept for GIL's 2-dimensional locator over immutable/mutable pixels ! Ê ! /// @defgroup ImageViewConcept Image View ! /// @ingroup GILConcepts ! /// \brief Concept for image view (N-dimensional range) ! /// @defgroup ImageViewNDConcept N-Dimensional Image View ! /// @ingroup ImageViewConcept ! /// \brief Concept for an N-dimensional range over immutable/mutable values ! Ê ! /// @defgroup ImageView2DConcept 2-Dimensional Image View ! /// @ingroup ImageViewConcept ! /// \brief Concept for a 2-dimensional range over immutable/mutable values ! Ê ! /// @defgroup GILImageViewConcept GIL's 2-Dimensional Pixel Image View ! /// @ingroup ImageViewConcept ! /// \brief Concept for GIL's 2-dimensional range over immutable/mutable pixels ! Ê ! /// @defgroup ImageConcept Image ! /// @ingroup GILConcepts ! /// \brief Concept for image (N-dimensional container) ! /// @defgroup ImageNDConcept N-Dimensional Image ! /// @ingroup ImageConcept ! /// \brief Concept for an N-dimensional container of immutable/mutable values ! Ê ! /// @defgroup Image2DConcept 2-Dimensional Image ! /// @ingroup ImageConcept ! /// \brief Concept for a 2-dimensional container of immutable/mutable values ! Ê ! /// @defgroup GILImageConcept GIL's 2-Dimensional Pixel Image ! /// @ingroup ImageConcept ! /// \brief Concept for GIL's 2-dimensional container of immutable/mutable pixels ! Ê ! /// @defgroup GILModels GIL Models ! /// \ingroup asl_gil ! /// \brief Standard models of GIL concepts ! Ê ! /// @defgroup Channel Channel ! /// @ingroup GILModels ! /// \brief Channel and channel operations ! Ê ! /// @defgroup ColorSpaces Color Space ! /// @ingroup GILModels ! /// \brief Color spaces and color space conversion ! Ê ! /// @defgroup Pixel Pixel ! /// @ingroup GILModels ! /// \brief Pixel and pixel-related functions ! ÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊÊ ! /// @defgroup ChannelAccessor Channel Accessor ! /// @ingroup Pixel ! /// \brief Classes allowing accessing a channel of a pixel ! Ê ! /// @defgroup ColorBase Color Bases ! /// @ingroup Pixel ! /// \brief A bundle of channel values/references/pointers of a given color space ! Ê ! /// @defgroup Iterators Pixel Iterators ! /// @ingroup GILModels ! /// \brief Iterators operating on pixels ! Ê ! /// @defgroup PlanarPtr Planar Pointers ! /// @ingroup Iterators ! /// \brief Implementations of pointers to planar pixels ! Ê ! /// @defgroup IteratorTraits Iterator Traits ! /// @ingroup Iterators ! /// \brief Traits for pixel iterators ! Ê ! /// @defgroup ByteOperations Byte-level operations ! /// @ingroup Iterators ! /// \brief Byte-level operations on pixel iterators ! Ê ! /// @defgroup byte_step byte_step ! /// @ingroup ByteOperations ! /// \brief returns the number of bytes from the current pixel of a pointer to the next ! Ê ! /// @defgroup byte_distance byte_distance ! /// @ingroup ByteOperations ! /// \brief Returns the distance in bytes from the first pixel iterator to the second ! Ê ! /// @defgroup byte_advance byte_advance ! /// @ingroup ByteOperations ! /// \brief Moves a pixel iterator a given distance in bytes ! Ê ! /// @defgroup byte_advanced byte_advanced ! /// @ingroup ByteOperations ! /// \brief Returns a pixel iterator a given byte distance away from a given pixel iterator ! Ê ! /// @defgroup byte_advanced_ref byte_advanced_ref ! /// @ingroup ByteOperations ! /// \brief Shortcut to advancing a pixel iterator by a given number of bytes and taking the reference in case the compiler is not smart enough ! Ê ! /// \defgroup ImageView Image View ! /// @ingroup GILModels ! /// \brief Image views and related operations ! Ê ! /// @defgroup ImageViewConstructors Image View Constructors ! /// @ingroup ImageView ! /// \brief Methods for constructing image views from raw data or other image views ! Ê ! /// \defgroup Image Image ! /// @ingroup GILModels ! /// \brief Images and related operations ! Ê ! /// @defgroup Variant Variant ! /// @ingroup GILModels ! /// \brief Support for concepts with run-time instantiation. Used in GIL to provide images and image views of run-time specified color space, channel depth, etc. ! Ê ! /// @defgroup Metafunctions Meta-functions ! /// @ingroup GILModels ! /// \brief Meta-functions that construct types or return type properties ! Ê ! /// @defgroup Algorithms Algorithms ! /// @ingroup GILModels ! /// \brief Some basic STL-style algorithms when applied to images (as opposed to ranges) ! Ê ! /// \brief namespace for functions not directly needed by the client ! namespace detail {} --- NEW FILE: tutorial.dox --- //////////////////////////////////////////////////////////////////////////////////////// /// \file /// \brief Doxygen documentation /// \author Lubomir Bourdev and Hailin Jin \n /// Adobe Systems Incorporated /// /// //////////////////////////////////////////////////////////////////////////////////////// /** \page GILTutorial Generic Image Library Tutorial \author Lubomir Bourdev (lbo...@ad...) and Hailin Jin (hl...@ad...) \n Adobe Systems Incorporated \version 1.0 \date January 10, 2006 The Generic Image Library (GIL) is a C++ library that abstracts image representations from algorithms and allows writing code that can work on a variety of images with performance similar to hand-writing for a specific image type. <p>This document will give you a jump-start in using GIL. It does not discuss the underlying design of the library and does not cover all aspects of it. You can find a detailed library design document on the main GIL web page at http://opensource.adobe.com/gil - \ref InstallSec - \ref ObjectsSec - \ref UsefulTypedefs - \ref GenericObjects - \ref RelatedTypes - \ref ImageAndViewSec - \ref ImageSec - \ref ImageViewSec - \ref ImageViewFactory - \ref ManipulatingImages - \ref ContextIndepdendentPixOp - \ref GenericAndSpecialized - \ref ContextAwareOperations - \ref VariantSec - \ref ExtendingGIL - \ref CodeExamples - \ref HistogramExample - \ref SafeAreaExample - \ref GDIExample \section InstallSec Installation GIL is part of Adobe Software Library (ASL) which can be installed at http://opensource.adobe.com. GIL consists of header files only and can be used as stand-alone also. Its only dependency is boost. There is no library to link against. Including \p image_view_factory.hpp will be sufficient for most projects. \section ObjectsSec Basic Concepts <i>Pixels</i> are the fundamental building blocks of images. A pixel is a sequence of channels whose number and interpretation are defined by a color space. <i>Pixel iterators</i> are any random access iterators that operate on pixels. A built-in C pointer to a pixel is a valid pixel iterator. <i>Pixel xy locators</i> (or just pixel locators) are like iterators, but allow navigation in both x and y. <i>Image view</i> provides access to a 2D array of pixels without ownership. It is to images what a range is to STL-s containers. Most image-level algorithms operate on image views. Image views allow 1D and 2D access of the pixels and provide iterators to traverse the rows and columns. An <i>image</i> is a container of pixels. It allocates and deallocates the pixels and can provide its associated image view. \subsection UsefulTypedefs Typedefs for Concrete Types There are typedefs to refer to any concrete image, pixel iterator, pixel locator, pixel reference or pixel value. They follow this pattern: <p> \e ColorSpace + \e BitDepth + ("c") + ("_planar") + ("_step") + \e ClassType <p> Where \e ColorSpace also indicates the ordering of components. Examples are \p rgb, \p bgr, \p cmyk, \p rgba. \e BitDepth can be \p 8,\p 16,\p 32. \p c indicates object operating over immutable pixels. \p _planar indicates planar organization (as opposed to interleaved). \p _step indicates special image views, locators and iterators which traverse the data in non-trivial way (for example, backwards or every other pixel). \e ClassType is \p _image (image), \p _view (image view), \p _loc (pixel 2D locator) \p _ptr (pixel iterator), \p _ref (pixel reference), \p _pixel (pixel value). Here are examples: \code bgr8_image i; // 8-bit interleaved BGR image cmyk16_pixel; x; // 16-bit CMYK pixel value; cmyk16c_planar_ref p(x); // const reference to a 16-bit planar CMYK pixel x. rgb32_planar_step_ptr ii; // step pointer to a 32-bit planar RGB pixel. \endcode \subsection GenericObjects Generic Representation Let \p T be a channel type (\p bits8 (or \p unsigned \p char), \p bits16 (or \p unsigned \p short), \p bits32 (or \p float), etc), and \p C be a color space tag (\p rgb_tag, \p bgr_tag, \p rgba_tag, \p cmyk_tag, etc.) This is how pixel constructs are defined generically: \code pixel<T,C> v; // any pixel value pixel<T,C>& r(x); // reference to an interleaved pixel x pixel<T,C>* p; // pointer to an interleaved pixel pixel<const T,C>* p; // pointer to a constant interleaved pixel pixel<T&,C> pr(x); // reference to any planar pixel x pixel<const T&,C> cpr(x); // constant reference to any planar pixel x planar_ptr<T,C> pp; // pointer to any planar pixel // factory metafunctions (see the design guide for more) typename iterator_type<T,C,true>::type it; // equivalent to planar_ptr<T,C> ('true' means planar) typename view_type<T,C,false>::type img_view; // interleaved image view typename image_type<T,C,true>::type img; // planar image of channel type T, color space tag C typename type_from_x_iterator<X_IT>::view_type v; // image view corresponding to a given pixel iterator X_IT \endcode \subsection RelatedTypes Getting a Type Related to a Given Type As the example illustrates, planar pixels have non-standard pointers and references. You never have to worry about knowing the correct type - if you have a pointer to a pixel, you can query related types via its \p std::iterator_traits. All pixel iterators have traits that define the types related to the pixel iterator. For example, the iterator traits for a raw (interleaved) pointer to a pixel look like this: \code namespace std { template <typename T, typename C> struct iterator_traits<pixel<T,C>*> { typedef random_access_iterator_tag iterator_category; typedef pixel<T,C> value_type; typedef ptrdiff_t difference_type; typedef value_type& reference; typedef value_type* pointer; typedef T channel_type; // color channel typedef C color_space_tag; // color space identifier typedef ... const_reference; // reference to immutable pixel typedef ... const_type; // iterator over immutable pixels typedef ... dynamic_step_type; // iterator that can skip over pixels static const bool is_planar=false; // planar vs interleaved statoc const bool is_base=true; // base iterator vs adaptor over another iterator }; } \endcode Note that pixel iterators have additional types in their iterator traits, the most common of which are shown above. Locators, image views and images don't have traits classes, but provide most of the above as member typedefs. One important typedef is \p const_type. It returns the type otherwise identical to the source type, but operating over immutable pixels. Note the difference from a constant type - a constant iterator (locator, image view) does not allow modifying itself (advancing the iterator, resizing the image view) but may or may not allow modifying the underlying pixels. \p const_type returns a type that does not allow modifying the underlying pixels. \section ImageAndViewSec Images and Image Views \section ImageSec Image An image is a 2D container. It allocates memory for the pixels in its constructor, deallocates it in its destructor, and deep-copies the pixels in its copy constructor. Images can be created given width, height, and (optionally) row alignment policy: \code // 10x10 interleaved 8-bit RGB image with 4-byte alignment for rows rgb8_image my_rgb8_img(10,10, 4); // 10x10 planar 16-bit CMYK image. Dimensions can also be specified via point_type: typedef point2<ptrdiff_t> point_type; cmyk16_planar_image img(point_type(10,10)); // 10x10 generic planar image of type T and color space CS. typename image_type<T,CS,true>::type my_generic_img(10,10); \endcode \section ImageViewSec Image View Image data is accessed via image view. An image view is a lightweight delimiter of a 2D array of pixels with shallow copy constructor and assignment operator. It is similar to a range (a pair of iterators) in STL. Algorithms typically operate on image views. Images are only used to allocate and hold the pixel data. Image views can be obtained from images: \code rgb8_view v=view(my_rgb8_img); typename view_type<T,CS,true>::type v=view(my_generic_img); \endcode Constant images disallow modification of not only the image parameters but also the pixels. The views that constant images return have constant channel type: \code template <typename IMG> // Models GIL Image void my_const_test(const IMG& img) { // IMG::view_type v=view(img); // Error: can't get non-const view from const image IMG::const_view_type v=const_view(img); // OK // v(0,0)[0]=3; // Error: can't change pixels through const view } \endcode Note that \p IMG::const_view_type is the same as \p IMG::view_type::const_type but is different from <tt>const IMG::view_type</tt>. The former is a view over constant pixel data, whereas the latter is a constant view over pixels that may or may not be modifyable through the view. Image views can also be constructed as shallow views of existing pixel data. For example: \code // pointer to existing raw 8-bit BGR interleaved data unsigned char* raw_bgr=...; // 100x100 8-bit interleaved BGR image over the existing data, with 300 bytes per row: bgr8_view img_view=interleaved_view<bgr8_pixel>(100,100,raw_bgr,300); // const pointers to the red, green and blue planes of a planar 16-bit RGB image const unsigned short* r=...; const unsigned short* g=...; const unsigned short* b=...; // 100x100 16-bit constant planar RGB image view over the existing data, with 300 bytes per row: rgb16c_planar_view img=planar_rgb_view(100,100,r,g,b,300); \endcode It is also possible to construct an image from an image view and a custom allocator object. That allows for creating images that take over ownership of the data or that work with 3rd party reference counting mechanisms. \subsection ImageViewFactory Creating Image Views from Other Image Views It is possible to construct one image view from another by changing some policy of how image data is interpreted: \code // flipped upside-down, left-to-right, transposed view template <typename VIEW> VIEW flipud_view(const VIEW& src); template <typename VIEW> typename VIEW::dynamic_step_type fliplr_view(const VIEW& src); template <typename VIEW> typename VIEW::dynamic_step_type transposed_view(const VIEW& src); // rotations template <typename VIEW> typename VIEW::dynamic_step_type rotated180_view(const VIEW& src); template <typename VIEW> typename VIEW::dynamic_step_type rotated90cw_view(const VIEW& src); template <typename VIEW> typename VIEW::dynamic_step_type rotated90ccw_view(const VIEW& src); // view of an axis-aligned rectangular area within an image template <typename VIEW> VIEW subimage_view(const VIEW& src, const VIEW::point_type& top_left, const VIEW::point_type& dimensions); // subsampled view (skipping pixels in X and Y) template <typename VIEW> typename VIEW::dynamic_step_type subsampled_view(const VIEW& src, const VIEW::point_type& step); // color and bit depth converted view to match pixel type P template <typename SRC_VIEW, // Models ImageViewConcept typename DST_P> // Models PixelConcept struct color_convert_types { typedef ... x_iterator; // dereference iterator adaptor that converts SRC_VIEW::value_type to DST_P typedef ... view_type; // image view adaptor with value type DST_P, over SRC_VIEW }; template <typename VIEW, typename P> typename color_convert_types<VIEW,P>::view_type color_convert_view(const VIEW& src); // single-channel view of the N-th channel of a given view template <typename SRC_VIEW> struct nth_channel_types { typedef ... x_iterator; // iterator over a single-channel of the rows of SRC_VIEW typedef ... view_type; // its corresponding image view type }; template <typename VIEW> typename nth_channel_types<VIEW>::view_type nth_channel_view(const VIEW& view, int n); \endcode Note that views are taken as constant references. There are currently no operations that modify views. This is because views are so lightweight, that they can be constructed from scratch. The view mutability is preserved in the above methods. For example, \p flipud_view called with a mutable view will return another mutable view. Here is example of using views: \code rgb16_image img(100,100); // an RGB interleaved image // grayscale view over the green (index 1) channel of img gray16_step_view green=nth_channel_view(view(img),1); // 50x50 view of the green channel of img, upside down and taking every other pixel in X and in Y gray16_step_view ud_fud=flipud_view(subsampled_view(green,2,2)); \endcode Note that image views are fast, constant-time, shallow views over the pixel data. The above code does not copy any pixels; it operates on the pixel data allocated when \p img was created. \section ManipulatingImages Image Manipulation \subsection ContextIndepdendentPixOp Context-Independent Pixel Operations Many image operations can be applied to each pixel independently, without knowledge of its location or neighbors. Examples of such operations are assignment, equality, and computing a histogram. Similar to STL containers, image views provide a 1D navigation capability using \p begin() and \p end() call. Here is how to set all values of an 8-bit RGB interleaved image view to red: \code void make_red(const rgb8_view& img) { rgb8_pixel red(255,0,0); for (rgb8_view::iterator it=img.begin(); it!=img.end(); ++it) *it=red; } \endcode Here is a generic version of the above: \code template <typename VIEW> // Models GIL Mutable Image View void make_red(const VIEW& img) { typename VIEW::value_type red; color_convert(rgb8_pixel(255,0,0), red); // convert to red in the image color space and bit depth for (typename VIEW::iterator it=img.begin(); it!=img.end(); ++it) *it=red; } \endcode Standard STL algorithms can be used directly (also \p color_converter may be used to return destination pixel): \code template <typename VIEW> // Models GIL Mutable Image View void make_red(const VIEW& img) { gil_function_requires<MutableImageViewConcept<VIEW> >(); // optional typedef typename VIEW::value_type pixel_type; pixel_type red=color_converter<pixel_type>()(rgb8_pixel(255,0,0)); std::fill(img.begin(), img.end(), red); } \endcode Note that GIL constructs are models of GIL concepts and algorithms operate on any model of the GIL concept. Therefore you can use your own view type instead. The call to \p gil_function_requires ensures at compile-time that the template parameter \p VIEW does, in fact, satisfy the requirements of GIL image views. This code uses boost's Concept Check library. It has only compile-time penalty and is only effective in debug mode, and when \p USE_GIL_CONCEPT_CHECK is defined. Such concept checks can sometimes result in more readable compile error messages. See the GIL's Design Guide for more about GIL's concepts. There are also GIL-equivalents for some standard algorithms that take image views: \code template <typename VIEW> // Models GIL Mutable Image View void make_red(const VIEW& img) { fill_pixels(img, color_converter<typename VIEW::value_type>()(rgb8_pixel(255,0,0))); } \endcode The above code works for both planar and interleaved image views of any bit depth, color space, channel ordering or alignment policy. It also works with views constructed as shallow views of other views (upside down, subsampled, subimage, etc). It will also work for new image view types and new color spaces that can be defined in a future extension to the library. Use STL algorithms (\p std::fill) or the GIL versions (\p fill_pixels) when available, as GIL may have provided overloads optimized for performance. For example, depending on your image type, \p std::fill and \p fill_pixels may resolve to \p memset. \subsection GenericAndSpecialized Generic and Specialized Versions Suppose you want to have a generic version of the algorithm, but you want to do something slightly different for certain color spaces or pixel types. For example, you may want to provide an assembly-level optimization or GPU optimization that only works for 8-bit interleaved RGBA images. Here is how to make our \p make_red algorithm do something different for, say, planar RGB images. <p> First we need to wrap the method inside a function object, templated over the horizontal pixel iterator: \code template <typename IT> // Models GIL Mutable Pixel Iterator struct make_red_fn_obj { template <typename VIEW> // Models GIL Mutable Image View void operator()(const VIEW& img) const { fill_pixels(img, color_converter<typename VIEW::value_type>()(rgb8_pixel(255,0,0))); } }; \endcode Now we use template specialization to define the behavior when the iterator is a planar RGB pointer of any channel type \p T: \code template <typename T> struct make_red_fn_obj<planar_ptr<T,rgb_tag> > { template <typename VIEW> // Models GIL Mutable Image View void operator()(const VIEW& img) { planar_ptr<T,rgb_tag> p=img.x_at(0,0); // planar pointer to the first pixel fast_rgb8_make_red(p.r, p.g, p.b, sizeof(T)*8, img.width(), img.height(), img.row_bytes()); } }; // in bottlenecks void fast_rgb8_make_red(void* r, void* g, void* b, int depth, int width, int height, int row_bytes) { ... } \endcode Finally the \p make_red algorithm takes a view and dispatches to the right implementation: \code template <typename VIEW> // Models GIL Mutable Image View void make_red(const VIEW& img) { make_red_fn_obj<typename VIEW::x_iterator>()(img); } \endcode \subsection ContextAwareOperations Context-Aware Pixel Operations When the pixel position and the notion of rows and columns matters, use the appropriate image accessors and iterators. \p VIEW::x_iterator is a random-access pixel iterator that moves horizontally (for simple interleaved images it is just a pointer). \p VIEW::y_iterator is a random-access pixel iterator that moves vertically. Here is some sample code: \code // VIEW is an image view type (a template parameter or concrete view, like rgb8_view) VIEW img(...); typedef typename VIEW::value_type pixel_type; img(3,5)=img(7,10); // setting pixel at x=3,y=5 to the value of pixel at x=7,y=10 typename VIEW::point_type c(10,10); img(c).set_channels(0); // operator() also works on points img[11]=img[12]; // operator[] gives you 1D access (constant time, but slow!) // here is how to make the 5-th column red: pixel_type red=color_converter<pixel_type>()(rgb8_pixel(255,0,0)); for(typename VIEW::y_iterator yit=img.col_begin(5); yit!=img.col_end(5); ++yit) *yit=red; // or just std::fill(img.col_begin(5), img.col_end(5), red); // here is one way to traverse each row and column: for (size_t y=0; y<img.height(); ++y) for (typename VIEW::x_iterator xit=img.row_begin(y); xit!=img.row_end(y); ++xit) *xit=red; // here is another: for (size_t y=0; y<img.height(); ++y) { typename VIEW::x_iterator row_first=img.row_begin(y); for (size_t x=0; x<img.width(); ++x) row_first[x]=red; } \endcode Pixel XY locators are lightweight constructs that allow for 2D navigation relative to pixel coordinates: \code VIEW img_view(...); // let VIEW be a GIL Image View typedef typename VIEW::point_type point_type; typename VIEW::locator loc; loc=img_view.xy_at(10,10); // start at pixel (x=10,y=10) ++loc.x(); // move to (11,10) loc.y()+=15; // move to (11,25) loc-=point_type(1,1); // move to (10,24) *loc=(loc(-1,0)+loc(1,0))/2; // set pixel (10,24) to the average of its left and right neighbors \endcode As the example shows, the locator's \p x() and \p y() accessors return 1D random access iterators that let us change each dimension independently, but we can navigate over both dimensions simultaneously via operators \p +,\p -,\p += and \p -=. Locators are fast and lightweight objects. For example, the locator for a simple interleaved image consists of one raw pointer to the current pixel plus an integer for the row size in bytes, for a total of 8 bytes. <tt> ++loc.x() </tt> amounts to incrementing a raw pointer. That said, an operation like <tt>*loc=(loc(-1,0)+loc(1,0))/2</tt> when applied over the entire image is slower than maintaining and incrementing separate pointers to each neighbor. Locators can cache relative positions of their neighbors if they have to be accessed frequently (see the GIL Design Guide for more). Also beware that locators are not aware of the image view bounds. \section VariantSec Run-time specified images and image views Image and image view algorithms require knowing the image parameters at compile time. When image parameters are available only at run time, GIL's \p variant must be used. The name <i>variant</i> comes from \p boost::variant, which is very similar in spirit, though GIL's mechanism has a number of advantages that prevent us from using \p boost::variant. Variants are an advanced mechanism described in more detail in GIL's design guide. Briefly, they allow a non-templated instance (such as "any_image") to hold the value of run-time instantiated model (such as "rgb8_planar_image" or "my_image"). We call the set of allowable models the <i>concept space</i>. GIL provides concept spaces for standard images and image views via the \p conceptspace extension (though users may provide their own): \code // defines any_image, any_view, any_const_view #include <adobe\gil\extension\conceptspace\any_standard_image.hpp> // holder to any standard image any_image myDynImage; // Assign it an 8-bit RGB image at run time myDynImage=rgb8_image(10,10); // Replace it with a 16-bit CMYK image. move_in is like operator= but more efficient // It does not copy the data. After the call img2 will be empty (the pixels will be inside myDynImage) cmyk16_planar_image img2(100,100); myDynImage.move_in(img2); // Get the view of the dynamic image any_view myDynView=view(myDynImage); // The cast will succeed, since the view currently refers to 16-bit CMYK data cmyk16_planar_view concrete_view=myDynView._dynamic_cast<cmyk16_planar_view>(); // will throw std::bad_cast myDynView._dynamic_cast<rgb8_view>(); \endcode Variants are very efficient and by default the instantiated model is stored on the stack. Invoking a method through a variant has a performance penalty comparable to going through a single switch statement. Therefore variants of images and image views can be used for high level algorithms with practically no performance penalty. See GIL's design guide for how to make variants use your algorithms. Most GIL algorithms have versions that can take image view variants in place of templated views: \code rgb8_view v1(...); // concrete image view bgr8_view v2(...); // concrete image view compatible with v1 and of the same size any_view av(...); // run-time specified image view // Copies the pixels from v1 into v2. If the pixels are incompatible triggers compile error copy_pixels(v1,v2); // The source or destination (or both) may be run-time instantiated. // If they happen to be incompatible, throws std::bad_cast copy_pixels(v1, av); copy_pixels(av, v2); copy_pixels(av, av); \endcode Other algorithms taking variants are \p fill_pixels, \p equal_pixels, \p transform_pixels, etc. See the GIL Design Guide for more. Here is how the variant-taking \p fill_pixels looks like: \code template <typename IVCS, // Models Image View Concept Space typename VAL> // Models GIL Pixel void fill_pixels(const variant<IVCS>& img_view, const VAL& val) { img_view.apply_visitor(GIL::detail::fill_pixels_fn<VAL>(val)); } \endcode \p variant holds an object with a run-time instantiated type and \p IVCS is a template parameter specifying, among other things, the set of types the variant can take. In our case all types must be valid mutable GIL image views (i.e. models of \p MutableImageViewConcept) whose pixels are compatible with \p VAL. \p any_view (defined in GIL's conceptspace extension) is a typedef of a variant over a set of a few dozen commonly used image views, specified in the extension. There are also \p any_const_view and \p any_image typedefs: \code // inside <adobe\gil\extension\conceptspace\any_standard_image.hpp> class AnyImageViewConceptSpace { ... // defines the set of commonly used image views }; typedef variant<AnyImageViewConceptSpace> any_view; typedef variant<AnyConstImageViewConceptSpace> any_const_view; typedef variant<AnyImageConceptSpace> any_image; \endcode There is no \p any_const_image typedef (and no \p const_type typedef inside the image class), because images, being containers, propagate their constness to the pixels. To obtain an image with immutable pixels, simply use a constant reference to an image (or, for run-time specified images, a constant reference to \p any_image). \p apply_visitor takes a function object and will typically go through a switch statement to identify the currently instantiated view and invoke the function object with the specified view type. There is also a global version of \p apply_visitor taking two variants. The function object must have an application operator whose only parameter is a concrete type the variant can take. See the sample code below for an example of creating such a function object. See the GIL design guide for more on variants. GIL's I/O extension makes extensive use of run-time specified images. Here is how to make a 180-degree rotated copy of an image saved on disk, preserving its native color space and channel depth (the file formats are inferred automatically from the image extensions): \code #include <adobe\gil\extension\conceptspace\any_standard_image.hpp> #include <adobe\gil\extension\io\image_io.hpp> void save_180rot(const std::string& fileNameIn, const std::string& fileNameOut) { any_image img; load_image(img, fileNameIn); save_view(rotated180_view(view(img)), fileNameOut); } \endcode Variants should be used with caution (especially algorithms that take more than one variant) because they instantiate the algorithm for every possible model that the variant can take. This can take a toll on compile time and executable size. Despite these limitations, \p variant is a powerful technique that allows us to combine the speed of compile-time resolution with the flexibility of run-time resolution. It allows us to treat images of different parameters uniformly as a collection and store them in the same container. \section ExtendingGIL Extending the Generic Image Library GIL allows extending and replacing virtually any part of it. You can define your own channel types, color spaces, pixels, pixel iterators, locators, image views, images, and algorithms. You can make higher-dimensional images, virtual images that live on the disk, inside a jpeg file, somewhere on the internet, or even fully-synthetic images such as the Mandelbrot set. Written properly, they will work with any existing GIL code. Most such extensions require no changes to the library and can thus be supplied in another module. The GIL Design Guide contains more information on ways to extend GIL. \section CodeExamples Code Examples \subsection HistogramExample Histogram The the histogram can be computed by counting the number of pixel values that fall in each bin. The following method takes a grayscale (one-dimensional) image view, since only grayscale pixels are convertible to integers: \code template <typename GRAY_VIEW, typename R> void grayimage_histogram(const GRAY_VIEW& img, R& hist) { for (typename GRAY_VIEW::iterator it=img.begin(); it!=img.end(); ++it) ++hist[*it]; } \endcode Using \p boost::lambda and GIL's \p for_each_pixel algorithm, we can write this more compactly: \code template <typename GRAY_VIEW, typename R> void grayimage_histogram(const GRAY_VIEW& img, R& hist) { for_each_pixel(img, ++var(hist)[_1]); } \endcode Where \p for_each_pixel invokes \p std::for_each and \p var and \p _1 are \p boost::lambda constructs. To compute the luminosity histogram, we call the above method using the grayscale view of an image: \code template <typename VIEW, typename R> void luminosity_histogram(const VIEW& img, R& hist) { grayimage_histogram(color_convert_view<gray8_pixel>(img),hist); } // this is how to invoke it: unsigned char hist[255]; fill(hist,hist+255,0); luminosity_histogram(img,hist); // img is an image view \endcode If we want to view the histogram of the first channel of the image, we call: \code grayimage_histogram(nth_channel_view(img,1),hist); \endcode \subsection SafeAreaExample Creating a Copy of an Image with a Safe Buffer. Suppose we want to convolve an image with multiple kernels, the largest of which is 2K+1 x 2K+1 pixels. It may be worth creating a margin of K pixels around the image borders. Here is how to do it: \code template <typename SRC_VIEW, // Models ImageViewConcept (the source view) typename DST_IMG> // Models ImageConcept (the returned image) void create_with_margin(const SRC_VIEW& src, int k, DST_IMG& result) { gil_function_requires<ImageViewConcept<SRC_VIEW> >(); gil_function_requires<MutableImageConcept<DST_IMG> >(); result=DST_IMG(src.width()+2*k, src.height()+2*k); SRC_VIEW centerImg=subimage_view(view(result), k,k,src.width(),src.height()); std::copy(src.begin(), src.end(), centerImg.begin()); } \endcode We allocated a larger image, then we used \p subimage_view to create a shallow image of its center area of top left corner at (k,k) and of identical size as \p src, and finally we copied \p src into that center image. If the margin needs initialization, we could have done it with \p fill_pixels. Here is how to simplify this code using the \p copy_pixels algorithm: \code template <typename SRC_VIEW, typename DST_IMG> void create_with_margin(const SRC_VIEW& src, int k, DST_IMG& result) { resize_clobber_image(result, src.width()+2*k, src.height()+2*k); copy_pixels(src, subimage_view(view(result), k,k,src.width(),src.height())); } \endcode (Note also that \p resize_clobber_image is more efficient than \p operator=, as it uses \p std::swap). Not only does the above example work for planar and interleaved images of any color space and pixel depth; it is also quite fast. GIL overrides \p std::copy - when called on two identical interleaved images with no padding at the end of rows, it simply does a \p memmove. For planar images it does \p memmove for each channel. If one of the images has padding, (as in our case) it will try to do \p memmove for each row. When an image has no padding, it will use its lightweight horizontal iterator (as opposed to the more complex 1D image iterator that has to check for the end of rows). It choses the fastest method, taking into account both static and run-time parameters. \subsection GDIExample Transforming One Image Format to Another Suppose you need to display an image on the screen using Windows GDI. GDI accepts images as 8-bit BGR interleaved, upside-down with 4-byte row alignment. Converting an image from any format to any other is as simple as creating an empty image of the target format and copying the pixels: \code template <typename VIEW> void create_GDI_compatible(const VIEW& src, bgr8_image& result) { bgr8_image tmp(src.dimensions(), 4); // WinGDI wants 8-bit BGR with 4-byte row alignment copy_pixels(color_convert_view<bgr8_pixel>(flipud_view(src)), tmp); swap(result, tmp); } \endcode We can use \p copy_and_convert_pixels instead. In addition to simplifying the code, it is more efficient, as it bypasses color conversion when both the color space is already RGB (or related, like BGR) and the channel depth is already 8-bit: \code template <typename VIEW> void create_GDI_compatible(const VIEW& src, bgr8_image& result) { bgr8_image tmp(src.dimensions(), 4); // WinGDI wants 8-bit BGR with 4-byte row alignment copy_and_convert_pixels(flipud_view(src), tmp); swap(result, tmp); } \endcode Here is how to make our algorithm work for run-time specified views. First we need to wrap it into a function object whose application operator takes just the templated view: \code namespace detail { struct create_GDI_compatible_fnobj { bgr8_image& _result; create_GDI_compatible_fnobj(bgr8_image& result) : _result(result) {} typedef void result_type; // required typedef template <typename VIEW> result_type operator()(const VIEW& src) { create_GDI_compatible(src, _result); } }; } \endcode (Normally we use the return type of the application operator to return the result, which would simplify the code. However, images are expensive to return by value.) Now we need to provide an overload that takes GIL's variant, which will hold run-time instantiated view: \code template <typename IVCS> // Models Image View Concept Space void create_GDI_compatible(const variant<IVCS>& src, bgr8_image& result) { detail::create_GDI_compatible_fnobj fnobj(result); src.apply_visitor(fnobj); } \endcode Now we can use our algorithm with both compile-time specified views (like \p cmyk16_planar_view) or run-time specified views (like \p any_view). */ --- NEW FILE: design_guide.dox --- //////////////////////////////////////////////////////////////////////////////////////// /// \file /// \brief Doxygen documentation /// \author Lubomir Bourdev and Hailin Jin \n /// Adobe Systems Incorporated /// /// //////////////////////////////////////////////////////////////////////////////////////// /** \page GILDesignGuide Generic Image Library Design Guide \author Lubomir Bourdev (lbo...@ad...) and Hailin Jin (hl...@ad...) \n Adobe Systems Incorporated \version 1.0 \date January 10, 2006 <p>This document describes the design of the Generic Image Library, a C++ image-processing library that abstracts image representation from algorithms on images. [...2032 lines suppressed...] \li <b> Performance.</b> Speed has been instrumental to the design of the library. The generic algorithms provided in the library are comparable in speed to hand-coding the algorithm for a specific image type. \li <b> Flexibility.</b> Compile-type parameter resolution results in faster code, but severely limits code flexibility. The library allows for any image parameter to be specified at run time, at a minor performance cost. \li <b> Extensibility.</b> It is easy to extend the library with new color spaces and image types. Library extensions typically require no changes to the library core; at the same time existing image algorithms apply to new color spaces and image types. \li <b> Compatibility.</b> The library is designed as an STL and Boost complement. Generic STL algorithms can be used for pixel manipulation, and they are specifically targeted for optimization. The library works with existing raw pixel data from another image library and can even be integrated into a third-party reference counting mechanism. <hr> \section AcknowledgementsDG 16. Acknowledgements - <b>Jon Brandt</b>, <b>Mark Ruzon</b> and <b>Paul McJones</b> spent significant time reviewing the library and documentation and provided valuable feedback. - <b>Alex Stepanov</b>'s class has directly inspired this project. Alex's "start from the inside" and "bottom up" principles have been applied throughout the design. - <b>Sean Parent</b> and Alex Stepanov suggested splitting the image into a 'container' and 'range' classes */ |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:23
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/documentation/sources/structure In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/documentation/sources/structure Modified Files: cvs_howto.dox news.dox Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: cvs_howto.dox =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/documentation/sources/structure/cvs_howto.dox,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** cvs_howto.dox 2 Jun 2005 23:15:54 -0000 1.2 --- cvs_howto.dox 24 Jan 2006 19:38:44 -0000 1.3 *************** *** 10,17 **** \verbatim ! joeuser% cd /local/cvsroot/directory ! joeuser% cvs -d:pserver:ano...@cv...:/cvsroot/adobe-source login ! joeuser% cvs -z3 -d:pserver:ano...@cv...:/cvsroot/adobe-source checkout adobe-source ! joeuser% cvs -d:pserver:ano...@cv...:/cvsroot/adobe-source logout \endverbatim --- 10,17 ---- \verbatim ! cd /local/cvsroot/directory ! cvs -d:pserver:ano...@cv...:/cvsroot/adobe-source login ! cvs -z3 -d:pserver:ano...@cv...:/cvsroot/adobe-source checkout adobe-source ! cvs -d:pserver:ano...@cv...:/cvsroot/adobe-source logout \endverbatim *************** *** 23,30 **** \verbatim ! joeuser% cd /local/cvsroot/directory ! joeuser% cvs -d:pserver:ano...@cv...:80/cvsroot/adobe-source login ! joeuser% cvs -z3 -d:pserver:ano...@cv...:80/cvsroot/adobe-source checkout adobe-source ! joeuser% cvs -d:pserver:ano...@cv...:80/cvsroot/adobe-source logout \endverbatim --- 23,30 ---- \verbatim ! cd /local/cvsroot/directory ! cvs -d:pserver:ano...@cv...:80/cvsroot/adobe-source login ! cvs -z3 -d:pserver:ano...@cv...:80/cvsroot/adobe-source checkout adobe-source ! cvs -d:pserver:ano...@cv...:80/cvsroot/adobe-source logout \endverbatim Index: news.dox =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/documentation/sources/structure/news.dox,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** news.dox 6 Jan 2006 18:02:56 -0000 1.5 --- news.dox 24 Jan 2006 19:38:44 -0000 1.6 *************** *** 6,12 **** \page top_news Top News ! \par January 05, 2005 - ASL 1.0.12 Released Highlights of the 1.0.12 changes include: ! - The Generic Image Library (GIL) has been added. This library allows for writing generic imaging algorithms with performance comparable to hand-coding for a particular image type - Lubomir has been hard at work getting the GIL tutorial and design guide ready for release. We anticipate it within a couple weeks. - ASL now compiles against Boost 1.33.1 --- 6,17 ---- \page top_news Top News ! \par January 16, 2006 - GIL Tutorial and Design Guide Released ! \ref asl_gil \ref GILTutorial "tutorial" and \ref GILDesignGuide "design guide" is now available. Thanks to Lubomir Bourdev and Hailin Jin for all the work. ! \par ! Head over to <a href="http://opensource.adobe.com/gil">opensource.adobe.com/gil</a> for this extended documentation. ! ! \par January 05, 2006 - ASL 1.0.12 Released Highlights of the 1.0.12 changes include: ! - The \ref asl_gil has been added. This library allows for writing generic imaging algorithms with performance comparable to hand-coding for a particular image type - Lubomir has been hard at work getting the GIL tutorial and design guide ready for release. We anticipate it within a couple weeks. - ASL now compiles against Boost 1.33.1 *************** *** 18,22 **** Head over to the <a href="http://sourceforge.net/project/showfiles.php?group_id=132417&package_id=145420">download</a> section to grab it. ! \par January 05, 2005 - In Memory of Grant Munsey \htmlonly <table><tr><td align='center' valign='top'> --- 23,27 ---- Head over to the <a href="http://sourceforge.net/project/showfiles.php?group_id=132417&package_id=145420">download</a> section to grab it. ! \par January 05, 2006 - In Memory of Grant Munsey \htmlonly <table><tr><td align='center' valign='top'> *************** *** 143,149 **** \par February 25, 2005 - ASL 1.0.1 Preview Released We are happy to announce the release of the Adobe Open Source Libraries to the public. We have documentation and some tutorials available (\ref asl_home), as well as sources and binaries available for <a href="http://sourceforge.net/project/showfiles.php?group_id=132417&package_id=145420">download</a>. A good place to start is by reading the \ref asl_foreword and \ref asl_overview. - - \page opensource_news_dummy_page stub page - This stub page is included so Doxygen will include the following images: - \image html grant_munsey.jpg "Grant and his wife Sandy in 2000" */ --- 148,150 ---- |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:22
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/documentation/sources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/documentation/sources Modified Files: documentation.doxygen Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: documentation.doxygen =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/documentation/sources/documentation.doxygen,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** documentation.doxygen 6 Jan 2006 18:02:53 -0000 1.19 --- documentation.doxygen 24 Jan 2006 19:38:43 -0000 1.20 *************** *** 652,659 **** --- 652,665 ---- # the \image command). + # REVISIT (fbrereto) : We hook this to include files via a stub doxygen page + # that Doxygen wouldn't otherwise include. Put the file you want to copy into + # the destination folder under doxygen_support_files/include/ and add it as + # an "image" to the doxygen_support_files/include_stub.dox file. + IMAGE_PATH = ./asl/related/images \ ./asl/images \ ./gil/images \ ./tutorials/images \ + ./doxygen_support_files/include \ ./doxygen_support_files/images |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:18
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/test/begin/resources Modified Files: editor.eve msvc8.release.begin.exe.manifest Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: msvc8.release.begin.exe.manifest =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/resources/msvc8.release.begin.exe.manifest,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** msvc8.release.begin.exe.manifest 6 Jan 2006 18:03:01 -0000 1.2 --- msvc8.release.begin.exe.manifest 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 25,30 **** name='Microsoft.VC80.CRT' version='8.0.50608.0' processorArchitecture='*' ! publicKeyToken='1fc8b3b9a1e18e3b' /> </dependentAssembly> </dependency> --- 25,32 ---- name='Microsoft.VC80.CRT' version='8.0.50608.0' + language="*" processorArchitecture='*' ! publicKeyToken='1fc8b3b9a1e18e3b' ! /> </dependentAssembly> </dependency> Index: editor.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/resources/editor.eve,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** editor.eve 6 Jan 2006 18:03:01 -0000 1.4 --- editor.eve 24 Jan 2006 19:38:50 -0000 1.5 *************** *** 5,68 **** */ ! dialog(name: "<xstr id='editor_dialog_title'>Editor</xstr>", size: @size_small, placement: place_column, grow: true, horizontal: align_fill, vertical: align_fill) { ! tab_group( bind: @tab_group_visible, vertical: align_fill, horizontal: align_fill, ! items: ! [ ! { name: "<xstr id='editor_tab_adam'>Adam</xstr>", value: @adam_stuff }, ! { name: "<xstr id='editor_tab_eve'>Eve</xstr>", value: @eve_stuff }, ! { name: "<xstr id='editor_tab_inspector'>Inspector</xstr>", value: @inspector_stuff }, ! { name: "<xstr id='editor_tab_results'>Results</xstr>", value: @results_stuff }, ! { name: "<xstr id='editor_tab_errors'>Errors</xstr>", value: @errors_stuff } ! ]) { ! panel(bind: @tab_group_visible, value: @adam_stuff) { ! edit_text(bind: @adam_expression, characters: 80, lines: 10, scrollable: true, monospaced: true, horizontal: align_fill, vertical: align_fill); ! ! row(vertical: align_bottom) { ! button(name: "<xstr id='editor_button_update'>Update</xstr>", bind: @adam_expression, action: @update_adam); ! button(name: "<xstr id='editor_button_save'>Save</xstr>", bind: @adam_expression, action: @save_adam); ! } ! } ! panel(bind: @tab_group_visible, value: @eve_stuff) ! { ! edit_text(bind: @eve_expression, characters: 80, lines: 10, scrollable: true, monospaced: true, horizontal: align_fill, vertical: align_fill); ! row(vertical: align_bottom) { ! button(name: "<xstr id='editor_button_update'>Update</xstr>", bind: @eve_expression, action: @update_eve); ! button(name: "<xstr id='editor_button_save'>Save</xstr>", bind: @eve_expression, action: @save_eve); } - } ! panel(bind: @tab_group_visible, value: @inspector_stuff) ! { ! row(vertical: align_top, horizontal: align_fill) { ! edit_text(bind: @inspector_expression, name: "<xstr id='editor_inspector_expression'>Expression:</xstr>", characters: 30, horizontal: align_fill); ! button( horizontal: align_right, ! items: [ ! { name: "<xstr id='editor_inspector_execute'>Execute</xstr>", bind: @inspector_expression, action: @inspector }, ! { name: "<xstr id='editor_inspector_dump'>Dump</xstr>", bind: @inspector_expression, action: @inspector_dump, modifiers: @opt }, ! { name: "<xstr id='editor_inspector_version'>Version</xstr>", bind: @inspector_expression, action: @version_info, modifiers: @cmd } ! ]); } - - edit_text(name: "<xstr id='editor_inspector_results'>Results:</xstr>", bind: @inspector_results, lines: 10, characters: 30, - scrollable: true, monospaced: true, vertical: align_fill, horizontal: align_fill); - } ! panel(bind: @tab_group_visible, value: @results_stuff) ! { ! edit_text(bind: @results_expression, characters: 80, lines: 10, scrollable: true, monospaced: true, horizontal: align_fill, vertical: align_fill); ! } ! panel(bind: @tab_group_visible, value: @errors_stuff) ! { ! edit_text(bind: @errors_expression, characters: 80, lines: 10, scrollable: true, monospaced: true, horizontal: align_fill, vertical: align_fill); } } ! } --- 5,72 ---- */ ! layout editor { ! view dialog( name: "<xstr id='editor_dialog_title'>Editor</xstr>", ! size: @size_small, placement: place_column, grow: true, horizontal: align_fill, vertical: align_fill) { ! tab_group( bind: @tab_group_visible, vertical: align_fill, horizontal: align_fill, ! items: ! [ ! { name: "<xstr id='editor_tab_adam'>Adam</xstr>", value: @adam_stuff }, ! { name: "<xstr id='editor_tab_eve'>Eve</xstr>", value: @eve_stuff }, ! { name: "<xstr id='editor_tab_inspector'>Inspector</xstr>", value: @inspector_stuff }, ! { name: "<xstr id='editor_tab_results'>Results</xstr>", value: @results_stuff }, ! { name: "<xstr id='editor_tab_errors'>Errors</xstr>", value: @errors_stuff } ! ]) { ! panel(bind: @tab_group_visible, value: @adam_stuff) { ! edit_text(bind: @adam_expression, characters: 80, lines: 10, scrollable: true, monospaced: true, horizontal: align_fill, vertical: align_fill); ! row(vertical: align_bottom) ! { ! button(name: "<xstr id='editor_button_update'>Update</xstr>", bind: @adam_expression, action: @update_adam); ! button(name: "<xstr id='editor_button_save'>Save</xstr>", bind: @adam_expression, action: @save_adam); ! } ! } ! panel(bind: @tab_group_visible, value: @eve_stuff) { ! edit_text(bind: @eve_expression, characters: 80, lines: 10, scrollable: true, monospaced: true, horizontal: align_fill, vertical: align_fill); ! ! row(vertical: align_bottom) ! { ! button(name: "<xstr id='editor_button_update'>Update</xstr>", bind: @eve_expression, action: @update_eve); ! button(name: "<xstr id='editor_button_save'>Save</xstr>", bind: @eve_expression, action: @save_eve); ! } } ! panel(bind: @tab_group_visible, value: @inspector_stuff) { ! row(vertical: align_top, horizontal: align_fill) ! { ! edit_text(bind: @inspector_expression, name: "<xstr id='editor_inspector_expression'>Expression:</xstr>", characters: 30, horizontal: align_fill); ! button( horizontal: align_right, ! items: [ ! { name: "<xstr id='editor_inspector_execute'>Execute</xstr>", bind: @inspector_expression, action: @inspector }, ! { name: "<xstr id='editor_inspector_dump'>Dump</xstr>", bind: @inspector_expression, action: @inspector_dump, modifiers: @opt }, ! { name: "<xstr id='editor_inspector_version'>Version</xstr>", bind: @inspector_expression, action: @version_info, modifiers: @cmd } ! ]); ! } ! ! edit_text(name: "<xstr id='editor_inspector_results'>Results:</xstr>", bind: @inspector_results, lines: 10, characters: 30, ! scrollable: true, monospaced: true, vertical: align_fill, horizontal: align_fill); } ! panel(bind: @tab_group_visible, value: @results_stuff) ! { ! edit_text(bind: @results_expression, characters: 80, lines: 10, scrollable: true, monospaced: true, horizontal: align_fill, vertical: align_fill); ! } ! panel(bind: @tab_group_visible, value: @errors_stuff) ! { ! edit_text(bind: @errors_expression, characters: 80, lines: 10, scrollable: true, monospaced: true, horizontal: align_fill, vertical: align_fill); ! } } } ! } \ No newline at end of file |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:16
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/sources/win32 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/test/begin/sources/win32 Added Files: main.cpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes --- NEW FILE: main.cpp --- /* Copyright 2005 Ralph Thomas Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ /****************************************************************************************************/ #include "express_viewer.hpp" #include "event_dispatcher.hpp" #include "report_exception.hpp" #include "display.hpp" #include "resources.h" #include "wincast.hpp" #include <adobe/xstring.hpp> #include <boost/filesystem/convenience.hpp> #define WIN32_LEAN_AND_MEAN #include <windows.h> #include <Commctrl.h> #include <tchar.h> #include <sstream> #include <ostream> #include <string> /*************************************************************************************************/ #if defined(BOOST_MSVC) && defined(BOOST_THREAD_USE_LIB) extern "C" void tss_cleanup_implemented() { } #endif /****************************************************************************************************/ namespace { /****************************************************************************************************/ enum { ADOBE_ABOUT = 40001, ADOBE_QUIT, ADOBE_REFRESH_VIEW, ADOBE_REFRESH_SHEET, ADOBE_NORMAL_DIALOG_SIZE, ADOBE_SMALL_DIALOG_SIZE, ADOBE_MINI_DIALOG_SIZE, ADOBE_SHOW_WIDGET_FRAMES, ADOBE_CLEAR_WIDGET_FRAMES, ADOBE_SERIALIZE_WIDGETS, ADOBE_RUN_MODAL, ADOBE_LOCALIZATION_ENUS, ADOBE_LOCALIZATION_DEDE, ADOBE_LOCALIZATION_JAJP, ADOBE_LOCALIZATION_KOKR, ADOBE_LOCALIZATION_PGPG }; /****************************************************************************************************/ void clip_quotes(std::string& str) { // // Sometimes GetCommandLine puts double quotes at the beginning and // end of the command line (this doesn't always happen, not if the // program was started from the prompt instead of the GUI). // if( str[0] == '"' ) str = str.substr( 1, str.size() - 2 ); } /****************************************************************************************************/ void open_document(adobe::application_t* app, const std::string& filename) { boost::filesystem::path file( filename, boost::filesystem::native ); std::string extension( boost::filesystem::extension( file ) ); if ( extension == ".eve") app->set_eve_file( file ); else if ( extension == ".adm") app->set_adam_file( file ); } /****************************************************************************************************/ } // namespace /****************************************************************************************************/ namespace adobe { /****************************************************************************************************/ // /// Main window event handler /// /// \param window the window associated with the event. /// \param message the Windows event type. /// \param wParam the pointer parameter. /// \param lParam the integer parameter. /// /// \return zero, or whatever the default window handler returns. // LRESULT CALLBACK main_window_proc(HWND window, UINT message, WPARAM wParam, LPARAM lParam) { application_t* app(hackery::cast<application_t*>(::GetWindowLongPtr(window, GWLP_USERDATA))); bool handled(true); if (message == WM_CLOSE) { ::PostQuitMessage(0); } if (message == WM_COMMAND) { //HMENU menu(::GetMenu(window)); WORD command(LOWORD(wParam)); switch(command) { case ADOBE_ABOUT: ::MessageBox(NULL, _T("Adobe Begin Copyright 2005-2006 Adobe Systems Incorporated"), _T("About Adobe Begin"), MB_OK); break; case ADOBE_QUIT: ::PostQuitMessage(0); break; case ADOBE_REFRESH_VIEW: app->display_window(); break; case ADOBE_REFRESH_SHEET: app->load_sheet(); break; case ADOBE_NORMAL_DIALOG_SIZE: app->set_dialog_size( size_normal_s ); app->display_window(); break; case ADOBE_SMALL_DIALOG_SIZE: app->set_dialog_size( size_small_s ); app->display_window(); break; case ADOBE_MINI_DIALOG_SIZE: app->set_dialog_size( size_mini_s ); app->display_window(); break; #ifndef NDEBUG case ADOBE_SHOW_WIDGET_FRAMES: app->frame_window(); break; case ADOBE_CLEAR_WIDGET_FRAMES: app->clear_window_frames(); break; #else case ADOBE_SHOW_WIDGET_FRAMES: case ADOBE_CLEAR_WIDGET_FRAMES: system_beep(); break; #endif case ADOBE_SERIALIZE_WIDGETS: app->serialize_connections(); break; case ADOBE_RUN_MODAL: app->run_current_as_modal(); break; case ADOBE_LOCALIZATION_ENUS: adobe::implementation::top_frame().attribute_set_m.insert( std::make_pair(adobe::static_token_range("lang"), adobe::static_token_range("en-us"))); app->display_window(); break; case ADOBE_LOCALIZATION_DEDE: adobe::implementation::top_frame().attribute_set_m.insert( std::make_pair(adobe::static_token_range("lang"), adobe::static_token_range("de-de"))); app->display_window(); break; case ADOBE_LOCALIZATION_JAJP: adobe::implementation::top_frame().attribute_set_m.insert( std::make_pair(adobe::static_token_range("lang"), adobe::static_token_range("ja-jp"))); app->display_window(); break; case ADOBE_LOCALIZATION_KOKR: adobe::implementation::top_frame().attribute_set_m.insert( std::make_pair(adobe::static_token_range("lang"), adobe::static_token_range("ko-kr"))); app->display_window(); break; case ADOBE_LOCALIZATION_PGPG: adobe::implementation::top_frame().attribute_set_m.insert( std::make_pair(adobe::static_token_range("lang"), adobe::static_token_range("pg-pg"))); app->display_window(); break; default: handled = false; } } else if (message == WM_DROPFILES) { HDROP drop(reinterpret_cast<HDROP>(wParam)); UINT numfiles(::DragQueryFile(drop, 0xFFFFFFFF, NULL, 0)); for (UINT i(0); i < numfiles; ++i) { UINT size_needed(::DragQueryFile(drop, i, NULL, 0)); std::string buffer(size_needed + 1, 0); ::DragQueryFileA(drop, i, &buffer[0], size_needed + 1); std::string temp(&buffer[0]); if (temp.rfind(".adm") == temp.size() - 4) app->set_adam_file(boost::filesystem::path(temp.c_str(), boost::filesystem::native)); else if (temp.rfind(".eve") == temp.size() - 4) app->set_eve_file(boost::filesystem::path(temp.c_str(), boost::filesystem::native)); } ::DragFinish(drop); app->load_sheet(); } else if (message == WM_DESTROY) { } else { handled = false; } // // Pass it to the default window procedure if we haven't handled it. // return handled ? 0 : DefWindowProcW(window, message, wParam, lParam); } /****************************************************************************************************/ void setup_main_window( application_t* app ) { // INIT ONCE all this stuff! INITCOMMONCONTROLSEX control_info = { sizeof(INITCOMMONCONTROLSEX), 0x0000FFFF }; ::InitCommonControlsEx(&control_info); WNDCLASSW wc; const wchar_t* window_class(L"adobe_begin_main_window"); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = main_window_proc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = ::GetModuleHandle(NULL); wc.hIcon = LoadIcon(wc.hInstance, MAKEINTRESOURCE(RES_APP_ICON)); wc.hCursor = LoadCursor(0, IDC_ARROW); wc.hbrBackground = (HBRUSH)(COLOR_BTNFACE + 1); wc.lpszMenuName = window_class; wc.lpszClassName = window_class; RegisterClassW(&wc); HWND root_window = ::CreateWindowExW( WS_EX_WINDOWEDGE | WS_EX_DLGMODALFRAME | WS_EX_COMPOSITED, window_class, L"Adobe Begin", WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU, 10, 10, 640, 100, NULL, ::CreateMenu(), ::GetModuleHandle(NULL), NULL); if (root_window == NULL) throw std::runtime_error("Could not open main window"); ::ShowWindow(root_window, SW_NORMAL); ::DragAcceptFiles(root_window, TRUE); ::SetWindowLongPtrA(root_window, GWLP_USERDATA, hackery::cast<LONG>(app)); // setup the menu system HMENU menu_bar(::GetMenu(root_window)); HMENU app_menu(::CreatePopupMenu()); HMENU view_options_menu(::CreatePopupMenu()); HMENU localization_menu(::CreatePopupMenu()); ::AppendMenu(app_menu, MF_STRING, ADOBE_ABOUT, _T("&About Adobe Begin")); ::AppendMenu(app_menu, MF_SEPARATOR, 0, NULL); ::AppendMenu(app_menu, MF_STRING, ADOBE_QUIT, _T("&Quit Adobe Begin")); ::AppendMenu(view_options_menu, MF_STRING, ADOBE_REFRESH_VIEW, _T("&Refresh View")); ::AppendMenu(view_options_menu, MF_STRING, ADOBE_REFRESH_SHEET, _T("R&efresh Sheet")); ::AppendMenu(view_options_menu, MF_SEPARATOR, 0, NULL); ::AppendMenu(view_options_menu, MF_STRING, ADOBE_NORMAL_DIALOG_SIZE, _T("&Normal Dialog Size")); ::AppendMenu(view_options_menu, MF_STRING, ADOBE_SMALL_DIALOG_SIZE, _T("&Small Dialog Size")); ::AppendMenu(view_options_menu, MF_STRING, ADOBE_MINI_DIALOG_SIZE, _T("&Mini Dialog Size")); ::AppendMenu(view_options_menu, MF_SEPARATOR, 0, NULL); ::AppendMenu(view_options_menu, MF_STRING, ADOBE_SHOW_WIDGET_FRAMES, _T("&Show Widget Frames")); ::AppendMenu(view_options_menu, MF_STRING, ADOBE_CLEAR_WIDGET_FRAMES, _T("&Clear Widget Frames")); ::AppendMenu(view_options_menu, MF_SEPARATOR, 0, NULL); ::AppendMenu(view_options_menu, MF_STRING, ADOBE_SERIALIZE_WIDGETS, _T("&Serialize Widgets")); ::AppendMenu(view_options_menu, MF_SEPARATOR, 0, NULL); ::AppendMenu(view_options_menu, MF_STRING, ADOBE_RUN_MODAL, _T("&Run Modal")); ::AppendMenu(localization_menu, MF_STRING, ADOBE_LOCALIZATION_ENUS, _T("&Standard English (en-us)")); ::AppendMenu(localization_menu, MF_STRING, ADOBE_LOCALIZATION_DEDE, _T("&German (de-de)")); ::AppendMenu(localization_menu, MF_STRING, ADOBE_LOCALIZATION_JAJP, _T("&Japanese (ja-jp)")); ::AppendMenu(localization_menu, MF_STRING, ADOBE_LOCALIZATION_KOKR, _T("&Korean (ko-kr)")); ::AppendMenu(localization_menu, MF_STRING, ADOBE_LOCALIZATION_PGPG, _T("&Pig Latin (pg-pg)")); ::AppendMenu(menu_bar, MF_POPUP, hackery::cast<UINT_PTR>(app_menu), _T("&Adobe Begin")); ::AppendMenu(menu_bar, MF_POPUP, hackery::cast<UINT_PTR>(view_options_menu), _T("&View Options")); ::AppendMenu(menu_bar, MF_POPUP, hackery::cast<UINT_PTR>(localization_menu), _T("&Localization")); ::DrawMenuBar(root_window); // set root in display adobe::get_main_display().set_root(root_window); } /****************************************************************************************************/ namespace hackery { bool LPCWSTR_to_string(const WCHAR* wide_string, std::string& result) { typedef std::vector<char> buffer_t; // we know any utf8 encoded character can't be more than 6 bytes, // so we just allocate an extra-large buffer to begin with instead // of calling WideCharToMultiByte twice. std::size_t wide_string_length(std::wcslen(wide_string)); std::size_t buffer_size(wide_string_length * 6); buffer_t buffer(buffer_size + 1); // // Convert characters. // int result_size(WideCharToMultiByte(CP_UTF8, 0, wide_string, static_cast<int>(wide_string_length), &buffer[0], static_cast<int>(buffer_size), 0, 0)); if (result_size == 0) return false; result.assign(std::string(&buffer[0], &buffer[result_size])); return true; } } // namespace hackery /****************************************************************************************************/ bool os_initialize( application_t* app ) { // // We only need to set the resource path on Windows. There are no // system events to install handlers for, etc. We say that the // resource path is the folder with the executable inside. // LPWSTR *szArglist; int nArgs; szArglist = CommandLineToArgvW(GetCommandLineW(), &nArgs); if( NULL == szArglist ) throw std::runtime_error("CommandLineToArgvW failed"); std::string directory_string; if (!hackery::LPCWSTR_to_string(szArglist[0], directory_string)) throw std::runtime_error("Path character conversion failed."); std::string file1; if (nArgs >= 2 && !hackery::LPCWSTR_to_string(szArglist[1], file1)) throw std::runtime_error("Path character conversion failed."); std::string file2; if (nArgs >= 3 && !hackery::LPCWSTR_to_string(szArglist[2], file2)) throw std::runtime_error("Path character conversion failed."); clip_quotes(directory_string); // // Now we need to get a directory from the command line name. // boost::filesystem::path directory( directory_string, boost::filesystem::native ); // // Tell the application... // app->set_resource_directory( directory.branch_path() ); setup_main_window( app ); if (!file1.empty()) { clip_quotes(file1); open_document(app, file1); } if (!file2.empty()) { clip_quotes(file2); open_document(app, file2); } LocalFree(szArglist); return true; } /****************************************************************************************************/ void os_mainloop() { // // This is just the standard Win32 message pump. // MSG msg; while ( GetMessage( &msg, 0, 0, 0 ) ) { try{ // // Push every message through the event_dispatcher, in case it is a keyboard // modifier. // event_dispatcher::keyboard(msg.message, msg.wParam); // // We always pass every message though to the application anyway. // TranslateMessage( &msg ); DispatchMessage( &msg ); } catch ( ... ) { adobe::report_exception(); } } } /****************************************************************************************************/ void os_end_mainloop() { // // This is just the standard Win32 quit message. // ::PostQuitMessage(0); } /****************************************************************************************************/ } /****************************************************************************************************/ int __stdcall WinMain( HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR lpCmdLine, int nCmdShow ) { try { adobe::application_t* theApp = adobe::application_t::getInstance(); if( theApp ) theApp->run(); } catch( ... ) { adobe::report_exception(); } return 0; } |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:12
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/sources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/test/begin/sources Modified Files: express_viewer.cpp report_exception.cpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: report_exception.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/sources/report_exception.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** report_exception.cpp 6 Jan 2006 18:03:02 -0000 1.2 --- report_exception.cpp 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 7,73 **** /****************************************************************************************************/ ! #include "report_exception.hpp" ! ! #include <cassert> ! ! #ifndef NDEBUG ! #include <iostream> ! #endif ! ! /****************************************************************************************************/ ! ! namespace { ! ! /****************************************************************************************************/ ! ! inline adobe::report_exception_proc_t& report_exception_proc() ! { ! static adobe::report_exception_proc_t report_exception_proc_s; ! ! return report_exception_proc_s; ! } ! ! /****************************************************************************************************/ ! ! } // namespace ! ! /****************************************************************************************************/ ! ! namespace adobe { ! ! /****************************************************************************************************/ ! ! namespace implementation { ! ! /****************************************************************************************************/ ! ! void report_exception(const std::string& error_message) ! { ! if (report_exception_proc()) ! { ! report_exception_proc()(error_message); ! } ! #ifndef NDEBUG ! else ! { ! std::cerr << error_message << std::endl; ! } ! #endif ! } ! ! /****************************************************************************************************/ ! ! } // namespace implementation ! ! /****************************************************************************************************/ ! ! void set_report_exception_callback(boost::function<void (const std::string& msg)> proc) ! { ! report_exception_proc() = proc; ! } ! ! /****************************************************************************************************/ ! ! } // namespace adobe ! ! /****************************************************************************************************/ --- 7,9 ---- /****************************************************************************************************/ ! // This file intentionally left blank Index: express_viewer.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/sources/express_viewer.cpp,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** express_viewer.cpp 6 Jan 2006 18:03:02 -0000 1.8 --- express_viewer.cpp 24 Jan 2006 19:38:50 -0000 1.9 *************** *** 14,17 **** --- 14,18 ---- #include <adobe/future/file_slurp.hpp> + #include <adobe/future/modal_dialog_interface.hpp> #include <adobe/adam_evaluate.hpp> *************** *** 43,46 **** --- 44,48 ---- #include <adobe/dictionary.hpp> #include <adobe/config.hpp> + #include <adobe/future/widgets/headers/ui_core.hpp> #include <boost/version.hpp> *************** *** 156,162 **** bfs::ifstream eve_view_stream( editor_eve ); static adobe::auto_ptr<eve_client::eve_client_holder> editor_view_s( ! eve_client::make_view( adobe::line_position_t::ident_pair_t(adobe::name_t(editor_eve.string().c_str()), boost::any(&eve_view_stream)), eve_view_stream, editor_sheet_s, --- 158,166 ---- bfs::ifstream eve_view_stream( editor_eve ); + line_position_t::getline_proc_t getline_proc(new line_position_t::getline_proc_impl_t(boost::bind(&application_t::format_stream_error, boost::ref(*this), _1, _2))); + static adobe::auto_ptr<eve_client::eve_client_holder> editor_view_s( ! eve_client::make_view( adobe::name_t(editor_eve.string().c_str()), getline_proc, eve_view_stream, editor_sheet_s, *************** *** 184,195 **** // editor_sheet_s.update(); ! editor_view_s->eve_m->evaluate(adobe::eve_t::evaluate_nested); editor_view_s->show_window_m(); // ! // set the error reporting callback // ! set_report_exception_callback(boost::bind(&application_t::display_error, boost::ref(*this), _1)); _initialized = true; --- 188,199 ---- // editor_sheet_s.update(); ! editor_view_s->eve_m.evaluate(adobe::eve_t::evaluate_nested); editor_view_s->show_window_m(); // ! // set the ui_core error reporting callback // ! set_ui_core_error_handler(boost::bind(&application_t::display_error, boost::ref(*this), _1)); _initialized = true; *************** *** 431,438 **** // std::stringstream stream( _eve_file_m.as_string() ); ! try { ! _holder_m->push_back( stream, adobe::line_position_t::ident_pair_t(adobe::name_t(_eve_file_m.file_name()), boost::any(&stream)), _dialog_size_m ); } catch(const adobe::stream_error_t&) --- 435,443 ---- // std::stringstream stream( _eve_file_m.as_string() ); ! line_position_t::getline_proc_t getline_proc(new line_position_t::getline_proc_impl_t(boost::bind(&application_t::format_stream_error, boost::ref(*this), _1, _2))); ! try { ! _holder_m->push_back( stream, adobe::name_t(_eve_file_m.file_name()), getline_proc, _dialog_size_m ); } catch(const adobe::stream_error_t&) *************** *** 450,453 **** --- 455,488 ---- /****************************************************************************************************/ + const adobe::file_buffer_t& application_t::_file_lookup(adobe::name_t file_path) + { + boost::filesystem::path test_path(file_path.get(), boost::filesystem::native); + + if (_adam_file_m.get_path() == test_path) + return _adam_file_m; + else if (_eve_file_m.get_path() == test_path) + return _eve_file_m; + + throw std::runtime_error("No filename with that path, sorry"); + } + + /****************************************************************************************************/ + + std::string application_t::format_stream_error(adobe::name_t file_name, std::streampos line_start_position) + { + const adobe::file_buffer_t& file(_file_lookup(file_name)); + + std::string contents(file.as_string()); + + std::string::size_type cr_pos(contents.find("\r", line_start_position)); + std::string::size_type lf_pos(contents.find("\n", line_start_position)); + + std::string::size_type newline_pos(std::min(cr_pos, lf_pos)); + + return contents.substr(line_start_position, newline_pos - line_start_position); + } + + /****************************************************************************************************/ + void application_t::load_sheet() { *************** *** 484,491 **** // std::stringstream stream( _adam_file_m.as_string() ); try { ! adobe::parse( stream, adobe::line_position_t(adobe::line_position_t::ident_pair_t(adobe::name_t(_adam_file_m.file_name()), boost::any(&stream))), bind_to_sheet( *_sheet_m ) ); } catch(const adobe::stream_error_t&) --- 519,527 ---- // std::stringstream stream( _adam_file_m.as_string() ); + line_position_t::getline_proc_t getline_proc(new line_position_t::getline_proc_impl_t(boost::bind(&application_t::format_stream_error, boost::ref(*this), _1, _2))); try { ! adobe::parse( stream, adobe::line_position_t(adobe::name_t(_adam_file_m.file_name()), getline_proc), bind_to_sheet( *_sheet_m ) ); } catch(const adobe::stream_error_t&) *************** *** 526,530 **** void application_t::serialize_connections() { ! #ifdef ADOBE_SERIALIZATION if ( !_holder_m || !_editor_sheet_m ) return; --- 562,566 ---- void application_t::serialize_connections() { ! #if !defined(NDEBUG) && defined(ADOBE_SERIALIZATION) if ( !_holder_m || !_editor_sheet_m ) return; *************** *** 549,552 **** --- 585,606 ---- /****************************************************************************************************/ + void application_t::run_current_as_modal() + { + std::stringstream adam_stream( _adam_file_m.as_string() ); + std::stringstream eve_stream( _eve_file_m.as_string() ); + adobe::dictionary_t input; + adobe::record_info_t record; + adobe::dictionary_t display_state; + adobe::dialog_result_t result = + handle_dialog( input, + record, + display_state, + adobe::dialog_display_s, + eve_stream, + adam_stream); + } + + /****************************************************************************************************/ + void application_t::set_eve_file( const bfs::path& file_name ) { |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:08
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/modal_dialog_interface/resources In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/test/modal_dialog_interface/resources Added Files: Info.plist PkgInfo app_icon.icns Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes --- NEW FILE: Info.plist --- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>CFBundleDevelopmentRegion</key> <string>English</string> <key>CFBundleExecutable</key> <string>modal_dialog_interface</string> <key>CFBundleIconFile</key> <string>app_icon.icns</string> <key>CFBundleIdentifier</key> <string>com.adobe.modal_dialog_interface</string> <key>CFBundleInfoDictionaryVersion</key> <string>6.0</string> <key>CFBundleName</key> <string>modal_dialog_interface.app</string> <key>CFBundlePackageType</key> <string>APPL</string> <key>CFBundleSignature</key> <string>????</string> <key>CFBundleVersion</key> <string>1.0</string> <key>CSResourcesFileMapped</key> <true/> </dict> </plist> --- NEW FILE: PkgInfo --- APPL???? --- NEW FILE: app_icon.icns --- (This appears to be a binary file; contents omitted.) |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:07
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/ide_projects/vc8 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/ide_projects/vc8 Modified Files: adobe_all.vsprops adobe_release.vsprops adobe_widgets.vsprops asl_dev.vcproj asl_dir.vsprops begin.vcproj boost_filesystem.vcproj boost_signals.vcproj boost_thread.vcproj widgets.vcproj Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: boost_filesystem.vcproj =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/ide_projects/vc8/boost_filesystem.vcproj,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** boost_filesystem.vcproj 12 Jan 2006 00:25:02 -0000 1.2 --- boost_filesystem.vcproj 24 Jan 2006 19:38:51 -0000 1.3 *************** *** 1,180 **** ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="8.00" ! Name="boost_filesystem" ! ProjectGUID="{12683712-9847-45C9-8791-EF45D2961F3A}" ! RootNamespace="boost_signals" ! Keyword="Win32Proj" ! > ! <Platforms> ! <Platform ! Name="Win32" ! /> ! </Platforms> ! <ToolFiles> ! </ToolFiles> ! <Configurations> ! <Configuration ! Name="Debug|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\boost_all.vsprops" ! CharacterSet="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories=""$(ProjectDir)..\..\..\third_party\boost_tp\boost"" ! MinimalRebuild="true" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="4" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! <Configuration ! Name="Release|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\boost_all.vsprops;.\adobe_release.vsprops" ! CharacterSet="1" ! WholeProgramOptimization="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! AdditionalIncludeDirectories=""$(ProjectDir)\..\..\..\third_party\boost_tp\boost"" ! PreprocessorDefinitions="$(Inherit)" ! RuntimeLibrary="2" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="3" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! </Configurations> ! <References> ! </References> ! <Files> ! <Filter ! Name="Source Files" ! Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" ! UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" ! > ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\filesystem\src\convenience.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\filesystem\src\exception.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\filesystem\src\operations_posix_windows.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\filesystem\src\path_posix_windows.cpp" ! > ! </File> ! </Filter> ! <Filter ! Name="Header Files" ! Filter="h;hpp;hxx;hm;inl;inc;xsd" ! UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" ! > ! </Filter> ! <Filter ! Name="Resource Files" ! Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" ! UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" ! > ! </Filter> ! </Files> ! <Globals> ! </Globals> ! </VisualStudioProject> --- 1,180 ---- ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="8.00" ! Name="boost_filesystem" ! ProjectGUID="{12683712-9847-45C9-8791-EF45D2961F3A}" ! RootNamespace="boost_signals" ! Keyword="Win32Proj" ! > ! <Platforms> ! <Platform ! Name="Win32" ! /> ! </Platforms> ! <ToolFiles> ! </ToolFiles> ! <Configurations> ! <Configuration ! Name="Debug|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\boost_all.vsprops" ! CharacterSet="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories=""$(ProjectDir)..\..\..\third_party\boost_tp\boost"" ! MinimalRebuild="true" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="4" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! <Configuration ! Name="Release|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\boost_all.vsprops;.\adobe_release.vsprops" ! CharacterSet="1" ! WholeProgramOptimization="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! AdditionalIncludeDirectories=""$(ProjectDir)\..\..\..\third_party\boost_tp\boost"" ! PreprocessorDefinitions="$(Inherit)" ! RuntimeLibrary="2" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="3" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! </Configurations> ! <References> ! </References> ! <Files> ! <Filter ! Name="Source Files" ! Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" ! UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" ! > ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\filesystem\src\convenience.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\filesystem\src\exception.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\filesystem\src\operations_posix_windows.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\filesystem\src\path_posix_windows.cpp" ! > ! </File> ! </Filter> ! <Filter ! Name="Header Files" ! Filter="h;hpp;hxx;hm;inl;inc;xsd" ! UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" ! > ! </Filter> ! <Filter ! Name="Resource Files" ! Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" ! UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" ! > ! </Filter> ! </Files> ! <Globals> ! </Globals> ! </VisualStudioProject> Index: begin.vcproj =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/ide_projects/vc8/begin.vcproj,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** begin.vcproj 12 Jan 2006 00:25:02 -0000 1.2 --- begin.vcproj 24 Jan 2006 19:38:51 -0000 1.3 *************** *** 1,359 **** ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="8.00" ! Name="begin" ! ProjectGUID="{49ED2497-6E54-4A31-85BE-9E166FEC714E}" ! RootNamespace="begin" ! Keyword="Win32Proj" ! > ! <Platforms> ! <Platform ! Name="Win32" ! /> ! </Platforms> ! <ToolFiles> ! </ToolFiles> ! <Configurations> ! <Configuration ! Name="Debug|Win32" ! ConfigurationType="1" ! InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_debug.vsprops" ! CharacterSet="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories=""$(ASLDir)adobe\test\begin\headers";"$(ASLDir)adobe\test\begin\resources";"$(ASLDir)adobe\test\begin"" ! MinimalRebuild="true" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="4" ! DisableSpecificWarnings="4996" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! AdditionalIncludeDirectories=""$(ASLDir)adobe\test\begin"" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLinkerTool" ! AdditionalDependencies="comctl32.lib" ! LinkIncremental="2" ! GenerateManifest="false" ! GenerateDebugInformation="true" ! SubSystem="2" ! TargetMachine="1" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCManifestTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCAppVerifierTool" ! /> ! <Tool ! Name="VCWebDeploymentTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! <Configuration ! Name="Release|Win32" ! ConfigurationType="1" ! InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_release.vsprops" ! CharacterSet="1" ! WholeProgramOptimization="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! AdditionalIncludeDirectories=""$(ASLDir)adobe\test\begin\headers";"$(ASLDir)adobe\test\begin\resources";"$(ASLDir)adobe\test\begin"" ! RuntimeLibrary="2" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="3" ! DisableSpecificWarnings="4996" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! AdditionalIncludeDirectories=""$(ASLDir)adobe\test\begin"" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLinkerTool" ! AdditionalDependencies="comctl32.lib" ! LinkIncremental="1" ! GenerateManifest="false" ! GenerateDebugInformation="true" ! SubSystem="2" ! OptimizeReferences="2" ! EnableCOMDATFolding="2" ! TargetMachine="1" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCManifestTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCAppVerifierTool" ! /> ! <Tool ! Name="VCWebDeploymentTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! </Configurations> ! <References> ! <ProjectReference ! ReferencedProjectIdentifier="{DEBACEBD-0145-4A06-AD7B-AF9C1E7674BD}" ! RelativePathToProject=".\asl_dev.vcproj" ! /> ! <ProjectReference ! ReferencedProjectIdentifier="{12683712-9847-45C9-8791-EF45D2961F3A}" ! RelativePathToProject=".\boost_filesystem.vcproj" ! /> ! <ProjectReference ! ReferencedProjectIdentifier="{269321D0-2FD9-45AA-B4E7-BD185FEBBF0A}" ! RelativePathToProject=".\boost_signals.vcproj" ! /> ! <ProjectReference ! ReferencedProjectIdentifier="{889CB0B0-4D44-456A-A18C-FE1255A03A99}" ! RelativePathToProject=".\boost_thread.vcproj" ! /> ! <ProjectReference ! ReferencedProjectIdentifier="{92EAADEA-B654-4DB1-9472-ECFF6E64C120}" ! RelativePathToProject=".\widgets.vcproj" ! /> ! </References> ! <Files> ! <Filter ! Name="Source Files" ! Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" ! UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" ! > ! <File ! RelativePath="..\..\adobe\test\begin\sources\express_viewer.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\sources\win\main.cpp" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\sources\report_exception.cpp" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! </File> ! </Filter> ! <Filter ! Name="Header Files" ! Filter="h;hpp;hxx;hm;inl;inc;xsd" ! UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" ! > ! <File ! RelativePath="..\..\adobe\test\begin\headers\express_viewer.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\headers\latch.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\headers\report_exception.hpp" ! > ! </File> ! <File ! RelativePath="..\..\..\adobe\test\begin\resources\resources.h" ! > ! </File> ! </Filter> ! <Filter ! Name="Resource Files" ! Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" ! UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" ! > ! <File ! RelativePath="..\..\adobe\test\begin\resources\resources.rc" ! > ! </File> ! </Filter> ! <File ! RelativePath="..\..\adobe\test\begin\resources\editor.adm" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\resources\editor.eve" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\resources\glossary.xstr" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! </File> ! </Files> ! <Globals> ! </Globals> ! </VisualStudioProject> --- 1,341 ---- ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="8.00" ! Name="begin" ! ProjectGUID="{49ED2497-6E54-4A31-85BE-9E166FEC714E}" ! RootNamespace="begin" ! Keyword="Win32Proj" ! > ! <Platforms> ! <Platform ! Name="Win32" ! /> ! </Platforms> ! <ToolFiles> ! </ToolFiles> ! <Configurations> ! <Configuration ! Name="Debug|Win32" ! ConfigurationType="1" ! InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_debug.vsprops" ! CharacterSet="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories=""$(ASLDir)adobe\test\begin\headers";"$(ASLDir)adobe\test\begin\resources";"$(ASLDir)adobe\test\begin"" ! MinimalRebuild="true" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="4" ! DisableSpecificWarnings="4996" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! AdditionalIncludeDirectories=""$(ASLDir)adobe\test\begin"" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLinkerTool" ! AdditionalDependencies="comctl32.lib" ! LinkIncremental="2" ! GenerateManifest="false" ! GenerateDebugInformation="true" ! SubSystem="2" ! TargetMachine="1" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCManifestTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCAppVerifierTool" ! /> ! <Tool ! Name="VCWebDeploymentTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! <Configuration ! Name="Release|Win32" ! ConfigurationType="1" ! InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_release.vsprops" ! CharacterSet="1" ! WholeProgramOptimization="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! AdditionalIncludeDirectories=""$(ASLDir)adobe\test\begin\headers";"$(ASLDir)adobe\test\begin\resources";"$(ASLDir)adobe\test\begin"" ! RuntimeLibrary="2" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="3" ! DisableSpecificWarnings="4996" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! AdditionalIncludeDirectories=""$(ASLDir)adobe\test\begin"" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLinkerTool" ! AdditionalDependencies="comctl32.lib" ! LinkIncremental="1" ! GenerateManifest="false" ! GenerateDebugInformation="true" ! SubSystem="2" ! OptimizeReferences="2" ! EnableCOMDATFolding="2" ! TargetMachine="1" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCManifestTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCAppVerifierTool" ! /> ! <Tool ! Name="VCWebDeploymentTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! </Configurations> ! <References> ! <ProjectReference ! ReferencedProjectIdentifier="{DEBACEBD-0145-4A06-AD7B-AF9C1E7674BD}" ! RelativePathToProject=".\asl_dev.vcproj" ! /> ! <ProjectReference ! ReferencedProjectIdentifier="{12683712-9847-45C9-8791-EF45D2961F3A}" ! RelativePathToProject=".\boost_filesystem.vcproj" ! /> ! <ProjectReference ! ReferencedProjectIdentifier="{269321D0-2FD9-45AA-B4E7-BD185FEBBF0A}" ! RelativePathToProject=".\boost_signals.vcproj" ! /> ! <ProjectReference ! ReferencedProjectIdentifier="{889CB0B0-4D44-456A-A18C-FE1255A03A99}" ! RelativePathToProject=".\boost_thread.vcproj" ! /> ! <ProjectReference ! ReferencedProjectIdentifier="{92EAADEA-B654-4DB1-9472-ECFF6E64C120}" ! RelativePathToProject=".\widgets.vcproj" ! /> ! </References> ! <Files> ! <Filter ! Name="Source Files" ! Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" ! UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" ! > ! <File ! RelativePath="..\..\adobe\test\begin\sources\express_viewer.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\sources\win32\main.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\sources\report_exception.cpp" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! </File> ! </Filter> ! <Filter ! Name="Header Files" ! Filter="h;hpp;hxx;hm;inl;inc;xsd" ! UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" ! > ! <File ! RelativePath="..\..\adobe\test\begin\headers\express_viewer.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\headers\latch.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\headers\report_exception.hpp" ! > ! </File> ! <File ! RelativePath="..\..\..\adobe\test\begin\resources\resources.h" ! > ! </File> ! </Filter> ! <Filter ! Name="Resource Files" ! Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" ! UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" ! > ! <File ! RelativePath="..\..\adobe\test\begin\resources\resources.rc" ! > ! </File> ! </Filter> ! <File ! RelativePath="..\..\adobe\test\begin\resources\editor.adm" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)
" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)
" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\resources\editor.eve" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)
" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)
" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! </File> ! <File ! RelativePath="..\..\adobe\test\begin\resources\glossary.xstr" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)
" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCustomBuildTool" ! Description="copying $(InputFileName)" ! CommandLine="copy $(InputPath) $(OutDir)
" ! Outputs="$(OutDir)\$(InputFileName)" ! /> ! </FileConfiguration> ! </File> ! </Files> ! <Globals> ! </Globals> ! </VisualStudioProject> Index: adobe_widgets.vsprops =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/ide_projects/vc8/adobe_widgets.vsprops,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** adobe_widgets.vsprops 2 Dec 2005 02:59:17 -0000 1.1 --- adobe_widgets.vsprops 24 Jan 2006 19:38:51 -0000 1.2 *************** *** 8,12 **** <Tool Name="VCCLCompilerTool" ! AdditionalIncludeDirectories=""$(ASLDir)adobe\future\widgets\headers";"$(ASLDir)adobe\future\widgets\headers\win"" PreprocessorDefinitions="WINVER=0x501;_WIN32_WINNT=0x501;_WIN32_IE=0x501" /> --- 8,12 ---- <Tool Name="VCCLCompilerTool" ! AdditionalIncludeDirectories=""$(ASLDir)adobe\future\widgets\headers";"$(ASLDir)adobe\future\widgets\headers\win32"" PreprocessorDefinitions="WINVER=0x501;_WIN32_WINNT=0x501;_WIN32_IE=0x501" /> Index: boost_signals.vcproj =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/ide_projects/vc8/boost_signals.vcproj,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** boost_signals.vcproj 12 Jan 2006 00:25:02 -0000 1.2 --- boost_signals.vcproj 24 Jan 2006 19:38:51 -0000 1.3 *************** *** 1,185 **** ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="8.00" ! Name="boost_signals" ! ProjectGUID="{269321D0-2FD9-45AA-B4E7-BD185FEBBF0A}" ! RootNamespace="boost_signals" ! Keyword="Win32Proj" ! > ! <Platforms> ! <Platform ! Name="Win32" ! /> ! </Platforms> ! <ToolFiles> ! </ToolFiles> ! <Configurations> ! <Configuration ! Name="Debug|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\boost_all.vsprops" ! CharacterSet="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories=""$(ProjectDir)..\..\..\third_party\boost_tp\boost"" ! PreprocessorDefinitions="$(Inherit)" ! MinimalRebuild="true" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="4" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! <Configuration ! Name="Release|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\boost_all.vsprops;.\adobe_release.vsprops" ! CharacterSet="1" ! WholeProgramOptimization="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! AdditionalIncludeDirectories=""$(ProjectDir)\..\..\..\third_party\boost_tp\boost"" ! PreprocessorDefinitions="$(Inherit)" ! RuntimeLibrary="2" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="3" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! </Configurations> ! <References> ! </References> ! <Files> ! <Filter ! Name="Source Files" ! Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" ! UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" ! > ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\signals\src\connection.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\signals\src\named_slot_map.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\signals\src\signal_base.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\signals\src\slot.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\signals\src\trackable.cpp" ! > ! </File> ! </Filter> ! <Filter ! Name="Header Files" ! Filter="h;hpp;hxx;hm;inl;inc;xsd" ! UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" ! > ! </Filter> ! <Filter ! Name="Resource Files" ! Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" ! UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" ! > ! </Filter> ! </Files> ! <Globals> ! </Globals> ! </VisualStudioProject> --- 1,185 ---- ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="8.00" ! Name="boost_signals" ! ProjectGUID="{269321D0-2FD9-45AA-B4E7-BD185FEBBF0A}" ! RootNamespace="boost_signals" ! Keyword="Win32Proj" ! > ! <Platforms> ! <Platform ! Name="Win32" ! /> ! </Platforms> ! <ToolFiles> ! </ToolFiles> ! <Configurations> ! <Configuration ! Name="Debug|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\boost_all.vsprops" ! CharacterSet="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories=""$(ProjectDir)..\..\..\third_party\boost_tp\boost"" ! PreprocessorDefinitions="$(Inherit)" ! MinimalRebuild="true" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="4" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! <Configuration ! Name="Release|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\boost_all.vsprops;.\adobe_release.vsprops" ! CharacterSet="1" ! WholeProgramOptimization="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! AdditionalIncludeDirectories=""$(ProjectDir)\..\..\..\third_party\boost_tp\boost"" ! PreprocessorDefinitions="$(Inherit)" ! RuntimeLibrary="2" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="3" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! </Configurations> ! <References> ! </References> ! <Files> ! <Filter ! Name="Source Files" ! Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" ! UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" ! > ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\signals\src\connection.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\signals\src\named_slot_map.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\signals\src\signal_base.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\signals\src\slot.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\signals\src\trackable.cpp" ! > ! </File> ! </Filter> ! <Filter ! Name="Header Files" ! Filter="h;hpp;hxx;hm;inl;inc;xsd" ! UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" ! > ! </Filter> ! <Filter ! Name="Resource Files" ! Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" ! UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" ! > ! </Filter> ! </Files> ! <Globals> ! </Globals> ! </VisualStudioProject> Index: asl_dir.vsprops =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/ide_projects/vc8/asl_dir.vsprops,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** asl_dir.vsprops 12 Jan 2006 00:25:02 -0000 1.2 --- asl_dir.vsprops 24 Jan 2006 19:38:51 -0000 1.3 *************** *** 1,12 **** ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioPropertySheet ! ProjectType="Visual C++" ! Version="8.00" ! Name="asl_dir" ! InheritedPropertySheets=".\adobe_all.vsprops" ! > ! <UserMacro ! Name="ASLDir" ! Value="$(SolutionDir)..\..\" ! /> ! </VisualStudioPropertySheet> --- 1,12 ---- ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioPropertySheet ! ProjectType="Visual C++" ! Version="8.00" ! Name="asl_dir" ! InheritedPropertySheets=".\adobe_all.vsprops" ! > ! <UserMacro ! Name="ASLDir" ! Value="$(SolutionDir)..\..\" ! /> ! </VisualStudioPropertySheet> Index: widgets.vcproj =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/ide_projects/vc8/widgets.vcproj,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** widgets.vcproj 12 Jan 2006 00:25:02 -0000 1.2 --- widgets.vcproj 24 Jan 2006 19:38:51 -0000 1.3 *************** *** 1,246 **** ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="8.00" ! Name="widgets" ! ProjectGUID="{92EAADEA-B654-4DB1-9472-ECFF6E64C120}" ! RootNamespace="widgets" ! Keyword="Win32Proj" ! > ! <Platforms> ! <Platform ! Name="Win32" ! /> ! </Platforms> ! <ToolFiles> ! </ToolFiles> ! <Configurations> ! <Configuration ! Name="Debug|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_debug.vsprops" ! CharacterSet="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories="" ! MinimalRebuild="true" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="4" ! DisableSpecificWarnings="4996" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! <Configuration ! Name="Release|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_release.vsprops" ! CharacterSet="1" ! WholeProgramOptimization="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! AdditionalIncludeDirectories="" ! PreprocessorDefinitions="$(Inherit)" ! RuntimeLibrary="2" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="3" ! DisableSpecificWarnings="4996" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! </Configurations> ! <References> ! </References> ! <Files> ! <Filter ! Name="Source Files" ! Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" ! UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" ! > ! <File ! RelativePath="..\..\adobe\future\widgets\sources\client_assembler.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\win\display.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\win\event_dispatcher.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\win\metrics.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\ui_core.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\ui_core_common.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\win\ui_core_implementation.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\win\ui_overlay.cpp" ! > ! </File> ! </Filter> ! <Filter ! Name="Header Files" ! Filter="h;hpp;hxx;hm;inl;inc;xsd" ! UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" ! > ! <File ! RelativePath="..\..\adobe\future\widgets\headers\client_assembler.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\display.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\win\event_dispatcher.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\factory.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\win\metrics.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\optional_connect.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\resources\resources.h" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\ui_core.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\ui_core_common.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\win\ui_core_implementation.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\ui_overlay.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\win\wincast.hpp" ! > ! </File> ! </Filter> ! <Filter ! Name="Resource Files" ! Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" ! UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" ! > ! </Filter> ! </Files> ! <Globals> ! </Globals> ! </VisualStudioProject> --- 1,318 ---- ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="8.00" ! Name="widgets" ! ProjectGUID="{92EAADEA-B654-4DB1-9472-ECFF6E64C120}" ! RootNamespace="widgets" ! Keyword="Win32Proj" ! > ! <Platforms> ! <Platform ! Name="Win32" ! /> ! </Platforms> ! <ToolFiles> ! </ToolFiles> ! <Configurations> ! <Configuration ! Name="Debug|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_debug.vsprops" ! CharacterSet="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories="" ! MinimalRebuild="true" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="4" ! DisableSpecificWarnings="4996" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! <Configuration ! Name="Release|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\adobe_widgets.vsprops;.\adobe_release.vsprops" ! CharacterSet="1" ! WholeProgramOptimization="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! AdditionalIncludeDirectories="" ! PreprocessorDefinitions="$(Inherit)" ! RuntimeLibrary="2" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="3" ! DisableSpecificWarnings="4996" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! </Configurations> ! <References> ! </References> ! <Files> ! <Filter ! Name="Source Files" ! Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" ! UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" ! > ! <File ! RelativePath="..\..\adobe\future\widgets\sources\client_assembler.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\win32\display.cpp" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\win32\event_dispatcher.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\win32\metrics.cpp" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\ui_core.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\ui_core_common.cpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\win32\ui_core_implementation.cpp" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\sources\win32\ui_overlay.cpp" ! > ! <FileConfiguration ! Name="Debug|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! <FileConfiguration ! Name="Release|Win32" ! > ! <Tool ! Name="VCCLCompilerTool" ! ObjectFile="$(IntDir)\$(InputName)1.obj" ! XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc" ! /> ! </FileConfiguration> ! </File> ! </Filter> ! <Filter ! Name="Header Files" ! Filter="h;hpp;hxx;hm;inl;inc;xsd" ! UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}" ! > ! <File ! RelativePath="..\..\adobe\future\widgets\headers\client_assembler.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\display.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\win\event_dispatcher.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\factory.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\win\metrics.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\optional_connect.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\resources\resources.h" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\ui_core.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\ui_core_common.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\win\ui_core_implementation.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\ui_overlay.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\future\widgets\headers\win\wincast.hpp" ! > ! </File> ! </Filter> ! <Filter ! Name="Resource Files" ! Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" ! UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" ! > ! </Filter> ! </Files> ! <Globals> ! </Globals> ! </VisualStudioProject> Index: adobe_release.vsprops =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/ide_projects/vc8/adobe_release.vsprops,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** adobe_release.vsprops 2 Dec 2005 02:59:17 -0000 1.1 --- adobe_release.vsprops 24 Jan 2006 19:38:51 -0000 1.2 *************** *** 10,12 **** --- 10,16 ---- WarnAsError="true" /> + <Tool + Name="VCResourceCompilerTool" + PreprocessorDefinitions="NDEBUG" + /> </VisualStudioPropertySheet> Index: asl_dev.vcproj =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/ide_projects/vc8/asl_dev.vcproj,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** asl_dev.vcproj 12 Jan 2006 00:25:02 -0000 1.2 --- asl_dev.vcproj 24 Jan 2006 19:38:51 -0000 1.3 *************** *** 1,555 **** ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="8.00" ! Name="asl_dev" ! ProjectGUID="{DEBACEBD-0145-4A06-AD7B-AF9C1E7674BD}" ! RootNamespace="asl" ! Keyword="Win32Proj" ! > ! <Platforms> [...1089 lines suppressed...] ! </File> ! <File ! RelativePath="..\..\adobe\source\zuid_sys_dep.hpp" ! > ! </File> ! <File ! RelativePath="..\..\adobe\source\zuid_uuid.hpp" ! > ! </File> ! </Filter> ! <Filter ! Name="Resource Files" ! Filter="rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav" ! UniqueIdentifier="{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}" ! > ! </Filter> ! </Files> ! <Globals> ! </Globals> ! </VisualStudioProject> Index: adobe_all.vsprops =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/ide_projects/vc8/adobe_all.vsprops,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** adobe_all.vsprops 12 Jan 2006 00:25:02 -0000 1.2 --- adobe_all.vsprops 24 Jan 2006 19:38:51 -0000 1.3 *************** *** 1,17 **** ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioPropertySheet ! ProjectType="Visual C++" ! Version="8.00" ! Name="adobe_all" ! OutputDirectory="$(SolutionDir)build\$(PlatformName)\$(ConfigurationName)\$(ProjectName)" ! IntermediateDirectory="$(SolutionDir)build\$(PlatformName)\$(ConfigurationName)\$(ProjectName)" ! > ! <Tool ! Name="VCCLCompilerTool" ! PreprocessorDefinitions="ADOBE_VER=8;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;$(Inherit)" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! PreprocessorDefinitions="ADOBE_VER=8;$(Inherit)" ! /> ! </VisualStudioPropertySheet> --- 1,17 ---- ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioPropertySheet ! ProjectType="Visual C++" ! Version="8.00" ! Name="adobe_all" ! OutputDirectory="$(SolutionDir)build\$(PlatformName)\$(ConfigurationName)\$(ProjectName)" ! IntermediateDirectory="$(SolutionDir)build\$(PlatformName)\$(ConfigurationName)\$(ProjectName)" ! > ! <Tool ! Name="VCCLCompilerTool" ! PreprocessorDefinitions="ADOBE_VER=8;_SCL_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_DEPRECATE;$(Inherit)" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! PreprocessorDefinitions="ADOBE_VER=8;$(Inherit)" ! /> ! </VisualStudioPropertySheet> Index: boost_thread.vcproj =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/ide_projects/vc8/boost_thread.vcproj,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** boost_thread.vcproj 12 Jan 2006 00:25:02 -0000 1.3 --- boost_thread.vcproj 24 Jan 2006 19:38:51 -0000 1.4 *************** *** 1,213 **** ! <?xml version="1.0" encoding="Windows-1252"?> ! <VisualStudioProject ! ProjectType="Visual C++" ! Version="8.00" ! Name="boost_thread" ! ProjectGUID="{889CB0B0-4D44-456A-A18C-FE1255A03A99}" ! RootNamespace="boost_signals" ! Keyword="Win32Proj" ! > ! <Platforms> ! <Platform ! Name="Win32" ! /> ! </Platforms> ! <ToolFiles> ! </ToolFiles> ! <Configurations> ! <Configuration ! Name="Debug|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\boost_all.vsprops" ! CharacterSet="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! Optimization="0" ! AdditionalIncludeDirectories=""$(ProjectDir)..\..\..\third_party\boost_tp\boost"" ! PreprocessorDefinitions="$(Inherit)" ! MinimalRebuild="true" ! BasicRuntimeChecks="3" ! RuntimeLibrary="3" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="4" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! <Configuration ! Name="Release|Win32" ! ConfigurationType="4" ! InheritedPropertySheets=".\boost_all.vsprops" ! CharacterSet="1" ! WholeProgramOptimization="1" ! > ! <Tool ! Name="VCPreBuildEventTool" ! /> ! <Tool ! Name="VCCustomBuildTool" ! /> ! <Tool ! Name="VCXMLDataGeneratorTool" ! /> ! <Tool ! Name="VCWebServiceProxyGeneratorTool" ! /> ! <Tool ! Name="VCMIDLTool" ! /> ! <Tool ! Name="VCCLCompilerTool" ! AdditionalIncludeDirectories=""$(ProjectDir)\..\..\..\third_party\boost_tp\boost"" ! PreprocessorDefinitions="$(Inherit)" ! RuntimeLibrary="2" ! UsePrecompiledHeader="0" ! WarningLevel="3" ! Detect64BitPortabilityProblems="true" ! DebugInformationFormat="3" ! /> ! <Tool ! Name="VCManagedResourceCompilerTool" ! /> ! <Tool ! Name="VCResourceCompilerTool" ! /> ! <Tool ! Name="VCPreLinkEventTool" ! /> ! <Tool ! Name="VCLibrarianTool" ! /> ! <Tool ! Name="VCALinkTool" ! /> ! <Tool ! Name="VCXDCMakeTool" ! /> ! <Tool ! Name="VCBscMakeTool" ! /> ! <Tool ! Name="VCFxCopTool" ! /> ! <Tool ! Name="VCPostBuildEventTool" ! /> ! </Configuration> ! </Configurations> ! <References> ! </References> ! <Files> ! <Filter ! Name="Source Files" ! Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx" ! UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}" ! > ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\thread\src\barrier.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\thread\src\condition.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\thread\src\exceptions.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\thread\src\mutex.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\thread\src\once.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\thread\src\recursive_mutex.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\thread\src\thread.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\thread\src\tss.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\thread\src\tss_dll.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\thread\src\tss_hooks.cpp" ! > ! </File> ! <File ! RelativePath="..\..\third_party\boost_tp\boost\libs\thread\src\tss_pe.cpp" ! > ! </File> ! <... [truncated message content] |
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/test/begin/examples Modified Files: alignment_test.eve checkbox_control.eve checkbox_radio_button_suite.eve e01_clipping_path.eve edit_text_suite.eve find_and_replace.eve find_and_replace_options.eve image_size.adm image_size.eve image_size_auto.eve list_box_emulator.eve named_function_suite.eve progress_bar_suite.eve slider_suite.eve sort_lines.eve tabs_and_panels.eve Added Files: cycle_test.adm cycle_test.eve grow.adm grow.eve inequality.adm inequality.eve mini_image_size.adm mini_image_size.eve mini_image_size_2.eve optional_panel.adm optional_panel.eve overconstrain.adm overconstrain.eve video.adm video.eve Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: checkbox_radio_button_suite.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/checkbox_radio_button_suite.eve,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** checkbox_radio_button_suite.eve 6 Jan 2006 18:03:01 -0000 1.2 --- checkbox_radio_button_suite.eve 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 5,24 **** */ ! dialog(name: "Checkbox & Radio Button Suite") { ! row(child_horizontal: align_fill) { ! column() { ! group(placement: place_row, name: "Horizontal Checkboxes", child_horizontal: align_fill) ! { ! checkbox(name: "Checkbox A", bind: @checkbox_1); ! checkbox(name: "Checkbox B", bind: @checkbox_2); ! checkbox(name: "Checkbox C", bind: @checkbox_3); ! checkbox(bind: @checkbox_empty); ! } ! group(placement: place_row, name: "Vertical Checkboxes & Radio Buttons", horizontal: align_fill, child_horizontal: align_fill) { ! column(vertical: align_top, guide_mask: []) { checkbox(name: "Checkbox A", bind: @checkbox_1); --- 5,17 ---- */ ! layout checkbox_radio_button_suite { ! view dialog(name: "Checkbox & Radio Button Suite") { ! row(child_horizontal: align_fill) { ! column() { ! group(placement: place_row, name: "Horizontal Checkboxes", child_horizontal: align_fill) { checkbox(name: "Checkbox A", bind: @checkbox_1); *************** *** 27,54 **** checkbox(bind: @checkbox_empty); } ! column(vertical: align_top, guide_mask: []) { ! radio_button(name: "Radio Button A", bind: @radio_button_1, value: @a); ! radio_button(name: "Radio Button B", bind: @radio_button_1, value: @b); ! radio_button(name: "Radio Button C", bind: @radio_button_1, value: @c); ! radio_button(bind: @radio_button_1, value: @none); } } ! group(placement: place_row, name: "Horizontal Radio Buttons", child_horizontal: align_fill) { ! radio_button(name: "Radio Button A", bind: @radio_button_1, value: @a); ! radio_button(name: "Radio Button B", bind: @radio_button_1, value: @b); ! radio_button(name: "Radio Button C", bind: @radio_button_1, value: @c); ! radio_button(bind: @radio_button_1, value: @none); } } - column(child_horizontal: align_fill) - { - button(name: "OK", default: true); - button( items: [ - { name: "Cancel", action: @cancel }, - { name: "Reset", action: @reset, modifiers: @opt } - ]); - } } } --- 20,57 ---- checkbox(bind: @checkbox_empty); } ! group(placement: place_row, name: "Vertical Checkboxes & Radio Buttons", horizontal: align_fill, child_horizontal: align_fill) { ! column(vertical: align_top, guide_mask: []) ! { ! checkbox(name: "Checkbox A", bind: @checkbox_1); ! checkbox(name: "Checkbox B", bind: @checkbox_2); ! checkbox(name: "Checkbox C", bind: @checkbox_3); ! checkbox(bind: @checkbox_empty); ! } ! column(vertical: align_top, guide_mask: []) ! { ! radio_button(name: "Radio Button A", bind: @radio_button_1, value: @a); ! radio_button(name: "Radio Button B", bind: @radio_button_1, value: @b); ! radio_button(name: "Radio Button C", bind: @radio_button_1, value: @c); ! radio_button(bind: @radio_button_1, value: @none); ! } ! } ! group(placement: place_row, name: "Horizontal Radio Buttons", child_horizontal: align_fill) ! { ! radio_button(name: "Radio Button A", bind: @radio_button_1, value: @a); ! radio_button(name: "Radio Button B", bind: @radio_button_1, value: @b); ! radio_button(name: "Radio Button C", bind: @radio_button_1, value: @c); ! radio_button(bind: @radio_button_1, value: @none); } } ! column(child_horizontal: align_fill) { ! button(name: "OK", default: true); ! button( items: [ ! { name: "Cancel", action: @cancel }, ! { name: "Reset", action: @reset, modifiers: @opt } ! ]); } } } } Index: e01_clipping_path.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/e01_clipping_path.eve,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** e01_clipping_path.eve 6 Jan 2006 18:03:01 -0000 1.2 --- e01_clipping_path.eve 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 5,20 **** */ ! dialog(name: "Clipping Path") { ! column(child_horizontal: align_fill) { ! popup(name: "Path:", bind: @path, items: ! [ ! { name: "None", value: empty }, ! { name: "Path 1", value: 1 }, ! { name: "Path 2", value: 2 } ! ]); ! edit_number(name: "Flatness:", digits: 9, bind: @flatness); } - button(name: "OK", default: true, bind: @result); } --- 5,23 ---- */ ! layout clipping_path { ! view dialog(name: "Clipping Path") { ! column(child_horizontal: align_fill) ! { ! popup(name: "Path:", bind: @path, items: ! [ ! { name: "None", value: empty }, ! { name: "Path 1", value: 1 }, ! { name: "Path 2", value: 2 } ! ]); ! edit_number(name: "Flatness:", digits: 9, bind: @flatness); ! } ! button(name: "OK", default: true, bind: @result); } } Index: sort_lines.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/sort_lines.eve,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sort_lines.eve 6 Jan 2006 18:03:01 -0000 1.3 --- sort_lines.eve 24 Jan 2006 19:38:50 -0000 1.4 *************** *** 4,7 **** --- 4,8 ---- or a copy at http://opensource.adobe.com/licenses.html) + ANOMALIES WRT ORIGINAL DIALOG: (OD stands for Original Dialog) - Popup menu with 0 width for applying values to an Adam field. *************** *** 13,76 **** */ ! dialog(name: "Sort Lines", placement: place_column, spacing: 10) { ! row(horizontal: align_fill) ! { ! group(name: 'Sorting Options', horizontal: align_fill) ! { ! checkbox(name: 'Numbers Match by Value', bind: @numbers_match_by_value, value: true); ! checkbox(name: 'Ignore Leading White Space', bind: @ignore_leading_white_space, value: true); ! checkbox(name: 'Reverse Sort', bind: @reverse_sort, value: true); ! checkbox(name: 'Use Pattern', bind: @sort_using_pattern, value: true); ! } ! group(name: 'Result Destinations', vertical: align_fill, horizontal: align_fill) ! { ! checkbox(name: 'Clipboard', bind: @lines_to_clipboard, value: true); ! checkbox(name: 'New Document', bind: @lines_to_new_doc, value: true); ! checkbox(name: 'Replace Selection', bind: @lines_replace_selection, value: true); ! } ! } ! group(name: 'Pattern Options', placement: place_column, horizontal: align_fill) { row(horizontal: align_fill) { ! static_text(name: 'Search Pattern:'); ! popup( name: ' ', popup_bind: @search_pattern, popup_placement: @down, ! items: [ ! { name: 'Add...', value: @pattern_add }, ! { name: '-', value: @pattern_separator }, ! { name: 'Pascal Comment to C Comment', value: @pattern_p_to_c }, ! { name: 'C++ Comment to C Comment', value: @pattern_cpp_to_c }, ! { name: 'Run of Spaces to One Tab', value: @pattern_spaces_to_tab }, ! { name: 'C Function Header', value: @pattern_c_header }, ! { name: 'C Comment to Pascal Comment', value: @pattern_pascal_to_c }, ! { name: 'Shift Variables Right', value: @pattern_var_right }, ! { name: 'Lower Case SRC values in IMG tags', value: @pattern_img_tag_process }, ! { name: 'Lower Case HREF values in A tags', value: @pattern_a_tag_process }, ! { name: 'Column #2', value: @pattern_column_2 } ! ]); ! column(horizontal: align_fill) { ! edit_text(bind: @search_string, horizontal: align_fill, characters: 40); ! checkbox(name: 'Case Sensitive', bind: @case_sensitive, value: true); } } ! row(horizontal: align_fill) { ! static_text(name: 'Sort Using:'); ! column(horizontal: align_fill) { ! radio_button(name: 'Entire Search Pattern', bind: @sort_using, value: @entire_search_pattern); ! radio_button(name: 'All Sub-Patterns (\1\2...\N)', bind: @sort_using, value: @all_subpatterns); ! radio_button(name: 'Specific Sub-Patterns:', bind: @sort_using, value: @subpattern); ! edit_text(bind: @subpattern_expression, horizontal: align_fill); } } ! } ! row(horizontal: align_fill) ! { ! button(name: "Don't Sort", action: @cancel); ! button(name: "Cancel", cancel: true, action: @cancel, horizontal: align_right); ! button(name: "Sort", default: true, horizontal: align_right); } } --- 14,80 ---- */ ! layout sort_lines { ! view dialog(name: "Sort Lines", placement: place_column, spacing: 10) { row(horizontal: align_fill) { ! group(name: 'Sorting Options', horizontal: align_fill) { ! checkbox(name: 'Numbers Match by Value', bind: @numbers_match_by_value, value: true); ! checkbox(name: 'Ignore Leading White Space', bind: @ignore_leading_white_space, value: true); ! checkbox(name: 'Reverse Sort', bind: @reverse_sort, value: true); ! checkbox(name: 'Use Pattern', bind: @sort_using_pattern, value: true); ! } ! group(name: 'Result Destinations', vertical: align_fill, horizontal: align_fill) ! { ! checkbox(name: 'Clipboard', bind: @lines_to_clipboard, value: true); ! checkbox(name: 'New Document', bind: @lines_to_new_doc, value: true); ! checkbox(name: 'Replace Selection', bind: @lines_replace_selection, value: true); } } ! group(name: 'Pattern Options', placement: place_column, horizontal: align_fill) { ! row(horizontal: align_fill) { ! static_text(name: 'Search Pattern:'); ! popup( name: ' ', popup_bind: @search_pattern, popup_placement: @down, ! items: [ ! { name: 'Add...', value: @pattern_add }, ! { name: '-', value: @pattern_separator }, ! { name: 'Pascal Comment to C Comment', value: @pattern_p_to_c }, ! { name: 'C++ Comment to C Comment', value: @pattern_cpp_to_c }, ! { name: 'Run of Spaces to One Tab', value: @pattern_spaces_to_tab }, ! { name: 'C Function Header', value: @pattern_c_header }, ! { name: 'C Comment to Pascal Comment', value: @pattern_pascal_to_c }, ! { name: 'Shift Variables Right', value: @pattern_var_right }, ! { name: 'Lower Case SRC values in IMG tags', value: @pattern_img_tag_process }, ! { name: 'Lower Case HREF values in A tags', value: @pattern_a_tag_process }, ! { name: 'Column #2', value: @pattern_column_2 } ! ]); ! column(horizontal: align_fill) ! { ! edit_text(bind: @search_string, horizontal: align_fill, characters: 40); ! checkbox(name: 'Case Sensitive', bind: @case_sensitive, value: true); ! } ! } ! row(horizontal: align_fill) ! { ! static_text(name: 'Sort Using:'); ! column(horizontal: align_fill) ! { ! radio_button(name: 'Entire Search Pattern', bind: @sort_using, value: @entire_search_pattern); ! radio_button(name: 'All Sub-Patterns (\1\2...\N)', bind: @sort_using, value: @all_subpatterns); ! radio_button(name: 'Specific Sub-Patterns:', bind: @sort_using, value: @subpattern); ! edit_text(bind: @subpattern_expression, horizontal: align_fill); ! } } } ! row(horizontal: align_fill) ! { ! button(name: "Don't Sort", action: @cancel); ! button(name: "Cancel", cancel: true, action: @cancel, horizontal: align_right); ! button(name: "Sort", default: true, horizontal: align_right); ! } } } Index: named_function_suite.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/named_function_suite.eve,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** named_function_suite.eve 6 Jan 2006 18:03:01 -0000 1.2 --- named_function_suite.eve 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 5,35 **** */ ! dialog(name: "Named Function Suite") { ! row(child_horizontal: align_fill) { ! column(child_horizontal: align_fill) { ! static_text(name: "This dialog is useful for testing the functionality of the named functions. Hit the OK button to see a result set containing values processed by the built-in functions.", wrap: true); ! ! group(name: "Contributing Test") { ! edit_number(name: "Value:", bind: @contributing_test, digits: 10); } ! ! group(name: "Scale Test") { ! edit_number(name: "Celsius:", bind: @celsius, digits: 10); ! edit_number(name: "Fahrenheit:", bind: @fahrenheit, digits: 10); } } - column(child_horizontal: align_fill) - { - button(name: "OK", default: true, bind: @result); - button( items: [ - {name: "Cancel", action: @cancel}, - {name: "Reset", action: @reset, modifiers: @opt} - ]); - } } } --- 5,38 ---- */ ! layout named_function_suite { ! view dialog(name: "Named Function Suite") { ! row(child_horizontal: align_fill) { ! column(child_horizontal: align_fill) { ! static_text(name: "This dialog is useful for testing the functionality of the named functions. Hit the OK button to see a result set containing values processed by the built-in functions.", wrap: true); ! ! group(name: "Contributing Test") ! { ! edit_number(name: "Value:", bind: @contributing_test, digits: 10); ! } ! ! group(name: "Scale Test") ! { ! edit_number(name: "Celsius:", bind: @celsius, digits: 10); ! edit_number(name: "Fahrenheit:", bind: @fahrenheit, digits: 10); ! } } ! column(child_horizontal: align_fill) { ! button(name: "OK", default: true, bind: @result); ! button( items: [ ! {name: "Cancel", action: @cancel}, ! {name: "Reset", action: @reset, modifiers: @opt} ! ]); } } } } --- NEW FILE: grow.adm --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ sheet hello_world { output: done <== "Hello World Completed!"; } --- NEW FILE: mini_image_size.eve --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ layout mini_image_size { interface: percent: false; view dialog (name: "Mini Image Size") { column() { overlay() { panel(bind: @percent, value: true) { edit_number(name: "Height:", bind: @height_percent, digits: 7, format: "#.00"); edit_number(name: "Width:", bind: @width_percent, digits: 7, format: "#.00"); } panel(bind: @percent, value: false) { edit_number(name: "Height:", bind: @height_pixels, digits: 7, format: "#"); edit_number(name: "Width:", bind: @width_pixels, digits: 7, format: "#"); } } checkbox(name: "Constrain Proportions", bind: @constrain); checkbox(name: "Percent", bind: @percent); } column() { button(name: "OK", bind: @result, action: @ok, default: true); button( items: [ { name: "Cancel", action: @cancel }, { name: "Reset", action: @reset, modifiers: @opt } ]); } } } Index: list_box_emulator.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/list_box_emulator.eve,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** list_box_emulator.eve 6 Jan 2006 18:03:01 -0000 1.2 --- list_box_emulator.eve 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 5,30 **** */ ! dialog(name: "List Box Emulator", placement: place_column) { ! row() { ! group(name: 'Selected Item', spacing: 10, child_horizontal: align_fill, vertical: align_fill) { ! radio_button(name: "Item 1", bind: @selection, value: @item_1); ! radio_button(name: "Item 2", bind: @selection, value: @item_2); ! radio_button(name: "Item 3", bind: @selection, value: @item_3); ! radio_button(name: "(no item)", bind: @selection, value: @item_end); } ! group(name: 'List commands', spacing: 10, child_horizontal: align_fill, vertical: align_fill) { ! button(name: "Add Item", action: @ok, bind: @add_params); ! button(name: "Insert Item", action: @ok, bind: @insert_params); ! button(name: "Delete Item", action: @ok, bind: @delete_params); } } - - row(horizontal: align_right) - { - button(name: "Cancel", cancel: true, action: @cancel); - } } --- 5,33 ---- */ ! layout list_box_emulator { ! view dialog(name: "List Box Emulator", placement: place_column) { ! row() { ! group(name: 'Selected Item', spacing: 10, child_horizontal: align_fill, vertical: align_fill) ! { ! radio_button(name: "Item 1", bind: @selection, value: @item_1); ! radio_button(name: "Item 2", bind: @selection, value: @item_2); ! radio_button(name: "Item 3", bind: @selection, value: @item_3); ! radio_button(name: "(no item)", bind: @selection, value: @item_end); ! } ! group(name: 'List commands', spacing: 10, child_horizontal: align_fill, vertical: align_fill) ! { ! button(name: "Add Item", action: @ok, bind: @add_params); ! button(name: "Insert Item", action: @ok, bind: @insert_params); ! button(name: "Delete Item", action: @ok, bind: @delete_params); ! } } ! ! row(horizontal: align_right) { ! button(name: "Cancel", cancel: true, action: @cancel); } } } --- NEW FILE: mini_image_size_2.eve --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ layout mini_image_size { view dialog (name: "Mini Image Size") { column() { edit_number(name: "Height:", digits: 7, units: [ { name: "pixels", bind: @height_pixels, format: "#" }, { name: "percent", bind: @height_percent, format: "#.00" } ]); edit_number(name: "Width:", digits: 7, units: [ { name: "pixels", bind: @width_pixels, format: "#" }, { name: "percent", bind: @width_percent, format: "#.00" } ]); checkbox(name: "Constrain Proportions", bind: @constrain); } column() { button(name: "OK", action: @ok, default: true); button( items: [ { name: "Cancel", action: @cancel }, { name: "Reset", action: @reset, modifiers: @opt } ]); } } } Index: progress_bar_suite.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/progress_bar_suite.eve,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** progress_bar_suite.eve 6 Jan 2006 18:03:01 -0000 1.2 --- progress_bar_suite.eve 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 5,42 **** */ ! dialog(name: "Progress Bar Suite") { ! row(child_horizontal: align_fill) { ! column(child_horizontal: align_fill) { ! group(placement: place_column, name: "Change me!", child_horizontal: align_fill) ! { ! edit_number(name: "Value:", bind: @progress_value, digits: 3, format: "#"); ! slider(bind: @progress_value, format: {first: 0, last: 100, interval: 1}); ! } ! row() { ! group(placement: place_row, name: "Vert.", child_horizontal: align_fill) { ! progress_bar(bind: @progress_value, orientation: @vertical, format: {first: 0, last: 100, interval: 1}); ! /*progress_bar(bind: @progress_value, orientation: @vertical, is_relevance: true, format: {first: 0, last: 100, interval: 1});*/ ! progress_bar(bind: @progress_value, orientation: @vertical, is_indeterminate: true); } ! group(placement: place_column, name: "Horiz.", vertical: align_fill, child_horizontal: align_fill) { ! progress_bar(bind: @progress_value, format: {first: 0, last: 100, interval: 1}); ! /*progress_bar(bind: @progress_value, is_relevance: true, format: {first: 0, last: 100, interval: 1});*/ ! progress_bar(bind: @progress_value, is_indeterminate: true); } } ! } ! column(child_horizontal: align_fill) ! { ! button(name: "OK", default: true); ! button( items: [ ! {name: "Cancel", action: @cancel}, ! {name: "Reset", action: @reset, modifiers: @opt} ! ]); } } --- 5,45 ---- */ ! layout progress_bar_suite { ! view dialog(name: "Progress Bar Suite") { ! row(child_horizontal: align_fill) { ! column(child_horizontal: align_fill) { ! group(placement: place_column, name: "Change me!", child_horizontal: align_fill) { ! edit_number(name: "Value:", bind: @progress_value, digits: 3, format: "#"); ! slider(bind: @progress_value, format: {first: 0, last: 100, interval: 1}); } ! row() { ! group(placement: place_row, name: "Vert.", child_horizontal: align_fill) ! { ! progress_bar(bind: @progress_value, orientation: @vertical, format: {first: 0, last: 100, interval: 1}); ! /*progress_bar(bind: @progress_value, orientation: @vertical, is_relevance: true, format: {first: 0, last: 100, interval: 1});*/ ! progress_bar(bind: @progress_value, orientation: @vertical, is_indeterminate: true); ! } ! group(placement: place_column, name: "Horiz.", vertical: align_fill, child_horizontal: align_fill) ! { ! progress_bar(bind: @progress_value, format: {first: 0, last: 100, interval: 1}); ! /*progress_bar(bind: @progress_value, is_relevance: true, format: {first: 0, last: 100, interval: 1});*/ ! progress_bar(bind: @progress_value, is_indeterminate: true); ! } } } ! column(child_horizontal: align_fill) ! { ! button(name: "OK", default: true); ! button( items: [ ! {name: "Cancel", action: @cancel}, ! {name: "Reset", action: @reset, modifiers: @opt} ! ]); ! } } } Index: edit_text_suite.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/edit_text_suite.eve,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** edit_text_suite.eve 6 Jan 2006 18:03:01 -0000 1.3 --- edit_text_suite.eve 24 Jan 2006 19:38:50 -0000 1.4 *************** *** 5,25 **** */ ! dialog(name: "<xstr id='edit_text_suite_dialog_title'>Edit Text Suite</xstr>") { ! row(child_horizontal: align_fill) { ! group(placement: place_column, name: "<xstr id='edit_text_suite_dialog_title'>Edit Text Suite</xstr>", child_horizontal: align_fill) ! { ! edit_text(bind: @edit_text_value, characters: 10, name: "<xstr id='et_suite_label'>Label Name:</xstr>"); ! edit_text(bind: @edit_text_value, scrollable: true, characters: 10, lines: 10, name: "<xstr id='et_suite_label'>Label Name:</xstr>"); ! checkbox(bind: @disabled, name: "<xstr id='et_suite_disabled'>Disabled</xstr>"); ! } ! column(child_horizontal: align_fill) { ! button(name: "<xstr id='ok'>OK</xstr>", default: true); ! button( items: [ ! { name: "<xstr id='cancel'>Cancel</xstr>", action: @cancel }, ! { name: "<xstr id='reset'>Reset</xstr>", action: @reset, modifiers: @opt } ! ]); } } --- 5,28 ---- */ ! layout edit_text_suite { ! view dialog(name: "<xstr id='edit_text_suite_dialog_title'>Edit Text Suite</xstr>") { ! row(child_horizontal: align_fill) { ! group(placement: place_column, name: "<xstr id='edit_text_suite_dialog_title'>Edit Text Suite</xstr>", child_horizontal: align_fill) ! { ! edit_text(bind: @edit_text_value, characters: 10, name: "<xstr id='et_suite_label'>Label Name:</xstr>"); ! edit_text(bind: @edit_text_value, scrollable: true, characters: 10, lines: 10, name: "<xstr id='et_suite_label'>Label Name:</xstr>"); ! checkbox(bind: @disabled, name: "<xstr id='et_suite_disabled'>Disabled</xstr>"); ! } ! column(child_horizontal: align_fill) ! { ! button(name: "<xstr id='ok'>OK</xstr>", default: true); ! button( items: [ ! { name: "<xstr id='cancel'>Cancel</xstr>", action: @cancel }, ! { name: "<xstr id='reset'>Reset</xstr>", action: @reset, modifiers: @opt } ! ]); ! } } } --- NEW FILE: optional_panel.adm --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ sheet image_size { interface: mask : false; show : false; more : true; less : false; output: result <== true; } --- NEW FILE: inequality.adm --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ sheet slider_suite { interface: value : 42; min_value : 0; max_value : 100; logic: relate { value <== min(value, max_value); max_value <== max(value, max_value); } relate { value <== max(value, min_value); min_value <== min(value, min_value); } } --- NEW FILE: video.adm --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ sheet slider_suite { input: total_time : 120 * 60; // a two hour movie width : 720; height : 480; interface: video_bitrate : 200; audio_bitrate : 96; total_size; frame_rate : 30; frame_height : height; frame_width : width; frame_depth : 16; logic: /* relate { video_size <== frame_width * frame_height * frame_depth; } */ relate { video_bitrate <== total_size / total_time - audio_bitrate; audio_bitrate <== total_size / total_time - video_bitrate; total_size <== (video_bitrate + audio_bitrate) * total_time; } } Index: image_size.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/image_size.eve,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** image_size.eve 6 Jan 2006 18:03:01 -0000 1.4 --- image_size.eve 24 Jan 2006 19:38:50 -0000 1.5 *************** *** 5,76 **** */ ! dialog(name: "<xstr id='image_size_dialog_title'>Image Size</xstr>", placement: place_column) { ! row() { column() { ! group(name: "<xstr id='image_size_dimensions_group'>Pixel Dimensions</xstr>", horizontal: align_fill) { ! row(horizontal: align_fill) { ! column(guide_mask: [ ], horizontal: align_fill, child_horizontal: align_fill) ! { ! edit_number(name: "<xstr id='image_size_width'>Width:</xstr>", digits: 9, display_disable: true, ! touch: [ @doc_resolution ], ! units: [ { name: "<xstr id='image_size_pixels'>pixels</xstr>", bind: @dim_width_pixels, format: "#" }, ! { name: "<xstr id='image_size_percent'>percent</xstr>", bind: @dim_width_percent, format: "#.00" } ]); ! ! edit_number(name: "<xstr id='image_size_height'>Height:</xstr>", digits: 9, display_disable: true, ! touch: [ @doc_resolution ], ! units: [ { name: "<xstr id='image_size_pixels'>pixels</xstr>", bind: @dim_height_pixels, format: "#" }, ! { name: "<xstr id='image_size_percent'>percent</xstr>", bind: @dim_height_percent, format: "#.00" } ]); ! } ! ! link(bind: @constrain, count: 2, value_on: true, value_off: false); } } ! group(name: "<xstr id='image_size_size_group'>Document Size:</xstr>", horizontal: align_fill) { ! row(horizontal: align_fill) { ! column(guide_mask: [ ], horizontal: align_fill, child_horizontal: align_fill) ! { ! edit_number(name: "<xstr id='image_size_width'>Width:</xstr>", digits: 9, ! touch: [ @doc_resolution ], ! units: [ { name: "<xstr id='image_size_percent'>percent</xstr>", bind: @doc_width_percent, format: "#.00" }, ! { name: "<xstr id='image_size_inches'>inches</xstr>", bind: @doc_width_inches, format: "#.000" }, ! { name: "<xstr id='image_size_cm'>cm</xstr>", bind: @doc_width_inches, scale: [2.54, 0.0 ], format: "#.00" }, ! { name: "<xstr id='image_size_mm'>mm</xstr>", bind: @doc_width_inches, scale: [ 25.4, 0.0 ], format: "#.0" }, ! { name: "<xstr id='image_size_points'>points</xstr>", bind: @doc_width_inches, scale: [ 72, 0 ], format: "#.0" }, ! { name: "<xstr id='image_size_picas'>picas</xstr>", bind: @doc_width_inches, scale: [ 6, 0.0 ], format: "#.00" }, ! { name: "<xstr id='image_size_columns'>columns</xstr>", bind: @doc_width_inches, scale: [ 1, 0.0 ], format: "#.000" } ! ]); ! ! edit_number(name: "<xstr id='image_size_height'>Height:</xstr>", digits: 9, ! touch: [ @doc_resolution ], ! units: [ { name: "<xstr id='image_size_percent'>percent</xstr>", bind: @doc_height_percent, format: "#.00" }, ! { name: "<xstr id='image_size_inches'>inches</xstr>", bind: @doc_height_inches, format: "#.000" }, ! { name: "<xstr id='image_size_cm'>cm</xstr>", bind: @doc_height_inches, scale: [2.54, 0.0 ], format: "#.00" }, ! { name: "<xstr id='image_size_mm'>mm</xstr>", bind: @doc_height_inches, scale: [ 25.4, 0.0 ], format: "#.0" }, ! { name: "<xstr id='image_size_points'>points</xstr>", bind: @doc_height_inches, scale: [ 72, 0 ], format: "#.0" }, ! { name: "<xstr id='image_size_picas'>picas</xstr>", bind: @doc_height_inches, scale: [ 6, 0.0 ], format: "#.00" }, ! { name: "<xstr id='image_size_columns'>columns</xstr>", bind: @doc_height_inches, scale: [ 1, 0.0 ], format: "#.000" } ! ]); ! ! edit_number(name: "<xstr id='image_size_resolution'>Resolution:</xstr>", digits: 9, ! format: "#.000", ! touch: [ @dim_width_pixels, @dim_height_pixels ], ! units: [ { name: "<xstr id='image_size_pixels_per_inch'>pixels/inch</xstr>", bind: @doc_resolution }, ! { name: "<xstr id='image_size_pixels_per_cm'>pixels/cm</xstr>", bind: @doc_resolution, scale: [0.393700787, 0.0 ] } ]); - } ! overlay(vertical: align_fill) ! { ! link(bind: @resample, count: 3, value_on: false, value_off: true); ! link(bind: @constrain, count: 2, value_on: true, value_off: false); ! } } } --- 5,70 ---- */ ! layout image_size { ! view dialog(name: "<xstr id='image_size_dialog_title'>Image Size</xstr>", placement: place_row) { column() { ! group(name: "<xstr id='image_size_dimensions_group'>Pixel Dimensions</xstr>", horizontal: align_fill, placement: place_row) { ! column(guide_mask: [ ], horizontal: align_fill, child_horizontal: align_fill) { ! edit_number(name: "<xstr id='image_size_width'>Width:</xstr>", digits: 9, display_disable: true, ! touch: [ @doc_resolution ], ! units: [ { name: "<xstr id='image_size_pixels'>pixels</xstr>", bind: @dim_width_pixels, format: "#" }, ! { name: "<xstr id='image_size_percent'>percent</xstr>", bind: @dim_width_percent, format: "#.00" } ]); ! ! edit_number(name: "<xstr id='image_size_height'>Height:</xstr>", digits: 9, display_disable: true, ! touch: [ @doc_resolution ], ! units: [ { name: "<xstr id='image_size_pixels'>pixels</xstr>", bind: @dim_height_pixels, format: "#" }, ! { name: "<xstr id='image_size_percent'>percent</xstr>", bind: @dim_height_percent, format: "#.00" } ]); } + + link(bind: @constrain, count: 2, value_on: true, value_off: false); } ! group(name: "<xstr id='image_size_size_group'>Document Size:</xstr>", horizontal: align_fill, placement: place_row) { ! column(guide_mask: [ ], horizontal: align_fill, child_horizontal: align_fill) { ! edit_number(name: "<xstr id='image_size_width'>Width:</xstr>", digits: 9, ! touch: [ @doc_resolution ], ! units: [ { name: "<xstr id='image_size_percent'>percent</xstr>", bind: @doc_width_percent, format: "#.00" }, ! { name: "<xstr id='image_size_inches'>inches</xstr>", bind: @doc_width_inches, format: "#.000" }, ! { name: "<xstr id='image_size_cm'>cm</xstr>", bind: @doc_width_inches, scale: [2.54, 0.0 ], format: "#.00" }, ! { name: "<xstr id='image_size_mm'>mm</xstr>", bind: @doc_width_inches, scale: [ 25.4, 0.0 ], format: "#.0" }, ! { name: "<xstr id='image_size_points'>points</xstr>", bind: @doc_width_inches, scale: [ 72, 0 ], format: "#.0" }, ! { name: "<xstr id='image_size_picas'>picas</xstr>", bind: @doc_width_inches, scale: [ 6, 0.0 ], format: "#.00" }, ! { name: "<xstr id='image_size_columns'>columns</xstr>", bind: @doc_width_inches, scale: [ 1, 0.0 ], format: "#.000" } ! ]); ! ! edit_number(name: "<xstr id='image_size_height'>Height:</xstr>", digits: 9, ! touch: [ @doc_resolution ], ! units: [ { name: "<xstr id='image_size_percent'>percent</xstr>", bind: @doc_height_percent, format: "#.00" }, ! { name: "<xstr id='image_size_inches'>inches</xstr>", bind: @doc_height_inches, format: "#.000" }, ! { name: "<xstr id='image_size_cm'>cm</xstr>", bind: @doc_height_inches, scale: [2.54, 0.0 ], format: "#.00" }, ! { name: "<xstr id='image_size_mm'>mm</xstr>", bind: @doc_height_inches, scale: [ 25.4, 0.0 ], format: "#.0" }, ! { name: "<xstr id='image_size_points'>points</xstr>", bind: @doc_height_inches, scale: [ 72, 0 ], format: "#.0" }, ! { name: "<xstr id='image_size_picas'>picas</xstr>", bind: @doc_height_inches, scale: [ 6, 0.0 ], format: "#.00" }, ! { name: "<xstr id='image_size_columns'>columns</xstr>", bind: @doc_height_inches, scale: [ 1, 0.0 ], format: "#.000" } ]); ! edit_number(name: "<xstr id='image_size_resolution'>Resolution:</xstr>", digits: 9, ! format: "#.000", ! touch: [ @dim_width_pixels, @dim_height_pixels ], ! units: [ { name: "<xstr id='image_size_pixels_per_inch'>pixels/inch</xstr>", bind: @doc_resolution }, ! { name: "<xstr id='image_size_pixels_per_cm'>pixels/cm</xstr>", bind: @doc_resolution, scale: [0.393700787, 0.0 ] } ! ]); ! } ! ! overlay(vertical: align_fill) ! { ! link(bind: @resample, count: 3, value_on: false, value_off: true); ! link(bind: @constrain, count: 2, value_on: true, value_off: false); } } --- NEW FILE: overconstrain.eve --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ layout overconstrain { view dialog(name: "Cycle Test", grow: true) { edit_number(name: "x:", bind: @x); edit_number(name: "y:", bind: @y); } } --- NEW FILE: mini_image_size.adm --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ sheet mini_image_size { input: original_width : 5 * 300; original_height : 7 * 300; interface: constrain : true; width_pixels : original_width <== round(width_pixels); height_pixels : original_height <== round(height_pixels); width_percent; height_percent; logic: relate { width_pixels <== round(width_percent * original_width / 100); width_percent <== width_pixels * 100 / original_width; } relate { height_pixels <== round(height_percent * original_height / 100); height_percent <== height_pixels * 100 / original_height; } when (constrain) relate { width_percent <== height_percent; height_percent <== width_percent; } output: result <== { height: height_pixels, width: width_pixels }; } --- NEW FILE: video.eve --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ layout video { view dialog(name: "Inequality Example", grow: true) { row(child_horizontal: align_fill, horizontal: align_fill) { column(child_horizontal: align_fill, horizontal: align_fill) { edit_number(bind: @video_bitrate, name: "Video Bitrate:", format: "#.", digits: 9); edit_number(bind: @audio_bitrate, name: "Audio Bitrate:", format: "#.", digits: 9); edit_number(bind: @total_size, name: "File Size:", format: "#.", digits: 9); } column(child_horizontal: align_fill, horizontal: align_right) { button(name: "OK", default: true, bind: @total_size); button( items: [ {name: "Cancel", action: @cancel}, {name: "Reset", action: @reset, modifiers: @opt} ]); } } } } Index: image_size.adm =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/image_size.adm,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** image_size.adm 6 Jan 2006 18:03:01 -0000 1.2 --- image_size.adm 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 49,53 **** } ! relate { doc_height_inches <== doc_height_percent * original_doc_height / 100; doc_height_percent <== doc_height_inches * 100 / original_doc_height; --- 49,53 ---- } ! weak { doc_height_inches <== doc_height_percent * original_doc_height / 100; doc_height_percent <== doc_height_inches * 100 / original_doc_height; Index: find_and_replace.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/find_and_replace.eve,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** find_and_replace.eve 6 Jan 2006 18:03:01 -0000 1.3 --- find_and_replace.eve 24 Jan 2006 19:38:50 -0000 1.4 *************** *** 3,7 **** Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) ! ANOMALIES WRT ORIGINAL DIALOG: (OD stands for Original Dialog) - OD has popup button of width 0 to display MRU search/replace/patterns strings --- 3,7 ---- Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) ! ANOMALIES WRT ORIGINAL DIALOG: (OD stands for Original Dialog) - OD has popup button of width 0 to display MRU search/replace/patterns strings *************** *** 30,125 **** */ ! dialog(name: "Find & Replace", placement: place_row) { ! column() { ! row(guide_mask: [ ]) { ! popup( name: 'Search For:', popup_bind: @recent_search_strings, popup_placement: @down, items: [ ! { name: '(recent search strings)', value: empty }, ! { name: '-', value: @pattern_separator } ]); ! static_text(name: "<xstr id='section_symbol'>§</xstr>"); ! checkbox(name: 'Use Grep'); ! } ! popup( name: 'Patterns:', popup_bind: @patterns, popup_placement: @down, ! items: [ ! { name: 'Add...', value: @pattern_add }, ! { name: '-', value: @pattern_separator }, ! { name: 'Pascal Comment to C Comment', value: @pattern_p_to_c }, ! { name: 'C++ Comment to C Comment', value: @pattern_cpp_to_c }, ! { name: 'Run of Spaces to One Tab', value: @pattern_spaces_to_tab }, ! { name: 'C Function Header', value: @pattern_c_header }, ! { name: 'C Comment to Pascal Comment', value: @pattern_pascal_to_c }, ! { name: 'Shift Variables Right', value: @pattern_var_right }, ! { name: 'Lower Case SRC values in IMG tags', value: @pattern_img_tag_process }, ! { name: 'Lower Case HREF values in A tags', value: @pattern_a_tag_process }, ! { name: 'Column #2', value: @pattern_column_2 } ! ]); ! edit_text(size: @size_small, characters: 60, lines: 3, scrollable: false, monospaced: true, vertical: align_fill); ! row(horizontal: align_fill) ! { ! column() { ! checkbox(name: 'Start at Top', bind: @start_at_top, value: true); ! checkbox(name: 'Wrap Around', bind: @wrap_around, value: true); ! checkbox(name: 'Search Backwards', bind: @search_backwards, value: true); ! checkbox(name: 'Case Sensitive', bind: @case_sensitive, value: true); } ! column(horizontal: align_center, vertical: align_fill) { ! checkbox(name: 'Search Selection Only', bind: @search_selection_only, value: true); ! checkbox(name: 'Extend Selection', bind: @extend_selection, value: true); ! checkbox(name: 'Match Entire Words', bind: @match_entire_words, value: true, vertical: align_bottom); } ! } ! row(guide_mask: [ ]) ! { ! popup( name: 'Replace With:', popup_bind: @recent_search_strings, popup_placement: @down, items: [ ! { name: '(recent replace strings)', value: empty }, { name: '-', value: @pattern_separator } ! ]); ! static_text(name: "<xstr id='section_symbol'>§</xstr>"); ! } ! edit_text(size: @size_small, characters: 60, lines: 3, scrollable: false, monospaced: true, vertical: align_fill); ! separator(); ! checkbox(name: 'Multi-File Search', bind: @multi_file_search, value: true); ! popup( name: 'Saved Search Sources:', popup_bind: @saved_search_sources, popup_placement: @down, ! items: [ ! { name: 'Remember This Set...', value: empty }, ! { name: '-', value: @pattern_separator } ! ], guide_mask: [ ]); ! row(horizontal: align_fill) ! { ! button(name: 'Icon', width: 32, height: 32); ! edit_text(bind: @multi_file_search_folder, size: @size_small, characters: 30, lines: 3, monospaced: true, horizontal: align_fill, vertical: align_fill); ! } ! } ! column(child_horizontal: align_fill, vertical: align_fill, spacing: 20) ! { ! column(child_horizontal: align_fill) ! { ! button(name: 'Find', default: true); ! button(name: 'Find All'); ! } ! column(child_horizontal: align_fill) ! { ! button(name: 'Replace'); ! button(name: 'Replace All'); ! } ! column(child_horizontal: align_fill) ! { ! button(name: "Don't Find"); ! } ! column(child_horizontal: align_fill) ! { ! button(name: 'Cancel', cancel: true, action: @cancel); } ! column(child_horizontal: align_fill, vertical: align_bottom, spacing: 20) { ! button(name: 'Other...'); ! button(name: 'Options...', action: @dialog, value: "find_and_replace_options.eve"); } } --- 30,128 ---- */ ! layout find_and_replace { ! view dialog(name: "Find & Replace", placement: place_row) { ! column() { ! row(guide_mask: [ ]) ! { ! popup( name: 'Search For:', popup_bind: @recent_search_strings, popup_placement: @down, ! items: [ ! { name: '(recent search strings)', value: empty }, ! { name: '-', value: @pattern_separator } ! ]); ! static_text(name: "<xstr id='section_symbol'>§</xstr>"); ! checkbox(name: 'Use Grep'); ! } ! popup( name: 'Patterns:', popup_bind: @patterns, popup_placement: @down, items: [ ! { name: 'Add...', value: @pattern_add }, ! { name: '-', value: @pattern_separator }, ! { name: 'Pascal Comment to C Comment', value: @pattern_p_to_c }, ! { name: 'C++ Comment to C Comment', value: @pattern_cpp_to_c }, ! { name: 'Run of Spaces to One Tab', value: @pattern_spaces_to_tab }, ! { name: 'C Function Header', value: @pattern_c_header }, ! { name: 'C Comment to Pascal Comment', value: @pattern_pascal_to_c }, ! { name: 'Shift Variables Right', value: @pattern_var_right }, ! { name: 'Lower Case SRC values in IMG tags', value: @pattern_img_tag_process }, ! { name: 'Lower Case HREF values in A tags', value: @pattern_a_tag_process }, ! { name: 'Column #2', value: @pattern_column_2 } ]); ! edit_text(size: @size_small, characters: 60, lines: 3, scrollable: false, monospaced: true, vertical: align_fill); ! row(horizontal: align_fill) { ! column() ! { ! checkbox(name: 'Start at Top', bind: @start_at_top, value: true); ! checkbox(name: 'Wrap Around', bind: @wrap_around, value: true); ! checkbox(name: 'Search Backwards', bind: @search_backwards, value: true); ! checkbox(name: 'Case Sensitive', bind: @case_sensitive, value: true); ! } ! column(horizontal: align_center, vertical: align_fill) ! { ! checkbox(name: 'Search Selection Only', bind: @search_selection_only, value: true); ! checkbox(name: 'Extend Selection', bind: @extend_selection, value: true); ! checkbox(name: 'Match Entire Words', bind: @match_entire_words, value: true, vertical: align_bottom); ! } } ! row(guide_mask: [ ]) { ! popup( name: 'Replace With:', popup_bind: @recent_search_strings, popup_placement: @down, ! items: [ ! { name: '(recent replace strings)', value: empty }, ! { name: '-', value: @pattern_separator } ! ]); ! static_text(name: "<xstr id='section_symbol'>§</xstr>"); } ! edit_text(size: @size_small, characters: 60, lines: 3, scrollable: false, monospaced: true, vertical: align_fill); ! separator(); ! checkbox(name: 'Multi-File Search', bind: @multi_file_search, value: true); ! popup( name: 'Saved Search Sources:', popup_bind: @saved_search_sources, popup_placement: @down, items: [ ! { name: 'Remember This Set...', value: empty }, { name: '-', value: @pattern_separator } ! ], guide_mask: [ ]); ! row(horizontal: align_fill) ! { ! button(name: 'Icon', width: 32, height: 32); ! edit_text(bind: @multi_file_search_folder, size: @size_small, characters: 30, lines: 3, monospaced: true, horizontal: align_fill, vertical: align_fill); ! } } ! column(child_horizontal: align_fill, vertical: align_fill, spacing: 20) { ! column(child_horizontal: align_fill) ! { ! button(name: 'Find', default: true); ! button(name: 'Find All'); ! } ! column(child_horizontal: align_fill) ! { ! button(name: 'Replace'); ! button(name: 'Replace All'); ! } ! column(child_horizontal: align_fill) ! { ! button(name: "Don't Find"); ! } ! column(child_horizontal: align_fill) ! { ! button(name: 'Cancel', cancel: true, action: @cancel); ! } ! column(child_horizontal: align_fill, vertical: align_bottom, spacing: 20) ! { ! button(name: 'Other...'); ! button(name: 'Options...', action: @dialog, value: "find_and_replace_options.eve"); ! } } } --- NEW FILE: cycle_test.adm --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ sheet slider_suite { interface: x : 0 <== x + y; y : 0 <== x + y; } Index: slider_suite.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/slider_suite.eve,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** slider_suite.eve 6 Jan 2006 18:03:01 -0000 1.2 --- slider_suite.eve 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 5,38 **** */ ! dialog(name: "Slider Suite", grow: true, horizontal: align_fill) { ! row(child_horizontal: align_fill, horizontal: align_fill) { ! column() ! { ! edit_number(name: "Value:", bind: @slider_value_1, digits: 3, format: "#"); ! group(placement: place_row, name: "Vertical Sliders", child_horizontal: align_fill) ! { ! slider(bind: @slider_value_1, slider_point: @left, orientation: @vertical, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_2, slider_point: @right, orientation: @vertical, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_1, orientation: @vertical, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_2, slider_point: @right, slider_ticks: 11, orientation: @vertical, format: {first: 0, last: 100, interval: 1}); } ! group(placement: place_column, name: "Horizontal Sliders", horizontal: align_fill, child_horizontal: align_fill) { ! slider(bind: @slider_value_2, slider_point: @up, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_1, slider_point: @down, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_2, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_1, slider_point: @down, slider_ticks: 11, format: {first: 0, last: 100, interval: 1}); } } - column(child_horizontal: align_fill, horizontal: align_right) - { - button(name: "OK", default: true, bind: @slider_value_1); - button( items: [ - {name: "Cancel", action: @cancel}, - {name: "Reset", action: @reset, modifiers: @opt} - ]); - } } } --- 5,41 ---- */ ! layout slider_suite { ! view dialog(name: "Slider Suite", grow: true, horizontal: align_fill) { ! row(child_horizontal: align_fill, horizontal: align_fill) ! { ! column() ! { ! edit_number(name: "Value:", bind: @slider_value_1, digits: 3, format: "#"); ! group(placement: place_row, name: "Vertical Sliders", child_horizontal: align_fill) ! { ! slider(bind: @slider_value_1, slider_point: @left, orientation: @vertical, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_2, slider_point: @right, orientation: @vertical, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_1, orientation: @vertical, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_2, slider_point: @right, slider_ticks: 11, orientation: @vertical, format: {first: 0, last: 100, interval: 1}); ! } ! group(placement: place_column, name: "Horizontal Sliders", horizontal: align_fill, child_horizontal: align_fill) ! { ! slider(bind: @slider_value_2, slider_point: @up, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_1, slider_point: @down, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_2, format: {first: 0, last: 100, interval: 1}); ! slider(bind: @slider_value_1, slider_point: @down, slider_ticks: 11, format: {first: 0, last: 100, interval: 1}); ! } } ! column(child_horizontal: align_fill, horizontal: align_right) { ! button(name: "OK", default: true, bind: @slider_value_1); ! button( items: [ ! {name: "Cancel", action: @cancel}, ! {name: "Reset", action: @reset, modifiers: @opt} ! ]); } } } } Index: alignment_test.eve =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/examples/alignment_test.eve,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** alignment_test.eve 6 Jan 2006 18:03:01 -0000 1.2 --- alignment_test.eve 24 Jan 2006 19:38:50 -0000 1.3 *************** *** 5,62 **** */ ! dialog(name: "Alignment Test", spacing: 6) { ! group(placement: place_column, name: "Colon Alignment 1") ! { ! edit_text(bind: @alignment, characters: 10, name: "Apple:"); ! edit_text(bind: @alignment, characters: 10, name: "Orange:"); ! edit_text(bind: @alignment, characters: 10, name: "Orangutan:"); ! popup(name: "Foo:", items: [{name: "Item One", value: @one}, {name: "Item Two", value: @two}]); ! popup(name: "Alignment:", items: [{name: "Item One", value: @one}, {name: "Item Two", value: @two}]); ! } ! column() { ! group(placement: place_column, name: "Colon Alignment 2") { ! edit_text(bind: @alignment, characters: 10, name: "Alignment:"); ! ! row(spacing: 4) ! { ! static_text(name: "Alignment:"); ! edit_text(bind: @alignment, characters: 10); ! } ! popup(name: "Alignment:", items: [{name: "Item One", value: @one}, {name: "Item Two", value: @two}]); - - row(spacing: 4) - { - static_text(name: "Alignment:"); - popup(items: [{name: "Item One", value: @one}, {name: "Item Two", value: @two}]); - } } ! } ! column() ! { ! group(placement: place_column, name: "No lables") { ! edit_text(bind: @alignment, characters: 10); ! popup(items: [{name: "Item One", value: @one}, {name: "Item Two", value: @two}]); } ! group(placement: place_column, name: "Other Texts") { ! row() { ! static_text(name: "A great yellow | OL"); ! button(name: "Alignment"); } } ! } ! column(child_horizontal: align_fill) ! { ! button(name: "OK", default: true); ! button( items: [ ! { name: "Cancel", action: @cancel }, ! { name: "Reset", action: @reset, modifiers: @opt } ! ]); } } --- 5,65 ---- */ ! layout alignment_test { ! view dialog(name: "Alignment Test", spacing: 6) { ! group(placement: place_column, name: "Colon Alignment 1") { ! edit_text(bind: @alignment, characters: 10, name: "Apple:"); ! edit_text(bind: @alignment, characters: 10, name: "Orange:"); ! edit_text(bind: @alignment, characters: 10, name: "Orangutan:"); ! popup(name: "Foo:", items: [{name: "Item One", value: @one}, {name: "Item Two", value: @two}]); popup(name: "Alignment:", items: [{name: "Item One", value: @one}, {name: "Item Two", value: @two}]); } ! column() { ! group(placement: place_column, name: "Colon Alignment 2") ! { ! edit_text(bind: @alignment, characters: 10, name: "Alignment:"); ! ! row(spacing: 4) ! { ! static_text(name: "Alignment:"); ! edit_text(bind: @alignment, characters: 10); ! } ! ! popup(name: "Alignment:", items: [{name: "Item One", value: @one}, {name: "Item Two", value: @two}]); ! ! row(spacing: 4) ! { ! static_text(name: "Alignment:"); ! popup(items: [{name: "Item One", value: @one}, {name: "Item Two", value: @two}]); ! } ! } } ! column() { ! group(placement: place_column, name: "No lables") { ! edit_text(bind: @alignment, characters: 10); ! popup(items: [{name: "Item One", value: @one}, {name: "Item Two", value: @two}]); ! } ! group(placement: place_column, name: "Other Texts") ! { ! row() ! { ! static_text(name: "A great yellow | OL"); ! button(name: "Alignment"); ! } } } ! column(child_horizontal: align_fill) ! { ! button(name: "OK", default: true); ! button( items: [ ! { name: "Cancel", action: @cancel }, ! { name: "Reset", action: @reset, modifiers: @opt } ! ]); ! } } } --- NEW FILE: grow.eve --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ layout grow { view dialog(name: "Hello World", grow: true, placement: place_column, spacing: 10, vertical: align_fill) { row(horizontal: align_fill) { static_text(horizontal: align_fill, name: "NOTICE: All information contained herein is, and remains the property of " "Adobe Systems Incorporated and its suppliers, if any. The intellectual and " "technical concepts contained herein are proprietary to Adobe Systems Incorporated " "and its suppliers and may be covered by U.S. and Foreign Patents, patents " "in process, and are protected by trade secret or copyright law. Dissemination " "of this information or reproduction of this material is strictly forbidden " "unless prior written permission is obtained from Adobe Systems Incorporated." , wrap: true); button(name: "OK", bind: @done); } button(name: "Center", horizontal: align_center); row(horizontal: align_fill, child_horizontal: align_proportional) { button(name: "Button"); button(name: "Button"); button(name: "Button"); checkbox(name: "Button"); } row(horizontal: align_fill) { button(name: "Name", horizontal: align_fill); button(name: "Name", horizontal: align_fill); } row(horizontal: align_fill) { button(name: "Name", horizontal: align_left); button(name: "Name", horizontal: align_center); button(name: "Name", horizontal: align_right); } row(horizontal: align_fill) { button(name: "Name", horizontal: align_center); button(name: "Name", horizontal: align_center); button(name: "Name", horizontal: align_center); } row(horizontal: align_fill, vertical: align_fill) { button(name: "Name", horizontal: align_left); button(name: "Name", horizontal: align_fill, vertical: align_bottom); } } } --- NEW FILE: cycle_test.eve --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ layout cycle_test { view dialog(name: "Cycle Test", grow: true) { edit_number(name: "x:", bind: @x); edit_number(name: "y:", bind: @y); } } --- NEW FILE: overconstrain.adm --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ sheet slider_suite { interface: x : 0; y : 0; logic: relate { x <== y; y <== x; } relate { x <== y; y <== x; } } --- NEW FILE: inequality.eve --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ layout inequality { view dialog(name: "Inequality Example", grow: true) { row(child_horizontal: align_fill, horizontal: align_fill) { column(child_horizontal: align_fill, horizontal: align_fill) { slider(bind: @min_value, slider_point: @down, format: {first: 0, last: 100, interval: 1}); slider(bind: @value, format: {first: 0, last: 100, interval: 1}); slider(bind: @max_value, slider_point: @up, format: {first: 0, last: 100, interval: 1}); } column(child_horizontal: align_fill, horizontal: align_right) { button(name: "OK", default: true, bind: @value); button( items: [ {name: "Cancel", action: @cancel}, {name: "Reset", action: @reset, modifiers: @opt} ]); } } } } --- NEW FILE: optional_panel.eve --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ layout optional_panel { view dialog(name: "Calculations", placement: place_column) { checkbox(name: "Mask", bind: @mask); optional (bind: @mask, value: true) { checkbox(name: "Show", bind: @show); } optional (bind: @show, value: true) { group(name: "Stuff") { checkbox(name: "More!", bind: @more); optional (bind: @more, value: true) ... [truncated message content] |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:06
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/future/source In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/future/source Added Files: modal_dialog_interface.cpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes --- NEW FILE: modal_dialog_interface.cpp --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ /****************************************************************************************************/ #include <adobe/future/modal_dialog_interface.hpp> #include <adobe/adam_evaluate.hpp> #include <adobe/adam_parser.hpp> #include <adobe/future/widgets/headers/client_assembler.hpp> #include <adobe/future/widgets/headers/factory.hpp> #if ADOBE_PLATFORM_MAC #include <adobe/future/widgets/headers/mac/carbon_safe.hpp> #elif ADOBE_PLATFORM_WIN #define WINDOWS_LEAN_AND_MEAN 1 #include <windows.h> #include <adobe/future/widgets/headers/win32/event_dispatcher.hpp> #endif /****************************************************************************************************/ namespace adobe { /****************************************************************************************************/ std::string getline(std::istream& stream) { std::string result; result.reserve(128); while (true) { int c(stream.get()); if (c == EOF || c == '\n' || c == '\r') break; result += static_cast<char>(c); } return result; } /****************************************************************************************************/ std::string mdi_getline(std::istream& layout_definition, adobe::name_t, std::streampos line_start_position) { std::streampos old_pos(layout_definition.tellg()); layout_definition.clear(); layout_definition.seekg(line_start_position); std::string result(getline(layout_definition)); layout_definition.seekg(old_pos); return result; } /****************************************************************************************************/ struct mdi_op_callback_t { typedef void result_type; mdi_op_callback_t() : view_m(0) { } void callback(adobe::name_t, const adobe::value_t&) try { assert(view_m); // system_beep(); // unknown request. #if ADOBE_PLATFORM_MAC HIViewRef cntl(adobe::unwrap_display_token<HIViewRef>(view_m->root_display_m)); WindowRef owner(::GetControlOwner(cntl)); ::QuitAppModalLoopForWindow(owner); #elif ADOBE_PLATFORM_WIN ::PostQuitMessage(0); #endif } catch(...) { std::cerr << "Exception caught in mdi_op_callback" << std::endl; } eve_client::eve_client_holder* view_m; }; /****************************************************************************************************/ void monitor_invariant(bool& need_ui, bool is_set) { need_ui = !is_set; } /****************************************************************************************************/ adobe::dialog_result_t handle_dialog( const adobe::dictionary_t& input, const adobe::record_info_t& record, const adobe::dictionary_t& display_state, adobe::display_options_t display_options, std::istream& layout_definition, std::istream& sheet_definition) { assert ( !layout_definition.fail() ); assert ( !sheet_definition.fail() ); adobe::dialog_result_t result; adobe::sheet_t sheet; adobe::auto_ptr<eve_client::eve_client_holder> view; mdi_op_callback_t view_callback; // // Parse the Adam stream // adobe::parse( sheet_definition, adobe::line_position_t( "Adam sheet definition" ), adobe::bind_to_sheet( sheet ) ); // // Set up the sheet with initial inputs, etc. // for (adobe::dictionary_t::const_iterator first(input.begin()), last(input.end()); first != last; ++first) sheet.set(first->first, first->second); for (adobe::dictionary_t::const_iterator first(record.first.begin()), last(record.first.end()); first != last; ++first) sheet.set(first->first, first->second); if (!record.second.empty()) { std::vector<adobe::name_t> touch_set; for (adobe::array_t::const_iterator first(record.second.begin()), last(record.second.end()); first != last; ++first) touch_set.push_back(first->get<adobe::name_t>()); const adobe::name_t* touch_first(&touch_set.front()); const adobe::name_t* touch_last(&touch_set.back()); sheet.touch(touch_first, ++touch_last); } bool need_ui(false); sheet.monitor_invariant_dependent(adobe::static_name_t("result"), boost::bind(&monitor_invariant, boost::ref(need_ui), _1)); sheet.update(); if (display_options == dialog_never_display_s && need_ui) throw std::runtime_error("handle_dialog: Invalid command parameters and UI not permitted."); if ((display_options == dialog_no_display_s && need_ui) || display_options == dialog_display_s) { line_position_t::getline_proc_t getline_proc(new line_position_t::getline_proc_impl_t(boost::bind(&mdi_getline, boost::ref(layout_definition), _1, _2))); view.reset(eve_client::make_view( adobe::name_t( "eve definition" ), getline_proc, layout_definition, sheet, boost::bind(&mdi_op_callback_t::callback, boost::ref(view_callback), _1, _2), size_normal_s, default_factory ).release() ); view_callback.view_m = view.get(); // // Set up the view's sheet with display state values, etc. // for (adobe::dictionary_t::const_iterator first(display_state.begin()), last(display_state.end()); first != last; ++first) view->layout_sheet_m.set(first->first, first->second); sheet.update(); // // Show the GUI. // view->eve_m.evaluate(adobe::eve_t::evaluate_nested); view->show_window_m(); #if ADOBE_PLATFORM_MAC HIViewRef cntl(adobe::unwrap_display_token<HIViewRef>(view->root_display_m)); WindowRef owner(::GetControlOwner(cntl)); ::RunAppModalLoopForWindow(owner); #elif ADOBE_PLATFORM_WIN MSG msg; while ( ::GetMessage( &msg, 0, 0, 0 ) ) { try { // // Push every message through the event_dispatcher, in case it is a keyboard // modifier. // event_dispatcher::keyboard(msg.message, msg.wParam); // // We always pass every message though to the application anyway. // TranslateMessage( &msg ); DispatchMessage( &msg ); } catch ( const std::exception& doh ) { std::cerr << "Exception: " << doh.what() << std::endl; } catch ( ... ) { std::cerr << "Exception: Unknown" << std::endl; } } #endif } return result; } /****************************************************************************************************/ } // namespace adobe /****************************************************************************************************/ |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:06
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/modal_dialog_interface In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/test/modal_dialog_interface Added Files: Jamfile.v2 main.cpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes --- NEW FILE: main.cpp --- /* Copyright 2005-2006 Adobe Systems Incorporated Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt or a copy at http://opensource.adobe.com/licenses.html) */ /****************************************************************************************************/ #include <adobe/future/modal_dialog_interface.hpp> #include <adobe/xstring.hpp> #if ADOBE_PLATFORM_MAC #include <adobe/future/widgets/headers/mac/carbon_safe.hpp> #elif ADOBE_PLATFORM_WIN #define WINDOWS_LEAN_AND_MEAN 1 #include <windows.h> #endif #include <iostream> #include <sstream> #include <fstream> #include <boost/filesystem/operations.hpp> #include <boost/filesystem/fstream.hpp> /*************************************************************************************************/ #if defined(BOOST_MSVC) && defined(BOOST_THREAD_USE_LIB) extern "C" void tss_cleanup_implemented() { } #endif /****************************************************************************************************/ namespace { /****************************************************************************************************/ const char* eve_view_definition_g = "/*" " Copyright 2005-2006 Adobe Systems Incorporated" " Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt" " or a copy at http://opensource.adobe.com/licenses.html)" "*/" "" "layout mini_image_size" "{" " interface:" " percent: false;" " " " view dialog (name: 'Mini Image Size')" " {" " column()" " {" " overlay()" " {" " panel(bind: @percent, value: true)" " {" " edit_number(name: 'Height:', bind: @height_percent, digits: 7);" " edit_number(name: 'Width:', bind: @width_percent, digits: 7);" " }" " panel(bind: @percent, value: false)" " {" " edit_number(name: 'Height:', bind: @height_pixels, digits: 7);" " edit_number(name: 'Width:', bind: @width_pixels, digits: 7);" " }" " }" " checkbox(name: 'Constrain Proportions', bind: @constrain);" " checkbox(name: 'Percent', bind: @percent);" " }" " column()" " {" " button(name: 'OK', action: @ok, default: true);" " button(name: 'Cancel', action: @cancel, cancel: true);" " }" " }" "}"; /****************************************************************************************************/ const char* adam_model_definition_g = "/*" " Copyright 2005-2006 Adobe Systems Incorporated" " Distributed under the MIT License (see accompanying file LICENSE_1_0_0.txt" " or a copy at http://opensource.adobe.com/licenses.html)" "*/" "" "sheet mini_image_size" "{" "input:" " original_width : 5 * 300;" " original_height : 7 * 300;" "" "interface:" " constrain : true;" "" " width_pixels : original_width <== round(width_pixels);" " height_pixels : original_height <== round(height_pixels);" " width_percent;" " height_percent;" "" "logic:" " relate {" " width_pixels <== round(width_percent * original_width / 100);" " width_percent <== width_pixels * 100 / original_width;" " }" " " " relate {" " height_pixels <== round(height_percent * original_height / 100);" " height_percent <== height_pixels * 100 / original_height;" " }" "" " when (constrain) relate {" " width_percent <== height_percent;" " height_percent <== width_percent;" " }" "" "output:" " result <== { height: height_pixels, width: width_pixels };" "}"; /****************************************************************************************************/ #if ADOBE_PLATFORM_MAC const char* mac_metrics_g = "<xstr id='metric:global'>{ gap: 4 }</xstr>" "" "<xstr id='metric:checkbox' theme='normal'>" " { size: [ 16, 14 ], adjust_size: [ 2, 0 ], spacing: 5, adjust_position: [ -2, 0 ], outset: [ 1, 2, 0, 1 ], adjust_baseline: -1 }</xstr>" "<xstr id='metric:checkbox' theme='small'>" " { size: [ 13, 12 ], adjust_size: [ 1, 0 ], spacing: 7, adjust_position: [ -1, 0 ], outset: [ 1, 2, 0, 1 ], adjust_baseline: -1 }</xstr>" "<xstr id='metric:checkbox' theme='mini'>" " { size: [ 10, 10 ], spacing: 4, outset: [ 0, 1, 0, 0 ], adjust_baseline: -1 }</xstr>" "" "<xstr id='metric:radio_button' theme='normal'>" " { size: [ 19, 16 ], adjust_size: [ 5, 1 ], spacing: 4, adjust_position: [ -2, -1 ], outset: [ 1, 0, 1, 1 ], adjust_baseline: -1 }</xstr>" "<xstr id='metric:radio_button' theme='small'>" " { size: [ 14, 13 ], spacing: 4, outset: [ 0, 0, 0, 1 ] }</xstr>" "<xstr id='metric:radio_button' theme='mini'>" " { size: [ 10, 10 ], spacing: 4, adjust_position: [ 0, 1 ], outset: [ 0, 0, 0, 1 ] }</xstr>" "" "<xstr id='metric:button' theme='normal'>" " { size: [ 20, 21 ], adjust_baseline: 2, outset: [ 1, 0, 1, 2 ] }</xstr>" "<xstr id='metric:button' theme='small'>" " { size: [ 20, 18 ], adjust_size: [ -2, 0 ], adjust_position: [ 1, -1 ], outset: [ 0, 0, 0, 1 ], adjust_baseline: 2 }</xstr>" "<xstr id='metric:button' theme='mini'>" " { size: [ 20, 15 ], adjust_size: [ 2, 0 ], adjust_position: [ -1, 0 ], outset: [ 1, 0, 1, 1 ], adjust_baseline: 2 }</xstr>" "" "<xstr id='metric:group' label='true' theme='normal'>" " { size: [ 0, 12 ], adjust_size: [ 0, 3 ], adjust_position: [ 0, -2 ], frame: [ 1, 14, 1, 1 ] }</xstr>" "<xstr id='metric:group' label='true' theme='small'>" " { size: [ 0, 12 ], adjust_size: [ 0, 3 ], adjust_position: [ 0, -2 ], frame: [ 1, 14, 1, 1 ] }</xstr>" "<xstr id='metric:group' label='true' theme='mini'>" " { size: [ 0, 12 ], adjust_size: [ 0, 3 ], adjust_position: [ 0, -2 ], frame: [ 1, 12, 1, 1 ] }</xstr>" "" "<xstr id='metric:group' label='false' theme='normal'>" " { size: [ 0, 0 ], frame: [ 1, 1, 1, 1 ] }</xstr>" "<xstr id='metric:group' label='false' theme='small'>" " { size: [ 0, 0 ], frame: [ 1, 1, 1, 1 ] }</xstr>" "<xstr id='metric:group' label='false' theme='mini'>" " { size: [ 0, 0 ], frame: [ 1, 1, 1, 1 ] }</xstr>" "" "<xstr id='metric:tab_group' theme='normal'>" " { size: [ 0, 0 ], adjust_size: [ 0 , 8 ], adjust_position: [ 0, -7 ], frame: [ 1, 21, 1, 1 ] }</xstr>" "<xstr id='metric:tab_group' theme='small'>" " { size: [ 0, 0 ], adjust_size: [ 0 , 5 ], adjust_position: [ 0, -4 ], frame: [ 1, 18, 1, 1 ] }</xstr>" "<xstr id='metric:tab_group' theme='mini'>" " { size: [ 0, 0 ], adjust_size: [ 0 , 3 ], adjust_position: [ 0, -2 ], frame: [ 1, 15, 1, 1 ] }</xstr>" "" "<xstr id='metric:static_text' theme='normal'>" " { size: [ 0, 16 ], adjust_size: [ 0, 3 ], adjust_position: [ 0, -3 ], adjust_baseline: -3 }</xstr>" "<xstr id='metric:static_text' theme='small'>" " { size: [ 0, 15 ], adjust_size: [ 0, 3 ], adjust_position: [ 0, -2 ], adjust_baseline: -2 }</xstr>" "<xstr id='metric:static_text' theme='mini'>" " { size: [ 0, 12 ], adjust_size: [ 0, 3 ], adjust_position: [ 0, -2 ], adjust_baseline: -2 }</xstr>" "" "<xstr id='metric:edit_text' scroll='false' theme='normal'>" " { size: [ 3, 16 ], adjust_size: [ -6, -6 ], adjust_position: [ 3, 3 ], outset: [ 3, 3, 3, 3 ], adjust_baseline: 3 }</xstr>" "<xstr id='metric:edit_text' scroll='false' theme='small'>" " { size: [ 3, 14 ], adjust_size: [ -6, -6 ], adjust_position: [ 3, 3 ], outset: [ 3, 3, 3, 3 ], adjust_baseline: 3 }</xstr>" "<xstr id='metric:edit_text' scroll='false' theme='mini'>" " { size: [ 3, 12 ], adjust_size: [ -6, -6 ], adjust_position: [ 3, 3 ], outset: [ 3, 3, 3, 3 ], adjust_baseline: 3 }</xstr>" "" "<xstr id='metric:edit_text' scroll='true' theme='normal'>" " { size: [ 16, 16 ] }</xstr>" "<xstr id='metric:edit_text' scroll='true' theme='small'>" " { size: [ 16, 16 ] }</xstr>" "<xstr id='metric:edit_text' scroll='true' theme='mini'>" " { size: [ 16, 16 ] }</xstr>" "" "<xstr id='metric:popup' label='false' theme='normal'>" " { adjust_size: [ 1, -1 ], adjust_position: [ -1, 0 ], outset: [ 1, 0, 1, 1 ] }</xstr>" "<xstr id='metric:popup' label='false' theme='small'>" " { adjust_size: [ 1, -1 ], adjust_position: [ 1, 0 ], outset: [ 1, 0, 1, 1 ], adjust_baseline: 1 }</xstr>" "<xstr id='metric:popup' label='false' theme='mini'>" " { adjust_size: [ 2, 0 ], adjust_position: [ -1, 0 ] }</xstr>" "" "<xstr id='metric:popup' label='true' theme='normal'>" " { adjust_size: [ 0, -1 ], outset: [ 0, 0, 1, 1 ] }</xstr>" "<xstr id='metric:popup' label='true' theme='small'>" " { adjust_size: [ 1, -1 ], adjust_position: [ 0, 0 ], outset: [ 0, 0, 1, 1 ], adjust_baseline: 1 }</xstr>" "<xstr id='metric:popup' label='true' theme='mini'>" " { adjust_size: [ 1, 0 ] }</xstr>"; #endif /****************************************************************************************************/ adobe::dialog_result_t do_test( std::istream& eve_stream, std::istream& adam_stream) { adobe::dictionary_t input; adobe::record_info_t record; adobe::dictionary_t display_state; adobe::dialog_result_t result = handle_dialog( input, record, display_state, adobe::dialog_display_s, eve_stream, adam_stream); return result; } /****************************************************************************************************/ #if ADOBE_PLATFORM_MAC static OSStatus AppEventHandler( EventHandlerCallRef inCaller, EventRef inEvent, void* inRefcon ); bool os_init() { static IBNibRef sNibRef; static const EventTypeSpec kAppEvents[] = { { kEventClassCommand, kEventCommandProcess } }; OSStatus err(noErr); err = ::CreateNibReference( CFSTR("modal_dialog_interface"), &sNibRef ); if (err != noErr) return false; err = ::SetMenuBarFromNib( sNibRef, CFSTR("MenuBar") ); if (err != noErr) return false; ::InstallApplicationEventHandler( NewEventHandlerUPP( AppEventHandler ), GetEventTypeCount( kAppEvents ), kAppEvents, 0, NULL ); // // Register this app as an Appearance Client // ::RegisterAppearanceClient(); return true; } /****************************************************************************************************/ static OSStatus AppEventHandler(EventHandlerCallRef /*inCaller*/, EventRef /*inEvent*/, void* /*inRefcon*/) { //system_beep(); return eventNotHandledErr; } #endif /****************************************************************************************************/ #if ADOBE_PLATFORM_WIN bool os_init() { return true; } #endif /****************************************************************************************************/ }// namespace /****************************************************************************************************/ #if ADOBE_PLATFORM_WIN int __stdcall WinMain( HINSTANCE hInst, HINSTANCE hInstPrev, LPSTR lpCmdLine, int nCmdShow ) #else int main(int argc, char** argv) #endif try { #if ADOBE_PLATFORM_MAC std::size_t metrics_len(std::strlen(mac_metrics_g)); char* metrics_data(new char[metrics_len] + 1); std::copy(&mac_metrics_g[0], &mac_metrics_g[0] + metrics_len, &metrics_data[0]); adobe::xstring_context_t mac_metrics_context( &metrics_data[0], &metrics_data[metrics_len], adobe::line_position_t( "mac metrics" ) ); #endif if (!os_init()) throw std::runtime_error("OS initialization failed"); #if ADOBE_PLATFORM_MAC if (argc > 2) { std::string db_name(argv[2]); boost::filesystem::path eve_path((db_name + ".eve").c_str(), boost::filesystem::native); boost::filesystem::path adam_path((db_name + ".adm").c_str(), boost::filesystem::native); boost::filesystem::ifstream eve_stream(eve_path); boost::filesystem::ifstream adam_stream(adam_path); //std::cerr << "using file set \"" << db_name << '"' << std::endl; do_test(eve_stream, adam_stream); } else #endif { std::stringstream eve_stream; std::stringstream adam_stream; eve_stream << eve_view_definition_g; adam_stream << adam_model_definition_g; //std::cerr << "using builtin file set" << std::endl; do_test(eve_stream, adam_stream); } return 0; } catch(const std::exception& doh) { std::cerr << "Exception: " << doh.what() << std::endl; return 1; } catch(...) { std::cerr << "Exception: Unknown"<< std::endl; return 1; } --- NEW FILE: Jamfile.v2 --- import testing ; import os ; SOURCE_DIRECTORY = sources ; HEADER_DIRECTORY = headers ; switch [ os.name ] { case NT : # --- Windows --------------------------------------------------------------------------- { PLATFORM_DIRECTORIES_NAME = win32 ; PLATFORM_SETTINGS = <include>resources <include>. <define>WINVER=0x501 <define>_WIN32_WINNT=0x501 <define>_WIN32_IE=0x501 <toolset>msvc:<linkflags>"gdi32.lib user32.lib comctl32.lib shell32.lib" <toolset>gcc:<cxxflags>"-mno-cygwin" <toolset>gcc:<linkflags>"-lgdi32 -lshell32 -luser32 -lcomctl32 -mno-cygwin" ; } case FREEBSD : { PLATFORM_DIRECTORIES_NAME = fltk ; # # Details of *your* local FLTK2 installation must be added here. # PLATFORM_SETTINGS = <linkflags>"-L/usr/X11R6/lib -lXft -L/usr/local/lib -lfreetype -lz -lfontconfig -lXrender -lXext -lXi -lX11" ; } case MACOSX : # --- Mac OS (assumed) ------------------------------------------------------------------ { PLATFORM_DIRECTORIES_NAME = mac ; PLATFORM_SETTINGS = <toolset>darwin:<linkflags>"-framework Carbon" ; PLATFORM_EXTRAS = ; } } project adobe/modal_dialog_interface : requirements <user-interface>gui ; exe modal_dialog_interface : main.cpp ../../future/source/modal_dialog_interface.cpp /adobe/adobe_widgets//adobe_widgets : $(PLATFORM_SETTINGS) ; OS = [ os.name ] ; DEST_PATH = $(BUILD_DIR)/install/$(OS)/ ; switch [ os.name ] { case MACOSX : { # set up the bundle of the app install "modal_dialog_interface.app/Contents" : resources/Info.plist resources/PkgInfo : <variant>release:<location>$(DEST_PATH)"release/modal_dialog_interface.app/Contents" <variant>debug:<location>$(DEST_PATH)"debug/modal_dialog_interface.app/Contents" ; install "modal_dialog_interface.app/Contents/MacOS" : modal_dialog_interface : <variant>release:<location>$(DEST_PATH)"release/modal_dialog_interface.app/Contents/MacOS" <variant>debug:<location>$(DEST_PATH)"debug/modal_dialog_interface.app/Contents/MacOS" ; install "modal_dialog_interface.app/Contents/Resources/begin.nib" : [ glob resources/modal_dialog_interface.nib/*.* ] : <variant>release:<location>$(DEST_PATH)"release/modal_dialog_interface.app/Contents/Resources/modal_dialog_interface.nib" <variant>debug:<location>$(DEST_PATH)"debug/modal_dialog_interface.app/Contents/Resources/modal_dialog_interface.nib" ; install "modal_dialog_interface.app/Contents/Resources" : resources/app_icon.icns : <variant>release:<location>$(DEST_PATH)"release/modal_dialog_interface.app/Contents/Resources" <variant>debug:<location>$(DEST_PATH)"debug/modal_dialog_interface.app/Contents/Resources" ; } } |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:06
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/sources/mac In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/test/begin/sources/mac Modified Files: main.cpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/begin/sources/mac/main.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** main.cpp 7 Nov 2005 18:08:59 -0000 1.3 --- main.cpp 24 Jan 2006 19:38:50 -0000 1.4 *************** *** 27,30 **** --- 27,31 ---- #define kHICommandClearWidgetFrames 'ClFr' #define kHICommandSerializeWidgets 'SzWg' + #define kHICommandRunModal 'dlog' #define kHICommandLocalizationENUS 'enus' *************** *** 243,246 **** --- 244,251 ---- break; + case kHICommandRunModal: + theApp->run_current_as_modal(); + break; + case kHICommandLocalizationENUS: adobe::implementation::top_frame().attribute_set_m.insert( |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:05
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/eve_smoke In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/adobe/test/eve_smoke Modified Files: main.cpp Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: main.cpp =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/adobe/test/eve_smoke/main.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** main.cpp 25 May 2005 21:33:15 -0000 1.3 --- main.cpp 24 Jan 2006 19:38:51 -0000 1.4 *************** *** 23,26 **** --- 23,30 ---- /*************************************************************************************************/ + + namespace { + + /*************************************************************************************************/ // // position_t assemble( ... ) *************** *** 30,59 **** /// doing that for now. /// - /// \param parent the parent node. A position_t is an any. - /// \param parse_location the file name and line number for this data. /// \param name the name of the thing to make. /// \param parameters the parameters for the thing to make. - /// \param brief Nearby comments? - /// \param detailed Nearby comments /// /// \return an any containing the created widget. // ! adobe::eve::position_t assemble( const adobe::eve::position_t& /*parent*/, ! const adobe::line_position_t& /*parse_location*/, ! adobe::name_t name, ! const adobe::array_t& parameters, ! const std::string& /*brief*/, ! const std::string& /*detailed*/ ) { std::cout << "Create: " << name.get() << std::endl; ! adobe::dictionary_t dict(adobe::eve::evaluate_arguments()( parameters )); ! adobe::dictionary_t::const_iterator first(dict.begin()); ! adobe::dictionary_t::const_iterator last(dict.end()); ! ! for (; first != last; ++first) ! std::cout << "\t" << first->first << " = \"" << first->second << "\"" << std::endl; ! ! return adobe::eve::position_t(); } --- 34,49 ---- /// doing that for now. /// /// \param name the name of the thing to make. /// \param parameters the parameters for the thing to make. /// /// \return an any containing the created widget. // ! adobe::eve_callback_suite_t::position_t assemble( adobe::name_t name, ! const adobe::dictionary_t& parameters) { std::cout << "Create: " << name.get() << std::endl; + std::cout << parameters << std::endl; ! return adobe::eve_callback_suite_t::position_t(); } *************** *** 86,95 **** // Call the Eve parser. // ! adobe::eve::parse( stream, adobe::line_position_t( fileName.native_file_string().c_str() ), ! adobe::eve::position_t(), &assemble ); } /*************************************************************************************************/ // // int main() --- 76,94 ---- // Call the Eve parser. // ! ! adobe::basic_sheet_t layout_sheet; ! adobe::virtual_machine_t evaluator; ! ! adobe::parse(stream, adobe::line_position_t(fileName.native_file_string().c_str()), ! adobe::eve_callback_suite_t::position_t(), adobe::bind_layout(boost::bind(&assemble, _2, _3), ! layout_sheet, evaluator)); } /*************************************************************************************************/ + } // namespace + + /*************************************************************************************************/ + // // int main() |
From: Foster B. <fos...@us...> - 2006-01-24 19:39:05
|
Update of /cvsroot/adobe-source/sandbox/adobe-source/third_party/boost_tp/adobe In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12473/adobe-source/third_party/boost_tp/adobe Modified Files: boost_1_33_1_patch_01.txt Log Message: moved win/ directories to win32/ to anticipate a possible widgets port for WPF; added a 'mini-sheet' to Eve so you can save UI state information (what tab is currently selected) without mucking up your Adam model; started the modal_dialog_interface, an API that'll be used to direct a modal dialog interaction between the user and the application (it's still in its infancy); other misc bug fixes Index: boost_1_33_1_patch_01.txt =================================================================== RCS file: /cvsroot/adobe-source/sandbox/adobe-source/third_party/boost_tp/adobe/boost_1_33_1_patch_01.txt,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** boost_1_33_1_patch_01.txt 6 Jan 2006 18:03:07 -0000 1.2 --- boost_1_33_1_patch_01.txt 24 Jan 2006 19:38:52 -0000 1.3 *************** *** 1,2 **** --- 1,25 ---- + diff -ruN boost_1_33_1/boost/cast.hpp boost/boost/cast.hpp + --- boost_1_33_1/boost/cast.hpp 2005-06-27 08:05:11.000000000 -0700 + +++ boost/boost/cast.hpp 2006-01-03 09:28:24.000000000 -0800 + @@ -49,6 +49,7 @@ + # include <boost/type.hpp> + # include <boost/limits.hpp> + # include <boost/detail/select_type.hpp> + +# include <boost/detail/workaround.hpp> + + // It has been demonstrated numerous times that MSVC 6.0 fails silently at link + // time if you use a template function which has template parameters that don't + @@ -92,7 +93,11 @@ + template <class Target, class Source> + inline Target polymorphic_downcast(Source* x BOOST_EXPLICIT_DEFAULT_TARGET) + { + +#if BOOST_WORKAROUND(BOOST_MSVC, <= 1310) + + assert( static_cast<const Source*>(dynamic_cast<Target>(x)) == x ); // detect logic error + +#else + assert( dynamic_cast<Target>(x) == x ); // detect logic error + +#endif + return static_cast<Target>(x); + } + diff -ruN boost_1_33_1/boost/date_time/time_resolution_traits.hpp boost/boost/date_time/time_resolution_traits.hpp --- boost_1_33_1/boost/date_time/time_resolution_traits.hpp 2003-12-02 19:01:05.000000000 -0800 *************** *** 131,161 **** diff -ruN boost_1_33_1/tools/build/v2/tools/msvc.jam boost/tools/build/v2/tools/msvc.jam --- boost_1_33_1/tools/build/v2/tools/msvc.jam 2005-07-15 06:35:58.000000000 -0700 ! +++ boost/tools/build/v2/tools/msvc.jam 2005-12-06 14:58:39.000000000 -0800 ! @@ -278,10 +278,25 @@ ! $(.CC) /Zm800 -nologo -TP -U$(UNDEFS) $(CFLAGS) $(C++FLAGS) $(USER_CFLAGS) @"$(RSP:W)" -c -Fo"$(<[1]:W)" && $(RM) "$(RSP)" ! } ! ! -actions compile.rc ! +# ADOBE : This change allows for a version to be set inside the RC compiler ! +# so we can include version-dependent manifest files + ! +if ! [ MATCH ^([67].*) : $(version) ] ! { ! - $(.RC) -l 0x409 -U$(UNDEFS) -D$(DEFINES) -I"$(INCLUDES)" -fo "$(<:W)" "$(>:W)" ! + actions compile.rc + { ! + $(.RC) -l 0x409 -U$(UNDEFS) -D$(DEFINES) -DADOBE_VER=8 -I"$(INCLUDES)" -fo "$(<:W)" "$(>:W)" + } ! } ! +else ! +{ ! + actions compile.rc + { ! + $(.RC) -l 0x409 -U$(UNDEFS) -D$(DEFINES) -DADOBE_VER=7 -I"$(INCLUDES)" -fo "$(<:W)" "$(>:W)" + } - +} + ! +# ADOBE end changes ! # Declare flags and action for linking ! flags msvc.link PDB_LINKFLAG <debug-symbols>on/<debug-store>database : /PDB: ; # not used yet --- 154,183 ---- diff -ruN boost_1_33_1/tools/build/v2/tools/msvc.jam boost/tools/build/v2/tools/msvc.jam --- boost_1_33_1/tools/build/v2/tools/msvc.jam 2005-07-15 06:35:58.000000000 -0700 ! +++ boost/tools/build/v2/tools/msvc.jam 2006-01-05 16:10:50.000000000 -0800 ! @@ -164,7 +164,25 @@ ! { ! flags msvc.compile CFLAGS $(condition)/<optimization>speed : /Ogity /O2 /Gs ; ! flags msvc.compile CFLAGS $(condition)/<optimization>space : /Ogisy /O1 /Gs ; ! - } ! + } + ! + # ! + # ADOBE : This change allows for a version to be set inside the RC ! + # compiler so we can include version-dependent manifest files ! + # ! + ! + if ! [ MATCH ^([67].*) : $(version) ] + { ! + flags msvc.compile.rc DEFINES : "ADOBE_VER=8 " ; + } ! + else + { ! + flags msvc.compile.rc DEFINES : "ADOBE_VER=7 " ; + } + ! + # ! + # ADOBE : End changes ! + # ! } ! rule default-paths ( version ? ) |